Browse Source

布局设置支持保存&重置配置

RuoYi 5 years ago
parent
commit
db4a8b0e90

+ 18 - 6
ruoyi-ui/src/components/TopNav/index.vue

@@ -30,6 +30,9 @@
30
 <script>
30
 <script>
31
 import { constantRoutes } from "@/router";
31
 import { constantRoutes } from "@/router";
32
 
32
 
33
+// 不需要激活的路由
34
+const noactiveList = ["/user/profile", "/dict/type", "/gen/edit", "/job/log"];
35
+
33
 export default {
36
 export default {
34
   data() {
37
   data() {
35
     return {
38
     return {
@@ -42,10 +45,13 @@ export default {
42
   computed: {
45
   computed: {
43
     // 顶部显示菜单
46
     // 顶部显示菜单
44
     topMenus() {
47
     topMenus() {
45
-      return this.routers.map((menu) => ({
46
-        ...menu,
47
-        children: undefined,
48
-      }));
48
+      let topMenus = [];
49
+      this.routers.map((menu) => {
50
+        if (menu.hidden !== true) {
51
+          topMenus.push(menu);
52
+        }
53
+      });
54
+      return topMenus;
49
     },
55
     },
50
     // 所有的路由信息
56
     // 所有的路由信息
51
     routers() {
57
     routers() {
@@ -69,6 +75,12 @@ export default {
69
     activeMenu() {
75
     activeMenu() {
70
       const path = this.$route.path;
76
       const path = this.$route.path;
71
       let activePath = this.routers[0].path;
77
       let activePath = this.routers[0].path;
78
+      var noactive = noactiveList.some(function (item) {
79
+        return path.indexOf(item) !== -1;
80
+      });
81
+      if (noactive) {
82
+        return;
83
+      }
72
       if (path.lastIndexOf("/") > 0) {
84
       if (path.lastIndexOf("/") > 0) {
73
         const tmpPath = path.substring(1, path.length);
85
         const tmpPath = path.substring(1, path.length);
74
         activePath = "/" + tmpPath.substring(0, tmpPath.indexOf("/"));
86
         activePath = "/" + tmpPath.substring(0, tmpPath.indexOf("/"));
@@ -89,7 +101,7 @@ export default {
89
   methods: {
101
   methods: {
90
     // 根据宽度计算设置显示栏数
102
     // 根据宽度计算设置显示栏数
91
     setVisibleNumber() {
103
     setVisibleNumber() {
92
-      const width = document.body.getBoundingClientRect().width - 200;
104
+      const width = document.body.getBoundingClientRect().width - 380;
93
       const elWidth = this.$el.getBoundingClientRect().width;
105
       const elWidth = this.$el.getBoundingClientRect().width;
94
       const menuItemNodes = this.$el.children;
106
       const menuItemNodes = this.$el.children;
95
       const menuWidth = Array.from(menuItemNodes).map(
107
       const menuWidth = Array.from(menuItemNodes).map(
@@ -119,7 +131,7 @@ export default {
119
         });
131
         });
120
       }
132
       }
121
       this.$store.commit("SET_SIDEBAR_ROUTERS", routes);
133
       this.$store.commit("SET_SIDEBAR_ROUTERS", routes);
122
-    },
134
+    }
123
   },
135
   },
124
 };
136
 };
125
 </script>
137
 </script>

+ 39 - 4
ruoyi-ui/src/layout/components/Settings/index.vue

@@ -62,6 +62,10 @@
62
         <el-switch v-model="sidebarLogo" class="drawer-switch" />
62
         <el-switch v-model="sidebarLogo" class="drawer-switch" />
63
       </div>
63
       </div>
64
 
64
 
65
+      <el-divider/>
66
+
67
+      <el-button size="small" type="primary" plain icon="el-icon-document-add" @click="saveSetting">保存配置</el-button>
68
+      <el-button size="small" plain icon="el-icon-refresh" @click="resetSetting">重置配置</el-button>
65
     </div>
69
     </div>
66
   </div>
70
   </div>
67
 </template>
71
 </template>
@@ -72,15 +76,14 @@ import ThemePicker from '@/components/ThemePicker'
72
 export default {
76
 export default {
73
   components: { ThemePicker },
77
   components: { ThemePicker },
74
   data() {
78
   data() {
75
-    return {}
79
+    return {
80
+      sideTheme: this.$store.state.settings.sideTheme
81
+    };
76
   },
82
   },
77
   computed: {
83
   computed: {
78
     theme() {
84
     theme() {
79
       return this.$store.state.settings.theme
85
       return this.$store.state.settings.theme
80
     },
86
     },
81
-    sideTheme() {
82
-      return this.$store.state.settings.sideTheme
83
-    },
84
     fixedHeader: {
87
     fixedHeader: {
85
       get() {
88
       get() {
86
         return this.$store.state.settings.fixedHeader
89
         return this.$store.state.settings.fixedHeader
@@ -141,6 +144,38 @@ export default {
141
         key: 'sideTheme',
144
         key: 'sideTheme',
142
         value: val
145
         value: val
143
       })
146
       })
147
+      this.sideTheme = val;
148
+    },
149
+    saveSetting() {
150
+      const loading = this.$loading({
151
+        lock: true,
152
+        fullscreen: false,
153
+        text: "正在保存到本地,请稍后...",
154
+        spinner: "el-icon-loading",
155
+        background: "rgba(0, 0, 0, 0.7)"
156
+      });
157
+      localStorage.setItem(
158
+        "layout-setting",
159
+        `{
160
+            "topNav":${this.topNav},
161
+            "tagsView":${this.tagsView},
162
+            "fixedHeader":${this.fixedHeader},
163
+            "sidebarLogo":${this.sidebarLogo},
164
+            "sideTheme":"${this.sideTheme}"
165
+          }`
166
+      );
167
+      setTimeout(loading.close(), 1000)
168
+    },
169
+    resetSetting() {
170
+      this.$loading({
171
+        lock: true,
172
+        fullscreen: false,
173
+        text: "正在清除设置缓存并刷新,请稍后...",
174
+        spinner: "el-icon-loading",
175
+        background: "rgba(0, 0, 0, 0.7)"
176
+      });
177
+      localStorage.removeItem("layout-setting")
178
+      setTimeout("window.location.reload()", 1000)
144
     }
179
     }
145
   }
180
   }
146
 }
181
 }

+ 6 - 6
ruoyi-ui/src/store/modules/settings.js

@@ -3,16 +3,16 @@ import defaultSettings from '@/settings'
3
 
3
 
4
 const { sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo } = defaultSettings
4
 const { sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo } = defaultSettings
5
 
5
 
6
+const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || ''
6
 const state = {
7
 const state = {
7
   theme: variables.theme,
8
   theme: variables.theme,
8
-  sideTheme: sideTheme,
9
+  sideTheme: storageSetting.sideTheme || sideTheme,
9
   showSettings: showSettings,
10
   showSettings: showSettings,
10
-  topNav: topNav,
11
-  tagsView: tagsView,
12
-  fixedHeader: fixedHeader,
13
-  sidebarLogo: sidebarLogo
11
+  topNav:  storageSetting.topNav === undefined ? topNav : storageSetting.topNav,
12
+  tagsView: storageSetting.tagsView === undefined ? tagsView : storageSetting.tagsView,
13
+  fixedHeader: storageSetting.fixedHeader === undefined ? fixedHeader : storageSetting.fixedHeader,
14
+  sidebarLogo: storageSetting.sidebarLogo === undefined ? sidebarLogo : storageSetting.sidebarLogo
14
 }
15
 }
15
-
16
 const mutations = {
16
 const mutations = {
17
   CHANGE_SETTING: (state, { key, value }) => {
17
   CHANGE_SETTING: (state, { key, value }) => {
18
     if (state.hasOwnProperty(key)) {
18
     if (state.hasOwnProperty(key)) {