// 获取应用实例 const {API} = require('../../service/api.js'); Page({ data:{ cartList: [ { id: 1, name: "商品A商品A商品A商品A商品A", price: 100, checked: false, count: 1 }, { id: 2, name: "商品B商品B商品B商品B商品B", price: 200, checked: false, count: 2 }, { id: 3, name: "商品C", price: 300, checked: false, count: 1 } ], isAllChecked: false, // 全选状态 totalPrice:0, checkedCount:0, isManage:false, // 是否进入管理模式 }, // 获取购物车商品 getCartProds(){ 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 }) }) }, // 购物车选中/取消 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=>{ }) }, // 删除选中的商品 deleteProd(){ let ids = []; this.data.cartList.map(item=>{ if(item.checkFlag){ ids.push(item.id); } }); API.deleteCartProds().then(res=>{ }) }, // 复选框变化事件 handleCheckboxChange(e) { const oldCheckIds = this.data.checkedIds; const checkedIds = e.detail.value; // 选中的商品id数组(如 ['1', '2']) const cartList = this.data.cartList.map(item => { item.checkFlag = checkedIds.includes(item.id.toString()); return item; }); console.log("33333333",oldCheckIds,checkedIds); // 取消选中 if(oldCheckIds.length > checkedIds.length){ let id = oldCheckIds.filter(item=>!checkedIds.includes(item)); this.handleCheckboxFn(id[0]); }else{ this.handleCheckboxFn(checkedIds.at(-1)); } this.setData({ cartList, checkedIds, isAllChecked: checkedIds.length === this.data.cartList.length }); this.calculateTotal(); // 计算总价 }, // 全选/取消全选 toggleAll() { const isAllChecked = !this.data.isAllChecked; const cartList = this.data.cartList.map(item => { item.checkFlag = isAllChecked; return item; }); this.setData({ cartList, isAllChecked }); this.calculateTotal(); }, // 增加数量 increaseCount(e) { const id = e.currentTarget.dataset.id; const cartList = this.data.cartList.map(item => { if (item.id == id) item.quantity++; return item; }); this.setData({ cartList }); this.calculateTotal(); }, // 减少数量 decreaseCount(e) { const id = e.currentTarget.dataset.id; const cartList = this.data.cartList.map(item => { if (item.id == id && item.quantity > 1) item.quantity--; return item; }); this.setData({ cartList }); this.calculateTotal(); }, // 计算总价和选中数量 calculateTotal() { let totalPrice = 0; let checkedCount = 0; this.data.cartList.forEach(item => { if (item.checkFlag) { totalPrice += item.price * item.quantity; checkedCount++; } }); this.setData({ totalPrice, checkedCount }); }, // 管理按钮 manageBut(){ this.setData({ isManage:!this.data.isManage }) }, onLoad(){ this.getCartProds(); } })