const CHECK_DIFF_REPORT_TITLE = '盘点差异单报表' function filterParams(params = {}, ignoredKeys = []) { return Object.fromEntries( Object.entries(params) .filter(([key, value]) => { if (ignoredKeys.includes(key)) return false if (value === undefined || value === null) return false if (typeof value === 'string' && value.trim() === '') return false return true }) .map(([key, value]) => [key, typeof value === 'string' ? value.trim() : value]) ) } export function buildCheckDiffPageRequestParams(params = {}) { return { current: params.current || 1, pageSize: params.pageSize || params.size || 20, ...filterParams(params, ['current', 'pageSize', 'size']) } } export function buildCheckDiffItemPageRequestParams(params = {}) { return { current: params.current || 1, pageSize: params.pageSize || params.size || 20, ...filterParams(params, ['current', 'pageSize', 'size']) } } export function createCheckDiffSearchState() { return { condition: '', orderCode: '', checkType: '', exceStatus: '', areaId: '', areaName: '', memo: '' } } export function buildCheckDiffSearchParams(params = {}) { return filterParams(params, ['current', 'pageSize', 'size']) } export function buildCheckDiffPageQueryParams(params = {}) { return { current: params.current || 1, pageSize: params.pageSize || params.size || 20, ...filterParams(params, ['current', 'pageSize', 'size']) } } export function buildCheckDiffDetailQueryParams(params = {}) { return { checkId: params.checkId, current: params.current || 1, pageSize: params.pageSize || params.size || 20 } } function getCheckTypeLabel(checkType) { if (checkType === 0 || checkType === '0') return '明盘' if (checkType === 1 || checkType === '1') return '暗盘' if (checkType === null || checkType === undefined || checkType === '') return '-' return String(checkType) } function getCheckDiffStatusMeta(status) { const normalized = Number(status) if (normalized === 1) { return { text: '执行中', type: 'warning' } } if (normalized === 2) { return { text: '已完成', type: 'success' } } if (normalized === 8) { return { text: '已取消', type: 'danger' } } return { text: '未执行', type: 'info' } } export function normalizeCheckDiffRow(row = {}) { const statusMeta = getCheckDiffStatusMeta(row.exceStatus ?? row.exceStatus$) return { ...row, checkTypeLabel: row.checkTypeLabel || row.checkType$ || getCheckTypeLabel(row.checkType), exceStatusLabel: row.exceStatusLabel || row.exceStatus$ || statusMeta.text, exceStatusTagType: row.exceStatusTagType || statusMeta.type, createTimeText: row.createTimeText || row.createTime$ || row.createTime || '-', updateTimeText: row.updateTimeText || row.updateTime$ || row.updateTime || '-' } } export function getCheckDiffActionList(record = {}) { return [ { key: 'view', label: '查看详情', icon: 'ri:file-list-3-line' }, { key: 'print', label: '打印', icon: 'ri:printer-line' }, { key: 'delete', label: '删除', icon: 'ri:delete-bin-4-line', color: '#f56c6c', auth: 'delete' } ].filter((item) => item.key !== 'delete' || Number(record.exceStatus) === 0 || Number(record.exceStatus) === 1) } export function buildCheckDiffPrintRows(records = []) { return Array.isArray(records) ? records.map((item) => normalizeCheckDiffRow(item)) : [] } export function buildCheckDiffReportMeta(rows = []) { return { reportTitle: CHECK_DIFF_REPORT_TITLE, reportDate: new Date().toLocaleDateString('zh-CN'), printedAt: new Date().toLocaleString('zh-CN', { hour12: false }), count: rows.length } } export { CHECK_DIFF_REPORT_TITLE, getCheckDiffStatusMeta }