From 3211fce1acecc9a7eccc5c33662d2c7291acf502 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E2=80=9Cyiyousong=E2=80=9D?= <鈥測ousong_yi@foxmail.com鈥�>
Date: Sat, 18 Nov 2023 18:13:11 +0800
Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 portal-manager-ui/admin/src/api/resource.js   |  5 ++++
 portal-manager-ui/admin/src/router/index.js   | 11 ++++++++-
 .../admin/src/store/modules/user.js           |  7 ++++++
 .../admin/src/views/dataAdmin/dataAdmin.vue   | 12 +++++++++-
 .../admin/src/views/signIn/signIn.vue         | 23 ++++++++++++++++++-
 .../menuManagement/components/addEdit.vue     |  4 ++--
 .../permissionsModel/ResourceManage.vue       | 17 +++++++++++++-
 .../components/AddResurce.vue                 | 12 ++++------
 8 files changed, 78 insertions(+), 13 deletions(-)

diff --git a/portal-manager-ui/admin/src/api/resource.js b/portal-manager-ui/admin/src/api/resource.js
index 4bd390e8..d1cf4d43 100644
--- a/portal-manager-ui/admin/src/api/resource.js
+++ b/portal-manager-ui/admin/src/api/resource.js
@@ -25,3 +25,8 @@ export function getRoleResourceList(params) {
 export function distributionSource(params) {
   return http.post(`${baseURL}/zwfw/role/auth/distributionSource`, params);
 }
+
+// 鑷姩鍒锋柊璧勬簮
+export function refreshUrl(params) {
+  return http.post(`${baseURL}/zwfw/resource/refreshUrl`, params);
+}
diff --git a/portal-manager-ui/admin/src/router/index.js b/portal-manager-ui/admin/src/router/index.js
index 2dc90af5..d362a677 100644
--- a/portal-manager-ui/admin/src/router/index.js
+++ b/portal-manager-ui/admin/src/router/index.js
@@ -20,11 +20,16 @@ const router = new VueRouter({
   base: process.env.BASE_URL,
   routes: routeConfig,
 });
-
 router.beforeEach((to, from, next) => {
   let islogin = store.getters["user/token"];
+  // let routerPath = store.getters["user/routerList"];
+  // let toRootPathArr = to.matched.map((v) => v.path);
+  // let bol = hasIntersection(toRootPathArr, routerPath);
   if (islogin) {
     next();
+    // if (routerPath.includes(to.path) || bol) {
+    //   next();
+    // }
   } else {
     // 鍐嶆鍒ゆ柇闃叉姝诲惊鐜�
     if (to.path === "/") {
@@ -35,6 +40,10 @@ router.beforeEach((to, from, next) => {
   }
 });
 
+// function hasIntersection(arr1, arr2) {
+//   return arr1.some((item) => arr2.includes(item));
+// }
+
 router.afterEach((to, from, next) => {
   window.scrollTo(0, 0);
 });
diff --git a/portal-manager-ui/admin/src/store/modules/user.js b/portal-manager-ui/admin/src/store/modules/user.js
index 8b91457e..4d7dd8aa 100644
--- a/portal-manager-ui/admin/src/store/modules/user.js
+++ b/portal-manager-ui/admin/src/store/modules/user.js
@@ -11,6 +11,7 @@ export default {
     siteName: "", // 绔欑偣鍚嶇О
     siteId: "", // 绔欑偣id
     searForm: {}, // 鎶ヨ〃鎼滅储
+    routerList: [], // 鐢ㄦ埛鏉冮檺璺敱
   },
   getters: {
     siteId: (state) => state.siteId,
@@ -22,8 +23,14 @@ export default {
       let { menuList = [] } = state.userData;
       return menuList;
     },
+    routerList(state) {
+      return state.routerList;
+    },
   },
   mutations: {
+    SET_routerList(state, routerList) {
+      state.routerList = [...new Set([...state.routerList, ...routerList])];
+    },
     SET_USERDATA(state, data) {
       state.userData = data;
     },
diff --git a/portal-manager-ui/admin/src/views/dataAdmin/dataAdmin.vue b/portal-manager-ui/admin/src/views/dataAdmin/dataAdmin.vue
index 1fb5497c..2eefcdb9 100644
--- a/portal-manager-ui/admin/src/views/dataAdmin/dataAdmin.vue
+++ b/portal-manager-ui/admin/src/views/dataAdmin/dataAdmin.vue
@@ -76,6 +76,7 @@
 import Swiper from "swiper";
 import { censusListInterface } from "@/api/dataAdmin";
 import Storage from "@/utils/js/Storage";
+import { mapMutations } from "vuex";
 export default {
   components: {},
   data() {
@@ -138,6 +139,7 @@ export default {
     this.initSwiper();
   },
   methods: {
+    ...mapMutations("user", ["SET_routerList"]),
     initSwiper() {
       this.mySwiper = new Swiper(".swiper-container", {
         speed: 1500,
@@ -180,6 +182,7 @@ export default {
           CensusType_2: this.CensusType_2,
           CensusType_3: this.CensusType_3,
         };
+        this.SET_routerList(this.getReportPath(censusObj));
         let key = this.findFirstNonEmpty(censusObj);
         if (key) {
           this.active = key;
@@ -189,7 +192,6 @@ export default {
           this.censusList = [];
           this.active = "CensusType_1";
           if (this.$route.path != "/home/dataManagement") {
-            console.log(1);
             this.$router.push("/home/dataManagement");
           }
         }
@@ -203,6 +205,7 @@ export default {
         this.$router.push(this.censusList[0].censusUrl);
       }
     },
+    // 鎵惧嚭绗竴涓笉涓虹┖鐨勬姤琛ㄧ被鍒�
     findFirstNonEmpty(obj) {
       for (let key in obj) {
         if (obj[key].length > 0) {
@@ -211,6 +214,13 @@ export default {
       }
       return null;
     },
+    // 鑾峰彇鎶ヨ〃璺敱
+    getReportPath(obj = {}) {
+      let arr = Object.values(obj)
+        .flat()
+        .map((v) => v.censusUrl);
+      return arr;
+    },
     changeRouter(path) {
       this.$router.push(path);
     },
diff --git a/portal-manager-ui/admin/src/views/signIn/signIn.vue b/portal-manager-ui/admin/src/views/signIn/signIn.vue
index bd7c9d04..e331143b 100644
--- a/portal-manager-ui/admin/src/views/signIn/signIn.vue
+++ b/portal-manager-ui/admin/src/views/signIn/signIn.vue
@@ -326,7 +326,12 @@ export default {
     this.initSwiper();
   },
   methods: {
-    ...mapMutations("user", ["set_token", "SET_USERDATA", "set_siteList"]),
+    ...mapMutations("user", [
+      "set_token",
+      "SET_USERDATA",
+      "set_siteList",
+      "SET_routerList",
+    ]),
     initSwiper() {
       this.mySwiper = new Swiper(".mySwiper", {
         effect: "cube", // 鏂瑰潡鍔ㄧ敾
@@ -377,6 +382,7 @@ export default {
             this.set_token(token);
             this.SET_USERDATA(user);
             this.set_siteList(siteList);
+            this.SET_routerList(this.getUrl(user.menuList));
             if (siteList.length) {
               storage.set(2, "siteId", siteList[0].id);
               storage.set(2, "siteName", siteList[0].siteName);
@@ -420,6 +426,21 @@ export default {
         }
       });
     },
+
+    // 閫掑綊鑾峰彇鑿滃崟url
+    getUrl(menus = []) {
+      let urls = [];
+      let fn = (arr) => {
+        arr.forEach((v) => {
+          urls.push(v.url);
+          if (v.childList && v.childList.length) {
+            fn(v.childList);
+          }
+        });
+      };
+      fn(menus);
+      return urls;
+    },
   },
 };
 </script>
diff --git a/portal-manager-ui/admin/src/views/thePlatformIsSet/components/menuManagement/components/addEdit.vue b/portal-manager-ui/admin/src/views/thePlatformIsSet/components/menuManagement/components/addEdit.vue
index d8f4f36f..13e7f64e 100644
--- a/portal-manager-ui/admin/src/views/thePlatformIsSet/components/menuManagement/components/addEdit.vue
+++ b/portal-manager-ui/admin/src/views/thePlatformIsSet/components/menuManagement/components/addEdit.vue
@@ -225,7 +225,7 @@ export default {
         imgPath: [
           //鍥炬爣
           {
-            required: true, //鏄惁蹇呴€�
+            required: false, //鏄惁蹇呴€�
             message: "璇烽€夋嫨鍥炬爣",
             trigger: "change",
           },
@@ -245,7 +245,7 @@ export default {
         remark: [
           //鎻忚堪
           {
-            required: true, //鏄惁蹇呴€�
+            required: false, //鏄惁蹇呴€�
             message: "璇疯緭鍏ユ弿杩�",
             trigger: "blur",
           },
diff --git a/portal-manager-ui/admin/src/views/thePlatformIsSet/components/permissionsModel/ResourceManage.vue b/portal-manager-ui/admin/src/views/thePlatformIsSet/components/permissionsModel/ResourceManage.vue
index 1965383e..3115780b 100644
--- a/portal-manager-ui/admin/src/views/thePlatformIsSet/components/permissionsModel/ResourceManage.vue
+++ b/portal-manager-ui/admin/src/views/thePlatformIsSet/components/permissionsModel/ResourceManage.vue
@@ -6,6 +6,13 @@
         <a-button type="primary" class="addclass" @click="addSresource"
           >鏂板璧勬簮</a-button
         >
+        <a-button
+          v-permission="[1]"
+          type="primary"
+          class="addclass"
+          @click="refSresource"
+          >鍒锋柊璧勬簮</a-button
+        >
         <a-button type="danger" @click="delAll">鎵归噺鍒犻櫎</a-button>
       </a-space>
       <a-space>
@@ -84,7 +91,7 @@
 </template>
 
 <script>
-import { getResourceList, delResource } from "@/api/resource";
+import { getResourceList, delResource, refreshUrl } from "@/api/resource";
 import AddResurce from "./components/AddResurce.vue";
 export default {
   components: {
@@ -242,6 +249,14 @@ export default {
         },
       });
     },
+    // 鍒锋柊璧勬簮
+    async refSresource() {
+      let res = await refreshUrl();
+      if (res.code == 1) {
+        this.$message.success(res.msg);
+        this.getResourceList();
+      }
+    },
   },
 };
 </script>
diff --git a/portal-manager-ui/admin/src/views/thePlatformIsSet/components/permissionsModel/components/AddResurce.vue b/portal-manager-ui/admin/src/views/thePlatformIsSet/components/permissionsModel/components/AddResurce.vue
index cffe2ebc..8890d712 100644
--- a/portal-manager-ui/admin/src/views/thePlatformIsSet/components/permissionsModel/components/AddResurce.vue
+++ b/portal-manager-ui/admin/src/views/thePlatformIsSet/components/permissionsModel/components/AddResurce.vue
@@ -36,7 +36,7 @@
             >
           </a-select>
         </a-form-model-item>
-        <a-form-model-item label="閾炬帴鍦板潃" prop="url">
+        <a-form-model-item label="閾炬帴鍦板潃">
           <a-form-model-item
             class="url-params"
             v-for="(v, i) in form.urls"
@@ -133,11 +133,12 @@ export default {
     onEdit(row) {
       setTimeout(() => {
         this.form = { ...row };
-        this.form.urls = this.form.url.map((v) => {
+        let arr = this.form.url.map((v) => {
           return {
             value: v,
           };
         });
+        this.$set(this.form, "urls", arr);
       }, 10);
     },
     subForm() {
@@ -186,16 +187,13 @@ export default {
       } else {
         this.form.urls.splice(index, 1);
       }
+      // this.$forceUpdate();
     },
 
     resetForm() {
       // 閲嶇疆杩樺師琛ㄥ崟淇℃伅鍐呭
       this.$refs.form.resetFields();
-      this.form.urls = [
-        {
-          value: "",
-        },
-      ];
+      this.$set(this.form, "urls", [{ value: "" }]);
     },
     handleCancel() {
       this.resetForm();
-- 
2.24.3