|
@@ -1,18 +1,28 @@
|
|
|
-<script setup lang="ts">
|
|
|
|
|
-import { ref } from 'vue';
|
|
|
|
|
-import { useRoute } from 'vue-router';
|
|
|
|
|
|
|
+<script setup lang="tsx">
|
|
|
|
|
+import { onMounted, ref } from 'vue';
|
|
|
|
|
+import { useRoute, useRouter } from 'vue-router';
|
|
|
// import { NFlex } from 'naive-ui';
|
|
// import { NFlex } from 'naive-ui';
|
|
|
|
|
+import { NDataTable } from 'naive-ui';
|
|
|
import dayjs from 'dayjs';
|
|
import dayjs from 'dayjs';
|
|
|
import duration from 'dayjs/plugin/duration';
|
|
import duration from 'dayjs/plugin/duration';
|
|
|
-import { fetchGetNomalOrderInfo } from '@/service/api/order-manage/normal-order';
|
|
|
|
|
|
|
+import {
|
|
|
|
|
+ fetchDeliveryNode,
|
|
|
|
|
+ fetchDeliveryOrder,
|
|
|
|
|
+ fetchExpressDeliveryList,
|
|
|
|
|
+ fetchGetNomalOrderInfo
|
|
|
|
|
+} from '@/service/api/order-manage/normal-order';
|
|
|
|
|
+import { useModalFrom } from '@/components/zt/ModalForm/hooks/useModalForm';
|
|
|
// import { useAppStore } from '@/store/modules/app';
|
|
// import { useAppStore } from '@/store/modules/app';
|
|
|
// import { copyTextToClipboard } from '@/utils/zt';
|
|
// import { copyTextToClipboard } from '@/utils/zt';
|
|
|
import {
|
|
import {
|
|
|
businessType,
|
|
businessType,
|
|
|
|
|
+ cancelState,
|
|
|
chargeMethod,
|
|
chargeMethod,
|
|
|
|
|
+ dvyStatus,
|
|
|
orderColumns,
|
|
orderColumns,
|
|
|
orderDJKColumns,
|
|
orderDJKColumns,
|
|
|
orderDJKLogColumns,
|
|
orderDJKLogColumns,
|
|
|
|
|
+ orderShipColumns,
|
|
|
orderStatus,
|
|
orderStatus,
|
|
|
orderStatusEnum,
|
|
orderStatusEnum,
|
|
|
payType,
|
|
payType,
|
|
@@ -24,22 +34,143 @@ const orderInfo = ref<Api.delivery.deliveryOrder>();
|
|
|
const TimeDown = ref<number>(0);
|
|
const TimeDown = ref<number>(0);
|
|
|
dayjs.extend(duration);
|
|
dayjs.extend(duration);
|
|
|
const route = useRoute();
|
|
const route = useRoute();
|
|
|
|
|
+const router = useRouter();
|
|
|
|
|
+const deliveryNode = ref<any[]>([]);
|
|
|
|
|
+const [
|
|
|
|
|
+ registerModalForm,
|
|
|
|
|
+ {
|
|
|
|
|
+ openModal: openModalForm,
|
|
|
|
|
+ setFieldsValue: setModalFormValue,
|
|
|
|
|
+ getFieldsValue: getModalFormValue,
|
|
|
|
|
+ closeModal: closeModalForm,
|
|
|
|
|
+ setSubLoading
|
|
|
|
|
+ }
|
|
|
|
|
+] = useModalFrom({
|
|
|
|
|
+ modalConfig: {
|
|
|
|
|
+ title: '订单发货',
|
|
|
|
|
+ isShowHeaderText: false,
|
|
|
|
|
+ width: 1000,
|
|
|
|
|
+ height: 700
|
|
|
|
|
+ },
|
|
|
|
|
+ formConfig: {
|
|
|
|
|
+ schemas: [
|
|
|
|
|
+ {
|
|
|
|
|
+ field: 'orderNumber',
|
|
|
|
|
+ label: '',
|
|
|
|
|
+ component: 'NInput',
|
|
|
|
|
+ render: () => {
|
|
|
|
|
+ return (
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <div class="py-20px font-semibold">商品信息</div>
|
|
|
|
|
+ <NDataTable columns={orderShipColumns} data={orderInfo.value?.orderItemList} bordered={false} />
|
|
|
|
|
+
|
|
|
|
|
+ <div class="py-20px font-semibold">订单信息</div>
|
|
|
|
|
+ <div>配送方式:{dvyStatus[orderInfo.value?.dvyType as keyof typeof dvyStatus]}</div>
|
|
|
|
|
+ <div>收货人姓名:{orderInfo.value?.consigneeName}</div>
|
|
|
|
|
+ <div>收货人手机号:{orderInfo.value?.consigneeMobile}</div>
|
|
|
|
|
+ <div>收货地址:{orderInfo.value?.consigneeAddress}</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ field: 'orderNumber',
|
|
|
|
|
+ label: '单号',
|
|
|
|
|
+ component: 'NInput',
|
|
|
|
|
+ show: false
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ {
|
|
|
|
|
+ field: 'deliveryType',
|
|
|
|
|
+ component: 'NRadioGroup',
|
|
|
|
|
+ label: '发货方式',
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ defaultValue: 1,
|
|
|
|
|
+ componentProps: {
|
|
|
|
|
+ options: [
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '快递',
|
|
|
|
|
+ value: 0
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '其他',
|
|
|
|
|
+ value: 1
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label: '快递公司',
|
|
|
|
|
+ field: 'dvyId',
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ component: 'ApiSelect',
|
|
|
|
|
+ componentProps: {
|
|
|
|
|
+ api: fetchExpressDeliveryList,
|
|
|
|
|
+ labelFeild: 'name',
|
|
|
|
|
+ valueFeild: 'id'
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ ifShow({ model }) {
|
|
|
|
|
+ return model.deliveryType === 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ field: 'dvyFlowId',
|
|
|
|
|
+ label: '快递单号',
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ component: 'NInput',
|
|
|
|
|
+
|
|
|
|
|
+ ifShow({ model }) {
|
|
|
|
|
+ return model.deliveryType === 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ field: 'remark',
|
|
|
|
|
+ label: '备注',
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ component: 'NInput',
|
|
|
|
|
+ ifShow({ model }) {
|
|
|
|
|
+ return model.deliveryType === 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
|
|
+ labelWidth: 80,
|
|
|
|
|
+ layout: 'horizontal',
|
|
|
|
|
+ gridProps: {
|
|
|
|
|
+ cols: '1',
|
|
|
|
|
+ itemResponsive: true
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
async function open(orderNumber: string) {
|
|
async function open(orderNumber: string) {
|
|
|
const { data, error } = await fetchGetNomalOrderInfo(orderNumber);
|
|
const { data, error } = await fetchGetNomalOrderInfo(orderNumber);
|
|
|
if (!error) {
|
|
if (!error) {
|
|
|
orderInfo.value = data;
|
|
orderInfo.value = data;
|
|
|
- if (orderInfo.value.hbLogisticStatus == orderStatusEnum.WAIT_PAY) {
|
|
|
|
|
|
|
+ if (orderInfo.value.hbOrderStatus == orderStatusEnum.WAIT_PAY) {
|
|
|
const createTime = dayjs(orderInfo.value.createTime);
|
|
const createTime = dayjs(orderInfo.value.createTime);
|
|
|
const currentTime = dayjs();
|
|
const currentTime = dayjs();
|
|
|
const elapsed = currentTime.diff(createTime);
|
|
const elapsed = currentTime.diff(createTime);
|
|
|
const fifteenMinutesInMillis = 15 * 60 * 1000;
|
|
const fifteenMinutesInMillis = 15 * 60 * 1000;
|
|
|
TimeDown.value = fifteenMinutesInMillis - elapsed;
|
|
TimeDown.value = fifteenMinutesInMillis - elapsed;
|
|
|
|
|
+ } else if (
|
|
|
|
|
+ orderInfo.value.hbOrderStatus !== orderStatusEnum.ORDER_DELIVERY &&
|
|
|
|
|
+ orderInfo.value.businessType == 'XSB'
|
|
|
|
|
+ ) {
|
|
|
|
|
+ getDeliveryNode();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
console.log(route.query.orderNumber);
|
|
console.log(route.query.orderNumber);
|
|
|
|
|
+async function getDeliveryNode() {
|
|
|
|
|
+ const { data, error } = await fetchDeliveryNode({ orderNumber: String(route.query.orderNumber) });
|
|
|
|
|
+
|
|
|
|
|
+ if (!error) {
|
|
|
|
|
+ deliveryNode.value = data;
|
|
|
|
|
+ console.log(data, '节点信息');
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
-open(String(route.query.orderNumber));
|
|
|
|
|
defineExpose({ open });
|
|
defineExpose({ open });
|
|
|
|
|
|
|
|
// const isRefund = computed(() => {
|
|
// const isRefund = computed(() => {
|
|
@@ -89,6 +220,95 @@ function secondsToTime(seconds: number) {
|
|
|
return `00:${formatTime(minutes)}:${formatTime(secs)}`;
|
|
return `00:${formatTime(minutes)}:${formatTime(secs)}`;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+function handleShip() {
|
|
|
|
|
+ openModalForm();
|
|
|
|
|
+ setModalFormValue({
|
|
|
|
|
+ orderNumber: orderInfo.value?.orderNumber,
|
|
|
|
|
+ dvyId: orderInfo.value?.dvyId,
|
|
|
|
|
+ dvyFlowId: orderInfo.value?.dvyFlowId,
|
|
|
|
|
+ deliveryType: orderInfo.value?.deliveryType || 0,
|
|
|
|
|
+ remark: orderInfo.value?.dvyName
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+async function handleSubmit() {
|
|
|
|
|
+ const form = await getModalFormValue();
|
|
|
|
|
+ if (form.deliveryType == 0) {
|
|
|
|
|
+ delete form.remark;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ delete form.dvyId;
|
|
|
|
|
+ delete form.dvyFlowId;
|
|
|
|
|
+ }
|
|
|
|
|
+ console.log(form, '表单');
|
|
|
|
|
+ const { error } = await fetchDeliveryOrder(form);
|
|
|
|
|
+ if (!error) {
|
|
|
|
|
+ window.$message?.success('保存成功');
|
|
|
|
|
+ }
|
|
|
|
|
+ setSubLoading(false);
|
|
|
|
|
+ closeModalForm();
|
|
|
|
|
+ open(String(route.query.orderNumber));
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function handleFinish() {
|
|
|
|
|
+ open(String(orderInfo.value?.orderNumber));
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function filterStatus(val: number) {
|
|
|
|
|
+ if (val == 0) {
|
|
|
|
|
+ return '待支付';
|
|
|
|
|
+ } else if (val == 70 || val == 80 || val == 61) {
|
|
|
|
|
+ return '已完成';
|
|
|
|
|
+ } else if (val == 60 || val == 62) {
|
|
|
|
|
+ return '已取消';
|
|
|
|
|
+ }
|
|
|
|
|
+ return '进行中';
|
|
|
|
|
+}
|
|
|
|
|
+// 证件类型,0 身份证 1 学生证 2 军官证 3 护照 4 户口本(儿童请选择此项) 5 港澳通行证 6 台湾居民来往大陆通行证 7 台湾通行证 8 入台证 9 香港居民往来内地通行证 10 警官证 11 驾驶证 12 海员证 13 外国人在中国永久居留证 14澳门居民往来内地通行证 15港澳居民来往内地通行证 16港澳台居民来往内地通行证 17港澳台居民居住证 18中华人民共和国旅行证 19回乡证 20台胞证 21香港身份证
|
|
|
|
|
+function filterType(val: number) {
|
|
|
|
|
+ const typeObj = {
|
|
|
|
|
+ 0: '身份证',
|
|
|
|
|
+ 1: '学生证',
|
|
|
|
|
+ 2: '军官证',
|
|
|
|
|
+ 3: '护照',
|
|
|
|
|
+ 4: '户口本',
|
|
|
|
|
+ 5: '港澳通行证',
|
|
|
|
|
+ 6: '台湾居民来往大陆通行证',
|
|
|
|
|
+ 7: '台湾通行证',
|
|
|
|
|
+ 8: '入台证',
|
|
|
|
|
+ 9: '港澳居民往来内地通行证',
|
|
|
|
|
+ 10: '警官证',
|
|
|
|
|
+ 11: '驾驶证',
|
|
|
|
|
+ 12: '海员证',
|
|
|
|
|
+ 13: '外国人在中国永久居留证',
|
|
|
|
|
+ 14: '澳门居民往来内地通行证',
|
|
|
|
|
+ 15: '港澳居民来往内地通行证',
|
|
|
|
|
+ 16: '港澳台居民来往内地通行证',
|
|
|
|
|
+ 17: '港澳台居民居住证',
|
|
|
|
|
+ 18: '中华人民共和国旅行证',
|
|
|
|
|
+ 19: '回乡证',
|
|
|
|
|
+ 20: '台胞证',
|
|
|
|
|
+ 21: '香港身份证'
|
|
|
|
|
+ };
|
|
|
|
|
+ return typeObj[val as keyof typeof typeObj];
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function handleSaleOrder(row: Api.delivery.deliveryOrder) {
|
|
|
|
|
+ if (!row.orderNumber) {
|
|
|
|
|
+ window.$message?.error('订单异常');
|
|
|
|
|
+ }
|
|
|
|
|
+ router.push({
|
|
|
|
|
+ path: '/order-manage/after-sales-order',
|
|
|
|
|
+ query: {
|
|
|
|
|
+ orderNumber: orderInfo.value?.orderNumber
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+onMounted(async () => {
|
|
|
|
|
+ await open(String(route.query.orderNumber));
|
|
|
|
|
+ if (route.query.type == 'ship') {
|
|
|
|
|
+ handleShip();
|
|
|
|
|
+ }
|
|
|
|
|
+});
|
|
|
function getRefundRecordText() {
|
|
function getRefundRecordText() {
|
|
|
const info = orderInfo.value as any;
|
|
const info = orderInfo.value as any;
|
|
|
if (!info) return '暂无';
|
|
if (!info) return '暂无';
|
|
@@ -107,7 +327,7 @@ function getRefundRecordText() {
|
|
|
<div class="mb-10px text-16px font-semibold">
|
|
<div class="mb-10px text-16px font-semibold">
|
|
|
统一状态:
|
|
统一状态:
|
|
|
<template v-if="orderInfo.businessType != 'DYY'">
|
|
<template v-if="orderInfo.businessType != 'DYY'">
|
|
|
- {{ orderStatus[orderInfo.hbOrderStatus as keyof typeof orderStatus] }}
|
|
|
|
|
|
|
+ {{ filterStatus(orderInfo.hbOrderStatus) }}
|
|
|
</template>
|
|
</template>
|
|
|
<template v-else>
|
|
<template v-else>
|
|
|
{{ yppStatus[orderInfo.yppDetail?.orderState as keyof typeof yppStatus] }}
|
|
{{ yppStatus[orderInfo.yppDetail?.orderState as keyof typeof yppStatus] }}
|
|
@@ -122,12 +342,12 @@ function getRefundRecordText() {
|
|
|
订单状态:
|
|
订单状态:
|
|
|
<template v-if="orderInfo.businessType != 'DYY'">
|
|
<template v-if="orderInfo.businessType != 'DYY'">
|
|
|
{{
|
|
{{
|
|
|
- orderInfo.hbOrderStatus == 20 ||
|
|
|
|
|
- orderInfo.hbOrderStatus == 30 ||
|
|
|
|
|
- orderInfo.hbOrderStatus == 40 ||
|
|
|
|
|
- orderInfo.hbOrderStatus == 70
|
|
|
|
|
- ? '进行中'
|
|
|
|
|
- : orderStatus[orderInfo.hbOrderStatus as keyof typeof orderStatus]
|
|
|
|
|
|
|
+ orderInfo.hbOrderStatus == 20 ||
|
|
|
|
|
+ orderInfo.hbOrderStatus == 30 ||
|
|
|
|
|
+ orderInfo.hbOrderStatus == 40 ||
|
|
|
|
|
+ orderInfo.hbOrderStatus == 1
|
|
|
|
|
+ ? '进行中'
|
|
|
|
|
+ : orderStatus[orderInfo.hbOrderStatus as keyof typeof orderStatus]
|
|
|
}}
|
|
}}
|
|
|
</template>
|
|
</template>
|
|
|
<template v-else>
|
|
<template v-else>
|
|
@@ -152,7 +372,9 @@ function getRefundRecordText() {
|
|
|
</NCard>
|
|
</NCard>
|
|
|
<NCard size="small" class="mt-20px" title="支付信息" :bordered="false">
|
|
<NCard size="small" class="mt-20px" title="支付信息" :bordered="false">
|
|
|
<div>支付状态:{{ orderInfo.isPayed ? '已支付' : '未支付' }}</div>
|
|
<div>支付状态:{{ orderInfo.isPayed ? '已支付' : '未支付' }}</div>
|
|
|
- <div>支付金额:{{ orderInfo.actualTotal }}元</div>
|
|
|
|
|
|
|
+ <div v-if="orderInfo.businessType == 'JY'">支付金额:{{ orderInfo.omsOrderOilVO?.realMoney || '---' }}元</div>
|
|
|
|
|
+
|
|
|
|
|
+ <div v-else>支付金额:{{ orderInfo.actualTotal }}元</div>
|
|
|
<div>
|
|
<div>
|
|
|
付款方式:{{
|
|
付款方式:{{
|
|
|
orderInfo.hbOrderStatus == orderStatusEnum.WAIT_PAY ||
|
|
orderInfo.hbOrderStatus == orderStatusEnum.WAIT_PAY ||
|
|
@@ -163,21 +385,63 @@ function getRefundRecordText() {
|
|
|
</div>
|
|
</div>
|
|
|
<div>支付时间:{{ orderInfo.payTime || '暂无' }}</div>
|
|
<div>支付时间:{{ orderInfo.payTime || '暂无' }}</div>
|
|
|
<div>交易号:{{ orderInfo.outTradeNo || '---' }}</div>
|
|
<div>交易号:{{ orderInfo.outTradeNo || '---' }}</div>
|
|
|
- <div>退款记录:{{ getRefundRecordText() }}</div>
|
|
|
|
|
|
|
+ <!--
|
|
|
|
|
+ <div>
|
|
|
|
|
+ 退款记录:{{ orderInfo.refundOrderList ? orderInfo.refundOrderList.length : '暂无' }}
|
|
|
|
|
+ <NButton
|
|
|
|
|
+ v-if="orderInfo.refundOrderList && orderInfo.refundOrderList.length > 0"
|
|
|
|
|
+ size="small"
|
|
|
|
|
+ quaternary
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ @click="handleSaleOrder(orderInfo)"
|
|
|
|
|
+ >
|
|
|
|
|
+ 查看
|
|
|
|
|
+ </NButton>
|
|
|
|
|
+ </div>
|
|
|
|
|
+-->
|
|
|
|
|
+ <div>
|
|
|
|
|
+ 退款记录:{{ getRefundRecordText() }}
|
|
|
|
|
+ <NButton
|
|
|
|
|
+ v-if="orderInfo.refundOrderList && orderInfo.refundOrderList.length > 0"
|
|
|
|
|
+ size="small"
|
|
|
|
|
+ quaternary
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ @click="handleSaleOrder(orderInfo)"
|
|
|
|
|
+ >
|
|
|
|
|
+ 查看
|
|
|
|
|
+ </NButton>
|
|
|
|
|
+ </div>
|
|
|
</NCard>
|
|
</NCard>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="flex-1">
|
|
<div class="flex-1">
|
|
|
- <div class="flex">
|
|
|
|
|
- <div class="mb-10px text-16px font-semibold">
|
|
|
|
|
- 业务状态:
|
|
|
|
|
- <template v-if="orderInfo.businessType != 'DYY'">
|
|
|
|
|
- {{ orderStatus[orderInfo.hbOrderStatus as keyof typeof orderStatus] }}
|
|
|
|
|
- </template>
|
|
|
|
|
- <template v-else>
|
|
|
|
|
- {{ yppStatus[orderInfo.yppDetail?.orderState as keyof typeof yppStatus] }}
|
|
|
|
|
- </template>
|
|
|
|
|
|
|
+ <div class="flex justify-between">
|
|
|
|
|
+ <div class="flex">
|
|
|
|
|
+ <div class="mb-10px text-16px font-semibold">
|
|
|
|
|
+ 业务状态:
|
|
|
|
|
+ <template v-if="orderInfo.businessType != 'DYY'">
|
|
|
|
|
+ {{ orderStatus[orderInfo.hbOrderStatus as keyof typeof orderStatus] }}
|
|
|
|
|
+ {{ orderInfo.deliveryType && orderInfo.deliveryType == 1 ? '(已发货 其他方式)' : '' }}
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <template v-else>
|
|
|
|
|
+ {{ yppStatus[orderInfo.yppDetail?.orderState as keyof typeof yppStatus] }}
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div v-if="orderInfo.hbOrderStatus == orderStatusEnum.WAIT_PAY" class="text-gray">
|
|
|
|
|
+ 如买家未在
|
|
|
|
|
+ <NTag :type="TimeDown > 300094 ? 'success' : 'error'">
|
|
|
|
|
+ <NCountdown :duration="TimeDown" @finish="handleFinish" />
|
|
|
|
|
+ </NTag>
|
|
|
|
|
+ 内付款,订单将 自动关闭。
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div v-else class="mb-10px ml-20px text-16px font-semibold">
|
|
|
|
|
+ 第三方订单编号:{{ orderInfo.thirdOrderId }}
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="mb-10px ml-20px text-16px font-semibold">第三方订单编号:{{ orderInfo.thirdOrderId }}</div>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <!-- v-if="orderInfo.dvyType === 10 && orderInfo.hbOrderStatus === 40" -->
|
|
|
|
|
+ <NButton size="small" type="primary" @click="handleShip">
|
|
|
|
|
+ {{ orderInfo.dvyNo ? '修改发货信息' : '发货' }}
|
|
|
|
|
+ </NButton>
|
|
|
</div>
|
|
</div>
|
|
|
<NCard size="small" title="业务信息" :bordered="false">
|
|
<NCard size="small" title="业务信息" :bordered="false">
|
|
|
<template v-if="orderInfo.businessType == 'XSB'">
|
|
<template v-if="orderInfo.businessType == 'XSB'">
|
|
@@ -223,6 +487,20 @@ function getRefundRecordText() {
|
|
|
</NTr>
|
|
</NTr>
|
|
|
</NTbody>
|
|
</NTbody>
|
|
|
</NTable>
|
|
</NTable>
|
|
|
|
|
+
|
|
|
|
|
+ <template v-if="orderInfo.dvyType == 3 && orderInfo.hbOrderStatus != orderStatusEnum.WAIT_PAY">
|
|
|
|
|
+ <div class="py-20px font-semibold">03 订单追踪</div>
|
|
|
|
|
+ <div v-if="orderInfo.deliveryType == 1">信息记录:{{ orderInfo.dvyName || '暂无' }}</div>
|
|
|
|
|
+ <NTimeline v-else>
|
|
|
|
|
+ <NTimelineItem
|
|
|
|
|
+ v-for="(item, index) in deliveryNode"
|
|
|
|
|
+ :key="item.id"
|
|
|
|
|
+ :type="index == 0 ? 'success' : undefined"
|
|
|
|
|
+ :content="item.content"
|
|
|
|
|
+ :time="item.updateTime"
|
|
|
|
|
+ />
|
|
|
|
|
+ </NTimeline>
|
|
|
|
|
+ </template>
|
|
|
</template>
|
|
</template>
|
|
|
<template v-else-if="orderInfo.businessType == 'DYY'">
|
|
<template v-else-if="orderInfo.businessType == 'DYY'">
|
|
|
<div class="pb-20px font-semibold">01 影片与场次信息</div>
|
|
<div class="pb-20px font-semibold">01 影片与场次信息</div>
|
|
@@ -296,6 +574,7 @@ function getRefundRecordText() {
|
|
|
<template v-else-if="orderInfo.businessType == 'CD'">
|
|
<template v-else-if="orderInfo.businessType == 'CD'">
|
|
|
<div class="flex flex-wrap items-center">
|
|
<div class="flex flex-wrap items-center">
|
|
|
<div class="mr10px flex-shrink-0">
|
|
<div class="mr10px flex-shrink-0">
|
|
|
|
|
+ <div>车牌号:{{ orderInfo.chargeOrder.plateNum || '--' }}</div>
|
|
|
<div>终端编号:{{ orderInfo.chargeOrder.connectorId || '--' }}</div>
|
|
<div>终端编号:{{ orderInfo.chargeOrder.connectorId || '--' }}</div>
|
|
|
<div>充电电站:{{ orderInfo.chargeOrder.powerStationName || '--' }}</div>
|
|
<div>充电电站:{{ orderInfo.chargeOrder.powerStationName || '--' }}</div>
|
|
|
<div>充电开始时间:{{ orderInfo.chargeOrder.startTime || '--' }}</div>
|
|
<div>充电开始时间:{{ orderInfo.chargeOrder.startTime || '--' }}</div>
|
|
@@ -333,8 +612,18 @@ function getRefundRecordText() {
|
|
|
</NTr>
|
|
</NTr>
|
|
|
<NTr>
|
|
<NTr>
|
|
|
<NTd>积分抵扣</NTd>
|
|
<NTd>积分抵扣</NTd>
|
|
|
- <NTd>{{ orderInfo.actualTotal }}</NTd>
|
|
|
|
|
- <!-- <NTd>{{ orderInfo.actualTotal - orderInfo.platformVolume }}</NTd> -->
|
|
|
|
|
|
|
+ <!-- <NTd>{{ orderInfo.actualTotal }}</NTd> -->
|
|
|
|
|
+ <NTd>
|
|
|
|
|
+ -{{
|
|
|
|
|
+ (
|
|
|
|
|
+ Number(orderInfo?.actualTotal || 0) - Number(orderInfo?.chargeOrder?.platformVolume || 0)
|
|
|
|
|
+ ).toFixed(2)
|
|
|
|
|
+ }}
|
|
|
|
|
+ </NTd>
|
|
|
|
|
+ </NTr>
|
|
|
|
|
+ <NTr>
|
|
|
|
|
+ <NTd>平台券</NTd>
|
|
|
|
|
+ <NTd>-{{ Number(orderInfo?.chargeOrder?.platformVolume || 0) }}</NTd>
|
|
|
</NTr>
|
|
</NTr>
|
|
|
</NTbody>
|
|
</NTbody>
|
|
|
</NTable>
|
|
</NTable>
|
|
@@ -431,20 +720,106 @@ function getRefundRecordText() {
|
|
|
<div>加油量:{{ orderInfo.omsOrderOilVO?.quantity + 'L' || '---' }}</div>
|
|
<div>加油量:{{ orderInfo.omsOrderOilVO?.quantity + 'L' || '---' }}</div>
|
|
|
|
|
|
|
|
<div class="mt-20px pb-20px font-semibold">04 加油明细</div>
|
|
<div class="mt-20px pb-20px font-semibold">04 加油明细</div>
|
|
|
- <div>门店价:{{ orderInfo.omsOrderOilVO?.storePrice || '---' }}</div>
|
|
|
|
|
- <div>平台价:{{ orderInfo.omsOrderOilVO?.vipPrice || '---' }}</div>
|
|
|
|
|
- <div>订单金额:{{ orderInfo.omsOrderOilVO?.totalMoney || '---' }}</div>
|
|
|
|
|
- <div>抵扣金额:{{ orderInfo.omsOrderOilVO?.promotionAmount || '---' }}</div>
|
|
|
|
|
- <div>服务费:{{ orderInfo.omsOrderOilVO?.serviceFee || '---' }}</div>
|
|
|
|
|
- <div>实付金额:{{ orderInfo.omsOrderOilVO?.realMoney || '---' }}</div>
|
|
|
|
|
|
|
+ <div>门店价:¥{{ orderInfo.omsOrderOilVO?.storePrice || '---' }}/L</div>
|
|
|
|
|
+ <div>平台价:¥{{ orderInfo.omsOrderOilVO?.vipPrice || '---' }}/L</div>
|
|
|
|
|
+ <div>订单金额:¥{{ orderInfo.omsOrderOilVO?.totalMoney || '---' }}</div>
|
|
|
|
|
+ <div>抵扣金额:-¥{{ orderInfo.omsOrderOilVO?.promotionAmount || '---' }}</div>
|
|
|
|
|
+ <div>服务费:+¥{{ orderInfo.omsOrderOilVO?.serviceFee || '---' }}</div>
|
|
|
|
|
+ <div>实付金额:¥{{ orderInfo.omsOrderOilVO?.realMoney || '---' }}</div>
|
|
|
|
|
|
|
|
<div class="mt-20px pb-20px font-semibold">05 抵扣信息</div>
|
|
<div class="mt-20px pb-20px font-semibold">05 抵扣信息</div>
|
|
|
<div>抵扣券ID:{{ orderInfo.omsOrderOilVO?.allowanceId || '---' }}</div>
|
|
<div>抵扣券ID:{{ orderInfo.omsOrderOilVO?.allowanceId || '---' }}</div>
|
|
|
<div>优惠描述:{{ orderInfo.omsOrderOilVO?.activityName || '---' }}</div>
|
|
<div>优惠描述:{{ orderInfo.omsOrderOilVO?.activityName || '---' }}</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
+ <template v-else-if="orderInfo.businessType == 'JDMP'">
|
|
|
|
|
+ <div>产品编号:{{ orderInfo.backendOrderScenic.productNo || '---' }}</div>
|
|
|
|
|
+ <div>产品名称:{{ orderInfo.backendOrderScenic.productName || '---' }}</div>
|
|
|
|
|
+ <div>景区名称:{{ orderInfo.backendOrderScenic.viewName || '---' }}</div>
|
|
|
|
|
+ <div>
|
|
|
|
|
+ 游玩日期:{{ orderInfo.backendOrderScenic.travelDate || '---' }}
|
|
|
|
|
+ {{ orderInfo.backendOrderScenic.endTravelDate ? '-' + orderInfo.backendOrderScenic.endTravelDate : '' }}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div>备注:{{ orderInfo.backendOrderScenic.orderMemo || '---' }}</div>
|
|
|
|
|
+
|
|
|
|
|
+ <div>联系人:{{ orderInfo.backendOrderScenic.linkMan || '---' }}</div>
|
|
|
|
|
+ <div>联系电话:{{ orderInfo.backendOrderScenic.linkPhone || '---' }}</div>
|
|
|
|
|
+
|
|
|
|
|
+ <div
|
|
|
|
|
+ v-for="(item, index) in orderInfo.backendOrderScenic.omsOrderScenicPeopleList"
|
|
|
|
|
+ :key="index"
|
|
|
|
|
+ class="mt-10px border rounded-4px p-8px"
|
|
|
|
|
+ >
|
|
|
|
|
+ <div>游客姓名{{ index + 1 }}:{{ item.linkMan || '---' }}</div>
|
|
|
|
|
+ <div>证据类型:{{ filterType(item.linkCreditType) || '---' }}</div>
|
|
|
|
|
+ <div>证件号码:{{ item.linkCreditNo || '---' }}</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <NTable class="mt-20px" :single-line="false">
|
|
|
|
|
+ <NThead>
|
|
|
|
|
+ <NTr>
|
|
|
|
|
+ <NTh>产品</NTh>
|
|
|
|
|
+ <NTh>数量</NTh>
|
|
|
|
|
+ <NTh>金额/元</NTh>
|
|
|
|
|
+ </NTr>
|
|
|
|
|
+ </NThead>
|
|
|
|
|
+ <NTbody>
|
|
|
|
|
+ <NTr>
|
|
|
|
|
+ <NTd>{{ orderInfo.backendOrderScenic.productName || '---' }}</NTd>
|
|
|
|
|
+ <NTd>x{{ orderInfo.backendOrderScenic.num }}</NTd>
|
|
|
|
|
+ <NTd>{{ orderInfo.total }}</NTd>
|
|
|
|
|
+ </NTr>
|
|
|
|
|
+ </NTbody>
|
|
|
|
|
+ </NTable>
|
|
|
|
|
+
|
|
|
|
|
+ <NTable class="mt-20px" :single-line="false">
|
|
|
|
|
+ <NThead>
|
|
|
|
|
+ <NTr>
|
|
|
|
|
+ <NTh>订单金额</NTh>
|
|
|
|
|
+ <NTh>{{ orderInfo.backendOrderScenic.orderMoney }}</NTh>
|
|
|
|
|
+ </NTr>
|
|
|
|
|
+ </NThead>
|
|
|
|
|
+ <NTbody>
|
|
|
|
|
+ <NTr>
|
|
|
|
|
+ <NTd>积分抵扣</NTd>
|
|
|
|
|
+ <NTd>-{{ (Number(orderInfo.backendOrderScenic.offsetPoints) / 100).toFixed(2) || 0 }}</NTd>
|
|
|
|
|
+ </NTr>
|
|
|
|
|
+ <NTr>
|
|
|
|
|
+ <NTd>微信支付</NTd>
|
|
|
|
|
+ <NTd>{{ orderInfo.backendOrderScenic.actualTotal || 0 }}</NTd>
|
|
|
|
|
+ </NTr>
|
|
|
|
|
+ </NTbody>
|
|
|
|
|
+ </NTable>
|
|
|
|
|
+
|
|
|
|
|
+ <NTable v-if="orderInfo.backendOrderScenic.refundCreateTime" class="mt-20px" :single-line="false">
|
|
|
|
|
+ <NThead>
|
|
|
|
|
+ <NTr>
|
|
|
|
|
+ <NTh>退款信息</NTh>
|
|
|
|
|
+ <NTh></NTh>
|
|
|
|
|
+ </NTr>
|
|
|
|
|
+ </NThead>
|
|
|
|
|
+ <NTbody>
|
|
|
|
|
+ <NTr>
|
|
|
|
|
+ <NTd>申请时间</NTd>
|
|
|
|
|
+ <NTd>{{ orderInfo.backendOrderScenic.refundCreateTime || '---' }}</NTd>
|
|
|
|
|
+ </NTr>
|
|
|
|
|
+ <NTr>
|
|
|
|
|
+ <NTd>申请说明</NTd>
|
|
|
|
|
+ <NTd>{{ orderInfo.backendOrderScenic.cancelMemo || '---' }}</NTd>
|
|
|
|
|
+ </NTr>
|
|
|
|
|
+ <NTr>
|
|
|
|
|
+ <NTd>处理状态</NTd>
|
|
|
|
|
+ <NTd>
|
|
|
|
|
+ {{ cancelState[orderInfo.backendOrderScenic.cancelState as keyof typeof cancelState] || '---' }}
|
|
|
|
|
+ </NTd>
|
|
|
|
|
+ </NTr>
|
|
|
|
|
+ </NTbody>
|
|
|
|
|
+ </NTable>
|
|
|
|
|
+ </template>
|
|
|
</NCard>
|
|
</NCard>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+
|
|
|
|
|
+ <BasicModelForm @register-modal-form="registerModalForm" @submit-form="handleSubmit"></BasicModelForm>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|