From ebbd788fbb2c0b45d4473798efc57eec8ba74a25 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期二, 18 六月 2024 14:51:16 +0800
Subject: [PATCH] 版本更新至2.11.5

---
 src/views/tigerprojects/system/lowcode/normal/index.vue |  398 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 305 insertions(+), 93 deletions(-)

diff --git a/src/views/tigerprojects/system/lowcode/normal/index.vue b/src/views/tigerprojects/system/lowcode/normal/index.vue
index 1cc1cfa..557e50b 100644
--- a/src/views/tigerprojects/system/lowcode/normal/index.vue
+++ b/src/views/tigerprojects/system/lowcode/normal/index.vue
@@ -1,3 +1,11 @@
+<!--
+ * @Description: 浣庝唬鐮佸憟鐜伴〉闈�
+ * @Author: Ben Lin
+ * @version: 
+ * @Date: 2024-05-30 13:28:20
+ * @LastEditors: your name
+ * @LastEditTime: 2024-06-16 00:41:25
+-->
 <template>
   <div>
     <BasicTable @register="registerTable">
@@ -7,110 +15,314 @@
       <template #action="{ record }">
         <TableAction :actions="createActions(record)" />
       </template>
+      <template #[item]="{ field }" v-for="item in colSlots" :key="item">
+        <!-- <template #form-BAS_REASON3aadd="{ field }"> -->
+        <a-button v-if="field" class="mt-1 ml-1" size="small" @click="handleSelectItem(item)" preIcon="search|svg" />
+        <NormalModal @register="registerItemAdd" @success="(d, u) => handleItemSuccess(d, u, item)" />
+      </template>
     </BasicTable>
     <normalDrawer @register="registerDrawer" @success="handleSuccess" />
+    <CustModal @register="registerCust" @success="custSuccess" :type="cType" :detailSlots="dtlSlots">
+      <!-- 鐢ㄦ彃妲借嚜瀹氫箟澶氳〃鍗� -->
+      <template #[item.name] v-for="item in dtlSlots" :key="item.name">
+        <BasicForm @register="useFormData[item.name][0]" v-if="useFormData[item.name]">
+          <!-- 鐢ㄦ彃妲借嚜瀹氫箟寮瑰嚭閫夋嫨妗� -->
+          <template #[name]="{ field }" v-for="name in item.slots" :key="name">
+            <a-button class="mt-1 ml-1" size="small" @click="handleCustClick(field)" :preIcon="item.preIcons[name]" />
+            <NormalModal @register="useModalData[name][0]" @success="(d, u) => handleEntSuccess(d, u, item.name)" />
+          </template>
+        </BasicForm>
+        <!-- 鑷畾涔夊唴瀹� -->
+      </template>
+    </CustModal>
   </div>
 </template>
 <script lang="ts" setup>
-  import { h, onMounted, ref } from 'vue';
-  import { BasicTable, useTable, TableAction, BasicColumn, FormSchema } from '/@/components/Table';
-  import { useDrawer } from '/@/components/Drawer';
-  import normalDrawer from './normalDrawer.vue';
-  import { getEntity, getListByPage } from '/@/api/tigerapi/system';
-  import { useGlobSetting } from '/@/hooks/setting';
-  import { useRoute } from 'vue-router';
-  import { Tag, Tooltip } from 'ant-design-vue';
-  import { isNullOrEmpty } from '/@/utils/is';
-  import { GetActionColumn, GetActionsData } from './data';
+import { h, onMounted, ref, unref } from 'vue';
+import { BasicTable, useTable, TableAction, BasicColumn, FormSchema } from '/@/components/Table';
+import { useDrawer } from '/@/components/Drawer';
+import normalDrawer from '../normalDrawer.vue';
+import NormalModal from '/@/views/components/NormalModal.vue';
+import { GetEnum, getEntity, getListByPage } from '/@/api/tigerapi/system';
+import { useGlobSetting } from '/@/hooks/setting';
+import { useRoute } from 'vue-router';
+import { Tag, Tooltip } from 'ant-design-vue';
+import CustModal from '/@/views/components/CustModal.vue';
+import { BasicForm, FormActionType, useForm } from '/@/components/Form/index';
+import { isNullOrEmpty, isNullOrUnDef } from '/@/utils/is';
+import {
+  GetActionColumn,
+  GetActionsData,
+  OpenSelectItem,
+  GetSelectSuccess,
+  custOnChange,
+  getFormSchema,
+  OpenCustModal,
+  GetUseModalData,
+  getCreateAction,
+} from '../data';
+import { useModal } from '/@/components/Modal';
+import { useLocale } from '/@/locales/useLocale';
+import { uploadApi } from '/@/api/sys/upload';
+import { useGo } from '/@/hooks/web/usePage';
 
