82 lines
2.6 KiB
JavaScript
82 lines
2.6 KiB
JavaScript
import Vue from 'vue';
|
|
import Vuex from 'vuex';
|
|
import { Session } from '@/utils/storage';
|
|
import { login } from '../views/login/api.js'
|
|
// import { login } from '@/login/api.js'
|
|
import jsonwebtoken from 'jsonwebtoken'
|
|
|
|
|
|
Vue.use(Vuex);
|
|
|
|
let moduleFn = require.context('./modules', false, /\.js$/);
|
|
let modules = moduleFn.keys().reduce((p, c) => {
|
|
let mod = moduleFn(c).default;
|
|
mod = { ...mod, namespaced: true };
|
|
let modName = c.match(/\.\/(\w+)\.js$/)[1];
|
|
p[modName] = mod;
|
|
return p;
|
|
}, {});
|
|
|
|
const state = {
|
|
imgUrl: 'https://hxhl.lzyyj.com/prod-api/file/upload/face',
|
|
uploadHeader: {
|
|
Authorization: `${Session.get('token')}`
|
|
},
|
|
campusCalendarTempentUrl: process.env.VUE_APP_BASE_API, //
|
|
token: localStorage.getItem('token') || '',
|
|
refreshToken: localStorage.getItem('refreshToken') || '', // 刷新token
|
|
user: localStorage.getItem('user') ? JSON.parse(localStorage.getItem('user')) : {}, // 用户信息
|
|
school: localStorage.getItem('school') ? JSON.parse(localStorage.getItem('school')) : {}, // 学校 默认获取的第一个
|
|
roles: localStorage.getItem('roles') ? JSON.parse(localStorage.getItem('roles')) : [], // 权限 是家长或教师
|
|
classify: localStorage.getItem('classify') ? JSON.parse(localStorage.getItem('classify')) : {} // 用户为班主任的班级 默认查找的第一个
|
|
|
|
}
|
|
|
|
const mutations = {
|
|
changeToken( state, newToken ) {
|
|
state.token = newToken
|
|
localStorage.setItem('token', newToken)
|
|
},
|
|
changeRefreshToken( state, newRefreshToken ) {
|
|
state.refreshToken = newRefreshToken
|
|
localStorage.setItem('refreshToken', newRefreshToken)
|
|
},
|
|
changeUser( state, newUser ) {
|
|
state.user = newUser
|
|
localStorage.setItem('user', JSON.stringify(newUser) )
|
|
},
|
|
setSchool( state, newSchool){
|
|
localStorage.setItem('school', JSON.stringify(newSchool) )
|
|
state.school = newSchool
|
|
},
|
|
setRoles( state, newRoles){
|
|
localStorage.setItem('roles', JSON.stringify(newRoles) )
|
|
state.roles = newRoles
|
|
},
|
|
setClassify( state, newClassify){
|
|
localStorage.setItem('classify', JSON.stringify(newClassify) )
|
|
state.classify = newClassify
|
|
},
|
|
|
|
}
|
|
const actions = {
|
|
loginIn(store, obj) {
|
|
return new Promise((resolve, reject) =>{
|
|
login(obj).then(res =>{
|
|
console.log('=========================')
|
|
console.log(res)
|
|
store.commit('changeToken',res.token_type + ' ' + res.access_token )
|
|
store.commit('changeRefreshToken', res.refresh_token )
|
|
console.log(jsonwebtoken.decode(res.access_token))
|
|
store.commit('changeUser', jsonwebtoken.decode(res.access_token) )
|
|
resolve(res)
|
|
}).catch(err =>{
|
|
reject(err)
|
|
})
|
|
})
|
|
|
|
}
|
|
}
|
|
|
|
export default new Vuex.Store({ state, modules, mutations, actions });
|