From 50d27e232d33e970c4443c1aa2c07e138a824cbb Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 9 May 2025 13:28:31 +0900 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20src/router?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/index.ts | 103 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 src/router/index.ts diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..ff2d08a --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,103 @@ +import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router"; +import axios from "axios"; +import UserLogin from "../views/UserLogin.vue"; +import RequestList from "../views/RequestList.vue"; +import RequestDetail from "../views/RequestDetail.vue"; +import RequestRegist from "../views/RequestRegist.vue"; +import ApprovalList from "../views/ApprovalList.vue"; +import OrderAct from "../views/OrderAct.vue"; +import DeleverAct from "../views/DeleverAct.vue"; +import InStore from "../views/InStore.vue"; +import OutStore from "../views/OutStore.vue"; +import SystemAdmin from "../views/SystemAdmin.vue"; + +const routes: Array = [ + { + path: "/", + redirect: "/login", + }, + { + path: "/login", + name: "Login", + component: UserLogin, + meta: { title: "ユーザーログイン" }, + }, + { + path: "/request", + name: "RequestList", + component: RequestList, + meta: { title: "購入依頼一覧", requiresAuth: true }, + }, + { + path: "/requestDetail", + name: "RequestDetail", + component: RequestDetail, + meta: { title: "購入依頼詳細", requiresAuth: true }, + }, + { + path: "/requestRegist", + name: "RequestRegist", + component: RequestRegist, + meta: { title: "購入依頼登録", requiresAuth: true }, + }, + { + path: "/approval", + name: "ApprovalList", + component: ApprovalList, + meta: { title: "購入依頼一覧", requiresAuth: true }, + }, + { + path: "/order", + name: "OrderAct", + component: OrderAct, + meta: { title: "発注画面", requiresAuth: true }, + }, + { + path: "/delever", + name: "DeleverAct", + component: DeleverAct, + meta: { title: "納品画面", requiresAuth: true }, + }, + { + path: "/inStore", + name: "InStore", + component: InStore, + meta: { title: "入庫画面", requiresAuth: true }, + }, + { + path: "/outStore", + name: "OutStore", + component: OutStore, + meta: { title: "出庫画面", requiresAuth: true }, + }, + { + path: "/systemAdmin", + name: "SystemAdmin", + component: SystemAdmin, + meta: { title: "Administrator", requiresAuth: true }, + }, +]; + +const router = createRouter({ + history: createWebHistory(process.env.BASE_URL), + routes, +}); + +router.beforeEach(async (to, from, next) => { + if (to.meta.title) { + document.title = to.meta.title as string; + } + + if (!to.meta.requiresAuth) { + return next(); + } + + try { + await axios.get("/api/me", { withCredentials: true }); // cookie + next(); // 登录状态 OK,继续跳转 + } catch (error) { + // 没登录 -> 跳转到登录页 + next("/login"); + } +}); +export default router;