diff --git a/src/configs/routes.ts b/src/configs/routes.ts index f6e04f5..cf5d56e 100644 --- a/src/configs/routes.ts +++ b/src/configs/routes.ts @@ -2,6 +2,7 @@ import { RouteRecordRaw } from "vue-router"; import IndexPage from "../pages/IndexPage.vue"; import LevelsPage from "../pages/LevelsPage.vue"; import PlaygroundPage from "../pages/PlaygroundPage.vue"; +import Page404 from "../pages/404Page.vue"; /** * 路由列表 @@ -26,4 +27,8 @@ export default [ path: "/playground", component: PlaygroundPage, }, + { + path: "/404", + component: Page404, + }, ] as RouteRecordRaw[]; diff --git a/src/levels/index.ts b/src/levels/index.ts index 0f90168..e1f8af1 100644 --- a/src/levels/index.ts +++ b/src/levels/index.ts @@ -14,7 +14,7 @@ export const getLevelByKey = (levelKey: string) => { return ( allLevels.find((level) => { return level.key === levelKey; - }) || allLevels[0] + }) || null ); }; diff --git a/src/pages/404Page.vue b/src/pages/404Page.vue new file mode 100644 index 0000000..dbc6776 --- /dev/null +++ b/src/pages/404Page.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/src/pages/IndexPage.vue b/src/pages/IndexPage.vue index f764614..e8eb385 100644 --- a/src/pages/IndexPage.vue +++ b/src/pages/IndexPage.vue @@ -54,15 +54,26 @@ import { QueryExecResult } from "sql.js"; import { allLevels, getLevelByKey } from "../levels"; import { checkResult } from "../core/result"; import CodeEditor from "../components/CodeEditor.vue"; +import { useRouter } from "vue-router"; interface IndexPageProps { levelKey?: string; } +const router = useRouter(); + const props = defineProps(); const level = computed(() => { if (props.levelKey) { - return getLevelByKey(props.levelKey); + const level = getLevelByKey(props.levelKey); + if (level) { + return level; + } + // 跳转到404页面 + router.push({ + path: "/404", + }); + return allLevels[0]; // 防止报错 } return allLevels[0]; });