// 水印 import { setToken, removeToken, setUserInfo, cookieSet, getToken, removeVisitedViews } from '@/utils/auth' import Watermark from '@/utils/watermark' // api import { login, getInfo, logout, autoLogin, getValueByKey, getAiPermission } from '@/api/login'; import { getBaseUserLoginSso, checkPwdLogin } from '@/api/app'; import { unreadMessageTotal } from '@/api/letters' // axios import axios from 'axios' declare const window: any const actions = { // 登录 Login({ commit }, userInfo) { const account = userInfo.account.trim() const password = userInfo.password.trim() return new Promise((resolve, reject) => { login(account, password) .then((response) => { const data = response const userData = response.data const token = response.data['authorization'] || response.token setToken(token, data.data['refresh-authorization']) commit('SET_TOKEN', token) commit('SET_ISSUPERADMIN', userData.isSuperAdmin) commit('SET_SUPERVISOR', userData.isAdmin) commit('SET_USERID', userData.userId) commit('SET_TENANTID', userData.tenantId) commit('SET_USER_FULL_NAME', userData.userFullName) resolve(data) }) .catch((error) => { console.warn(error) reject(error) }) }) }, // 根据token和systemCode自动获取用户信息和菜单 AutoLogin({ commit }, systemInfo) { return new Promise((resolve, reject) => { let { token, systemCode, ps } = systemInfo autoLogin(systemCode) .then((response) => { const data = response const userData = data.data || {} token = data.data['authorization'] || token setToken(token, data.data['refresh-authorization']) commit('SET_TOKEN', token) commit('SET_ISSUPERADMIN', userData.isSuperAdmin) commit('SET_SUPERVISOR', userData.isAdmin) commit('SET_USERID', userData.userId) commit('SET_TENANTID', userData.tenantId) commit('SET_USER_FULL_NAME', userData.userFullName) userData.ps = ps resolve() }) .catch((error) => { console.warn(error) reject(error) }) }) }, // 获取用户信息 GetInfo({ commit, state }) { return new Promise((resolve, reject) => { getInfo(state.token) .then(response => { const data = response.data if (typeof data.authority != 'undefined' && data.authority != null && data.authority !== '') commit('SET_AUTHORITY', data.authority) else reject('getInfo: authority must be a non-null string!') if (!data.avatar) data.avatar = 'http://bpic.588ku.com/element_origin_min_pic/01/30/26/24573b0a9382ae2.jpg' commit('SET_ID', data.id) commit('SET_FIRSTNAME', data.firstName) commit('SET_LASTNAME', data.lastName) commit('SET_PHONE', data.phone) commit('SET_EMAIL', data.email) commit('SET_AVATAR', data.avatar) commit('SET_AUTHORITY', data.authority) commit('SET_CUSTOMERID', data.customerId) commit('SET_TENANTID', data.tenantId) commit('SET_ADDITIONALINFO', data.additionalInfo) resolve(response) }) .catch(error => { reject(error) }) }) }, // 前端 登出 FedLogOut({ commit }) { return new Promise(resolve => { commit('SET_TOKEN', '') removeToken() resolve() }) }, // 登出 LogOut() { return new Promise((resolve, reject) => { logout() .then(() => { Watermark.out() localStorage.removeItem('watermarkBean') localStorage.removeItem('userInfo') removeToken() removeVisitedViews() resolve() }) .catch(error => { reject(error) }) }) }, // 获取用户信息 GetUserInfo({ commit }) { return new Promise((resolve, reject) => { getBaseUserLoginSso() .then(response => { const { data } = response; // 设置localStorage 中的用户信息; setUserInfo(data); // 在stroe中设置用户信息 commit('SET_USER_INFO', data) resolve(data) }) .catch(error => { reject(error) }) }) }, // 获取租户密码策略提示信息 GetPwdInfo({ commit }) { return new Promise((resolve, reject) => { checkPwdLogin() .then((res) => { commit('SET_PWD_INFO', res.data) resolve(res.data) }) .catch(error => { reject(error) }) }) }, // 获取灰度发布信息 GetGreyInfo({ commit }) { return new Promise((resolve) => { // 请求不走公共拦截 axios .get('/api/grayscale/rule/myid', { headers: { 'Access-Control-Allow-Origin': '*', Authorization: getToken() }, baseURL: window.VUE_APP_SERVERAPI }) .then(res => { const data = res.data || {} if (data.code === 800) { // 获取的数据存入cookie const grayData = data.data grayData.headers.forEach(element => { cookieSet(element.header, element.value, null) }); commit('SET_GREY_INFO', grayData.headers) } resolve(data) }).catch(error => { resolve(error) }) }) }, //门户首页流程相关面板,帮助中心图标按钮,谷神系统大屏,可以根据配置加载是否显示 GetBPMInfo({ commit }) { return new Promise((resolve, reject) => { let requestList = [getValueByKey({ configKey: 'SHOW_BPM' }), getValueByKey({ configKey: 'SHOW_HELPCENTER' })] Promise.all(requestList).then(res => { let BPMInfo = res[0] let helpInfo = res[1] commit('SET_HELP_AND_BPM_INFO', { showBPM: BPMInfo.data !== 'false', showHelp: helpInfo.data !== 'false' }) resolve(res) }).catch(err => { commit('SET_HELP_AND_BPM_INFO', { showBPM: true, showHelp: true }) reject(err) }) }) }, // 获取AI权限全局配置 getAiPermission() { //eslint-disable-next-line no-async-promise-executor return new Promise(async (resolve) => { let res = await getAiPermission() if (res.code === 800) { // 兼容旧版本的AI显示 let bool = String(res.data) === 'true' window.VUE_GS_CHATGPT = bool cookieSet("VUE_GS_CHATGPT", bool, null) } resolve() }) }, // 获取站内消息数量 GetUnreadTotal({ commit }) { const params = { readStatus: 0, systemCodes: [window._config.systemCode] } return new Promise((resolve, reject) => { unreadMessageTotal({ params }) .then((res) => { if (res.code === 800) { commit('SET_UNREAD_TOTAL', res.data) resolve(res.data) } reject(res.data) }) .catch(error => { reject(error) }) }) }, } export default actions