Blog
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)

HiuZing

🍑
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)
  • 前端面试题

  • JavaScript

  • Vue2

  • port

  • CSS

  • Node.js

  • JavaScript优化

  • uniapp

  • Mini Program

  • TypeScript

    • 基础

    • 实例

      • 登录表单
      • axios
  • 面向对象编程

  • UI组件

  • Plugin

  • Vue3

  • 性能优化

  • Axios

  • 状态管理

  • React

  • Mock

  • Icon

  • Template

  • 构建工具

  • 项目规范配置

  • Taro

  • SVG

  • React Native

  • 前端
  • TypeScript
  • 实例
HiuZing
2023-03-28

登录表单

此处用ElementPlus组件库

<template>
  <el-form ref="form" :rules="rules" :model="formInline" class="demo-form-inline">
    <el-form-item prop="user" label="账号">
      <el-input v-model="formInline.user" placeholder="请输入账号"/>
    </el-form-item>
    <el-form-item prop="password" label="密码">
      <el-input v-model="formInline.password" type="password" placeholder="请输入密码"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="onSubmit">Query</el-button>
    </el-form-item>
  </el-form>
</template>

<script lang="ts" setup>
import {reactive, ref} from 'vue'
import {useRouter} from "vue-router";
import type {FormItemRule, FormInstance} from "element-plus";
import {ElMessage} from "element-plus";

const router = useRouter()
// 定义表单输入类型
type Form = {
  user: string,
  password: string
}
    
// 定义规则类型
/*
*	key是Form对象里面,通过keyof进行编辑
*	value是ElementPlus中已定义的数组,通过import导入
*/
type Rules = {
  [k in keyof Form]?: Array<FormItemRule>
}

const formInline = reactive<Form>({
  user: '',
  password: '',
})
// FormInstance是实例
const form = ref<FormInstance>()
const rules = reactive<Rules>({
  user: [
    {
      required: true,
      message: "请输入账号",
      type: "string"
    }
  ],
  password: [
    {
      required: true,
      message: "请输入密码",
      type: "string"
    }
  ]
})


const onSubmit = () => {
  form.value?.validate((validate) => {
    if (validate) {
      router.push('/index')
      localStorage.setItem('token', '1')
    } else {
      ElMessage.error('请输入完整')
    }
  })
}
</script>

<style scoped>

</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
上次更新: 2025/12/17, 06:05:51
TypeScript项目配置
axios

← TypeScript项目配置 axios→

最近更新
01
分享社区
12-16
02
保存镜像
12-16
03
容器
12-13
更多文章>
Theme by Vdoing | Copyright © 2021-2025 WeiXiaojing | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式