From c327574106f470c72638e9f34c7f8cd26d78a2bf Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 24 一月 2024 23:48:36 +0800
Subject: [PATCH] 分类授权,数据授权接口修改

---
 Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue |  246 +++++++++++++++++++++++++-----------------------
 1 files changed, 129 insertions(+), 117 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue b/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
index 35216a7..9a32e26 100644
--- a/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
@@ -137,76 +137,7 @@
     visible() {
       if (this.visible) {
         this.isShowDialog = this.visible;
-        return new Promise((resolve, reject) => {
-          getButtonByParentCode({ code: "classifyTree" })
-            .then((res) => {
-              // 璁板綍鎸夐挳鏁版嵁
-              this.classifyAuthButton = res.data.data;
-              const list = res.data.data;
-              let tempData = [];
-              // 瑙掕壊鍒�
-              tempData.push({
-                label: "瑙掕壊",
-                prop: "roleData",
-                type: "select",
-                width: 150,
-              });
-              // 缂栫爜椤瑰垎绫绘巿鏉�
-              tempData.push({
-                label: "缂栫爜椤瑰垎绫绘巿鏉�",
-                prop: "classifyItem",
-                type: "text",
-                width: 180,
-              });
-              list.forEach((item) => {
-                let columnItem = {
-                  label: item.name,
-                  prop: item.id,
-                  code: item.code,
-                  type: "checkbox",
-                  width: 180,
-                };
-                tempData.push(columnItem);
-              });
-              this.classifyAuthHeader = tempData;
-              resolve();
-            })
-            .catch((err) => {
-              reject(err);
-            });
-          // 鑾峰彇瑙掕壊鍒楄〃
-          getPage(1, -1, null).then((res) => {
-            this.roleList = res.data.data.records;
-          });
-          // 鑾峰彇璇ュ垎绫讳笅宸叉巿鏉冪殑鍒嗙被鎺堟潈淇℃伅
-          getClassifyAuthList({
-            classifyId: this.classifyData.oid,
-            authType: "classify_auth",
-          }).then((res) => {
-            //console.log(res.data.data);
-            let authDatas = res.data.data;
-            if (authDatas.length > 0) {
-              authDatas.forEach((authData, index) => {
-                let item = {
-                  oid: authData.oid,
-                  roleData: authData.roleId,
-                  classifyItem: this.classifyData.label,
-                  authButton:{},
-                  index: index,
-                  uuid: uuidv4(), //鐢熸垚鍞竴鐨刬d
-                };
-                //灏嗘寜閽缃繘鍘�
-                authData.buttonIdList.forEach((data) => {
-                  Vue.set(item, data, true);
-                });
-                this.classifyAuthData.push(item);
-                this.addIndex = this.classifyAuthData.length - 1; //娣诲姞琛屼笅鏍囩瓑浜巆lassifyAuthData鐨勯暱搴�-1
-                this.roleHandlerMethods(authData.roleId, "create", index);
-                // console.log('index', index)
-              });
-            }
-          });
-        });
+        this.loadAuthPage();
       }
     },
   },
@@ -215,7 +146,6 @@
       if (this.classifyAuthData.length < 0) {
         return;
       }
