From 8c539c15af812088f32bf801583e36724be49352 Mon Sep 17 00:00:00 2001 From: chenkainan Date: Mon, 12 Jan 2026 10:15:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=BA=E6=89=8B=E8=B4=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/order/components/smoothlyOrder/index.js | 20 ++++- .../order/components/smoothlyOrder/index.wxml | 16 ++-- .../order/components/smoothlyOrder/index.wxss | 55 ++++++++++++- pages/order/postOrder/index.js | 65 ++++++++++++++- pages/order/postOrder/index.json | 3 +- pages/order/postOrder/index.wxml | 14 +++- pages/order/postOrder/index.wxss | 1 + pages/order/roadOrder/index.js | 81 ++++++++++++++++++- pages/order/roadOrder/index.json | 3 +- pages/order/roadOrder/index.wxml | 13 ++- pages/order/roadOrder/index.wxss | 1 + project.private.config.json | 18 ++++- 12 files changed, 268 insertions(+), 22 deletions(-) diff --git a/pages/order/components/smoothlyOrder/index.js b/pages/order/components/smoothlyOrder/index.js index 34310b5..879ec6d 100644 --- a/pages/order/components/smoothlyOrder/index.js +++ b/pages/order/components/smoothlyOrder/index.js @@ -23,7 +23,8 @@ Component({ sommthlyIndex: 0, showAddressPopup: false, showItem: null, - showSkuPopup: false + showSkuPopup: false, + content: '' }, lifetimes: { attached() { @@ -64,6 +65,20 @@ Component({ this.couponCom = this.selectAllComponents("#coupon")[0]; }, methods: { + // 查看规格信息 + showSkuInfo(e) { + this.setData({ + showItem: e.currentTarget.dataset.item, + showSkuPopup: true, + content: '' + }) + console.log(this.data.showItem) + }, + closePopup() { + this.setData({ + showSkuPopup: false + }) + }, // 是否有选中商品 hasSelectedGoods() { return this.data.smoothlyList.some(item => (item.buyNum || 0) > 0); @@ -202,10 +217,11 @@ Component({ consignee_id: type == 'post' ? postId : (this.data.address ? this.data .address.id : '') }).then(res => { - if (res) { + if (res.code == 1) { // 更新对应商品的邮费 const newList = [...smoothlyList] const idx = newList.findIndex(i => i.sku_id === item.sku_id) + console.log(res.data.price) if (idx > -1) { newList[idx].postMoney = res.data.price this.setData({ diff --git a/pages/order/components/smoothlyOrder/index.wxml b/pages/order/components/smoothlyOrder/index.wxml index 6df6936..476dbf4 100644 --- a/pages/order/components/smoothlyOrder/index.wxml +++ b/pages/order/components/smoothlyOrder/index.wxml @@ -1,4 +1,5 @@ - + + 顺手带一件 @@ -38,7 +39,7 @@ - @@ -67,12 +68,13 @@
-
- --> +
\ No newline at end of file diff --git a/pages/order/components/smoothlyOrder/index.wxss b/pages/order/components/smoothlyOrder/index.wxss index 4860b23..993b443 100644 --- a/pages/order/components/smoothlyOrder/index.wxss +++ b/pages/order/components/smoothlyOrder/index.wxss @@ -112,7 +112,7 @@ } .address-boxs .content .right .bottom { - margin-top: 6.67rpx + margin-top: 6.67rpx; font-weight: 500; font-size: 24rpx; color: #666666; @@ -198,4 +198,57 @@ .product-item .product-content .product-btn image { width: 46.67rpx; flex-shrink: 0; +} + +.sku-box { + width: 100vw; + height: 100vh; + background: rgba(0, 0, 0, 0.3); + position: fixed; + z-index: 99; + left: 0; + bottom: 0; +} + +.sku-popup { + position: fixed; + left: 0; + bottom: 0; + width: 100%; + height: 60vh; + background-color: #fff; + padding: 20rpx; + box-sizing: border-box; + overflow-x: hidden; +} + +.sku-name { + display: flex; + justify-content: space-between; + align-items: center; + font-size: 35rpx; + font-weight: bold; + height: 80rpx; + padding: 0 20rpx; + box-sizing: border-box; +} +.sku-name span { + font-weight: 400; +} + +.sku-content { + width: 100%; + height: 50vh; + overflow-y: auto; + overflow-x: hidden; + max-width: 100%; +} + +.sz-xcx-fwb-img { + width: 100% !important; + height: auto !important; + display: block !important; + margin: 0 auto !important; + object-fit: contain !important; + max-width: 100% !important; } \ No newline at end of file diff --git a/pages/order/postOrder/index.js b/pages/order/postOrder/index.js index c9e6397..c1b21ad 100644 --- a/pages/order/postOrder/index.js +++ b/pages/order/postOrder/index.js @@ -29,12 +29,16 @@ Page({ showYhq:null, pickupIndex: null, + + smoothlyTotal: 0, + maxCouponObject: null }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { + console.log(this.data.product) this.setData({ from: options.from, kjId: app.globalData.kjId, @@ -45,8 +49,21 @@ Page({ showYhq:app.globalData.listName?false:true }) this.handleProduct() + console.log(this.data.product) + }, + + // 子组件发生改变时更新价格 + handleUpdateTotalPrice(e) { + this.setData({ + smoothlyTotal: e.detail.total + }); + // 重新计算总价 + this.changePrice(); + }, + // 调用子组件清除优惠券方法 + callOtherCompMethod: function(e) { + this.couponCom.setNullCoupon() }, - handleProduct () { app.globalData.postProduct.forEach((item,index) => { item.keyIndex = index @@ -218,7 +235,12 @@ Page({ this.changePrice() }, changePrice: function () { - let product = this.data.product, price = 0; + let product = this.data.product, price = 0, allPrice = 0; + + // 顺手购价格 + price += this.data.smoothlyTotal || 0; + allPrice = price + product.map(item => { price = price + item.sku.price * item.productNum; if (this.data.allowance_data && this.data.select_allowance && this.data.allowance_price) { @@ -242,8 +264,38 @@ Page({ this.setData({ showPrice: app.globalData.kjId ? 0 : price }) + + const smoothlyComp = this.selectComponent("#smoothlyOrderComp"); + const skuIds = [] + skuIds.push(this.data.sku_id) + if(smoothlyComp) { + // 检查是否有选中的顺手购商品 + const hasSkuIds = smoothlyComp.hasSelectedGoods(); + if(hasSkuIds) { + skuIds.push(...smoothlyComp.emitSkuIds()) + } + } + this.setData({ + maxCouponObject: { + price: allPrice, + skuIds: skuIds.toString() + } + }) }, order: function () { + // 顺手带一件是否选择收货地址 + const smoothlyComp = this.selectComponent("#smoothlyOrderComp"); + if(smoothlyComp && this.data.product[0].user_select_type == 1) { + // 检查是否有选中的顺手购商品 + const hasSelected = smoothlyComp.hasSelectedGoods(); + if(hasSelected && !smoothlyComp.data.address) { + wx.showToast({ + title: '请选择收货地址', + icon: 'none' + }) + return; + } + } for(let info of this.data.product) { if (info.user_select_type == 0) { @@ -327,6 +379,12 @@ Page({ gp_id: app.globalData.gp_id, team_id: app.globalData.team_id }; + + // 顺手购下单参数 + if(smoothlyComp && smoothlyComp.emitOrder() && smoothlyComp.emitOrder().length) { + product_list.push(...smoothlyComp.emitOrder()) + } + if (this.data.select_allowance) data.is_allowance = 1 if (app.globalData.from) { data.system_name = app.globalData.from; @@ -348,10 +406,11 @@ Page({ data.channel = ZTPointProduct.product.ZTPoint } console.log(app.globalData.list,this.data.flag) + if(!app.globalData.list || app.globalData.list.length == 0){ // 判断混合下单 let use_type = product_list[0].use_type - if (product_list.some(x=>x.use_type!=use_type)) { + if (product_list.some(x=>x.use_type!=use_type) && !(smoothlyComp && smoothlyComp.emitOrder() && smoothlyComp.emitOrder().length)) { app.globalData.productPrice = (this.data.showPrice + this.data.postFee - (this.data.coupon?this.data.coupon.activity.money:0))/100; app.globalData.createDate = data wx.redirectTo({ diff --git a/pages/order/postOrder/index.json b/pages/order/postOrder/index.json index e69fb76..7cfd16d 100644 --- a/pages/order/postOrder/index.json +++ b/pages/order/postOrder/index.json @@ -2,6 +2,7 @@ "usingComponents": { "title":"/pages/component/TitleHeader", "address":"../components/address/index", - "coupon":"../components/coupon/index" + "coupon":"../components/coupon/index", + "smoothly-order": "/pages/order/components/smoothlyOrder/index" } } \ No newline at end of file diff --git a/pages/order/postOrder/index.wxml b/pages/order/postOrder/index.wxml index 582fcf4..2f51bb5 100644 --- a/pages/order/postOrder/index.wxml +++ b/pages/order/postOrder/index.wxml @@ -114,7 +114,19 @@ - + + + + + diff --git a/pages/order/postOrder/index.wxss b/pages/order/postOrder/index.wxss index 5cb30b8..f82157b 100644 --- a/pages/order/postOrder/index.wxss +++ b/pages/order/postOrder/index.wxss @@ -1,6 +1,7 @@ /* pages/order/post/index.wxss */ page { background: #f6f6f6; + padding-bottom: 150rpx; } .sendwayArea{ diff --git a/pages/order/roadOrder/index.js b/pages/order/roadOrder/index.js index ed17b65..118d93f 100644 --- a/pages/order/roadOrder/index.js +++ b/pages/order/roadOrder/index.js @@ -22,13 +22,16 @@ Page({ price:0, coupon:app.globalData.couponInfo, sku_ids:"", - prizeId:null + prizeId:null, + smoothlyTotal: 0, + maxCouponObject: null }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { + this.couponCom = this.selectAllComponents("#coupon")[0]; this.setData({ prizeId:wx.getStorageSync('prizeId') }) @@ -54,8 +57,62 @@ Page({ console.log(this.data) // 获取默认联系人 this.getLinkmanList() + // this.showAllPrice() + }, + // 子组件发生改变时更新价格 + handleUpdateTotalPrice(e) { + this.setData({ + smoothlyTotal: e.detail.total + }); + // 重新计算总价 + this.showAllPrice(); + }, + // 调用子组件清除优惠券方法 + callOtherCompMethod: function(e) { + this.couponCom.setNullCoupon() + }, + showAllPrice() { + let price = app.globalData.product.price + let allPrice = 0 + + // 顺手购价格 + price += this.data.smoothlyTotal || 0; + allPrice = price + + if (this.data.coupon) { + if (this.data.coupon.activity.discount_type == 'pricebreak') { + price = price - this.data.coupon.activity.money + } else { + price =(price * this.data.coupon.activity.fold)/ 10 + } + } else { + price = price + } + if (price >0) { + this.setData({ price:price/100}) + }else { + this.setData({ price:0 }) + } + + const smoothlyComp = this.selectComponent("#smoothlyOrderComp"); + const skuIds = [] + skuIds.push(this.data.sku_ids) + console.log(skuIds) + if(smoothlyComp) { + // 检查是否有选中的顺手购商品 + const hasSkuIds = smoothlyComp.hasSelectedGoods(); + if(hasSkuIds) { + skuIds.push(...smoothlyComp.emitSkuIds()) + } + } + this.setData({ + maxCouponObject: { + price: allPrice, + skuIds: skuIds.toString() + } + }) + console.log(this.data.maxCouponObject) }, - showLinkman:function(e){ if(!this.data.linkmanFlag) { let skuIndex = e.currentTarget.dataset.index,linkmans = this.data.linkmans[skuIndex],linkmanList = this.data.linkmanList; @@ -200,6 +257,19 @@ Page({ }) }, order:function(){ + const smoothlyComp = this.selectComponent("#smoothlyOrderComp"); + if(smoothlyComp) { + // 检查是否有选中的顺手购商品 + const hasSelected = smoothlyComp.hasSelectedGoods(); + if(hasSelected && !smoothlyComp.data.address) { + wx.showToast({ + title: '请选择收货地址', + icon: 'none' + }) + return; + } + } + let sku = this.data.sku,product = this.data.product,linkmans = this.data.linkmans,product_list = [],reserve_mobile = this.data.reserve_mobile; if(!reserve_mobile) { wx.showToast({ @@ -246,6 +316,12 @@ Page({ if(orderFlag==false){ return; } + + // 顺手购下单参数 + if(smoothlyComp && smoothlyComp.emitOrder() && smoothlyComp.emitOrder().length) { + product_list.push(...smoothlyComp.emitOrder()) + } + let data = { product_list:product_list, coupon_id:this.data.coupon?this.data.coupon.id:null, @@ -281,6 +357,7 @@ Page({ this.setData({ coupon:e.detail }) + this.showAllPrice() }, // 一日游合同确认签字 // ondayConfirm:function(){ diff --git a/pages/order/roadOrder/index.json b/pages/order/roadOrder/index.json index 8172ad6..f35301a 100644 --- a/pages/order/roadOrder/index.json +++ b/pages/order/roadOrder/index.json @@ -1,6 +1,7 @@ { "usingComponents": { "title":"/pages/component/TitleHeader", - "coupon":"/pages/order/components/coupon/index" + "coupon":"/pages/order/components/coupon/index", + "smoothly-order": "/pages/order/components/smoothlyOrder/index" } } \ No newline at end of file diff --git a/pages/order/roadOrder/index.wxml b/pages/order/roadOrder/index.wxml index 52331d5..0b7f40f 100644 --- a/pages/order/roadOrder/index.wxml +++ b/pages/order/roadOrder/index.wxml @@ -29,7 +29,16 @@ - + + + +