From 13e07d48a90efdaee8b89e96a1d97a42f19777d7 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 25 十月 2023 22:43:53 +0800
Subject: [PATCH] 1、修改从其他规则克隆规则时排序号未重排的bug。 2、为密码策略管理、用户管理、部门管理界面增加按钮权限控制

---
 Source/UBCS-WEB/src/views/integration/systemInfo.vue |  239 ++++++++++++++++++++++++++++++-----------------------------
 1 files changed, 122 insertions(+), 117 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/integration/systemInfo.vue b/Source/UBCS-WEB/src/views/integration/systemInfo.vue
index aea7794..f4978de 100644
--- a/Source/UBCS-WEB/src/views/integration/systemInfo.vue
+++ b/Source/UBCS-WEB/src/views/integration/systemInfo.vue
@@ -7,7 +7,7 @@
       <template slot="menuLeft">
         <!-- <el-button icon="el-icon-search" size="small" type="primary" @click="handleStatus">鏌� 璇�
         </el-button> -->
-        <el-button icon="el-icon-delete" size="small" type="danger" @click="handleDeleteByIds">鍒� 闄�
+        <el-button icon="el-icon-delete" size="small" type="danger" @click="handleDeleteByIds" v-if="this.permission.systemInfo.systemInfo_remove">鍒� 闄�
         </el-button>
       </template>
       <template slot="search" slot-scope="{row,size}">
@@ -19,10 +19,11 @@
                   :size="size" clearable style="width:300px;margin-left: 10px;"
                   @clear="handleClear" @keyup.enter.native="handleEnter"></el-input>
       </template>
-      <template #menu="{row,index,size}">
+      <template #menu="{row,index,size}" v-if="this.permission.systemInfo.systemInfo_empower">
         <el-button icon="el-icon-menu" size="small" type="text" @click="classifyHandler(row)">鍒嗙被鎺堟潈</el-button>
-
       </template>
+
+
     </avue-crud>
     <el-dialog :visible.sync="dialogVisible" append-to-body class="avue-dialog avue-dialog--top" title="鍒嗙被鎺堟潈"
                top="-50px">
@@ -40,7 +41,7 @@
 
       <div slot="footer" class="dialog-footer" style="height: 50px;line-height: 50px">
         <el-button icon="el-icon-plus" size="small" type="primary" @click="empower">鎺� 鏉�</el-button>
-        <el-button icon="el-icon-close" size="small" type="danger">閲� 缃�</el-button>
+        <el-button icon="el-icon-close" size="small" type="danger" @click="resetting">閲� 缃�</el-button>
       </div>
     </el-dialog>
   </basic-container>
@@ -54,7 +55,7 @@
   sysInfoTree,
   batchAddSave
 } from '@/api/integration/sysInfo.js'
