From 969725647117eb7ca148b2e8cfa9ec8b5eb432fa Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期二, 22 十月 2024 11:04:10 +0800
Subject: [PATCH] 工艺缓存优化

---
 src/views/tigerprojects/bas/MaterialInfo/index.vue |  242 +++++++++++++++++++++++++++++++----------------
 1 files changed, 158 insertions(+), 84 deletions(-)

diff --git a/src/views/tigerprojects/bas/MaterialInfo/index.vue b/src/views/tigerprojects/bas/MaterialInfo/index.vue
index 18ce463..aa7b5a0 100644
--- a/src/views/tigerprojects/bas/MaterialInfo/index.vue
+++ b/src/views/tigerprojects/bas/MaterialInfo/index.vue
@@ -2,110 +2,184 @@
   <div>
     <BasicTable @register="registerTable">
       <template #toolbar>
-        <a-button type="primary" @click="handleRenew"> 鎵归噺鏇存柊 </a-button>
-        <a-button type="primary" @click="handleCreate"> 鏂板鐗╂枡 </a-button>
+        <!-- <a-button type="primary" @click="handleRenew"> 鎵归噺鏇存柊 </a-button> -->
+        <a-button
+          type="primary"
+          @click="handleCreate(item['DO_METHOD'])"
+          :preIcon="item['ICON_URL']"
+          v-for="item in buttons.filter((m) => m['BUTTON_TYPE'] == 0)"
+          :key="item"
+        >
+          {{ item['FUNC_NAME'] }}
+        </a-button>
       </template>
       <template #action="{ record }">
         <!-- b87079a98deb456a9cfa506bfd1a7bc6 -->
-        <TableAction
-          :actions="[
-            {
-              icon: 'clarity:note-edit-line',
-              onClick: handleEdit.bind(null, record),
-            },
-            {
-              icon: 'ant-design:delete-outlined',
-              color: 'error',
-              popConfirm: {
-                title: '鏄惁纭鍒犻櫎?',
-                placement: 'left',
-                confirm: handleDelete.bind(null, record),
-              },
-            },
-          ]"
-        />
+        <TableAction :actions="GenerateActionButton(record)" />
       </template>
     </BasicTable>
     <MaterialDrawer @register="registerDrawer" @success="handleSuccess" />
     <MaterialModal @register="registerModal" />
   </div>
 </template>
-<script lang="ts">
-  import { defineComponent } from 'vue';
-  import { BasicTable, useTable, TableAction } from '/@/components/Table';
+<script lang="ts" setup>
+  import { BasicTable, useTable, TableAction, PopConfirm, ActionItem } from '/@/components/Table';
   import { useDrawer } from '/@/components/Drawer';
   import MaterialDrawer from './MaterialDrawer.vue';
   import MaterialModal from './MaterialModal.vue';
   import { columns, searchFormSchema } from './Material.data';
   import { DeleteMaterial, getMaterialListByPage } from '../../../../api/tigerapi/bas/MaterialInfo';
   import { useModal } from '/@/components/Modal';
+  import { getListByPage } from '/@/api/tigerapi/system';
+  import { useGo } from '/@/hooks/web/usePage';
+  import { useRouter } from 'vue-router';
+  import { onMounted, ref } from 'vue';
+  import { getRoleButtons } from '/@/api/sys/menu';
+  import { isNullOrEmpty } from '/@/utils/is';
+  import { useUserStore } from '/@/store/modules/user';
 
