import { login } from '@/api/user' import router, { resetRouter } from '@/router' import { setToken, deleteToken } from '@/utils/auth' import Base from '@/utils/base64ToPassword' // import Vue from 'vue' // import { checkToken } from '@/api/system' const SET_SINGLE_SIGN_ON = localStorage.getItem('SET_SINGLE_SIGN_ON') const USERINFO = localStorage.getItem('userInfo') const state = { singleSignOn: SET_SINGLE_SIGN_ON !== '0', // 单点登录 userInfo: !USERINFO ? {} : JSON.parse(USERINFO) } const mutations = { SET_SINGLE_SIGN_ON (state, loginType) { state.singleSignOn = loginType === 1 localStorage.setItem('SET_SINGLE_SIGN_ON', loginType) }, SET_USERINFO: (state, userInfo) => { state.userInfo = userInfo localStorage.setItem('userInfo', JSON.stringify(userInfo)) } } const actions = { login ({ commit, dispatch }, params) { const { username, password, ...query } = params const newBase = new Base() const newParams = { username: username.trim(), password: newBase.encode(password.trim() + (Math.random()).toString().slice(2, 8)), ...query } // 账号密码处理 return new Promise((resolve, reject) => { login(newParams).then(res => { // 登录成功返回对应的信息 包括token 用户信息 权限等等 const { data } = res commit('SET_SINGLE_SIGN_ON', 0) commit('menu/SET_REFRESH', true, { root: true }) setToken(data.token) // const { username, name, id, employeeCode } = data.user commit('SET_USERINFO', data.user) resolve() }).catch(reject) }) }, // 退出登录 /** * * @param {*} param * @param { Boolean } isLogin 是否调用回到登录页方法 */ userLogout ({ commit }) { // 清空token deleteToken() // 清除路由 resetRouter() if (!state.singleSignOn) { // 普通退出 router.push({ path: '/login-local' }) commit('SET_SINGLE_SIGN_ON', 1) // 重置为单点登录 return } router.push({ path: '/reminder' }) } } export default { namespaced: true, state, mutations, actions }