-
+import {mapGetters} from "vuex";
 export default {
   data() {
     return {
@@ -90,56 +91,70 @@
       search: {},
       delIds: [],
       data: [],
-      option: {
-        height: "auto",
-        tip: false,
-        border: true,
-        align: 'center',
-        menuAlign: 'center',
-        index: true,
-        searchMenuSpan: 8,
-        searchBtn: false,
-        emptyBtn: false,
-        columnBtn: false,
-        defaultSort: {
-          prop: 'id,name',
-          order: 'descending'
-        },
-        selection: true,
-        column: [
-          {
-            label: '绯荤粺缂栧彿',
-            prop: 'id',
-            sortable: true,
-            rules: [{
-              required: true,
-              message: '绯荤粺缂栧彿涓嶈兘涓虹┖',
-              trigger: 'blur'
-            }],
-            // maxlength: 30,    //瀛楁暟闄愬埗
-          }, {
-            label: '绯荤粺鍚嶇О',
-            prop: 'name',
-            sortable: true,
-            rules: [{
-              required: true,
-              message: '绯荤粺鍚嶇О涓嶈兘涓虹┖',
-              trigger: 'blur'
-            }],
-            // maxlength: 30,    //瀛楁暟闄愬埗
-          },
-          {
-            label: '绯荤粺鎻忚堪',
-            prop: 'description',
-            type: 'textarea'
-          }
-        ]
-      },
+
     }
   },
   created() {
   },
+  computed: {
+    ...mapGetters(["permission"]),
+    option(){
+      return{
+          height: "auto",
+          tip: false,
+          border: true,
+          align: 'center',
+          menuAlign: 'center',
+          index: true,
+          searchMenuSpan: 8,
+          addBtn:this.permission.systemInfo.systemInfo_add,
+          editBtn:this.permission.systemInfo.systemInfo_edit,
+          delBtn:this.permission.systemInfo.systemInfo_remove,
+          searchBtn: false,
+          emptyBtn: false,
+          columnBtn: false,
+          defaultSort: {
+            prop: 'id,name',
+            order: 'descending'
+          },
+          selection: true,
+          column: [
+            {
+              label: '绯荤粺缂栧彿',
+              prop: 'id',
+              sortable: true,
+              rules: [{
+                required: true,
+                message: '绯荤粺缂栧彿涓嶈兘涓虹┖',
+                trigger: 'blur'
+              }],
+              // maxlength: 30,    //瀛楁暟闄愬埗
+            }, {
+              label: '绯荤粺鍚嶇О',
+              prop: 'name',
+              sortable: true,
+              rules: [{
+                required: true,
+                message: '绯荤粺鍚嶇О涓嶈兘涓虹┖',
+                trigger: 'blur'
+              }],
+              // maxlength: 30,    //瀛楁暟闄愬埗
+            },
+            {
+              label: '绯荤粺鎻忚堪',
+              prop: 'description',
+              type: 'textarea'
+            }
+          ]
+      }
+    }
+  },
   methods: {
+    //閲嶇疆
+    resetting(){
+      this.$refs.tree.setCheckedKeys([])
+      // console.log(this.ParentList)
+    },
     empower() {
       batchAddSave(this.checkAll.oid, this.checkAll.id, this.ParentList).then(res => {
         // console.log(res.data)
@@ -151,76 +166,66 @@
     },
     //鍒嗙被鎺堟潈澶氶�夊洖璋�
     checkChange(row, checked) {
-      // this.ParentList=[]
-      // console.log('row',row)
       if (checked) {
-        if (!row.parentId) {
-          const parentRecord = {
-            oid: row.oid,
-            classifyId: row.attributes.classifyId,
-            classifyOid: row.attributes.classifyOid,
-            classParentOid: row.parentId,
-          };
-          this.ParentList.push(parentRecord);
-          // 濡傛灉row鐨刢hildren涓嶄负绌� 缁х画寰幆children涓殑姣忎釜瀵硅薄
-          if (row.children && row.children.length > 0) {
-            for (let child of row.children) {
-              const childRecord = {
-                oid: child.oid,
-                classifyId: child.attributes.classifyId,
-                classifyOid: child.attributes.classifyOid,
-                classParentOid: child.parentId,
-              };
-              this.ParentList.push(childRecord);
-              // 濡傛灉瀛愬璞$殑children涓嶄负绌� 缁х画寰幆鑾峰彇鏁版嵁
-              if (child.children && child.children.length > 0) {
-                for (let subChild of child.children) {
-                  const subRecord = {
-                    oid: subChild.oid,
-                    classifyId: subChild.attributes.classifyId,
-                    classifyOid: subChild.attributes.classifyOid,
-                    classParentOid: subChild.parentId,
-                  };
-                  this.ParentList.push(subRecord);
-                }
-              }
-            }
-          }
-        }
+        this.addAllChildren(row.children);
+        this.addToParentList(row);
+        // 鍕鹃�夎鏃跺皢鎵�鏈夎妭鐐规坊鍔犲埌ParentList涓�
       } else {
-        // 鍙栨秷鍕鹃�夌殑鑺傜偣鏄埗鑺傜偣
-        if (!row.parentId) {
-          // 鎵惧埌鐖惰妭鐐瑰湪ParentList涓殑绱㈠紩
-          const parentIndex = this.ParentList.findIndex(item => item.oid === row.oid);
-          if (parentIndex !== -1) {
-            const parentOid = this.ParentList[parentIndex].classifyOid;
-
-            // 鏌ユ壘鎵�鏈夐渶瑕佸垹闄ょ殑瀛愯妭鐐圭殑绱㈠紩
-            const childIndexes = this.ParentList.reduce((indexes, item, index) => {
-              if (item.classParentOid === parentOid && item.classifyOid !== parentOid) {
-                indexes.push(index);
-              }
-              return indexes;
-            }, []);
-
-            // 浠庡悗寰�鍓嶅垹闄ゅ瓙鑺傜偣鐨勬暟鎹紝淇濊瘉绱㈠紩鐨勬纭��
-            for (let i = childIndexes.length - 1; i >= 0; i--) {
-              this.ParentList.splice(childIndexes[i], 1);
-            }
-
-            // 鍒犻櫎鐖惰妭鐐圭殑鏁版嵁
-            this.ParentList.splice(parentIndex, 1);
-          }
-        } else {
-          // 鍙栨秷鍕鹃�夌殑鑺傜偣鏄瓙鑺傜偣
-          const childIndex = this.ParentList.findIndex(item => item.oid === row.oid);
-          if (childIndex !== -1) {
-            // 鍒犻櫎瀛愯妭鐐圭殑鏁版嵁
-            this.ParentList.splice(childIndex, 1);
-          }
+        this.removeAllChildren(row.children);
+        this.removeFromParentList(row);
+        // 鍙栨秷鍕鹃�夊皢鎵�鏈夎妭鐐规坊鍔犱粠ParentList涓Щ闄�
+      }
+      // console.table(this.ParentList);
+    },
+    //瀛愯妭鐐规坊鍔�
+    addAllChildren(children) {
+      for (let child of children) {
+        this.addToParentList(child);
+        // 灏嗗瓙鑺傜偣娣诲姞鍒� ParentList 涓�
+        if (child.children && child.children.length > 0) {
+          this.addAllChildren(child.children);
         }
       }
-      console.log('this.ParentList',this.ParentList);
+    },
+    //瀛愯妭鐐圭Щ闄�
+    removeAllChildren(children) {
+      for (let child of children) {
+        this.removeFromParentList(child);
+        // 灏嗗瓙鑺傜偣浠� ParentList 涓Щ闄�
+        if (child.children && child.children.length > 0) {
+          this.removeAllChildren(child.children);
+        }
+      }
+    },
+    //褰撳墠鐖惰妭鐐规坊鍔�
+    addToParentList(item) {
+      const classifyOid = item.attributes.classifyOid;
+      if (!this.isClassifyOidExists(classifyOid)) {
+        const record = {
+          oid: item.oid,
+          classifyId: item.attributes.classifyId,
+          classifyOid: classifyOid,
+        };
+        this.ParentList.push(record);
+      }
+    },
+    //褰撳墠鐖惰妭鐐圭Щ闄�
+    removeFromParentList(item) {
+      const classifyOid = item.attributes.classifyOid;
+      if (this.isClassifyOidExists(classifyOid)) {
+        const index = this.findIndexByClassifyOid(classifyOid);
+        if (index !== -1) {
+          this.ParentList.splice(index, 1);
+        }
+      }
+    },
+    //鍒ら噸-ParentList
+    isClassifyOidExists(classifyOid) {
+      return this.ParentList.some(item => item.classifyOid === classifyOid);
+    },
+    //鏌ユ壘index浣嶇疆
+    findIndexByClassifyOid(classifyOid) {
+      return this.ParentList.findIndex(item => item.classifyOid === classifyOid);
     },
     //鍒嗙被鎺堟潈
     classifyHandler(row) {
@@ -391,7 +396,7 @@
             type: 'success',
             message: '鍒犻櫎鎴愬姛!'
           });
-          this.getDataList()
+          await this.getDataList()
         }
       })
     },

--
Gitblit v1.9.3