import { defaultResponseAdapter } from '../../utils/table/tableUtils.js'
|
|
const ABNORMAL_PAGE_TITLE = '异常管理'
|
|
const ABNORMAL_CARD_DEFINITIONS = [
|
{
|
key: 'checkDiff',
|
title: '盘点差异',
|
route: '/manager/checkDiff',
|
icon: 'ri:file-warning-line',
|
iconBoxClass: 'bg-[rgba(245,108,108,0.12)]',
|
iconClass: 'text-[var(--el-color-danger)]',
|
emptyHint: '暂无差异单'
|
},
|
{
|
key: 'qlyInspect',
|
title: '质检记录',
|
route: '/manager/qlyInspect',
|
icon: 'ri:shield-check-line',
|
iconBoxClass: 'bg-[rgba(64,158,255,0.12)]',
|
iconClass: 'text-[var(--el-color-primary)]',
|
emptyHint: '暂无质检记录'
|
},
|
{
|
key: 'freeze',
|
title: '冻结库存',
|
route: '/manager/freeze',
|
icon: 'ri:snowy-line',
|
iconBoxClass: 'bg-[rgba(103,194,58,0.12)]',
|
iconClass: 'text-[var(--el-color-success)]',
|
emptyHint: '暂无冻结库存'
|
},
|
{
|
key: 'locRevise',
|
title: '库位调整',
|
route: '/manager/locRevise',
|
icon: 'ri:drag-move-2-line',
|
iconBoxClass: 'bg-[rgba(230,162,60,0.12)]',
|
iconClass: 'text-[var(--el-color-warning)]',
|
emptyHint: '暂无库位调整'
|
}
|
]
|
|
function normalizeSummaryResponse(response) {
|
const normalized = defaultResponseAdapter(response)
|
return {
|
total: Number(normalized.total || 0),
|
records: Array.isArray(normalized.records) ? normalized.records : []
|
}
|
}
|
|
function createAbnormalOverviewState() {
|
return Object.fromEntries(
|
ABNORMAL_CARD_DEFINITIONS.map((item) => [
|
item.key,
|
{
|
total: 0,
|
records: []
|
}
|
])
|
)
|
}
|
|
function resolveCheckDiffActivity(record) {
|
return {
|
key: `checkDiff-${record.id || record.orderCode || record.updateTime || ''}`,
|
route: '/manager/checkDiff',
|
source: '盘点差异',
|
title: record.orderCode || '未命名差异单',
|
summary: `${record.exceStatus$ || '--'} · ${record.areaName || '未分配库区'}`,
|
time: record.updateTime$ || record.createTime$ || '--',
|
sortTime: record.updateTime || record.createTime || ''
|
}
|
}
|
|
function resolveQlyInspectActivity(record) {
|
return {
|
key: `qlyInspect-${record.id || record.code || record.updateTime || ''}`,
|
route: '/manager/qlyInspect',
|
source: '质检记录',
|
title: record.code || '未命名质检单',
|
summary: `${record.isptStatus$ || '--'} · ${record.asnCode || '未关联通知单'}`,
|
time: record.updateTime$ || record.createTime$ || '--',
|
sortTime: record.updateTime || record.createTime || ''
|
}
|
}
|
|
function resolveFreezeActivity(record) {
|
return {
|
key: `freeze-${record.id || record.locCode || record.updateTime || ''}`,
|
route: '/manager/freeze',
|
source: '冻结库存',
|
title: record.locCode || '未命名库位',
|
summary: `${record.maktx || '--'} · 停滞 ${record.deadTime || 0} 天`,
|
time: record.updateTime$ || record.createTime$ || '--',
|
sortTime: record.updateTime || record.createTime || ''
|
}
|
}
|
|
function resolveLocReviseActivity(record) {
|
return {
|
key: `locRevise-${record.id || record.code || record.updateTime || ''}`,
|
route: '/manager/locRevise',
|
source: '库位调整',
|
title: record.code || '未命名调整单',
|
summary: `${record.exceStatus$ || '--'} · ${record.areaName || '未分配库区'}`,
|
time: record.updateTime$ || record.createTime$ || '--',
|
sortTime: record.updateTime || record.createTime || ''
|
}
|
}
|
|
function buildAbnormalOverviewCards(overviewState) {
|
return ABNORMAL_CARD_DEFINITIONS.map((item) => {
|
const state = overviewState[item.key] || { total: 0, records: [] }
|
const latestRecord = Array.isArray(state.records) ? state.records[0] : null
|
return {
|
...item,
|
total: Number(state.total || 0),
|
subtitle: latestRecord?.updateTime$ || latestRecord?.createTime$ || item.emptyHint,
|
badgeText: latestRecord ? '最近更新' : '当前状态'
|
}
|
})
|
}
|
|
function buildAbnormalEntryItems(overviewState) {
|
return ABNORMAL_CARD_DEFINITIONS.map((item) => {
|
const state = overviewState[item.key] || { total: 0, records: [] }
|
const latestRecord = Array.isArray(state.records) ? state.records[0] : null
|
return {
|
key: item.key,
|
title: item.title,
|
route: item.route,
|
icon: item.icon,
|
count: Number(state.total || 0),
|
description:
|
latestRecord?.orderCode ||
|
latestRecord?.code ||
|
latestRecord?.locCode ||
|
latestRecord?.maktx ||
|
item.emptyHint
|
}
|
})
|
}
|
|
function buildAbnormalActivityItems(overviewState) {
|
const activities = []
|
const sourceResolvers = {
|
checkDiff: resolveCheckDiffActivity,
|
qlyInspect: resolveQlyInspectActivity,
|
freeze: resolveFreezeActivity,
|
locRevise: resolveLocReviseActivity
|
}
|
|
Object.entries(sourceResolvers).forEach(([key, resolver]) => {
|
const records = overviewState[key]?.records || []
|
records.slice(0, 3).forEach((record) => {
|
activities.push(resolver(record))
|
})
|
})
|
|
return activities
|
.sort((left, right) => String(right.sortTime).localeCompare(String(left.sortTime)))
|
.slice(0, 8)
|
}
|
|
export {
|
ABNORMAL_CARD_DEFINITIONS,
|
ABNORMAL_PAGE_TITLE,
|
buildAbnormalActivityItems,
|
buildAbnormalEntryItems,
|
buildAbnormalOverviewCards,
|
createAbnormalOverviewState,
|
normalizeSummaryResponse
|
}
|