This commit is contained in:
2026-09-24 10:11:16 +08:00
parent 671351fa7c
commit aa189146a0
5 changed files with 29 additions and 7 deletions
@@ -8,6 +8,7 @@ import DataTable, { type DataTableColumn } from '@/components/common/DataTable.v
import type { TableAction } from '@/components/common/tableActions'
import { useAuthStore } from '@/modules/auth/public'
import { getMerchantWarehouses, type MerchantWarehouse } from '@/modules/first-leg/public'
import { createIdempotencyKey } from '@/utils/idempotencyKey'
import { createReturnOrder, downloadReturnPhoto, getReturnOrder, listReturnOrders, updateReturnOrder, type ReturnOrderDetail, type ReturnOrderSummary, type ReturnReceipt } from '../api/returnOrders'
const props = withDefaults(defineProps<{ createPage?: boolean; detailPage?: boolean; returnNo?: string }>(), { createPage: false, detailPage: false, returnNo: '' })
@@ -185,7 +186,7 @@ async function submit() {
if (duplicateSkuIds.value.size) { ElMessage.warning('同一退货单不能重复填写相同 SKU'); return }
creating.value = true
try {
const payload = { overseasWarehouseId: form.overseasWarehouseId, warehouseContactName: form.warehouseContactName.trim(), warehouseContactPhone: form.warehouseContactPhone.trim(), customerReferenceNo: form.customerReferenceNo || undefined, remark: form.remark || undefined, needRelabel: form.needRelabel, idempotencyKey: crypto.randomUUID(), items: items.map(item => ({ ...item, productNameZh: item.productNameZh || undefined })) }
const payload = { overseasWarehouseId: form.overseasWarehouseId, warehouseContactName: form.warehouseContactName.trim(), warehouseContactPhone: form.warehouseContactPhone.trim(), customerReferenceNo: form.customerReferenceNo || undefined, remark: form.remark || undefined, needRelabel: form.needRelabel, idempotencyKey: createIdempotencyKey(), items: items.map(item => ({ ...item, productNameZh: item.productNameZh || undefined })) }
const detail = editingReturnNo.value ? await updateReturnOrder(editingReturnNo.value, payload) : await createReturnOrder(payload)
ElMessage.success(editingReturnNo.value ? '退货预报已更新' : '退货预报已创建'); showCreate.value = false; editingReturnNo.value = ''; resetForm(); await router.push({ name: 'overseas-return-relabel-detail', params: { returnNo: detail.order.returnNo } })
} finally { creating.value = false }
@@ -25,6 +25,7 @@ import {
type MerchantWarehouseDetail,
} from '@/modules/first-leg/api/firstLeg'
import { loadAllWarehouseRecords } from '@/modules/first-leg/utils/warehousePagination'
import { createIdempotencyKey } from '@/utils/idempotencyKey'
import { createReturnRelabel, uploadReturnRelabelFile } from '../api/returnOrders'
type ServiceType = 'labeling' | 'transfer' | 'disposal' | 'relabel'
@@ -914,7 +915,7 @@ async function submitReturnRelabel() {
destinationFbaWarehouseId: String(destination.id),
destinationFbaWarehouseCode: destination.warehouseCode,
cartonRemark: form.remark.trim() || undefined,
idempotencyKey: crypto.randomUUID(),
idempotencyKey: createIdempotencyKey(),
})
await uploadReturnRelabelFile(created.relabelNo, fileScope, selectedFile)
ElMessage.success(`贴标申请 ${created.relabelNo} 已提交,等待审核`)
@@ -1002,7 +1003,7 @@ async function submit(action: 'draft' | 'submit' = 'submit') {
}
saving.value = true
try {
const idempotencyKey = crypto.randomUUID()
const idempotencyKey = createIdempotencyKey()
if (props.service === 'labeling') {
const sourceInboundOrders = [...new Set(cargoRows.value.map((item) => item.sourceInboundOrderNo || item.sourceInboundCode).filter((value): value is string => Boolean(value)))].join('、').slice(0, 128)
const items = labelingMode.value === 'carton'
@@ -1260,7 +1261,7 @@ async function resubmitRejectedRelabel() {
selectedRelabelDetail.value = await resubmitRelabel(application.relabelNo, {
labelDeadline: application.labelDeadline || '', contactName: application.contactName || '',
contactPhone: application.contactPhone || '', remark: value?.trim() || undefined,
idempotencyKey: crypto.randomUUID(),
idempotencyKey: createIdempotencyKey(),
})
ElMessage.success('贴标单已重新提交审核')
} catch (error) {