From 8baf257dd6cfb924d20e563a311291f5a9c681b1 Mon Sep 17 00:00:00 2001 From: chm <3227492039@qq.com> Date: Mon, 16 Dec 2024 16:49:10 +0800 Subject: [PATCH] Login and router --- src/routerfianl.js | 126 ++++++++++++++++++++++++++++++++++++++++ src/view/Loginfinal.vue | 117 +++++++++++++++++++++++++++++++++++++ 2 files changed, 243 insertions(+) create mode 100644 src/routerfianl.js create mode 100644 src/view/Loginfinal.vue diff --git a/src/routerfianl.js b/src/routerfianl.js new file mode 100644 index 0000000..a047582 --- /dev/null +++ b/src/routerfianl.js @@ -0,0 +1,126 @@ +import { + createRouter, + createWebHistory + } from 'vue-router'; + import { + userStore, + useExpressStore + } from './store'; + import { + ElMessage + } from 'element-plus'; + + + import request from "./request" + + const router = createRouter({ + history: createWebHistory(), + routes: [{ + path: "/", + redirect: "login" + }, + { + path: '/login', + name: 'Login', + component: () => import("./view/login.vue") + }, + { + path: "/register", + name: "Register", + component: () => import("./view/register.vue") + }, + { + path: '/user', + name: 'User', + redirect: localStorage.getItem("isAdmin") ? '/user/expressList' : '/user/myInfo', + component: () => import("./view/user/index.vue"), + children: [{ + path: 'myInfo', + component: () => import("./view/user/MyInfo.vue"), + }, + { + path: 'expressList', + component: () => import("./view/user/ExpressList.vue"), + }, + { + path: 'expressForm', + component: () => import("./view/user/ExpressForm.vue"), + }, + { + path: "signed", + component: () => import("./view/user/SignedList.vue"), + } + ] + }, + ] + }); + + router.beforeEach((to, from, next) => { + const userStore_ = userStore() + if (to.name === 'Login' || to.name === "Register") { + next(); + } else { + const token = localStorage.getItem("token") + if (token) { + //重新请求express + const expressStore = useExpressStore() + request({ + method: "get", + url: "/express", + }).then(({ + data + }) => { + if (data.code === 0) { + expressStore.setExpress(data.data) + console.log(data.data, "重新设置express成功") + + } + }) + + //有秘钥,重新请求userInfo + request({ + method: "get", + url: "/user/whoami", + }).then(({ + data + }) => { + //获取用户信息 + if (data.code === 0) { + //重新设置信息 + userStore_.setUserInfo(data.data) + //重新设置秘钥 + userStore_.setToken(token) + userStore_.setAdmin(localStorage.getItem("isAdmin")) + + console.log("重新响应成功", data.data) + if (localStorage.getItem("isAdmin") && token.name === "User") { + next({ + path: "/user/expressList" + }) + } else { + next() + } + } else { + //获取失败,秘钥过期 + ElMessage({ + message: "登录已过期,请重新登录", + type: "error" + }) + //将过期的token删除 + localStorage.removeItem("token") + next({ + name: "Login" + }) + } + }) + //有秘钥就通过 + } else { + next({ + name: "Login" + }) + } + } + }) + + + export default router; \ No newline at end of file diff --git a/src/view/Loginfinal.vue b/src/view/Loginfinal.vue new file mode 100644 index 0000000..8805d4c --- /dev/null +++ b/src/view/Loginfinal.vue @@ -0,0 +1,117 @@ + + + 顺丰快递 + {{ message }} + + + + + + + + + 确定 + 注册 + + + + + + + + \ No newline at end of file