From 04aac2eda9b5d9473eb96d12b32cb76fb45135c6 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期日, 21 七月 2024 19:52:31 +0800
Subject: [PATCH] 工单更新

---
 src/views/tigerprojects/system/lowcode/composition/Config.vue |  499 ++++++++----------------------------------------------
 1 files changed, 79 insertions(+), 420 deletions(-)

diff --git a/src/views/tigerprojects/system/lowcode/composition/Config.vue b/src/views/tigerprojects/system/lowcode/composition/Config.vue
index 05bbb61..bbff634 100644
--- a/src/views/tigerprojects/system/lowcode/composition/Config.vue
+++ b/src/views/tigerprojects/system/lowcode/composition/Config.vue
@@ -4,12 +4,12 @@
  * @version: 
  * @Date: 2024-06-24 23:44:31
  * @LastEditors: Ben Lin
- * @LastEditTime: 2024-06-25 21:34:33
+ * @LastEditTime: 2024-07-01 16:49:12
 -->
 <template>
-  <Card title="琛屼负閰嶇疆">
+  <Card :title="GetTitle(props.configType)['configTitle']">
     <BasicForm @register="registerForm">
-      <template #[item]="{ field }" v-for="item in crudColSlots" :key="item">
+      <template #[item]="{ field }" v-for="item in GetCrudColSlots()" :key="item">
         <a-button
           v-if="field"
           class="mt-1 ml-1"
@@ -31,203 +31,54 @@
   import { Card } from 'ant-design-vue';
   import { useModal } from '/@/components/Modal';
   import GeneralModal from '/@/views/components/GeneralModal.vue';
-  import { useUserStore } from '/@/store/modules/user';
   import { useI18n } from '/@/hooks/web/useI18n';
-  import { GetEnum, getEntity } from '/@/api/tigerapi/system';
-  import { useLocale } from '/@/locales/useLocale';
-  import { isNullOrEmpty } from '/@/utils/is';
+  import { isNullOrUnDef } from '/@/utils/is';
+  import { EntityCustFunctionType } from '/@/api/tigerapi/model/basModel';
 
   const { t } = useI18n();
-  const { getLocale } = useLocale();
   const emit = defineEmits(['success', 'register']);
+  const props = defineProps({
+    configType: { type: String },
+  });
   const [registerItemAdd, { openModal: openItemModal }] = useModal();
