From 547c91649da47f4dd8c6706e632797dbd9d79d87 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期六, 07 十二月 2024 16:26:49 +0800
Subject: [PATCH] 工艺路线工序节点保存更新

---
 src/views/tigerprojects/system/lowcode/normalDrawer.vue |  292 ++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 194 insertions(+), 98 deletions(-)

diff --git a/src/views/tigerprojects/system/lowcode/normalDrawer.vue b/src/views/tigerprojects/system/lowcode/normalDrawer.vue
index 3963be5..140dfaa 100644
--- a/src/views/tigerprojects/system/lowcode/normalDrawer.vue
+++ b/src/views/tigerprojects/system/lowcode/normalDrawer.vue
@@ -31,120 +31,216 @@
  * @LastEditTime: 2024-06-14 09:14:35
 -->
 <template>
-  <BasicDrawer v-bind="$attrs" @register="registerDrawer" showFooter :title="getTitle" width="600px" @ok="handleSubmit">
+  <BasicDrawer
+    v-bind="$attrs"
+    @register="registerDrawer"
+    showFooter
+    :title="getTitle"
+    width="580px"
+    @ok="handleSubmit"
+  >
     <BasicForm @register="registerForm">
       <template #[item]="{ field }" v-for="item in crudColSlots" :key="item">
-        <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)" />
+        <a-button
+          v-if="field"
+          class="mt-1 ml-1"
+          size="small"
+          @click="handleSelectItem(item)"
+          preIcon="search|svg"
+        />
+        <GeneralModal
+          v-if="showModal"
+          @register="useModaldata[item][0]"
+          @success="(d, u) => handleItemSuccess(d, u, item)"
+        />
       </template>
     </BasicForm>
   </BasicDrawer>
 </template>
 <script lang="ts" setup>
-import { ref, computed, unref, onMounted } from 'vue';
-import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
-import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
-import { useGlobSetting } from '/@/hooks/setting';
-import NormalModal from '/@/views/components/NormalModal.vue';
-import { SaveEntity, fetchJson, formatValues } from '/@/api/tigerapi/system';
-import { useModal } from '/@/components/Modal';
-import { GetSelectSuccess, OpenSelectItem } from './data';
-import { isNullOrUnDef } from '/@/utils/is';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { useI18n } from '/@/hooks/web/useI18n';
+  import { ref, computed, unref, onMounted, nextTick } from 'vue';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
+  import { useGlobSetting } from '/@/hooks/setting';
+  import GeneralModal from '/@/views/components/GeneralModal.vue';
+  import { SaveEntity, fetchJson, formatValues } from '/@/api/tigerapi/system';
+  import { useModal } from '/@/components/Modal';
+  import { isNullOrUnDef, isTimeViaRegExp8601 } from '/@/utils/is';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { useUserStore } from '/@/store/modules/user';
+  import { dateUtil } from '/@/utils/dateUtil';
 
-const emit = defineEmits(['success', 'register']);
-const { t } = useI18n();
-const {createErrorModal} = useMessage();
-const globSetting = useGlobSetting();
-const isUpdate = ref(true);
-const ifSave = ref(true);
-const entityName = ref('');
-const formSchema = ref([]);
-const crudColSlots = ref<any>([]);
-const isExistSql = ref('');
-const [registerItemAdd, { openModal: openItemModal }] = useModal();
-const [registerForm, { resetFields, setFieldsValue, getFieldsValue, validate }] = useForm({
-  labelWidth: 140,
-  schemas: formSchema as unknown as FormSchema[],
-  actionColOptions: {
-    span: 24,
-  },
-  showActionButtonGroup: false,
-});
+  const emit = defineEmits(['success', 'register']);
+  const { t } = useI18n();
+  const { createErrorModal } = useMessage();
+  const globSetting = useGlobSetting();
+  const isUpdate = ref(true);
+  const ifSave = ref(true);
+  const entityName = ref('');
+  const formSchema = ref([]);
+  const crudColSlots = ref<any>([]);
+  const isExistSql = ref('');
+  const useModaldata = ref({});
+  const showModal = ref(false);
+  const [registerForm, { resetFields, setFieldsValue, getFieldsValue, validate }] = useForm({
+    labelWidth: 140,
+    schemas: formSchema as unknown as FormSchema[],
+    actionColOptions: {
+      span: 24,
+    },
+    showActionButtonGroup: false,
+  });
 
