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 }