Files
h5/src/store/index.js
T
2024-04-03 09:55:45 +08:00

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 });