Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/configs/routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";

/**
* 路由列表
Expand All @@ -26,4 +27,8 @@ export default [
path: "/playground",
component: PlaygroundPage,
},
{
path: "/404",
component: Page404,
},
] as RouteRecordRaw[];
2 changes: 1 addition & 1 deletion src/levels/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export const getLevelByKey = (levelKey: string) => {
return (
allLevels.find((level) => {
return level.key === levelKey;
}) || allLevels[0]
}) || null
);
};

Expand Down
27 changes: 27 additions & 0 deletions src/pages/404Page.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<template>
<a-result status="404" title="404" sub-title="当前页面不存在!">
<template #extra>
<a-button type="primary" @click="backToIndex()">返回首页</a-button>
</template>
</a-result>
</template>

<script setup>
import { useRouter } from 'vue-router'

const router = useRouter();

const backToIndex = () => {
router.push({
path: '/learn/level1'
});
}
</script>

<style>
.ant-result {
/* 158px = 64px(头部菜单) + 24px * 2(正文上下padding) + 46px(底部footer) */
height: calc(100vh - 158px);
padding: 20px 32px !important;
}
</style>
13 changes: 12 additions & 1 deletion src/pages/IndexPage.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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<IndexPageProps>();
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];
});
Expand Down