Browse Source

购物车

yann 6 months ago
parent
commit
ce76f92897
3 changed files with 50 additions and 33 deletions
  1. 41 32
      pages/cart/cart.js
  2. 1 1
      pages/cart/cart.wxml
  3. 8 0
      service/api.js

+ 41 - 32
pages/cart/cart.js

@@ -15,44 +15,49 @@ Page({
     // 获取购物车商品
     // 获取购物车商品
     getCartProds(){
     getCartProds(){
        API.getCartProds().then(res=>{
        API.getCartProds().then(res=>{
-           let num = 0,checkIds=[];
-           res.carts.forEach(item=>{
-               if(item.checkFlag){
-                   num+=1;
-                   checkIds.push(item.id+'');
-               }
-           })
-           this.setData({
-                cartList:res.carts,
-                totalPrice:res.checkedSumAmount,
-                checkedIds:checkIds,
-                isAllChecked:num === res.carts.length
-           })
+           this.handleCartsFn(res);
        })
        })
     },
     },
+    // 处理商品函数
+    handleCartsFn(value){
+        let num = 0,checkIds=[];
+        value.carts.forEach(item=>{
+            if(item.checkFlag === "1"){
+                num+=1;
+                checkIds.push(item.id+'');
+            }
+        })
+        this.setData({
+             cartList:value.carts,
+             totalPrice:value.checkedSumAmount,
+             checkedIds:checkIds,
+             isAllChecked:num === value.carts.length
+        })
+    },
     // 购物车选中/取消
     // 购物车选中/取消
     handleCheckboxFn(prodId){
     handleCheckboxFn(prodId){
-        let {mercProdId,id,prodAttrId,quantity} = this.data.cartList.filter(item=>item.id == prodId)[0];
-        let data = {
-            mercId:mercProdId,
-            prodId:id,
-            prodAttrId,
-            count:quantity
-        }
-       API.checkedCartProds(data).then(res=>{
-
+        let {id} = this.data.cartList.filter(item=>item.id == prodId)[0];
+       API.checkedCartProds({id}).then(res=>{
+          this.handleCartsFn(res);
        })
        })
     },
     },
+    // 选中/取消选中所有
+    handleCheckedAll(){
+        API.handleCheckedAll().then(res=>{
+          
+        })
+    },
+    // 取消选中所有
+    handleUncheckedAll(){
+        API.handleUncheckedAll().then(res=>{
+            
+        })
+    },
     // 删除选中的商品
     // 删除选中的商品
     deleteProd(){
     deleteProd(){
-        let ids = [];
-        this.data.cartList.map(item=>{
-            if(item.checkFlag){
-               ids.push(item.id);
-            }
-        });
-        API.deleteCartProds().then(res=>{
-
+        let ids = this.data.checkedIds;
+        API.deleteCartProds({ids}).then(res=>{
+            this.handleCartsFn(res);
         })
         })
     },
     },
     // 复选框变化事件
     // 复选框变化事件
@@ -63,7 +68,6 @@ Page({
         item.checkFlag = checkedIds.includes(item.id.toString());
         item.checkFlag = checkedIds.includes(item.id.toString());
             return item;
             return item;
         });
         });
-        console.log("33333333",oldCheckIds,checkedIds);
         // 取消选中
         // 取消选中
         if(oldCheckIds.length > checkedIds.length){
         if(oldCheckIds.length > checkedIds.length){
            let id = oldCheckIds.filter(item=>!checkedIds.includes(item));
            let id = oldCheckIds.filter(item=>!checkedIds.includes(item));
@@ -82,10 +86,15 @@ Page({
     toggleAll() {
     toggleAll() {
         const isAllChecked = !this.data.isAllChecked;
         const isAllChecked = !this.data.isAllChecked;
         const cartList = this.data.cartList.map(item => {
         const cartList = this.data.cartList.map(item => {
-        item.checkFlag = isAllChecked;
+            item.checkFlag = isAllChecked;
             return item;
             return item;
         });
         });
         this.setData({ cartList, isAllChecked });
         this.setData({ cartList, isAllChecked });
+        if(isAllChecked){
+            this.handleCheckedAll();
+        }else{
+            this.handleUncheckedAll();
+        }
         this.calculateTotal();
         this.calculateTotal();
     },
     },
     // 增加数量
     // 增加数量

+ 1 - 1
pages/cart/cart.wxml

@@ -11,7 +11,7 @@
     <view class="prodsList">
     <view class="prodsList">
         <checkbox-group bindchange="handleCheckboxChange">
         <checkbox-group bindchange="handleCheckboxChange">
             <view class="itemProd" wx:for="{{cartList}}" wx:key="id">
             <view class="itemProd" wx:for="{{cartList}}" wx:key="id">
-                <checkbox value="{{item.id}}" checked="{{item.checkFlag}}"></checkbox>
+                <checkbox value="{{item.id}}" checked="{{item.checkFlag === '1'}}"></checkbox>
                 <view class="goods-info">
                 <view class="goods-info">
                     <image src="/images/index/category-item.png" mode="aspectFill"></image>
                     <image src="/images/index/category-item.png" mode="aspectFill"></image>
                     <view class="info">
                     <view class="info">

+ 8 - 0
service/api.js

@@ -246,6 +246,14 @@ export const API = {
     checkedCartProds: function(playload){
     checkedCartProds: function(playload){
         return http.post("/api/store/carts/checked",playload)
         return http.post("/api/store/carts/checked",playload)
     },
     },
+    // 选中选中所有商品
+    handleCheckedAll: function(playload){
+        return http.post("/api/store/carts/checkedAll",playload)
+    },
+    // 取消选中所有商品
+    handleUncheckedAll: function(playload){
+        return http.post("/api/store/carts/uncheckedAll",playload)
+    },
     // 删除购物车选中的商品
     // 删除购物车选中的商品
     deleteCartProds: function(playload){
     deleteCartProds: function(playload){
         return http.post("/api/store/carts/delete",playload)
         return http.post("/api/store/carts/delete",playload)