优化路由逻辑,支持新开浏览器tab后保持登录状态

dev
smallchill 6 years ago
parent cd90cf5579
commit eacc01337f
  1. 2
      src/store/modules/dict.js
  2. 16
      src/store/modules/tags.js
  3. 53
      src/store/modules/user.js

@ -27,7 +27,7 @@ const dict = {
routeValue: item.remark, routeValue: item.remark,
}; };
}); });
setStore({name: 'flowRoutes', content: state.flowRoutes, type: 'session'}) setStore({name: 'flowRoutes', content: state.flowRoutes})
}, },
} }

@ -15,7 +15,7 @@ const tagObj = {
//处理首个标签 //处理首个标签
function setFistTag(list) { function setFistTag(list) {
if (list.length == 1) { if (list.length === 1) {
list[0].close = false; list[0].close = false;
} else { } else {
list.forEach(ele => { list.forEach(ele => {
@ -39,22 +39,22 @@ const navs = {
mutations: { mutations: {
ADD_TAG: (state, action) => { ADD_TAG: (state, action) => {
state.tag = action; state.tag = action;
setStore({name: 'tag', content: state.tag, type: 'session'}) setStore({name: 'tag', content: state.tag})
if (state.tagList.some(ele => diff(ele, action))) return if (state.tagList.some(ele => diff(ele, action))) return
state.tagList.push(action) state.tagList.push(action)
setFistTag(state.tagList); setFistTag(state.tagList);
setStore({name: 'tagList', content: state.tagList, type: 'session'}) setStore({name: 'tagList', content: state.tagList})
}, },
DEL_TAG: (state, action) => { DEL_TAG: (state, action) => {
state.tagList = state.tagList.filter(item => { state.tagList = state.tagList.filter(item => {
return !diff(item, action); return !diff(item, action);
}) })
setFistTag(state.tagList); setFistTag(state.tagList);
setStore({name: 'tagList', content: state.tagList, type: 'session'}) setStore({name: 'tagList', content: state.tagList})
}, },
DEL_ALL_TAG: (state) => { DEL_ALL_TAG: (state) => {
state.tagList = [state.tagWel]; state.tagList = [state.tagWel];
setStore({name: 'tagList', content: state.tagList, type: 'session'}) setStore({name: 'tagList', content: state.tagList})
}, },
DEL_TAG_OTHER: (state) => { DEL_TAG_OTHER: (state) => {
state.tagList = state.tagList.filter(item => { state.tagList = state.tagList.filter(item => {
@ -65,8 +65,12 @@ const navs = {
} }
}) })
setFistTag(state.tagList); setFistTag(state.tagList);
setStore({name: 'tagList', content: state.tagList, type: 'session'}) setStore({name: 'tagList', content: state.tagList})
}, },
SET_TAG_LIST(state, tagList) {
state.tagList = tagList;
setStore({name: 'tagList', content: state.tagList})
}
} }
} }
export default navs export default navs

@ -137,6 +137,7 @@ const user = {
commit('SET_MENU_ID', {}); commit('SET_MENU_ID', {});
commit('SET_MENU_ALL', []); commit('SET_MENU_ALL', []);
commit('SET_ROLES', []); commit('SET_ROLES', []);
commit('SET_TAG_LIST', []);
commit('DEL_ALL_TAG'); commit('DEL_ALL_TAG');
commit('CLEAR_LOCK'); commit('CLEAR_LOCK');
removeToken(); removeToken();
@ -155,6 +156,7 @@ const user = {
commit('SET_MENU_ALL', []); commit('SET_MENU_ALL', []);
commit('SET_MENU', []); commit('SET_MENU', []);
commit('SET_ROLES', []); commit('SET_ROLES', []);
commit('SET_TAG_LIST', []);
commit('DEL_ALL_TAG'); commit('DEL_ALL_TAG');
commit('CLEAR_LOCK'); commit('CLEAR_LOCK');
removeToken(); removeToken();
@ -180,6 +182,7 @@ const user = {
menu.forEach(ele => { menu.forEach(ele => {
addPath(ele, true); addPath(ele, true);
}); });
commit('SET_MENU_ALL', menu)
commit('SET_MENU', menu) commit('SET_MENU', menu)
dispatch('GetButtons'); dispatch('GetButtons');
resolve(menu) resolve(menu)
@ -201,35 +204,19 @@ 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})
}, },
SET_MENU_ID(state, menuId) { SET_MENU_ID(state, menuId) {
state.menuId = menuId; state.menuId = menuId;
setStore({name: 'menuId', content: state.menuId, type: 'session'}) setStore({name: 'menuId', content: state.menuId})
}, },
SET_MENU_ALL: (state, menuAll) => { SET_MENU_ALL: (state, menuAll) => {
state.menuAll = menuAll state.menuAll = menuAll
setStore({name: 'menuAll', content: state.menuAll, type: 'session'}) setStore({name: 'menuAll', content: state.menuAll})
},
SET_REFRESH_TOKEN: (state, refreshToken) => {
setRefreshToken(refreshToken)
state.refreshToken = refreshToken;
setStore({name: 'refreshToken', content: state.refreshToken, type: 'session'})
},
SET_TENANT_ID: (state, tenantId) => {
state.tenantId = tenantId;
setStore({name: 'tenantId', content: state.tenantId, type: 'session'})
},
SET_USER_INFO: (state, userInfo) => {
if (validatenull(userInfo.avatar)) {
userInfo.avatar = "/img/bg/img-logo.png";
}
state.userInfo = 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})
if (validatenull(menu)) return; if (validatenull(menu)) return;
//合并动态路由去重 //合并动态路由去重
let menuAll = state.menuAll; let menuAll = state.menuAll;
@ -238,14 +225,32 @@ const user = {
for (let item1 of menuAll) { for (let item1 of menuAll) {
let flag = true; let flag = true;
for (let item2 of newMenu) { for (let item2 of newMenu) {
if (item1.label === item2.label || item1.path === item2.path) { if (item1.name === item2.name || item1.path === item2.path) {
flag = false; flag = false;
} }
} }
if (flag) newMenu.push(item1); if (flag) {
newMenu.push(item1);
}
} }
state.menuAll = newMenu; state.menuAll = newMenu;
setStore({name: 'menuAll', content: state.menuAll, type: 'session'}) setStore({name: 'menuAll', content: state.menuAll})
},
SET_REFRESH_TOKEN: (state, refreshToken) => {
setRefreshToken(refreshToken)
state.refreshToken = refreshToken;
setStore({name: 'refreshToken', content: state.refreshToken})
},
SET_TENANT_ID: (state, tenantId) => {
state.tenantId = tenantId;
setStore({name: 'tenantId', content: state.tenantId})
},
SET_USER_INFO: (state, userInfo) => {
if (validatenull(userInfo.avatar)) {
userInfo.avatar = "/img/bg/img-logo.png";
}
state.userInfo = userInfo;
setStore({name: 'userInfo', content: state.userInfo})
}, },
SET_ROLES: (state, roles) => { SET_ROLES: (state, roles) => {
state.roles = roles; state.roles = roles;
@ -272,7 +277,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})
} }
} }

Loading…
Cancel
Save