From 04c7b0163caeae4ab1c5da62e301fa993101cfad Mon Sep 17 00:00:00 2001 From: 闫增涛 <1829501689@qq.com> Date: 星期一, 31 三月 2025 10:40:45 +0800 Subject: [PATCH] bug修改 --- pages/cart/index.js | 580 ++++++++++++++++++++++++++++++++------------------------- 1 files changed, 322 insertions(+), 258 deletions(-) diff --git a/pages/cart/index.js b/pages/cart/index.js index e710106..4a4ceb1 100644 --- a/pages/cart/index.js +++ b/pages/cart/index.js @@ -1,294 +1,358 @@ -import Dialog from 'tdesign-miniprogram/dialog/index'; +const app = getApp(); +import { + loginInfo +} from '../../assets/js/login'; +import { + getPublicImage +} from '../../assets/js/middleGround/tool'; import Toast from 'tdesign-miniprogram/toast/index'; -import { fetchCartGroupData } from '../../services/cart/cart'; + Page({ data: { - cartGroupData: null, + price: '', + loading: true, + hidden: true, + swipeOpened: false, + onDisabled: false, + imgUrl: [], + shoppingCartData: [], + checkAll: false, + checkedList: [], + selectedCount: 0, + totalPrice: 0.00, + type: '', + start: 1, + totalSize: '', + isMore: null, + bookId: '', + bookName: '' }, - // 璋冪敤鑷畾涔塼abbar鐨刬nit鍑芥暟锛屼娇椤甸潰涓巘abbar婵�娲荤姸鎬佷繚鎸佷竴鑷� + onLoad(options) { + wx.setNavigationBarTitle({ + title: '璐墿杞�' + }); + // this.shoppingCartGet(); + this.setData({ + swipeOpened: true + }) + }, onShow() { - this.getTabBar().init(); - }, - - onLoad() { - this.refreshData(); - }, - - refreshData() { - this.getCartGroupData().then((res) => { - let isEmpty = true; - const cartGroupData = res.data; - // 涓�浜涚粍浠朵腑闇�瑕佺殑瀛楁鍙兘鎺ュ彛骞舵病鏈夎繑鍥烇紝鎴栬�呰繑鍥炵殑鏁版嵁缁撴瀯涓庨鏈熶笉涓�鑷达紝闇�瑕佸湪姝ゅ厛瀵规暟鎹仛涓�浜涘鐞� - // 缁熻闂ㄥ簵涓嬪姞璐殑鍟嗗搧鏄惁鍏ㄩ�夈�佹槸鍚﹀瓨鍦ㄧ己璐�/鏃犺揣 - for (const store of cartGroupData.storeGoods) { - store.isSelected = true; // 璇ラ棬搴楀凡鍔犺喘鍟嗗搧鏄惁鍏ㄩ�� - store.storeStockShortage = false; // 璇ラ棬搴楀凡鍔犺喘鍟嗗搧鏄惁瀛樺湪搴撳瓨涓嶈冻 - if (!store.shortageGoodsList) { - store.shortageGoodsList = []; // 璇ラ棬搴楀凡鍔犺喘鍟嗗搧濡傛灉搴撳瓨涓�0闇�鍗曠嫭鍒嗙粍 - } - for (const activity of store.promotionGoodsList) { - activity.goodsPromotionList = activity.goodsPromotionList.filter((goods) => { - goods.originPrice = undefined; - - // 缁熻鏄惁鏈夊姞璐暟澶т簬搴撳瓨鏁扮殑鍟嗗搧 - if (goods.quantity > goods.stockQuantity) { - store.storeStockShortage = true; - } - // 缁熻鏄惁鍏ㄩ�� - if (!goods.isSelected) { - store.isSelected = false; - } - // 搴撳瓨涓�0锛堟棤璐э級鐨勫晢鍝佸崟鐙垎缁� - if (goods.stockQuantity > 0) { - return true; - } - store.shortageGoodsList.push(goods); - return false; - }); - - if (activity.goodsPromotionList.length > 0) { - isEmpty = false; - } - } - if (store.shortageGoodsList.length > 0) { - isEmpty = false; - } + loginInfo(app, (data) => { + if (data) { + this.shoppingCartGet(); + } else { + wx.switchTab({ + url: '/pages/home/home', + }) } - cartGroupData.invalidGoodItems = cartGroupData.invalidGoodItems.map((goods) => { - goods.originPrice = undefined; - return goods; + }) + this.setData({ + swipeOpened: false + }) + if (typeof this.getTabBar === 'function' && this.getTabBar()) { + this.getTabBar().setData({ + active: 3 + }) + } + this.setData({ + totalPrice: 0.00, + selectedCount: 0, + checkAll: false, + }) + }, + + // 閲戦鏄剧ず.00鏍煎紡 + numFormat(value) { + if (!value) return "0.00"; + value = Number(value).toFixed(2); + var intPart = Math.trunc(value); // 鑾峰彇鏁存暟閮ㄥ垎 + var intPartFormat = intPart + .toString() + .replace(/(\d)(?=(?:\d{3})+$)/g, "$1,"); // 灏嗘暣鏁伴儴鍒嗛�笁涓�鏂� + var floatPart = ".00"; // 棰勫畾涔夊皬鏁伴儴鍒� + var value2Array = value.split("."); + // =2琛ㄧず鏁版嵁鏈夊皬鏁颁綅 + if (value2Array.length === 2) { + floatPart = value2Array[1].toString(); // 鎷垮埌灏忔暟閮ㄥ垎 + if (floatPart.length === 1) { + return `${intPartFormat}.${floatPart}0`; + } + return `${intPartFormat}.${floatPart}`; + } + return intPartFormat + floatPart; + }, + onDelete(e) { + const item = e.currentTarget.dataset.item; + app.MG.store.delShoppingCart({ + ids: [item.id] + }).then(res => { + this.shoppingCartGet(); + wx.showToast({ + title: '鍒犻櫎鍥句功鎴愬姛', + icon: 'none' }); - cartGroupData.isNotEmpty = !isEmpty; - this.setData({ cartGroupData }); + this.setData({ + totalPrice: 0.00, + selectedCount: 0, + checkAll: false, + }) }); }, - findGoods(spuId, skuId) { - let currentStore; - let currentActivity; - let currentGoods; - const { storeGoods } = this.data.cartGroupData; - for (const store of storeGoods) { - for (const activity of store.promotionGoodsList) { - for (const goods of activity.goodsPromotionList) { - if (goods.spuId === spuId && goods.skuId === skuId) { - currentStore = store; - currentActivity = currentActivity; - currentGoods = goods; - return { - currentStore, - currentActivity, - currentGoods, - }; - } - } - } - } - return { - currentStore, - currentActivity, - currentGoods, + shoppingCartGet() { + let query = { + start: 0, + size: this.data.start * 4, + filterList: [], + searchList: [] }; - }, + app.MG.store.getShoppingCartProductList(query).then(res => { + console.log(res.datas); + this.setData({ + totalSize: res.totalSize + }) + res.datas.forEach(item => { + this.setData({ + bookId: res.id, + bookName: res.name, + price: item.saleMethod.price.toFixed(2), + }) + 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; // 灏唗ype璁剧疆涓篿tem瀵硅薄鐨勫睘鎬э紝鑰屼笉鏄娇鐢╯etData + item.name = item.linkCmsItems[0].name ? item.productMonWithLinkDto.product.name + ':' + item.linkCmsItems[0].name : item.productMonWithLinkDto.product.name + item.saleMethod.price = this.numFormat(item.saleMethod.price) + if (item.productMonWithLinkDto.links[0].storeRefCode == 'jsek_digitalTextbooks') { + item.typeTxt = '鏁板瓧鏁欐潗' + item.productType = "鏁板瓧鏁欐潗" + } else if (item.productMonWithLinkDto.links[0].storeRefCode == 'jsek_digitalCourses') { + item.typeTxt = '鏁板瓧璇剧▼' + item.productType = "鏁板瓧璇剧▼" + } else { + item.typeTxt = '鐢靛瓙涔�' + item.productType = "鍥句功鏈嶅姟-鐢靛瓙涔�" - // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙h幏鍙栬喘鐗╄溅鏁版嵁 - getCartGroupData() { - const { cartGroupData } = this.data; - if (!cartGroupData) { - return fetchCartGroupData(); - } - return Promise.resolve({ data: cartGroupData }); - }, - - // 閫夋嫨鍗曚釜鍟嗗搧 - // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙f洿鏀归�変腑鐘舵�� - selectGoodsService({ spuId, skuId, isSelected }) { - this.findGoods(spuId, skuId).currentGoods.isSelected = isSelected; - return Promise.resolve(); - }, - - // 鍏ㄩ�夐棬搴� - // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙f洿鏀归�変腑鐘舵�� - selectStoreService({ storeId, isSelected }) { - const currentStore = this.data.cartGroupData.storeGoods.find((s) => s.storeId === storeId); - currentStore.isSelected = isSelected; - currentStore.promotionGoodsList.forEach((activity) => { - activity.goodsPromotionList.forEach((goods) => { - goods.isSelected = isSelected; + if (item.saleMethod.type == 'createProductItemSaleMethod' || item.saleMethod.type == 'createProductFolderSaleMethod') { + if (item.linkCmsItems[0].refCode == 'questionBank') { + item.typeTxt = '浜戞祴璇�' + item.productType = '鍥句功鏈嶅姟-浜戞祴璇�' + } else { + item.typeTxt = '浜戝涔�' + item.productType = "鍥句功鏈嶅姟-浜戝涔�" + } + } + } + // }); + + this.setData({ + shoppingCartData: res.datas + }); + if (this.data.shoppingCartData.length === 0) { + this.setData({ + onDisabled: true + }) + } else { + this.setData({ + onDisabled: false + }) + } + setTimeout(() => { + this.setData({ + loading: false, + hidden: false, + }) + }, 600) + }); - return Promise.resolve(); + wx.stopPullDownRefresh() + }, - // 鍔犺喘鏁伴噺鍙樻洿 - // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙� - changeQuantityService({ spuId, skuId, quantity }) { - this.findGoods(spuId, skuId).currentGoods.quantity = quantity; - return Promise.resolve(); - }, - - // 鍒犻櫎鍔犺喘鍟嗗搧 - // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙� - deleteGoodsService({ spuId, skuId }) { - function deleteGoods(group) { - for (const gindex in group) { - const goods = group[gindex]; - if (goods.spuId === spuId && goods.skuId === skuId) { - group.splice(gindex, 1); - return gindex; - } - } - return -1; - } - const { storeGoods, invalidGoodItems } = this.data.cartGroupData; - for (const store of storeGoods) { - for (const activity of store.promotionGoodsList) { - if (deleteGoods(activity.goodsPromotionList) > -1) { - return Promise.resolve(); - } - } - if (deleteGoods(store.shortageGoodsList) > -1) { - return Promise.resolve(); - } - } - if (deleteGoods(invalidGoodItems) > -1) { - return Promise.resolve(); - } - return Promise.reject(); - }, - - // 娓呯┖澶辨晥鍟嗗搧 - // 娉細瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙� - clearInvalidGoodsService() { - this.data.cartGroupData.invalidGoodItems = []; - return Promise.resolve(); - }, - - onGoodsSelect(e) { - const { - goods: { spuId, skuId }, - isSelected, - } = e.detail; - const { currentGoods } = this.findGoods(spuId, skuId); - Toast({ - context: this, - selector: '#t-toast', - message: `${isSelected ? '閫夋嫨' : '鍙栨秷'}"${ - currentGoods.title.length > 5 ? `${currentGoods.title.slice(0, 5)}...` : currentGoods.title - }"`, - icon: '', + bottomChange(e) { + const checked = e.detail.value.length > 0; + const items = this.data.shoppingCartData.map(item => { + item.checked = checked; + return item; }); - this.selectGoodsService({ spuId, skuId, isSelected }).then(() => this.refreshData()); + this.setData({ + shoppingCartData: items, + checkAll: checked + }); + this.calculateSelectedCount(); + this.calculateTotalPrice(); }, - onStoreSelect(e) { + HandelItemChange(e) { const { - store: { storeId }, - isSelected, - } = e.detail; - this.selectStoreService({ storeId, isSelected }).then(() => this.refreshData()); + 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(); }, - onQuantityChange(e) { - const { - goods: { spuId, skuId }, - quantity, - } = e.detail; - const { currentGoods } = this.findGoods(spuId, skuId); - const stockQuantity = currentGoods.stockQuantity > 0 ? currentGoods.stockQuantity : 0; // 閬垮厤鍚庣杩斿洖鐨勬槸-1 - // 鍔犺喘鏁伴噺瓒呰繃搴撳瓨鏁伴噺 - if (quantity > stockQuantity) { - // 鍔犺喘鏁伴噺绛変簬搴撳瓨鏁伴噺鐨勬儏鍐典笅缁х画鍔犺喘 - if (currentGoods.quantity === stockQuantity && quantity - stockQuantity === 1) { + 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 + } + // '&onNorderSaleMethod=' + + 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 { + // 鍑虹幇閿欒锛岃繑鍥瀎alse + } + }) + } 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 => { + console.log(res.saleMethodLinks[0].orderSaleMethod.id, 'ressss798'); + const url = '/pages/cart/paymentPage/index?orderNumber=' + res.orderNumber + '&onNorderSaleMethod=' + res.saleMethodLinks[0].orderSaleMethod.id + wx.navigateTo({ + url + }); + }) + } else { Toast({ context: this, selector: '#t-toast', - message: '褰撳墠鍟嗗搧搴撳瓨涓嶈冻', + message: '璇烽�夋嫨鍟嗗搧', + theme: 'warning', + direction: 'column', }); - return; } - Dialog.confirm({ - title: '鍟嗗搧搴撳瓨涓嶈冻', - content: `褰撳墠鍟嗗搧搴撳瓨涓嶈冻锛屾渶澶у彲璐拱鏁伴噺涓�${stockQuantity}浠禶, - confirmBtn: '淇敼涓烘渶澶у彲璐拱鏁伴噺', - cancelBtn: '鍙栨秷', - }) - .then(() => { - this.changeQuantityService({ - spuId, - skuId, - quantity: stockQuantity, - }).then(() => this.refreshData()); - }) - .catch(() => {}); - return; } - this.changeQuantityService({ spuId, skuId, quantity }).then(() => this.refreshData()); - }, - goCollect() { - /** 娲诲姩鑲畾鏈変竴涓椿鍔↖D锛岀敤鏉ヨ幏鍙栨椿鍔╞anner锛屾椿鍔ㄥ晢鍝佸垪琛ㄧ瓑 */ - const promotionID = '123'; + + + }, + onLogin() { wx.navigateTo({ - url: `/pages/promotion-detail/index?promotion_id=${promotionID}`, + url: '/pages/testLogin/index' }); }, - goGoodsDetail(e) { - const { spuId, storeId } = e.detail.goods; + + 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() + }, + async onBook(e) { + const item = e.currentTarget.dataset.item + console.log(item); + const type = item.productMonWithLinkDto.links[0].storeRefCode + let url = '' + if (type == 'jsek_digitalCourses') { + // 璇剧▼ + url = '/pages/digitalCourses/digitalCoursesDetails/index?id=' + item.productMonWithLinkDto.product.id + '&path=' + '' + } else if (type == 'jsek_digitalTextbooks') { + // 鏁板瓧鏁欐潗 + url = '/pages/digitalTextbooks/digitalTextbooksDetails/index?id=' + item.productMonWithLinkDto.product.id + } else { + let parentData = null; + parentData = await app.MG.store.getProductBySaleMethod({ + 'saleMethodId': item.saleMethod.id + }) + console.log(parentData) + let bookId = item.productMonWithLinkDto.product.id; + if (parentData.parentProduct.length > 0) { + bookId = parentData.parentProduct[parentData.parentProduct.length - 1].id; + } + url = '/packageBookService/pages/bookServices/detail/index?id=' + bookId + '&name=' + item.productMonWithLinkDto.product.name + } wx.navigateTo({ - url: `/pages/goods/details/index?spuId=${spuId}&storeId=${storeId}`, - }); - }, - - clearInvalidGoods() { - // 瀹為檯鍦烘櫙鏃跺簲璇ヨ皟鐢ㄦ帴鍙f竻绌哄け鏁堝晢鍝� - this.clearInvalidGoodsService().then(() => this.refreshData()); - }, - - onGoodsDelete(e) { - const { - goods: { spuId, skuId }, - } = e.detail; - Dialog.confirm({ - content: '纭鍒犻櫎璇ュ晢鍝佸悧?', - confirmBtn: '纭畾', - cancelBtn: '鍙栨秷', - }).then(() => { - this.deleteGoodsService({ spuId, skuId }).then(() => { - Toast({ context: this, selector: '#t-toast', message: '鍟嗗搧鍒犻櫎鎴愬姛' }); - this.refreshData(); - }); - }); - }, - - onSelectAll(event) { - const { isAllSelected } = event?.detail ?? {}; - Toast({ - context: this, - selector: '#t-toast', - message: `${isAllSelected ? '鍙栨秷' : '鐐瑰嚮'}浜嗗叏閫夋寜閽甡, - }); - // 璋冪敤鎺ュ彛鏀瑰彉鍏ㄩ�� - }, - - onToSettle() { - const goodsRequestList = []; - this.data.cartGroupData.storeGoods.forEach((store) => { - store.promotionGoodsList.forEach((promotion) => { - promotion.goodsPromotionList.forEach((m) => { - if (m.isSelected == 1) { - goodsRequestList.push(m); - } - }); - }); - }); - wx.setStorageSync('order.goodsRequestList', JSON.stringify(goodsRequestList)); - wx.navigateTo({ url: '/pages/order/order-confirm/index?type=cart' }); - }, - onGotoHome() { - wx.switchTab({ url: '/pages/home/home' }); - }, -}); + url + }) + } +}); \ No newline at end of file -- Gitblit v1.9.1