From a67db5dbfc56a99e75ca6e3ee66b9c830771594f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BA=E7=8B=A8?= <18119604035@163.com> Date: Mon, 17 Apr 2023 17:25:31 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=80=E5=87=BA=E7=99=BB=E5=BD=95=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.tsx | 12 ------ src/compenents/header/index.tsx | 8 +++- src/pages/init/index.tsx | 37 ++++++++++++++++-- src/routes/index.tsx | 67 ++++++++++++--------------------- 4 files changed, 65 insertions(+), 59 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index a4c2ce4..e91f9b2 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -4,10 +4,6 @@ import { useLocation, useRoutes } from "react-router-dom"; import routes from "./routes"; import "./App.scss"; import LoadingPage from "./pages/loading"; -import { user } from "./api/index"; -import { getToken } from "./utils/index"; -import { useDispatch } from "react-redux"; -import { loginAction } from "./store/user/loginUserSlice"; const G_ID = import.meta.env.VITE_G_ID || ""; if (G_ID) { @@ -15,16 +11,8 @@ if (G_ID) { } const App = () => { - const dispatch = useDispatch(); const Views = () => useRoutes(routes); - if (getToken()) { - user.detail().then((res: any) => { - const data = res.data; - dispatch(loginAction(data)); - }); - } - const location = useLocation(); useEffect(() => { if (!G_ID) { diff --git a/src/compenents/header/index.tsx b/src/compenents/header/index.tsx index 3ea76a0..9c9bd77 100644 --- a/src/compenents/header/index.tsx +++ b/src/compenents/header/index.tsx @@ -8,7 +8,12 @@ import { logoutAction, saveCurrentDepId, } from "../../store/user/loginUserSlice"; -import { setDepKey, setDepName, getDepName } from "../../utils/index"; +import { + setDepKey, + setDepName, + getDepName, + clearToken, +} from "../../utils/index"; import { ChangePasswordModel } from "../change-password"; import { UserInfoModel } from "../user-info"; import { ExclamationCircleFilled } from "@ant-design/icons"; @@ -68,6 +73,7 @@ export const Header: React.FC = () => { cancelText: "取消", onOk() { dispatch(logoutAction()); + clearToken(); navigate("/login"); }, onCancel() { diff --git a/src/pages/init/index.tsx b/src/pages/init/index.tsx index 6668e2f..7347448 100644 --- a/src/pages/init/index.tsx +++ b/src/pages/init/index.tsx @@ -1,17 +1,48 @@ import { useDispatch } from "react-redux"; import { Outlet } from "react-router-dom"; // import styles from "./index.module.scss"; -import { saveConfigAction } from "../../store/system/systemConfigSlice"; +import { + SystemConfigStoreInterface, + saveConfigAction, +} from "../../store/system/systemConfigSlice"; +import { loginAction } from "../../store/user/loginUserSlice"; import { Header, NoHeader, Footer } from "../../compenents"; import { useLocation } from "react-router-dom"; interface Props { - config: Map; + loginData?: any; + configData?: any; } export const InitPage = (props: Props) => { const dispatch = useDispatch(); - dispatch(saveConfigAction(props.config)); + if (props.loginData) { + dispatch(loginAction(props.loginData)); + } + if (props.configData) { + let config: SystemConfigStoreInterface = { + //系统配置 + systemApiUrl: props.configData["system-api-url"], + systemH5Url: props.configData["system-h5-url"], + systemLogo: props.configData["system-logo"], + systemName: props.configData["system-name"], + systemPcUrl: props.configData["system-pc-url"], + pcIndexFooterMsg: props.configData["system-pc-index-footer-msg"], + //播放器配置 + playerPoster: props.configData["player-poster"], + playerIsEnabledBulletSecret: + props.configData["player-is-enabled-bullet-secret"] && + props.configData["player-is-enabled-bullet-secret"] === "1" + ? true + : false, + playerBulletSecretText: props.configData["player-bullet-secret-text"], + playerBulletSecretColor: props.configData["player-bullet-secret-color"], + playerBulletSecretOpacity: + props.configData["player-bullet-secret-opacity"], + }; + dispatch(saveConfigAction(config)); + } + const pathname = useLocation().pathname; return ( diff --git a/src/routes/index.tsx b/src/routes/index.tsx index ea55cce..a05b7f9 100644 --- a/src/routes/index.tsx +++ b/src/routes/index.tsx @@ -1,57 +1,38 @@ import { lazy } from "react"; import { RouteObject } from "react-router-dom"; -import { system } from "../api"; +import { system, user } from "../api"; import { SystemConfigStoreInterface } from "../store/system/systemConfigSlice"; +import { getToken } from "../utils"; import { InitPage } from "../pages/init"; import CoursePage from "../pages/course"; import IndexPage from "../pages/index"; import LatestLearnPage from "../pages/latest-learn"; import LoginPage from "../pages/login"; -let config: SystemConfigStoreInterface = { - systemApiUrl: "", - systemPcUrl: "", - systemH5Url: "", - systemLogo: "", - systemName: "", - pcIndexFooterMsg: "", - playerPoster: "", - playerIsEnabledBulletSecret: false, - playerBulletSecretText: "", - playerBulletSecretColor: "", - playerBulletSecretOpacity: "", -}; - -const Init = lazy(async () => { - return new Promise((resolve) => { - system.config().then((res: any) => { - //系统配置 - config.systemApiUrl = res.data["system-api-url"]; - config.systemH5Url = res.data["system-h5-url"]; - config.systemLogo = res.data["system-logo"]; - config.systemName = res.data["system-name"]; - config.systemPcUrl = res.data["system-pc-url"]; - config.pcIndexFooterMsg = res.data["system-pc-index-footer-msg"]; - - //播放器配置 - config.playerPoster = res.data["player-poster"]; - config.playerIsEnabledBulletSecret = - res.data["player-is-enabled-bullet-secret"] && - res.data["player-is-enabled-bullet-secret"] === "1" - ? true - : false; - config.playerBulletSecretText = res.data["player-bullet-secret-text"]; - config.playerBulletSecretColor = res.data["player-bullet-secret-color"]; - config.playerBulletSecretOpacity = - res.data["player-bullet-secret-opacity"]; - - resolve({ - default: InitPage, - }); +let RootPage: any = null; +if (getToken()) { + RootPage = lazy(async () => { + return new Promise(async (resolve) => { + try { + let configRes: any = await system.config(); + let userRes: any = await user.detail(); + resolve({ + default: ( + + ), + }); + } catch (e) { + console.error("系统初始化失败", e); + } }); }); -}); +} else { + if (window.location.pathname !== "/login") { + window.location.href = "/login"; + } + RootPage = ; +} // 懒加载 // const LoginPage = lazy(() => import("../pages/login")); @@ -62,7 +43,7 @@ const Init = lazy(async () => { const routes: RouteObject[] = [ { path: "/", - element: , + element: RootPage, children: [ { path: "/",