From 04c7b0163caeae4ab1c5da62e301fa993101cfad Mon Sep 17 00:00:00 2001
From: 闫增涛 <1829501689@qq.com>
Date: 星期一, 31 三月 2025 10:40:45 +0800
Subject: [PATCH] bug修改

---
 pages/cart/index.js |  580 ++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 322 insertions(+), 258 deletions(-)

diff --git a/pages/cart/index.js b/pages/cart/index.js
index e710106..4a4ceb1 100644
--- a/pages/cart/index.js
+++ b/pages/cart/index.js
@@ -1,294 +1,358 @@
-import Dialog from 'tdesign-miniprogram/dialog/index';
+const app = getApp();
+import {
+  loginInfo
+} from '../../assets/js/login';
+import {
+  getPublicImage
+} from '../../assets/js/middleGround/tool';
 import Toast from 'tdesign-miniprogram/toast/index';
-import { fetchCartGroupData } from '../../services/cart/cart';
+
 
 Page({
   data: {
-    cartGroupData: null,
+    price: '',
+    loading: true,
+    hidden: true,
+    swipeOpened: false,
+    onDisabled: false,
+    imgUrl: [],
+    shoppingCartData: [],
+    checkAll: false,
+    checkedList: [],
+    selectedCount: 0,
+    totalPrice: 0.00,
+    type: '',
+    start: 1,
+    totalSize: '',
+    isMore: null,
+    bookId: '',
+    bookName: ''
   },
 
-  // 璋冪敤鑷畾涔塼abbar鐨刬nit鍑芥暟锛屼娇椤甸潰涓巘abbar婵�娲荤姸鎬佷繚鎸佷竴鑷�
+  onLoad(options) {
+    wx.setNavigationBarTitle({
+      title: '璐墿杞�'
+    });
+    // this.shoppingCartGet();
+    this.setData({
+      swipeOpened: true
+    })
+  },
   onShow() {
-    this.getTabBar().init();
-  },
-
-  onLoad() {
-    this.refreshData();
-  },
-
-  refreshData() {
-    this.getCartGroupData().then((res) => {
-      let isEmpty = true;
-      const cartGroupData = res.data;
-      // 涓�浜涚粍浠朵腑闇�瑕佺殑瀛楁鍙兘鎺ュ彛骞舵病鏈夎繑鍥烇紝鎴栬�呰繑鍥炵殑鏁版嵁缁撴瀯涓庨鏈熶笉涓�鑷达紝闇�瑕佸湪姝ゅ厛瀵规暟鎹仛涓�浜涘鐞�
-      // 缁熻闂ㄥ簵涓嬪姞璐殑鍟嗗搧鏄惁鍏ㄩ�夈�佹槸鍚﹀瓨鍦ㄧ己璐�/鏃犺揣
-      for (const store of cartGroupData.storeGoods) {
-        store.isSelected = true; // 璇ラ棬搴楀凡鍔犺喘鍟嗗搧鏄惁鍏ㄩ��
-        store.storeStockShortage = false; // 璇ラ棬搴楀凡鍔犺喘鍟嗗搧鏄惁瀛樺湪搴撳瓨涓嶈冻
-        if (!store.shortageGoodsList) {
-          store.shortageGoodsList = []; // 璇ラ棬搴楀凡鍔犺喘鍟嗗搧濡傛灉搴撳瓨涓�0闇�鍗曠嫭鍒嗙粍
-        }
-        for (const activity of store.promotionGoodsList) {
-          activity.goodsPromotionList = activity.goodsPromotionList.filter((goods) => {
-            goods.originPrice = undefined;
-
-            // 缁熻鏄惁鏈夊姞璐暟澶т簬搴撳瓨鏁扮殑鍟嗗搧
-            if (goods.quantity > goods.stockQuantity) {
-              store.storeStockShortage = true;
-            }
-            // 缁熻鏄惁鍏ㄩ��
-            if (!goods.isSelected) {
-              store.isSelected = false;
-            }
-            // 搴撳瓨涓�0锛堟棤璐э級鐨勫晢鍝佸崟鐙垎缁�
-            if (goods.stockQuantity > 0) {
-              return true;
-            }
-            store.shortageGoodsList.push(goods);
-            return false;
-          });
-
-          if (activity.goodsPromotionList.length > 0) {
-            isEmpty = false;
-          }
-        }
-        if (store.shortageGoodsList.length > 0) {
-          isEmpty = false;
-        }
+    loginInfo(app, (data) => {
+      if (data) {
+        this.shoppingCartGet();
+      } else {
+        wx.switchTab({
+          url: '/pages/home/home',
+        })
       }
-      cartGroupData.invalidGoodItems = cartGroupData.invalidGoodItems.map((goods) => {
-        goods.originPrice = undefined;
-        return goods;
+    })
+    this.setData({
+      swipeOpened: false
+    })
+    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
+      this.getTabBar().setData({
+        active: 3
+      })
+    }
+    this.setData({
+      totalPrice: 0.00,
+      selectedCount: 0,
+      checkAll: false,
+    })
+  },
+
+  // 閲戦鏄剧ず.00鏍煎紡
+  numFormat(value) {
+    if (!value) return "0.00";
+    value = Number(value).toFixed(2);
+    var intPart = Math.trunc(value); // 鑾峰彇鏁存暟閮ㄥ垎
+    var intPartFormat = intPart
+      .toString()
+      .replace(/(\d)(?=(?:\d{3})+$)/g, "$1,"); // 灏嗘暣鏁伴儴鍒嗛�笁涓�鏂�
+    var floatPart = ".00"; // 棰勫畾涔夊皬鏁伴儴鍒�
+    var value2Array = value.split(".");
+    // =2琛ㄧず鏁版嵁鏈夊皬鏁颁綅
+    if (value2Array.length === 2) {
+      floatPart = value2Array[1].toString(); // 鎷垮埌灏忔暟閮ㄥ垎
+      if (floatPart.length === 1) {
+        return `${intPartFormat}.${floatPart}0`;
+      }
+      return `${intPartFormat}.${floatPart}`;
+    }
+    return intPartFormat + floatPart;
+  },
+  onDelete(e) {
+    const item = e.currentTarget.dataset.item;
+    app.MG.store.delShoppingCart({
+      ids: [item.id]
+    }).then(res => {
+      this.shoppingCartGet();
+      wx.showToast({
+        title: '鍒犻櫎鍥句功鎴愬姛',
+        icon: 'none'
       });
-      cartGroupData.isNotEmpty = !isEmpty;
-      this.setData({ cartGroupData });
+      this.setData({
+        totalPrice: 0.00,
+        selectedCount: 0,
+        checkAll: false,
+      })
     });
   },
 
-  findGoods(spuId, skuId) {
-    let currentStore;
-    let currentActivity;
-    let currentGoods;
-    const { storeGoods } = this.data.cartGroupData;
-    for (const store of storeGoods) {
-      for (const activity of store.promotionGoodsList) {
-        for (const goods of activity.goodsPromotionList) {
-          if (goods.spuId === spuId && goods.skuId === skuId) {
-            currentStore = store;
-            currentActivity = currentActivity;
-            currentGoods = goods;
-            return {
-              currentStore,
-              currentActivity,
-              currentGoods,
-            };
-          }
-        }
-      }
-    }
-    return {
-      currentStore,
-      currentActivity,
-      currentGoods,
+  shoppingCartGet() {
+    let query = {
+      start: 0,
+      size: this.data.start * 4,
+      filterList: [],
+      searchList: []
     };
-  },
+    app.MG.store.getShoppingCartProductList(query).then(res => {
+      console.log(res.datas);
+      this.setData({
+        totalSize: res.totalSize
+      })
+      res.datas.forEach(item => {
+        this.setData({
+          bookId: res.id,
+          bookName: res.name,
+          price: item.saleMethod.price.toFixed(2),
+        })
+        item.imgUrl = getPublicImage(item.productMonWithLinkDto.product.icon, '', '160');
+        // this.setData({
+        //   type: item.saleMethod.type == 'createProductItemSaleMethod' ? 'item' : 'product'
+        // })
+        const type = item.saleMethod.type == 'createProductItemSaleMethod' ? 'item' : 'product';
+        item.type = type; // 灏唗ype璁剧疆涓篿tem瀵硅薄鐨勫睘鎬э紝鑰屼笉鏄娇鐢╯etData
+        item.name = item.linkCmsItems[0].name ? item.productMonWithLinkDto.product.name + ':' + item.linkCmsItems[0].name : item.productMonWithLinkDto.product.name
+        item.saleMethod.price = this.numFormat(item.saleMethod.price)
+        if (item.productMonWithLinkDto.links[0].storeRefCode == 'jsek_digitalTextbooks') {
+          item.typeTxt = '鏁板瓧鏁欐潗'
+          item.productType = "鏁板瓧鏁欐潗"
+        } else if (item.productMonWithLinkDto.links[0].storeRefCode == 'jsek_digitalCourses') {
+          item.typeTxt = '鏁板瓧璇剧▼'
+          item.productType = "鏁板瓧璇剧▼"
+        } else {
+          item.typeTxt = '鐢靛瓙涔�'
+          item.productType = "鍥句功鏈嶅姟-鐢靛瓙涔�"
 
-  // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙h幏鍙栬喘鐗╄溅鏁版嵁
-  getCartGroupData() {
-    const { cartGroupData } = this.data;
-    if (!cartGroupData) {
-      return fetchCartGroupData();
-    }
-    return Promise.resolve({ data: cartGroupData });
-  },
-
-  // 閫夋嫨鍗曚釜鍟嗗搧
-  // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙f洿鏀归�変腑鐘舵��
-  selectGoodsService({ spuId, skuId, isSelected }) {
-    this.findGoods(spuId, skuId).currentGoods.isSelected = isSelected;
-    return Promise.resolve();
-  },
-
-  // 鍏ㄩ�夐棬搴�
-  // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙f洿鏀归�変腑鐘舵��
-  selectStoreService({ storeId, isSelected }) {
-    const currentStore = this.data.cartGroupData.storeGoods.find((s) => s.storeId === storeId);
-    currentStore.isSelected = isSelected;
-    currentStore.promotionGoodsList.forEach((activity) => {
-      activity.goodsPromotionList.forEach((goods) => {
-        goods.isSelected = isSelected;
+          if (item.saleMethod.type == 'createProductItemSaleMethod' || item.saleMethod.type == 'createProductFolderSaleMethod') {
+            if (item.linkCmsItems[0].refCode == 'questionBank') {
+              item.typeTxt = '浜戞祴璇�'
+              item.productType = '鍥句功鏈嶅姟-浜戞祴璇�'
+            } else {
+              item.typeTxt = '浜戝涔�'
+              item.productType = "鍥句功鏈嶅姟-浜戝涔�"
+            }
+          }
+        }
+        // 
       });
+
+      this.setData({
+        shoppingCartData: res.datas
+      });
+      if (this.data.shoppingCartData.length === 0) {
+        this.setData({
+          onDisabled: true
+        })
+      } else {
+        this.setData({
+          onDisabled: false
+        })
+      }
+      setTimeout(() => {
+        this.setData({
+          loading: false,
+          hidden: false,
+        })
+      }, 600)
+
     });
-    return Promise.resolve();
+    wx.stopPullDownRefresh()
+
   },
 
-  // 鍔犺喘鏁伴噺鍙樻洿
-  // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙�
-  changeQuantityService({ spuId, skuId, quantity }) {
-    this.findGoods(spuId, skuId).currentGoods.quantity = quantity;
-    return Promise.resolve();
-  },
-
-  // 鍒犻櫎鍔犺喘鍟嗗搧
-  // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙�
-  deleteGoodsService({ spuId, skuId }) {
-    function deleteGoods(group) {
-      for (const gindex in group) {
-        const goods = group[gindex];
-        if (goods.spuId === spuId && goods.skuId === skuId) {
-          group.splice(gindex, 1);
-          return gindex;
-        }
-      }
-      return -1;
-    }
-    const { storeGoods, invalidGoodItems } = this.data.cartGroupData;
-    for (const store of storeGoods) {
-      for (const activity of store.promotionGoodsList) {
-        if (deleteGoods(activity.goodsPromotionList) > -1) {
-          return Promise.resolve();
-        }
-      }
-      if (deleteGoods(store.shortageGoodsList) > -1) {
-        return Promise.resolve();
-      }
-    }
-    if (deleteGoods(invalidGoodItems) > -1) {
-      return Promise.resolve();
-    }
-    return Promise.reject();
-  },
-
-  // 娓呯┖澶辨晥鍟嗗搧
-  // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙�
-  clearInvalidGoodsService() {
-    this.data.cartGroupData.invalidGoodItems = [];
-    return Promise.resolve();
-  },
-
-  onGoodsSelect(e) {
-    const {
-      goods: { spuId, skuId },
-      isSelected,
-    } = e.detail;
-    const { currentGoods } = this.findGoods(spuId, skuId);
-    Toast({
-      context: this,
-      selector: '#t-toast',
-      message: `${isSelected ? '閫夋嫨' : '鍙栨秷'}"${
-        currentGoods.title.length > 5 ? `${currentGoods.title.slice(0, 5)}...` : currentGoods.title
-      }"`,
-      icon: '',
+  bottomChange(e) {
+    const checked = e.detail.value.length > 0;
+    const items = this.data.shoppingCartData.map(item => {
+      item.checked = checked;
+      return item;
     });
-    this.selectGoodsService({ spuId, skuId, isSelected }).then(() => this.refreshData());
+    this.setData({
+      shoppingCartData: items,
+      checkAll: checked
+    });
+    this.calculateSelectedCount();
+    this.calculateTotalPrice();
   },
 
-  onStoreSelect(e) {
+  HandelItemChange(e) {
     const {
-      store: { storeId },
-      isSelected,
-    } = e.detail;
-    this.selectStoreService({ storeId, isSelected }).then(() => this.refreshData());
+      item
+    } = e.target.dataset;
+    const items = this.data.shoppingCartData
+    items.map(eitem => {
+      if (eitem.id == item.id) {
+        eitem.checked = e.detail.checked
+      }
+    })
+    const data = items.filter(item => item.checked)
+    const checkAll = data.length == this.data.shoppingCartData.length
+    this.setData({
+      shoppingCartData: items,
+      checkAll
+    });
+    this.calculateSelectedCount();
+    this.calculateTotalPrice();
   },
 
-  onQuantityChange(e) {
-    const {
-      goods: { spuId, skuId },
-      quantity,
-    } = e.detail;
-    const { currentGoods } = this.findGoods(spuId, skuId);
-    const stockQuantity = currentGoods.stockQuantity > 0 ? currentGoods.stockQuantity : 0; // 閬垮厤鍚庣杩斿洖鐨勬槸-1
-    // 鍔犺喘鏁伴噺瓒呰繃搴撳瓨鏁伴噺
-    if (quantity > stockQuantity) {
-      // 鍔犺喘鏁伴噺绛変簬搴撳瓨鏁伴噺鐨勬儏鍐典笅缁х画鍔犺喘
-      if (currentGoods.quantity === stockQuantity && quantity - stockQuantity === 1) {
+  calculateSelectedCount() {
+    const selectedItems = this.data.shoppingCartData.filter(item => item.checked);
+    const selectedCount = selectedItems.length;
+    this.setData({
+      selectedCount
+    });
+  },
+
+  calculateTotalPrice() {
+    const selectedItems = this.data.shoppingCartData.filter(item => item.checked);
+    const totalPrice = selectedItems.reduce((total, item) => total + parseFloat(item.saleMethod.price), 0);
+    this.setData({
+      totalPrice: totalPrice.toFixed(2)
+    });
+  },
+
+  goPaymentPage() {
+    // 棣栭〉娴嬭瘯鐧诲綍鍔熻兘锛屽悗缁敞閲�
+    // 妫�鏌ョ櫥褰曠姸鎬�
+    const token = wx.getStorageSync(app.config.tokenKey)
+    if (!token) {
+      loginInfo(app, (data) => {
+        // 濡傛灉涓嶆槸绗竴娆$櫥褰曪紝浼氭墽琛屽洖璋�
+        if (data) {
+          const selectedItems = this.data.shoppingCartData.filter(item => item.checked);
+          // console.log(selectedItems, 789);
+          const selectedIds = selectedItems.map(item => item.id);
+          console.log('閫変腑鐨勫晢鍝� id:', selectedIds);
+          if (selectedIds.length) {
+            let data = {
+              linkIds: selectedIds
+            }
+            // '&onNorderSaleMethod=' + 
+            app.MG.store.shoppingCartCreateOrder(data).then(res => {
+
+              const url = '/pages/cart/paymentPage/index?orderNumber=' + res.orderNumber
+              wx.navigateTo({
+                url
+              });
+            })
+          } else {
+            Toast({
+              context: this,
+              selector: '#t-toast',
+              message: '璇烽�夋嫨鍟嗗搧',
+              theme: 'warning',
+              direction: 'column',
+            });
+          }
+        } else {
+          // 鍑虹幇閿欒锛岃繑鍥瀎alse
+        }
+      })
+    } else {
+      const selectedItems = this.data.shoppingCartData.filter(item => item.checked);
+      // console.log(selectedItems, 789);
+      const selectedIds = selectedItems.map(item => item.id);
+      console.log('閫変腑鐨勫晢鍝� id:', selectedIds);
+      if (selectedIds.length) {
+        let data = {
+          linkIds: selectedIds
+        }
+        app.MG.store.shoppingCartCreateOrder(data).then(res => {
+          console.log(res.saleMethodLinks[0].orderSaleMethod.id, 'ressss798');
+          const url = '/pages/cart/paymentPage/index?orderNumber=' + res.orderNumber + '&onNorderSaleMethod=' + res.saleMethodLinks[0].orderSaleMethod.id
+          wx.navigateTo({
+            url
+          });
+        })
+      } else {
         Toast({
           context: this,
           selector: '#t-toast',
-          message: '褰撳墠鍟嗗搧搴撳瓨涓嶈冻',
+          message: '璇烽�夋嫨鍟嗗搧',
+          theme: 'warning',
+          direction: 'column',
         });
-        return;
       }
-      Dialog.confirm({
-        title: '鍟嗗搧搴撳瓨涓嶈冻',
-        content: `褰撳墠鍟嗗搧搴撳瓨涓嶈冻锛屾渶澶у彲璐拱鏁伴噺涓�${stockQuantity}浠禶,
-        confirmBtn: '淇敼涓烘渶澶у彲璐拱鏁伴噺',
-        cancelBtn: '鍙栨秷',
-      })
-        .then(() => {
-          this.changeQuantityService({
-            spuId,
-            skuId,
-            quantity: stockQuantity,
-          }).then(() => this.refreshData());
-        })
-        .catch(() => {});
-      return;
     }
-    this.changeQuantityService({ spuId, skuId, quantity }).then(() => this.refreshData());
-  },
 
-  goCollect() {
-    /** 娲诲姩鑲畾鏈変竴涓椿鍔↖D锛岀敤鏉ヨ幏鍙栨椿鍔╞anner锛屾椿鍔ㄥ晢鍝佸垪琛ㄧ瓑 */
-    const promotionID = '123';
+
+
+  },
+  onLogin() {
     wx.navigateTo({
-      url: `/pages/promotion-detail/index?promotion_id=${promotionID}`,
+      url: '/pages/testLogin/index'
     });
   },
 
-  goGoodsDetail(e) {
-    const { spuId, storeId } = e.detail.goods;
+
+  onScrollToLower() {
+    if (this.data.shoppingCartData.length < this.data.totalSize) {
+      this.setData({
+        isMore: true,
+        start: this.data.start + 1
+      })
+      this.shoppingCartGet()
+    } else {
+      this.setData({
+        isMore: true,
+      })
+      setTimeout(() => {
+        this.setData({
+          isMore: false
+        })
+        console.log('300');
+      }, 300)
+    }
+  },
+  // 涓嬫媺鍑芥暟
+  onPullDownRefresh() {
+    this.setData({
+      start: 1,
+      checkAll: false,
+      selectedCount: 0,
+      totalPrice: 0.00,
+    })
+    console.log(978);
+    this.shoppingCartGet()
+  },
+  async onBook(e) {
+    const item = e.currentTarget.dataset.item
+    console.log(item);
+    const type = item.productMonWithLinkDto.links[0].storeRefCode
+    let url = ''
+    if (type == 'jsek_digitalCourses') {
+      // 璇剧▼
+      url = '/pages/digitalCourses/digitalCoursesDetails/index?id=' + item.productMonWithLinkDto.product.id + '&path=' + ''
+    } else if (type == 'jsek_digitalTextbooks') {
+      // 鏁板瓧鏁欐潗
+      url = '/pages/digitalTextbooks/digitalTextbooksDetails/index?id=' + item.productMonWithLinkDto.product.id
+    } else {
+      let parentData = null;
+      parentData = await app.MG.store.getProductBySaleMethod({
+        'saleMethodId': item.saleMethod.id
+      })
+      console.log(parentData)
+      let bookId = item.productMonWithLinkDto.product.id;
+      if (parentData.parentProduct.length > 0) {
+        bookId = parentData.parentProduct[parentData.parentProduct.length - 1].id;
+      }
+      url = '/packageBookService/pages/bookServices/detail/index?id=' + bookId + '&name=' + item.productMonWithLinkDto.product.name
+    }
     wx.navigateTo({
-      url: `/pages/goods/details/index?spuId=${spuId}&storeId=${storeId}`,
-    });
-  },
-
-  clearInvalidGoods() {
-    // 瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙f竻绌哄け鏁堝晢鍝�
-    this.clearInvalidGoodsService().then(() => this.refreshData());
-  },
-
-  onGoodsDelete(e) {
-    const {
-      goods: { spuId, skuId },
-    } = e.detail;
-    Dialog.confirm({
-      content: '纭鍒犻櫎璇ュ晢鍝佸悧?',
-      confirmBtn: '纭畾',
-      cancelBtn: '鍙栨秷',
-    }).then(() => {
-      this.deleteGoodsService({ spuId, skuId }).then(() => {
-        Toast({ context: this, selector: '#t-toast', message: '鍟嗗搧鍒犻櫎鎴愬姛' });
-        this.refreshData();
-      });
-    });
-  },
-
-  onSelectAll(event) {
-    const { isAllSelected } = event?.detail ?? {};
-    Toast({
-      context: this,
-      selector: '#t-toast',
-      message: `${isAllSelected ? '鍙栨秷' : '鐐瑰嚮'}浜嗗叏閫夋寜閽甡,
-    });
-    // 璋冪敤鎺ュ彛鏀瑰彉鍏ㄩ��
-  },
-
-  onToSettle() {
-    const goodsRequestList = [];
-    this.data.cartGroupData.storeGoods.forEach((store) => {
-      store.promotionGoodsList.forEach((promotion) => {
-        promotion.goodsPromotionList.forEach((m) => {
-          if (m.isSelected == 1) {
-            goodsRequestList.push(m);
-          }
-        });
-      });
-    });
-    wx.setStorageSync('order.goodsRequestList', JSON.stringify(goodsRequestList));
-    wx.navigateTo({ url: '/pages/order/order-confirm/index?type=cart' });
-  },
-  onGotoHome() {
-    wx.switchTab({ url: '/pages/home/home' });
-  },
-});
+      url
+    })
+  }
+});
\ No newline at end of file

--
Gitblit v1.9.1