Vite-Vue3-TypeScript:011-登录界面搭建及动态路由配置
warning:
这篇文章距离上次修改已过201天,其中的内容可能已经有所变动。
<template>
<div class="login-container">
<!-- 登录表单 -->
<el-form ref="loginFormRef" :model="loginForm" :rules="loginRules">
<el-form-item prop="username">
<el-input v-model="loginForm.username" prefix-icon="el-icon-user" clearable></el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="loginForm.password"
prefix-icon="el-icon-lock"
show-password
clearable
></el-input>
</el-form-item>
<el-form-item class="login-btn">
<el-button type="primary" @click="submitForm">登录</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script lang="ts">
import { defineComponent, reactive, ref } from 'vue';
import { useRouter } from 'vue-router';
import { ElMessage } from 'element-plus';
interface LoginForm {
username: string;
password: string;
}
export default defineComponent({
setup() {
const loginFormRef = ref<HTMLElement | null>(null);
const loginForm = reactive<LoginForm>({
username: 'admin',
password: '123456',
});
const loginRules = {
username: [
{ required: true, message: '请输入用户名', trigger: 'blur' },
],
password: [
{ required: true, message: '请输入密码', trigger: 'blur' },
{ min: 6, max: 16, message: '密码长度在 6 到 16 个字符', trigger: 'blur' },
],
};
const router = useRouter();
const submitForm = () => {
(loginFormRef.value as any).validate((valid: boolean) => {
if (valid) {
ElMessage.success('登录成功');
// 登录成功后的逻辑,如存储token,跳转至首页等
// 此处模拟登录成功后进行路由跳转
router.push('/home');
} else {
ElMessage.error('登录失败');
return false;
}
});
};
return {
loginFormRef,
loginForm,
loginRules,
submitForm,
};
},
});
</script>
<style lang="scss" scoped>
.login-container {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
.login-btn {
width: 100%;
display: flex;
justify-content: center;
}
}
</style>
这个代码实例展示了如何使用Vue 3和Type
评论已关闭