import { url } from '../request'; Page({ data: { id: '', productList: [], // 商品列表 select_all: false, checkbox_productListid: '', totalPrice: 0, }, // 计算总价 calculateTotalPrice() { const totalPrice = this.data.productList .filter(item => item.checked) // 只计算勾选的商品 .reduce((sum, item) => sum + item.quantity * item.commoditiesPrice, 0); // 格式化总价为两位小数 const formattedTotalPrice = totalPrice.toFixed(2); // 更新 totalPrice this.setData({ totalPrice: formattedTotalPrice }); }, // 增加商品数量 increaseQuantity(e) { const { index } = e.currentTarget.dataset; // 获取当前商品的索引 const updatedProductList = [...this.data.productList]; const item = updatedProductList[index]; // 增加数量 if (item.quantity < 999) { item.quantity += 1; } this.setData({ productList: updatedProductList }); this.calculateTotalPrice(); // 重新计算总价 }, // 减少商品数量 decreaseQuantity(e) { const { index } = e.currentTarget.dataset; // 获取当前商品的索引 const updatedProductList = [...this.data.productList]; const item = updatedProductList[index]; // 减少数量 if (item.quantity > 1) { item.quantity -= 1; } this.setData({ productList: updatedProductList }); this.calculateTotalPrice(); // 重新计算总价 }, // 全选/取消全选 selectall(e) { const newSelectAll = !this.data.select_all; const updatedProductList = this.data.productList.map(item => ({ ...item, checked: newSelectAll, })); const checkbox_productListid = newSelectAll ? updatedProductList.map(item => item.cartId).join(',') : ''; this.setData({ productList: updatedProductList, select_all: newSelectAll, checkbox_productListid, }); console.log("arr=", checkbox_productListid); this.calculateTotalPrice(); // 重新计算总价 const selectedProducts = updatedProductList.filter(item => item.checked); this.setData({ selectedProducts, // 存储勾选的商品信息 }); console.log(selectedProducts); }, checkboxChange(e) { const { value } = e.detail; // 当前选中的值列表 const updatedProductList = this.data.productList.map(item => ({ ...item, checked: value.includes(item.cartId.toString()), })); const select_all = updatedProductList.every(item => item.checked); this.setData({ productList: updatedProductList, select_all, }); this.calculateTotalPrice(); // 更新总价 // 提取勾选的商品 const selectedProducts = updatedProductList.filter(item => item.checked); this.setData({ selectedProducts, // 存储勾选的商品信息 }); console.log(selectedProducts,'askldjaslkdaslkdjklas'); }, // 获取商品数据 fetchProductDetails(cartItems) { const promises = cartItems.map((item) => { return new Promise((resolve, reject) => { my.request({ url: url + '/api/commodities/getById/commodities', method: 'GET', data: { id: item.commoditiesId }, headers: { 'content-type': 'application/json' }, success: (res) => { console.log(res); if (res.data.code === 0) { const productData = res.data.data; productData.cartId = item.id; // 将 cartId 添加到商品数据中 productData.quantity = 1; // 默认数量为 1 resolve(productData); } else { reject(`商品信息获取失败: ${res.data.message}`); } }, fail: (error) => { reject(error); }, }); }); }); Promise.all(promises) .then((productList) => { this.setData({ productList }); this.calculateTotalPrice(); // 初始化总价 }) .catch((error) => { console.error('商品信息获取失败: ', error); my.alert({ content: '商品信息获取失败,请稍后重试' }); }); }, // 页面加载时获取商品数据 onShow() { this.setData({ select_all: false, selectedProducts:[], }); my.getStorage({ key: 'userInfo', success: (res) => { const userInfo = res.data; if (userInfo && userInfo.cookie) { my.request({ url: url + '/api/cart/selectByUserId', method: 'POST', data: { id: userInfo.id }, headers: { 'content-type': 'application/json', 'Cookie': userInfo.cookie, }, dataType: 'json', success: (res) => { console.log(res,'hhhhhhhhhhhh'); if (res.data.code === 0) { console.log(res); const cartItems = res.data.data; this.fetchProductDetails(cartItems); } else { my.alert({ content: '登录信息已过期,请重新登录', }); my.navigateTo({ url: '/pages/denglu/denglu', }); } }, fail: (error) => { console.error('请求失败: ', JSON.stringify(error)); my.alert({ content: '请求失败,请稍后重试' }); }, }); } else{ my.alert({ content:'您未登录,请先登录' }) my.navigateTo({ url:'/pages/denglu/denglu' }) } }, }); }, yichu(e) { const cartId = e.currentTarget.dataset.id; // 获取商品的 cartId if (!cartId) { console.error('没有找到商品cartId'); my.alert({ content: '商品ID未找到,请稍后重试' }); return; } console.log('需要移除的商品cartId:', cartId); my.getStorage({ key: 'userInfo', success: (res) => { const userInfo = res.data; this.setData({ id: userInfo.id, // 获取 id }); // 发送请求移除商品 if (userInfo && userInfo.cookie) { my.request({ url: url + '/api/cart/delete', method: 'POST', data: { id: cartId, userId: userInfo.id }, // 使用 cartId 作为参数 headers: { 'content-type': 'application/json', 'Cookie': userInfo.cookie }, dataType: 'json', success: (res) => { console.log(res); if (res.data.code === 0) { my.alert({ content: '成功移除商品' }); console.log(res); // 更新购物车 this.updateCartList(); } else { my.alert({ content: '移除商品失败,请稍后重试' }); console.log(res); } }, }); } }, }); }, // 移除后更新 updateCartList() { this.setData({ select_all: false }); my.getStorage({ key: 'userInfo', success: (res) => { const userInfo = res.data; if (userInfo && userInfo.cookie) { my.request({ url: url + '/api/cart/selectByUserId', // 获取最新的购物车数据 method: 'POST', data: { id: this.data.id }, // 使用当前用户ID headers: { 'content-type': 'application/json', 'Cookie': userInfo.cookie }, dataType: 'json', success: (res) => { if (res.data.code === 0) { const cartItems = res.data.data; this.fetchProductDetails(cartItems, userInfo.id); } else { my.alert({ content: '获取购物车数据失败,请稍后重试' }); } }, fail: (error) => { console.error('请求失败: ', JSON.stringify(error)); my.alert({ content: '请求失败,请稍后重试' }); }, }); } }, }); }, jiesuan() { const products = this.data.selectedProducts; if(!products || products.length === 0){ my.alert({ content:'请选择商品' }) }else{ const productsStr = JSON.stringify(products) const prices =this.data.totalPrice my.navigateTo({ url: '/pages/zhifujiemian/zhifujiemian?products='+encodeURIComponent(productsStr)+ '&prices=' + encodeURIComponent(prices) }); } } });