| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | import { defineStore } from 'pinia';import CartApi from '@/sheep/api/trade/cart';const cart = defineStore({  id: 'cart',  state: () => ({    list: [], // 购物车列表    selectedIds: [], // 已选列表    isAllSelected: false, // 是否全选    totalPriceSelected: 0, // 选中项总金额  }),  actions: {    // 获取购物车列表    async getList() {      const { data, code } = await CartApi.getCartList();      if (code === 0) {        this.list = data.validList;        // 计算各种关联属性        this.selectedIds = [];        this.isAllSelected = true;        this.totalPriceSelected = 0;        this.list.forEach((item) => {          if (item.selected) {            this.selectedIds.push(item.id);            this.totalPriceSelected += item.count * item.sku.price;          } else {            this.isAllSelected = false;          }        });      }    },    // 添加购物车    async add(goodsInfo) {      // 添加购物项      const { code } = await CartApi.addCart({        skuId: goodsInfo.id,        count: goodsInfo.goods_num,      });      // 刷新购物车列表      if (code === 0) {        await this.getList();      }    },    // 更新购物车    async update(goodsInfo) {      const { code } = await CartApi.updateCartCount({        id: goodsInfo.goods_id,        count: goodsInfo.goods_num,      });      if (code === 0) {        await this.getList();      }    },    // 移除购物车    async delete(ids) {      let idsTemp = '';      if (Array.isArray(ids)) {        idsTemp = ids.join(',');      } else {        idsTemp = ids;      }      const { code } = await CartApi.deleteCart(idsTemp);      if (code === 0) {        await this.getList();      }    },    // 单选购物车商品    async selectSingle(goodsId) {      const { code } = await CartApi.updateCartSelected({        ids: [goodsId],        selected: !this.selectedIds.includes(goodsId), // 取反      });      if (code === 0) {        await this.getList();      }    },    // 全选购物车商品    async selectAll(flag) {      const { code } = await CartApi.updateCartSelected({        ids: this.list.map((item) => item.id),        selected: flag      });      if (code === 0) {        await this.getList();      }    },    // 清空购物车。注意,仅用于用户退出时,重置数据    emptyList() {      this.list = [];      this.selectedIds = [];      this.isAllSelected = true;      this.totalPriceSelected = 0;    },  },  persist: {    enabled: true,    strategies: [      {        key: 'cart-store',      },    ],  },});export default cart;
 |