-  const route = useRoute();
-  const objParams = ref(JSON.parse(decodeURI(route.params?.id as string)));
-  const globSetting = useGlobSetting();
-  const _columns = ref([]);
-  const _searchFormSchema = ref([]);
-  const _crudFormSchema = ref([]);
-  const [registerDrawer, { openDrawer }] = useDrawer();
-  const [registerTable, { reload }] = useTable({
-    title: '鍒楄〃淇℃伅',
-    api: getListByPage,
-    searchInfo: { TABLE_NAME: objParams.value.ID },
-    columns: _columns as unknown as BasicColumn[],
-    formConfig: {
-      labelWidth: 140,
-      schemas: _searchFormSchema as unknown as FormSchema[],
-    },
-    useSearchForm: true,
-    showTableSetting: true,
-    bordered: true,
-    canResize: true,
-    showIndexColumn: false,
-    actionColumn: GetActionColumn(objParams.value.ID), //鑷畾涔夋搷浣滃垪
-  });
+const { getLocale } = useLocale();
+const route = useRoute();
+const go = useGo();
+const objParams = ref(JSON.parse(decodeURI(route.params?.id as string)));
+const entityName = ref(objParams.value.ID);
+const globSetting = useGlobSetting();
+const _columns = ref([]);
+const _searchFormSchema = ref([]);
+const _crudFormSchema = ref([]);
+const formSchemas = ref({}); //寮瑰嚭妗嗗琛ㄥ崟缁撴瀯
+const useModalData = ref({}); //琛ㄥ崟涓彃妲芥覆鏌撴寜閽墦寮�妯℃�佹useModal鏂规硶
+const useFormData = ref({});
+const colSlots = ref<any>(objParams.value.colSlots); //鎸夐挳鎻掓Ы
+const crudColSlots = ref<any>(objParams.value.crudColSlots);
+const cType = ref('');
+const dtlSlots = ref([] as any[]);
+const selectVals = ref({});
+const isExistSql = ref('');
 
-  /* 鐢熸垚鍒楄〃涓搷浣滈」鐨勬寜閽� */
-  function createActions(record) {
-    return GetActionsData(
-      {
-        record,
-        isUpdate: true,
-        entityName: objParams.value.ID,
-        formJson: _crudFormSchema.value,
-      },
-      openDrawer,
-      reload,
-    );
-  }
-
-  function handleCreate() {
-    openDrawer(true, {
-      isUpdate: false,
+const [registerCust, { openModal: openCustomModal, closeModal }] = useModal();
+const [registerItemAdd, { openModal: openItemModal }] = useModal();
+const [registerDrawer, { openDrawer }] = useDrawer();
+const [registerTable, { getForm, reload }] = useTable({
+  title: '鍒楄〃淇℃伅',
+  api: getListByPage,
+  searchInfo: { TABLE_NAME: objParams.value.ID },
+  columns: _columns as unknown as BasicColumn[],
+  formConfig: {
+    labelWidth: 140,
+    schemas: _searchFormSchema as unknown as FormSchema[],
+  },
+  useSearchForm: true,
+  showTableSetting: true,
+  bordered: true,
+  canResize: true,
+  showIndexColumn: false,
+  actionColumn: GetActionColumn(objParams.value.ID), //鑷畾涔夋搷浣滃垪
+});
+/* 鐢熸垚鍒楄〃涓搷浣滈」鐨勬寜閽� */
+function createActions(record) {
+  return GetActionsData(
+    {
+      record,
+      isUpdate: true,
       entityName: objParams.value.ID,
       formJson: _crudFormSchema.value,
-    });
-  }
+      cType,
+      dtlSlots,
+      formSchemas,
+      useModalData,
+      useFormData,
+      crudColSlots,
+    },
+    openDrawer,
+    reload,
+    openCustomModal,
+    useForm,
+    useModal,
+    go,
+  );
+}
 
