diff --git a/package-lock.json b/package-lock.json
index 979bc86..770cafc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,6 +18,8 @@
"devDependencies": {
"@tailwindcss/vite": "^4.3.0",
"@types/node": "^24.12.3",
+ "@vicons/tabler": "^0.13.0",
+ "@vicons/utils": "^0.1.4",
"@vitejs/plugin-vue": "^6.0.6",
"@vue/tsconfig": "^0.9.1",
"tailwindcss": "^4.3.0",
@@ -971,6 +973,26 @@
"undici-types": "~7.16.0"
}
},
+ "node_modules/@vicons/tabler": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmmirror.com/@vicons/tabler/-/tabler-0.13.0.tgz",
+ "integrity": "sha512-AykuhiqjszkIoAL/7knIFm6RDOBS1ZmQdJfQ+RNLEah0fVsxykUFCfMBSNZh8lOzC85EtdD1k5g/sv5GYk0Ohg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vicons/utils": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/@vicons/utils/-/utils-0.1.4.tgz",
+ "integrity": "sha512-OHI19qVNN6i+uPQ+Y3f2s0dUxwsYnOCcKBW7XOU4yXXO1aU3ZoKpblCc3+4N0qmgoJs5rWKRAaMisipqEXJwAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@xicons/utils": "^0.1.4"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.6"
+ }
+ },
"node_modules/@vitejs/plugin-vue": {
"version": "6.0.7",
"resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-6.0.7.tgz",
@@ -1212,6 +1234,42 @@
}
}
},
+ "node_modules/@xicons/utils": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/@xicons/utils/-/utils-0.1.4.tgz",
+ "integrity": "sha512-uXxKDLz9abr80yJC05XSTq6wlyFcdW+N/1IYJkeHjzzXVc4VQ0sEYMoMMTjAH7HQBOyOkzOB4pf5NGF72lwa8Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "css-render": "^0.13.2"
+ }
+ },
+ "node_modules/@xicons/utils/node_modules/@types/node": {
+ "version": "14.14.45",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-14.14.45.tgz",
+ "integrity": "sha512-DssMqTV9UnnoxDWu959sDLZzfvqCF0qDNRjaWeYSui9xkFe61kKo4l1TWNTQONpuXEm+gLMRvdlzvNHBamzmEw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@xicons/utils/node_modules/css-render": {
+ "version": "0.13.9",
+ "resolved": "https://registry.npmmirror.com/css-render/-/css-render-0.13.9.tgz",
+ "integrity": "sha512-n3C4ZH59rveBrUlAD7n0Ze9/gUMKa4dlH1C9CWKpGcIHR/xRcIVXzBGy1iw8WWq2ySmn2/ZqOpySQNAK5Pb6sw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@emotion/hash": "~0.8.0",
+ "@types/node": "~14.14.31",
+ "csstype": "~3.0.5"
+ }
+ },
+ "node_modules/@xicons/utils/node_modules/csstype": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.0.11.tgz",
+ "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/acorn": {
"version": "8.16.0",
"resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.16.0.tgz",
diff --git a/package.json b/package.json
index 3519cfc..025e2e6 100644
--- a/package.json
+++ b/package.json
@@ -19,6 +19,8 @@
"devDependencies": {
"@tailwindcss/vite": "^4.3.0",
"@types/node": "^24.12.3",
+ "@vicons/tabler": "^0.13.0",
+ "@vicons/utils": "^0.1.4",
"@vitejs/plugin-vue": "^6.0.6",
"@vue/tsconfig": "^0.9.1",
"tailwindcss": "^4.3.0",
diff --git a/src/router/index.ts b/src/router/index.ts
index 68b33bf..c4aad45 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -62,6 +62,16 @@ const router = createRouter({
component: () => import('@/views/admin/AdminView.vue'),
meta: { requiresAuth: true, requiresAdmin: true },
},
+ {
+ path: '/403',
+ name: 'forbidden',
+ component: () => import('@/views/system/ForbiddenView.vue'),
+ },
+ {
+ path: '/:pathMatch(.*)*',
+ name: 'not-found',
+ component: () => import('@/views/system/NotFoundView.vue'),
+ },
],
scrollBehavior() {
return { top: 0 }
@@ -74,7 +84,7 @@ router.beforeEach((to, _from, next) => {
if (to.meta.requiresAuth && !authStore.isLoggedIn) {
next({ name: 'login', query: { redirect: to.fullPath } })
} else if (to.meta.requiresAdmin && !authStore.isAdmin) {
- next({ name: 'map' })
+ next({ name: 'forbidden' })
} else if ((to.name === 'login' || to.name === 'register') && authStore.isLoggedIn) {
next({ name: 'map' })
} else {
diff --git a/src/views/encyclopedia/EncyclopediaView.vue b/src/views/encyclopedia/EncyclopediaView.vue
index 11f66a9..c4c71e2 100644
--- a/src/views/encyclopedia/EncyclopediaView.vue
+++ b/src/views/encyclopedia/EncyclopediaView.vue
@@ -1,9 +1,10 @@
+
+
+ 403 Forbidden
+ 你当前没有访问这个页面的权限。通常是因为这个区域只对管理员开放。
+ 404 Not Found
+ 这个页面不存在,或者它已经被移动到了别的地方。换个入口再试一次。
+ 这里不让进
+ 我也没想明白
+
选填,可手动输入,或点击右侧小地图图标选点
+选填,可手动输入,或点击右侧小地图图标选择
@@ -545,7 +545,7 @@ onUnmounted(() => {共 {{ items.length }} 张图片,类别和拍摄时间为必填项
+共 {{ items.length }} 张图片