优化
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { ApiError, apiRequest } from '@/api/http'
|
||||
import type { ApiFirstLegStatus, MerchantFirstLegOrderDetail, PageResult } from '@/modules/first-leg/api/firstLeg'
|
||||
import type { ApiContainerMode, ApiDestinationType, ApiFirstLegStatus, ApiPickupMethod, MerchantFirstLegOrderDetail, PageResult } from '@/modules/first-leg/api/firstLeg'
|
||||
|
||||
export type ApiUnifiedOrderMainStatus =
|
||||
| 'PENDING_REVIEW'
|
||||
@@ -42,7 +42,6 @@ export interface MerchantUnifiedDeliverySummary {
|
||||
}
|
||||
|
||||
export interface MerchantUnifiedTransportSummary {
|
||||
loadingStatus: string | null
|
||||
containerNo: string | null
|
||||
cabinetNo: string | null
|
||||
vesselName: string | null
|
||||
@@ -72,15 +71,20 @@ export interface MerchantUnifiedOrderRow {
|
||||
totalPackageCount: number | null
|
||||
actualGrossWeightKg: number | null
|
||||
actualVolumeCbm: number | null
|
||||
skuNos?: string[] | null
|
||||
expressCompany?: string | null
|
||||
totalNetWeightKg?: number | null
|
||||
totalQuantity?: number | null
|
||||
chargeableVolumeCbm?: number | null
|
||||
shipmentId?: string | null
|
||||
referenceId?: string | null
|
||||
inboundedAt?: string | null
|
||||
businessDate?: string | null
|
||||
pickupMethod: ApiPickupMethod | null
|
||||
requestedPickupAt: string | null
|
||||
containerMode: ApiContainerMode | null
|
||||
destinationType: ApiDestinationType | null
|
||||
destinationCode: string | null
|
||||
skuNos: string[] | null
|
||||
expressCompany: string | null
|
||||
expressTrackingNo: string | null
|
||||
totalNetWeightKg: number | null
|
||||
totalQuantity: number | null
|
||||
chargeableVolumeCbm: number | null
|
||||
shipmentId: string | null
|
||||
referenceId: string | null
|
||||
inboundCompletedAt: string | null
|
||||
measurement: MerchantUnifiedMeasurementSummary | null
|
||||
preload: MerchantUnifiedPreloadSummary | null
|
||||
loading: MerchantUnifiedLoadingSummary | null
|
||||
|
||||
@@ -135,6 +135,7 @@ export interface FirstLegOrder {
|
||||
destinationWarehouseId: string
|
||||
destinationWarehouseName: string
|
||||
pickupMethod: 'SELF_EXPRESS' | 'PICKUP' | 'SELF_TRUCK'
|
||||
requestedPickupAt: string
|
||||
channelCode: string
|
||||
channelName: string
|
||||
pricingTaxMode: 'TAX_INCLUDED' | 'TAX_EXCLUDED'
|
||||
|
||||
@@ -137,11 +137,11 @@ test('downloads selected carton labels with one array request', () => {
|
||||
test('exports every visible order field with normalized dates', () => {
|
||||
assert.match(source, /function formatExportDateTime\(value: string \| null \| undefined\)/)
|
||||
assert.match(source, /return `\$\{date\.getFullYear\(\)\}-\$\{pad\(date\.getMonth\(\) \+ 1\)\}-\$\{pad\(date\.getDate\(\)\)\} \$\{pad\(date\.getHours\(\)\)\}:\$\{pad\(date\.getMinutes\(\)\)\}:\$\{pad\(date\.getSeconds\(\)\)\}`/)
|
||||
for (const label of ['订单号', '入仓码', '渠道', '目的仓', '当前订单状态', '箱数', '快递公司', '快递单号', 'SKUS', '总毛重', '总净重', '总体积', '总数量', '计费单价', '计费体积', '计费重量', '备注', '货件编号', '跟踪编号', '国内仓入库时间', '业务日期', '创建时间']) {
|
||||
for (const label of ['订单号', '入仓码', '渠道', '目的仓', '当前订单状态', '箱数', '快递公司', '快递单号', 'SKUS', '总毛重', '总净重', '总体积', '总数量', '计费单价', '计费体积', '计费重量', '备注', '货件编号', '跟踪编号', '国内仓入库时间', '创建时间']) {
|
||||
assert.match(source, new RegExp(`'${label}'`))
|
||||
}
|
||||
assert.match(source, /formatExportDateTime\(order\.inboundedAt\)/)
|
||||
assert.match(source, /formatExportDateTime\(order\.businessDate\)/)
|
||||
assert.doesNotMatch(source, /formatExportDateTime\(order\.businessDate\)/)
|
||||
assert.match(source, /formatExportDateTime\(order\.createdAt\)/)
|
||||
})
|
||||
|
||||
@@ -156,7 +156,7 @@ test('matches the prototype with selectable dense order-list columns', () => {
|
||||
assert.match(source, />恢复默认<\/el-button>/)
|
||||
assert.match(source, /const visibleOrderColumns = computed/)
|
||||
assert.match(source, /:columns="visibleOrderColumns"/)
|
||||
for (const label of ['入仓码', '渠道', '目的仓', '当前订单状态', '箱数', '快递公司', '快递单号', 'SKUS', '总毛重', '总净重', '总体积', '总数量', '计费单价', '计费体积', '计费重量', '备注', '货件编号', '跟踪编号', '国内仓入库时间', '业务日期']) {
|
||||
for (const label of ['入仓码', '渠道', '目的仓', '当前订单状态', '箱数', '快递公司', '快递单号', 'SKUS', '总毛重', '总净重', '总体积', '总数量', '计费单价', '计费体积', '计费重量', '备注', '货件编号', '跟踪编号', '国内仓入库时间']) {
|
||||
assert.match(source, new RegExp(`label: '${label}'`))
|
||||
}
|
||||
assert.match(source, /order\.businessSummary\.totalPackageCount/)
|
||||
@@ -166,8 +166,8 @@ test('matches the prototype with selectable dense order-list columns', () => {
|
||||
assert.match(source, /<template #billingUnitPrice>-<\/template>/)
|
||||
assert.match(source, /<template #chargeableVolume>-<\/template>/)
|
||||
assert.match(source, /inboundedAt/)
|
||||
assert.match(source, /businessDate/)
|
||||
assert.match(source, /<template #businessDate>-<\/template>/)
|
||||
assert.doesNotMatch(source, /label: '业务日期'/)
|
||||
assert.doesNotMatch(source, /<template #businessDate>/)
|
||||
assert.match(source, /<template #createdAt="\{ row \}">\{\{ formatDateTime\(\(row as FirstLegOrder\)\.createdAt\) \}\}<\/template>/)
|
||||
assert.match(source, /order\.skuNos\.length/)
|
||||
assert.doesNotMatch(source, /pagedOrders[\s\S]{0,100}loadDetail/)
|
||||
|
||||
@@ -112,7 +112,6 @@ const selectableOrderColumns: DataTableColumn[] = [
|
||||
{ key: 'shipmentId', label: '货件编号', width: 150, align: 'left', headerAlign: 'left', showOverflowTooltip: true, slotName: 'shipmentId' },
|
||||
{ key: 'referenceId', label: '跟踪编号', width: 150, align: 'left', headerAlign: 'left', showOverflowTooltip: true, slotName: 'referenceId' },
|
||||
{ key: 'receivingTime', label: '国内仓入库时间', width: 164, align: 'center', headerAlign: 'center', slotName: 'receivingTime' },
|
||||
{ key: 'businessDate', label: '业务日期', width: 148, align: 'center', headerAlign: 'center', slotName: 'businessDate' },
|
||||
{ key: 'expectedShipDate', label: '期望出运', width: 132, align: 'center', headerAlign: 'center', slotName: 'expectedShipDate' },
|
||||
{ key: 'cabinetNo', label: '柜号 / 柜次', width: 150, align: 'left', headerAlign: 'left', showOverflowTooltip: true, slotName: 'cabinetNo' },
|
||||
{ key: 'vesselVoyage', label: '船名 / 航次', width: 160, align: 'left', headerAlign: 'left', showOverflowTooltip: true, slotName: 'vesselVoyage' },
|
||||
@@ -1259,13 +1258,12 @@ function exportOrderInformation() {
|
||||
displayListValue(order.shipmentId || uniqueItemValues(order, 'shipmentId')),
|
||||
displayListValue(order.referenceNo || uniqueItemValues(order, 'referenceId')),
|
||||
formatExportDateTime(order.inboundedAt),
|
||||
formatExportDateTime(order.businessDate),
|
||||
formatExportDateTime(order.createdAt),
|
||||
])
|
||||
downloadCsv('订单信息.csv', [[
|
||||
'订单号', '入仓码', '渠道', '目的仓', '当前订单状态', '箱数', '快递公司', '快递单号', 'SKUS',
|
||||
'总毛重', '总净重', '总体积', '总数量', '计费单价', '计费体积', '计费重量', '备注',
|
||||
'货件编号', '跟踪编号', '国内仓入库时间', '业务日期', '创建时间',
|
||||
'货件编号', '跟踪编号', '国内仓入库时间', '创建时间',
|
||||
], ...rows])
|
||||
ElMessage.success(`已导出 ${rows.length} 条订单信息`)
|
||||
} finally {
|
||||
@@ -1567,7 +1565,6 @@ async function searchOrders(model: QueryModel) {
|
||||
<template #shipmentId="{ row }"><span class="table-ellipsis table-code" :title="displayListValue((row as FirstLegOrder).shipmentId || uniqueItemValues(row as FirstLegOrder, 'shipmentId'))">{{ displayListValue((row as FirstLegOrder).shipmentId || uniqueItemValues(row as FirstLegOrder, 'shipmentId')) }}</span></template>
|
||||
<template #referenceId="{ row }"><span class="table-ellipsis table-code" :title="displayListValue((row as FirstLegOrder).referenceNo || uniqueItemValues(row as FirstLegOrder, 'referenceId'))">{{ displayListValue((row as FirstLegOrder).referenceNo || uniqueItemValues(row as FirstLegOrder, 'referenceId')) }}</span></template>
|
||||
<template #receivingTime="{ row }">{{ (row as FirstLegOrder).inboundedAt ? formatDateTime((row as FirstLegOrder).inboundedAt) : '-' }}</template>
|
||||
<template #businessDate>-</template>
|
||||
<template #expectedShipDate="{ row }">{{ (row as FirstLegOrder).expectedDepartureDate ? formatDateTime((row as FirstLegOrder).expectedDepartureDate) : '-' }}</template>
|
||||
<template #cabinetNo="{ row }"><span class="table-ellipsis table-code" :title="displayListValue((row as FirstLegOrder).businessSummary.cabinetNo || (row as FirstLegOrder).businessSummary.containerNo)">{{ displayListValue((row as FirstLegOrder).businessSummary.cabinetNo || (row as FirstLegOrder).businessSummary.containerNo) }}</span></template>
|
||||
<template #vesselVoyage="{ row }"><span class="table-ellipsis" :title="displayListValue([(row as FirstLegOrder).businessSummary.vesselName, (row as FirstLegOrder).businessSummary.voyageNo].filter(Boolean).join(' · '))">{{ displayListValue([(row as FirstLegOrder).businessSummary.vesselName, (row as FirstLegOrder).businessSummary.voyageNo].filter(Boolean).join(' · ')) }}</span></template>
|
||||
|
||||
Reference in New Issue
Block a user