添加poolName

master
夜笙歌 2 years ago
parent d251987757
commit 87dab58d2f

@ -1,115 +1,116 @@
import { login, logout, getInfo, refreshToken } from '@/api/login' import { login, logout, getInfo, refreshToken } from '@/api/login'
import { getToken, setToken, setExpiresIn, removeToken } from '@/utils/auth' import { getToken, setToken, setExpiresIn, removeToken } from '@/utils/auth'
const user = { const user = {
state: { state: {
token: getToken(), token: getToken(),
name: '', name: '',
avatar: '', avatar: '',
roles: [], roles: [],
permissions: [] permissions: []
}, },
mutations: { mutations: {
SET_TOKEN: (state, token) => { SET_TOKEN: (state, token) => {
state.token = token state.token = token
}, },
SET_EXPIRES_IN: (state, time) => { SET_EXPIRES_IN: (state, time) => {
state.expires_in = time state.expires_in = time
}, },
SET_NAME: (state, name) => { SET_NAME: (state, name) => {
state.name = name state.name = name
}, },
SET_AVATAR: (state, avatar) => { SET_AVATAR: (state, avatar) => {
state.avatar = avatar state.avatar = avatar
}, },
SET_ROLES: (state, roles) => { SET_ROLES: (state, roles) => {
state.roles = roles state.roles = roles
}, },
SET_PERMISSIONS: (state, permissions) => { SET_PERMISSIONS: (state, permissions) => {
state.permissions = permissions state.permissions = permissions
} }
}, },
actions: { actions: {
// 登录 // 登录
Login({ commit }, userInfo) { Login({ commit }, userInfo) {
const username = userInfo.username.trim() const username = userInfo.username.trim()
const password = userInfo.password const password = userInfo.password
const code = userInfo.code const code = userInfo.code
const uuid = userInfo.uuid const uuid = userInfo.uuid
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
login(username, password, code, uuid).then(res => { login(username, password, code, uuid).then(res => {
let data = res.data let data = res.data
setToken(data.access_token) setToken(data.access_token)
commit('SET_TOKEN', data.access_token) commit('SET_TOKEN', data.access_token)
setExpiresIn(data.expires_in) setExpiresIn(data.expires_in)
commit('SET_EXPIRES_IN', data.expires_in) commit('SET_EXPIRES_IN', data.expires_in)
resolve() resolve()
}).catch(error => { }).catch(error => {
reject(error) reject(error)
}) })
}) })
}, },
// 获取用户信息 // 获取用户信息
GetInfo({ commit, state }) { GetInfo({ commit, state }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
getInfo().then(res => { getInfo().then(res => {
const user = res.user const user = res.user
const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : user.avatar; const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : user.avatar;
if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组 if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
commit('SET_ROLES', res.roles) commit('SET_ROLES', res.roles)
commit('SET_PERMISSIONS', res.permissions) commit('SET_PERMISSIONS', res.permissions)
} else { } else {
commit('SET_ROLES', ['ROLE_DEFAULT']) commit('SET_ROLES', ['ROLE_DEFAULT'])
} }
commit('SET_NAME', user.userName) commit('SET_NAME', user.userName)
commit('SET_AVATAR', avatar) commit('SET_AVATAR', avatar)
resolve(res) localStorage.setItem('USER_POOL_NAME_CURRENT',user.poolName)
}).catch(error => { resolve(res)
reject(error) }).catch(error => {
}) reject(error)
}) })
}, })
},
// 刷新token
RefreshToken({commit, state}) { // 刷新token
return new Promise((resolve, reject) => { RefreshToken({commit, state}) {
refreshToken(state.token).then(res => { return new Promise((resolve, reject) => {
setExpiresIn(res.data) refreshToken(state.token).then(res => {
commit('SET_EXPIRES_IN', res.data) setExpiresIn(res.data)
resolve() commit('SET_EXPIRES_IN', res.data)
}).catch(error => { resolve()
reject(error) }).catch(error => {
}) reject(error)
}) })
}, })
},
// 退出系统
LogOut({ commit, state }) { // 退出系统
return new Promise((resolve, reject) => { LogOut({ commit, state }) {
logout(state.token).then(() => { return new Promise((resolve, reject) => {
commit('SET_TOKEN', '') logout(state.token).then(() => {
commit('SET_ROLES', []) commit('SET_TOKEN', '')
commit('SET_PERMISSIONS', []) commit('SET_ROLES', [])
removeToken() commit('SET_PERMISSIONS', [])
resolve() removeToken()
}).catch(error => { resolve()
reject(error) }).catch(error => {
}) reject(error)
}) })
}, })
},
// 前端 登出
FedLogOut({ commit }) { // 前端 登出
return new Promise(resolve => { FedLogOut({ commit }) {
commit('SET_TOKEN', '') return new Promise(resolve => {
removeToken() commit('SET_TOKEN', '')
resolve() removeToken()
}) resolve()
} })
} }
} }
}
export default user
export default user

