| | |
| | | import { h } from 'vue' |
| | | import { ElTag } from 'element-plus' |
| | | import ArtButtonMore from '@/components/core/forms/art-button-more/index.vue' |
| | | import { $t } from '@/locales' |
| | | import { getWarehouseAreasStatusMeta } from './warehouseAreasPage.helpers' |
| | | |
| | | export function createWarehouseAreasTableColumns({ |
| | | t = $t, |
| | | handleView, |
| | | handleEdit, |
| | | handleDelete, |
| | | canEdit = true, |
| | | canDelete = true |
| | | } = {}) { |
| | | const operations = [{ key: 'view', label: '详情', icon: 'ri:eye-line' }] |
| | | const operations = [{ key: 'view', label: t('common.actions.detail'), icon: 'ri:eye-line' }] |
| | | |
| | | if (canEdit && handleEdit) { |
| | | operations.push({ key: 'edit', label: '编辑', icon: 'ri:pencil-line' }) |
| | | operations.push({ key: 'edit', label: t('common.actions.edit'), icon: 'ri:pencil-line' }) |
| | | } |
| | | |
| | | if (canDelete && handleDelete) { |
| | | operations.push({ key: 'delete', label: '删除', icon: 'ri:delete-bin-5-line', color: 'var(--art-error)' }) |
| | | operations.push({ key: 'delete', label: t('common.actions.delete'), icon: 'ri:delete-bin-5-line', color: 'var(--art-error)' }) |
| | | } |
| | | |
| | | return [ |
| | |
| | | }, |
| | | { |
| | | type: 'globalIndex', |
| | | label: '序号', |
| | | label: t('table.index'), |
| | | width: 72, |
| | | align: 'center' |
| | | }, |
| | | { |
| | | prop: 'warehouseName', |
| | | label: '仓库', |
| | | label: t('pages.basicInfo.warehouseAreas.table.warehouseName'), |
| | | minWidth: 160, |
| | | showOverflowTooltip: true, |
| | | formatter: (row) => row.warehouseName || '--' |
| | | }, |
| | | { |
| | | prop: 'code', |
| | | label: '库区编码', |
| | | label: t('pages.basicInfo.warehouseAreas.table.code'), |
| | | minWidth: 150, |
| | | showOverflowTooltip: true, |
| | | formatter: (row) => row.code || '--' |
| | | }, |
| | | { |
| | | prop: 'name', |
| | | label: '库区名称', |
| | | label: t('pages.basicInfo.warehouseAreas.table.name'), |
| | | minWidth: 180, |
| | | showOverflowTooltip: true, |
| | | formatter: (row) => row.name || '--' |
| | | }, |
| | | { |
| | | prop: 'typeText', |
| | | label: '业务类型', |
| | | label: t('pages.basicInfo.warehouseAreas.table.type'), |
| | | minWidth: 140, |
| | | showOverflowTooltip: true, |
| | | formatter: (row) => row.typeText || '--' |
| | | }, |
| | | { |
| | | prop: 'shipperName', |
| | | label: '货主', |
| | | label: t('pages.basicInfo.warehouseAreas.table.shipperName'), |
| | | minWidth: 140, |
| | | showOverflowTooltip: true, |
| | | formatter: (row) => row.shipperName || '--' |
| | | }, |
| | | { |
| | | prop: 'supplierName', |
| | | label: '供应商', |
| | | label: t('pages.basicInfo.warehouseAreas.table.supplierName'), |
| | | minWidth: 140, |
| | | showOverflowTooltip: true, |
| | | formatter: (row) => row.supplierName || '--' |
| | | }, |
| | | { |
| | | prop: 'flagMixText', |
| | | label: '支持混放', |
| | | label: t('pages.basicInfo.warehouseAreas.table.flagMix'), |
| | | width: 100, |
| | | align: 'center', |
| | | formatter: (row) => row.flagMixText || '--' |
| | | formatter: (row) => (row.flagMixTextKey ? t(row.flagMixTextKey) : row.flagMixText || '--') |
| | | }, |
| | | { |
| | | prop: 'flagMinusText', |
| | | label: '允许负库存', |
| | | label: t('pages.basicInfo.warehouseAreas.table.flagMinus'), |
| | | width: 100, |
| | | align: 'center', |
| | | formatter: (row) => row.flagMinusText || '--' |
| | | formatter: (row) => (row.flagMinusTextKey ? t(row.flagMinusTextKey) : row.flagMinusText || '--') |
| | | }, |
| | | { |
| | | prop: 'flagLabelMangeText', |
| | | label: '标签管理', |
| | | label: t('pages.basicInfo.warehouseAreas.table.flagLabelManage'), |
| | | width: 100, |
| | | align: 'center', |
| | | formatter: (row) => row.flagLabelMangeText || '--' |
| | | formatter: (row) => |
| | | row.flagLabelMangeTextKey ? t(row.flagLabelMangeTextKey) : row.flagLabelMangeText || '--' |
| | | }, |
| | | { |
| | | prop: 'status', |
| | | label: '状态', |
| | | label: t('table.status'), |
| | | width: 100, |
| | | align: 'center', |
| | | formatter: (row) => { |
| | | const statusMeta = getWarehouseAreasStatusMeta(row.statusBool ?? row.status) |
| | | return h(ElTag, { type: statusMeta.type, effect: 'light' }, () => statusMeta.text) |
| | | return h( |
| | | ElTag, |
| | | { type: statusMeta.type, effect: 'light' }, |
| | | () => (statusMeta.textKey ? t(statusMeta.textKey) : statusMeta.fallback) |
| | | ) |
| | | } |
| | | }, |
| | | { |
| | | prop: 'sort', |
| | | label: '排序', |
| | | label: t('pages.basicInfo.warehouseAreas.table.sort'), |
| | | width: 80, |
| | | align: 'center', |
| | | formatter: (row) => row.sort ?? '--' |
| | | }, |
| | | { |
| | | prop: 'memo', |
| | | label: '备注', |
| | | label: t('table.remark'), |
| | | minWidth: 180, |
| | | showOverflowTooltip: true, |
| | | formatter: (row) => row.memo || '--' |
| | | }, |
| | | { |
| | | prop: 'updateTimeText', |
| | | label: '更新时间', |
| | | label: t('table.updateTime'), |
| | | minWidth: 170, |
| | | showOverflowTooltip: true, |
| | | formatter: (row) => row.updateTimeText || '--' |
| | | }, |
| | | { |
| | | prop: 'operation', |
| | | label: '操作', |
| | | label: t('table.operation'), |
| | | width: 120, |
| | | align: 'center', |
| | | fixed: 'right', |