修改同步落库
This commit is contained in:
@@ -31,7 +31,6 @@
|
||||
已扫描 {{ progress.scanned || 0 }}
|
||||
/ 本地已有 {{ progress.matched || 0 }}
|
||||
/ 本地缺失 {{ progress.missing || 0 }}
|
||||
/ 状态不一致 {{ progress.statusMismatch || 0 }}
|
||||
</div>
|
||||
<div v-if="progress.message" class="msg-line">{{ progress.message }}</div>
|
||||
<div v-if="progress.error" class="err-line">{{ progress.error }}</div>
|
||||
@@ -41,34 +40,7 @@
|
||||
type="info"
|
||||
:closable="false"
|
||||
show-icon
|
||||
title="比对转单号 + 订单状态:1) 上游有转单号、本地没有;2) 两端都有但 order_status 不一致。异步分页扫描,结果已写入操作记录。"
|
||||
/>
|
||||
|
||||
<div class="json-panel__head">
|
||||
<span>状态不一致(样本 {{ statusMismatchCount }})</span>
|
||||
<el-button
|
||||
type="primary"
|
||||
link
|
||||
:disabled="!canFillMismatch"
|
||||
@click="fillMismatchToSearch"
|
||||
>回填到单号搜索</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
v-if="statusMismatchRows.length"
|
||||
:data="statusMismatchRows"
|
||||
border
|
||||
size="small"
|
||||
max-height="320"
|
||||
class="mb12"
|
||||
>
|
||||
<el-table-column type="index" width="55" label="#" />
|
||||
<el-table-column prop="transferNo" label="转单号" min-width="180" show-overflow-tooltip />
|
||||
<el-table-column prop="upstreamStatusLabel" label="上游状态" width="110" />
|
||||
<el-table-column prop="localStatusLabel" label="本地状态" width="110" />
|
||||
</el-table>
|
||||
<el-empty
|
||||
v-else-if="!running"
|
||||
description="暂无状态不一致"
|
||||
title="仅比对转单号是否已落库:上游有、本地在当前「订单状态」筛选范围内没有。不再比对状态一致性。"
|
||||
/>
|
||||
|
||||
<div class="json-panel__head">
|
||||
@@ -159,65 +131,6 @@ const progressStatus = computed(() => {
|
||||
return undefined
|
||||
})
|
||||
|
||||
const orderStatusMap = {
|
||||
'0': '待提货',
|
||||
'1': '已提货',
|
||||
'2': '已收货',
|
||||
'3': '运输中',
|
||||
'4': '派送中',
|
||||
'5': '已签收',
|
||||
'6': '已完成',
|
||||
'7': '已取消',
|
||||
'8': '异常',
|
||||
'9': '退件中',
|
||||
'10': '已退件'
|
||||
}
|
||||
|
||||
function labelStatus(v) {
|
||||
const k = v == null ? '' : String(v).trim()
|
||||
if (!k) return '-'
|
||||
return orderStatusMap[k] || k
|
||||
}
|
||||
|
||||
function normalizeMismatchList(raw) {
|
||||
if (!Array.isArray(raw)) return []
|
||||
return raw.map(row => {
|
||||
if (row == null) return null
|
||||
if (typeof row === 'string') {
|
||||
return { transferNo: row, upstreamStatus: null, localStatus: null }
|
||||
}
|
||||
return {
|
||||
transferNo: row.transferNo || row.transfer_no || '',
|
||||
upstreamStatus: row.upstreamStatus ?? row.upstream_status ?? null,
|
||||
localStatus: row.localStatus ?? row.local_status ?? null
|
||||
}
|
||||
}).filter(Boolean)
|
||||
}
|
||||
|
||||
const statusMismatchRows = computed(() => {
|
||||
const samples = normalizeMismatchList(progress.value?.statusMismatchSamples)
|
||||
if (samples.length) {
|
||||
return samples.map(row => ({
|
||||
transferNo: row.transferNo,
|
||||
upstreamStatusLabel: labelStatus(row.upstreamStatus),
|
||||
localStatusLabel: labelStatus(row.localStatus)
|
||||
}))
|
||||
}
|
||||
// fallback: flat transfer_no list when map samples missing
|
||||
const flat = progress.value?.statusMismatchTransferNos || []
|
||||
return (Array.isArray(flat) ? flat : []).map(tn => ({
|
||||
transferNo: tn,
|
||||
upstreamStatusLabel: '-',
|
||||
localStatusLabel: '-'
|
||||
}))
|
||||
})
|
||||
|
||||
const statusMismatchCount = computed(() => {
|
||||
const n = Number(progress.value?.statusMismatch)
|
||||
if (!Number.isNaN(n) && n > 0) return n
|
||||
return statusMismatchRows.value.length
|
||||
})
|
||||
|
||||
const missingRows = computed(() => {
|
||||
const list = progress.value?.missingTransferNos || []
|
||||
return (Array.isArray(list) ? list : []).map(tn => ({ transferNo: tn }))
|
||||
@@ -233,9 +146,6 @@ const canFillSearch = computed(() => {
|
||||
return !running.value && missingRows.value.length > 0
|
||||
})
|
||||
|
||||
const canFillMismatch = computed(() => {
|
||||
return !running.value && statusMismatchRows.value.length > 0
|
||||
})
|
||||
|
||||
function fillToSearch() {
|
||||
const list = missingRows.value.map(r => String(r.transferNo || '').trim()).filter(Boolean)
|
||||
@@ -248,17 +158,6 @@ function fillToSearch() {
|
||||
visible.value = false
|
||||
}
|
||||
|
||||
function fillMismatchToSearch() {
|
||||
const list = statusMismatchRows.value.map(r => String(r.transferNo || '').trim()).filter(Boolean)
|
||||
if (!list.length) {
|
||||
ElMessage.warning('暂无可回填的状态不一致转单号')
|
||||
return
|
||||
}
|
||||
const truncated = !!(progress.value?.statusMismatchTruncated)
|
||||
|| (Number(progress.value?.statusMismatch || 0) > list.length)
|
||||
emit('fill-search', { transferNos: list, truncated })
|
||||
visible.value = false
|
||||
}
|
||||
|
||||
function clearTimer() {
|
||||
if (timer) {
|
||||
@@ -291,7 +190,7 @@ function open(q) {
|
||||
ElMessage.error('启动比对任务失败')
|
||||
return
|
||||
}
|
||||
progress.value = { status: 'PENDING', percent: 0, message: 'queued', scanned: 0, matched: 0, missing: 0, statusMismatch: 0 }
|
||||
progress.value = { status: 'PENDING', percent: 0, message: 'queued', scanned: 0, matched: 0, missing: 0 }
|
||||
poll()
|
||||
timer = setInterval(poll, 1500)
|
||||
}).catch(() => {
|
||||
|
||||
@@ -421,7 +421,7 @@ function openOrderCompare() {
|
||||
return
|
||||
}
|
||||
proxy.$modal.confirm(
|
||||
'将按当前客户与提货时间,异步分页比对上游转单号与订单状态(缺失转单号 + 状态不一致),确认继续?',
|
||||
'将按当前客户、提货时间与订单状态筛选,异步分页比对上游转单号是否已落库,确认继续?',
|
||||
'二次确认'
|
||||
).then(() => {
|
||||
// 比对只按客户+时间;不带单号框内容(回填后可能有数千转单号,带上会把比对拖死)
|
||||
|
||||
Reference in New Issue
Block a user