105 lines
2.4 KiB
JavaScript
105 lines
2.4 KiB
JavaScript
import Vue from 'vue'
|
|
import Vuex from 'vuex'
|
|
|
|
Vue.use(Vuex)
|
|
|
|
const storeToSession = store => {
|
|
// 当 store 初始化后调用
|
|
store.subscribe((mutation, state) => {
|
|
if (sessionStorage.getItem('store')){
|
|
sessionStorage.removeItem('store')
|
|
}
|
|
console.log(store)
|
|
sessionStorage.setItem('store', JSON.stringify(state))
|
|
})
|
|
}
|
|
|
|
const store = new Vuex.Store({
|
|
state: {
|
|
userInfo:null,
|
|
phone: document.body.clientWidth < 800,
|
|
login:false,
|
|
loginTime:0,
|
|
second: 60 * 60 * 2,
|
|
logs:'',
|
|
data:{},
|
|
currentComp: 'map',
|
|
cacheData:{}
|
|
},
|
|
mutations: {
|
|
phone(state, o) {
|
|
state.phone = o;
|
|
},
|
|
login(state, o) {
|
|
state.userInfo = o
|
|
state.login = true
|
|
state.loginTime = new Date().getTime()
|
|
},
|
|
logout(state)
|
|
{
|
|
state.userInfo=null
|
|
state.login = false
|
|
},
|
|
},
|
|
getters: {
|
|
phone(state) {
|
|
return state.phone;
|
|
},
|
|
isLogin(state) {
|
|
if (state.login && state.userInfo !== null )
|
|
{
|
|
if ((new Date().getTime() - state.loginTime) < state.second * 1000 )
|
|
{
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
},
|
|
isSuper(state, getters) {
|
|
if(getters.isLogin)
|
|
{
|
|
if(state.userInfo.permission == 0xfff)
|
|
{
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
},
|
|
isProject(state, getters)
|
|
{
|
|
if(getters.isLogin)
|
|
{
|
|
if(state.userInfo.permission == 0x0ff)
|
|
{
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
},
|
|
isAnayone(state, getters)
|
|
{
|
|
if(getters.isLogin)
|
|
{
|
|
if(state.userInfo.permission == 0x000)
|
|
{
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
},
|
|
isNormal(state, getters)
|
|
{
|
|
if(getters.isLogin)
|
|
{
|
|
if(state.userInfo.permission == 0x00f)
|
|
{
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
},
|
|
plugins: [storeToSession]
|
|
})
|
|
|
|
export default store |