From d186b4d37394e4816e0f271fcced4d06b3069454 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期一, 16 十二月 2024 15:31:28 +0800
Subject: [PATCH] 路由query添加当前页面id&&人员组织管理模块下所有页面按钮权限控制

---
 Source/plt-web/plt-web-ui/src/views/system/role/index.vue                    |   66 ++++++++--
 Source/plt-web/plt-web-ui/src/views/system/user/index.vue                    |   70 ++++++++---
 Source/plt-web/plt-web-ui/src/page/index/sidebar/sidebarItem.vue             |    6 
 Source/plt-web/plt-web-ui/src/views/system/department/index.vue              |   52 ++++++--
 Source/plt-web/plt-web-ui/src/views/system/password/index.vue                |   59 ++++++---
 Source/plt-web/plt-web-ui/src/store/modules/user.js                          |    7 
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/enumType/index.vue |   33 +++-
 Source/plt-web/plt-web-ui/src/api/user.js                                    |    9 +
 8 files changed, 217 insertions(+), 85 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/api/user.js b/Source/plt-web/plt-web-ui/src/api/user.js
index 7fb72ed..f66c597 100644
--- a/Source/plt-web/plt-web-ui/src/api/user.js
+++ b/Source/plt-web/plt-web-ui/src/api/user.js
@@ -45,4 +45,11 @@
     params
   });
 }
-
+// 鎸夐挳鏉冮檺鎺ュ彛
+export function getButtons(params) {
+  return request({
+    url: "/api/smFunctionController/getAllButtons",
+    method: "get",
+    params
+  });
+}
diff --git a/Source/plt-web/plt-web-ui/src/page/index/sidebar/sidebarItem.vue b/Source/plt-web/plt-web-ui/src/page/index/sidebar/sidebarItem.vue
index 170ffa4..1d0f1ee 100644
--- a/Source/plt-web/plt-web-ui/src/page/index/sidebar/sidebarItem.vue
+++ b/Source/plt-web/plt-web-ui/src/page/index/sidebar/sidebarItem.vue
@@ -125,6 +125,10 @@
       }
     },
     open(item) {
+      const query = {
+        ...item.query,
+        id:item.id
+      }
       if (this.screen <= 1) this.$store.commit("SET_COLLAPSE");
       if (this.validIsOpen(item)) {
         window.open(item[this.pathKey]);
@@ -136,7 +140,7 @@
             name: item[this.labelKey],
             src: item[this.pathKey]
           }, item.meta),
-          query: item.query
+          query: query
         });
       }
     }
diff --git a/Source/plt-web/plt-web-ui/src/store/modules/user.js b/Source/plt-web/plt-web-ui/src/store/modules/user.js
index da2ef54..8e1fbc3 100644
--- a/Source/plt-web/plt-web-ui/src/store/modules/user.js
+++ b/Source/plt-web/plt-web-ui/src/store/modules/user.js
@@ -17,7 +17,7 @@
     label: propsConfig.label || 'name',
     path: propsConfig.path || 'path',
     icon: propsConfig.icon || 'icon',
-    children: propsConfig.children || 'children'
+    children: propsConfig.children || 'children',
   }
   const icon = ele[propsDefault.icon];
   ele[propsDefault.icon] = validatenull(icon) ? menu.iconDefault : icon;
@@ -232,7 +232,7 @@
 
           commit('SET_MENU_ALL', menu)
           commit('SET_MENU', menu)
-          //dispatch('GetButtons');s
+          dispatch('GetButtons');
           resolve(menu)
         })
       })
@@ -244,6 +244,7 @@
       return new Promise((resolve) => {
         getButtons().then(res => {
           const data = res.data.data;
+          console.log('getButton',data)
           commit('SET_PERMISSION', data);
           resolve();
         })
@@ -305,7 +306,7 @@
             Vue.set(children, child.code, true);
           });
         }
-        Vue.set(permission_new, item.code, children);
+        Vue.set(permission_new, item.id, children);
       });
       state.permission = permission_new;
       setStore({name: "permission", content: permission_new});
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/enumType/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/enumType/index.vue
index 35b0974..ad24449 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/enumType/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/enumType/index.vue
@@ -44,7 +44,7 @@
           width="1000px"
           @close="dialogClose"
         >