-const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
-  isUpdate.value = !!data?.isUpdate;
-  ifSave.value = !!data?.ifSave;
-  entityName.value = data?.entityName;
-  // formSchema.value = await fetchJson(
-  //   `${globSetting.downloadUrl}/LowCode/${unref(entityName)}/${
-  //     entityName.value
-  //   }_addEditform.json`,
-  // );
-  formSchema.value = data?.formJson;
-  crudColSlots.value = data?.crudColSlots;
-  isExistSql.value = data?.isExistSql
-  resetFields();
-  setDrawerProps({ confirmLoading: false });
-
-  if (unref(isUpdate)) {
-    setFieldsValue({
-      ...data.record,
-    });
-  } else {
-    if (!isNullOrUnDef(data?.others)) {
-      setFieldsValue(data?.others);
+  const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
+    showModal.value = false;
+    /* 鍔ㄦ�乮mport瀹炰綋鍚�.ts鐨勮嚜瀹氫箟鏂规硶 */
+    let m = {} as any;
+    try {
+      m = await import(`./entityts/${data?.keyName}.ts`);
+    } catch (e) {}
+    isUpdate.value = !!data?.isUpdate;
+    ifSave.value = !!data?.ifSave;
+    entityName.value = data?.entityName;
+    formSchema.value = !isNullOrUnDef(m.default)
+      ? m.default()[0].GetCrudForm(data?.name, data?.data, data.record)
+      : data?.formJson;
+    crudColSlots.value = data?.crudColSlots;
+    isExistSql.value = data?.isExistSql;
+    /* 濡傛灉鎻掓Ы鍒楄〃涓嶄负绌猴紝鍒欏垵濮嬪寲妯℃�佺獥鍙� */
+    if (!isNullOrUnDef(crudColSlots.value) && crudColSlots.value.length > 0) {
+      await nextTick();
+      crudColSlots.value.forEach((d) => {
+        useModaldata.value[d] = useModal();
+      });
+      showModal.value = true;
     }
-  }
-});
+    resetFields();
+    setDrawerProps({ confirmLoading: false });
 
