From f1d47feeee1ddb5751847b71f789f2c3b822ec32 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期日, 23 六月 2024 23:55:33 +0800
Subject: [PATCH] 详情页面优化

---
 src/views/tigerprojects/bas/MaterialInfo/index.vue |  170 +++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 100 insertions(+), 70 deletions(-)

diff --git a/src/views/tigerprojects/bas/MaterialInfo/index.vue b/src/views/tigerprojects/bas/MaterialInfo/index.vue
index 18ce463..531396f 100644
--- a/src/views/tigerprojects/bas/MaterialInfo/index.vue
+++ b/src/views/tigerprojects/bas/MaterialInfo/index.vue
@@ -2,8 +2,8 @@
   <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" v-if="HasRole"> 鏂板鐗╂枡 </a-button>
       </template>
       <template #action="{ record }">
         <!-- b87079a98deb456a9cfa506bfd1a7bc6 -->
@@ -22,6 +22,11 @@
                 confirm: handleDelete.bind(null, record),
               },
             },
+            // {
+            //   icon: 'binding|svg',
+            //   tooltip: '缁戝畾宸ヨ壓',
+            //   onClick: handleBinding.bind(null, record),
+            // },
           ]"
         />
       </template>
@@ -30,8 +35,7 @@
     <MaterialModal @register="registerModal" />
   </div>
 </template>
-<script lang="ts">
-  import { defineComponent } from 'vue';
+<script lang="ts" setup>
   import { BasicTable, useTable, TableAction } from '/@/components/Table';
   import { useDrawer } from '/@/components/Drawer';
   import MaterialDrawer from './MaterialDrawer.vue';
@@ -39,73 +43,99 @@
   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 { getMenuButtons } from '/@/api/sys/menu';
+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,
-        });
-      }
-      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();
-          }
-        });
-      }
-      return {
-        registerTable,
-        registerDrawer,
-        registerModal,
-        handleCreate,
-        handleEdit,
-        handleDelete,
-        handleRenew,
-        handleSuccess,
-      };
+  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,
+    searchInfo: { TABLE_NAME: 'BAS_ITEM' },
+    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,
+    });
+  }
+  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();
+      }
+    });
+  }
+
+  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']);
+  });
+
+  /**
+   * @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