From c8df1f5e1f1ba33caad650cbbbd4045e8f5948a3 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: 星期二, 13 四月 2021 09:47:28 +0800
Subject: [PATCH] 布局设置支持保存&重置配置

---
 ruoyi-ui/src/components/TopNav/index.vue             |   24 +++++++++---
 ruoyi-ui/src/settings.js                             |    2 
 ruoyi-admin/src/main/resources/application-druid.yml |    2 
 ruoyi-ui/src/layout/components/Settings/index.vue    |   43 +++++++++++++++++++--
 ruoyi-ui/src/store/modules/settings.js               |   12 +++---
 5 files changed, 65 insertions(+), 18 deletions(-)

diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index 423e75f..1f098e4 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -43,7 +43,7 @@
                 allow:
                 url-pattern: /druid/*
                 # 控制台管理用户名和密码
-                login-username: admin
+                login-username: ruoyi
                 login-password: 123456
             filter:
                 stat:
diff --git a/ruoyi-ui/src/components/TopNav/index.vue b/ruoyi-ui/src/components/TopNav/index.vue
index fb15c59..2397628 100644
--- a/ruoyi-ui/src/components/TopNav/index.vue
+++ b/ruoyi-ui/src/components/TopNav/index.vue
@@ -30,6 +30,9 @@
 <script>
 import { constantRoutes } from "@/router";
 
+// 不需要激活的路由
+const noactiveList = ["/user/profile", "/dict/type", "/gen/edit", "/job/log"];
+
 export default {
   data() {
     return {
@@ -42,10 +45,13 @@
   computed: {
     // 顶部显示菜单
     topMenus() {
-      return this.routers.map((menu) => ({
-        ...menu,
-        children: undefined,
-      }));
+      let topMenus = [];
+      this.routers.map((menu) => {
+        if (menu.hidden === false) {
+          topMenus.push(menu);
+        }
+      });
+      return topMenus;
     },
     // 所有的路由信息
     routers() {
@@ -69,6 +75,12 @@
     activeMenu() {
       const path = this.$route.path;
       let activePath = this.routers[0].path;
+      var noactive = noactiveList.some(function (item) {
+        return path.indexOf(item) !== -1;
+      });
+      if (noactive) {
+        return;
+      }
       if (path.lastIndexOf("/") > 0) {
         const tmpPath = path.substring(1, path.length);
         activePath = "/" + tmpPath.substring(0, tmpPath.indexOf("/"));
@@ -89,7 +101,7 @@
   methods: {
     // 根据宽度计算设置显示栏数
     setVisibleNumber() {
-      const width = document.body.getBoundingClientRect().width - 200;
+      const width = document.body.getBoundingClientRect().width - 380;
       const elWidth = this.$el.getBoundingClientRect().width;
       const menuItemNodes = this.$el.children;
       const menuWidth = Array.from(menuItemNodes).map(
@@ -119,7 +131,7 @@
         });
       }
       this.$store.commit("SET_SIDEBAR_ROUTERS", routes);
-    },
+    }
   },
 };
 </script>
diff --git a/ruoyi-ui/src/layout/components/Settings/index.vue b/ruoyi-ui/src/layout/components/Settings/index.vue
index 7e36d48..eba8139 100644
--- a/ruoyi-ui/src/layout/components/Settings/index.vue
+++ b/ruoyi-ui/src/layout/components/Settings/index.vue
@@ -62,6 +62,10 @@
         <el-switch v-model="sidebarLogo" class="drawer-switch" />
       </div>
 
+      <el-divider/>
+
+      <el-button size="small" type="primary" plain icon="el-icon-document-add" @click="saveSetting">保存配置</el-button>
+      <el-button size="small" plain icon="el-icon-refresh" @click="resetSetting">重置配置</el-button>
     </div>
   </div>
 </template>
@@ -72,14 +76,13 @@
 export default {
   components: { ThemePicker },
   data() {
-    return {}
+    return {
+      sideTheme: this.$store.state.settings.sideTheme
+    };
   },
   computed: {
     theme() {
       return this.$store.state.settings.theme
-    },
-    sideTheme() {
-      return this.$store.state.settings.sideTheme
     },
     fixedHeader: {
       get() {
@@ -141,6 +144,38 @@
         key: 'sideTheme',
         value: val
       })
+      this.sideTheme = val;
+    },
+    saveSetting() {
+      const loading = this.$loading({
+        lock: true,
+        fullscreen: false,
+        text: "正在保存到本地,请稍后...",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      localStorage.setItem(
+        "layout-setting",
+        `{
+            "topNav":${this.topNav},
+            "tagsView":${this.tagsView},
+            "fixedHeader":${this.fixedHeader},
+            "sidebarLogo":${this.sidebarLogo},
+            "sideTheme":"${this.sideTheme}"
+          }`
+      );
+      setTimeout(loading.close(), 1000)
+    },
+    resetSetting() {
+      this.$loading({
+        lock: true,
+        fullscreen: false,
+        text: "正在清除设置缓存并刷新,请稍后...",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.7)"
+      });
+      localStorage.removeItem("layout-setting")
+      setTimeout("window.location.reload()", 1000)
     }
   }
 }
diff --git a/ruoyi-ui/src/settings.js b/ruoyi-ui/src/settings.js
index d7e774b..0e74c71 100644
--- a/ruoyi-ui/src/settings.js
+++ b/ruoyi-ui/src/settings.js
@@ -14,7 +14,7 @@
   /**
    * 是否显示顶部导航
    */
-  topNav: true,
+  topNav: false,
 
   /**
    * 是否显示 tagsView
diff --git a/ruoyi-ui/src/store/modules/settings.js b/ruoyi-ui/src/store/modules/settings.js
index f113e9a..7192f1c 100644
--- a/ruoyi-ui/src/store/modules/settings.js
+++ b/ruoyi-ui/src/store/modules/settings.js
@@ -3,16 +3,16 @@
 
 const { sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo } = defaultSettings
 
+const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || ''
 const state = {
   theme: variables.theme,
-  sideTheme: sideTheme,
+  sideTheme: storageSetting.sideTheme || sideTheme,
   showSettings: showSettings,
-  topNav: topNav,
-  tagsView: tagsView,
-  fixedHeader: fixedHeader,
-  sidebarLogo: sidebarLogo
+  topNav:  storageSetting.topNav === undefined ? topNav : storageSetting.topNav,
+  tagsView: storageSetting.tagsView === undefined ? tagsView : storageSetting.tagsView,
+  fixedHeader: storageSetting.fixedHeader === undefined ? fixedHeader : storageSetting.fixedHeader,
+  sidebarLogo: storageSetting.sidebarLogo === undefined ? sidebarLogo : storageSetting.sidebarLogo
 }
-
 const mutations = {
   CHANGE_SETTING: (state, { key, value }) => {
     if (state.hasOwnProperty(key)) {

--
Gitblit v1.9.2