import uc from '@/api/uc.js' import portal from '@/api/portal.js' import { getUserInfoState } from '@/api/systemInterface.js' const state = { currentUser: null, loginAccount: null, isRefreshToken: false, isJump: false, isFinishedUserInfo: true } const getters = {} const actions = { checkUserInfoState({ commit, state }) { return new Promise((resolve, reject) => { getUserInfoState().then(res => { sessionStorage.setItem('UserInfoState', res) commit('setUserInfoState', res) resolve(res) }).catch(err => { commit('setUserInfoState', false) reject(err) }) }) }, actionLoginAccount({ commit, state }, loginAccount) { commit('mutationLoginAccount', loginAccount) }, // 登录获取字典 getAllDict({ commit, state }) { portal.getSysDict().then(res => { if (res) { sessionStorage.setItem('dict_data', JSON.stringify(res)) } }) }, // 愉快政code登录 loginByReports({ commit, state }, code) { return new Promise((resolve, reject) => { // 设置跳转类型,在返回401无权限时不跳转到登录页 uc.authEmployeeCodeLogin(code).then(user => { if (user.state === undefined && user.loginStatus) { sessionStorage.setItem('currentUser', JSON.stringify(user)) commit('setCurrentUser', user) resolve(user) } else { reject(user) } }).catch(err => { console.log(err, 'err') commit('clearCurrentUser') reject(err) }) }) }, // 愉快政绑定 bindingYKZ({ commit, state }, data) { return new Promise((resolve, reject) => { // 设置跳转类型,在返回401无权限时不跳转到登录页 commit('setJumpType', true) sessionStorage.setItem('isJUmp', JSON.stringify(true)) uc.bindingYKZLogin(data).then(user => { if (user.loginStatus && user.loginStatus) { sessionStorage.setItem('currentUser', JSON.stringify(user)) commit('setCurrentUser', user) resolve(user) } }).catch(err => { commit('clearCurrentUser') reject(err) }) }) }, loginByPrincipal({ commit, state }, principal) { return new Promise((resolve, reject) => { uc.authentication(principal, user => { if (user) { sessionStorage.setItem('currentUser', JSON.stringify(user)) commit('setCurrentUser', user) resolve(user.loginStatus) } }, (msg) => { commit('clearCurrentUser') reject(msg) }) }) }, validAndCompletedCurrent({ commit, state }, token) { return new Promise((resolve, reject) => { if (state.currentUser && !token) { resolve() } else { const user = sessionStorage.getItem('currentUser') if (user !== 'null' && user !== undefined && user !== '' && !token) { commit('setCurrentUser', JSON.parse(user)) resolve() } else if (token) { uc.basicSso(token, user => { sessionStorage.setItem('currentUser', JSON.stringify(user)) commit('setCurrentUser', user) resolve() }, () => { reject() }) } else { reject() } } }) }, refreshAndGetAuthenticationToken({ commit, state }) { if (state.isRefreshToken) { return } commit('isRefreshToken', true) return new Promise((resolve, reject) => { uc.refreshAndGetAuthenticationToken().then(user => { if (user) { sessionStorage.setItem('currentUser', JSON.stringify(state.currentUser)) commit('refreshToken', user.token) setTimeout(() => { commit('isRefreshToken', false) }, 3000) resolve() } }, (msg) => { reject(msg) }) }) }, logoutAndCleanUp({ commit, state }) { return new Promise((resolve, reject) => { uc.logout().finally(() => { sessionStorage.removeItem('currentRoleMenus') sessionStorage.removeItem('currentRoleCode') sessionStorage.removeItem('currentUserDetail') sessionStorage.removeItem('currentUser') sessionStorage.removeItem('searchDate') commit('clearCurrentUser') commit('user/setCurrentUserDetail', null, { root: true }) commit('user/setCurrentUserOrg', null, { root: true }) resolve() }) }) } } const mutations = { setUserInfoState(state, status) { state.isFinishedUserInfo = status }, isRefreshToken(state, status) { state.isRefreshToken = status }, refreshToken(state, token) { state.currentUser.token = token state.currentUser.loginTime = new Date().getTime() }, setCurrentUser(state, current) { state.currentUser = current }, clearCurrentUser(state) { state.currentUser = null }, mutationLoginAccount(state, loginAccount) { state.loginAccount = loginAccount }, setJumpType(state, type) { state.isJump = type } } export default { namespaced: true, state, getters, actions, mutations }