diff --git a/frontend/.gitignore b/frontend/.gitignore
index 7414e0e..b9e7245 100644
--- a/frontend/.gitignore
+++ b/frontend/.gitignore
@@ -28,6 +28,11 @@ coverage
.eslintcache
+# Auto-generated by unplugin
+/src/auto-imports.d.ts
+/src/components.d.ts
+/src/typed-router.d.ts
+
# Cypress
/cypress/videos/
/cypress/screenshots/
diff --git a/frontend/env.d.ts b/frontend/env.d.ts
index 11f02fe..1e8e929 100644
--- a/frontend/env.d.ts
+++ b/frontend/env.d.ts
@@ -1 +1,7 @@
///
+///
+
+// 自动导入的类型定义
+///
+///
+///
diff --git a/frontend/package.json b/frontend/package.json
index 8ce5afd..7a0459a 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -45,6 +45,9 @@
"npm-run-all2": "^8.0.4",
"prettier": "3.6.2",
"typescript": "~5.9.0",
+ "unplugin-auto-import": "^20.2.0",
+ "unplugin-vue-components": "^30.0.0",
+ "unplugin-vue-router": "^0.16.1",
"vite": "^7.1.11",
"vite-plugin-vue-devtools": "^8.0.3",
"vitest": "^3.2.4",
diff --git a/frontend/src/main.ts b/frontend/src/main.ts
index 5dcad83..cb1d5fa 100644
--- a/frontend/src/main.ts
+++ b/frontend/src/main.ts
@@ -1,10 +1,17 @@
import './assets/main.css'
+import 'ant-design-vue/dist/reset.css'
import { createApp } from 'vue'
import { createPinia } from 'pinia'
+import { createRouter, createWebHistory } from 'vue-router'
+import { routes } from 'vue-router/auto-routes'
import App from './App.vue'
-import router from './router'
+
+const router = createRouter({
+ history: createWebHistory(import.meta.env.BASE_URL),
+ routes,
+})
const app = createApp(App)
diff --git a/frontend/src/pages/index.vue b/frontend/src/pages/index.vue
new file mode 100644
index 0000000..90ae633
--- /dev/null
+++ b/frontend/src/pages/index.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
欢迎来到 DataFlow
+
数据管理平台
+
+
+
+
+
+
+
diff --git a/frontend/src/pages/login.vue b/frontend/src/pages/login.vue
new file mode 100644
index 0000000..ef6ff3c
--- /dev/null
+++ b/frontend/src/pages/login.vue
@@ -0,0 +1,231 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 登录
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/pages/register.vue b/frontend/src/pages/register.vue
new file mode 100644
index 0000000..2d3329d
--- /dev/null
+++ b/frontend/src/pages/register.vue
@@ -0,0 +1,252 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 注册
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts
index e4ae87c..bf58197 100644
--- a/frontend/vite.config.ts
+++ b/frontend/vite.config.ts
@@ -6,13 +6,58 @@ import vueJsx from '@vitejs/plugin-vue-jsx'
import vueDevTools from 'vite-plugin-vue-devtools'
import tailwindcss from '@tailwindcss/vite'
+import VueRouter from 'unplugin-vue-router/vite'
+import { VueRouterAutoImports } from 'unplugin-vue-router'
+import AutoImport from 'unplugin-auto-import/vite'
+import Components from 'unplugin-vue-components/vite'
+import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'
+
// https://vite.dev/config/
export default defineConfig({
plugins: [
+ // VueRouter 必须放在 vue() 之前
+ VueRouter({
+ routesFolder: 'src/pages',
+ dts: 'src/typed-router.d.ts',
+ }),
+
vue(),
vueJsx(),
vueDevTools(),
tailwindcss(),
+
+ // 自动导入 Vue API、VueRouter API 等
+ AutoImport({
+ imports: [
+ 'vue',
+ 'pinia',
+ VueRouterAutoImports,
+ {
+ 'ant-design-vue': [
+ 'message',
+ 'notification',
+ 'Modal',
+ ],
+ },
+ ],
+ dts: 'src/auto-imports.d.ts',
+ dirs: [
+ 'src/stores',
+ 'src/composables',
+ ],
+ vueTemplate: true,
+ }),
+
+ // 自动导入组件
+ Components({
+ resolvers: [
+ AntDesignVueResolver({
+ importStyle: false, // 使用 CSS,不导入 less
+ }),
+ ],
+ dts: 'src/components.d.ts',
+ dirs: ['src/components'],
+ }),
],
resolve: {
alias: {