@ -1,146 +1,149 @@
import axios from 'axios' import axios from 'axios'
import { Notification, MessageBox, Message, Loading } from 'element-ui' import { Notification, MessageBox, Message, Loading } from 'element-ui'
import store from '@/store' import store from '@/store'
import { getToken } from '@/utils/auth' import { getToken } from '@/utils/auth'
import errorCode from '@/utils/errorCode' import errorCode from '@/utils/errorCode'
import { tansParams, blobValidate } from "@/utils/ruoyi"; import { tansParams, blobValidate } from "@/utils/ruoyi";
import cache from '@/plugins/cache' import cache from '@/plugins/cache'
import { saveAs } from 'file-saver' import { saveAs } from 'file-saver'
let downloadLoadingInstance; let downloadLoadingInstance;
// 是否显示重新登录 // 是否显示重新登录
export let isRelogin = { show: false }; export let isRelogin = { show: false };
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 创建axios实例 // 创建axios实例
const service = axios.create({ const service = axios.create({
// axios中请求配置有baseURL选项表示请求URL公共部分 // axios中请求配置有baseURL选项表示请求URL公共部分
baseURL: process.env.VUE_APP_BASE_API, baseURL: process.env.VUE_APP_BASE_API,
// 超时 // 超时
timeout: 10000 timeout: 10000
}) })
// request拦截器 // request拦截器
service.interceptors.request.use(config => { service.interceptors.request.use(config => {
// 是否需要设置 token if(localStorage.getItem('USER_POOL_NAME_CURRENT')){
const isToken = (config.headers || {}).isToken === false config.headers['poolName'] = localStorage.getItem('USER_POOL_NAME_CURRENT');
// 是否需要防止数据重复提交 }
const isRepeatSubmit = (config.headers || {}).repeatSubmit === false // 是否需要设置 token
if (getToken() && !isToken) { const isToken = (config.headers || {}).isToken === false
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 // 是否需要防止数据重复提交
} const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
// get请求映射params参数 if (getToken() && !isToken) {
if (config.method === 'get' && config.params) { config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
let url = config.url + '?' + tansParams(config.params); }
url = url.slice(0, -1); // get请求映射params参数
config.params = {}; if (config.method === 'get' && config.params) {
config.url = url; let url = config.url + '?' + tansParams(config.params);
} url = url.slice(0, -1);
if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) { config.params = {};
const requestObj = { config.url = url;
url: config.url, }
data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data, if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) {
time: new Date().getTime() const requestObj = {
} url: config.url,
const sessionObj = cache.session.getJSON('sessionObj') data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data,
if (sessionObj === undefined || sessionObj === null || sessionObj === '') { time: new Date().getTime()
cache.session.setJSON('sessionObj', requestObj) }
} else { const sessionObj = cache.session.getJSON('sessionObj')
const s_url = sessionObj.url; // 请求地址 if (sessionObj === undefined || sessionObj === null || sessionObj === '') {
const s_data = sessionObj.data; // 请求数据 cache.session.setJSON('sessionObj', requestObj)
const s_time = sessionObj.time; // 请求时间 } else {
const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交 const s_url = sessionObj.url; // 请求地址
if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) { const s_data = sessionObj.data; // 请求数据
const message = '数据正在处理,请勿重复提交'; const s_time = sessionObj.time; // 请求时间
console.warn(`[${s_url}]: ` + message) const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交
return Promise.reject(new Error(message)) if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
} else { const message = '数据正在处理,请勿重复提交';
cache.session.setJSON('sessionObj', requestObj) console.warn(`[${s_url}]: ` + message)
} return Promise.reject(new Error(message))
} } else {
} cache.session.setJSON('sessionObj', requestObj)
return config }
}, error => { }
console.log(error) }
Promise.reject(error) return config
}) }, error => {
console.log(error)
// 响应拦截器 Promise.reject(error)
service.interceptors.response.use(res => { })
// 未设置状态码则默认成功状态
const code = res.data.code || 200; // 响应拦截器
// 获取错误信息 service.interceptors.response.use(res => {
const msg = errorCode[code] || res.data.msg || errorCode['default'] // 未设置状态码则默认成功状态
// 二进制数据则直接返回 const code = res.data.code || 200;
if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') { // 获取错误信息
return res.data const msg = errorCode[code] || res.data.msg || errorCode['default']
} // 二进制数据则直接返回
if (code === 401) { if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
if (!isRelogin.show) { return res.data
isRelogin.show = true; }
MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => { if (code === 401) {
isRelogin.show = false; if (!isRelogin.show) {
store.dispatch('LogOut').then(() => { isRelogin.show = true;
location.href = '/index'; MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => {
}) isRelogin.show = false;
}).catch(() => { store.dispatch('LogOut').then(() => {
isRelogin.show = false; location.href = '/index';
}); })
} }).catch(() => {
return Promise.reject('无效的会话,或者会话已过期,请重新登录。') isRelogin.show = false;
} else if (code === 500) { });
Message({ message: msg, type: 'error' }) }
return Promise.reject(new Error(msg)) return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 601) { } else if (code === 500) {
Message({ message: msg, type: 'warning' }) Message({ message: msg, type: 'error' })
return Promise.reject('error') return Promise.reject(new Error(msg))
} else if (code !== 200) { } else if (code === 601) {
Notification.error({ title: msg }) Message({ message: msg, type: 'warning' })
return Promise.reject('error') return Promise.reject('error')
} else { } else if (code !== 200) {
return res.data Notification.error({ title: msg })
} return Promise.reject('error')
}, } else {
error => { return res.data
console.log('err' + error) }
let { message } = error; },
if (message == "Network Error") { error => {
message = "后端接口连接异常"; console.log('err' + error)
} else if (message.includes("timeout")) { let { message } = error;
message = "系统接口请求超时"; if (message == "Network Error") {
} else if (message.includes("Request failed with status code")) { message = "后端接口连接异常";
message = "系统接口" + message.substr(message.length - 3) + "异常"; } else if (message.includes("timeout")) {
} message = "系统接口请求超时";
Message({ message: message, type: 'error', duration: 5 * 1000 }) } else if (message.includes("Request failed with status code")) {
return Promise.reject(error) message = "系统接口" + message.substr(message.length - 3) + "异常";
} }
) Message({ message: message, type: 'error', duration: 5 * 1000 })
return Promise.reject(error)
// 通用下载方法 }
export function download(url, params, filename, config) { )
downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
return service.post(url, params, { // 通用下载方法
transformRequest: [(params) => { return tansParams(params) }], export function download(url, params, filename, config) {
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
responseType: 'blob', return service.post(url, params, {
...config transformRequest: [(params) => { return tansParams(params) }],
}).then(async (data) => { headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
const isBlob = blobValidate(data); responseType: 'blob',
if (isBlob) { ...config
const blob = new Blob([data]) }).then(async (data) => {
saveAs(blob, filename) const isBlob = blobValidate(data);
} else { if (isBlob) {
const resText = await data.text(); const blob = new Blob([data])
const rspObj = JSON.parse(resText); saveAs(blob, filename)
const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default'] } else {
Message.error(errMsg); const resText = await data.text();
} const rspObj = JSON.parse(resText);
downloadLoadingInstance.close(); const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
}).catch((r) => { Message.error(errMsg);
console.error(r) }
Message.error('下载文件出现错误,请联系管理员!') downloadLoadingInstance.close();
downloadLoadingInstance.close(); }).catch((r) => {
}) console.error(r)
} Message.error('下载文件出现错误,请联系管理员!')
downloadLoadingInstance.close();
export default service })
}
export default service

Loading…
Cancel
Save