liu
3 天以前 91eff4781fa4142d1f62d30a0fa1de5cae424eaf
src/views/mes/pd/tech-confirm/modules/form.vue
@@ -8,6 +8,8 @@
  import { useVbenModal } from '@vben/common-ui';
  import { $t } from '@vben/locales';
  import { MesPdTechConfirmStatusEnum } from '#/packages/constants/src';
  import { message } from 'ant-design-vue';
  import { useVbenForm } from '#/adapter/form';
@@ -55,8 +57,21 @@
        return;
      }
      modalApi.lock();
      // 提交表单
      const data = (await formApi.getValues()) as MesPdTechConfirmApi.TechConfirm;
      // 提交表单:只提交用户可填写的业务字段,状态与流程派生字段由后端按流程推进,不回传
      const {
        status,
        drafterId,
        drafterName,
        draftTime,
        reviewerId,
        reviewerName,
        reviewTime,
        reviewRemark,
        customerConfirmUser,
        customerConfirmTime,
        ...values
      } = await formApi.getValues();
      const data = values as MesPdTechConfirmApi.TechConfirm;
      try {
        await (data.id ? updateTechConfirm(data) : createTechConfirm(data));
        // 关闭并提示
@@ -75,7 +90,7 @@
      // 加载数据
      const data = modalApi.getData<{ formType: FormType; id?: number }>();
      formType.value = data.formType;
      formApi.setState({ schema: useFormSchema(formApi) });
      formApi.setState({ schema: useFormSchema(formType.value, formApi) });
      formApi.setDisabled(formType.value === 'detail');
      modalApi.setState({ showConfirmButton: formType.value !== 'detail' });
      if (!data?.id) {
@@ -86,6 +101,14 @@
        formData.value = await getTechConfirm(data.id);
        // 设置到 values
        await formApi.setValues(formData.value);
        // 仅草稿与审核不通过可修改;待审核 / 已审核 / 客户已确认为锁定或终态
        const editable =
          formData.value?.status === MesPdTechConfirmStatusEnum.DRAFT ||
          formData.value?.status === MesPdTechConfirmStatusEnum.REJECTED;
        if (!editable) {
          formApi.setDisabled(true);
          modalApi.setState({ showConfirmButton: false });
        }
      } finally {
        modalApi.unlock();
      }