diff --git a/package2/group/groupBuySingle.vue b/package2/group/groupBuySingle.vue index 3962afb..939bd34 100644 --- a/package2/group/groupBuySingle.vue +++ b/package2/group/groupBuySingle.vue @@ -591,7 +591,7 @@ 拼团成功后立即出餐 - + @@ -607,8 +607,8 @@ - - + + diff --git a/package2/myCenter/partTimeJobRegister.vue b/package2/myCenter/partTimeJobRegister.vue index 58f23f9..2879e11 100644 --- a/package2/myCenter/partTimeJobRegister.vue +++ b/package2/myCenter/partTimeJobRegister.vue @@ -192,11 +192,11 @@ class="official-qr" /> 长按 关注公众号 - 关注后可提现佣金,有新订单会及时通知你。 + 关注后可提现佣金,有新订单会及时通知。下线后不再接收通知 - 提交注册 + {{worker ? '保存规则' : '提交注册'}} @@ -331,6 +331,7 @@ songcan: [], shopArea: [], waimaRuleList: [], + worker:{}, paotuiRuleList: [], currentConfigType: '', defaultRoutePrice: '1', @@ -351,8 +352,8 @@ incomeRange: '¥0' } } - const lowOrders = Math.max(1, Math.ceil(count * 0.25)) - const highOrders = Math.max(lowOrders, Math.ceil(count * 0.6)) + const lowOrders = Math.max(1, Math.ceil(count * 2.5)) + const highOrders = Math.max(lowOrders, Math.ceil(count * 6)) const lowIncome = Math.floor(lowOrders * commissionPerOrder * 100) / 100 const highIncome = Math.floor(highOrders * commissionPerOrder * 100) / 100 return { @@ -365,6 +366,7 @@ this.getShopArea() this.getWorkerMessage() this.showOnboardingOnce() + this.worker = uni.getStorageSync('worker') }, onShow() { this.menuButtonInfo = uni.getMenuButtonBoundingClientRect() @@ -690,6 +692,9 @@ title: '提交成功' }); } + uni.reLaunch({ + url: '/pages/index/index?tabIndex=1&deliveryRuleEdited=1' + }) } else { uni.showToast({ title: res.message, diff --git a/package2/shop/afterService.vue b/package2/shop/afterService.vue index 8fa9057..267bd5f 100644 --- a/package2/shop/afterService.vue +++ b/package2/shop/afterService.vue @@ -109,9 +109,9 @@ - 餐盒费:¥{{item.packageFee || 0}} 配送费:¥{{item.deliveryFee || 0}} + 餐盒费:¥{{formatMoney(item.packageFee)}} 配送费:¥{{formatMoney(item.deliveryFee)}} - 总计:¥{{item.totalAmount || 0}} + 暂无拼团订单 @@ -138,7 +138,7 @@ 单价:¥{{item1.price != null ? item1.price : 0}} - 餐盒费:¥{{item1.packageFee}} + 餐盒费:¥{{formatMoney(item1.packageFee)}} @@ -172,6 +172,17 @@ + + + 拒绝原因 + + + 取消 + 确认拒绝 + + + @@ -197,7 +208,9 @@ returnCount:0, submitLoading:false, submitRefundId:'', - contactItem:{} + contactItem:{}, + rejectItem:null, + rejectReason:'' } }, filters:{ @@ -256,6 +269,23 @@ if (!item) return '' return item.status == 0?'待支付':item.status == 2?'待配送员接单':(item.status == 3 && item.deliveryType == 1 && item.shopMakeTime == null) || (item.status == 3 && item.deliveryType == 2 && item.userRequireMake == 1)?'待出餐':(item.status == 3 && item.deliveryType == 1 && item.shopMakeTime != null)?'待取货':(item.status == 3 && item.deliveryType == 2)?'待消费':item.status == 4?'待送达':item.status == 5?'已完成':item.status == 7?'待同意退款':item.status == 8?'已退款':item.status == 6?'已取消':item.status == 11?'售后中':item.status == 12?'已售后':'' }, + toNumber(value) { + let amount = parseFloat(value); + return isNaN(amount) ? 0 : amount; + }, + formatMoney(value) { + return this.toNumber(value).toFixed(2); + }, + shouldShowPackageFee(order) { + return !!order && (order.deliveryType == 1 || order.isPack == 1); + }, + getGroupTotalAmount(item) { + let total = this.toNumber(item && item.totalAmount); + if (this.shouldShowPackageFee(item)) { + total += this.toNumber(item && item.packageFee); + } + return this.formatMoney(total); + }, orderDetailOpen(item){ this.returnFormData.id = item.id; this.returnFormData.linkId = item.linkId; @@ -333,6 +363,33 @@ }, returnAmountAllow(item,status){ if (this.submitLoading) return; + if (status == 0) { + this.openRejectPopup(item); + return; + } + this.submitReturnAmountAllow(item, status); + }, + openRejectPopup(item) { + this.rejectItem = item; + this.rejectReason = ''; + this.$refs.rejectPopup.open('center'); + }, + closeRejectPopup() { + this.rejectItem = null; + this.rejectReason = ''; + this.$refs.rejectPopup.close(); + }, + confirmReject() { + const reason = (this.rejectReason || '').trim(); + if (reason === '') { + this.tui.toast('请输入拒绝原因'); + return; + } + const item = this.rejectItem; + this.$refs.rejectPopup.close(); + this.submitReturnAmountAllow(item, 0, reason); + }, + submitReturnAmountAllow(item,status,rejectReason){ let titleText = status == 1 ? '确定同意该申请吗?' : '确定拒绝该申请吗?'; //退款提示 this.groupOrderIdList = []; @@ -362,10 +419,10 @@ let requestList = []; if(this.groupOrderIdList != [] && this.groupOrderIdList.length > 0){ for(let i = 0; i < this.groupOrderIdList.length;i++){ - requestList.push(this.processReturn(this.groupOrderIdList[i], status)); + requestList.push(this.processReturn(this.groupOrderIdList[i], status, rejectReason)); } }else{ - requestList.push(this.processReturn(item, status)); + requestList.push(this.processReturn(item, status, rejectReason)); } Promise.all(requestList).then((messageList) => { const successMessage = messageList[0] || '操作成功'; @@ -384,7 +441,7 @@ } }); }, - processReturn(item,status){ + processReturn(item,status,rejectReason){ let returnFormData = {} //退款 if(item.status == 0){ @@ -410,6 +467,9 @@ returnFormData.refundAmount = item.refundAmount; returnFormData.refundType = item.refundType; returnFormData.refundTypeStatus = item.refundTypeStatus; + if (status == 0) { + returnFormData.rejectReason = rejectReason; + } return this.tui.request("/mall/refund/allowOrReject", "POST", returnFormData, false, false).then((res) => { if (res.code == 200) { @@ -940,4 +1000,51 @@ font-weight: 700; text-align: center; } + .reject-popup { + width: 620rpx; + padding: 34rpx 28rpx 30rpx; + box-sizing: border-box; + border-radius: 28rpx; + background: #fff; + } + .reject-popup-title { + color: #00231C; + font-size: 34rpx; + font-weight: 900; + text-align: center; + } + .reject-textarea { + width: 100%; + height: 180rpx; + margin-top: 26rpx; + padding: 20rpx; + box-sizing: border-box; + border-radius: 18rpx; + background: #F5F8F5; + color: #00231C; + font-size: 28rpx; + line-height: 38rpx; + } + .reject-popup-actions { + display: flex; + gap: 18rpx; + margin-top: 28rpx; + } + .reject-popup-btn { + flex: 1; + height: 72rpx; + border-radius: 16rpx; + font-size: 28rpx; + font-weight: 800; + line-height: 72rpx; + text-align: center; + } + .reject-popup-cancel { + background: #eef3f1; + color: #55716a; + } + .reject-popup-confirm { + background: rgba(0, 35, 28, 1); + color: rgba(166, 255, 234, 1); + } \ No newline at end of file diff --git a/package2/shop/selfDeliveryOrderList.vue b/package2/shop/selfDeliveryOrderList.vue index 6dbd212..cd6d5df 100644 --- a/package2/shop/selfDeliveryOrderList.vue +++ b/package2/shop/selfDeliveryOrderList.vue @@ -15,7 +15,10 @@ - 商家自配送 + + 商家自配送 + 预约配送 + {{item.mustFinishTime | formatTime}}前送达 #{{item.numberCode}} @@ -325,6 +328,10 @@ align-items: center; justify-content: space-between; } + .tag-row{ + display: flex; + align-items: center; + } .tag{ background: rgba(255, 111, 44, 0.1); color: #ff6f2c; @@ -332,6 +339,16 @@ border-radius: 18rpx; font-weight: 700; } + .appointment-delivery-tag{ + margin-left: 12rpx; + padding: 8rpx 16rpx; + border-radius: 18rpx; + background: linear-gradient(135deg, #ff8f1f 0%, #ff6a3d 100%); + color: #fff; + font-size: 22rpx; + font-weight: 800; + box-shadow: 0 8rpx 18rpx rgba(255, 106, 61, 0.16); + } .time{ color: #666; } diff --git a/package2/shop/shopOrderList.vue b/package2/shop/shopOrderList.vue index f115296..8a87a5c 100644 --- a/package2/shop/shopOrderList.vue +++ b/package2/shop/shopOrderList.vue @@ -37,6 +37,12 @@ {{item.status == 0?'待支付':item.status == 2?'待配送员接单':(item.status == 3 && item.deliveryType == 1 && item.shopMakeTime == null) || (item.status == 3 && item.deliveryType == 2 && item.userRequireMake == 1)?'待出餐':(item.status == 3 && item.deliveryType == 1 && item.shopMakeTime != null)?'待取货':(item.status == 3 && item.deliveryType == 1 && item.shopMakeTime != null) || (item.status == 3 && item.deliveryType == 2 && item.userRequireMake != 1)?'待消费':item.status == 4?'待送达':item.status == 5?'已完成':item.status == 7?'待同意退款':item.status == 8?'已退款':item.status == 6?'已取消':item.status == 11?'售后中':item.status == 12?'已售后':""}} + + 预约配送 + + 要求送达:{{getDeliveryMustFinishTime(item) | formatISOTime}} + + 商品 @@ -283,6 +289,18 @@ if (item.mallOrder && item.mallOrder.id) return item.mallOrder.id return item.orderId || item.mallOrderId || item.id || '' }, + getDeliveryInfo(item) { + return item && item.deliveryInfo ? item.deliveryInfo : {} + }, + isAppointmentDelivery(item) { + const deliveryInfo = this.getDeliveryInfo(item) + return item && item.deliveryType == 1 && (item.appointmentDelivery == 1 || deliveryInfo.appointmentDelivery == 1) + }, + getDeliveryMustFinishTime(item) { + if (!item || item.deliveryType != 1) return '' + const deliveryInfo = this.getDeliveryInfo(item) + return deliveryInfo.mustFinishTime || item.mustFinishTime || '' + }, getStatusText(item) { if (!item) return '' return item.status == 0?'待支付':item.status == 2?'待配送员接单':(item.status == 3 && item.deliveryType == 1 && item.shopMakeTime == null) || (item.status == 3 && item.deliveryType == 2 && item.userRequireMake == 1)?'待出餐':(item.status == 3 && item.deliveryType == 1 && item.shopMakeTime != null)?'待取货':(item.status == 3 && item.deliveryType == 2)?'待消费':item.status == 4?'待送达':item.status == 5?'已完成':item.status == 7?'待同意退款':item.status == 8?'已退款':item.status == 6?'已取消':item.status == 11?'售后中':item.status == 12?'已售后':'' @@ -514,6 +532,37 @@ white-space: nowrap; } + .delivery-info-row { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 12rpx; + padding: 16rpx 0 0; + } + + .appointment-delivery-tag { + height: 44rpx; + line-height: 44rpx; + padding: 0 16rpx; + border-radius: 14rpx; + background: linear-gradient(135deg, #ff8f1f 0%, #ff6a3d 100%); + color: #fff; + font-size: 22rpx; + font-weight: 800; + box-shadow: 0 8rpx 18rpx rgba(255, 106, 61, 0.16); + } + + .delivery-required-time { + height: 44rpx; + line-height: 44rpx; + padding: 0 16rpx; + border-radius: 14rpx; + background: rgba(166, 255, 234, 0.36); + color: #0b6b5a; + font-size: 22rpx; + font-weight: 800; + } + .goods-box { padding: 22rpx 0 16rpx; } diff --git a/package2/shop/transferDeliveryOrderList.vue b/package2/shop/transferDeliveryOrderList.vue index 9e8d0ee..965e36f 100644 --- a/package2/shop/transferDeliveryOrderList.vue +++ b/package2/shop/transferDeliveryOrderList.vue @@ -8,6 +8,7 @@ 中转配送 + 预约配送 #{{item.numberCode}} @@ -18,6 +19,14 @@ 下单时间 {{formatTime(item.createTime)}} + + 要求送达 + {{formatTime(item.mustFinishTime)}} + + + 中转送达 + {{getTransferArriveText(item)}}前需要送达中转点 + 取餐码 {{item.transferPickupCode || '配送员接单后生成'}} @@ -193,6 +202,11 @@ this.productData = goodsList this.$refs.productPopup.open() }, + getTransferArriveText(item) { + const address = item && item.shopAddress ? String(item.shopAddress) : '' + const match = address.match(/商家预计(.+?)配送到-/) + return match && match[1] ? match[1] : '' + }, formatTime(value) { if (!value) return ''; const date = new Date(value) @@ -227,6 +241,7 @@ .card{background:#fff;border-radius:24rpx;padding:24rpx;margin-bottom:20rpx;box-shadow:0 10rpx 26rpx rgba(0,35,28,.08);} .card-head{display:flex;align-items:center;margin-bottom:20rpx;} .tag{background:#fff2e9;color:#f36c21;border-radius:12rpx;padding:8rpx 14rpx;font-weight:700;} + .appointment-delivery-tag{margin-left:12rpx;padding:8rpx 14rpx;border-radius:12rpx;background:linear-gradient(135deg,#ff8f1f 0%,#ff6a3d 100%);color:#fff;font-size:22rpx;font-weight:800;box-shadow:0 8rpx 18rpx rgba(255,106,61,.16);} .code{margin-left:auto;font-weight:800;font-size:32rpx;} .row{display:flex;line-height:46rpx;} .label{width:120rpx;color:#7a8582;}