| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- import Vue from 'vue'
- import {
- getUserInfo,
- login,
- ssoLogin,
- logout,
- getDetailByAccountOrId,
- } from '@/api/user'
- import {
- getAccessToken,
- removeAccessToken,
- setAccessToken,
- } from '@/utils/accessToken'
- import { getUsername, removeUsername, setUsername } from '@/utils/username'
- import { resetRouter } from '@/router'
- import { title, tokenName } from '@/config'
- const state = () => ({
- accessToken: getAccessToken(),
- username: getUsername(),
- avatar: '',
- userId: '',
- account: '',
- userInfo: {},
- loginStatus: true,
- tenantId: '',
- tenantCode: '',
- nowTemplate: '',
- showCustomPage: false,
- templateLoading: false,
- calcRatio: undefined
- })
- const getters = {
- userId: (state) => state.userId,
- accessToken: (state) => state.accessToken,
- username: (state) => state.username,
- account: (state) => state.account,
- avatar: (state) => state.avatar,
- tenantId: (state) => state.tenantId,
- tenantCode: (state) => state.tenantCode,
- }
- const mutations = {
- setAccessToken(state, accessToken) {
- state.accessToken = accessToken
- setAccessToken(accessToken)
- },
- setUsername(state, username) {
- state.username = username
- setUsername(username)
- },
- setAvatar(state, avatar) {
- state.avatar = avatar
- },
- setUserId(state, data) {
- state.userId = data
- },
- setAccount(state, account) {
- state.account = account
- },
- setUserInfo(state, userInfo) {
- state.userInfo = userInfo
- },
- setLoginStatus(state, loginStatus) {
- state.loginStatus = loginStatus
- },
- setTenantId(state, tenantId) {
- state.tenantId = tenantId
- },
- setTenantCode(state, tenantCode) {
- state.tenantCode = tenantCode
- },
- }
- const actions = {
- // 账号密码登录
- async login({ commit, dispatch }, loginInfo) {
- const userInfo = await login(loginInfo)
- commit('setLoginStatus', userInfo.loginStatus)
- dispatch('authentication', userInfo)
- const hour = new Date().getHours()
- const thisTime =
- hour < 8
- ? '早上好'
- : hour <= 11
- ? '上午好'
- : hour <= 13
- ? '中午好'
- : hour < 18
- ? '下午好'
- : '晚上好'
- if (userInfo.loginStatus) {
- Vue.prototype.$baseNotify(`欢迎登录${title}`, `${thisTime}!`)
- }
- },
- //钉钉免登进入传参
- async getDingUserByCodeFun({ commit, dispatch }, user) {
- commit('setLoginStatus', user.loginStatus)
- dispatch('authentication', user)
- const hour = new Date().getHours()
- const thisTime =
- hour < 8
- ? '早上好'
- : hour <= 11
- ? '上午好'
- : hour <= 13
- ? '中午好'
- : hour < 18
- ? '下午好'
- : '晚上好'
- if (user.loginStatus) {
- Vue.prototype.$baseNotify(`欢迎登录${title}`, `${thisTime}!`)
- }
- },
- // 单点登录
- async ssoLogin({ dispatch }, loginInfo) {
- const userInfo = await ssoLogin(loginInfo)
- dispatch('authentication', userInfo)
- },
- // 鉴权
- async authentication({ commit }, userInfo) {
- const { username, userId } = userInfo
- if (username) {
- commit('setUsername', username)
- commit('setAccount', username)
- }
- if (userId) {
- commit('setUserId', userId)
- }
- const accessToken = userInfo[tokenName]
- if (accessToken) {
- commit('setAccessToken', accessToken)
- } else {
- Vue.prototype.$baseMessage(
- `登录接口异常,未正确返回${tokenName}...`,
- 'error'
- )
- }
- },
- async getUserInfo({ commit, dispatch }) {
- const info = await getUserInfo()
- if (!info) {
- Vue.prototype.$baseMessage('验证失败,请重新登录...', 'error')
- return false
- }
- let { id, fullname, username, photo, account, tenantId, tenantCode } = info
- dispatch('getUserDetail', account)
- if (fullname) {
- commit('setUserId', id)
- commit('setUsername', fullname)
- commit('setAvatar', photo)
- commit('setAccount', username)
- commit('setTenantId', tenantId)
- commit('setTenantCode', tenantCode)
- Vue.prototype.$baseUserAccount = username
- } else {
- Vue.prototype.$baseMessage('用户信息接口异常', 'error')
- return false
- }
- },
- getUserDetail({ commit }, account) {
- getDetailByAccountOrId(account).then((res) => {
- commit('setUserInfo', res)
- })
- },
- async logout({ dispatch }) {
- sessionStorage.removeItem('currentPostId')
- sessionStorage.removeItem('currentOrgId')
- await logout(state.accessToken)
- await dispatch('resetAccessToken')
- await resetRouter()
- },
- resetAccessToken({ commit }) {
- commit('setAccessToken', '')
- removeAccessToken()
- removeUsername()
- },
- saveTenatId({ commit }, tenantId) {
- commit('setTenantId', tenantId)
- },
- saveTenantCode({ commit }, tenantCode) {
- commit('setTenantCode', tenantCode)
- },
- }
- export default { state, getters, mutations, actions }
|