From 7cf58a4d2fff6b9cba9029d4d43ba9744dbef864 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期四, 18 七月 2024 15:49:03 +0800
Subject: [PATCH] 工单更新

---
 src/views/components/CustModal.vue |  101 ++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 80 insertions(+), 21 deletions(-)

diff --git a/src/views/components/CustModal.vue b/src/views/components/CustModal.vue
index a233bb4..d0bd18c 100644
--- a/src/views/components/CustModal.vue
+++ b/src/views/components/CustModal.vue
@@ -1,3 +1,11 @@
+<!--
+ * @Description: 鑷畾涔夊脊鍑烘锛屽彲浠ヨ嚜瀹氫箟澶氫釜琛ㄥ崟
+ * @Author: Ben Lin
+ * @version: 
+ * @Date: 2024-06-05 15:46:07
+ * @LastEditors: Ben Lin
+ * @LastEditTime: 2024-07-18 15:42:20
+-->
 <template>
   <BasicModal
     v-bind="$attrs"
@@ -22,13 +30,18 @@
   </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();
   const ALayout = Layout;
   const ACard = Card;
   const ALayoutContent = LayoutContent;
@@ -38,13 +51,31 @@
   const title = ref('');
   const width = ref('');
   const FnName = ref('');
+  const mValues = ref<Recordable>({});
+  const initFnName = ref({});
   const dtlSlots = ref([] as any[]);
   const formSchema = ref([] as FormSchema[]);
   const formElName = ref([]);
-  const useFormData = ref({});
+  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,
+  ]);
+  /* 鍔ㄦ�乮mport瀹炰綋鍚�.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) => {
@@ -59,27 +90,36 @@
     await nextTick();
     formSchema.value = [];
     setModalProps({ confirmLoading: false });
-    isUpdate.value = !!data?.isUpdate;
+    isUpdate.value = !!data?.isUpdate; //鏄惁鏇存柊
     cType.value = data?.ctype; //鏄摢涓〉闈�
     title.value = data?.title; //寮规鏍囬
     width.value = data?.width; //寮规瀹藉害
     formElName.value = data?.formElName; //寮规涓〃鍗曞悕瀛楁暟缁�
     useFormData.value = data?.formEl; //寮规涓〃鍗曞疄渚嬫暟缁�
+    FnName.value = data?.fnName; //淇濆瓨鏁版嵁鏂规硶
+    mValues.value = data?.values; //涓昏〃鍗曚紶杩囨潵鐨勬暟鎹�
     //寰幆琛ㄥ崟鍚嶆暟缁勶紝鎿嶄綔鍚勮〃鍗曞瓧娈�
     formElName.value.forEach((name) => {
       if (!isNullOrUnDef(useFormData.value[name])) {
-        useFormData.value[name][1].resetFields();
+        useFormData.value[name][1]['resetFields']();
         if (unref(isUpdate)) {
-          useFormData.value[name][1].setFieldsValue({
-            ...data,
+          useFormData.value[name][1]['setFieldsValue']({
+            ...mValues.value,
           });
         }
       }
     });
     //鍒濆鍖栨柟娉曡嚜瀹氫箟
-    if (!isNullOrEmpty(data?.FnName)) {
-      FnName.value = data?.FnName;
-      custFunction(unref(isUpdate.value), FnName.value, cType.value);
+    if (!isNullOrEmpty(data?.initFnName)) {
+      initFnName.value = data?.initFnName;
+      let param: CustModalParams = {
+        cType: cType.value,
+        values: unref(isUpdate.value),
+        mValues: mValues.value,
+        others: data?.others,
+        FnName: initFnName.value[cType.value],
+      };
+      CustFunc(param);
     }
   });
 
@@ -91,25 +131,44 @@
   //   { deep: true },
   // );
 
-  /* 寮规纭畾鎸夐挳鏂规硶 */
+  /**
+   * @description: 寮规纭畾鎸夐挳鏂规硶
+   * @return {*}
+   */
   async function handleSuccess() {
     try {
       var values = {} as any;
       //寰幆琛ㄥ崟鍚嶆暟缁勶紝楠岃瘉鍚勮〃鍗曟暟鎹悎娉曟�э紝鍚堟硶鍒欒繑鍥炲悇琛ㄥ崟鏁版嵁锛岃繑鍥炲�煎彲浠ョ敤values['琛ㄥ崟鍚�']鑾峰彇琛ㄥ崟鏁版嵁
       for (let name of formElName.value) {
-        values[name] = await useFormData.value[name][1].validate();
+        if (!isNullOrEmpty(useFormData.value[name])) {
+          values[name] = await useFormData.value[name][1].validate();
+        }
       }
       setModalProps({ confirmLoading: true });
-
-      closeModal();
-      //鎴愬姛浜嬩欢锛屽皢鏁版嵁杩斿洖鍘熼〉闈�
-      emit('success', {
-        isUpdate: isUpdate.value,
-        fnName: 'handleSubmit',
+      //璋冪敤鑷畾涔変繚瀛樻柟娉曚繚瀛樻暟鎹�
+      values['mValues'] = mValues.value;
+      const action = await CustFunc({
         cType: cType.value,
-        formElName: formElName.value,
-        values,
-      });
+        values: values,
+        FnName: FnName.value,
+      } as unknown as CustModalParams);
+      if (action.IsSuccessed) {
+        closeModal();
+        //鎴愬姛浜嬩欢锛屽皢鏁版嵁杩斿洖鍘熼〉闈�
+        emit('success', {
+          isUpdate: isUpdate.value,
+          fnName: 'handleSubmit',
+          cType: cType.value,
+          formElName: formElName.value,
+          values,
+        });
+      } else {
+        createErrorModal({
+          title: t('璀﹀憡'),
+          content: t(action.LocaleMsg),
+          getContainer: () => document.body,
+        });
+      }
     } finally {
       setModalProps({ confirmLoading: false });
     }

--
Gitblit v1.9.3