const app = getApp(); // import { getPublicImage } from '@/assets/js/middleGround/tool.js' import { loginInfo } from '../../assets/js/login'; import { getPublicImage } from '../../assets/js/middleGround/tool'; import Toast from 'tdesign-miniprogram/toast/index'; Page({ data: { swipeOpened: false, onDisabled: false, imgUrl: [], shoppingCartData: [], checkAll: false, checkedList: [], selectedCount: 0, totalPrice: 0.00, type: '', start: 1, totalSize: '', isMore: null, bookId: '', bookName: '' }, onLoad(options) { wx.setNavigationBarTitle({ title: '购物车' }); this.shoppingCartGet(); console.log(this.data.shoppingCartData.length, 'this.data.shoppingCartData.length'); this.setData({ swipeOpened: true }) }, onShow() { this.setData({ swipeOpened: false }) if (typeof this.getTabBar === 'function' && this.getTabBar()) { this.getTabBar().setData({ active: 3 }) } this.shoppingCartGet(); this.setData({ totalPrice: 0.00, selectedCount: 0, checkAll: false, }) }, onDelete(e) { const item = e.currentTarget.dataset.item; app.MG.store.delShoppingCart({ ids: [item.id] }).then(res => { this.shoppingCartGet(); wx.showToast({ title: '删除图书成功', icon: 'none' }); this.setData({ totalPrice: 0.00, selectedCount: 0, checkAll: false, }) }); }, shoppingCartGet() { let query = { start: 0, size: this.data.start * 4, filterList: [], searchList: [] }; app.MG.store.getShoppingCartProductList(query).then(res => { console.log(res, 'res'); this.setData({ totalSize: res.totalSize }) res.datas.forEach(item => { console.log(res); this.setData({ bookId: res.id, bookName: res.name }) 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; // 将type设置为item对象的属性,而不是使用setData console.log(item.linkCmsItems[0].name); item.name = item.linkCmsItems[0].name ? item.productMonWithLinkDto.product.name + ':' + item.linkCmsItems[0].name : item.productMonWithLinkDto.product.name }); this.setData({ shoppingCartData: res.datas }); console.log(this.data.shoppingCartData, 'shoppingCartData'); if (this.data.shoppingCartData.length === 0) { this.setData({ onDisabled: true }) } else { console.log(2222); this.setData({ onDisabled: false }) } }); wx.stopPullDownRefresh() }, bottomChange(e) { const checked = e.detail.value.length > 0; const items = this.data.shoppingCartData.map(item => { item.checked = checked; return item; }); this.setData({ shoppingCartData: items, checkAll: checked }); this.calculateSelectedCount(); this.calculateTotalPrice(); }, HandelItemChange(e) { const { 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(); }, 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 } 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 { // 出现错误,返回false } }) } 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 => { const url = '/pages/cart/paymentPage/index?orderNumber=' + res.orderNumber wx.navigateTo({ url }); }) } else { Toast({ context: this, selector: '#t-toast', message: '请选择商品', theme: 'warning', direction: 'column', }); } } }, onLogin() { wx.navigateTo({ url: '/pages/testLogin/index' }); }, 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() }, onBook(e) { const item = e.currentTarget.dataset.item console.log(item); console.log(item.productMonWithLinkDto.product.id); console.log(item.productMonWithLinkDto.product.name); // wx.navigateTo({ // url: '/packageBookService/pages/bookServices/detail/index?id=' + item.productMonWithLinkDto.product.id + '&name=' + item.productMonWithLinkDto.product.name // }) } });