import { h } from 'vue' import ArtButtonTable from '@/components/core/forms/art-button-table/index.vue' import { $t } from '@/locales' function createTextColumn(prop, label, minWidth, { align, formatter } = {}) { return { prop, label, minWidth, align, showOverflowTooltip: true, formatter: formatter || ((row) => row?.[prop] || $t('common.placeholder.empty')) } } export function createAsnOrderItemTableColumns({ handleView, t = $t } = {}) { return [ { type: 'globalIndex', label: t('table.index'), width: 72, align: 'center' }, createTextColumn('poCode', t('pages.orders.asnOrderItem.table.poCode'), 160), createTextColumn('wkTypeLabel', t('pages.orders.asnOrderItem.table.wkType'), 120), createTextColumn('typeLabel', t('pages.orders.asnOrderItem.table.type'), 110), createTextColumn('purchaseOrgName', t('pages.orders.asnOrderItem.table.purchaseOrg'), 150), createTextColumn('purchaseUserName', t('pages.orders.asnOrderItem.table.purchaseUser'), 120), createTextColumn('supplierName', t('table.supplier'), 160), createTextColumn('platWorkCode', t('pages.orders.asnOrderItem.table.platWorkCode'), 150), createTextColumn('platItemId', t('pages.orders.asnOrderItem.table.platItemId'), 110), createTextColumn('matnrCode', t('table.materialCode'), 160), createTextColumn('maktx', t('table.materialName'), 220), createTextColumn('batch', t('table.supplierBatch'), 140), createTextColumn('stockUnit', t('pages.orders.asnOrderItem.table.stockUnit'), 110), { prop: 'anfme', label: t('pages.orders.asnOrderItem.table.anfme'), width: 110, align: 'right', formatter: (row) => row.anfme ?? 0 }, { prop: 'qty', label: t('pages.orders.asnOrderItem.table.qty'), width: 110, align: 'right', formatter: (row) => row.qty ?? 0 }, createTextColumn('targetWarehouseId', t('pages.orders.asnOrderItem.table.targetWarehouseId'), 140), createTextColumn('businessTimeText', t('pages.orders.asnOrderItem.table.businessTime'), 180), createTextColumn('updateTimeText', t('table.updateTime'), 180), { prop: 'operation', label: t('table.operation'), width: 110, fixed: 'right', align: 'center', formatter: (row) => h( 'div', { class: 'flex justify-center' }, [ h(ArtButtonTable, { type: 'view', onClick: () => handleView?.(row) }) ] ) } ] }