diff --git a/src/api/login.js b/src/api/login.js index aeac26d..3ab64d1 100644 --- a/src/api/login.js +++ b/src/api/login.js @@ -1,88 +1,89 @@ import request from "@/utils/request"; +import useUserStore from "@/store/modules/user"; // 登录方法 export function login(username, password, code, uuid) { - const data = { - username, - password, - code, - uuid, - }; - return request({ - url: "/login", - headers: { - isToken: false, - }, - method: "post", - data: data, - }); + const data = { + username, + password, + code, + uuid, + }; + return request({ + url: "/login", + headers: { + isToken: false, + }, + method: "post", + data: data, + }); } // 注册方法 export function register(data) { - return request({ - url: "/register", - headers: { - isToken: false, - }, - method: "post", - data: data, - }); + return request({ + url: "/register", + headers: { + isToken: false, + }, + method: "post", + data: data, + }); } // 获取用户详细信息 export function getInfo() { - // if (useUserStore().userInfoRes) { - // return new Promise((resolve, reject) => { - // resolve(useUserStore().userInfoRes); - // }); - // } - return request({ - url: "/getInfo", - method: "get", - }); + // if (useUserStore().userInfoRes) { + // return new Promise((resolve, reject) => { + // resolve(useUserStore().userInfoRes); + // }); + // } + return request({ + url: "/getInfo", + method: "get", + }); } // 退出方法 export function logout() { - return request({ - url: "/logout", - method: "post", - }); + return request({ + url: "/logout", + method: "post", + }); } // 获取验证码 export function getCodeImg() { - return request({ - url: "/captchaImage", - headers: { - isToken: false, - }, - method: "get", - timeout: 20000, - }); + return request({ + url: "/captchaImage", + headers: { + isToken: false, + }, + method: "get", + timeout: 20000, + }); } // 获取路由 export const getRouters = () => { - // if (usePermissionStore().routesRes) { - // return new Promise((resolve, reject) => { - // resolve(usePermissionStore().routesRes); - // }); - // } - return request({ - url: "/getRouters", - method: "get", - }); + // if (usePermissionStore().routesRes) { + // return new Promise((resolve, reject) => { + // resolve(usePermissionStore().routesRes); + // }); + // } + return request({ + url: "/getRouters", + method: "get", + }); }; export const getTenantNormalList = (query) => { - return request({ - url: "/tenant/normal-list", - headers: { - isToken: false, - }, - params: query, - method: "get", - }); + return request({ + url: "/tenant/normal-list", + headers: { + isToken: false, + }, + params: query, + method: "get", + }); }; diff --git a/src/utils/request.js b/src/utils/request.js index 01e2f1a..5000b87 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -1,227 +1,226 @@ import axios from "axios"; -import { - ElLoading, - ElMessage, - ElMessageBox, - ElNotification, -} from "element-plus"; -import { getToken } from "@/utils/auth"; +import {ElLoading, ElMessage, ElMessageBox, ElNotification,} from "element-plus"; +import {getToken} from "@/utils/auth"; import errorCode from "@/utils/errorCode"; -import { blobValidate, tansParams } from "@/utils/ruoyi"; +import {blobValidate, tansParams} from "@/utils/ruoyi"; import cache from "@/plugins/cache"; -import { saveAs } from "file-saver"; +import {saveAs} from "file-saver"; import useUserStore from "@/store/modules/user"; let downloadLoadingInstance; // 是否显示重新登录 -export let isRelogin = { show: false }; +export let isRelogin = {show: false}; axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8"; // 创建axios实例 const service = axios.create({ - // axios中请求配置有baseURL选项,表示请求URL公共部分 - baseURL: import.meta.env.VITE_APP_BASE_API, - // 超时 - timeout: 10000, + // axios中请求配置有baseURL选项,表示请求URL公共部分 + baseURL: import.meta.env.VITE_APP_BASE_API, + // 超时 + timeout: 10000, }); // request拦截器 service.interceptors.request.use( - (config) => { - // 是否需要设置 token - const isToken = (config.headers || {}).isToken === false; - // 是否需要防止数据重复提交 - const isRepeatSubmit = (config.headers || {}).repeatSubmit === false; - if (getToken() && !isToken) { - config.headers["Authorization"] = "Bearer " + getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改 - } - if (useUserStore().tenant) { - config.headers["tenant"] = useUserStore().tenant; - } - // get请求映射params参数 - if (config.method === "get" && config.params) { - let url = config.url + "?" + tansParams(config.params); - url = url.slice(0, -1); - config.params = {}; - config.url = url; - } - if ( - !isRepeatSubmit && - (config.method === "post" || config.method === "put") - ) { - const requestObj = { - url: config.url, - data: - typeof config.data === "object" - ? JSON.stringify(config.data) - : config.data, - time: new Date().getTime(), - }; - const sessionObj = cache.session.getJSON("sessionObj"); - if ( - sessionObj === undefined || - sessionObj === null || - sessionObj === "" - ) { - cache.session.setJSON("sessionObj", requestObj); - } else { - const s_url = sessionObj.url; // 请求地址 - const s_data = sessionObj.data; // 请求数据 - const s_time = sessionObj.time; // 请求时间 - const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交 - if ( - s_data === requestObj.data && - requestObj.time - s_time < interval && - s_url === requestObj.url - ) { - const message = "数据正在处理,请勿重复提交"; - console.warn(`[${s_url}]: ` + message); - return Promise.reject(new Error(message)); - } else { - cache.session.setJSON("sessionObj", requestObj); + (config) => { + // 是否需要设置 token + const isToken = (config.headers || {}).isToken === false; + // 是否需要防止数据重复提交 + const isRepeatSubmit = (config.headers || {}).repeatSubmit === false; + if (getToken() && !isToken) { + config.headers["Authorization"] = "Bearer " + getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改 } - } + // if (useUserStore().tenant) { + if (config.url === "/captchaImage") { + config.headers["tenant"] = useUserStore().tempTenant; + } else { + config.headers["tenant"] = useUserStore().tenant; + } + // } + // get请求映射params参数 + if (config.method === "get" && config.params) { + let url = config.url + "?" + tansParams(config.params); + url = url.slice(0, -1); + config.params = {}; + config.url = url; + } + if ( + !isRepeatSubmit && + (config.method === "post" || config.method === "put") + ) { + const requestObj = { + url: config.url, + data: + typeof config.data === "object" + ? JSON.stringify(config.data) + : config.data, + time: new Date().getTime(), + }; + const sessionObj = cache.session.getJSON("sessionObj"); + if ( + sessionObj === undefined || + sessionObj === null || + sessionObj === "" + ) { + cache.session.setJSON("sessionObj", requestObj); + } else { + const s_url = sessionObj.url; // 请求地址 + const s_data = sessionObj.data; // 请求数据 + const s_time = sessionObj.time; // 请求时间 + const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交 + if ( + s_data === requestObj.data && + requestObj.time - s_time < interval && + s_url === requestObj.url + ) { + const message = "数据正在处理,请勿重复提交"; + 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; - // 获取错误信息 - const msg = errorCode[code] || res.data.msg || errorCode["default"]; - // 二进制数据则直接返回 - if ( - res.request.responseType === "blob" || - res.request.responseType === "arraybuffer" - ) { - return res.data; + (res) => { + // 未设置状态码则默认成功状态 + const code = res.data.code || 200; + // 获取错误信息 + const msg = errorCode[code] || res.data.msg || errorCode["default"]; + // 二进制数据则直接返回 + if ( + res.request.responseType === "blob" || + res.request.responseType === "arraybuffer" + ) { + return res.data; + } + if (code === 401 || code === 4011) { + if (!isRelogin.show) { + isRelogin.show = true; + ElMessageBox.confirm( + "登录状态已过期,您可以继续留在该页面,或者重新登录", + "系统提示", + { + showCancelButton: false, + showClose: false, + confirmButtonText: "重新登录", + closeOnClickModal: false, + closeOnPressEscape: false, + cancelButtonText: "取消", + type: "warning", + } + ) + .then(() => { + isRelogin.show = false; + useUserStore() + .abnormalLogOut() + .then(() => { + location.href = "/index"; + }); + }) + .catch(() => { + isRelogin.show = false; + }); + } + return Promise.reject("无效的会话,或者会话已过期,请重新登录。"); + } else if (code === 4012) { + if (!isRelogin.show) { + isRelogin.show = true; + ElMessageBox.confirm("您已被挤下线", "系统提示", { + showCancelButton: false, + showClose: false, + confirmButtonText: "重新登录", + closeOnClickModal: false, + closeOnPressEscape: false, + cancelButtonText: "取消", + type: "warning", + }) + .then(() => { + isRelogin.show = false; + useUserStore() + .abnormalLogOut() + .then(() => { + location.href = "/index"; + }); + }) + .catch(() => { + isRelogin.show = false; + }); + } + return Promise.reject("您已被挤下线"); + } else if (code === 500) { + ElMessage({message: msg, type: "error"}); + return Promise.reject(new Error(msg)); + } else if (code === 601) { + ElMessage({message: msg, type: "warning"}); + return Promise.reject(new Error(msg)); + } else if (code !== 200) { + ElNotification.error({title: msg}); + return Promise.reject("error"); + } else { + return Promise.resolve(res.data); + } + }, + (error) => { + console.log("err" + error); + let {message} = error; + if (message == "Network Error") { + message = "后端接口连接异常"; + } else if (message.includes("timeout")) { + message = "系统接口请求超时"; + } else if (message.includes("Request failed with status code")) { + message = "系统接口" + message.substr(message.length - 3) + "异常"; + } + ElMessage({message: message, type: "error", duration: 5 * 1000}); + return Promise.reject(error); } - if (code === 401 || code === 4011) { - if (!isRelogin.show) { - isRelogin.show = true; - ElMessageBox.confirm( - "登录状态已过期,您可以继续留在该页面,或者重新登录", - "系统提示", - { - showCancelButton: false, - showClose: false, - confirmButtonText: "重新登录", - closeOnClickModal: false, - closeOnPressEscape: false, - cancelButtonText: "取消", - type: "warning", - } - ) - .then(() => { - isRelogin.show = false; - useUserStore() - .abnormalLogOut() - .then(() => { - location.href = "/index"; - }); - }) - .catch(() => { - isRelogin.show = false; - }); - } - return Promise.reject("无效的会话,或者会话已过期,请重新登录。"); - } else if (code === 4012) { - if (!isRelogin.show) { - isRelogin.show = true; - ElMessageBox.confirm("您已被挤下线", "系统提示", { - showCancelButton: false, - showClose: false, - confirmButtonText: "重新登录", - closeOnClickModal: false, - closeOnPressEscape: false, - cancelButtonText: "取消", - type: "warning", - }) - .then(() => { - isRelogin.show = false; - useUserStore() - .abnormalLogOut() - .then(() => { - location.href = "/index"; - }); - }) - .catch(() => { - isRelogin.show = false; - }); - } - return Promise.reject("您已被挤下线"); - } else if (code === 500) { - ElMessage({ message: msg, type: "error" }); - return Promise.reject(new Error(msg)); - } else if (code === 601) { - ElMessage({ message: msg, type: "warning" }); - return Promise.reject(new Error(msg)); - } else if (code !== 200) { - ElNotification.error({ title: msg }); - return Promise.reject("error"); - } else { - return Promise.resolve(res.data); - } - }, - (error) => { - console.log("err" + error); - let { message } = error; - if (message == "Network Error") { - message = "后端接口连接异常"; - } else if (message.includes("timeout")) { - message = "系统接口请求超时"; - } else if (message.includes("Request failed with status code")) { - message = "系统接口" + message.substr(message.length - 3) + "异常"; - } - ElMessage({ message: message, type: "error", duration: 5 * 1000 }); - return Promise.reject(error); - } ); // 通用下载方法 export function download(url, params, filename, config) { - downloadLoadingInstance = ElLoading.service({ - text: "正在下载数据,请稍候", - background: "rgba(0, 0, 0, 0.7)", - }); - return service - .post(url, params, { - transformRequest: [ - (params) => { - return tansParams(params); - }, - ], - headers: { "Content-Type": "application/x-www-form-urlencoded" }, - responseType: "blob", - ...config, - }) - .then(async (data) => { - const isBlob = blobValidate(data); - if (isBlob) { - const blob = new Blob([data]); - saveAs(blob, filename); - } else { - const resText = await data.text(); - const rspObj = JSON.parse(resText); - const errMsg = - errorCode[rspObj.code] || rspObj.msg || errorCode["default"]; - ElMessage.error(errMsg); - } - downloadLoadingInstance.close(); - }) - .catch((r) => { - console.error(r); - ElMessage.error("下载文件出现错误,请联系管理员!"); - downloadLoadingInstance.close(); + downloadLoadingInstance = ElLoading.service({ + text: "正在下载数据,请稍候", + background: "rgba(0, 0, 0, 0.7)", }); + return service + .post(url, params, { + transformRequest: [ + (params) => { + return tansParams(params); + }, + ], + headers: {"Content-Type": "application/x-www-form-urlencoded"}, + responseType: "blob", + ...config, + }) + .then(async (data) => { + const isBlob = blobValidate(data); + if (isBlob) { + const blob = new Blob([data]); + saveAs(blob, filename); + } else { + const resText = await data.text(); + const rspObj = JSON.parse(resText); + const errMsg = + errorCode[rspObj.code] || rspObj.msg || errorCode["default"]; + ElMessage.error(errMsg); + } + downloadLoadingInstance.close(); + }) + .catch((r) => { + console.error(r); + ElMessage.error("下载文件出现错误,请联系管理员!"); + downloadLoadingInstance.close(); + }); } export default service; diff --git a/src/views/login.vue b/src/views/login.vue index 1fe14e0..58630e9 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -231,7 +231,9 @@ const handleTenantConfirm = (option) => { }; watchEffect(() => { + console.log(loginForm.value.tenant) if (loginForm.value.tenant) { + console.log('getcode') getCode(); } })