From 5289380ef5887beecfcbd13196403b568bca5bb6 Mon Sep 17 00:00:00 2001 From: monanxiao Date: Sat, 12 Oct 2024 11:26:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B6=E5=90=8E=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/modules/index.js | 2 +- src/api/request.js | 117 ++++++++++---- src/layout/menu/index.vue | 8 +- src/layout/menu/menuTable.js | 5 + src/mock/permission.js | 2 +- src/store/modules/users.js | 8 +- src/views/goods/index.vue | 285 ++++++++++++++++++++++++++++++++++- 7 files changed, 384 insertions(+), 43 deletions(-) diff --git a/src/api/modules/index.js b/src/api/modules/index.js index 09432bb..1fe9234 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, }); } 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..1143d63 100644 --- a/src/layout/menu/index.vue +++ b/src/layout/menu/index.vue @@ -33,7 +33,7 @@ diff --git a/src/layout/menu/menuTable.js b/src/layout/menu/menuTable.js index 8af9332..985bd02 100644 --- a/src/layout/menu/menuTable.js +++ b/src/layout/menu/menuTable.js @@ -10,6 +10,11 @@ const menuTable = [ url: "/home", icon: "HomeFilled", }, + { + title: "服务项目", + url: "/goods", + icon: "HomeFilled", + }, { title: "页面管理", url: "/page", diff --git a/src/mock/permission.js b/src/mock/permission.js index 23e9c5a..c9bcfc5 100644 --- a/src/mock/permission.js +++ b/src/mock/permission.js @@ -5,7 +5,7 @@ import { } from "../views/home/options"; const Random = Mock.Random; -let menuList = [ +export const menuListItem = [ { title: "仪表盘", url: "/home", 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: "登录成功", diff --git a/src/views/goods/index.vue b/src/views/goods/index.vue index 1ba4cd5..11ee616 100644 --- a/src/views/goods/index.vue +++ b/src/views/goods/index.vue @@ -1,10 +1,289 @@ - +