-  const Prod_Code = inject('prodCode') as Ref<string>;
-  const ACT_ID = inject('actionCode') as Ref<string>;
-  const Cust_Code = inject('custCode') as Ref<string>;
-  const crudColSlots = ref<any>([
-    'scanadd',
-    'assyadd',
-    'testadd',
-    'auditadd',
-    'printadd',
-    'pkgadd',
+  const objParams = inject('objParams') as Ref<any>;
+  const custImport = ref<any[]>([]);
+  const EntityCustFunction = ref([
+    {
+      GetCrudForm(type: string | undefined) {},
+      GetCrudColSlots(val, id) {},
+      OpenSelectItem(openItemModal: Fn, ...args) {},
+      GetSelectSuccess(d, u, ...args) {},
+      GetTitle(type: string | undefined) {},
+      nodeChange(params: {
+        resetFields: any;
+        setFieldsValue: any;
+        objParams: Ref<any>;
+        selectedNodes: Ref<any[]>;
+      }) {},
+      SubmitFunc(values: Recordable<any>, type: string, emit) {},
+    } as EntityCustFunctionType,
   ]);
+  /* 鍔ㄦ�乮mport瀹炰綋鍚�.ts鐨勮嚜瀹氫箟鏂规硶 */
+  try {
+    custImport.value = await import(`../entityts/${objParams.value['Name']}.ts`);
+  } catch (e) {}
+  const [
+    {
+      GetCrudForm,
+      GetCrudColSlots,
+      nodeChange,
+      OpenSelectItem,
+      GetSelectSuccess,
+      GetTitle,
+      SubmitFunc,
+    },
+  ] = isNullOrUnDef(custImport.value['default'])
+    ? EntityCustFunction.value
+    : custImport.value['default']();
 
-  const isNormal = (type: number) => type === 0;
-  const isScan = (type: number) => type === 1;
-  const isAssy = (type: number) => type === 2;
-  const isTest = (type: number) => type === 3;
-  const isAudit = (type: number) => type === 4;
-  const isPrint = (type: number) => type === 5;
-  const isPackage = (type: number) => type === 6;
-  const formSchema: FormSchema[] = [
-    {
-      field: 'PROD_CODE',
-      label: '浜у搧缂栫爜',
-      component: 'Input',
-      dynamicDisabled: ({ values }) => {
-        return true;
-      },
-      colProps: { span: 12 },
-    },
-    {
-      field: 'ID',
-      label: 'ID',
-      component: 'Input',
-      show: false,
-    },
-    {
-      field: 'CUST_CODE',
-      label: '瀹㈡埛缂栫爜',
-      component: 'Input',
-      dynamicDisabled: ({ values }) => {
-        return true;
-      },
-      colProps: { span: 12 },
-    },
-    {
-      field: 'ACT_TYPE',
-      label: '琛屼负绫诲瀷',
-      component: 'ApiSelect',
-      colProps: { span: 12 },
-      defaultValue: 0,
-      componentProps: {
-        api: GetEnum,
-        params: { name: 'MES_PROD_ACTION+ACT_TYPEs' },
-        resultField: 'Data',
-        labelField: unref(getLocale) == 'zh_CN' ? 'Desc' : 'Name',
-        valueField: 'Value',
-        // onChange: (e, v) => {
-        //   alert(e)
-        //   console.log('ApiSelect====>:', e, v);
-        // },
-      },
-    },
-    {
-      field: 'IS_ACTIVE',
-      label: '鏄惁鍚敤',
-      required: true,
-      component: 'Select',
-      colProps: { span: 12 },
-      componentProps: {
-        options: [
-          {
-            label: '鏄�',
-            value: 'Y',
-            key: 'Y',
-          },
-          {
-            label: '鍚�',
-            value: 'N',
-            key: 'N',
-          },
-        ],
-      },
-    },
-    {
-      field: 'RULE_CODE',
-      label: '鎵爜楠岃瘉',
-      component: 'Input',
-      colProps: { span: 10 },
-      ifShow: ({ values }) => isScan(values.ACT_TYPE),
-    },
-    {
-      field: '0',
-      label: '1',
-      defaultValue: '',
-      component: 'Input',
-      colProps: { span: 2, pull: 1 },
-      ifShow: ({ values }) => isScan(values.ACT_TYPE),
-      colSlot: 'scanadd',
-    },
-    {
-      field: 'ITEM_CODE',
-      label: '缁勮涓婃枡',
-      colProps: { span: 10 },
-      component: 'Input',
-      ifShow: ({ values }) => isAssy(values.ACT_TYPE),
-    },
-    {
-      field: '00',
-      label: '1',
-      defaultValue: '',
-      component: 'Input',
-      colProps: { span: 2, pull: 1 },
-      ifShow: ({ values }) => isAssy(values.ACT_TYPE),
-      colSlot: 'assyadd',
-    },
-    {
-      field: 'TEST_CODE',
-      label: '浜у搧娴嬭瘯',
-      colProps: { span: 10 },
-      component: 'Input',
-      ifShow: ({ values }) => isTest(values.ACT_TYPE),
-    },
-    {
-      field: 'test0',
-      label: '1',
-      defaultValue: '',
-      component: 'Input',
-      colProps: { span: 2, pull: 1 },
-      ifShow: ({ values }) => isTest(values.ACT_TYPE),
-      colSlot: 'testadd',
-    },
-    {
-      field: 'SAPL_CODE',
-      label: '浜у搧鎶芥',
-      colProps: { span: 10 },
-      component: 'Input',
-      ifShow: ({ values }) => isAudit(values.ACT_TYPE),
-    },
-    {
-      field: 'audit0',
-      label: '1',
-      defaultValue: '',
-      component: 'Input',
-      colProps: { span: 2, pull: 1 },
-      ifShow: ({ values }) => isAudit(values.ACT_TYPE),
-      colSlot: 'auditadd',
-    },
-    {
-      field: 'LABEL_CODE',
-      label: '鏍囩鎵撳嵃',
-      colProps: { span: 10 },
-      component: 'Input',
-      ifShow: ({ values }) => isPrint(values.ACT_TYPE),
-    },
-    {
-      field: 'print0',
-      label: '1',
-      defaultValue: '',
-      component: 'Input',
-      colProps: { span: 2, pull: 1 },
-      ifShow: ({ values }) => isPrint(values.ACT_TYPE),
-      colSlot: 'printadd',
-    },
-    {
-      field: 'pkgRULE_CODE',
-      label: '鍖呰瑙勫垯',
-      colProps: { span: 10 },
-      component: 'Input',
-      ifShow: ({ values }) => isPackage(values.ACT_TYPE),
-    },
-    {
-      field: 'pkg0',
-      label: '1',
-      defaultValue: '',
-      component: 'Input',
-      colProps: { span: 2, pull: 1 },
-      ifShow: ({ values }) => isPackage(values.ACT_TYPE),
-      colSlot: 'pkgadd',
-    },
-    {
-      field: 'REMARK',
-      label: '澶囨敞',
-      component: 'Input',
-      colProps: { span: 12 },
-    },
-  ];
-  const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
+  let formSchema: FormSchema[] = GetCrudForm(props.configType);
+  const [registerForm, { resetFields, setFieldsValue, validate, setProps }] = useForm({
     labelWidth: 120,
     schemas: formSchema,
     actionColOptions: {
@@ -239,201 +90,50 @@
     },
     showActionButtonGroup: true,
     submitButtonOptions: {
-      text: '鎻愪氦',
+      text: '淇濆瓨',
     },
+    submitFunc: customSubmitFunc,
   });
 
+  /* 娉ㄥ叆閫変腑鑺傜偣鏁版嵁 */
+  const selectedNodes = inject('selectedNodes') as Ref<any>;
   watch(
-  () => ACT_ID.value,
-  (newVal, oldVal) => {
+    () => selectedNodes.value,
+    (newVal, oldVal) => {
       nextTick(() => {
-        getActType();
+        setProps({
+          schemas: []
+        });
+        /* 鑺傜偣鍒囨崲浜嬩欢 */
+        nodeChange({ resetFields, setFieldsValue, objParams, selectedNodes });
+        formSchema = GetCrudForm(selectedNodes.value[0].type);
+        setProps({
+          schemas: formSchema
+        });
       });
-  },
-  { deep: true, immediate: true },
-);
+    },
+    { deep: true, immediate: true },
+  );
 
   onMounted(() => {
-    getActType();
+    /* 鑺傜偣鍒囨崲浜嬩欢 */
+    nodeChange({ resetFields, setFieldsValue, objParams, selectedNodes });
   });
 
-  function getActType() {
-    resetFields();
-    let sqlcmd = ' 1=1 ';
-    if (!isNullOrEmpty(Prod_Code.value)) {
-      sqlcmd += `And PROD_CODE = '${Prod_Code.value}'`;
-    }
-    if (!isNullOrEmpty(Cust_Code.value)) {
-      sqlcmd += `And CUST_CODE = '${Cust_Code.value}'`;
-    }
-    if (!isNullOrEmpty(ACT_ID.value)) {
-      sqlcmd += `And ACT_ID = '${ACT_ID.value}'`;
-    }
-    getEntity({
-      sqlcmd: sqlcmd,
-      entityName: 'MES_PROD_ACTION',
-    }).then((res) => {
-      setFieldsValue({
-        PROD_CODE: Prod_Code.value,
-        ACT_TYPE: res.Data.Items[0].ACT_TYPE
-      });
-    });
+  async function customSubmitFunc() {
+    try {
+      const values = await validate();
+      SubmitFunc(values,props.configType, emit);
+      // values.AUTH_PROD = useUserStore().getUserInfo.prodCode;
+      // values.FACTORY = useUserStore().getUserInfo.prodCode;
+      // const apiAction = SaveEntity(values, true, 'MES_PROD_ACTION');
+      // apiAction.then((action) => {
+      //   if (action.IsSuccessed) {
+      //     emit('success');
+      //   }
+      // });
+    } catch (e) {}
   }
-
-  async function handleSubmit() {
-    // try {
-    //   const values = await validate();
-    //   setDrawerProps({ confirmLoading: true });
-    //   // TODO custom api
-    //   //淇濆瓨宸ュ崟
-    //   if (!unref(isUpdate)) {
-    //     values.STATUS = 0;
-    //   }
-    //   values.AUTH_PROD = useUserStore().getUserInfo.prodCode;
-    //   values.FACTORY = useUserStore().getUserInfo.prodCode;
-    //   const apiAction = SaveEntity(values, unref(isUpdate), 'BIZ_MES_WO');
-    //   apiAction.then((action) => {
-    //     if (action.IsSuccessed) {
-    //       closeDrawer();
-    //       emit('success');
-    //     }
-    //   });
-    // } finally {
-    //   setDrawerProps({ confirmLoading: false });
-    // }
-  }
-
-  const itemCodeModalCfg = {
-    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' },
-  };
-
-  const ruleModalCfg = {
-    title: '瑙勫垯鍒楄〃',
-    schemas: [
-      {
-        field: 'RULE_CODE',
-        component: 'Input',
-        label: '瑙勫垯缂栫爜',
-        colProps: {
-          span: 12,
-        },
-      },
-    ],
-    ItemColumns: [
-      {
-        title: t('瑙勫垯缂栫爜'),
-        dataIndex: 'RULE_CODE',
-        resizable: true,
-        sorter: true,
-        width: 200,
-      },
-      {
-        title: t('瑙勫垯鍚嶇О'),
-        dataIndex: 'RULE_NAME',
-        resizable: true,
-        sorter: true,
-        width: 180,
-      },
-    ],
-    tableName: 'BAS_CODE_RULE',
-    rowKey: 'RULE_CODE',
-    searchInfo: { TABLE_NAME: 'BAS_CODE_RULE' },
-  };
-
-  const printModalCfg = {
-    title: '鎵撳嵃妯℃澘鍒楄〃',
-    schemas: [
-      {
-        field: 'LABEL_CODE',
-        component: 'Input',
-        label: '妯℃澘缂栫爜',
-        colProps: {
-          span: 12,
-        },
-      },
-    ],
-    ItemColumns: [
-      {
-        title: t('妯℃澘缂栫爜'),
-        dataIndex: 'LABEL_CODE',
-        resizable: true,
-        sorter: true,
-        width: 200,
-      },
-      {
-        title: t('妯℃澘鍚嶇О'),
-        dataIndex: 'LABEL_NAME',
-        resizable: true,
-        sorter: true,
-        width: 180,
-      },
-    ],
-    tableName: 'BAS_LABEL_TEMP',
-    rowKey: 'LABEL_CODE',
-    searchInfo: { TABLE_NAME: 'BAS_LABEL_TEMP' },
-  };
-
-  const pkgModalCfg = {
-    title: '鍖呰瑙勫垯鍒楄〃',
-    schemas: [
-      {
-        field: 'RULE_CODE',
-        component: 'Input',
-        label: '鍖呰瑙勫垯缂栫爜',
-        colProps: {
-          span: 12,
-        },
-      },
-    ],
-    ItemColumns: [
-      {
-        title: t('鍖呰瑙勫垯缂栫爜'),
-        dataIndex: 'RULE_CODE',
-        resizable: true,
-        sorter: true,
-        width: 200,
-      },
-      {
-        title: t('鍖呰瑙勫垯鍚嶇О'),
-        dataIndex: 'RULE_NAME',
-        resizable: true,
-        sorter: true,
-        width: 180,
-      },
-    ],
-    tableName: 'BAS_PKG_RULE',
-    rowKey: 'RULE_CODE',
-    searchInfo: { TABLE_NAME: 'BAS_PKG_RULE' },
-  };
 
   /**
    * @description: 鐐瑰嚮鎵撳紑寮瑰嚭閫夋嫨鍒楄〃妗�
@@ -441,25 +141,7 @@
    * @return {*}
    */
   function handleSelectItem(item) {
-    let config = {};
-    switch (item) {
-      case 'scanadd':
-        config = ruleModalCfg;
-        break;
-      case 'assyadd':
-        config = itemCodeModalCfg;
-        break;
-      case 'testadd':
-        config = itemCodeModalCfg;
-        break;
-      case 'printadd':
-        config = printModalCfg;
-        break;
-      case 'pkgadd':
-        config = pkgModalCfg;
-        break;
-    }
-    openItemModal(true, config);
+    OpenSelectItem(openItemModal, item);
   }
 
   /**
@@ -470,29 +152,6 @@
    * @return {*}
    */
   function handleItemSuccess(d, u, item) {
-    let value = {};
-    switch (item) {
-      case 'scanadd':
-        value = {
-          RULE_CODE: d.values['val'],
-        };
-        break;
-      case 'assyadd':
-        value = {
-          ITEM_CODE: d.values['val'],
-        };
-        break;
-      case 'printadd':
-        value = {
-          LABEL_CODE: d.values['val'],
-        };
-        break;
-      case 'pkgadd':
-        value = {
-          pkgRULE_CODE: d.values['val'],
-        };
-        break;
-    }
-    setFieldsValue(value);
+    setFieldsValue(GetSelectSuccess(d, u, item));
   }
 </script>

--
Gitblit v1.9.3