Sfoglia il codice sorgente

开启TopNav没有子菜单情况隐藏侧边栏

RuoYi 4 anni fa
parent
commit
8b3d75a6a0
28 ha cambiato i file con 59 aggiunte e 54 eliminazioni
  1. 1 1
      ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index-tree.vue.vm
  2. 1 1
      ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index.vue.vm
  3. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
  4. 4 0
      ruoyi-ui/src/assets/styles/sidebar.scss
  5. 15 23
      ruoyi-ui/src/components/TopNav/index.vue
  6. 1 0
      ruoyi-ui/src/layout/components/Settings/index.vue
  7. 2 2
      ruoyi-ui/src/layout/index.vue
  8. 6 0
      ruoyi-ui/src/router/index.js
  9. 8 1
      ruoyi-ui/src/store/modules/app.js
  10. 1 6
      ruoyi-ui/src/store/modules/permission.js
  11. 1 1
      ruoyi-ui/src/views/monitor/job/index.vue
  12. 2 2
      ruoyi-ui/src/views/monitor/job/log.vue
  13. 1 1
      ruoyi-ui/src/views/monitor/online/index.vue
  14. 1 1
      ruoyi-ui/src/views/system/config/index.vue
  15. 1 1
      ruoyi-ui/src/views/system/dept/index.vue
  16. 1 1
      ruoyi-ui/src/views/system/dict/data.vue
  17. 1 1
      ruoyi-ui/src/views/system/dict/index.vue
  18. 1 1
      ruoyi-ui/src/views/system/logininfor/index.vue
  19. 1 1
      ruoyi-ui/src/views/system/menu/index.vue
  20. 1 1
      ruoyi-ui/src/views/system/notice/index.vue
  21. 1 1
      ruoyi-ui/src/views/system/operlog/index.vue
  22. 1 1
      ruoyi-ui/src/views/system/post/index.vue
  23. 1 1
      ruoyi-ui/src/views/system/role/authUser.vue
  24. 1 1
      ruoyi-ui/src/views/system/role/index.vue
  25. 1 1
      ruoyi-ui/src/views/system/role/selectUser.vue
  26. 1 1
      ruoyi-ui/src/views/system/user/index.vue
  27. 1 1
      ruoyi-ui/src/views/tool/gen/importTable.vue
  28. 1 1
      ruoyi-ui/src/views/tool/gen/index.vue

+ 1 - 1
ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index-tree.vue.vm

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch" label-width="68px">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4 4
 #foreach($column in $columns)
5 5
 #if($column.query)
6 6
 #set($dictType=$column.dictType)

+ 1 - 1
ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index.vue.vm

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch" label-width="68px">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4 4
 #foreach($column in $columns)
5 5
 #if($column.query)
6 6
 #set($dictType=$column.dictType)

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java

@@ -176,7 +176,7 @@ public class SysMenuServiceImpl implements ISysMenuService
176 176
             else if (menu.getParentId().intValue() == 0 && isInnerLink(menu))
177 177
             {
178 178
                 router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon()));
179
-                router.setPath("/inner");
179
+                router.setPath("/");
180 180
                 List<RouterVo> childrenList = new ArrayList<RouterVo>();
181 181
                 RouterVo children = new RouterVo();
182 182
                 String routerPath = innerLinkReplaceEach(menu.getPath());

+ 4 - 0
ruoyi-ui/src/assets/styles/sidebar.scss

@@ -7,6 +7,10 @@
7 7
     position: relative;
8 8
   }
9 9
 
