import Vue from 'vue' import Vuex from 'vuex' import { normalCallPost } from './assets/utils'; Vue.use(Vuex) let userData = {}; let currentParentName = '' let headBar = [] let CurrentThirdArr = [] let ThirdPath = '' let CurrentSecondPath = '' try { userData = JSON.parse(window.sessionStorage.userData || '{}'); currentParentName = window.sessionStorage.currentParentName || '' headBar = JSON.parse(window.sessionStorage.headBar || '{}') CurrentThirdArr = JSON.parse(window.sessionStorage.CurrentThirdArr || '{}') ThirdPath = window.sessionStorage.ThirdPath || '' CurrentSecondPath = window.sessionStorage.CurrentSecondPath || '' } catch (error) { console.log('未从session中获取到userData') console.log('未从session中获取到currentParentName') console.log('未从session中获取到headBar') console.log('未从session中获取到CurrentThirdArr') console.log('未从session中获取到ThirdPath') console.log('未从session中获取到CurrentSecondPath') } function convertTreeToList(root, array) { if(!root || !root.length) return array; root.forEach(item=>{ let data = JSON.parse(JSON.stringify(item)); const url = data.url ? data.url : (item.childList[0] ? (item.childList[0].url || '') : ''); delete data.childList; array.push({ name: data.name, path: data.url, id: data.id, parentId: data.parentId, icon: data.imgPath, }); if(item.childList){ convertTreeToList(item.childList, array); } }) return array; } function isPc() { var userAgentInfo = navigator.userAgent; var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"); var flag = true; for (var v = 0; v < Agents.length; v++) { if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break; } } return flag; } export default new Vuex.Store({ state: { isLogin: false, isMobile: !isPc(), userData,//用户数据 group: '', headBar, currentParentName,//当前选择一级菜单 CurrentSecondPath,//当前二级菜单路径 CurrentThirdArr, ThirdPath }, // 同步存储数据 mutations: { setUserData(state, data) { data.flat = convertTreeToList(data.barList, []); state.userData = Object.assign({}, state.userData, data); state.isLogin = true; window.sessionStorage.userData = JSON.stringify(data); window.sessionStorage.token = data.token; }, // 头部导航栏数据 setHeadBar(state,data){ state.headBar = data window.sessionStorage.headBar = JSON.stringify(data) }, logout(state) { state.userData = {}; state.isLogin = false; // window.sessionStorage.userData = ''; // window.sessionStorage.token = ''; // window.sessionStorage.headBar = '' // window.sessionStorage.currentParentName = '' // window.sessionStorage.CurrentSecondPath = '' // window.sessionStorage.CurrentThirdArr = '' window.sessionStorage.clear() }, setGroup(state, data) { state.group = data; }, // 当前以及导航名 setCurrentParentName(state,data){ state.currentParentName = data window.sessionStorage.currentParentName = data }, setCurrentSecondPath(state,data){ state.CurrentSecondPath = data window.sessionStorage.CurrentSecondPath = data }, // 当前三级导航栏 setCurrentThirdArr(state,data){ state.CurrentThirdArr = data window.sessionStorage.CurrentThirdArr = JSON.stringify(data) }, // 当前三级导航栏路径 setThirdPath(state,data){ state.ThirdPath = data window.sessionStorage.ThirdPath = data }, }, // 异步任务 actions: { login({commit}) { normalCallPost('/login/index').then(({data})=>{ commit('setUserData', data) }).catch(error=>{ }) }, logout({commit}) { normalCallPost('/login/logout').then(data=>{}).catch(error=>{}).then(()=>{ commit('logout') }) } } })