| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | import {	defineStore} from 'pinia';import cartApi from '@/sheep/api/cart';const cart = defineStore({	id: 'cart',	state: () => ({		list: [], // 购物车列表		selectedIds: [], // 已选列表		isAllSelected: false, //是否全选		cartSelectedTotalPrice: '0.00', // 选中项总金额	}),	getters: {		totalPriceSelected: (state) => {			let price = 0;			if (!state.selectedIds.length) return price.toFixed(2);			state.list.forEach((item) => {				price += state.selectedIds.includes(item.id) ?					Number(item.sku.price / 100) * item.count :					0;			});			return price.toFixed(2);		},	},	actions: {		// 获取购物车列表		async getList() {			const {				data,				code			} = await cartApi.list();			if (code === 0) {				this.list = data.validList;			}		},		// 添加购物车		async add(goodsInfo) {			console.log()			const {				code			} = await cartApi.append({				// goods_id: goodsInfo.goods_id,				// goods_num: goodsInfo.goods_num,				// goods_sku_price_id: goodsInfo.id,				count: goodsInfo.goods_num,				skuId: goodsInfo.id,			});			if (code === 0) {				this.getList();			}		},		// 更新购物车		async update(goodsInfo) {			const {				error			} = await cartApi.update({				id: goodsInfo.goods_id,				count: goodsInfo.goods_num,				goods_sku_price_id: goodsInfo.goods_sku_price_id,			});			if (error === 0) {				// this.getList();			}		},		// 移除购物车		async delete(ids) {			if (typeof ids === 'array') {				ids = ids.join(',');			}			const {				code			} = await cartApi.delete(ids);			if (code === 0) {				this.selectAll(false);				this.getList();			}		},		// 选择购物车商品		selectSingle(goodsId) {			if (!this.selectedIds.includes(goodsId)) {				this.selectedIds.push(goodsId);			} else {				this.selectedIds.splice(this.selectedIds.indexOf(goodsId), 1);			}			this.isAllSelected = this.selectedIds.length === this.list.length;		},		// 全选		selectAll(flag) {			this.isAllSelected = flag;			if (!flag) {				this.selectedIds = [];			} else {				this.list.forEach((item) => {					this.selectedIds.push(item.id);				});			}		},		// 清空购物车		emptyList() {			this.list = [];			this.selectedIds = [];			this.isAllSelected = false;			this.cartSelectedTotalPrice = '0.00';		},	},	persist: {		enabled: true,		strategies: [{			key: 'cart-store',		}, ],	},});export default cart;
 |