-
       getButtonsByRoleId({ roleId: id, code: "classifyTree" }).then((res) => {
         // 鎵惧埌this.classifyAuthButton涓病鏈夊搴旂殑灞炴��
         const filteredItems = this.classifyAuthButton.filter((item) => {
@@ -344,61 +274,68 @@
       this.selectList = list;
     },
     // 淇濆瓨鍒嗙被鎺堟潈淇℃伅
-    submit() {
-      if (this.classifyAuthData.length <= 0) {
-        this.$message.warning("鎺堟潈鍒楄〃涓虹┖锛�");
-        return;
-      }
+    async submit() {
+      let form = {
+        classifyAuthList: [],
+        isCLear: false, //榛樿鏄竻绌�
+        classifyId: this.classifyData.oid,
+      };
       let isRepeat = false;
-      // 閬嶅巻鏁扮粍锛屾瘮杈冨悗闈㈢殑瀵硅薄鐨剅oleData鏄惁涓庡墠闈㈢殑瀵硅薄鐩哥瓑
-      for (let i = 0; i < this.classifyAuthData.length - 1; i++) {
-        let currentRoleId = this.classifyAuthData[i].roleData;
-        for (let j = i + 1; j < this.classifyAuthData.length; j++) {
-          if (currentRoleId === this.classifyAuthData[j].roleData) {
-            isRepeat = true;
+      if(this.classifyAuthData.length > 0){
+        // 閬嶅巻鏁扮粍锛屾瘮杈冨悗闈㈢殑瀵硅薄鐨剅oleData鏄惁涓庡墠闈㈢殑瀵硅薄鐩哥瓑
+        for (let i = 0; i < this.classifyAuthData.length - 1; i++) {
+          let currentRoleId = this.classifyAuthData[i].roleData;
+          for (let j = i + 1; j < this.classifyAuthData.length; j++) {
+            if (currentRoleId === this.classifyAuthData[j].roleData) {
+              isRepeat = true;
+              break;
+            }
+          }
+          if (isRepeat) {
             break;
           }
         }
+
         if (isRepeat) {
-          break;
-        }
-      }
-      if (isRepeat) {
-        this.$message.warning("瑙掕壊鍜屽垎绫诲凡缁忓瓨鍦紝璇烽噸鏂伴厤缃紒");
-        return;
-      }
-      let form = [];
-      let flag = false;
-      this.classifyAuthData.forEach((item) => {
-        let itemButtonList = [];
-        //绛涢�夊嚭鎸夐挳鍕鹃�変负true鐨勫垪
-        for (let key in item) {
-          if (item[key] === true) {
-            itemButtonList.push(key);
-          }
-        }
-        /**濡傛灉itemButtonList涓虹┖璇佹槑鏄紝
-         娣诲姞浜嗚鑹蹭絾鏄病鍕鹃�変换浣曠殑鎸夐挳*/
-        if (itemButtonList.length <= 0) {
-          flag = true;
+          this.$message.warning("瑙掕壊鍜屽垎绫诲凡缁忓瓨鍦紝璇烽噸鏂伴厤缃紒");
           return;
         }
-        let data = {
-          oid: item.oid,
-          roleId: item.roleData,
-          classifyId: this.classifyData.oid,
-          buttonIds: itemButtonList.join(","),
-          authType: "classify_auth",
-        };
-        form.push(data);
-      });
-      if (flag) {
-        this.$message.warning("鏈夋湭鍕鹃�夋搷浣滅殑鏉冮檺锛屼笉鍏佽鎺堟潈");
-        return;
+        
+        let flag = false;
+        this.classifyAuthData.forEach((item) => {
+          let itemButtonList = [];
+          //绛涢�夊嚭鎸夐挳鍕鹃�変负true鐨勫垪
+          for (let key in item) {
+            if (item[key] === true) {
+              itemButtonList.push(key);
+            }
+          }
+          /**濡傛灉itemButtonList涓虹┖璇佹槑鏄紝
+           娣诲姞浜嗚鑹蹭絾鏄病鍕鹃�変换浣曠殑鎸夐挳*/
+          if (itemButtonList.length <= 0) {
+            flag = true;
+            return;
+          }
+          let data = {
+            oid: item.oid,
+            roleId: item.roleData,
+            classifyId: this.classifyData.oid,
+            buttonIds: itemButtonList.join(","),
+            authType: "classify_auth",
+          };
+          form.classifyAuthList.push(data);
+        });
+        if (flag) {
+          this.$message.warning("鏈夋湭鍕鹃�夋搷浣滅殑鏉冮檺锛屼笉鍏佽鎺堟潈");
+          return;
+        }
+      }else {
+        // 涓虹┖璇佹槑鏄竻绌烘巿鏉冨垪琛�
+        form.isCLear = true;
       }
-      // console.log(form)
+      // console.log(JSON.stringify(form))
       // 璋冪敤淇濆瓨鍒嗙被鎺堟潈鐨勬帴鍙�
-      saveOrUpdate(form).then(
+      await saveOrUpdate(form).then(
         (res) => {
           this.$message({
             type: "success",
@@ -410,6 +347,8 @@
           window.console.log(error);
         }
       );
+      this.classifyAuthData = [];
+      this.loadAuthPage();
     },
     // 鍏ㄩ�夋寜閽�
     selectAllButton() {
@@ -423,6 +362,79 @@
       });
       //console.log("this.selectList",this.selectList);
     },
+    // 鍔犺浇鎺堟潈鍒楄〃
+    loadAuthPage() {
+      return new Promise((resolve, reject) => {
+        getButtonByParentCode({ code: "classifyTree" })
+          .then((res) => {
+            // 璁板綍鎸夐挳鏁版嵁
+            this.classifyAuthButton = res.data.data;
+            const list = res.data.data;
+            let tempData = [];
+            // 瑙掕壊鍒�
+            tempData.push({
+              label: "瑙掕壊",
+              prop: "roleData",
+              type: "select",
+              width: 150,
+            });
+            // 缂栫爜椤瑰垎绫绘巿鏉�
+            tempData.push({
+              label: "缂栫爜椤瑰垎绫绘巿鏉�",
+              prop: "classifyItem",
+              type: "text",
+              width: 180,
+            });
+            list.forEach((item) => {
+              let columnItem = {
+                label: item.name,
+                prop: item.id,
+                code: item.code,
+                type: "checkbox",
+                width: 180,
+              };
+              tempData.push(columnItem);
+            });
+            this.classifyAuthHeader = tempData;
+            resolve();
+          })
+          .catch((err) => {
+            reject(err);
+          });
+        // 鑾峰彇瑙掕壊鍒楄〃
+        getPage(1, -1, null).then((res) => {
+          this.roleList = res.data.data.records;
+        });
+        // 鑾峰彇璇ュ垎绫讳笅宸叉巿鏉冪殑鍒嗙被鎺堟潈淇℃伅
+        getClassifyAuthList({
+          classifyId: this.classifyData.oid,
+          authType: "classify_auth",
+        }).then((res) => {
+          //console.log(res.data.data);
+          let authDatas = res.data.data;
+          if (authDatas.length > 0) {
+            authDatas.forEach((authData, index) => {
+              let item = {
+                oid: authData.oid,
+                roleData: authData.roleId,
+                classifyItem: this.classifyData.label,
+                authButton:{},
+                index: index,
+                uuid: uuidv4(), //鐢熸垚鍞竴鐨刬d
+              };
+              //灏嗘寜閽缃繘鍘�
+              authData.buttonIdList.forEach((data) => {
+                Vue.set(item, data, true);
+              });
+              this.classifyAuthData.push(item);
+              this.addIndex = this.classifyAuthData.length - 1; //娣诲姞琛屼笅鏍囩瓑浜巆lassifyAuthData鐨勯暱搴�-1
+              this.roleHandlerMethods(authData.roleId, "create", index);
+              // console.log('index', index)
+            });
+          }
+        });
+      });
+    },
   },
 };
 </script>

--
Gitblit v1.9.3