From 9acb151c723992570495218517c0b30c27ff1776 Mon Sep 17 00:00:00 2001 From: wangfukang <15630117759@163.com> Date: Sun, 12 Apr 2026 16:08:16 +0800 Subject: [PATCH] 1 --- package1/index/deliveryPersonList.vue | 1 + package1/order/orderDetail.vue | 197 +++++++++++++++++++++++++- 2 files changed, 195 insertions(+), 3 deletions(-) diff --git a/package1/index/deliveryPersonList.vue b/package1/index/deliveryPersonList.vue index 852ef15..c3f951d 100644 --- a/package1/index/deliveryPersonList.vue +++ b/package1/index/deliveryPersonList.vue @@ -136,6 +136,7 @@ }); }, selectWorker(worker) { + uni.setStorageSync('pendingAssignWorker', worker); uni.$emit('updateDeliveryWorker', worker); uni.navigateBack(); }, diff --git a/package1/order/orderDetail.vue b/package1/order/orderDetail.vue index 8e2926c..353c9ba 100644 --- a/package1/order/orderDetail.vue +++ b/package1/order/orderDetail.vue @@ -152,10 +152,10 @@ 立即备餐 - + 增加配送佣金 - + 指派配送员 + + + + + + 增加配送佣金 + + + ¥{{additionalFee || '0.00'}} + + + + + + + 微信支付 + + + 使用微信支付 + + + + + + + + 确认付款 + + + + @@ -490,7 +538,9 @@ orderId:'', payData:{}, orderDetail:{}, - codeImg:'https://jewel-shop.oss-cn-beijing.aliyuncs.com/3a4e68eb14d7417cbb4f15fa85907c64.jpg' + codeImg:'https://jewel-shop.oss-cn-beijing.aliyuncs.com/3a4e68eb14d7417cbb4f15fa85907c64.jpg', + additionalFee: '', + addFeeTradeNo: '' } }, components: { @@ -546,9 +596,22 @@ this.orderId = option.id this.getOrderDetail(this.orderId) } + // 监听配送员选择事件(在onLoad中注册一次,确保事件不会丢失) + uni.$on('updateDeliveryWorker', (worker) => { + this.handleWorkerSelected(worker); + }); }, onShow() { this.menuButtonInfo = uni.getMenuButtonBoundingClientRect() + // 备用方案:检查缓存中是否有待处理的配送员选择 + let pendingWorker = uni.getStorageSync('pendingAssignWorker'); + if (pendingWorker) { + uni.removeStorageSync('pendingAssignWorker'); + this.handleWorkerSelected(pendingWorker); + } + }, + onUnload() { + uni.$off('updateDeliveryWorker'); }, methods: { openCode(){ @@ -771,6 +834,134 @@ } }).catch((res) => {}) }, + goAssignWorker() { + let shopAreaId = this.orderDetail.getAreaId || ''; + let putAreaId = this.orderDetail.putAreaId || ''; + uni.navigateTo({ + url: `/package1/index/deliveryPersonList?shopAreaId=${shopAreaId}&putAreaId=${putAreaId}` + }); + }, + handleWorkerSelected(worker) { + let that = this; + uni.showModal({ + title: '指派配送员', + content: `是否选取配送员「${worker.workerName || '未知'}」?`, + success: function(res) { + if (res.confirm) { + that.reassignWorker(worker); + } + } + }); + }, + reassignWorker(worker) { + let that = this; + let deliveryId = ''; + if (that.orderDetail.deliveryInfo && that.orderDetail.deliveryInfo.id) { + deliveryId = that.orderDetail.deliveryInfo.id; + } + that.tui.request("/mall/delivery/reassignWorker", "POST", { + deliveryId: deliveryId, + newWorkerId: worker.workerId, + newWorkerName: worker.workerName, + newWorkerPhone: worker.mobile + }, false, true).then((res) => { + if (res.code == 200) { + that.tui.toast("指派配送员成功"); + that.getOrderDetail(that.orderId); + that.$forceUpdate(); + } else { + that.tui.toast(res.message || '指派配送员失败'); + } + }).catch((err) => { + that.tui.toast('请求失败,请重试'); + }); + }, + openAddFeePopup() { + this.additionalFee = ''; + this.$refs.addFeePopup.open('bottom'); + }, + submitAddFee() { + let fee = parseFloat(this.additionalFee); + if (isNaN(fee) || fee <= 0) { + this.tui.toast('请输入有效的金额'); + return; + } + // 关闭输入弹窗,生成随机订单号,打开支付弹窗 + this.$refs.addFeePopup.close(); + const now = Date.now(); // 获取当前时间戳 (13位) + const randomPart = Math.floor(Math.random() * 1000000); // 6位随机数 + this.addFeeTradeNo = `${now}${randomPart.toString().padStart(6, '0')}`; + setTimeout(() => { + this.$refs.addFeePayPopup.open('bottom'); + }, 300); + }, + addFeeWxPayment() { + let that = this; + let fee = parseFloat(this.additionalFee); + if (!fee || fee <= 0) return; + let amountInCents = Math.round(fee * 100); + + this.tui.request("/api/wechat/pay/unified-order", "POST", { + openid: uni.getStorageSync('miniProgramOpenid') || 'test-openid', + amount: amountInCents, + description: '增加配送佣金', + outTradeNo: this.addFeeTradeNo + }, false, false).then((res) => { + if (res.code == 200) { + uni.requestPayment({ + provider: 'wxpay', + timeStamp: res.timeStamp, + nonceStr: res.nonceStr, + package: res.package, + signType: res.signType, + paySign: res.paySign, + success: function(res2) { + uni.showToast({ title: '支付成功', icon: 'success' }); + that.$refs.addFeePayPopup.close(); + that.callAddFeeApi(); + }, + fail: function(err) { + that.tui.toast('支付失败或取消'); + } + }); + } else { + // 模拟支付成功(用于测试环境) + if (res.code == 404 || res.code == 500 || res.code == 400 || !res.code) { + that.$refs.addFeePayPopup.close(); + uni.showToast({ title: '支付成功(模拟)', icon: 'none' }); + setTimeout(() => { + that.callAddFeeApi(); + }, 1500); + } else { + that.tui.toast(res.message); + } + } + }); + }, + callAddFeeApi() { + let that = this; + let fee = parseFloat(this.additionalFee); + let deliveryId = ''; + if (that.orderDetail.deliveryInfo && that.orderDetail.deliveryInfo.id) { + deliveryId = that.orderDetail.deliveryInfo.id; + } + that.tui.request("/mall/delivery/addFee", "POST", { + deliveryId: deliveryId, + additionalFee: fee, + orderId:that.orderDetail.deliveryFee.id, + olditionalFee:that.orderDetail.deliveryFee ? that.orderDetail.deliveryFee : 0 + }, false, true).then((res) => { + if (res.code == 200) { + that.tui.toast("增加佣金成功"); + that.getOrderDetail(that.orderId); + that.$forceUpdate(); + } else { + that.tui.toast(res.message || '增加佣金失败'); + } + }).catch((err) => { + that.tui.toast('请求失败,请重试'); + }); + }, back() { uni.navigateBack() }