-          <el-form ref="form" :model="form" :rules="rules" size="small" label-width="100px">
+          <el-form ref="form" :model="form" :rules="rules" label-width="100px" size="small">
             <el-row>
               <el-col :span="12">
                 <el-form-item label="鏋氫妇鍚嶇О锛�" prop="id">
@@ -66,7 +66,8 @@
               </el-col>
               <el-col :span="12">
                 <el-form-item label="闀垮害锛�">
-                  <el-input-number v-model="form.length" :max="999" :min="1" label="鎻忚堪鏂囧瓧" style="width: 376px;"></el-input-number>
+                  <el-input-number v-model="form.length" :max="999" :min="1" label="鎻忚堪鏂囧瓧"
+                                   style="width: 376px;"></el-input-number>
                 </el-form-item>
               </el-col>
               <el-col :span="24">
@@ -105,7 +106,6 @@
             @search-change="checkHandleSearch"
             @search-reset="checkHandleReset"
           >
-
           </avue-crud>
         </el-dialog>
 
@@ -117,7 +117,8 @@
 
     <el-aside width="35%">
       <basic-container>
-        <el-descriptions :column="1" border size="medium" style="margin-bottom: 20px" title="鏋氫妇淇℃伅" :labelStyle="{width:'150px'}">
+        <el-descriptions :column="1" :labelStyle="{width:'150px'}" border size="medium" style="margin-bottom: 20px"
+                         title="鏋氫妇淇℃伅">
           <el-descriptions-item>
             <template slot="label">
               鍚嶇О
@@ -168,6 +169,7 @@
   downloadEnumTemplate
 } from "@/api/modeling/enumType/api";
 import func from "@/util/func";
