| | |
| | | import { MesAutoCodeRuleCode } from '@vben/constants'; |
| | | import { getItemTypeSimpleList } from '#/api/mes/md/item/type'; |
| | | import { getUnitPage } from '#/api/mdm/unit'; |
| | | import { getWarehouseSimpleList } from '#/api/mes/wm/warehouse'; |
| | | |
| | | import { Button } from 'ant-design-vue'; |
| | | |
| | | // 缓存单位列表 |
| | | let unitListCache: any[] | null = null; |
| | | let unitListPromise: Promise<any[]> | null = null; |
| | | |
| | | // 缓存仓库列表 |
| | | let warehouseListCache: any[] | null = null; |
| | | let warehouseListPromise: Promise<any[]> | null = null; |
| | | |
| | | /** 将扁平分类列表转为 TreeSelect 所需的树形结构 */ |
| | | export function buildCategoryTree(list: any[]): any[] { |
| | |
| | | return unitListPromise; |
| | | } |
| | | |
| | | /** 获取仓库列表(带缓存) */ |
| | | async function getWarehouseListCached() { |
| | | if (warehouseListCache) { |
| | | return warehouseListCache; |
| | | } |
| | | if (warehouseListPromise) { |
| | | return warehouseListPromise; |
| | | } |
| | | warehouseListPromise = getWarehouseSimpleList().then((res) => { |
| | | warehouseListCache = res || []; |
| | | return warehouseListCache; |
| | | }).finally(() => { |
| | | warehouseListPromise = null; |
| | | }); |
| | | return warehouseListPromise; |
| | | } |
| | | |
| | | /** 清除单位列表缓存 */ |
| | | export function clearUnitListCache() { |
| | | unitListCache = null; |
| | | warehouseListCache = null; |
| | | } |
| | | |
| | | /** 新增/修改的表单 */ |
| | |
| | | }, |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | component: 'ApiSelect', |
| | | fieldName: 'warehouseId', |
| | | label: '默认仓库', |
| | | componentProps: { |
| | | placeholder: '请输入默认仓库ID', |
| | | placeholder: '请选择默认仓库', |
| | | allowClear: true, |
| | | api: getWarehouseListCached, |
| | | labelField: 'name', |
| | | valueField: 'id', |
| | | onChange: async (value: number | undefined) => { |
| | | const code = value |
| | | ? ((await getWarehouseListCached()).find((w: any) => w.id === value)?.code || '') |
| | | : ''; |
| | | formApi?.setFieldValue('warehouseCode', code); |
| | | }, |
| | | }, |
| | | }, |
| | | { |
| | | component: 'Input', |
| | | fieldName: 'warehouseCode', |
| | | dependencies: { |
| | | triggerFields: [''], |
| | | show: () => false, |
| | | }, |
| | | }, |
| | | { |
| | |
| | | min: 0, |
| | | placeholder: "请输入有效期", |
| | | }, |
| | | }, |
| | | { |
| | | component: 'Switch', |
| | | fieldName: 'syncMes', |
| | | label: '同步到MES', |
| | | defaultValue: true, |
| | | componentProps: { |
| | | checkedChildren: '是', |
| | | unCheckedChildren: '否', |
| | | }, |
| | | rules: z.boolean().default(true), |
| | | }, |
| | | { |
| | | component: "RadioGroup", |
| | |
| | | { |
| | | field: "syncedMes", |
| | | title: "同步状态", |
| | | width: 90, |
| | | width: 100, |
| | | fixed: "right", |
| | | slots: { default: "syncedMes" }, |
| | | }, |