diff --git a/apps/web-antd/src/views/mes/pro/process/data.ts b/apps/web-antd/src/views/mes/pro/process/data.ts index c4c8ed503..ff8089acd 100644 --- a/apps/web-antd/src/views/mes/pro/process/data.ts +++ b/apps/web-antd/src/views/mes/pro/process/data.ts @@ -40,7 +40,6 @@ export function useFormSchema(formApi?: VbenFormApi): VbenFormSchema[] { { type: 'default', onClick: async () => { - // TODO @AI:需要 try catch 么?感觉直接去掉也可以? try { const code = await generateAutoCode( MesAutoCodeRuleCode.PRO_PROCESS_CODE, diff --git a/apps/web-antd/src/views/mes/pro/process/modules/content-list.vue b/apps/web-antd/src/views/mes/pro/process/modules/content-list.vue index 15757bcf4..3d51d5bb5 100644 --- a/apps/web-antd/src/views/mes/pro/process/modules/content-list.vue +++ b/apps/web-antd/src/views/mes/pro/process/modules/content-list.vue @@ -19,10 +19,11 @@ import { useContentGridColumns } from '../data'; import ContentForm from './content-form.vue'; const props = defineProps<{ + formMode: 'create' | 'detail' | 'update'; processId: number; - readonly?: boolean; }>(); +const isEditable = ref(props.formMode !== 'detail'); // 是否可编辑 const list = ref([]); const [ContentFormModal, contentFormModalApi] = useVbenModal({ @@ -60,11 +61,7 @@ async function getList() { /** 新增工序步骤 */ function handleCreate() { - // TODO @AI:是不是可以直接 max 然后 || 0; - const maxSort = - list.value.length > 0 - ? Math.max(...list.value.map((item) => item.sort || 0)) - : 0; + const maxSort = Math.max(0, ...list.value.map((item) => item.sort || 0)); contentFormModalApi .setData({ maxSort, processId: props.processId }) .open(); @@ -95,7 +92,7 @@ watch( diff --git a/apps/web-antd/src/views/mes/pro/route/modules/bom-form.vue b/apps/web-antd/src/views/mes/pro/route/modules/bom-form.vue index e2d51c132..b5931df3a 100644 --- a/apps/web-antd/src/views/mes/pro/route/modules/bom-form.vue +++ b/apps/web-antd/src/views/mes/pro/route/modules/bom-form.vue @@ -17,7 +17,7 @@ import { $t } from '#/locales'; import { useRouteProductBomFormSchema } from '../data'; const emit = defineEmits(['success']); -const formData = ref(); // 当前编辑的 BOM 数据 +const formData = ref(); const productId = ref(0); // 当前产品物料编号,供 BOM 选择器筛选可用 BOM const getTitle = computed(() => formData.value?.id diff --git a/apps/web-antd/src/views/mes/pro/route/modules/form.vue b/apps/web-antd/src/views/mes/pro/route/modules/form.vue index d9a64fdec..2ca0303ae 100644 --- a/apps/web-antd/src/views/mes/pro/route/modules/form.vue +++ b/apps/web-antd/src/views/mes/pro/route/modules/form.vue @@ -8,11 +8,7 @@ import { useVbenModal } from '@vben/common-ui'; import { message, TabPane, Tabs } from 'ant-design-vue'; import { useVbenForm } from '#/adapter/form'; -import { - createRoute, - getRoute, - updateRoute, -} from '#/api/mes/pro/route'; +import { createRoute, getRoute, updateRoute } from '#/api/mes/pro/route'; import { $t } from '#/locales'; import { useFormSchema } from '../data'; @@ -22,11 +18,11 @@ import ProductList from './product-list.vue'; type FormMode = 'create' | 'detail' | 'update'; const emit = defineEmits(['success']); -const formMode = ref('create'); -const subTab = ref('process'); +const formMode = ref('create'); // 表单模式 +const subTab = ref('process'); // 当前激活的子表 Tab const formData = ref(); -const isDetail = computed(() => formMode.value === 'detail'); +const isDetail = computed(() => formMode.value === 'detail'); // 是否查看模式 const getTitle = computed(() => { if (formMode.value === 'detail') { return $t('ui.actionTitle.detail', ['工艺路线']); @@ -48,10 +44,9 @@ const [Form, formApi] = useVbenForm({ wrapperClass: 'grid-cols-2', }); -// TODO @AI:注释风格,是不是和别的没对齐 +/** 表单 schema 需要 formApi 引用(生成编码按钮),所以通过 setState 设置 schema */ formApi.setState({ schema: useFormSchema(formApi) }); -// TODO @AI:注释风格,是不是和别的没对齐 const [Modal, modalApi] = useVbenModal({ async onConfirm() { if (isDetail.value) { @@ -63,9 +58,11 @@ const [Modal, modalApi] = useVbenModal({ return; } modalApi.lock(); + // 提交表单 const data = (await formApi.getValues()) as MesProRouteApi.Route; try { if (formMode.value === 'create') { + // 新增成功后切到编辑模式,方便继续维护组成工序、关联产品 const id = await createRoute(data); formData.value = { ...data, id }; await formApi.setFieldValue('id', id); @@ -87,6 +84,7 @@ const [Modal, modalApi] = useVbenModal({ } await formApi.resetForm(); subTab.value = 'process'; + // 加载数据 const data = modalApi.getData<{ id?: number; type?: FormMode }>(); formMode.value = data?.type ?? 'create'; formApi.setDisabled(formMode.value === 'detail'); @@ -97,6 +95,7 @@ const [Modal, modalApi] = useVbenModal({ modalApi.lock(); try { formData.value = await getRoute(data.id); + // 设置到 values await formApi.setValues(formData.value); } finally { modalApi.unlock(); @@ -108,6 +107,7 @@ const [Modal, modalApi] = useVbenModal({