import { $t } from '@/locales' function translate(t, key, params) { return (typeof t === 'function' ? t : $t)(key, params) } export function getWaveItemReportTitle(t) { return translate(t, 'pages.orders.waveItem.reportTitle') } export const WAVE_ITEM_REPORT_STYLE = { titleAlign: 'center', titleLevel: 'strong', orientation: 'landscape', density: 'compact', showSequence: true } function normalizeText(value) { return String(value ?? '').trim() } function normalizeNumber(value) { if (value === '' || value === null || value === undefined) { return 0 } const numericValue = Number(value) return Number.isFinite(numericValue) ? numericValue : 0 } const WAVE_ITEM_STATUS_TAG_MAP = { 0: 'info', 1: 'warning', 2: 'warning', 3: 'primary', 4: 'success' } function getItemStatusConfig(status, statusText, t) { const fallbackLabel = statusText || translate(t, `pages.orders.waveItem.status.exceStatus.${Number(status)}`) return { label: fallbackLabel || '-', tagType: WAVE_ITEM_STATUS_TAG_MAP[Number(status)] || 'info' } } function normalizeStockLocs(stockLocs) { if (!stockLocs) { return '[]' } if (typeof stockLocs === 'string') { return stockLocs } try { return JSON.stringify(stockLocs) } catch { return '[]' } } export function createWaveItemSearchState() { return { condition: '', waveId: '', waveCode: '', orderCode: '', matnrCode: '', maktx: '', batch: '', splrBatch: '', unit: '', fieldsIndex: '', status: '', exceStatus: '', timeStart: '', timeEnd: '' } } export function buildWaveItemSearchParams(params = {}) { const result = {} ;[ 'condition', 'waveCode', 'orderCode', 'matnrCode', 'maktx', 'batch', 'splrBatch', 'unit', 'fieldsIndex', 'timeStart', 'timeEnd' ].forEach((key) => { const value = normalizeText(params[key]) if (value) { result[key] = value } }) if (params.waveId !== '' && params.waveId !== undefined && params.waveId !== null) { result.waveId = Number(params.waveId) } if (params.status !== '' && params.status !== undefined && params.status !== null) { result.status = Number(params.status) } if (params.exceStatus !== '' && params.exceStatus !== undefined && params.exceStatus !== null) { result.exceStatus = Number(params.exceStatus) } return result } export function buildWaveItemPageQueryParams(params = {}) { return { current: params.current || 1, pageSize: params.pageSize || params.size || 20, ...buildWaveItemSearchParams(params) } } export function normalizeWaveItemRow(record = {}, t) { const statusConfig = getItemStatusConfig(record.exceStatus, record['exceStatus$'], t) return { ...record, waveCode: record.waveCode || '-', orderCode: record.orderCode || '-', matnrCode: record.matnrCode || '-', maktx: record.maktx || '-', batch: record.batch || '-', splrBatch: record.splrBatch || '-', unit: record.unit || '-', fieldsIndex: record.fieldsIndex || '-', anfme: normalizeNumber(record.anfme), workQty: normalizeNumber(record.workQty), qty: normalizeNumber(record.qty), stockQty: normalizeNumber(record.stockQty), stockLocsText: normalizeStockLocs(record.stockLocs), exceStatusText: statusConfig.label, exceStatusTagType: statusConfig.tagType, createTimeText: record['createTime$'] || record.createTime || '-', updateTimeText: record['updateTime$'] || record.updateTime || '-' } } export function buildWaveItemPrintRows(records = [], t) { if (!Array.isArray(records)) { return [] } return records.map((record) => normalizeWaveItemRow(record, t)) } export function buildWaveItemReportMeta({ previewMeta = {}, count = 0, orientation = WAVE_ITEM_REPORT_STYLE.orientation, t } = {}) { return { reportTitle: getWaveItemReportTitle(t), reportDate: previewMeta.reportDate, printedAt: previewMeta.printedAt, operator: previewMeta.operator, count, reportStyle: { ...WAVE_ITEM_REPORT_STYLE, orientation } } }