|
|
@@ -157,7 +157,8 @@
|
|
|
</view>
|
|
|
</view>
|
|
|
|
|
|
- <!-- 任务模块 -->
|
|
|
+ <!-- 任务模块:暂隐藏,后续再补 -->
|
|
|
+ <!--
|
|
|
<view class="module-com" v-if="!$util.isEmpty(orderInfo.workList)">
|
|
|
<view class="module-tit">任务</view>
|
|
|
<view class="module-det">
|
|
|
@@ -170,6 +171,7 @@
|
|
|
</block>
|
|
|
</view>
|
|
|
</view>
|
|
|
+ -->
|
|
|
|
|
|
<!-- 订单信息模块 -->
|
|
|
<view class="module-com order-msg">
|
|
|
@@ -181,39 +183,38 @@
|
|
|
</view>
|
|
|
<view class="module-det">
|
|
|
<view class="order-msg-blo">
|
|
|
- <!-- 累计退款:tkPrice + nextDayTkPrice,对齐 ghs;售后记录挂在本行 -->
|
|
|
+ <!-- 累计退款:金额与「售后记录」并排,避免按钮挡住金额 -->
|
|
|
<view
|
|
|
- class="msg-list rel"
|
|
|
+ class="msg-list msg-list--with-action"
|
|
|
v-if="orderInfo.refundLog == 1 || Number(orderInfo.nextDayTkPrice) > 0 || Number(orderInfo.tkPrice) > 0"
|
|
|
>
|
|
|
- <view class="label">累计退款:</view>
|
|
|
- <view class="value" style="color:red;font-weight:bold;">
|
|
|
- ¥{{ totalTkPrice }}
|
|
|
+ <view class="label">累计退款</view>
|
|
|
+ <view class="value-wrap">
|
|
|
+ <text class="value text-danger">¥{{ totalTkPrice }}</text>
|
|
|
+ <button
|
|
|
+ class="admin-button-com mini-btn refund-log-btn"
|
|
|
+ @click="pageTo({url: '/admin/order/refundList',query: {orderSn: orderInfo.orderSn}})"
|
|
|
+ >售后记录</button>
|
|
|
</view>
|
|
|
- <button
|
|
|
- class="admin-button-com mini-btn abs-tr"
|
|
|
- @click="pageTo({url: '/admin/order/refundList',query: {orderSn: orderInfo.orderSn}})"
|
|
|
- >售后记录</button>
|
|
|
</view>
|
|
|
|
|
|
<!-- 付款类型 -->
|
|
|
<view class="msg-list" v-if="orderInfo.payStatus == 1">
|
|
|
- <view class="label">付款类型:</view>
|
|
|
+ <view class="label">付款类型</view>
|
|
|
<view class="value" v-if="orderInfo.onlinePay == 2"><text class="tag tag--primary">线上付款</text></view>
|
|
|
<view class="value" v-else>线下付款</view>
|
|
|
</view>
|
|
|
|
|
|
<!-- 付款方式 -->
|
|
|
<view class="msg-list" v-if="orderInfo.payStatus == 1">
|
|
|
- <view class="label">付款方式:</view>
|
|
|
+ <view class="label">付款方式</view>
|
|
|
<block v-if="orderInfo.payWay==3">
|
|
|
<view
|
|
|
- class="value"
|
|
|
- v-if="Number(orderInfo.remainDebtPrice)>0"
|
|
|
- style="color:red;font-weight:bold;">
|
|
|
+ class="value text-danger"
|
|
|
+ v-if="Number(orderInfo.remainDebtPrice)>0">
|
|
|
挂账
|
|
|
</view>
|
|
|
- <view v-else class="value" style="color:#3385ff;font-weight:bold;">
|
|
|
+ <view v-else class="value text-primary" style="font-weight:bold;">
|
|
|
挂账<text>(已清)</text>
|
|
|
</view>
|
|
|
</block>
|
|
|
@@ -231,8 +232,8 @@
|
|
|
|
|
|
<!-- 红包信息 -->
|
|
|
<view class="msg-list" v-if="orderInfo.hbId && Number(orderInfo.hbId) != 0">
|
|
|
- <view class="label">红包:</view>
|
|
|
- <view class="value" style="color:red;">-¥{{ orderInfo.hbAmount ? parseFloat(orderInfo.hbAmount) : 0 }}</view>
|
|
|
+ <view class="label">红包</view>
|
|
|
+ <view class="value text-danger">-¥{{ orderInfo.hbAmount ? parseFloat(orderInfo.hbAmount) : 0 }}</view>
|
|
|
<button v-if="Number(orderInfo.hbId) > 0"
|
|
|
class="admin-button-com"
|
|
|
:class="canBackHb ? 'blue' : 'default'"
|
|
|
@@ -243,8 +244,8 @@
|
|
|
|
|
|
<!-- 欠款信息 -->
|
|
|
<view class="msg-list rel" v-if="Number(orderInfo.remainDebtPrice)>0">
|
|
|
- <view class="label">欠款金额:</view>
|
|
|
- <view class="value" style="color:red;font-weight:bold;">
|
|
|
+ <view class="label">欠款金额</view>
|
|
|
+ <view class="value text-danger">
|
|
|
¥{{ orderInfo.remainDebtPrice ? parseFloat(orderInfo.remainDebtPrice) : 0 }}
|
|
|
</view>
|
|
|
<button
|
|
|
@@ -255,7 +256,7 @@
|
|
|
|
|
|
<!-- 账单信息 -->
|
|
|
<view class="msg-list" v-if="!$util.isEmpty(orderInfo.orderSettleList)">
|
|
|
- <view class="label">账单信息:</view>
|
|
|
+ <view class="label">账单信息</view>
|
|
|
<view class="value">
|
|
|
<text
|
|
|
v-for="(osItem, osIndex) in orderInfo.orderSettleList"
|
|
|
@@ -267,59 +268,74 @@
|
|
|
|
|
|
<!-- 运费 -->
|
|
|
<view class="msg-list" v-if="Number(orderInfo.sendCost)>0">
|
|
|
- <view class="label">运费金额:</view>
|
|
|
+ <view class="label">运费金额</view>
|
|
|
<view class="value">¥{{ orderInfo.sendCost ? parseFloat(orderInfo.sendCost) : 0 }}</view>
|
|
|
</view>
|
|
|
|
|
|
<!-- 手续费 -->
|
|
|
<view class="msg-list" v-if="Number(orderInfo.serviceFee)>0">
|
|
|
- <view class="label">手续费用:</view>
|
|
|
+ <view class="label">手续费用</view>
|
|
|
<view class="value">¥{{ orderInfo.serviceFee ? parseFloat(orderInfo.serviceFee) : 0 }}</view>
|
|
|
</view>
|
|
|
|
|
|
<!-- 包装费(劳务) -->
|
|
|
<view class="msg-list" v-if="Number(orderInfo.labourCost)>0">
|
|
|
- <view class="label">材料费用:</view>
|
|
|
+ <view class="label">材料费用</view>
|
|
|
<view class="value">¥{{ orderInfo.labourCost ? parseFloat(orderInfo.labourCost) : 0 }}</view>
|
|
|
</view>
|
|
|
|
|
|
<!-- 包装费 -->
|
|
|
<view class="msg-list" v-if="Number(orderInfo.packingFee)>0">
|
|
|
- <view class="label">包装费用:</view>
|
|
|
+ <view class="label">包装费用</view>
|
|
|
<view class="value">¥{{ orderInfo.packingFee ? parseFloat(orderInfo.packingFee) : 0 }}</view>
|
|
|
</view>
|
|
|
|
|
|
<!-- 优惠金额 -->
|
|
|
<view v-if="orderInfo.discountAmount > 0" class="msg-list">
|
|
|
- <view class="label">优惠金额:</view>
|
|
|
- <view class="value">-¥{{ orderInfo.discountAmount ? parseFloat(orderInfo.discountAmount) : 0 }}</view>
|
|
|
+ <view class="label">优惠金额</view>
|
|
|
+ <view class="value text-danger">-¥{{ orderInfo.discountAmount ? parseFloat(orderInfo.discountAmount) : 0 }}</view>
|
|
|
</view>
|
|
|
|
|
|
- <!-- 应付金额 -->
|
|
|
- <view class="msg-list" v-if="Number(orderInfo.tkPrice)>0">
|
|
|
- <view class="label">订单金额:</view>
|
|
|
- <view class="value">¥{{ orderInfo.orderPrice ? parseFloat(orderInfo.orderPrice) : 0 }}</view>
|
|
|
- </view>
|
|
|
+ <!-- 金额汇总:订单 → 当天售后 → 实际 → 跨天售后 → 最终 -->
|
|
|
+ <view class="amount-panel">
|
|
|
+ <view class="msg-list">
|
|
|
+ <view class="label">订单金额</view>
|
|
|
+ <view class="value">¥{{ orderInfo.orderPrice ? parseFloat(orderInfo.orderPrice) : 0 }}</view>
|
|
|
+ </view>
|
|
|
|
|
|
- <!-- 当天售后(仅影响 actPrice 的当日部分;隔天在累计退款里) -->
|
|
|
- <view class="msg-list" v-if="Number(orderInfo.tkPrice)>0">
|
|
|
- <view class="label">当天售后:</view>
|
|
|
- <view class="value" style="color:red;">
|
|
|
- -¥{{ orderInfo.tkPrice ? parseFloat(orderInfo.tkPrice) : 0 }}
|
|
|
+ <!-- 当天售后仅影响 actPrice/realPrice 的当日部分 -->
|
|
|
+ <view class="msg-list" v-if="Number(orderInfo.tkPrice)>0">
|
|
|
+ <view class="label">当天售后</view>
|
|
|
+ <view class="value text-danger">
|
|
|
+ -¥{{ orderInfo.tkPrice ? parseFloat(orderInfo.tkPrice) : 0 }}
|
|
|
+ </view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
|
|
|
- <!-- 实际金额 -->
|
|
|
- <view class="msg-list">
|
|
|
- <view class="label">实际金额:</view>
|
|
|
- <view class="value">
|
|
|
- ¥{{ orderInfo.realPrice ? parseFloat(orderInfo.realPrice) : 0 }}
|
|
|
+ <view class="msg-list msg-list--emphasis">
|
|
|
+ <view class="label">实际金额</view>
|
|
|
+ <view class="value text-primary amount-strong">
|
|
|
+ ¥{{ orderInfo.realPrice ? parseFloat(orderInfo.realPrice) : 0 }}
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- 跨天售后不改 realPrice;最终金额 = 实际金额 - 跨天售后 -->
|
|
|
+ <view class="msg-list" v-if="Number(orderInfo.nextDayTkPrice) > 0">
|
|
|
+ <view class="label">跨天售后</view>
|
|
|
+ <view class="value text-danger">
|
|
|
+ -¥{{ nextDayTkPrice }}
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="msg-list msg-list--emphasis" v-if="Number(orderInfo.nextDayTkPrice) > 0">
|
|
|
+ <view class="label">最终金额</view>
|
|
|
+ <view class="value text-primary amount-strong">
|
|
|
+ ¥{{ finalPriceAfterNextDayRefund }}
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
|
|
|
<!-- 订单状态 -->
|
|
|
- <view class="msg-list">
|
|
|
- <view class="label">订单状态:</view>
|
|
|
+ <view class="msg-list msg-list--meta">
|
|
|
+ <view class="label">订单状态</view>
|
|
|
<view class="value">
|
|
|
{{orderInfo.status == 1 ? '待付款':
|
|
|
orderInfo.status == 2 ? '待发货':
|
|
|
@@ -329,25 +345,25 @@
|
|
|
</view>
|
|
|
</view>
|
|
|
|
|
|
- <view class="msg-list">
|
|
|
- <view class="label">订单编号:</view>
|
|
|
- <view class="value">{{ orderInfo.orderSn || '' }}</view>
|
|
|
+ <view class="msg-list msg-list--meta">
|
|
|
+ <view class="label">订单编号</view>
|
|
|
+ <view class="value value--mono">{{ orderInfo.orderSn || '' }}</view>
|
|
|
</view>
|
|
|
|
|
|
<!-- 下单时间 -->
|
|
|
- <view class="msg-list">
|
|
|
- <view class="label">创建订单:</view>
|
|
|
+ <view class="msg-list msg-list--meta">
|
|
|
+ <view class="label">创建订单</view>
|
|
|
<view class="value">{{ orderInfo.addTime ? orderInfo.addTime.substr(5,11) : ''}}</view>
|
|
|
</view>
|
|
|
|
|
|
- <view class="msg-list" v-if="orderInfo.payTime!='0000-00-00 00:00:00'">
|
|
|
- <view class="label">支付时间:</view>
|
|
|
+ <view class="msg-list msg-list--meta" v-if="orderInfo.payTime!='0000-00-00 00:00:00'">
|
|
|
+ <view class="label">支付时间</view>
|
|
|
<view class="value">{{ orderInfo.payTime ? orderInfo.payTime.substr(5,11) : ''}}</view>
|
|
|
</view>
|
|
|
|
|
|
<!-- 过期时间 -->
|
|
|
- <view class="msg-list" v-if="orderInfo.status == 1">
|
|
|
- <view class="label">过期时间:</view>
|
|
|
+ <view class="msg-list msg-list--meta" v-if="orderInfo.status == 1">
|
|
|
+ <view class="label">过期时间</view>
|
|
|
<view class="value">{{ orderInfo.deadline ? orderInfo.deadline : ''}}</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
@@ -493,6 +509,20 @@ export default {
|
|
|
const day = Number(this.orderInfo && this.orderInfo.tkPrice) || 0
|
|
|
const next = Number(this.orderInfo && this.orderInfo.nextDayTkPrice) || 0
|
|
|
return parseFloat((day + next).toFixed(2))
|
|
|
+ },
|
|
|
+ /** 跨天售后金额(不改 realPrice) */
|
|
|
+ nextDayTkPrice() {
|
|
|
+ return parseFloat((Number(this.orderInfo && this.orderInfo.nextDayTkPrice) || 0).toFixed(2))
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 最终金额:实际金额 realPrice - 跨天售后 nextDayTkPrice
|
|
|
+ * 跨天售后不改实付字段,用差值给店员看净额
|
|
|
+ */
|
|
|
+ finalPriceAfterNextDayRefund() {
|
|
|
+ const real = Number(this.orderInfo && this.orderInfo.realPrice) || 0
|
|
|
+ const next = Number(this.orderInfo && this.orderInfo.nextDayTkPrice) || 0
|
|
|
+ const final = real - next
|
|
|
+ return parseFloat((final > 0 ? final : 0).toFixed(2))
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
@@ -886,27 +916,105 @@ export default {
|
|
|
.order-msg {
|
|
|
.order-msg-blo {
|
|
|
font-size: 28upx;
|
|
|
- padding: 20upx 0;
|
|
|
+ padding: 12upx 0 8upx;
|
|
|
border-top: 1px solid $borderColor;
|
|
|
|
|
|
.msg-list {
|
|
|
display: flex;
|
|
|
+ align-items: flex-start;
|
|
|
justify-content: flex-start;
|
|
|
- margin: 16upx 0;
|
|
|
+ margin: 0;
|
|
|
+ padding: 18upx 8upx;
|
|
|
+ border-bottom: 1upx solid #f5f6f8;
|
|
|
+
|
|
|
+ &:last-child {
|
|
|
+ border-bottom: none;
|
|
|
+ }
|
|
|
|
|
|
.label {
|
|
|
- color: #999999;
|
|
|
+ color: #8a8f99;
|
|
|
width: 160upx;
|
|
|
flex-shrink: 0;
|
|
|
- text-align: right;
|
|
|
- padding-right: 12upx;
|
|
|
+ text-align: left;
|
|
|
+ padding-right: 16upx;
|
|
|
+ line-height: 1.5;
|
|
|
}
|
|
|
.value {
|
|
|
flex: 1;
|
|
|
- line-height: 1.6;
|
|
|
+ color: #333;
|
|
|
+ line-height: 1.5;
|
|
|
word-break: break-all;
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+ .value--mono {
|
|
|
+ font-size: 26upx;
|
|
|
+ color: #666;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .msg-list--with-action {
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ .value-wrap {
|
|
|
+ flex: 1;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: flex-end;
|
|
|
+ }
|
|
|
+
|
|
|
+ .value {
|
|
|
+ flex: none;
|
|
|
+ margin-right: 16upx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .refund-log-btn {
|
|
|
+ flex-shrink: 0;
|
|
|
+ margin: 0;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ .msg-list--emphasis {
|
|
|
+ background: rgba(51, 133, 255, 0.04);
|
|
|
+ border-radius: 10upx;
|
|
|
+ border-bottom: none;
|
|
|
+ margin: 8upx 0;
|
|
|
+ padding: 20upx 16upx;
|
|
|
+
|
|
|
+ .label {
|
|
|
+ color: #333;
|
|
|
+ font-weight: 600;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .msg-list--meta {
|
|
|
+ .label,
|
|
|
+ .value {
|
|
|
+ color: #999;
|
|
|
+ font-size: 26upx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .amount-panel {
|
|
|
+ margin: 12upx 0 8upx;
|
|
|
+ padding: 8upx 4upx 4upx;
|
|
|
+ background: #fafbfd;
|
|
|
+ border-radius: 14upx;
|
|
|
+ border: 1upx solid #eef1f6;
|
|
|
+ }
|
|
|
+
|
|
|
+ .text-danger {
|
|
|
+ color: #ff4757;
|
|
|
+ font-weight: 600;
|
|
|
+ }
|
|
|
+
|
|
|
+ .text-primary {
|
|
|
+ color: #3385ff;
|
|
|
+ }
|
|
|
+
|
|
|
+ .amount-strong {
|
|
|
+ font-size: 34upx;
|
|
|
+ font-weight: 700;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
& .order-msg-blo:first-child {
|
|
|
@@ -941,17 +1049,18 @@ export default {
|
|
|
}
|
|
|
|
|
|
.module-com {
|
|
|
- border-radius: 10upx;
|
|
|
+ border-radius: 16upx;
|
|
|
background-color: #fff;
|
|
|
- padding: 0 20upx;
|
|
|
- box-shadow: 0upx 6upx 16upx #ddd;
|
|
|
+ padding: 0 24upx;
|
|
|
+ box-shadow: 0 4upx 20upx rgba(0, 0, 0, 0.06);
|
|
|
margin-bottom: 20upx;
|
|
|
|
|
|
.module-tit {
|
|
|
- padding: 20upx 0;
|
|
|
- font-size: 28upx;
|
|
|
+ padding: 28upx 0 22upx;
|
|
|
+ font-size: 30upx;
|
|
|
font-weight: 600;
|
|
|
- border-bottom: 1px solid $borderColor;
|
|
|
+ color: #222;
|
|
|
+ border-bottom: 1upx solid #f0f2f5;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: space-between;
|
|
|
@@ -959,13 +1068,15 @@ export default {
|
|
|
.module-tit__text {
|
|
|
display: inline-flex;
|
|
|
align-items: center;
|
|
|
- gap: 10upx;
|
|
|
}
|
|
|
|
|
|
.module-tit__actions {
|
|
|
display: inline-flex;
|
|
|
align-items: center;
|
|
|
- gap: 16upx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .module-tit__actions .admin-button-com {
|
|
|
+ margin-left: 16upx;
|
|
|
}
|
|
|
}
|
|
|
}
|