import { h } from 'vue' import { ElProgress, ElTag } from 'element-plus' import { $t } from '@/locales' import ArtButtonMore from '@/components/core/forms/art-button-more/index.vue' import { getWaveActionList } from './wavePage.helpers' export function createWaveTableColumns({ handleActionClick, t }) { const translate = typeof t === 'function' ? t : $t return [ { type: 'selection', width: 48, align: 'center' }, { type: 'globalIndex', label: translate('table.index'), width: 72, align: 'center' }, { prop: 'code', label: translate('pages.orders.wave.table.code'), minWidth: 170, showOverflowTooltip: true }, { prop: 'typeLabel', label: translate('pages.orders.wave.table.type'), width: 110 }, { prop: 'exceStatusText', label: translate('pages.orders.wave.table.exceStatus'), width: 120, formatter: (row) => h( ElTag, { type: row.exceStatusTagType || 'info', effect: 'light' }, () => row.exceStatusText ) }, { prop: 'anfme', label: translate('pages.orders.wave.table.anfme'), width: 110, align: 'right' }, { prop: 'workQty', label: translate('pages.orders.wave.table.workQty'), width: 110, align: 'right' }, { prop: 'qty', label: translate('pages.orders.wave.table.qty'), width: 110, align: 'right' }, { prop: 'orderNum', label: translate('pages.orders.wave.table.orderNum'), width: 110, align: 'right' }, { prop: 'progress', label: translate('pages.orders.wave.table.progress'), width: 160, formatter: (row) => h(ElProgress, { percentage: Number(row.progress || 0), strokeWidth: 10, status: row.progress >= 100 ? 'success' : undefined, striped: false, showText: true }) }, { prop: 'createTimeText', label: translate('pages.orders.wave.table.createTime'), minWidth: 170, showOverflowTooltip: true }, { prop: 'updateTimeText', label: translate('pages.orders.wave.table.updateTime'), minWidth: 170, showOverflowTooltip: true }, { prop: 'statusLabel', label: translate('pages.orders.wave.table.status'), width: 100, formatter: (row) => h( ElTag, { type: Number(row.status) === 1 ? 'success' : 'danger', effect: 'light' }, () => row.statusLabel ) }, { prop: 'operation', label: translate('table.operation'), width: 120, align: 'center', fixed: 'right', formatter: (row) => h(ArtButtonMore, { list: getWaveActionList(row, translate), onClick: (item) => handleActionClick(item, row) }) } ] } export function createWavePreviewItemColumns(t) { const translate = typeof t === 'function' ? t : $t return [ { type: 'globalIndex', label: translate('table.index'), width: 72, align: 'center' }, { prop: 'waveCode', label: translate('pages.orders.wave.preview.waveCode'), minWidth: 170, showOverflowTooltip: true }, { prop: 'orderCode', label: translate('pages.orders.wave.preview.orderCode'), minWidth: 170, showOverflowTooltip: true }, { prop: 'matnrCode', label: translate('pages.orders.wave.preview.matnrCode'), minWidth: 150, showOverflowTooltip: true }, { prop: 'maktx', label: translate('pages.orders.wave.preview.maktx'), minWidth: 220, showOverflowTooltip: true }, { prop: 'batch', label: translate('pages.orders.wave.preview.batch'), minWidth: 130, showOverflowTooltip: true }, { prop: 'unit', label: translate('pages.orders.wave.preview.unit'), width: 90 }, { prop: 'anfme', label: translate('pages.orders.wave.preview.anfme'), width: 110, align: 'right' }, { prop: 'workQty', label: translate('pages.orders.wave.preview.workQty'), width: 110, align: 'right' }, { prop: 'stockQty', label: translate('pages.orders.wave.preview.stockQty'), width: 110, align: 'right' }, { prop: 'splrBatch', label: translate('pages.orders.wave.preview.splrBatch'), minWidth: 150, showOverflowTooltip: true }, { prop: 'stockLocsText', label: translate('pages.orders.wave.preview.stockLocs'), minWidth: 220, showOverflowTooltip: true } ] } export function createWaveDetailItemColumns(t) { return createWavePreviewItemColumns(t) }