Ben Lin
2024-09-11 08f1b081e006f0f3b83bcbdf47f4ef494e18450b
src/views/tigerprojects/system/lowcode/normal/index.vue
@@ -4,7 +4,7 @@
 * @version: 
 * @Date: 2024-05-30 13:28:20
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-07-20 05:21:44
 * @LastEditTime: 2024-08-06 19:57:41
-->
<template>
  <div>
@@ -14,9 +14,9 @@
  </div>
</template>
<script lang="ts" setup>
  import { Ref, defineAsyncComponent, h, onMounted, provide, ref, unref } from 'vue';
  import { Ref, h, onMounted, provide, ref, unref, watch } from 'vue';
  import mainTable from './mainTable.vue';
  import { DeleteEntity, GetEnum, getEntity, getListByPage } from '/@/api/tigerapi/system';
  import { GetEnum, getEntity, getListByPage } from '/@/api/tigerapi/system';
  import { useRoute, useRouter } from 'vue-router';
  import { Tag, Tooltip } from 'ant-design-vue';
  import { isNullOrEmpty, isNullOrUnDef } from '/@/utils/is';
@@ -26,6 +26,8 @@
  import { useGo } from '/@/hooks/web/usePage';
  import { useI18n } from '/@/hooks/web/useI18n';
  import { getRoleButtons } from '/@/api/sys/menu';
  import { EntityCustFunctionType } from '/@/api/tigerapi/model/basModel';
  import { isFunction } from 'xe-utils';
  const { getLocale } = useLocale();
  const { t } = useI18n();
@@ -34,16 +36,12 @@
  const go = useGo();
  const objParams = ref(JSON.parse(decodeURI(route.params?.id as string)));
  const entityName = ref(objParams.value.ID);
  const _columns = ref([]);
  const _searchFormSchema = ref([]);
  const _crudFormSchema = ref([]);
  const _columns = ref<any[]>([]);
  const _searchFormSchema = ref<any[]>([]);
  const _crudFormSchema = ref<any[]>([]);
  const useModalData = ref({}); //表单中插槽渲染按钮打开模态框useModal方法
  const useFormData = ref({});
  const cType = ref('');
  const dtlSlots = ref([] as any[]);
  const selectVals = ref({});
  const isExistSql = ref('');
  const custImport = ref<any>(null);
  const custImport = ref<any[]>([]);
  const isMounted = ref(false);
  const buttons = ref([]);
  const AuthOption = ref({
@@ -59,7 +57,6 @@
  provide<Ref<string>>('isExistSql', isExistSql);
  provide<Ref<{}>>('AuthOption', AuthOption);
  provide<Ref<any>>('keyFieldValues', keyFieldValues);
  onMounted(async () => {
    /* 用json获取列 */
    // _searchFormSchema.value = await fetchJson(
@@ -80,12 +77,19 @@
    //   }
    // }
    // _columns.value = objs;
    isMounted.value = false;
    const EntityCustFunction = ref([
      {
        ActionItem(params: Recordable<any>, data, ...args) {},
      } as EntityCustFunctionType,
    ]);
    /* 动态import实体名.ts的自定义方法 */
    try {
      custImport.value = await import(`../entityts/${objParams.value.ID}.ts`);
    } catch (e) {}
    const [{ InitCrudFormSchema }] = isNullOrUnDef(custImport.value['default'])
      ? EntityCustFunction.value
      : custImport.value['default']();
    isMounted.value = true;
    //获取表单中插槽渲染的按钮点击弹出模态窗口的实例
@@ -121,7 +125,14 @@
      onChangeConfig(searchForms[i]);
    }
    _searchFormSchema.value = searchForms;
    var _cruds = JSON.parse(data.Data.Items[0].FORM_JSON);
    var _cruds: any[] = [];
    /* 如果有初始化增删改页面结构的方法,则进入 */
    if (InitCrudFormSchema && isFunction(InitCrudFormSchema)) {
      _cruds = InitCrudFormSchema(objParams.value.ID);
    } else {
    /* 没有初始化增删改页面结构的方法时进入 */
      _cruds = JSON.parse(data.Data.Items[0].FORM_JSON);
    }
    for (const i in _cruds) {
      if (
        !isNullOrEmpty(_cruds[i].componentProps) &&
@@ -188,5 +199,4 @@
      };
    }
  }
</script>