Ben Lin
2024-07-18 7cf58a4d2fff6b9cba9029d4d43ba9744dbef864
src/views/components/CustModal.vue
@@ -4,7 +4,7 @@
 * @version: 
 * @Date: 2024-06-05 15:46:07
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-06-28 14:26:49
 * @LastEditTime: 2024-07-18 15:42:20
-->
<template>
  <BasicModal
@@ -30,14 +30,15 @@
  </BasicModal>
</template>
<script lang="ts" setup>
  import { ref, unref, nextTick, watch } from 'vue';
  import { ref, unref, nextTick, watch, Ref } from 'vue';
  import { BasicModal, useModalInner } from '/@/components/Modal';
  import { FormSchema } from '/@/components/Form/index';
  import { custFunction } from './data';
  import { isNullOrEmpty, isNullOrUnDef } from '/@/utils/is';
  import { Layout, LayoutContent, Card } from 'ant-design-vue';
  import { useMessage } from '/@/hooks/web/useMessage';
  import { useI18n } from '/@/hooks/web/useI18n';
  import { EntityCustFunctionType } from '/@/api/tigerapi/model/basModel';
  import { CustModalParams } from '/@/api/tigerapi/model/systemModel';
  const { t } = useI18n();
  const { notification, createErrorModal } = useMessage();
@@ -49,7 +50,7 @@
  const cType = ref('');
  const title = ref('');
  const width = ref('');
  const FnName = ref({});
  const FnName = ref('');
  const mValues = ref<Recordable>({});
  const initFnName = ref({});
  const dtlSlots = ref([] as any[]);
@@ -58,7 +59,23 @@
  const useFormData = ref<any>({});
  const props = defineProps({
    detailSlots: { type: Array, default: [] },
    entityName: { type: String },
  });
  const custImport = ref<any[]>([]);
  const EntityCustFunction = ref([
    {
      CustFunc(param: CustModalParams) {},
    } as EntityCustFunctionType,
  ]);
  /* 动态import实体名.ts的自定义方法 */
  try {
    custImport.value = await import(`../tigerprojects/system/lowcode/entityts/${props.entityName}.ts`);
  } catch (e) {}
  const [{ CustFunc }] = isNullOrUnDef(custImport.value['default'])
    ? EntityCustFunction.value
    : custImport.value['default']();
  watch(
    () => props.detailSlots,
    (v) => {
@@ -95,13 +112,14 @@
    //初始化方法自定义
    if (!isNullOrEmpty(data?.initFnName)) {
      initFnName.value = data?.initFnName;
      custFunction(
        unref(isUpdate.value),
        initFnName.value[cType.value],
        cType.value,
        mValues.value,
        data?.others,
      );
      let param: CustModalParams = {
        cType: cType.value,
        values: unref(isUpdate.value),
        mValues: mValues.value,
        others: data?.others,
        FnName: initFnName.value[cType.value],
      };
      CustFunc(param);
    }
  });
@@ -116,7 +134,7 @@
  /**
   * @description: 弹框确定按钮方法
   * @return {*}
   */
   */
  async function handleSuccess() {
    try {
      var values = {} as any;
@@ -129,8 +147,12 @@
      setModalProps({ confirmLoading: true });
      //调用自定义保存方法保存数据
      values['mValues'] = mValues.value;
      const action = await custFunction(values, FnName.value[cType.value], cType.value);
      if (action as boolean) {
      const action = await CustFunc({
        cType: cType.value,
        values: values,
        FnName: FnName.value,
      } as unknown as CustModalParams);
      if (action.IsSuccessed) {
        closeModal();
        //成功事件,将数据返回原页面
        emit('success', {
@@ -143,7 +165,7 @@
      } else {
        createErrorModal({
          title: t('警告'),
          content: t('保存数据失败'),
          content: t(action.LocaleMsg),
          getContainer: () => document.body,
        });
      }