Bläddra i källkod

zbytest003-2025-02-20 03:19:51

genlitex 2 månader sedan
förälder
incheckning
92271ad6e5

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/assets/index-Btspm7_H.css


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 4 - 0
dist/assets/index-Cuyca92y.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 4
dist/assets/index-malWbV8K.js


+ 1 - 0
dist/assets/index-rAtu8hxi.css

@@ -0,0 +1 @@
+#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50}nav{padding:30px}nav a{font-weight:700;color:#2c3e50}nav a.router-link-exact-active{color:#42b983}.home{height:100vh;width:100vw;display:flex;justify-content:center;align-items:center}.error-message[data-v-e678a075]{color:red;font-size:14px}

+ 2 - 2
dist/index.html

@@ -4,8 +4,8 @@
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>Prototype Design</title>
-    <script type="module" crossorigin src="/prototype/3000/assets/index-malWbV8K.js"></script>
-    <link rel="stylesheet" crossorigin href="/prototype/3000/assets/index-Btspm7_H.css">
+    <script type="module" crossorigin src="/ide/proxy/6004/assets/index-Cuyca92y.js"></script>
+    <link rel="stylesheet" crossorigin href="/ide/proxy/6004/assets/index-rAtu8hxi.css">
   </head>
   <body>
     <div id="app"></div>

+ 7 - 1
src/router/index.js

@@ -1,11 +1,17 @@
 import { createRouter, createWebHashHistory } from 'vue-router'
 import HomeView from '../views/HomeView.vue'
+import LoginView from '../views/LoginView.vue'
 
 const routes = [
   {
     path: '/',
-    name: 'home',
+    name: 'Home',
     component: HomeView
+  },
+  {
+    path: '/login',
+    name: 'Login',
+    component: LoginView
   }
 ]
 

+ 70 - 0
src/views/LoginView.vue

@@ -0,0 +1,70 @@
+<template>
+  <a-layout>
+    <a-layout-content :style="{ display: 'flex', justifyContent: 'center', alignItems: 'center', minHeight: '100vh', backgroundColor: '#f0f0f0' }">
+      <a-card title="欢迎回来" :style="{ width: '400px', boxShadow: '0 4px 8px rgba(0, 0, 0, 0.1)' }">
+        <a-form :model="formState" @finish="handleFinish">
+          <a-form-item label="用户名" name="username" :rules="[{ required: true, message: '请输入用户名' }]">
+            <a-input v-model:value="formState.username" placeholder="用户名"></a-input>
+          </a-form-item>
+          <a-form-item label="密码" name="password" :rules="[{ required: true, message: '请输入密码' }]">
+            <a-input-password v-model:value="formState.password" placeholder="密码"></a-input-password>
+          </a-form-item>
+          <a-form-item>
+            <a-checkbox v-model:checked="formState.remember">记住我</a-checkbox>
+          </a-form-item>
+          <a-form-item>
+            <a-button type="primary" html-type="submit" block>登录</a-button>
+          </a-form-item>
+          <a-form-item v-if="errorMessage" :validate-status="'error'">
+            <p class="error-message">{{ errorMessage }}</p>
+          </a-form-item>
+        </a-form>
+      </a-card>
+    </a-layout-content>
+  </a-layout>
+</template>
+
+<script>
+import { reactive, ref } from 'vue';
+import { useRouter } from 'vue-router';
+
+export default {
+  setup() {
+    const formState = reactive({
+      username: '',
+      password: '',
+      remember: false,
+    });
+    const errorMessage = ref('');
+    const router = useRouter();
+
+    const handleFinish = (values) => {
+      // Basic validation
+      if (!values.username || !values.password) {
+        errorMessage.value = '用户名和密码不能为空';
+        return;
+      }
+
+      // Simulated login logic
+      if (values.username === 'admin' && values.password === 'password') {
+        router.push({ name: 'Home' });
+      } else {
+        errorMessage.value = '用户名或密码错误';
+      }
+    };
+
+    return {
+      formState,
+      errorMessage,
+      handleFinish,
+    };
+  },
+};
+</script>
+
+<style scoped>
+.error-message {
+  color: red;
+  font-size: 14px;
+}
+</style>

Vissa filer visades inte eftersom för många filer har ändrats