From 99b55452c7b79486be1804e8fd51388b4ab1c327 Mon Sep 17 00:00:00 2001 From: lzyyj Date: Fri, 11 Oct 2024 10:21:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E5=8F=A3=EF=BC=9A=201?= =?UTF-8?q?=E3=80=81=E7=99=BB=E5=BD=95=E6=8E=A5=E5=8F=A3=202=E3=80=81?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=8E=A5=E5=8F=A3=E6=94=B9=E6=A8=A1=E6=8B=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/modules/index.js | 4 +- src/api/request.js | 117 ++++++++++++++++++++++++++++--------- src/layout/menu/index.vue | 10 ++-- src/store/modules/users.js | 8 +-- 4 files changed, 100 insertions(+), 39 deletions(-) diff --git a/src/api/modules/index.js b/src/api/modules/index.js index 09432bb..23b0876 100644 --- a/src/api/modules/index.js +++ b/src/api/modules/index.js @@ -5,7 +5,7 @@ import service from "../request.js"; export function LoginInfo(query) { return service({ method: "POST", - url: "/permission/LoginInfo", + url: "/login", data: query, }); } @@ -72,4 +72,4 @@ export function cardlists(query) { url: "/permission/cardlists", data: query, }); -} \ No newline at end of file +} diff --git a/src/api/request.js b/src/api/request.js index e9c8055..52d3ccb 100644 --- a/src/api/request.js +++ b/src/api/request.js @@ -1,44 +1,105 @@ import axios from "axios"; -import { - ElMessage -} from "element-plus"; +import { ElMessage, ElMessageBox } from "element-plus"; +import router from "../router/router"; +const errorCode = { + 401: "登录状态已过期,即将返回首页重新登录。", + 403: "当前操作没有权限", + 404: "访问资源不存在", + default: "系统未知错误,请反馈给管理员", +}; + +const url = "https://repair.cpolar.top"; // "https://hazard.cpolar.top"; const service = axios.create({ - timeout: 5000, + baseURL: url, + timeout: 5000, }); // Request interceptors service.interceptors.request.use( - (config) => { - if (localStorage.getItem('token')) - config.headers.token = localStorage.getItem('token') + (config) => { + if (localStorage.getItem("token")) { + config.headers["Authorization"] = + "Bearer " + localStorage.getItem("token"); + } - return config; - }, - (error) => { - Promise.reject(error); - } + if (config.url === "/login") { + config.headers["Content-Type"] = "multipart/form-data"; + } else { + config.headers["Content-Type"] = "application/json"; + } + + let params = config.params; + let newData = {}; + for (let key in params) { + if (params[key] !== null && params[key] !== "") { + newData[key] = params[key]; + } + } + config.params = newData; + return config; + }, + (error) => { + Promise.reject(error); + } ); // Response interceptors service.interceptors.response.use( - (response) => { - - if (response.status !== 200) { - ElMessage({ - type: "error", - message: "服务器忙,请稍后再试~", - }); - return; + (res) => { + // 对响应数据做点什么 + const response = res.data; + const code = res.data.code || 200; + const message = errorCode[code] || res.data.msg || errorCode["default"]; + if (code === 401) { + if (res.code === 401 || res.code === 4001) { + // 清除浏览器全部临时缓存 + sessionStorage.clear(); + localStorage.clear(); + router.push("/login"); + // store.commit('setMenuData', {}); + // resetRouter(); // 重置路由 + ElMessageBox.alert("你已被登出,请重新登录", "提示", {}) + .then(() => {}) + .catch(() => {}); + } + } else if (code === 500) { + // Message({ message: msg, type: 'error' }) + ElMessage.error(message); + return Promise.reject(new Error(msg)); + } else if (code === 601) { + // Message({ message: msg, type: 'warning' }) + ElMessage.error(message); + return Promise.reject("error"); + } else if (code != 200) { + ElMessage.error(message); + return Promise.reject("error"); + } else { + return response; + } + }, + (error) => { + console.log(error.response.data); // 获取错误状态码 + // 对响应错误做点什么 + if (error.message.indexOf("timeout") != -1) { + ElMessage.error("网络超时"); + } else if (error.message == "Network Error") { + ElMessage.error("网络连接错误"); + } else if (error.response.data.code == "401") { + sessionStorage.clear(); + localStorage.clear(); + router.push("/login"); + ElMessage.error(error.response.data.msg); + } else { + ElMessage.error( + error.response.data.msg || + error.response.data.error || + error.response.data.errMessage + ); + } + return Promise.reject(error); } - - return response; - }, - (error) => { - // do something - return Promise.reject(error); - } ); -export default service; \ No newline at end of file +export default service; diff --git a/src/layout/menu/index.vue b/src/layout/menu/index.vue index 3d6f105..5fb440b 100644 --- a/src/layout/menu/index.vue +++ b/src/layout/menu/index.vue @@ -54,12 +54,12 @@ const themeConfig = store.getters.themeConfig; // 菜单表存在后端的操作方式 onMounted(() => { - getMenuList().then((res) => { - menuList.value = res.data.data.menuList; - console.log(menuItems.value); - }); + // getMenuList().then((res) => { + // menuList.value = res.data.data.menuList; + // console.log(menuItems.value); + // }); // 获取本地菜单表渲染 - // menuList.value = menuTable; + menuList.value = menuTable; }); diff --git a/src/store/modules/users.js b/src/store/modules/users.js index fda0b97..739c54c 100644 --- a/src/store/modules/users.js +++ b/src/store/modules/users.js @@ -64,10 +64,10 @@ export default { LoginInfo(userInfo) .then((res) => { console.log(res.data.data); - sessionStorage.setItem("token", res.data.data.token); - sessionStorage.setItem("UserInfo", JSON.stringify(res.data.data)); - commit("setToken", res.data.data.token); - commit("setUserInfo", res.data.data); + sessionStorage.setItem("token", res.data.token); + sessionStorage.setItem("UserInfo", JSON.stringify(res.data)); + commit("setToken", res.data.token); + commit("setUserInfo", res.data); router.replace("/"); ElMessage({ message: "登录成功",