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];
});