diff --git a/src/views/order/Detail.vue b/src/views/order/Detail.vue index 8e277fb..7f3171c 100644 --- a/src/views/order/Detail.vue +++ b/src/views/order/Detail.vue @@ -103,6 +103,10 @@ {{ getStatusText(orderData.zhuangtai) }} + + {{ autoSettleText }} + ({{ orderData.auto_expire_at }}) + {{ orderData.fadanpingtai === 1 ? '平台发单' : orderData.fadanpingtai === 2 ? '商家发单' : '未知' }} @@ -403,6 +407,26 @@ const getFullImageUrl = (url) => { const formatPrice = (val) => parseFloat(val || 0).toFixed(2) +const formatRemainText = (sec) => { + const s = Math.max(0, Number(sec) || 0) + const h = Math.floor(s / 3600) + const m = Math.floor((s % 3600) / 60) + if (h >= 24) return `${Math.floor(h / 24)}天${h % 24}小时` + if (h > 0) return `${h}小时${m}分` + if (m > 0) return `${m}分钟` + return s > 0 ? `${s}秒` : '即将结算' +} + +const autoSettleText = computed(() => { + const d = orderData.value + if (!d || !d.auto_settle_eligible) return '' + const remain = d.auto_settle_remain_seconds + if (remain == null || remain === '') { + return d.auto_expire_at ? `预计 ${d.auto_expire_at} 自动结算` : '' + } + return Number(remain) <= 0 ? '即将自动结算' : `预计自动结算 ${formatRemainText(remain)}` +}) + const statusMap = { 1: '下单中', 7: '指定中', 2: '进行中', 8: '结算中', 3: '已完成', 4: '退款审核', 5: '已退款', 6: '退款失败' @@ -775,6 +799,15 @@ onMounted(() => { border-radius: 12px; overflow: hidden; } +.auto-settle-tip { + color: #c62828; + font-weight: 600; +} +.auto-settle-at { + color: #8d6e63; + margin-left: 6px; + font-size: 13px; +} .card-header { font-weight: 700; color: #1a2634; diff --git a/src/views/order/MerchantOrder.vue b/src/views/order/MerchantOrder.vue index e765708..b23c3d0 100644 --- a/src/views/order/MerchantOrder.vue +++ b/src/views/order/MerchantOrder.vue @@ -114,6 +114,14 @@ + + + + + +