From 988cf8b273a2015833c024727deb9acc46060b3e Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 22 八月 2024 10:41:20 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS-WEB/src/components/Theme/DataAuthDialog.vue |  111 ++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 68 insertions(+), 43 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/Theme/DataAuthDialog.vue b/Source/UBCS-WEB/src/components/Theme/DataAuthDialog.vue
index c6b6510..ad57d3a 100644
--- a/Source/UBCS-WEB/src/components/Theme/DataAuthDialog.vue
+++ b/Source/UBCS-WEB/src/components/Theme/DataAuthDialog.vue
@@ -60,7 +60,8 @@
           <el-checkbox
             v-if="item.type === 'checkbox'"
             v-model="row[item.prop]"
-            :disabled="row.authButton.allDisabled ? true : row.authButton[item.code]">
+            :disabled="row.authButton.allDisabled ? true : row.authButton[item.code]"
+            @change="checkBoxToChangeTheEvent(row[item.prop],item.code,row,item.prop)">
           </el-checkbox>
         </template>
       </el-table-column>
@@ -84,6 +85,7 @@
 export default {
   name: "dataAuthDialog.vue",
   props: {
+    // 褰撳墠鐐瑰嚮鑺傜偣鐨勯《灞傝妭鐐�
     classifyData: {
       type: "Object",
       default: "",
@@ -93,15 +95,16 @@
       type: "Boolean",
       default: false,
     },
-    TreeNode:{
-      type:Object
+    // 褰撳墠鐐瑰嚮鐨勮妭鐐�
+    TreeNode: {
+      type: Object
     }
   },
   data() {
     return {
       // 瀵硅瘽妗嗘樉绀烘帶鍒�
       isShowDialog: this.visible,
-      isLoading: false,
+      isLoading: true,
       tableHeight: 'calc(100vh - 550px)',
       classifyAuthData: [],
       //鍒楀ご
@@ -125,6 +128,9 @@
         this.loadAuthPage();
       }
     },
+    classifyAuthData(newval) {
+      this.addIndex = newval.length <= 0 ? 0 : newval.length - 1;
+    }
   },
   computed: {},
   mounted() {
@@ -132,6 +138,22 @@
   created() {
   },
   methods: {
+    checkBoxToChangeTheEvent(check, code, row, id) {
+      if (code === "data_view") {
+        row.checkTheStatus = check;
+      } else if (!row.checkTheStatus) {
+        this.$message.warning('娓呭厛鍕鹃�夋煡鐪嬫寜閽紒');
+        // 鍦ㄦ潯浠朵笉婊¤冻鏃跺皢澶氶�夋鐘舵�佽缃负false
+        row[id] = false;
+      }
+
+      if (!row.checkTheStatus) {
+        this.classifyAuthButton.forEach(key => {
+          // 鏌ョ湅涓篺alse鏃跺皢鎵�鏈夊閫夋鐘舵�佽缃负false
+          row[key.id] = false;
+        });
+      }
+    },
     // 鍏抽棴瀵硅瘽妗�
     closeDialog() {
       this.$emit('update:visible', false);
@@ -142,38 +164,40 @@
         return;
       }
       //filteredItems 鏈巿鏉冩暟缁�
-      getButtonsByRoleId({roleId: id, code: this.TreeNode.id}).then(res => {
+      getButtonsByRoleId({roleId: id, code: this.classifyData.attributes.id}).then(res => {
         const filteredItems = this.classifyAuthButton.filter(item =>
           !res.data.data.some(x => x.id === item.id)
         );
+
         //鍜岃〃鏍煎垪杩涜瀵规瘮
         this.classifyAuthHeader.forEach((item) => {
+          // if (item.code !== 'data_view') {
+          //   this.$set(this.classifyAuthData[index].authButton, "allDisabled", true);
+          // }
           const isMatched = filteredItems.some((x) => x.id === item.prop);
           this.$nextTick(() => {
             if (this.classifyAuthData[index]) {
               if (isMatched) {
                 Object.keys(this.classifyAuthData[index]).forEach((key) => {
-                  this.$set(this.classifyAuthData[index].authButton,item.code,true);
+                  this.$set(this.classifyAuthData[index].authButton, item.code, true);
+                  //娣诲姞 鈥滄煡鐪嬪叏閮ㄧ鐢ㄦ潯浠垛��
+                  if (item.code === "data_view") {
+                    this.$set(this.classifyAuthData[index].authButton, "allDisabled", true);
+                  }
                 });
+
               } else {
                 Object.keys(this.classifyAuthData[index]).forEach((key) => {
-                  this.$set(this.classifyAuthData[index].authButton,item.code,false);
+                  this.$set(this.classifyAuthData[index].authButton, item.code, false);
                 });
+                if(item.code === "data_view"){
+                  this.classifyAuthData[index].authButton.allDisabled = false;
+                }
               }
             }
           });
         });
-
-        //娣诲姞鈥樻煡鐪嬧�欑鐢�
-        if (this.classifyAuthData) {
-          this.classifyAuthData.forEach((classkey, classIndex) => {
-            if (classkey.authButton.classify_view) {
-              this.$set(this.classifyAuthData[classIndex].authButton,"allDisabled",true);
-            } else {
-              this.classifyAuthData[classIndex].authButton.allDisabled = false;
-            }
-          });
-        }
+        // console.log(this.classifyAuthData)
         //寮哄埗鍒锋柊琛ㄦ牸
         this.itemKey = uuidv4();
       });
@@ -182,7 +206,7 @@
     async roleChange(row, currentRow) {
       try {
         this.currentRow = currentRow;
-        const res = await getButtonsByRoleId({roleId: row, code: this.TreeNode.id});
+        const res = await getButtonsByRoleId({roleId: row, code: this.classifyData.attributes.id});
 
         const filteredItems = this.classifyAuthButton.filter(item => {
           return !res.data.data.find(x => x.id === item.id);
@@ -195,14 +219,14 @@
               if (isMatched) {
                 Object.keys(currentRow).forEach((key) => {
                   currentRow.authButton[item.code] = true;
-                  if (!currentRow.authButton.classify_view) {
+                  if (!currentRow.authButton.data_view) {
                     currentRow.authButton.allDisabled = false;
                   }
                 });
               } else {
                 Object.keys(currentRow).forEach((key) => {
                   currentRow.authButton[item.code] = false;
-                  if (!currentRow.authButton.classify_view) {
+                  if (!currentRow.authButton.data_view) {
                     currentRow.authButton.allDisabled = false;
                   }
                 });
@@ -221,13 +245,13 @@
         this.$message.warning("褰撳墠绉熸埛涓嶅瓨鍦ㄨ鑹蹭俊鎭紒");
         return;
       }
-      this.addIndex++; //鑷畾涔夌敓鎴愭坊鍔犺涓嬫爣
+
       let item = {
         roleData: this.roleList[0].id,
         classifyItem: this.classifyData.label,
-        authButton:{},
+        authButton: {},
         uuid: uuidv4(),//鐢熸垚鍞竴鐨刬d,
-        index: this.addIndex,
+        index: this.classifyAuthData.length -1,
       }
       //灏嗘寜閽缃繘鍘�
       this.classifyAuthButton.forEach(data => {
@@ -235,7 +259,7 @@
       })
       //console.log(item)
       this.classifyAuthData.push(item)
-      this.roleHandlerMethods(this.roleList[0].id, 'add', this.addIndex)
+      this.roleHandlerMethods(this.roleList[0].id, 'add', this.classifyAuthData.length -1)
     },
     // 鍒犻櫎琛�
     subClassifyAuth() {
@@ -264,7 +288,8 @@
       let form = {
         classifyAuthList: [],
         isCLear: false, //榛樿鏄竻绌�
-        classifyId: this.classifyData.oid,
+        classifyId: this.TreeNode.oid,
+        authType: 'data_auth',
       };
       let isRepeat = false;
       if (this.classifyAuthData.length > 0) {
@@ -290,7 +315,7 @@
           let itemButtonList = [];
           //绛涢�夊嚭鎸夐挳鍕鹃�変负true鐨勫垪
           for (let key in item) {
-            if (item[key] === true) {
+            if (item[key] === true && key !== 'checkTheStatus') {
               itemButtonList.push(key);
             }
           }
@@ -303,7 +328,7 @@
           let data = {
             oid: item.oid,
             roleId: item.roleData,
-            classifyId: this.classifyData.oid,
+            classifyId: this.TreeNode.oid,
             buttonIds: itemButtonList.join(","),
             authType: "data_auth",
           }
@@ -314,20 +339,20 @@
           return;
         }
         // console.log(form)
-        // 璋冪敤淇濆瓨鍒嗙被鎺堟潈鐨勬帴鍙�
-        await saveOrUpdate(form).then(res => {
-          this.$message({
-            type: "success",
-            message: res.data.msg,
-          });
-          // this.isShowDialog = false
-        }, (error) => {
-          window.console.log(error);
-        })
-      }else{
+      } else {
         // 涓虹┖璇佹槑鏄竻绌烘巿鏉冨垪琛�
         form.isCLear = true;
       }
+      // 璋冪敤淇濆瓨鍒嗙被鎺堟潈鐨勬帴鍙�
+      await saveOrUpdate(form).then(res => {
+        this.$message({
+          type: "success",
+          message: res.data.msg,
+        });
+        // this.isShowDialog = false
+      }, (error) => {
+        window.console.log(error);
+      })
       this.classifyAuthData = [];
       this.loadAuthPage();
     },
@@ -345,7 +370,7 @@
     },
     loadAuthPage() {
       return new Promise((resolve, reject) => {
-        console.log(this.classifyData);
+        this.isLoading = true;
         getButtonByParentCode({code: this.classifyData.attributes.id}).then(res => {
           // 璁板綍鎸夐挳鏁版嵁
           this.classifyAuthButton = res.data.data;
@@ -385,7 +410,7 @@
           this.roleList = res.data.data.records;
         });
         // 鑾峰彇璇ュ垎绫讳笅宸叉巿鏉冪殑鍒嗙被鎺堟潈淇℃伅
-        getClassifyAuthList({classifyId: this.classifyData.oid, authType: "data_auth"}).then(res => {
+        getClassifyAuthList({classifyId: this.TreeNode.oid, authType: "data_auth"}).then(res => {
           //console.log(res.data.data);
           let authDatas = res.data.data;
           if (authDatas.length > 0) {
@@ -395,7 +420,7 @@
                 roleData: authData.roleId,
                 classifyItem: this.classifyData.label,
                 index: index,
-                authButton:{},
+                authButton: {},
                 uuid: uuidv4(),//鐢熸垚鍞竴鐨刬d
               }
               //灏嗘寜閽缃繘鍘�
@@ -403,11 +428,11 @@
                 Vue.set(item, data, true);
               });
               this.classifyAuthData.push(item);
-              this.addIndex = this.classifyAuthData.length - 1; //娣诲姞琛屼笅鏍囩瓑浜巆lassifyAuthData鐨勯暱搴�-1
               this.roleHandlerMethods(authData.roleId, 'create', index)
             })
           }
         });
+        this.isLoading = false;
       });
     },
   },

--
Gitblit v1.9.3