tanghaolin
2025-03-07 d9e68c8234a79ecaa9fb3304caadbc99607715c9
src/stores/useCartStore.ts
@@ -7,22 +7,22 @@
  price: number;
  quantity: number;
  image: string;
  selected?: boolean;
  selected: boolean;
}
export const useCartStore = defineStore({
  id: 'cart',
  state: () => ({
    cartItems: [] as CartItem[]
    items: [] as CartItem[]
  }),
  getters: {
    // 获取购物车商品总数
    cartItemCount: (state) => state.cartItems.length,
    cartItemCount: (state) => state.items.length,
    
    // 获取购物车商品总价
    cartTotalPrice: (state) => {
      return state.cartItems.reduce((total, item) => {
      return state.items.reduce((total, item) => {
        return total + (item.price * item.quantity);
      }, 0);
    }
@@ -31,35 +31,35 @@
  actions: {
    // 设置购物车商品
    setCartItems(items: CartItem[]) {
      this.cartItems = items;
      this.items = items;
    },
    // 添加商品到购物车
    addToCart(item: CartItem) {
      // 检查是否已存在相同商品
      const existingItem = this.cartItems.find(cartItem => cartItem.addID === item.addID);
    addToCart(item: Omit<CartItem, 'selected'>) {
      const existingItem = this.items.find(i => i.addID === item.addID);
      if (existingItem) {
        // 如果存在,增加数量
        existingItem.quantity += item.quantity;
      } else {
        // 如果不存在,添加新商品
        this.cartItems.push(item);
        this.items.push({ ...item, selected: false });
      }
    },
    // 从购物车移除商品
    removeFromCart(addID: string) {
      this.cartItems = this.cartItems.filter(item => item.addID !== addID);
      const index = this.items.findIndex(item => item.addID === addID);
      if (index > -1) {
        this.items.splice(index, 1);
      }
    },
    // 清空购物车
    clearCart() {
      this.cartItems = [];
      this.items = [];
    },
    // 更新商品数量
    updateItemQuantity(addID: string, quantity: number) {
      const item = this.cartItems.find(item => item.addID === addID);
      const item = this.items.find(item => item.addID === addID);
      if (item) {
        item.quantity = quantity;
      }
@@ -67,7 +67,7 @@
    // 更新商品选中状态
    updateItemSelected(addID: string, selected: boolean) {
      const item = this.cartItems.find(item => item.addID === addID);
      const item = this.items.find(item => item.addID === addID);
      if (item) {
        item.selected = selected;
      }
@@ -75,7 +75,7 @@
    // 全选/取消全选
    updateAllSelected(selected: boolean) {
      this.cartItems.forEach(item => {
      this.items.forEach(item => {
        item.selected = selected;
      });
    }