|
|
@@ -3,14 +3,22 @@ import { ref } from 'vue';
|
|
|
import { useRoute } from 'vue-router';
|
|
|
// import { NFlex } from 'naive-ui';
|
|
|
import dayjs from 'dayjs';
|
|
|
+import duration from 'dayjs/plugin/duration';
|
|
|
import { fetchGetNomalOrderInfo } from '@/service/api/order-manage/normal-order';
|
|
|
// import { useAppStore } from '@/store/modules/app';
|
|
|
// import { copyTextToClipboard } from '@/utils/zt';
|
|
|
-import { orderColumns, orderStatus, orderStatusEnum, yppStatus, yppStatusEnum } from '../normal-order/normal-order';
|
|
|
+import {
|
|
|
+ chargeMethod,
|
|
|
+ orderColumns,
|
|
|
+ orderStatus,
|
|
|
+ orderStatusEnum,
|
|
|
+ yppStatus,
|
|
|
+ yppStatusEnum
|
|
|
+} from '../normal-order/normal-order';
|
|
|
const orderInfo = ref<Api.delivery.deliveryOrder>();
|
|
|
// const appStore = useAppStore();
|
|
|
const TimeDown = ref<number>(0);
|
|
|
-
|
|
|
+dayjs.extend(duration);
|
|
|
const route = useRoute();
|
|
|
async function open(orderNumber: string) {
|
|
|
const { data, error } = await fetchGetNomalOrderInfo(orderNumber);
|
|
|
@@ -59,6 +67,23 @@ defineExpose({ open });
|
|
|
// copyTextToClipboard(String(value));
|
|
|
// // copyTextToClipboard(String(orderInfo.value?.orderNumber));
|
|
|
// }
|
|
|
+function secondsToTime(seconds: number) {
|
|
|
+ // 创建 duration 对象
|
|
|
+ const time = dayjs.duration(seconds, 'seconds');
|
|
|
+
|
|
|
+ // 获取时分秒
|
|
|
+ const hours = Math.floor(seconds / 3600);
|
|
|
+ const minutes = time.minutes();
|
|
|
+ const secs = time.seconds();
|
|
|
+
|
|
|
+ // 格式化为两位数字符串
|
|
|
+ const formatTime = (num: number) => num.toString().padStart(2, '0');
|
|
|
+
|
|
|
+ if (hours > 0) {
|
|
|
+ return `${formatTime(hours)}:${formatTime(minutes)}:${formatTime(secs)}`;
|
|
|
+ }
|
|
|
+ return `00:${formatTime(minutes)}:${formatTime(secs)}`;
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
|
@@ -129,10 +154,10 @@ defineExpose({ open });
|
|
|
<div class="flex">
|
|
|
<div class="mb-10px text-16px font-semibold">
|
|
|
业务状态:
|
|
|
- <template v-if="orderInfo.businessType == 'XSB'">
|
|
|
+ <template v-if="orderInfo.businessType != 'DYY'">
|
|
|
{{ orderStatus[orderInfo.hbOrderStatus as keyof typeof orderStatus] }}
|
|
|
</template>
|
|
|
- <template v-if="orderInfo.businessType == 'DYY'">
|
|
|
+ <template v-else>
|
|
|
{{ yppStatus[orderInfo.yppDetail?.orderState as keyof typeof yppStatus] }}
|
|
|
</template>
|
|
|
</div>
|
|
|
@@ -233,14 +258,73 @@ defineExpose({ open });
|
|
|
"
|
|
|
>
|
|
|
<div class="pb-20px font-semibold">03 取票与退款信息</div>
|
|
|
- <div class="flex flex-wrap items-center">
|
|
|
- <div v-for="item in orderInfo.yppDetail?.seatList" :key="item" class="w30%">
|
|
|
- <div>座位:{{ item }}</div>
|
|
|
- <div>取票码:640085 | 661789</div>
|
|
|
+ <div v-if="yppStatusEnum.SUCCESS == orderInfo.yppDetail?.orderState" class="flex flex-wrap items-center">
|
|
|
+ <div>
|
|
|
+ <div>座位:{{ orderInfo.yppDetail?.seatNames }}</div>
|
|
|
+ <div>取票码:{{ orderInfo.yppDetail?.ticketCode || '--' }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <template v-if="yppStatusEnum.REFUND_FAIL == orderInfo.yppDetail?.orderState">
|
|
|
+ <div class="flex items-center">
|
|
|
+ <div>退款金额:</div>
|
|
|
+ <div>
|
|
|
+ <div>{{ orderInfo.yppDetail?.epRefundAmount }}</div>
|
|
|
+ <div class="text-gray">
|
|
|
+ 退还金额:{{ orderInfo.yppDetail?.epRefundAmount }}元 退还积分:{{
|
|
|
+ (Number(orderInfo.offsetPoints) / 100).toFixed(2)
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
</template>
|
|
|
</template>
|
|
|
+ <template v-if="orderInfo.businessType == 'CD'">
|
|
|
+ <div class="flex flex-wrap items-center">
|
|
|
+ <div class="mr10px flex-shrink-0">
|
|
|
+ <div>终端编号:{{ orderInfo.chargeOrder.connectorId || '--' }}</div>
|
|
|
+ <div>充电电站:{{ orderInfo.chargeOrder.powerStationName || '--' }}</div>
|
|
|
+ <div>充电开始时间:{{ orderInfo.chargeOrder.startTime || '--' }}</div>
|
|
|
+ <div>充电结束时间:{{ orderInfo.chargeOrder.endTime || '--' }}</div>
|
|
|
+ <div>充电时长:{{ secondsToTime(Number(orderInfo.chargeOrder.chargeTime)) || '--' }}</div>
|
|
|
+ <div>充电度数:{{ orderInfo.chargeOrder.totalCharge || '--' }}</div>
|
|
|
+ <div>
|
|
|
+ 终止方式:{{ chargeMethod[orderInfo.chargeOrder.stopMethod as keyof typeof chargeMethod] || '--' }}
|
|
|
+ </div>
|
|
|
+ <div>详细地址:{{ orderInfo.chargeOrder.powerStationName?.split('-')[0] || '--' }}</div>
|
|
|
+ </div>
|
|
|
+ <NTable v-if="orderInfo.hbOrderStatus == orderStatusEnum.ORDER_COMPLETE" :single-line="false">
|
|
|
+ <NThead>
|
|
|
+ <NTr>
|
|
|
+ <NTh>费用类型</NTh>
|
|
|
+ <NTh>金额/元</NTh>
|
|
|
+ </NTr>
|
|
|
+ </NThead>
|
|
|
+ <NTbody>
|
|
|
+ <NTr>
|
|
|
+ <NTd>电费</NTd>
|
|
|
+ <NTd>{{ orderInfo.chargeOrder.totalMoney }}</NTd>
|
|
|
+ </NTr>
|
|
|
+ <NTr>
|
|
|
+ <NTd>结算服务费</NTd>
|
|
|
+ <NTd>0</NTd>
|
|
|
+ </NTr>
|
|
|
+ <NTr>
|
|
|
+ <NTd>运营服务费</NTd>
|
|
|
+ <NTd>{{ orderInfo.chargeOrder.realServiceCost }}</NTd>
|
|
|
+ </NTr>
|
|
|
+ <NTr>
|
|
|
+ <NTd>订单金额</NTd>
|
|
|
+ <NTd>{{ orderInfo.actualTotal }}</NTd>
|
|
|
+ </NTr>
|
|
|
+ <NTr>
|
|
|
+ <NTd>积分抵扣</NTd>
|
|
|
+ <NTd>{{ orderInfo.actualTotal }}</NTd>
|
|
|
+ </NTr>
|
|
|
+ </NTbody>
|
|
|
+ </NTable>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
</NCard>
|
|
|
</div>
|
|
|
</div>
|