zhangwencui
昨天 a2002ba0e8aa2a0e4eee61b5205748d8f6e454fc
src/views/basicData/mdm/modules/form.vue
@@ -1,37 +1,33 @@
<script lang="ts" setup>
import type { MdmItemApi } from '#/api/mdm/item';
import { computed, ref } from 'vue';
import { ref } from 'vue';
import { useVbenModal } from '#/packages/effects/common-ui/src';
import { useVbenModal } from "#/packages/effects/common-ui/src";
import { message } from 'ant-design-vue';
import { message } from "ant-design-vue";
import { useVbenForm } from '#/adapter/form';
import { createItem, getItem, updateItem } from '#/api/mdm/item';
import { $t } from '#/locales';
import { useFormSchema } from '../data';
import { useFormSchema, clearUnitListCache, buildCategoryTree } from '../data';
import { getItemTypeSimpleList } from '#/api/mes/md/item/type';
defineOptions({ name: 'ItemForm' });
defineOptions({ name: "ItemForm" });
const emit = defineEmits(['success']);
const formData = ref<MdmItemApi.Item>();
const getTitle = computed(() => {
  return formData.value?.id
    ? $t('ui.actionTitle.edit', ['物料'])
    : $t('ui.actionTitle.create', ['物料']);
});
const [Form, formApi] = useVbenForm({
  commonConfig: {
    componentProps: {
      class: 'w-full',
    },
    labelWidth: 100,
    labelWidth: 110,
  },
  layout: 'horizontal',
  schema: useFormSchema(),
  schema: [],
  showDefaultActions: false,
  wrapperClass: 'grid-cols-2',
});
@@ -59,22 +55,33 @@
      return;
    }
    const data = modalApi.getData<MdmItemApi.Item>();
    if (!data || !data.id) {
      return;
    }
    modalApi.lock();
    try {
      formData.value = await getItem(data.id);
      await formApi.setValues(formData.value);
    } finally {
      modalApi.unlock();
    // 清除单位缓存,确保获取最新数据
    clearUnitListCache();
    // 加载最新分类数据
    const categoryRes = await getItemTypeSimpleList();
    const categoryTreeData = buildCategoryTree(categoryRes || []);
    // 设置 schema(formApi 已初始化)
    formApi.setState({ schema: useFormSchema(formApi, categoryTreeData) });
    if (data?.id) {
      // 编辑模式
      modalApi.lock();
      try {
        formData.value = await getItem(data.id);
        await formApi.setValues(formData.value);
      } finally {
        modalApi.unlock();
      }
    } else {
      // 新增模式
      formData.value = undefined;
      await formApi.resetForm();
    }
  },
});
</script>
<template>
  <Modal class="w-[800px]" :title="getTitle">
  <Modal class="w-[1000px]" :title="formData?.id ? $t('ui.actionTitle.edit', ['物料']) : $t('ui.actionTitle.create', ['物料'])">
    <Form class="mx-4" />
  </Modal>
</template>
</template>