wangfukang 3 months ago
parent
commit
1b26b81ac9
  1. 354
      package1/buyFood/buyFood.vue
  2. 21
      package1/components/delivery-time-op/delivery-time-op.vue
  3. 196
      package1/order/orderDetail.vue
  4. 3
      package1/order/orderList.vue
  5. 7
      package1/order/returnOrder.vue

354
package1/buyFood/buyFood.vue

@ -13,17 +13,17 @@
<view class="store-hero-copy">
<view class="store-hero-badge">团购到店</view>
<view class="store-hero-title">约上同学一起省</view>
<view class="store-hero-sub">支付后到店核销更划算</view>
<view class="store-hero-sub">支付后到店核销更划算</view>
</view>
<view class="store-verify-card">
<view class="verify-icon"></view>
<view>
<view class="verify-title">到店核销</view>
<view class="verify-sub">无需配送</view>
<view class="verify-sub">同校热拼</view>
</view>
</view>
<view class="store-float-tag tag-a">拼团价</view>
<view class="store-float-tag tag-b">同校热拼</view>
<!-- <view class="store-float-tag tag-a">拼团价</view>
<view class="store-float-tag tag-b">同校热拼</view> -->
</view>
</view>
<view class="tab-wrap" v-if="!isStoreGroupOrder">
@ -313,7 +313,7 @@
</view>
</view>
<view class="fee-row">
<view class="fee-row remark-row">
<view class="fee-label">
备注
</view>
@ -333,6 +333,9 @@
{{totalAmountCalc.toFixed(2)}}
</view>
</view>
<view class="minimum-pay-tip" v-if="isMinimumPayAmount">
最低需支付0.01
</view>
<view class="bottom-placeholder"></view>
<view class="buy-bottom">
<view class="bottom-btn" @tap="submitPay">
@ -408,6 +411,9 @@
<text
style="font-size: 60rpx;">{{backendTotalAmount ? backendTotalAmount.toFixed(2) : totalAmountCalc.toFixed(2)}}</text>
</view>
<view class="minimum-pay-tip pay-minimum-tip" v-if="isMinimumPayAmount">
最低需支付0.01
</view>
<view style="height: 40rpx;text-align: center;color: red;" v-if="isGroupBuy && isStoreGroupOrder">
若24小时内拼团失败将会为您自动退款
</view>
@ -440,6 +446,9 @@
<!-- 拼团分享弹出层 -->
<uni-popup ref="pintuanPopup" background-color="#fff" @change="onPintuanPopupChange">
<view class="pintuan-popup">
<view class="pintuan-popup-close" @tap.stop="$refs.pintuanPopup.close()">
<uni-icons type="closeempty" size="22" color="#00231C"></uni-icons>
</view>
<img src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/ecd00dab1c9c44198d765bc08bc1bd71.png" alt=""
style="position: absolute;top: 0;right: 0;width: 240rpx;height: 180rpx;" @tap="$refs.pintuanPopup.close()">
<view style="position: absolute;bottom: 0;width: 100%;height: 760rpx;">
@ -516,7 +525,7 @@
</view>
</view>
</uni-popup>
<delivery-time-op @timeCallback="timeCallback" :dodge="true" ref='model' :content="content" :barHidth='600'
<delivery-time-op @timeCallback="timeCallback" :dodge="false" ref='model' :content="content" :barHidth='600'
title="选择送达时间">
> </delivery-time-op>
<view class="free-order-mask" v-if="freeOrderEffectVisible" @tap.stop="closeFreeOrderEffect">
@ -720,6 +729,10 @@
}
return total > 0 ? total : 0.01;
},
isMinimumPayAmount() {
const amount = this.backendTotalAmount ? this.backendTotalAmount : this.totalAmountCalc;
return Number(amount).toFixed(2) === '0.01';
},
preDiscountTotal() {
if(this.isPaotui==true){
return this.goodsAmountCalc + this.packageFee + this.deliveryFeeCalc;
@ -742,7 +755,8 @@
return baseValue + transferTime;
}
const value = Number(this.shopItem.groupDeliveryTime);
const baseTime = isNaN(value) ? validCookingTime + 30 : (this.shopItem.groupDeliveryTimeIncludesTransfer == 1 ? Math.max(0, value - transferTime) : value);
const rawBaseTime = !isNaN(value) && value > 0 ? value : validCookingTime + 30;
const baseTime = this.shopItem.groupDeliveryTimeIncludesTransfer == 1 ? Math.max(0, rawBaseTime - transferTime) : rawBaseTime;
return baseTime + transferTime;
},
supportShopDelivery() {
@ -892,12 +906,17 @@
normalizeCustomCommission() {
this.customCommission = this.formatCommissionValue(this.customCommission);
},
getEffectiveDeliveryDurationMinutes() {
const duration = Number(this.deliveryDurationMinutes);
return !isNaN(duration) && duration > 0 ? duration : 30;
},
updateImmediateTimeStr() {
const now = new Date();
const startTime = new Date(now);
const endTime = new Date(now);
const deliveryDuration = Math.max(this.getEffectiveDeliveryDurationMinutes(), 30);
startTime.setMinutes(startTime.getMinutes() + 25);
endTime.setMinutes(endTime.getMinutes() + this.deliveryDurationMinutes);
endTime.setMinutes(endTime.getMinutes() + deliveryDuration);
this.immediateTimeStr = `${this.formatClockTime(startTime)}-${this.formatClockTime(endTime)}`;
},
refreshDeliveryTimeByModeChange() {
@ -1058,15 +1077,15 @@
checkTime(type) {
if (type === this.formData.isImmediately) {
if (type === false) {
this.$refs.model.open()
this.generateDeliveryTimes()
this.$refs.model.open()
}
return;
}
this.formData.isImmediately = type;
if (this.formData.isImmediately === false) {
this.$refs.model.open()
this.generateDeliveryTimes()
this.$refs.model.open()
}
},
checkVoucher(type) {
@ -1180,7 +1199,7 @@
if (!this.formData.deliveryTime || this.formData.deliveryTime === '自动送达' || this.formData.deliveryTime ===
'尽快送达'){
const now = new Date();
now.setMinutes(now.getMinutes() + this.deliveryDurationMinutes);
now.setMinutes(now.getMinutes() + this.getEffectiveDeliveryDurationMinutes());
return this.formatDateTimeValue(now);
}else{
let timeStr = this.formData.deliveryTime;
@ -1372,6 +1391,30 @@
this.freeOrderEffectVisible = false;
},
//
getNextDeliverySlot(date) {
const interval = 20;
const slot = new Date(date);
slot.setSeconds(0, 0);
const remainder = slot.getMinutes() % interval;
if (remainder !== 0) {
slot.setMinutes(slot.getMinutes() + interval - remainder);
} else {
slot.setMinutes(slot.getMinutes() + interval);
}
return slot;
},
buildDeliveryTimeList(startTime, endTime) {
const interval = 20;
const list = [];
const cursor = new Date(startTime);
while (cursor <= endTime) {
list.push({
timestr: this.formatClockTime(cursor)
});
cursor.setMinutes(cursor.getMinutes() + interval);
}
return list;
},
generateDeliveryTimes() {
const now = new Date();
const today = new Date(now);
@ -1394,44 +1437,27 @@
}];
const earliestTime = new Date(now);
earliestTime.setMinutes(earliestTime.getMinutes() + this.deliveryDurationMinutes);
earliestTime.setMinutes(earliestTime.getMinutes() + this.getEffectiveDeliveryDurationMinutes());
//
let nextHour = earliestTime.getHours();
let nextMinute = earliestTime.getMinutes() <= 30 ? 30 : 0;
if (earliestTime.getMinutes() > 30) {
nextHour += 1;
}
const todayStartTime = this.getNextDeliverySlot(earliestTime);
const todayEndTime = new Date(today);
todayEndTime.setHours(23, 40, 0, 0);
todayTimelist.push(...this.buildDeliveryTimeList(todayStartTime, todayEndTime));
// 23:30
for (let h = nextHour; h <= 23; h++) {
const startMin = (h === nextHour) ? nextMinute : 0;
for (let m = startMin; m < 60; m += 30) {
if (h === 23 && m > 30) continue; // 23:30
const timeStr = `${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}`;
todayTimelist.push({
timestr: timeStr
});
}
}
// ----- 00:00 ~ 23:30-----
const tomorrowTimelist = [];
for (let h = 0; h <= 23; h++) {
for (let m = 0; m < 60; m += 30) {
if (h === 23 && m > 30) continue;
const timeStr = `${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}`;
tomorrowTimelist.push({
timestr: timeStr
});
}
}
// ----- 00:00 ~ 23:40 20 -----
const tomorrowStartTime = new Date(tomorrow);
tomorrowStartTime.setHours(0, 0, 0, 0);
const tomorrowEndTime = new Date(tomorrow);
tomorrowEndTime.setHours(23, 40, 0, 0);
const tomorrowTimelist = this.buildDeliveryTimeList(tomorrowStartTime, tomorrowEndTime);
this.content = [{
id: 'today',
timezh: todayStr,
timelist: todayTimelist
},
{
id: 'tomorrow',
timezh: tomorrowStr,
timelist: tomorrowTimelist
}
@ -2224,6 +2250,28 @@
font-size: 34rpx;
}
.minimum-pay-tip {
width: 100%;
min-height: 42rpx;
min-height: 42rpx;
margin: 0 0 12rpx;
padding: 8rpx 18rpx;
border-radius: 999rpx;
background: rgba(255, 245, 236, 0.96);
border: 1rpx solid rgba(255, 112, 67, 0.24);
color: #f0441f;
font-size: 22rpx;
font-weight: 800;
line-height: 32rpx;
text-align: center;
box-sizing: border-box;
}
.pay-minimum-tip {
width: 86%;
margin: -2rpx auto 12rpx;
}
.bottom-placeholder {
height: 166rpx;
}
@ -2390,6 +2438,21 @@
position: relative;
}
.pintuan-popup-close {
position: absolute;
top: 24rpx;
right: 24rpx;
z-index: 5;
width: 58rpx;
height: 58rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
background: rgba(255, 255, 255, 0.86);
box-shadow: 0 8rpx 20rpx rgba(0, 35, 28, 0.12);
}
.kaituan1 {
height: 120rpx;
font-size: 44rpx;
@ -2806,7 +2869,8 @@
.store-group-checkout {
background:
radial-gradient(circle at 84% 110rpx, rgba(255, 229, 190, 0.74), transparent 270rpx),
radial-gradient(circle at 84% 110rpx, rgba(255, 229, 190, 0.78), transparent 270rpx),
radial-gradient(circle at 10% 520rpx, rgba(255, 125, 78, 0.1), transparent 260rpx),
linear-gradient(180deg, #fff0df 0%, #fff8f0 420rpx, #fffaf6 100%);
color: #3f2618;
}
@ -2815,16 +2879,49 @@
background:
radial-gradient(circle at 78% 22%, rgba(255, 246, 221, 0.72), transparent 240rpx),
linear-gradient(135deg, #ff8a5c 0%, #ffbd70 58%, #ffe2bf 100%);
height: 360rpx;
position: relative;
overflow: hidden;
border-bottom-left-radius: 40rpx;
border-bottom-right-radius: 40rpx;
box-shadow: 0 18rpx 46rpx rgba(255, 132, 80, 0.2);
}
.store-group-checkout .box1,
.store-group-checkout .ziqu-box,
.store-group-checkout .goods-card,
.store-group-checkout .coupon-row {
border-color: rgba(255, 218, 183, 0.82);
box-shadow: 0 16rpx 38rpx rgba(178, 102, 48, 0.12);
.store-group-checkout .box1 {
margin-top: 22rpx;
padding: 28rpx 24rpx 24rpx;
border: 1rpx solid rgba(255, 226, 205, 0.86);
box-shadow: 0 18rpx 44rpx rgba(178, 102, 48, 0.1);
}
.store-group-checkout .ziqu-box {
margin-top: -4rpx;
border: 1rpx solid rgba(255, 226, 205, 0.86);
box-shadow: 0 18rpx 44rpx rgba(178, 102, 48, 0.1);
}
.store-group-checkout .ziqu-address {
width: calc(100% - 48rpx);
min-height: 128rpx;
margin: 68rpx auto 24rpx;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(255, 250, 246, 0.94));
border: 1rpx solid rgba(255, 226, 205, 0.76);
box-shadow: 0 12rpx 28rpx rgba(178, 102, 48, 0.08);
}
.store-group-checkout .ziqu-address img {
margin-top: 42rpx;
}
.store-group-checkout .goods-card {
align-items: stretch;
padding: 18rpx;
margin-bottom: 18rpx;
background:
linear-gradient(180deg, rgba(255, 253, 250, 0.98), rgba(255, 248, 242, 0.92));
border: 1rpx solid rgba(255, 226, 205, 0.8);
box-shadow: 0 10rpx 24rpx rgba(178, 102, 48, 0.07);
}
.store-group-checkout .ziqu-xuanfu,
@ -2836,6 +2933,25 @@
box-shadow: 0 16rpx 30rpx rgba(255, 126, 39, 0.22);
}
.store-group-checkout .shop-title {
position: relative;
display: flex;
align-items: center;
margin-bottom: 10rpx;
padding-left: 18rpx;
line-height: 54rpx;
}
.store-group-checkout .shop-title::before {
content: '';
position: absolute;
left: 0;
width: 8rpx;
height: 28rpx;
border-radius: 999rpx;
background: linear-gradient(180deg, #ff7444, #ffb35e);
}
.store-group-checkout .shop-title,
.store-group-checkout .goods-name,
.store-group-checkout .total-label {
@ -2855,6 +2971,148 @@
color: #f0441f;
}
.store-group-checkout .goods-img {
width: 136rpx;
height: 136rpx;
}
.store-group-checkout .goods-img img {
border-radius: 22rpx;
box-shadow: 0 10rpx 24rpx rgba(178, 102, 48, 0.12);
}
.store-group-checkout .goods-content {
display: flex;
flex-direction: column;
min-width: 0;
padding-left: 18rpx;
}
.store-group-checkout .goods-name {
font-size: 29rpx;
line-height: 40rpx;
}
.store-group-checkout .goods-content-bottom {
margin-top: auto;
line-height: 46rpx;
}
.store-group-checkout .group-price-tag {
display: flex;
align-items: center;
margin-left: 12rpx;
padding: 6rpx 14rpx;
background: #fff0e8;
border: 1rpx solid rgba(255, 116, 68, 0.28);
box-shadow: inset 0 0 0 1rpx rgba(255, 255, 255, 0.62);
}
.store-group-checkout .group-price-tag text + text {
margin-left: 8rpx;
}
.store-group-checkout .fee-list {
margin-top: 26rpx;
padding: 8rpx;
border-top: 0;
border-radius: 28rpx;
background:
linear-gradient(180deg, rgba(255, 250, 246, 0.96), rgba(255, 246, 239, 0.78));
border: 1rpx solid rgba(255, 226, 205, 0.74);
}
.store-group-checkout .coupon-row,
.store-group-checkout .fee-row {
min-height: 86rpx;
padding: 0 18rpx;
border-radius: 22rpx;
box-sizing: border-box;
}
.store-group-checkout .coupon-row {
margin-bottom: 8rpx;
background: #fff;
border-top: 0;
box-shadow: 0 8rpx 20rpx rgba(178, 102, 48, 0.06);
}
.store-group-checkout .fee-row + .fee-row {
border-top: 0;
}
.store-group-checkout .coupon-label,
.store-group-checkout .fee-label {
font-size: 28rpx;
font-weight: 800;
}
.store-group-checkout .coupon-available {
padding: 8rpx 16rpx;
border-radius: 999rpx;
background: #fff4ec;
color: #ef6c2f;
font-size: 23rpx;
font-weight: 900;
}
.store-group-checkout .coupon-empty {
padding: 8rpx 16rpx;
border-radius: 999rpx;
background: #f7eee8;
color: #b38a70;
font-size: 23rpx;
}
.store-group-checkout .remark-row {
align-items: flex-start;
padding-top: 16rpx;
padding-bottom: 14rpx;
background: #fff;
box-shadow: 0 8rpx 20rpx rgba(178, 102, 48, 0.05);
}
.store-group-checkout .remark-row .fee-label {
flex: 0 0 90rpx;
line-height: 64rpx;
color: #3f2618;
}
.store-group-checkout .remark-box {
min-width: 0;
}
.store-group-checkout .remark-box .remark-value {
height: auto;
min-height: 64rpx;
line-height: 34rpx;
padding: 15rpx 20rpx;
text-align: left;
border-radius: 20rpx;
background: #fff7f1;
border: 1rpx solid rgba(255, 226, 205, 0.86);
color: #5d3827;
white-space: normal;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.store-group-checkout .remark-placeholder {
color: #b58d72;
}
.store-group-checkout .total-row {
margin-top: 14rpx;
padding: 0 8rpx;
border-top: 0;
}
.store-group-checkout .total-price {
font-size: 38rpx;
font-weight: 900;
}
.store-hero-effect {
position: absolute;
left: 0;

21
package1/components/delivery-time-op/delivery-time-op.vue

@ -2,12 +2,13 @@
<template>
<view>
<!-- 模态框 -->
<view @tap="Modal" :class="{ mask: model }"></view>
<view v-if="model" @tap="Modal" class="mask"></view>
<!-- 弹窗主体 -->
<view
:style="{ height: barHidth + 'rpx' }"
class="active"
:class="{ add: model }"
@tap.stop
>
<view class="title-model">{{ title }} <text @tap="close">x</text></view>
<view class="cont" :style="{ height: barHidth - 80 + 'rpx' }">
@ -15,8 +16,8 @@
<scroll-view class="day" :scroll-y="true">
<view
:class="index === isIndex ? 'active_copy' : ''"
v-for="(item, index) in content"
:key="item.id"
v-for="(item, index) in normalizedContent"
:key="item.key"
@tap="dataCallback(index, item)"
>{{ item.timezh }}</view
>
@ -91,12 +92,24 @@ export default {
};
},
computed: {
normalizedContent() {
return (this.content || []).map((item, index) => ({
...item,
key: item.id || index,
}));
},
},
//
watch: {
content: {
immediate: true,
handler(newValue, oldValue) {
this.Days = this.content[0].timelist;
this.Days =
newValue && newValue[0] && Array.isArray(newValue[0].timelist)
? newValue[0].timelist
: [];
},
},
},

196
package1/order/orderDetail.vue

@ -100,90 +100,94 @@
</view>
</view>
<view class="" v-else>
<view class="title">
<view class="title-sreach">
<view class="back-btn" @tap="back" :style="{'top': menuButtonInfo.top +'px'}">
<uni-icons type="left" size="28"></uni-icons>
<view class="order-detail-fixed-header">
<view class="title">
<view class="title-sreach">
<view class="back-btn" @tap="back" :style="{'top': menuButtonInfo.top +'px'}">
<uni-icons type="left" size="28"></uni-icons>
</view>
</view>
</view>
</view>
<view class="content">
<view class="box1" style="display: flex;min-height: 160rpx;">
<view class="status-img">
<img v-if="orderDetail.status == 0 || (orderDetail.status == 3 && orderDetail.deliveryType == 2)"
src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/6cf6fff020614ebebb34f7c371e11331.png"
alt="" />
<img v-if="orderDetail.status == 2"
src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/35ff6276eb3a4e58b8baa724ca44d5dc.png"
alt="" />
<img v-if="orderDetail.status == 5 || orderDetail.status == 8 || orderDetail.status == 12"
src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/dbfa6dc934e2414c912c67430d5f802c.png"
alt="" />
<img v-if="orderDetail.status == 6"
src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/03d7e8d5914e4b9ca04728113900d1fe.png"
alt="" />
<img v-if="orderDetail.status == 7 || orderDetail.status == 11"
src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/35ff6276eb3a4e58b8baa724ca44d5dc.png"
alt="" />
<img v-if="(orderDetail.status == 3 && orderDetail.deliveryType == 1) || (orderDetail.status == 4 && orderDetail.deliveryType == 1)"
src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/0ab87a35cbca473997c679a023337df6.png"
alt="" />
<!--
待支付 https://jewel-shop.oss-cn-beijing.aliyuncs.com/6cf6fff020614ebebb34f7c371e11331.png
订单取消 https://jewel-shop.oss-cn-beijing.aliyuncs.com/03d7e8d5914e4b9ca04728113900d1fe.png
等待商家接单等待配送员接单等待商家同意 https://jewel-shop.oss-cn-beijing.aliyuncs.com/35ff6276eb3a4e58b8baa724ca44d5dc.png
配送中配送员已接单配送员已到店等待配送员接单 https://jewel-shop.oss-cn-beijing.aliyuncs.com/0ab87a35cbca473997c679a023337df6.png
订单完成 https://jewel-shop.oss-cn-beijing.aliyuncs.com/dbfa6dc934e2414c912c67430d5f802c.png
-->
</view>
<view class="status-text">
<view class="status-zhu">
<text v-if="orderDetail.status == 0">待支付</text>
<text v-if="orderDetail.status == 2">{{orderDetail.shopDelivery == 1 ? '等待商家配送接单' : '等待配送员接单'}}</text>
<text v-if="orderDetail.status == 3 && orderDetail.deliveryType == 1 && !(orderDetail.deliveryInfo && orderDetail.deliveryInfo.transferDelivery == 1)">{{orderDetail.shopDelivery == 1 ? '商家配送已接单' : '配送员已接单'}}</text>
<text v-if="orderDetail.status == 3 && orderDetail.deliveryType == 1 && orderDetail.deliveryInfo && orderDetail.deliveryInfo.transferDelivery == 1 && !orderDetail.deliveryInfo.transferArriveTime">等待商家送达中转点</text>
<text v-if="orderDetail.status == 3 && orderDetail.deliveryType == 1 && orderDetail.deliveryInfo && orderDetail.deliveryInfo.transferDelivery == 1 && orderDetail.deliveryInfo.transferArriveTime">待配送员取货</text>
<text v-if="orderDetail.status == 3 && orderDetail.deliveryType == 2">待消费</text>
<text v-if="orderDetail.status == 4 && orderDetail.deliveryType == 1">{{orderDetail.deliveryInfo && orderDetail.deliveryInfo.transferDelivery == 1 ? '中转配送中' : '配送员已取货'}}</text>
<text v-if="orderDetail.status == 5">订单已完成</text>
<text v-if="orderDetail.status == 7">等待同意退款</text>
<text v-if="orderDetail.status == 6">订单已取消</text>
<text v-if="orderDetail.status == 8">订单已退款</text>
<text v-if="orderDetail.status == 11">售后中</text>
<text v-if="orderDetail.status == 12">订单已售后</text>
</view>
<view class="status-fu" v-if="orderDetail.status == 0">
<view class="">
剩余支付时间 <text style="color:red;font-weight: 700;">{{payCountdownText}}</text></view>
</view>
<view class="status-fu" v-else-if="orderDetail.deliveryInfo">
<view class="">
预计<text style="color:red;font-weight: 700;">{{orderDetail.deliveryInfo.mustFinishTime | formatHourMinute }}</text>送达</view>
<!-- <view class="">超过15分钟未支付订单自动取消</view>
<view class="">您申请了取消订单请等待商家同意</view>
<view class="">商家已同意取消订单订单金额将原路返回</view>
<view class="">商家已拒绝取消订单将会继续为您配送</view> -->
</view>
<view class="status-address" v-if="orderDetail.deliveryInfo">
<text class="status-address-label">送至</text>
<text class="status-address-text">{{orderDetail.deliveryInfo.receiverAddress}}</text>
</view>
<view class="status-btn" style="top: 0;" v-if="orderStatus(orderDetail)"
@tap="returnPopupProp(orderDetail)">
取消订单
<view class="order-detail-header-content">
<view class="box1 order-status-card" style="display: flex;min-height: 160rpx;">
<view class="status-img">
<img v-if="orderDetail.status == 0 || (orderDetail.status == 3 && orderDetail.deliveryType == 2)"
src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/6cf6fff020614ebebb34f7c371e11331.png"
alt="" />
<img v-if="orderDetail.status == 2"
src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/35ff6276eb3a4e58b8baa724ca44d5dc.png"
alt="" />
<img v-if="orderDetail.status == 5 || orderDetail.status == 8 || orderDetail.status == 12"
src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/dbfa6dc934e2414c912c67430d5f802c.png"
alt="" />
<img v-if="orderDetail.status == 6"
src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/03d7e8d5914e4b9ca04728113900d1fe.png"
alt="" />
<img v-if="orderDetail.status == 7 || orderDetail.status == 11"
src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/35ff6276eb3a4e58b8baa724ca44d5dc.png"
alt="" />
<img v-if="(orderDetail.status == 3 && orderDetail.deliveryType == 1) || (orderDetail.status == 4 && orderDetail.deliveryType == 1)"
src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/0ab87a35cbca473997c679a023337df6.png"
alt="" />
<!--
待支付 https://jewel-shop.oss-cn-beijing.aliyuncs.com/6cf6fff020614ebebb34f7c371e11331.png
订单取消 https://jewel-shop.oss-cn-beijing.aliyuncs.com/03d7e8d5914e4b9ca04728113900d1fe.png
等待商家接单等待配送员接单等待商家同意 https://jewel-shop.oss-cn-beijing.aliyuncs.com/35ff6276eb3a4e58b8baa724ca44d5dc.png
配送中配送员已接单配送员已到店等待配送员接单 https://jewel-shop.oss-cn-beijing.aliyuncs.com/0ab87a35cbca473997c679a023337df6.png
订单完成 https://jewel-shop.oss-cn-beijing.aliyuncs.com/dbfa6dc934e2414c912c67430d5f802c.png
-->
</view>
<view class="status-btn" style="top: 0;" v-if="orderDetail.status == 5 && hasRefund == false"
@tap="returnProducts(orderDetail)">
申请售后
<view class="status-text">
<view class="status-zhu">
<text v-if="orderDetail.status == 0">待支付</text>
<text v-if="orderDetail.status == 2">{{orderDetail.shopDelivery == 1 ? '等待商家配送接单' : '等待配送员接单'}}</text>
<text v-if="orderDetail.status == 3 && orderDetail.deliveryType == 1 && !(orderDetail.deliveryInfo && orderDetail.deliveryInfo.transferDelivery == 1)">{{orderDetail.shopDelivery == 1 ? '商家配送已接单' : '配送员已接单'}}</text>
<text v-if="orderDetail.status == 3 && orderDetail.deliveryType == 1 && orderDetail.deliveryInfo && orderDetail.deliveryInfo.transferDelivery == 1 && !orderDetail.deliveryInfo.transferArriveTime">等待商家送达中转点</text>
<text v-if="orderDetail.status == 3 && orderDetail.deliveryType == 1 && orderDetail.deliveryInfo && orderDetail.deliveryInfo.transferDelivery == 1 && orderDetail.deliveryInfo.transferArriveTime">待配送员取货</text>
<text v-if="orderDetail.status == 3 && orderDetail.deliveryType == 2">待消费</text>
<text v-if="orderDetail.status == 4 && orderDetail.deliveryType == 1">{{orderDetail.deliveryInfo && orderDetail.deliveryInfo.transferDelivery == 1 ? '中转配送中' : '配送员已取货'}}</text>
<text v-if="orderDetail.status == 5">订单已完成</text>
<text v-if="orderDetail.status == 7">等待同意退款</text>
<text v-if="orderDetail.status == 6">订单已取消</text>
<text v-if="orderDetail.status == 8">订单已退款</text>
<text v-if="orderDetail.status == 11">售后中</text>
<text v-if="orderDetail.status == 12">订单已售后</text>
</view>
<view class="status-fu" v-if="orderDetail.status == 0">
<view class="">
剩余支付时间 <text style="color:red;font-weight: 700;">{{payCountdownText}}</text></view>
</view>
<view class="status-fu" v-else-if="orderDetail.deliveryInfo">
<view class="">
预计<text style="color:red;font-weight: 700;">{{orderDetail.deliveryInfo.mustFinishTime | formatHourMinute }}</text>送达</view>
<!-- <view class="">超过15分钟未支付订单自动取消</view>
<view class="">您申请了取消订单请等待商家同意</view>
<view class="">商家已同意取消订单订单金额将原路返回</view>
<view class="">商家已拒绝取消订单将会继续为您配送</view> -->
</view>
<view class="status-address" v-if="orderDetail.deliveryInfo">
<text class="status-address-label">送至</text>
<text class="status-address-text">{{orderDetail.deliveryInfo.receiverAddress}}</text>
</view>
<view class="status-btn" style="top: 0;" v-if="orderStatus(orderDetail)"
@tap="returnPopupProp(orderDetail)">
取消订单
</view>
<view class="status-btn" style="top: 0;" v-if="orderDetail.status == 5 && hasRefund == false"
@tap="returnProducts(orderDetail)">
申请售后
</view>
<view class="status-btn" style="top: 70rpx;" @tap="refreah(orderDetail)">
{{isRefreshing ? '刷新中' : '刷新'}}
</view>
<!-- <view class="status-btn">
去评价
</view> -->
</view>
<view class="status-btn" style="top: 70rpx;" @tap="refreah(orderDetail)">
{{isRefreshing ? '刷新中' : '刷新'}}
</view>
<!-- <view class="status-btn">
去评价
</view> -->
</view>
</view>
</view>
<view class="content order-detail-content">
<view class="order-flow" v-if="orderDetail.status != 6">
<view class="flow-item active">
<view class="flow-dot"></view>
@ -1427,7 +1431,9 @@
this.refundTypeStatus = 2
this.sellTime = 3
}
this.arriveTime = this.orderDetail.deliveryInfo.arriveTime ? this.formatTimeText(this.orderDetail.deliveryInfo.arriveTime) : '未到店'
if(this.orderDetail.deliveryInfo){
this.arriveTime = this.orderDetail.deliveryInfo.arriveTime ? this.formatTimeText(this.orderDetail.deliveryInfo.arriveTime) : '未到店'
}
if (this.payData.shopMakeTime != null) {
const date1 = new Date(this.payData.deliveryInfo.acceptTime);
const date2 = new Date(this.payData.shopMakeTime);
@ -2168,13 +2174,32 @@
box-shadow: 0 18rpx 44rpx rgba(0, 35, 28, 0.06);
}
.content {
.order-detail-fixed-header {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 50;
}
.order-detail-header-content {
position: absolute;
top: 190rpx;
left: 0;
width: 100%;
}
.content {
position: relative;
width: 100%;
padding-bottom: 60rpx;
}
.order-detail-content {
padding-top: 396rpx;
box-sizing: border-box;
}
.title-sreach {
width: 100%;
display: flex;
@ -2341,6 +2366,13 @@
border-radius: 36rpx;
}
.order-status-card {
background:
radial-gradient(circle at 94% 4%, rgba(255, 221, 176, 0.2) 0, rgba(255, 221, 176, 0) 170rpx),
linear-gradient(135deg, rgba(255, 255, 255, 0.98) 0%, rgba(244, 255, 251, 0.96) 100%);
border-radius: 36rpx;
}
.goods-img {
width: 160rpx;
height: 160rpx;
@ -2465,8 +2497,8 @@
.order-flow {
width: 95%;
margin: -4rpx auto 22rpx;
padding: 22rpx 20rpx;
margin: -2rpx auto 12rpx;
padding: 16rpx 20rpx;
border-radius: 30rpx;
background: rgba(255, 255, 255, 0.78);
box-shadow: 0 14rpx 34rpx rgba(0, 35, 28, 0.05);

3
package1/order/orderList.vue

@ -328,6 +328,9 @@
if (this.tab1Checked == 'ershou') {
return allOptions.filter(item => [10, 0, 6, 7, 8, 9, 11, 12].includes(item.value));
}
if (this.tab1Checked == 'tuangou') {
return allOptions.filter(item => [10, 0, 1, 2, 6, 7, 8, 9, 11, 12].includes(item.value));
}
return allOptions.filter(item => ![1, 2].includes(item.value));
},
statusFilterText() {

7
package1/order/returnOrder.vue

@ -507,7 +507,12 @@
let ratio = this.getRefundRatio()
refundAmount = refundAmount - refundAmount * ratio
}
this.refundShowAmount = Number(refundAmount.toFixed(2))
let refundShowAmount = Number(refundAmount.toFixed(2))
let totalAmount = this.toAmount(this.orderDetail.totalAmount)
if (this.orderDetail.totalAmount != null && refundShowAmount > totalAmount) {
refundShowAmount = totalAmount
}
this.refundShowAmount = refundShowAmount
},
pictureAdd(id, huan) {
let that = this

Loading…
Cancel
Save