+import {mapGetters} from "vuex";
 import {deleteUser} from "@/api/system/user/api";
 
 export default {
@@ -182,7 +184,7 @@
         refreshBtn: false,
         selection: false,
         index: false,
-        header:false,
+        header: false,
         calcHeight: -40,
         column: [
           {
@@ -247,13 +249,13 @@
         calcHeight: 50,
         refreshBtn: false,
         selection: false,
-        dialogWidth:500,
+        dialogWidth: 500,
         column: [
           {
             label: '鏋氫妇椤瑰悕',
             prop: 'name',
             sortable: true,
-            span:24,
+            span: 24,
             rules: [
               {
                 required: true,
@@ -266,7 +268,7 @@
             label: '鏋氫妇鍊�',
             prop: 'value',
             sortable: true,
-            span:24,
+            span: 24,
             rules: [
               {
                 required: true,
@@ -278,7 +280,7 @@
           {
             label: '鎻忚堪',
             prop: 'description',
-            span:24
+            span: 24
           },
         ]
       },
@@ -304,7 +306,7 @@
         addBtn: false,
         editBtn: false,
         delBtn: false,
-        menuWidth:160,
+        menuWidth: 160,
         column: [
           {
             label: '鏋氫妇鍚嶇О',
@@ -321,7 +323,7 @@
             label: '杩斿洖绫诲瀷',
             prop: 'enumValueDataTypeText',
             sortable: true,
-            width:130
+            width: 130
           }
         ]
       },
@@ -331,7 +333,16 @@
       lastIndex: null
     }
   },
+  created() {
+    console.log(this.$route);
+  },
   computed: {
+    ...mapGetters(["permission"]),
+    permissionList() {
+      return {
+        viewBtn: this.vaildData(this.permission[this.$route.query.id].VIEW, false),
+      };
+    },
     lastItem() {
       return this.selectList.length > 0 ? this.selectList[this.selectList.length - 1] : {};
     },
diff --git a/Source/plt-web/plt-web-ui/src/views/system/department/index.vue b/Source/plt-web/plt-web-ui/src/views/system/department/index.vue
index 5059528..6f712df 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/department/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/system/department/index.vue
@@ -15,21 +15,32 @@
       @current-row-change="handleCurrentRowChange"
     >
       <template slot="menu" slot-scope="{row,size,type}">
-        <el-button icon="el-icon-circle-plus-outline" size="small" type="text" @click="handleAdd()">鏂板瀛愮骇</el-button>
-        <el-button v-if="row.ALLDept !== 'ALLDept'" icon="el-icon-edit" size="small" type="text"
+        <el-button v-if="permissionList.departmentAddChildrenBtn" icon="el-icon-circle-plus-outline" size="small"
+                   type="text" @click="handleAdd()">鏂板瀛愮骇
+        </el-button>
+        <el-button v-if="row.ALLDept !== 'ALLDept' && permissionList.editBtn" icon="el-icon-edit" size="small"
+                   type="text"
                    @click="editBtnClick(row)">缂栬緫
         </el-button>
-        <el-button v-if="row.ALLDept !== 'ALLDept'" icon="el-icon-delete" size="small" type="text"
+        <el-button v-if="row.ALLDept !== 'ALLDept' && permissionList.delBtn" icon="el-icon-delete" size="small"
+                   type="text"
                    @click="rowDeleteHandler(row)">鍒犻櫎
         </el-button>
       </template>
 
       <template slot="menuLeft" slot-scope="scope">
-        <el-button icon="el-icon-school" plain size="small" type="primary" @click="assignMembersHandler">鍒嗛厤鎴愬憳
+        <el-button v-if="permissionList.assignMembersBtn" icon="el-icon-school" plain size="small" type="primary"
+                   @click="assignMembersHandler">鍒嗛厤鎴愬憳
         </el-button>
-        <el-button icon="el-icon-user" plain size="small" type="primary" @click="statisticsHandler">缁熻</el-button>
-        <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadHandler">瀵煎叆閮ㄩ棬</el-button>
-        <el-button icon="el-icon-download" plain size="small" type="primary" @click="downLoadHandler">涓嬭浇瀵煎叆妯℃澘</el-button>
+        <el-button v-if="permissionList.statisticsBtn" icon="el-icon-user" plain size="small" type="primary"
+                   @click="statisticsHandler">缁熻
+        </el-button>
+        <el-button v-if="permissionList.importDepartmentBtn" icon="el-icon-upload2" plain size="small" type="primary"
+                   @click="upLoadHandler">瀵煎叆閮ㄩ棬
+        </el-button>
+        <el-button v-if="permissionList.downloadImportTemplateBtn" icon="el-icon-download" plain size="small"
+                   type="primary" @click="downLoadHandler">涓嬭浇瀵煎叆妯℃澘
+        </el-button>
       </template>
     </avue-crud>
 
@@ -85,6 +96,7 @@
 import basicOption from '@/util/basic-option';
 import {column} from './option'
 import func from "@/util/func";
+import {mapGetters} from "vuex";
 
 export default {
   name: "departmentManage",
@@ -95,13 +107,13 @@
         ...basicOption,
         rowKey: 'oid',
         rowParentKey: 'parentId',
-        expandRowKeys:[],
+        expandRowKeys: [],
         selection: false,
         addBtn: false,
         editBtn: false,
         delBtn: false,
         gridBtn: false,
-        menuWidth:280,
+        menuWidth: 280,
         highlightCurrentRow: true,
         calcHeight: -50,
         column: column
@@ -117,9 +129,9 @@
         selection: false,
         refreshBtn: false,
         addBtn: false,
-        header :false,
+        header: false,
         menu: false,
-        calcHeight:80,
+        calcHeight: 80,
         column: [
           {
             label: '閮ㄩ棬',
@@ -152,12 +164,26 @@
       fileUrl: 'api/departmentQueryController/importDept',
     }
   },
+  computed: {
+    ...mapGetters(["permission"]),
+    permissionList() {
+      return {
+        delBtn: this.vaildData(this.permission[this.$route.query.id].DELETE, false),
+        editBtn: this.vaildData(this.permission[this.$route.query.id].EDIT, false),
+        assignMembersBtn: this.vaildData(this.permission[this.$route.query.id].assignMembers, false),
+        departmentAddChildrenBtn: this.vaildData(this.permission[this.$route.query.id].departmentAddChildren, false),
+        downloadImportTemplateBtn: this.vaildData(this.permission[this.$route.query.id].downloadImportTemplate, false),
+        importDepartmentBtn: this.vaildData(this.permission[this.$route.query.id].importDepartment, false),
+        statisticsBtn: this.vaildData(this.permission[this.$route.query.id].statistics, false),
+      };
+    },
+  },
   methods: {
     // 琛ㄦ牸鍒濆鍖栬姹�
     getTableList() {
       refTree({queryAllLevel: true, 'extandParamsMap[showAllDepartmentNode]': true}).then(res => {
         this.tableData = this.departDtaFormAtter(res.data.treeData);
-        this.option.expandRowKeys=[res.data.treeData[0].oid];
+        this.option.expandRowKeys = [res.data.treeData[0].oid];
       })
     },
 
@@ -166,7 +192,7 @@
       return items.map(item => {
         // 杞崲褰撳墠鑺傜偣鐨勫睘鎬�
         const formList = {
-          expanded:item.expanded,
+          expanded: item.expanded,
           oid: item.oid,
           id: item.attributes.id,
           name: item.attributes.name,
diff --git a/Source/plt-web/plt-web-ui/src/views/system/password/index.vue b/Source/plt-web/plt-web-ui/src/views/system/password/index.vue
index 99b37e2..a621b37 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/password/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/system/password/index.vue
@@ -16,6 +16,7 @@
     >
       <template slot="menu" slot-scope="{ row, index }">
         <el-button
+          v-if="permissionList.editBtn"
           icon="el-icon-edit"
           size="small"
           type="text"
@@ -24,6 +25,7 @@
           缂栬緫
         </el-button>
         <el-button
+          v-if="permissionList.delBtn"
           icon="el-icon-delete"
           size="small"
           type="text"
@@ -49,6 +51,7 @@
 <script>
 import {refDataGrid, deleteDep, addDept, updatePasswordStrateg} from "@/api/system/password/api"
 import basicOption from "@/util/basic-option";
+import {mapGetters} from "vuex";
 
 export default {
   name: "index",
@@ -56,8 +59,37 @@
     return {
       form: {},
       tableData: [],
-      option: {
+      page: {
+        currentPage: 1,
+        pageSize: 10,
+        total: 0,
+        pageSizes: [10, 30, 50, 100],
+      },
+      tableLoading: false,
+      checkboxlength: "", // 娣诲姞瀛樻斁澶氶�夌殑鍙橀噺,鐢ㄤ簬涓嬫媺鑿滃崟鐨勭鐢ㄦ晥鏋滃拰蹇呭~绉嶇被鏄惁澶т簬缁勫悎鏂瑰紡鐒跺悗鎻愮ず鐢ㄦ埛閲嶆柊閫夋嫨
+      selectlength: 0,    // 涓嬫媺鑿滃崟鐨勬暟鎹彉閲�
+      checkboxlist: "",  // 鐢ㄤ簬闃叉change鏃堕棿鍐掓场,鍑虹幇涓ゆ寮圭獥瀹氫箟鐨勫彉閲�
+      checkboxNumber: "", // 鐢ㄤ簬棣栨鐐瑰嚮缂栬緫锛屽垽鏂粍鍚堟柟寮忔槸鍚﹀皬浜庡繀濉绫荤殑鍙橀噺
+      selectNumber: "",   // 瀛樻斁澶氶�夌殑鍙橀噺,鏁堟灉涓�鏍�,鍙槸鐢ㄤ綔鍦ㄧ紪杈戞ā鍧�
+      checkboxedit: "",   // 鐢ㄤ簬鍒ゆ柇鏄惁鏄紪杈�
+      editFlag: false,
+      minValue: "",        // 鏈�灏忛暱搴alue
+      maxValue: ""         // 鏈�澶ч暱搴alue
+    }
+  },
+  computed: {
+    ...mapGetters(["permission"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission[this.$route.query.id].ADD, false),
+        editBtn: this.vaildData(this.permission[this.$route.query.id].EDIT, false),
+        delBtn: this.vaildData(this.permission[this.$route.query.id].DELETE, false),
+      };
+    },
+    option() {
+      return {
         ...basicOption,
+        addBtn: this.permissionList.addBtn,
         selection: false,
         menuWidth: 150,
         editBtn: false,
@@ -298,28 +330,13 @@
             }]
           },
         ]
-      },
-      page: {
-        currentPage: 1,
-        pageSize: 10,
-        total: 0,
-        pageSizes: [10, 30, 50, 100],
-      },
-      tableLoading: false,
-      checkboxlength: "", // 娣诲姞瀛樻斁澶氶�夌殑鍙橀噺,鐢ㄤ簬涓嬫媺鑿滃崟鐨勭鐢ㄦ晥鏋滃拰蹇呭~绉嶇被鏄惁澶т簬缁勫悎鏂瑰紡鐒跺悗鎻愮ず鐢ㄦ埛閲嶆柊閫夋嫨
-      selectlength: 0,    // 涓嬫媺鑿滃崟鐨勬暟鎹彉閲�
-      checkboxlist: "",  // 鐢ㄤ簬闃叉change鏃堕棿鍐掓场,鍑虹幇涓ゆ寮圭獥瀹氫箟鐨勫彉閲�
-      checkboxNumber: "", // 鐢ㄤ簬棣栨鐐瑰嚮缂栬緫锛屽垽鏂粍鍚堟柟寮忔槸鍚﹀皬浜庡繀濉绫荤殑鍙橀噺
-      selectNumber: "",   // 瀛樻斁澶氶�夌殑鍙橀噺,鏁堟灉涓�鏍�,鍙槸鐢ㄤ綔鍦ㄧ紪杈戞ā鍧�
-      checkboxedit: "",   // 鐢ㄤ簬鍒ゆ柇鏄惁鏄紪杈�
-      editFlag: false,
-      minValue: "",        // 鏈�灏忛暱搴alue
-      maxValue: ""         // 鏈�澶ч暱搴alue
+      }
     }
   },
   methods: {
     // 琛ㄦ牸鍒濆鍖栬姹�
     getTableList() {
+      console.log(this.$route)
       this.tableLoading = true;
       refDataGrid(this.page.currentPage, this.page.pageSize).then(res => {
         this.tableData = res.data.data;
@@ -368,7 +385,7 @@
     },
 
     // 淇敼
-    rowUpdateHandler(row, index, done,loading) {
+    rowUpdateHandler(row, index, done, loading) {
       row.combinations = row.requireCharType;
       delete row.requireCharType;
       updatePasswordStrateg(row).then(res => {
@@ -433,8 +450,8 @@
             this.form.requireCharCount = "";
           }
         }
-      }else {
-        this.form.requireCharCount  = "";
+      } else {
+        this.form.requireCharCount = "";
       }
 
       // 澶勭悊 蹇呭~绉嶇被閫夐」绂佺敤
diff --git a/Source/plt-web/plt-web-ui/src/views/system/role/index.vue b/Source/plt-web/plt-web-ui/src/views/system/role/index.vue
index 9858341..55308b2 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/role/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/system/role/index.vue
@@ -17,12 +17,20 @@
       @row-del="rowDeleteHandler"
     >
       <template slot="menuLeft" slot-scope="scope">
-        <el-button icon="el-icon-delete" plain size="small" type="danger" @click="allDelHandler">鍒犻櫎</el-button>
-        <el-button icon="el-icon-school" plain size="small" type="primary" @click="assignMembersHandler">鍒嗛厤鎴愬憳
+        <el-button v-if="permissionList.delBtn" icon="el-icon-delete" plain size="small" type="danger"
+                   @click="allDelHandler">鍒犻櫎
         </el-button>
-        <el-button icon="el-icon-user" plain size="small" type="primary" @click="statisticsHandler">缁熻</el-button>
-        <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadRole">瀵煎叆瑙掕壊</el-button>
-        <el-button icon="el-icon-download" plain size="small" type="primary">瀵煎嚭</el-button>
+        <el-button v-if="permissionList.assignMembersBtn" icon="el-icon-school" plain size="small" type="primary"
+                   @click="assignMembersHandler">鍒嗛厤鎴愬憳
+        </el-button>
+        <el-button v-if="permissionList.statisticsBtn" icon="el-icon-user" plain size="small" type="primary"
+                   @click="statisticsHandler">缁熻
+        </el-button>
+        <el-button v-if="permissionList.importRoleBtn" icon="el-icon-upload2" plain size="small" type="primary"
+                   @click="upLoadRole">瀵煎叆瑙掕壊
+        </el-button>
+        <el-button v-if="permissionList.exportBtn" icon="el-icon-download" plain size="small" type="primary">瀵煎嚭
+        </el-button>
       </template>
 
       <template slot="roleClassifyText" slot-scope="{row}">
@@ -79,19 +87,13 @@
 import basicOption from "@/util/basic-option";
 import {column} from "@/views/system/role/option";
 import func from "@/util/func";
+import {mapGetters} from "vuex";
 
 export default {
   name: "index",
   data() {
     return {
       tableData: [],
-      option: {
-        ...basicOption,
-        dialogTop: 0,
-        dialogWidth: '30%',
-        column: column,
-        calcHeight: -60,
-      },
       page: {
         currentPage: 1,
         pageSize: 10,
@@ -113,7 +115,7 @@
         refreshBtn: false,
         addBtn: false,
         menu: false,
-        header:false,
+        header: false,
         column: [
           {
             label: '閮ㄩ棬',
@@ -141,6 +143,32 @@
       upFileType: ['xls', 'xlsx'],
       fileUrl: 'api/roleQueryController/importRole',
       tipList: ["瑙掕壊瀵煎叆鍙湁 鍚嶇О 鍜� 鎻忚堪 涓ゅ垪锛屼笖鍚嶇О涓哄繀杈撻」涓嶈兘涓虹┖"]
+    }
+  },
+  computed: {
+    ...mapGetters(["permission"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission[this.$route.query.id].ADD, false),
+        delBtn: this.vaildData(this.permission[this.$route.query.id].DELETE, false),
+        editBtn: this.vaildData(this.permission[this.$route.query.id].EDIT, false),
+        exportBtn: this.vaildData(this.permission[this.$route.query.id].EXPORT, false),
+        assignMembersBtn: this.vaildData(this.permission[this.$route.query.id].assignMembers, false),
+        importRoleBtn: this.vaildData(this.permission[this.$route.query.id].importRole, false),
+        statisticsBtn: this.vaildData(this.permission[this.$route.query.id].statistics, false),
+      };
+    },
+    option() {
+      return {
+        ...basicOption,
+        addBtn: this.permissionList.addBtn,
+        delBtn: this.permissionList.delBtn,
+        editBtn: this.permissionList.editBtn,
+        dialogTop: 0,
+        dialogWidth: '30%',
+        column: column,
+        calcHeight: -60,
+      }
     }
   },
   methods: {
@@ -181,8 +209,12 @@
         row,
         this.$refs.roleCrud,
         this.lastIndex,
-        (newIndex) => { this.lastIndex = newIndex; },
-        () => { this.selectList = [row]; }
+        (newIndex) => {
+          this.lastIndex = newIndex;
+        },
+        () => {
+          this.selectList = [row];
+        }
       );
     },
 
@@ -283,8 +315,8 @@
         listUserUnInRoleOid({pkRole: this.selectList[0].oid}),
         listUserByRoleOid({pkRole: this.selectList[0].oid})
       ]).then(([unInRoleRes, byRoleRes]) => {
-        this.leftRoleData=[];
-        this.rightRoleData=[];
+        this.leftRoleData = [];
+        this.rightRoleData = [];
         if (unInRoleRes.data.code === 200 && byRoleRes.data.code === 200) {
           const leftData = [...unInRoleRes.data.data, ...byRoleRes.data.data];
           // 缁勮濂界┛姊鍙敤鏁版嵁
diff --git a/Source/plt-web/plt-web-ui/src/views/system/user/index.vue b/Source/plt-web/plt-web-ui/src/views/system/user/index.vue
index 971b60b..b856de2 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/user/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/system/user/index.vue
@@ -28,21 +28,37 @@
       </template>
 
       <template #menu="{row,index,size}">
-        <el-button icon="el-icon-edit" size="small" type="text" @click.stop="rowEditHandler(row,index)">缂栬緫</el-button>
-        <el-button icon="el-icon-delete" size="small" type="text" @click.stop="rowDeleteHandler(row)">鍒犻櫎</el-button>
-        <el-button size="small" type="text" @click.stop="stopUserHandler(row)">
+        <el-button v-if="permissionList.editBtn" icon="el-icon-edit" size="small" type="text"
+                   @click.stop="rowEditHandler(row,index)">缂栬緫
+        </el-button>
+        <el-button v-if="permissionList.delBtn" icon="el-icon-delete" size="small" type="text"
+                   @click.stop="rowDeleteHandler(row)">鍒犻櫎
+        </el-button>
+        <el-button v-if="permissionList.stopActionBtn" size="small" type="text" @click.stop="stopUserHandler(row)">
           <span v-if="row.status === 0" style="color: #fa3434"><i class="el-icon-video-pause"></i> 鍋滅敤</span>
           <span v-if="row.status === 1" style="color: #55b61d"><i class="el-icon-video-play"></i> 鍚敤</span>
         </el-button>
       </template>
 
       <template slot="menuLeft" slot-scope="scope">
-        <el-button icon="el-icon-delete" plain size="small" type="danger" @click="allDelHandler">鍒犻櫎</el-button>
-        <el-button icon="el-icon-user" plain size="small" type="primary" @click="roleHandler">鍒嗛厤瑙掕壊</el-button>
-        <el-button icon="el-icon-school" plain size="small" type="primary" @click="departmentHandler">鍒嗛厤閮ㄩ棬</el-button>
-        <el-button icon="el-icon-key" plain size="small" type="success" @click="setPwsHandler">璁剧疆瀵嗙爜绛栫暐</el-button>
-        <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="uploadUser">瀵煎叆浜哄憳</el-button>
-        <el-button icon="el-icon-download" plain size="small" type="primary" @click="downloadHandler">涓嬭浇瀵煎叆妯℃澘</el-button>
+        <el-button v-if="permissionList.editBtn" icon="el-icon-delete" plain size="small" type="danger"
+                   @click="allDelHandler">鍒犻櫎
+        </el-button>
+        <el-button v-if="permissionList.assigningRolesBtn" icon="el-icon-user" plain size="small" type="primary"
+                   @click="roleHandler">鍒嗛厤瑙掕壊
+        </el-button>
+        <el-button v-if="permissionList.distributionDepartmentBtn" icon="el-icon-school" plain size="small"
+                   type="primary" @click="departmentHandler">鍒嗛厤閮ㄩ棬
+        </el-button>
+        <el-button v-if="permissionList.setPasswordPolicyBtn" icon="el-icon-key" plain size="small" type="success"
+                   @click="setPwsHandler">璁剧疆瀵嗙爜绛栫暐
+        </el-button>
+        <el-button v-if="permissionList.importPersonnelBtn" icon="el-icon-upload2" plain size="small" type="primary"
+                   @click="uploadUser">瀵煎叆浜哄憳
+        </el-button>
+        <el-button v-if="permissionList.downloadImportTemplateBtn" icon="el-icon-download" plain size="small"
+                   type="primary" @click="downloadHandler">涓嬭浇瀵煎叆妯℃澘
+        </el-button>
       </template>
     </avue-crud>
 
@@ -124,6 +140,7 @@
 } from '@/api/system/user/api'
 import {column} from "./option"
 import func from '@/util/func'
+import {mapGetters} from "vuex";
 
 export default {
   name: "userManage",
@@ -173,14 +190,6 @@
       pwdList: [],
       tableLoading: false,
       tableData: [],
-      option: {
-        ...basicOption,
-        editBtn: false,
-        delBtn: false,
-        dialogWidth: '50%',
-        calcHeight: -60,
-        column: column
-      },
       page: {
         currentPage: 1,
         pageSize: 10,
@@ -196,7 +205,32 @@
       lastIndex: null,
     }
   },
-  created() {
+  computed: {
+    ...mapGetters(["permission"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission[this.$route.query.id].ADD, false),
+        delBtn: this.vaildData(this.permission[this.$route.query.id].DELETE, false),
+        editBtn: this.vaildData(this.permission[this.$route.query.id].EDIT, false),
+        assigningRolesBtn: this.vaildData(this.permission[this.$route.query.id].assigningRoles, false),
+        distributionDepartmentBtn: this.vaildData(this.permission[this.$route.query.id].distributionDepartment, false),
+        downloadImportTemplateBtn: this.vaildData(this.permission[this.$route.query.id].downloadImportTemplate, false),
+        importPersonnelBtn: this.vaildData(this.permission[this.$route.query.id].importPersonnel, false),
+        setPasswordPolicyBtn: this.vaildData(this.permission[this.$route.query.id].setPasswordPolicy, false),
+        stopActionBtn: this.vaildData(this.permission[this.$route.query.id].stopAction, false),
+      };
+    },
+    option() {
+      return {
+        ...basicOption,
+        addBtn: this.permissionList.addBtn,
+        editBtn: false,
+        delBtn: false,
+        dialogWidth: '50%',
+        calcHeight: -60,
+        column: column
+      }
+    }
   },
   methods: {
     // 琛ㄦ牸璇锋眰

--
Gitblit v1.9.3