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