-  function handleSuccess() {
-    reload();
+/**
+ * @description: 鑾峰彇鏂板鎸夐挳鐨勮涓�
+ * @return {*}
+ */
+function handleCreate() {
+  const result = getCreateAction(objParams.value.ID);
+  switch (result.action) {
+    case 'go':
+        go(`/${result.url}/${encodeURI(JSON.stringify(result.params))}`);
+      break;
+    case 'drawer':
+      openDrawer(true, {
+        isUpdate: false,
+        entityName: objParams.value.ID,
+        formJson: _crudFormSchema.value,
+        crudColSlots,
+        isExistSql: isExistSql.value,
+      });
+      break;
   }
+}
 
-  onMounted(async () => {
-    /* 鐢╦son鑾峰彇鍒� */
-    // _searchFormSchema.value = await fetchJson(
-    //   `${globSetting.downloadUrl}/LowCode/${objParams.value.ID}/${objParams.value.ID}_Searchform.json`,
-    // );
-    // var objs = await fetchJson(
-    //   `${globSetting.downloadUrl}/LowCode/${objParams.value.ID}/${objParams.value.ID}_Baseform.json`,
-    // );
-    // for (const i in objs) {
-    //   if (!isNullOrEmpty(objs[i].customRender)) {
-    //     const func = new Function(objs[i].customRender)();
-    //     objs[i].customRender = ({ record }) => {
-    //       let texts = func(record);
-    //       return h(Tooltip, { title: texts.text }, () =>
-    //         h(Tag, { color: texts.color }, () => texts.text),
-    //       );
-    //     };
-    //   }
-    // }
-    // _columns.value = objs;
-    const data = await getEntity({
-      sqlcmd: "ASSEMBLY_NAME ='" + objParams.value.ID + "'",
-      entityName: 'SYS_LOW_CODE',
-    });
-    _searchFormSchema.value = JSON.parse(data.Data.Items[0].SEARCH_FORM_JSON);
-    _crudFormSchema.value = JSON.parse(data.Data.Items[0].FORM_JSON);
-    var objs = JSON.parse(data.Data.Items[0].BASE_FORM_JSON);
-    for (const i in objs) {
-      if (!isNullOrEmpty(objs[i].customRender)) {
-        const func = new Function(objs[i].customRender)();
-        objs[i].customRender = ({ record }) => {
-          let texts = func(record);
-          return h(Tooltip, { title: texts.text }, () =>
-            h(Tag, { color: texts.color }, () => texts.text),
-          );
-        };
-      }
-    }
-    _columns.value = objs;
+function handleSuccess() {
+  reload();
+}
+
+onMounted(async () => {
+  /* 鐢╦son鑾峰彇鍒� */
+  // _searchFormSchema.value = await fetchJson(
+  //   `${globSetting.downloadUrl}/LowCode/${objParams.value.ID}/${objParams.value.ID}_Searchform.json`,
+  // );
+  // var objs = await fetchJson(
+  //   `${globSetting.downloadUrl}/LowCode/${objParams.value.ID}/${objParams.value.ID}_Baseform.json`,
+  // );
+  // for (const i in objs) {
+  //   if (!isNullOrEmpty(objs[i].customRender)) {
+  //     const func = new Function(objs[i].customRender)();
+  //     objs[i].customRender = ({ record }) => {
+  //       let texts = func(record);
+  //       return h(Tooltip, { title: texts.text }, () =>
+  //         h(Tag, { color: texts.color }, () => texts.text),
+  //       );
+  //     };
+  //   }
+  // }
+  // _columns.value = objs;
+
+  //鑾峰彇琛ㄥ崟涓彃妲芥覆鏌撶殑鎸夐挳鐐瑰嚮寮瑰嚭妯℃�佺獥鍙g殑瀹炰緥
+  useModalData.value = GetUseModalData(objParams.value.ID);
+  const data = await getEntity({
+    sqlcmd: "ASSEMBLY_NAME ='" + objParams.value.ID + "'",
+    entityName: 'SYS_LOW_CODE',
   });
+  var searchForms = JSON.parse(data.Data.Items[0].SEARCH_FORM_JSON);
+  for (const i in searchForms) {
+    if (
+      !isNullOrEmpty(searchForms[i].componentProps) &&
+      !isNullOrEmpty(searchForms[i].componentProps.api) &&
+      searchForms[i].componentProps.api == 'GetEnum'
+    ) {
+      searchForms[i].componentProps.api = GetEnum;
+      searchForms[
+        i
+      ].componentProps.params.name = `${objParams.value.ID}+${searchForms[i].field}s`;
+      searchForms[i].componentProps.labelField = unref(getLocale) == 'zh_CN' ? 'Desc' : 'Name';
+    }
+    if (
+      !isNullOrEmpty(searchForms[i].componentProps) &&
+      !isNullOrEmpty(searchForms[i].componentProps.api) &&
+      searchForms[i].componentProps.api == 'getEntity'
+    ) {
+      searchForms[i].componentProps.api = getEntity;
+      searchForms[i].componentProps.resultField = 'Data.Items';
+    }
+    onChangeConfig(searchForms[i]);
+  }
+  _searchFormSchema.value = searchForms;
+  var _cruds = JSON.parse(data.Data.Items[0].FORM_JSON);
+  for (const i in _cruds) {
+    if (
+      !isNullOrEmpty(_cruds[i].componentProps) &&
+      !isNullOrEmpty(_cruds[i].componentProps.api) &&
+      _cruds[i].componentProps.api == 'GetEnum'
+    ) {
+      _cruds[i].componentProps.api = GetEnum;
+      _cruds[i].componentProps.params.name = `${objParams.value.ID}+${_cruds[i].field}s`;
+      _cruds[i].componentProps.labelField = unref(getLocale) == 'zh_CN' ? 'Desc' : 'Name';
+    }
+    if (
+      !isNullOrEmpty(_cruds[i].componentProps) &&
+      !isNullOrEmpty(_cruds[i].componentProps.api) &&
+      _cruds[i].componentProps.api == 'getEntity'
+    ) {
+      _cruds[i].componentProps.api = getEntity;
+      _cruds[i].componentProps.resultField = 'Data.Items';
+    }
+    if (_cruds[i].component == 'Upload') {
+      _cruds[i].componentProps = {};
+      _cruds[i].componentProps.api = uploadApi;
+      _cruds[i].componentProps.multiple = false;
+      _cruds[i].componentProps.maxNumber = 1;
+      _cruds[i].rules = [{ required: true, message: '璇烽�夋嫨涓婁紶鏂囦欢' }];
+    }
+    if (_cruds[i].isexist == 'Y') {
+      isExistSql.value = _cruds[i].field;
+    }
+    onChangeConfig(_cruds[i]);
+  }
+  _crudFormSchema.value = _cruds;
+
+  var objs = JSON.parse(data.Data.Items[0].BASE_FORM_JSON);
+  for (const i in objs) {
+    if (!isNullOrEmpty(objs[i].customRender)) {
+      const func = new Function(objs[i].customRender)();
+      objs[i].customRender = ({ record }) => {
+        let texts = func(record);
+        return h(Tooltip, { title: texts.text }, () =>
+          h(Tag, { color: texts.color }, () => texts.text),
+        );
+      };
+    }
+  }
+  _columns.value = objs;
+});
+
+/**
+ * @description: 寮瑰嚭閫夋嫨妗嗛�夋嫨鎴愬姛鍚庝簨浠�
+ * @param {*} d
+ * @param {*} u
+ * @param {*} item
+ * @return {*}
+ */
+function handleItemSuccess(d, u, item) {
+  getForm().setFieldsValue(GetSelectSuccess(d, u, getForm().getFieldsValue()[`${item.replace(/form-/, '').replace(/add/, '')}PSelect_0`]));
+}
+
+/**
+ * @description: 寮瑰嚭閫夋嫨妗�
+ * @param {*} item
+ * @return {*}
+ */
+function handleSelectItem(item) {
+  OpenSelectItem(openItemModal, getForm().getFieldsValue()[`${item.replace(/form-/, '').replace(/add/, '')}PSelect_0`]);
+}
+
+/**
+ * @description: Select 鑷畾涔塷nChange鏂规硶
+ * @param {*} obj
+ * @return {*}
+ */
+function onChangeConfig(obj: any) {
+  if (obj.component == 'Select') {
+    var options = obj.componentProps.options;
+    var onChange = obj.componentProps.onChange;
+    obj.componentProps = ({ schema, tableAction, formActionType, formModel }) => {
+      return {
+        options: options,
+        onChange: (e) => custOnChange(e, onChange, objParams.value.ID),
+      };
+    };
+  }
+}
+
+//寮瑰嚭妗嗙‘瀹氳繑鍥�
+function custSuccess(d) {
+  reload();
+}
+
+/**
+ * @description: 鍚勮〃鍗曞唴寮瑰嚭閫夋嫨妗嗛�夋嫨鎴愬姛鍚庢柟娉�
+ * @param {*} d
+ * @param {*} u
+ * @param {*} item
+ * @return {*}
+ */
+function handleEntSuccess(d, u, item) {
+  var values = GetSelectSuccess(d, u, cType.value);
+  selectVals.value = values; //淇濆瓨寮瑰嚭妗嗛�夋嫨鐨勭粨鏋�
+  let _val = {};
+  _val[d.returnFieldName] = values[d.returnFieldName];
+  useFormData.value[item][1].setFieldsValue(_val);
+}
+
+/**
+ * @description: 鎵撳紑鑷畾涔夋ā鎬佹
+ * @param {*} item
+ * @return {*}
+ */
+function handleCustClick(item) {
+  OpenCustModal(
+    useModalData.value[item][1].openModal, //甯﹀叆openModal鏂规硶
+    cType.value,
+    item,
+    [],
+    // selectVals.value['ROUTE_CODE'],
+  ); //[openRvModal], selectVals.value['ID']杩欐槸鑷畾涔夊弬鏁帮紝鎸夊疄闄呴渶姹�
+}
 </script>

--
Gitblit v1.9.3