import {url} from '../request' Page({ data: { id: '', productList: [], // 商品列表 selectedItems: [], // 每个商品的选中状态 totalPrice: 0, // 总价 checkAll: false, // 全选标志 hhh:[] }, onShow() { 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/selectByUserId', method: 'POST', data: { id: this.data.id }, headers: { 'content-type': 'application/json', 'Cookie': userInfo.cookie, }, dataType: 'json', success: (res) => { console.log(res); if (res.data.code === 0) { const cartItems = res.data.data; this.fetchProductDetails(cartItems); } }, fail: (error) => { console.error('请求失败: ', JSON.stringify(error)); my.alert({ content: '请求失败,请稍后重试' }); }, }); } else { my.alert({ content: '您未登录,请先登录。', success: () => { my.navigateTo({ url: '/pages/denglu/denglu', }); }, }); } }, }); }, // 获取商品详细信息 fetchProductDetails(cartItems, userId) { console.log(cartItems, 'zheshiid'); 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) => { if (res.data.code === 0) { const productData = res.data.data; productData.userId = userId; // 添加 userId productData.cartId = item.id; // 将 cartId 添加到商品数据中 resolve(productData); } else { reject(`商品信息获取失败: ${res.data.message}`); } }, fail: (error) => { reject(error); }, }); }); }); Promise.all(promises) .then((productList) => { this.setData({ productList, selectedItems: new Array(productList.length).fill(false), // 初始化所有商品的选中状态为 false }); console.log(productList, '这是商品'); }) .catch((error) => { console.error('商品信息获取失败: ', error); my.alert({ content: '商品信息获取失败,请稍后重试' }); }); }, // 计算 checkAll 是否选中 checkAll() { return this.data.selectedItems.every(item => item); // 如果所有项都选中,返回 true }, // 处理单个复选框的选中状态变化 onChange(event) { const selectedItems = event.detail.value; // 获取选中的商品ID列表 const updatedSelectedItems = this.data.productList.map((item, index) => { return selectedItems.includes(item.id); // 更新每个商品的选中状态 }); this.setData({ selectedItems: updatedSelectedItems }); }, // 处理全选框的选中状态变化 onCheckAllChange(event) { const allSelected = event.detail.value; // 获取全选框的状态 const updatedSelectedItems = this.data.productList.map(() => allSelected); // 全选或全不选 this.setData({ selectedItems: updatedSelectedItems }); }, // 计算合计 calculateTotalPrice() { const total = this.data.productList.reduce((sum, item, index) => { if (this.data.selectedItems[index]) { sum += item.commoditiesPrice; // 累加选中商品的价格 } return sum; }, 0); this.setData({ totalPrice: total.toFixed(2) // 保留两位小数 }); }, // 处理移除商品 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 }, // 使用 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); } }, fail: (error) => { console.error('请求失败: ', JSON.stringify(error)); my.alert({ content: '请求失败,请稍后重试' }); }, }); } }, }); }, // 移除后更新 updateCartList() { 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: '请求失败,请稍后重试' }); }, }); } }, }); }, });