From b4496ad2462843c575a3902c94a87694426f29a3 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期四, 27 六月 2024 16:03:37 +0800
Subject: [PATCH] 产品工艺路线更新

---
 src/views/tigerprojects/bas/MaterialInfo/index.vue |  111 +++++++++++++++++++++++++++----------------------------
 1 files changed, 55 insertions(+), 56 deletions(-)

diff --git a/src/views/tigerprojects/bas/MaterialInfo/index.vue b/src/views/tigerprojects/bas/MaterialInfo/index.vue
index 531396f..3cbc98d 100644
--- a/src/views/tigerprojects/bas/MaterialInfo/index.vue
+++ b/src/views/tigerprojects/bas/MaterialInfo/index.vue
@@ -3,32 +3,19 @@
     <BasicTable @register="registerTable">
       <template #toolbar>
         <!-- <a-button type="primary" @click="handleRenew"> 鎵归噺鏇存柊 </a-button> -->
-        <a-button type="primary" @click="handleCreate" v-if="HasRole"> 鏂板鐗╂枡 </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),
-              },
-            },
-            // {
-            //   icon: 'binding|svg',
-            //   tooltip: '缁戝畾宸ヨ壓',
-            //   onClick: handleBinding.bind(null, record),
-            // },
-          ]"
-        />
+        <TableAction :actions="GenerateActionButton(record)" />
       </template>
     </BasicTable>
     <MaterialDrawer @register="registerDrawer" @success="handleSuccess" />
@@ -36,7 +23,7 @@
   </div>
 </template>
 <script lang="ts" setup>
-  import { BasicTable, useTable, TableAction } from '/@/components/Table';
+  import { BasicTable, useTable, TableAction, PopConfirm, ActionItem } from '/@/components/Table';
   import { useDrawer } from '/@/components/Drawer';
   import MaterialDrawer from './MaterialDrawer.vue';
   import MaterialModal from './MaterialModal.vue';
@@ -47,15 +34,14 @@
   import { useGo } from '/@/hooks/web/usePage';
   import { useRouter } from 'vue-router';
   import { onMounted, ref } from 'vue';
-  import { getMenuButtons } from '/@/api/sys/menu';
-import { useUserStore } from '/@/store/modules/user';
+  import { getRoleButtons } from '/@/api/sys/menu';
+  import { isNullOrEmpty } from '/@/utils/is';
 
   const go = useGo();
   const { currentRoute } = useRouter();
   const [registerDrawer, { openDrawer }] = useDrawer();
   const [registerModal, { openModal: openMaterialModal }] = useModal();
   const buttons = ref([]);
-  const HasRole = ref(false);
   const [registerTable, { reload }] = useTable({
     title: '鐗╂枡鍒楄〃',
     api: getListByPage,
@@ -76,7 +62,47 @@
       slots: { customRender: 'action' },
     },
   });
-  function handleCreate() {
+
+  /**
+   * @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),
+            };
+          }
+        }
+        actionItem.push({
+          icon: isNullOrEmpty(x['ICON_URL']) ? url : x['ICON_URL'],
+          onClick: _click,
+          color: color,
+          popConfirm: _popConfirm,
+        });
+      }
+    });
+    return actionItem;
+  }
+
+  function handleCreate(fnName: string) {
     openDrawer(true, {
       isUpdate: false,
     });
@@ -109,33 +135,6 @@
   }
 
   onMounted(async () => {
-    buttons.value = (await getMenuButtons(currentRoute.value.meta.menuCode as string)).Data.Items;
-    const roles = useUserStore().getUserInfo.roles;
-    HasRole.value = roles.some((item) => item.MENU_CODE === buttons.value[0]['FUNC_CODE']);
+    buttons.value = await getRoleButtons(currentRoute.value.meta.menuCode as string);
   });
-
-  /**
-   * @description: 璺宠浆浜у搧宸ヨ壓缁戝畾椤甸潰
-   * @param {*} record
-   * @return {*}
-   */
-  function handleBinding(record: Recordable) {
-    const id = {
-      ID: record.ID,
-      Name: 'ProdRouteBinding',
-      CODE: record.ITEM_CODE,
-      Title: `浜у搧[${record.ITEM_CODE}]宸ヨ壓缁戝畾`,
-      colSlots: [],
-      crudColSlots: [],
-      dense: true,
-      pageTitle: `浜у搧宸ヨ壓缁戝畾`,
-      pageContent: `杩欓噷鏄鐞嗕骇鍝佺殑宸ヨ壓缁戝畾锛屼竴涓骇鍝佸彲浠ョ粦瀹氬涓伐鑹鸿矾绾縛,
-    };
-    go(`/ProdRouteBinding/CP/${encodeURI(JSON.stringify(id))}`);
-    // let obj = JSON.stringify(id);
-    // push({
-    //   path: '/ProdRouteBinding',
-    //   state: {obj}, //HTML5 History API 鐨勪紶鍙傦紝鍙傛暟闅愯棌涓嶅湪鍦板潃鏍忔樉绀猴紙history锛�
-    // })
-  }
 </script>

--
Gitblit v1.9.3