10
+  .sidebarHide {
11
+    margin-left: 0!important;
12
+  }
13
+
10 14
   .sidebar-container {
11 15
     -webkit-transition: width .28s;
12 16
     transition: width 0.28s;

+ 15 - 23
ruoyi-ui/src/components/TopNav/index.vue

@@ -71,7 +71,7 @@ export default {
71 71
         for (var item in router.children) {
72 72
           if (router.children[item].parentPath === undefined) {
73 73
             if(router.path === "/") {
74
-              router.children[item].path = "/redirect/" + router.children[item].path;
74
+              router.children[item].path = "/" + router.children[item].path;
75 75
             } else {
76 76
               if(!this.ishttp(router.children[item].path)) {
77 77
                 router.children[item].path = router.path + "/" + router.children[item].path;
@@ -87,22 +87,23 @@ export default {
87 87
     // 默认激活的菜单
88 88
     activeMenu() {
89 89
       const path = this.$route.path;
90
-      let activePath = this.defaultRouter();
90
+      let activePath = path;
91 91
       if (path.lastIndexOf("/") > 0) {
92 92
         const tmpPath = path.substring(1, path.length);
93 93
         activePath = "/" + tmpPath.substring(0, tmpPath.indexOf("/"));
94
+        this.$store.dispatch('app/toggleSideBarHide', false);
94 95
       } else if ("/index" == path || "" == path) {
95 96
         if (!this.isFrist) {
96 97
           this.isFrist = true;
97 98
         } else {
98 99
           activePath = "index";
99 100
         }
101
+        this.$store.dispatch('app/toggleSideBarHide', true);
102
+      } else if(!this.$route.children) {
103
+        activePath = path;
104
+        this.$store.dispatch('app/toggleSideBarHide', true);
100 105
       }
101
-      var routes = this.activeRoutes(activePath);
102
-      if (routes.length === 0) {
103
-        activePath = this.currentIndex || this.defaultRouter()
104
-        this.activeRoutes(activePath);
105
-      }
106
+      this.activeRoutes(activePath);
106 107
       return activePath;
107 108
     },
108 109
   },
@@ -121,29 +122,21 @@ export default {
121 122
       const width = document.body.getBoundingClientRect().width / 3;
122 123
       this.visibleNumber = parseInt(width / 85);
123 124
     },
124
-    // 默认激活的路由
125
-    defaultRouter() {
126
-      let router;
127
-      Object.keys(this.routers).some((key) => {
128
-        if (!this.routers[key].hidden) {
129
-          router = this.routers[key].path;
130
-          return true;
131
-        }
132
-      });
133
-      return router;
134
-    },
135 125
     // 菜单选择事件
136 126
     handleSelect(key, keyPath) {
137 127
       this.currentIndex = key;
128
+      const route = this.routers.find(item => item.path === key);
138 129
       if (this.ishttp(key)) {
139 130
         // http(s):// 路径新窗口打开
140 131
         window.open(key, "_blank");
141
-      } else if (key.indexOf("/redirect") !== -1) {
142
-        // /redirect 路径内部打开
143
-        this.$router.push({ path: key.replace("/redirect", "") });
132
+      } else if (!route || !route.children) {
133
+        // 没有子路由路径内部打开
134
+        this.$router.push({ path: key });
135
+        this.$store.dispatch('app/toggleSideBarHide', true);
144 136
       } else {
145 137
         // 显示左侧联动菜单
146 138
         this.activeRoutes(key);
139
+        this.$store.dispatch('app/toggleSideBarHide', false);
147 140
       }
148 141
     },
149 142
     // 当前激活的路由
@@ -159,9 +152,8 @@ export default {
159 152
       if(routes.length > 0) {
160 153
         this.$store.commit("SET_SIDEBAR_ROUTERS", routes);
161 154
       }
162
-      return routes;
163 155
     },
164
-	ishttp(url) {
156
+    ishttp(url) {
165 157
       return url.indexOf('http://') !== -1 || url.indexOf('https://') !== -1
166 158
     }
167 159
   },

+ 1 - 0
ruoyi-ui/src/layout/components/Settings/index.vue

@@ -108,6 +108,7 @@ export default {
108 108
           value: val
109 109
         })
110 110
         if (!val) {
111
+          this.$store.dispatch('app/toggleSideBarHide', false);
111 112
           this.$store.commit("SET_SIDEBAR_ROUTERS", this.$store.state.permission.defaultRoutes);
112 113
         }
113 114
       }

+ 2 - 2
ruoyi-ui/src/layout/index.vue

@@ -1,8 +1,8 @@
1 1
 <template>
2 2
   <div :class="classObj" class="app-wrapper" :style="{'--current-color': theme}">
3 3
     <div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside"/>
4
-    <sidebar class="sidebar-container"/>
5
-    <div :class="{hasTagsView:needTagsView}" class="main-container">
4
+    <sidebar v-if="!sidebar.hide" class="sidebar-container" />
5
+    <div :class="{hasTagsView:needTagsView,sidebarHide:sidebar.hide}" class="main-container">
6 6
       <div :class="{'fixed-header':fixedHeader}">
7 7
         <navbar />
8 8
         <tags-view v-if="needTagsView" />

+ 6 - 0
ruoyi-ui/src/router/index.js

@@ -164,6 +164,12 @@ export const dynamicRoutes = [
164 164
   }
165 165
 ]
166 166
 
167
+// 防止连续点击多次路由报错
168
+let routerPush = Router.prototype.push;
169
+Router.prototype.push = function push(location) {
170
+  return routerPush.call(this, location).catch(err => err)
171
+}
172
+
167 173
 export default new Router({
168 174
   mode: 'history', // 去掉url中的#
169 175
   scrollBehavior: () => ({ y: 0 }),

+ 8 - 1
ruoyi-ui/src/store/modules/app.js

@@ -3,7 +3,8 @@ import Cookies from 'js-cookie'
3 3
 const state = {
4 4
   sidebar: {
5 5
     opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true,
6
-    withoutAnimation: false
6
+    withoutAnimation: false,
7
+    hide: false
7 8
   },
8 9
   device: 'desktop',
9 10
   size: Cookies.get('size') || 'medium'
@@ -30,6 +31,9 @@ const mutations = {
30 31
   SET_SIZE: (state, size) => {
31 32
     state.size = size
32 33
     Cookies.set('size', size)
34
+  },
35
+  SET_SIDEBAR_HIDE: (state, status) => {
36
+    state.sidebar.hide = status
33 37
   }
34 38
 }
35 39
 
@@ -45,6 +49,9 @@ const actions = {
45 49
   },
46 50
   setSize({ commit }, size) {
47 51
     commit('SET_SIZE', size)
52
+  },
53
+  toggleSideBarHide({ commit }, status) {
54
+    commit('SET_SIDEBAR_HIDE', status)
48 55
   }
49 56
 }
50 57
 

+ 1 - 6
ruoyi-ui/src/store/modules/permission.js

@@ -22,12 +22,7 @@ const permission = {
22 22
       state.defaultRoutes = constantRoutes.concat(routes)
23 23
     },
24 24
     SET_TOPBAR_ROUTES: (state, routes) => {
25
-      // 顶部导航菜单默认添加统计报表栏指向首页
26
-      const index = [{
27
-        path: 'index',
28
-        meta: { title: '统计报表', icon: 'dashboard' }
29
-      }]
30
-      state.topbarRouters = routes.concat(index);
25
+      state.topbarRouters = routes
31 26
     },
32 27
     SET_SIDEBAR_ROUTERS: (state, routes) => {
33 28
       state.sidebarRouters = routes

+ 1 - 1
ruoyi-ui/src/views/monitor/job/index.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch" label-width="68px">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4 4
       <el-form-item label="任务名称" prop="jobName">
5 5
         <el-input
6 6
           v-model="queryParams.jobName"

+ 2 - 2
ruoyi-ui/src/views/monitor/job/log.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch" label-width="68px">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4 4
       <el-form-item label="任务名称" prop="jobName">
5 5
         <el-input
6 6
           v-model="queryParams.jobName"
@@ -13,7 +13,7 @@
13 13
       <el-form-item label="任务组名" prop="jobGroup">
14 14
         <el-select
15 15
           v-model="queryParams.jobGroup"
16
-          placeholder="请任务组名"
16
+          placeholder="请选择任务组名"
17 17
           clearable
18 18
           style="width: 240px"
19 19
         >

+ 1 - 1
ruoyi-ui/src/views/monitor/online/index.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" label-width="68px">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
4 4
       <el-form-item label="登录地址" prop="ipaddr">
5 5
         <el-input
6 6
           v-model="queryParams.ipaddr"

+ 1 - 1
ruoyi-ui/src/views/system/config/index.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch" label-width="68px">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4 4
       <el-form-item label="参数名称" prop="configName">
5 5
         <el-input
6 6
           v-model="queryParams.configName"

+ 1 - 1
ruoyi-ui/src/views/system/dept/index.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
4 4
       <el-form-item label="部门名称" prop="deptName">
5 5
         <el-input
6 6
           v-model="queryParams.deptName"

+ 1 - 1
ruoyi-ui/src/views/system/dict/data.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch" label-width="68px">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4 4
       <el-form-item label="字典名称" prop="dictType">
5 5
         <el-select v-model="queryParams.dictType">
6 6
           <el-option

+ 1 - 1
ruoyi-ui/src/views/system/dict/index.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch" label-width="68px">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4 4
       <el-form-item label="字典名称" prop="dictName">
5 5
         <el-input
6 6
           v-model="queryParams.dictName"

+ 1 - 1
ruoyi-ui/src/views/system/logininfor/index.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch" label-width="68px">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4 4
       <el-form-item label="登录地址" prop="ipaddr">
5 5
         <el-input
6 6
           v-model="queryParams.ipaddr"

+ 1 - 1
ruoyi-ui/src/views/system/menu/index.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
4 4
       <el-form-item label="菜单名称" prop="menuName">
5 5
         <el-input
6 6
           v-model="queryParams.menuName"

+ 1 - 1
ruoyi-ui/src/views/system/notice/index.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch" label-width="68px">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4 4
       <el-form-item label="公告标题" prop="noticeTitle">
5 5
         <el-input
6 6
           v-model="queryParams.noticeTitle"

+ 1 - 1
ruoyi-ui/src/views/system/operlog/index.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch" label-width="68px">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4 4
       <el-form-item label="系统模块" prop="title">
5 5
         <el-input
6 6
           v-model="queryParams.title"

+ 1 - 1
ruoyi-ui/src/views/system/post/index.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch" label-width="68px">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4 4
       <el-form-item label="岗位编码" prop="postCode">
5 5
         <el-input
6 6
           v-model="queryParams.postCode"

+ 1 - 1
ruoyi-ui/src/views/system/role/authUser.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-     <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch">
3
+     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
4 4
       <el-form-item label="用户名称" prop="userName">
5 5
         <el-input
6 6
           v-model="queryParams.userName"

+ 1 - 1
ruoyi-ui/src/views/system/role/index.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
4 4
       <el-form-item label="角色名称" prop="roleName">
5 5
         <el-input
6 6
           v-model="queryParams.roleName"

+ 1 - 1
ruoyi-ui/src/views/system/role/selectUser.vue

@@ -1,7 +1,7 @@
1 1
 <template>
2 2
   <!-- 授权用户 -->
3 3
   <el-dialog title="选择用户" :visible.sync="visible" width="800px" top="5vh" append-to-body>
4
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true">
4
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
5 5
       <el-form-item label="用户名称" prop="userName">
6 6
         <el-input
7 7
           v-model="queryParams.userName"

+ 1 - 1
ruoyi-ui/src/views/system/user/index.vue

@@ -27,7 +27,7 @@
27 27
       </el-col>
28 28
       <!--用户数据-->
29 29
       <el-col :span="20" :xs="24">
30
-        <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch" label-width="68px">
30
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
31 31
           <el-form-item label="用户名称" prop="userName">
32 32
             <el-input
33 33
               v-model="queryParams.userName"

+ 1 - 1
ruoyi-ui/src/views/tool/gen/importTable.vue

@@ -1,7 +1,7 @@
1 1
 <template>
2 2
   <!-- 导入表 -->
3 3
   <el-dialog title="导入表" :visible.sync="visible" width="800px" top="5vh" append-to-body>
4
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true">
4
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
5 5
       <el-form-item label="表名称" prop="tableName">
6 6
         <el-input
7 7
           v-model="queryParams.tableName"

+ 1 - 1
ruoyi-ui/src/views/tool/gen/index.vue

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" inline="true" v-show="showSearch" label-width="68px">
3
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4 4
       <el-form-item label="表名称" prop="tableName">
5 5
         <el-input
6 6
           v-model="queryParams.tableName"