import uc from "@/api/uc.js"; import portal from "@/api/portal.js"; import store from '@/store/login'; const state = { currentUser: null, loginAccount: null, isRefreshToken: false, isJump: false, } const getters = {} const actions = { actionLoginAccount({ commit, state }, loginAccount) { commit("mutationLoginAccount", loginAccount) }, // 登录获取字典 getAllDict({ commit, state }) { portal.getSysDict().then(res => { if (res) { sessionStorage.setItem('dict_data', JSON.stringify(res)) } }) }, //企业微信登录 loginByQYWX({ commit, state }, code) { return new Promise((resolve, reject) => { uc.authQYWX(code).then(user => { if (user) { sessionStorage.setItem("currentUser", JSON.stringify(user)) commit("setCurrentUser", user) resolve(user.loginStatus) } else { reject() } }).catch(err => { console.log(err, "err") commit("clearCurrentUser") reject(err) }) }) }, // 愉快政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) }) }) }, loginAuthNoPassword({ commit, state }, principal) { return new Promise((resolve, reject) => { uc.authNoPassword(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 = { 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 }