🎉 2.0.5.RELEASE

pull/59/head
smallchill 7 years ago
parent 3a65e5533e
commit b270513db7
  1. 13
      src/api/system/menu.js
  2. 10
      src/api/user.js
  3. 22
      src/page/index/top/top-menu.vue
  4. 56
      src/store/modules/user.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,
}
});

@ -37,16 +37,6 @@ export const getUserInfo = () => request({
method: 'get' 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({ export const sendLogs = (list) => request({
url: baseUrl + '/user/logout', url: baseUrl + '/user/logout',
method: 'post', method: 'post',

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

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

Loading…
Cancel
Save