-const getTitle = computed(() => (!unref(isUpdate) ? '鏂板' : '缂栬緫'));
-
-onMounted(async () => { });
-async function handleSubmit() {
-  try {
-    let values = await validate();
-    //鍒ゆ柇淇濆瓨鐨勫�煎鏋滄槸[]鏁扮粍鐨勶紝灏辩洿鎺ュ彇[0]绗竴涓�硷紝涓�鑸拡瀵逛笂浼犳ā鏉跨殑鍦板潃
-    values = formatValues(values);
-    setDrawerProps({ confirmLoading: true });
-    // TODO custom api
-    if (!unref(ifSave)) {
-      //淇濆瓨
-      SaveEntity(values, unref(isUpdate), unref(entityName), `${isExistSql.value}='${values[isExistSql.value]}'`).then((action) => {
-        if (action.IsSuccessed) {
-          closeDrawer();
-          emit('success');
-        }else{
-          createErrorModal({ title: t('sys.api.errorTip'), content: action.Message });
+    if (unref(isUpdate)) {
+      /* 寰幆瀛楁鍚嶏紝鍒ゆ柇濡傛灉鏄椂闂寸殑灏辫浆鎹㈡垚dayjs鏍煎紡锛屽惁鍒欐椂闂撮�夋嫨鍣ㄤ細鍑洪敊 */
+      const Keys = Object.getOwnPropertyNames(data.record);
+      for (const k in Keys) {
+        if (!isNullOrUnDef(data.record[Keys[k]]) && isTimeViaRegExp8601(data.record[Keys[k]])) {
+          data.record[Keys[k]] = dateUtil(data.record[Keys[k]]); //杞崲鎴恉ayjs鏍煎紡
         }
+      }
+      setFieldsValue({
+        ...data.record,
       });
     } else {
-      closeDrawer();
-      emit('success', values, { isUpdate: isUpdate.value });
+      if (!isNullOrUnDef(data?.keyFieldValues)) {
+        setFieldsValue(data?.keyFieldValues);
+      }
     }
-  } finally {
-    setDrawerProps({ confirmLoading: false });
+  });
+
+  const getTitle = computed(() => (!unref(isUpdate) ? '鏂板' : '缂栬緫'));
+
+  onMounted(async () => {});
+  async function handleSubmit() {
+    try {
+      let values = await validate();
+      //鍒ゆ柇淇濆瓨鐨勫�煎鏋滄槸[]鏁扮粍鐨勶紝灏辩洿鎺ュ彇[0]绗竴涓�硷紝涓�鑸拡瀵逛笂浼犳ā鏉跨殑鍦板潃
+      values = formatValues(values);
+      setDrawerProps({ confirmLoading: true });
+      // TODO custom api
+      if (unref(ifSave)) {
+        values.AUTH_ORG = useUserStore().getUserInfo.orgCode;
+        //淇濆瓨
+        SaveEntity(
+          values,
+          unref(isUpdate),
+          unref(entityName),
+          `${isExistSql.value}='${values[isExistSql.value]}'`,
+        ).then((action) => {
+          if (action.IsSuccessed) {
+            closeDrawer();
+            emit('success', values, { isUpdate: isUpdate.value });
+          } else {
+            createErrorModal({ title: t('sys.api.errorTip'), content: action.Message });
+          }
+        });
+      } else {
+        closeDrawer();
+        emit('success', values, { isUpdate: isUpdate.value });
+      }
+    } finally {
+      setDrawerProps({ confirmLoading: false });
+    }
   }
-}
 
-/**
- * @description: 寮瑰嚭閫夋嫨妗嗛�夋嫨鎴愬姛鍚庝簨浠�
- * @param {*} d
- * @param {*} u
- * @param {*} item
- * @return {*}
- */
-function handleItemSuccess(d, u, item) {
-  setFieldsValue(GetSelectSuccess(d, u, getFieldsValue()[`${item.replace(/add/, '')}PSelect_0`]));
-}
+  /**
+   * @description: 寮瑰嚭閫夋嫨妗嗛�夋嫨鎴愬姛鍚庝簨浠�
+   * @param {*} d
+   * @param {*} u
+   * @param {*} item
+   * @return {*}
+   */
+  function handleItemSuccess(d, u, item) {
+    /* 鍔ㄦ�乮mport瀹炰綋鍚�.ts鐨勮嚜瀹氫箟鏂规硶 */
+    try {
+      import(`./entityts/${getFieldsValue()[`${item.replace(/add/, '')}PSelect_0`]}.ts`)
+        .then((m) => {
+          const [{ GetSelectSuccess }] = m.default();
+          setFieldsValue(GetSelectSuccess(d, u));
+        })
+        .catch(() => {
+          setFieldsValue({
+            ITEM_CODE: d.values['val'],
+          });
+        });
+    } catch (e) {}
+  }
 
-/**
- * @description: 寮瑰嚭閫夋嫨妗�
- * @param {*} item
- * @return {*}
- */
-function handleSelectItem(item) {
-  OpenSelectItem(openItemModal, getFieldsValue()[`${item.replace(/add/, '')}PSelect_0`]);
-}
+  /**
+   * @description: 寮瑰嚭閫夋嫨妗�
+   * @param {*} item
+   * @return {*}
+   */
+  function handleSelectItem(item) {
+    /* 鍔ㄦ�乮mport瀹炰綋鍚�.ts鐨勮嚜瀹氫箟鏂规硶 */
+    try {
+      import(`./entityts/${getFieldsValue()[`${item.replace(/add/, '')}PSelect_0`]}.ts`)
+        .then((m) => {
+          const [{ OpenSelectItem }] = m.default();
+          OpenSelectItem(useModaldata.value[item][1].openModal);
+        })
+        .catch((err) => {
+          useModaldata.value[item][1].openModal(true, {
+            title: '鐗╂枡鍒楄〃',
+            schemas: [
+              {
+                field: 'ITEM_CODE',
+                component: 'Input',
+                label: '鐗╂枡缂栫爜',
+                colProps: {
+                  span: 12,
+                },
+              },
+            ],
+            ItemColumns: [
+              {
+                title: t('鐗╂枡缂栫爜'),
+                dataIndex: 'ITEM_CODE',
+                resizable: true,
+                sorter: true,
+                width: 200,
+              },
+              {
+                title: t('鐗╂枡鍚嶇О'),
+                dataIndex: 'ITEM_NAME',
+                resizable: true,
+                sorter: true,
+                width: 180,
+              },
+            ],
+            tableName: 'BAS_ITEM',
+            rowKey: 'ITEM_CODE',
+            searchInfo: { TABLE_NAME: 'BAS_ITEM' },
+          });
+        });
+    } catch (e) {}
+  }
 </script>

--
Gitblit v1.9.3