smallchill 6 лет назад
Родитель
Сommit
b270513db7
4 измененных файлов с 60 добавлено и 43 удалено
  1. 13 0
      src/api/system/menu.js
  2. 0 10
      src/api/user.js
  3. 18 6
      src/page/index/top/top-menu.vue
  4. 29 27
      src/store/modules/user.js

+ 13 - 0
src/api/system/menu.js

@@ -59,3 +59,16 @@ export const getMenu = (id) => {
     }
   })
 }
+
+export const getTopMenu = () => request({
+  url: '/api/blade-system/menu/top-menu',
+  method: 'get'
+});
+
+export const getRoutes = (topMenuId) => request({
+  url: '/api/blade-system/menu/routes',
+  method: 'get',
+  params: {
+    topMenuId,
+  }
+});

+ 0 - 10
src/api/user.js

@@ -37,16 +37,6 @@ export const getUserInfo = () => request({
   method: 'get'
 });
 
-export const getMenu = () => request({
-  url: '/api/blade-system/menu/routes',
-  method: 'get'
-});
-
-export const getTopMenu = () => request({
-  url: baseUrl + '/user/getTopMenu',
-  method: 'get'
-});
-
 export const sendLogs = (list) => request({
   url: baseUrl + '/user/logout',
   method: 'post',

+ 18 - 6
src/page/index/top/top-menu.vue

@@ -3,12 +3,20 @@
     <el-menu :default-active="activeIndex"
              mode="horizontal"
              text-color="#333">
+      <el-menu-item index="0"
+                    @click.native="openMenu(itemHome)"
+                    key="0">
+        <template slot="title">
+          <i :class="itemHome.source"></i>
+          <span>{{generateTitle(itemHome)}}</span>
+        </template>
+      </el-menu-item>
       <template v-for="(item,index) in items">
-        <el-menu-item :index="item.parentId+''"
+        <el-menu-item :index="item.id+''"
                       @click.native="openMenu(item)"
                       :key="index">
           <template slot="title">
-            <i :class="item.icon"></i>
+            <i :class="item.source" style="padding-right: 5px;"></i>
             <span>{{generateTitle(item)}}</span>
           </template>
         </el-menu-item>
@@ -23,8 +31,12 @@ export default {
   name: "top-menu",
   data() {
     return {
+      itemHome: {
+        name: '首页',
+        source: 'el-icon-menu',
+      },
       activeIndex: "0",
-      items: []
+      items: [],
     };
   },
   created() {
@@ -41,12 +53,12 @@ export default {
     },
     generateTitle(item) {
       return this.$router.$avueRouter.generateTitle(
-        item.label,
+        item.name,
         (item.meta || {}).i18n
       );
     },
     openMenu(item) {
-      this.$store.dispatch("GetMenu", item.parentId).then(data => {
+      this.$store.dispatch("GetMenu", item.id).then(data => {
         if (data.length !== 0) {
           this.$router.$avueRouter.formatRoutes(data, true);
         }
@@ -72,4 +84,4 @@ export default {
     }
   }
 };
-</script>
+</script>

+ 29 - 27
src/store/modules/user.js

@@ -1,10 +1,11 @@
-import { setToken, setRefreshToken, removeToken, removeRefreshToken } from '@/util/auth'
-import { Message } from 'element-ui'
-import { setStore, getStore } from '@/util/store'
-import { isURL, validatenull } from '@/util/validate'
-import { deepClone } from '@/util/util'
+import {setToken, setRefreshToken, removeToken, removeRefreshToken} from '@/util/auth'
+import {Message} from 'element-ui'
+import {setStore, getStore} from '@/util/store'
+import {isURL, validatenull} from '@/util/validate'
+import {deepClone} from '@/util/util'
 import webiste from '@/config/website'
-import { loginByUsername, getUserInfo, getMenu, getTopMenu, logout, refreshToken, getButtons } from '@/api/user'
+import {loginByUsername, getUserInfo, logout, refreshToken, getButtons} from '@/api/user'
+import {getTopMenu, getRoutes} from '@/api/system/menu'
 
 
 function addPath(ele, first) {
@@ -32,17 +33,17 @@ function addPath(ele, first) {
 
 const user = {
   state: {
-    userInfo: getStore({ name: 'userInfo' }) || [],
-    permission: getStore({ name: 'permission' }) || {},
+    userInfo: getStore({name: 'userInfo'}) || [],
+    permission: getStore({name: 'permission'}) || {},
     roles: [],
-    menu: getStore({ name: 'menu' }) || [],
+    menu: getStore({name: 'menu'}) || [],
     menuAll: [],
-    token: getStore({ name: 'token' }) || '',
-    refreshToken: getStore({ name: 'refreshToken' }) || '',
+    token: getStore({name: 'token'}) || '',
+    refreshToken: getStore({name: 'refreshToken'}) || '',
   },
   actions: {
     //根据用户名登录
-    LoginByUsername({ commit }, userInfo) {
+    LoginByUsername({commit}, userInfo) {
       return new Promise((resolve, reject) => {
         loginByUsername(userInfo.tenantId, userInfo.username, userInfo.password, userInfo.type).then(res => {
           const data = res.data;
@@ -54,7 +55,7 @@ const user = {
           } else {
             commit('SET_TOKEN', data.access_token);
             commit('SET_REFRESH_TOKEN', data.refresh_token);
-            commit('SET_USERIFNO', data);
+            commit('SET_USER_INFO', data);
             commit('DEL_ALL_TAG');
             commit('CLEAR_LOCK');
           }
@@ -64,7 +65,7 @@ const user = {
         })
       })
     },
-    GetButtons({ commit }) {
+    GetButtons({commit}) {
       return new Promise((resolve) => {
         getButtons().then(res => {
           const data = res.data.data;
@@ -74,7 +75,7 @@ const user = {
       })
     },
     //根据手机号登录
-    LoginByPhone({ commit }, userInfo) {
+    LoginByPhone({commit}, userInfo) {
       return new Promise((resolve) => {
         loginByUsername(userInfo.phone, userInfo.code).then(res => {
           const data = res.data.data;
@@ -85,7 +86,7 @@ const user = {
         })
       })
     },
-    GetUserInfo({ commit }) {
+    GetUserInfo({commit}) {
       return new Promise((resolve, reject) => {
         getUserInfo().then((res) => {
           const data = res.data.data;
@@ -97,7 +98,7 @@ const user = {
       })
     },
     //刷新token
-    refreshToken({ state, commit }) {
+    refreshToken({state, commit}) {
       console.log('handle refresh token')
       return new Promise((resolve, reject) => {
         refreshToken(state.refreshToken).then(res => {
@@ -111,7 +112,7 @@ const user = {
       })
     },
     // 登出
-    LogOut({ commit }) {
+    LogOut({commit}) {
       return new Promise((resolve, reject) => {
         logout().then(() => {
           commit('SET_TOKEN', '')
@@ -128,7 +129,7 @@ const user = {
       })
     },
     //注销session
-    FedLogOut({ commit }) {
+    FedLogOut({commit}) {
       return new Promise(resolve => {
         commit('SET_TOKEN', '')
         commit('SET_MENU', [])
@@ -140,6 +141,7 @@ const user = {
         resolve()
       })
     },
+    //获取顶部菜单
     GetTopMenu() {
       return new Promise(resolve => {
         getTopMenu().then((res) => {
@@ -149,9 +151,9 @@ const user = {
       })
     },
     //获取系统菜单
-    GetMenu({ commit, dispatch }, parentId) {
+    GetMenu({commit, dispatch}, topMenuId) {
       return new Promise(resolve => {
-        getMenu(parentId).then((res) => {
+        getRoutes(topMenuId).then((res) => {
           const data = res.data.data
           let menu = deepClone(data);
           menu.forEach(ele => {
@@ -168,20 +170,20 @@ const user = {
     SET_TOKEN: (state, token) => {
       setToken(token)
       state.token = token;
-      setStore({ name: 'token', content: state.token, type: 'session' })
+      setStore({name: 'token', content: state.token, type: 'session'})
     },
     SET_REFRESH_TOKEN: (state, refreshToken) => {
       setRefreshToken(refreshToken)
       state.refreshToken = refreshToken;
-      setStore({ name: 'refreshToken', content: state.refreshToken, type: 'session' })
+      setStore({name: 'refreshToken', content: state.refreshToken, type: 'session'})
     },
-    SET_USERIFNO: (state, userInfo) => {
+    SET_USER_INFO: (state, userInfo) => {
       state.userInfo = userInfo;
-      setStore({ name: 'userInfo', content: state.userInfo })
+      setStore({name: 'userInfo', content: state.userInfo})
     },
     SET_MENU: (state, menu) => {
       state.menu = menu
-      setStore({ name: 'menu', content: state.menu, type: 'session' })
+      setStore({name: 'menu', content: state.menu, type: 'session'})
     },
     SET_MENU_ALL: (state, menuAll) => {
       state.menuAll = menuAll;
@@ -212,7 +214,7 @@ const user = {
       result.forEach(ele => {
         state.permission[ele] = true;
       });
-      setStore({ name: 'permission', content: state.permission, type: 'session' })
+      setStore({name: 'permission', content: state.permission, type: 'session'})
     }
   }