-  export default defineComponent({
-    name: 'MaterialManagement',
-    components: { BasicTable, MaterialDrawer, TableAction, MaterialModal },
-    setup() {
-      const [registerDrawer, { openDrawer }] = useDrawer();
-      const [registerModal, { openModal: openMaterialModal }] = useModal();
-      const [registerTable, { reload }] = useTable({
-        title: '鐗╂枡鍒楄〃',
-        api: getMaterialListByPage,
-        columns,
-        formConfig: {
-          labelWidth: 120,
-          schemas: searchFormSchema,
-        },
-        useSearchForm: true,
-        showTableSetting: true,
-        bordered: true,
-        showIndexColumn: false,
-        actionColumn: {
-          width: 100,
-          title: '鎿嶄綔',
-          dataIndex: 'action',
-          slots: { customRender: 'action' },
-        },
-      });
-      function handleCreate() {
-        openDrawer(true, {
-          isUpdate: false,
+  const go = useGo();
+  const { currentRoute } = useRouter();
+  const [registerDrawer, { openDrawer }] = useDrawer();
+  const [registerModal, { openModal: openMaterialModal }] = useModal();
+  const buttons = ref([]);
+  const [registerTable, { reload }] = useTable({
+    title: '鐗╂枡鍒楄〃',
+    api: getListByPage,
+    searchInfo: {
+      TABLE_NAME: 'BAS_ITEM',
+      option: {
+        //鏍规嵁鎹偣鏌ヨ锛屽繀闇�甯﹁繖涓弬鏁�
+        UserId: useUserStore().getUserInfo.userId,
+        ByOrg: true,
+        CurOrg: useUserStore().getUserInfo.orgCode,
+      },
+    },
+    columns,
+    formConfig: {
+      labelWidth: 120,
+      schemas: searchFormSchema,
+    },
+    useSearchForm: true,
+    showTableSetting: true,
+    bordered: true,
+    showIndexColumn: false,
+    actionColumn: {
+      width: 100,
+      title: '鎿嶄綔',
+      dataIndex: 'action',
+      slots: { customRender: 'action' },
+    },
+  });
+
+  /**
+   * @description: 鑾峰彇鏉冮檺鎸夐挳鍒楄〃
+   * @param {*} params
+   * @return {*}
+   */
+  function GenerateActionButton(record: Recordable) {
+    let actionItem = [] as ActionItem[];
+    buttons.value.map((x) => {
+      if (x['BUTTON_TYPE'] == 1) {
+        let url = '';
+        let color = undefined as 'success' | 'error' | 'warning' | undefined;
+        let _click = null as any;
+        let _popConfirm = undefined as PopConfirm | undefined;
+        if (x['DO_METHOD'] == 'Edit') {
+          url = 'clarity:note-edit-line';
+          _click = handleEdit.bind(null, record);
+        } else {
+          _click = x['ICON_URL'];
+          if (x['DO_METHOD'] == 'Delete') {
+            url = 'ant-design:delete-outlined';
+            color = 'error';
+            _popConfirm = {
+              title: '鏄惁纭鍒犻櫎?',
+              placement: 'left',
+              confirm: handleDelete.bind(null, record),
+            };
+          }
+        }
+        if (x['DO_METHOD'] == 'goRule') {
+          _click = goRule.bind(null, record);
+        }
+        actionItem.push({
+          icon: isNullOrEmpty(x['ICON_URL']) ? url : x['ICON_URL'],
+          onClick: _click,
+          color: color,
+          popConfirm: _popConfirm,
+          name: '',
         });
       }
-      function handleRenew() {
-        openMaterialModal(true, {
-          data: 'content',
-          info: 'Info',
-        });
-      }
-      function handleSuccess() {
+    });
+    return actionItem;
+  }
+
+  function handleCreate(fnName: string) {
+    openDrawer(true, {
+      isUpdate: false,
+    });
+  }
+  function handleRenew() {
+    openMaterialModal(true, {
+      data: 'content',
+      info: 'Info',
+    });
+  }
+  function handleSuccess() {
+    reload();
+  }
+
+  function handleEdit(record: Recordable) {
+    openDrawer(true, {
+      record,
+      isUpdate: true,
+    });
+  }
+  function handleDelete(record: Recordable) {
+    console.log(record);
+    //鍒犻櫎鐗╂枡
+    const apiAction = DeleteMaterial(record);
+    apiAction.then((action) => {
+      if (action.IsSuccessed) {
         reload();
       }
+    });
+  }
 
-      function handleEdit(record: Recordable) {
-        openDrawer(true, {
-          record,
-          isUpdate: true,
-        });
-      }
-      function handleDelete(record: Recordable) {
-        console.log(record);
-        //鍒犻櫎鐗╂枡
-        const apiAction = DeleteMaterial(record);
-        apiAction.then((action) => {
-          if (action.IsSuccessed) {
-            reload();
-          }
-        });
-      }
-      return {
-        registerTable,
-        registerDrawer,
-        registerModal,
-        handleCreate,
-        handleEdit,
-        handleDelete,
-        handleRenew,
-        handleSuccess,
-      };
-    },
+  function goRule(record: Recordable) {
+    const id = {
+      CODE: record['ITEM_CODE'],
+      ID: record['ID'],
+      Name: 'BAS_ITEM_CUST',
+      SessionName: 'BAS_ITEM_CUST_update',
+      Title: `缂栬緫鐗╂枡鏉$爜瑙勫垯锛�${record['ITEM_CODE']}`,
+      IsExist: 'RULE_CODE',
+      IsID: false,
+      crudColSlots: {
+        BAS_ITEM_CUST: ['BAS_CUSTOMER1add', 'BAS_CODE_RULE1add'],
+      } /* 澧炲垹鏀硅〃鍗曞瓧娈电殑鎻掓Ы鍒楄〃锛屼竴鑸敤浜庡脊鍑洪�夋嫨妗嗘寜閽� */,
+      colSlotsInHigh: ['BAS_CODE_RULE1add'],
+      drawers: [
+        {
+          name: 'BAS_ITEM_CUST',
+          dataType: 'BAS_ITEM_CUST', //濡傛灉杩欓噷缁欎簡鍊硷紝鍒欎細鏇挎崲name鐨勫疄浣撳悕鍘绘煡涔夋暟鎹簱
+          code: 'ITEM_CODE',
+          type: 'one',
+          keyName: 'BAS_ITEM_CUST',
+          order: '',
+        },
+      ], //drawers鏄彸杈瑰脊鍑哄鏀逛晶妗嗙殑鍚嶅瓧鍒楄〃
+    };
+    // 灏嗗璞¤浆鎹负JSON瀛楃涓插苟淇濆瓨鍒皊essionStorage
+    sessionStorage.removeItem(`${id.SessionName}_params`);
+    sessionStorage.setItem(`${id.SessionName}_params`, encodeURI(JSON.stringify(id)));
+    go(
+      `/BAS_ITEM_CUST/High/${encodeURI(JSON.stringify({ sName: id.SessionName, Name: id.Name }))}`,
+    );
+  }
+
+  onMounted(async () => {
+    buttons.value = await getRoleButtons(currentRoute.value.meta.menuCode as string);
   });
 </script>

--
Gitblit v1.9.3