Files
orange-admin/orange-demo-uaa/orange-demo-multi-service-uaa-admin-web/src/store/mutations.js
2021-12-21 10:56:30 +08:00

140 lines
5.1 KiB
JavaScript

import { initUserInfo, findMenuItem } from './utils';
import { setObjectToSessionStorage, findItemFromList, treeDataTranslate } from '@/utils';
export default {
setCollapse: (state, isCollapse) => {
state.isCollapse = isCollapse;
},
setClientHeight: (state, height) => {
state.documentClientHeight = height;
},
setUserInfo: (state, info) => {
setObjectToSessionStorage('userInfo', info);
state.userInfo = initUserInfo(info);
},
addCachePage (state, name) {
if (state.cachePages.indexOf(name) === -1) {
let temp = [...state.cachePages];
temp.push(name);
setObjectToSessionStorage('cachePages', temp);
state.cachePages = temp;
}
},
removeCachePage (state, name) {
let pos = state.cachePages.indexOf(name);
if (pos !== -1) {
let temp = [...state.cachePages];
temp.splice(pos, 1);
setObjectToSessionStorage('cachePages', temp);
state.cachePages = temp;
}
},
clearCachePage (state) {
setObjectToSessionStorage('cachePages', []);
state.cachePages = [];
},
addTag (state, id) {
if (id == null || id === '') return;
// 新增的标签是否存在
let tagList = state.tagList;
let tagItem = null;
if (Array.isArray(tagList)) {
tagItem = findItemFromList(tagList, id, 'menuId');
}
if (tagItem != null) return;
// 添加新增标签以及更新页面缓存
let menuList = state.menuList;
let menuObject = null;
if (Array.isArray(menuList)) {
for (let i = 0; i < menuList.length; i++) {
menuObject = findMenuItem(menuList[i], id);
if (menuObject != null) break;
}
}
if (menuObject != null) {
state.tagList = [...state.tagList, menuObject];
if (Array.isArray(state.cachePages) && state.cachePages.indexOf(menuObject.formRouterName) === -1) {
state.cachePages = [...state.cachePages, menuObject.formRouterName];
}
}
setObjectToSessionStorage('cachePages', state.cachePages);
setObjectToSessionStorage('tagList', state.tagList);
},
removeTag (state, id) {
if (id == null || id === '') return;
// 移除标签
let nextPos = -1;
let tagItem = null;
for (let i = 0; i < state.tagList.length; i++) {
if (state.tagList[i].menuId === id) {
tagItem = state.tagList[i];
state.tagList.splice(i, 1);
nextPos = Math.min(i, state.tagList.length - 1);
}
}
// let tagItem = findItemFromList(state.tagList, id, 'menuId', true);
if (tagItem == null) return;
// 移除页面缓存
findItemFromList(state.cachePages, tagItem.formRouterName, undefined, true);
setObjectToSessionStorage('cachePages', state.cachePages);
setObjectToSessionStorage('tagList', state.tagList);
// 如果移除的是当前显示页面,重新选择显示页面
let showTag = null;
if (state.currentMenuId === id) {
showTag = state.tagList[nextPos];
let tempId = (showTag || {}).menuId;
if (setObjectToSessionStorage('currentMenuId', tempId)) state.currentMenuId = tempId;
}
},
closeOtherTags (state, id) {
if (id == null || id === '') return;
// 移除其他所有标签
if (Array.isArray(state.tagList)) {
state.tagList = state.tagList.filter((item) => {
return item.menuId === id;
});
}
let menuObject = state.tagList[0];
if (menuObject && menuObject.formRouterName && menuObject.formRouterName !== '') {
state.cachePages = [menuObject.formRouterName];
if (setObjectToSessionStorage('currentMenuId', menuObject.menuId)) state.currentMenuId = menuObject.menuId;
}
setObjectToSessionStorage('cachePages', state.cachePages);
setObjectToSessionStorage('tagList', state.tagList);
},
clearAllTags (state) {
if (setObjectToSessionStorage('currentMenuId', undefined)) state.currentMenuId = undefined;
if (setObjectToSessionStorage('cachePages', [])) state.cachePages = [];
if (setObjectToSessionStorage('tagList', [])) state.tagList = [];
},
setMenuList: (state, list) => {
if (Array.isArray(list)) {
if (setObjectToSessionStorage('menuList', list)) state.menuList = treeDataTranslate(list, 'menuId', 'parentId');
}
},
setCurrentMenuId: (state, menuId) => {
let menuItem = null;
if (setObjectToSessionStorage('currentMenuId', menuId)) state.currentMenuId = menuId;
if (Array.isArray(state.tagList) && Array.isArray(state.menuList)) {
for (let i = 0; i < state.menuList.length; i++) {
menuItem = findMenuItem(state.menuList[i], menuId, 'menuId');
if (menuItem != null) {
// 添加新的tag
let tagItem = findItemFromList(state.tagList, menuId, 'menuId');
if (tagItem == null) {
state.tagList = [...state.tagList, menuItem];
setObjectToSessionStorage('tagList', state.tagList);
}
// 添加新缓存
if (Array.isArray(state.cachePages) && state.cachePages.indexOf(menuItem.formRouterName) === -1) {
state.cachePages = [...state.cachePages, menuItem.formRouterName];
setObjectToSessionStorage('cachePages', state.cachePages);
}
break;
}
}
}
}
}