import { h } from 'vue' import { ElTag } from 'element-plus' import ArtButtonTable from '@/components/core/forms/art-button-table/index.vue' import { $t } from '@/locales' function buildTagRenderer(textKey, typeKey) { return (row) => h( ElTag, { type: row?.[typeKey] || 'info', effect: 'light' }, () => row?.[textKey] || '--' ) } export function createAsnOrderLogTableColumns({ handleView } = {}) { return [ { type: 'selection', width: 48, align: 'center' }, { type: 'globalIndex', label: $t('table.index'), width: 72, align: 'center' }, { prop: 'code', label: $t('pages.orders.asnOrderItemLog.table.asnCode'), minWidth: 160, showOverflowTooltip: true, formatter: (row) => row.code || '--' }, { prop: 'poCode', label: $t('pages.orders.asnOrderItemLog.table.poCode'), minWidth: 160, showOverflowTooltip: true, formatter: (row) => row.poCode || '--' }, { prop: 'poId', label: $t('pages.orders.asnOrderLog.table.poId'), width: 110, align: 'right', formatter: (row) => row.poId ?? '--' }, { prop: 'typeText', label: $t('pages.orders.asnOrderLog.table.type'), minWidth: 120, showOverflowTooltip: true, formatter: (row) => row.typeText || '--' }, { prop: 'wkTypeText', label: $t('pages.orders.asnOrderLog.table.wkType'), minWidth: 120, showOverflowTooltip: true, formatter: (row) => row.wkTypeText || '--' }, { prop: 'anfme', label: $t('pages.orders.asnOrderLog.table.anfme'), width: 110, align: 'right', formatter: (row) => row.anfme ?? '--' }, { prop: 'qty', label: $t('pages.orders.asnOrderLog.table.qty'), width: 110, align: 'right', formatter: (row) => row.qty ?? '--' }, { prop: 'logisNo', label: $t('pages.orders.asnOrderLog.table.logisNo'), minWidth: 160, showOverflowTooltip: true, formatter: (row) => row.logisNo || '--' }, { prop: 'arrTimeText', label: $t('pages.orders.asnOrderLog.table.arrTime'), minWidth: 170, showOverflowTooltip: true, formatter: (row) => row.arrTimeText || '--' }, { prop: 'rleStatusText', label: $t('pages.orders.asnOrderLog.table.rleStatus'), width: 110, align: 'center', formatter: buildTagRenderer('rleStatusText', 'rleStatusTagType') }, { prop: 'ntyStatusText', label: $t('pages.orders.asnOrderItemLog.table.ntyStatus'), width: 110, align: 'center', formatter: buildTagRenderer('ntyStatusText', 'ntyStatusTagType') }, { prop: 'exceStatusText', label: $t('pages.orders.asnOrderLog.table.exceStatus'), minWidth: 120, showOverflowTooltip: true, formatter: (row) => row.exceStatusText || '--' }, { prop: 'status', label: $t('table.status'), width: 96, align: 'center', formatter: buildTagRenderer('statusText', 'statusType') }, { prop: 'updateByText', label: $t('table.updateBy'), minWidth: 120, showOverflowTooltip: true, formatter: (row) => row.updateByText || '--' }, { prop: 'updateTimeText', label: $t('table.updateTime'), minWidth: 170, showOverflowTooltip: true, formatter: (row) => row.updateTimeText || '--' }, { prop: 'memo', label: $t('table.memo'), minWidth: 180, showOverflowTooltip: true, formatter: (row) => row.memo || '--' }, { prop: 'operation', label: $t('table.operation'), width: 92, align: 'center', fixed: 'right', formatter: (row) => h(ArtButtonTable, { icon: 'ri:eye-line', onClick: () => handleView?.(row) }) } ] } export function createAsnOrderItemLogColumns() { return [ { type: 'globalIndex', label: $t('table.index'), width: 72, align: 'center' }, { prop: 'asnCode', label: $t('pages.orders.asnOrderItemLog.table.asnCode'), minWidth: 160, showOverflowTooltip: true, formatter: (row) => row.asnCode || '--' }, { prop: 'platItemId', label: $t('pages.orders.asnOrderItemLog.table.platItemId'), minWidth: 120, showOverflowTooltip: true, formatter: (row) => row.platItemId || '--' }, { prop: 'poDetlId', label: $t('pages.orders.asnOrderItemLog.table.poDetlId'), width: 120, align: 'right', formatter: (row) => row.poDetlId ?? '--' }, { prop: 'poCode', label: $t('pages.orders.asnOrderItemLog.table.poCode'), minWidth: 160, showOverflowTooltip: true, formatter: (row) => row.poCode || '--' }, { prop: 'fieldsIndex', label: $t('pages.orders.asnOrderItemLog.table.fieldsIndex'), minWidth: 130, showOverflowTooltip: true, formatter: (row) => row.fieldsIndex || '--' }, { prop: 'matnrCode', label: $t('pages.orders.asnOrderItemLog.table.matnrCode'), minWidth: 140, showOverflowTooltip: true, formatter: (row) => row.matnrCode || '--' }, { prop: 'maktx', label: $t('pages.orders.asnOrderItemLog.table.maktx'), minWidth: 180, showOverflowTooltip: true, formatter: (row) => row.maktx || '--' }, { prop: 'anfme', label: $t('pages.orders.asnOrderItemLog.table.anfme'), width: 110, align: 'right', formatter: (row) => row.anfme ?? '--' }, { prop: 'stockUnit', label: $t('pages.orders.asnOrderItemLog.table.stockUnit'), width: 100, align: 'center', formatter: (row) => row.stockUnit || '--' }, { prop: 'purQty', label: $t('pages.orders.asnOrderItemLog.table.purQty'), width: 110, align: 'right', formatter: (row) => row.purQty ?? '--' }, { prop: 'purUnit', label: $t('pages.orders.asnOrderItemLog.table.purUnit'), width: 100, align: 'center', formatter: (row) => row.purUnit || '--' }, { prop: 'qty', label: $t('pages.orders.asnOrderItemLog.table.qty'), width: 110, align: 'right', formatter: (row) => row.qty ?? '--' }, { prop: 'splrCode', label: $t('pages.orders.asnOrderItemLog.table.splrCode'), minWidth: 140, showOverflowTooltip: true, formatter: (row) => row.splrCode || '--' }, { prop: 'splrBatch', label: $t('pages.orders.asnOrderItemLog.table.splrBatch'), minWidth: 140, showOverflowTooltip: true, formatter: (row) => row.splrBatch || '--' }, { prop: 'splrName', label: $t('pages.orders.asnOrderItemLog.table.splrName'), minWidth: 160, showOverflowTooltip: true, formatter: (row) => row.splrName || '--' }, { prop: 'qrcode', label: $t('pages.orders.asnOrderItemLog.table.qrcode'), minWidth: 160, showOverflowTooltip: true, formatter: (row) => row.qrcode || '--' }, { prop: 'trackCode', label: $t('pages.orders.asnOrderItemLog.table.trackCode'), minWidth: 160, showOverflowTooltip: true, formatter: (row) => row.trackCode || '--' }, { prop: 'barcode', label: $t('pages.orders.asnOrderItemLog.table.barcode'), minWidth: 160, showOverflowTooltip: true, formatter: (row) => row.barcode || '--' }, { prop: 'packName', label: $t('pages.orders.asnOrderItemLog.table.packName'), minWidth: 130, showOverflowTooltip: true, formatter: (row) => row.packName || '--' }, { prop: 'ntyStatusText', label: $t('pages.orders.asnOrderItemLog.table.ntyStatus'), width: 110, align: 'center', formatter: (row) => row.ntyStatusText || '--' }, { prop: 'status', label: $t('table.status'), width: 96, align: 'center', formatter: (row) => row.statusText || '--' }, { prop: 'updateByText', label: $t('table.updateBy'), minWidth: 120, showOverflowTooltip: true, formatter: (row) => row.updateByText || '--' }, { prop: 'updateTimeText', label: $t('table.updateTime'), minWidth: 170, showOverflowTooltip: true, formatter: (row) => row.updateTimeText || '--' } ] }