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..0d95725 100644 --- a/src/api/request.js +++ b/src/api/request.js @@ -1,44 +1,106 @@ 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) => { - return config; - }, - (error) => { - Promise.reject(error); - } + if (localStorage.getItem("token")) { + config.headers["Authorization"] = + "Bearer " + localStorage.getItem("token"); + } + + 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/layout/menu/menuTable.js b/src/layout/menu/menuTable.js index 8af9332..1a044d3 100644 --- a/src/layout/menu/menuTable.js +++ b/src/layout/menu/menuTable.js @@ -10,6 +10,16 @@ const menuTable = [ url: "/home", icon: "HomeFilled", }, + { + title: "服务配置", + url: "/config", + icon: "HomeFilled", + }, + { + title: "服务项目", + url: "/goods", + icon: "HomeFilled", + }, { title: "页面管理", url: "/page", diff --git a/src/router/originalRoutingTable.js b/src/router/originalRoutingTable.js index aca06ea..845924f 100644 --- a/src/router/originalRoutingTable.js +++ b/src/router/originalRoutingTable.js @@ -75,6 +75,26 @@ const routerList = [ }, ], }, + { + path: "/config", + component: Layout, + redirect: "config", + meta: { + requiresAuth: true, //有一些页面是否登录才能进去 + name: "服务配置", + }, + children: [ + { + path: "/config", + name: "config", + component: () => import("../views/config/index.vue"), + meta: { + requiresAuth: true, //有一些页面是否登录才能进去 + name: "服务配置", + }, + }, + ], + }, { path: "/goods", component: Layout, @@ -90,7 +110,7 @@ const routerList = [ component: () => import("../views/goods/index.vue"), meta: { requiresAuth: true, //有一些页面是否登录才能进去 - name: "项目列表", + name: "服务项目", }, }, ], diff --git a/src/store/modules/users.js b/src/store/modules/users.js index fda0b97..1d9aa15 100644 --- a/src/store/modules/users.js +++ b/src/store/modules/users.js @@ -63,11 +63,12 @@ export default { return new Promise((resolve, reject) => { 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); + console.log(res.data.token, "111"); + sessionStorage.setItem("token", res.data.token); + localStorage.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..77c3d02 100644 --- a/src/views/goods/index.vue +++ b/src/views/goods/index.vue @@ -1,10 +1,289 @@ - +