赞
踩
1.登录模块效验
rules:规则对象属性:
required,代表这个字段务必要校验的
min:文本长度至少多少位
max:文本长度最多多少位
message:错误的提示信息
trigger:触发校验表单的时机 change->文本发生变化触发校验,blur:失去焦点的时候触发校验规则
//保证全部表单相校验通过再发请求
await loginForms.value.validate();
- 1<template>
- <div class="login_container">
- <!-- xs表示设备小于等于768的时候 占多少份-->
- <el-row>
- <el-col :span="12" :xs="0"></el-col>
- <el-col :span="12" :xs="24">
- <el-form class="login-form" :model="loginForm" :rules="rules" ref="loginForms">
- <h1>Hello</h1>
- <h2>欢迎来到赤火管理系统</h2>
- <!-- 账号-->
- <el-form-item prop="username">
- <el-input :prefix-icon="User" v-model="loginForm.username"></el-input>
- </el-form-item>
- <!-- 密码-->
- <el-form-item prop="password">
- <el-input class="login_brn" type="password" :prefix-icon="Lock" v-model="loginForm.password"
- show-password></el-input>
- </el-form-item>
- <el-form-item>
- <el-button :loading="loading" class="login_brn" type="primary" size="default"
- @click="login">登录</el-button>
- </el-form-item>
- </el-form>
-
- </el-col>
- </el-row>
-
- </div>
- </template>
-
- <script setup lang="ts">
- import { User, Lock } from '@element-plus/icons-vue';
- import { reactive, ref } from 'vue';
- import { useRouter } from 'vue-router';
- import { ElNotification } from 'element-plus';
- //引入用户相关的仓库
- import useUserStore from "@/store/modules/user";
- //引入获取当前时间的函数
- import { getTime } from '@/utils/time';
- //获取el-form组件
- let loginForms=ref();
- let useStore = useUserStore();
- //获取路由器
- let $router = useRouter();
- //定义变量控制按钮加载效果
- let loading = ref(false);
- //收集账号与密码的数据
- let loginForm = reactive({ username: 'admin', password: '111111' })
- //点击登录按钮回调
- const login = async () => {
- //保证全部表单相校验通过再发请求
- await loginForms.value.validate();
-
- //效果加载
- loading.value = true;
- //点击登录按钮以后干什么
- //通知仓库发登录请求
- //请求成功=》首页数据展示的地方
- //请求失败-》弹出登录失败信息
- try {
- //保证登录成功
- await useStore.userLogin(loginForm);
- //编程式导航跳转到首页
- $router.push('/');
- //登录成功的提示信息
- ElNotification({
- type: 'success',
- message: '登录成功',
- title: `Hi 欢迎回家${getTime()}好`
- })
- loading.value = false;
- } catch (error) {
- //登录失败 加载效果 消失
- loading.value = false
- //登录失败的提示信息
- ElNotification({
- type: 'error',
- message: (error as Error).message
- })
- }
-
- }
- //定义表单效验需要的配置对象
- const rules = {
- //规则对象属性:
- //required,代表这个字段务必要校验的
- //min:文本长度至少多少位
- //max:文本长度最多多少位
- //message:错误的提示信息
- //trigger:触发校验表单的时机 change->文本发生变化触发校验,blur:失去焦点的时候触发校验规则
- username: [
- { required: true, message: '用户名不能为空', trigger: 'blur' },
- { required: true, min: 6, max: 10, message: '账号长度至少6位', trigger: 'change' },
- ],
- password: [
- { required: true, min: 6, max: 15, message: '密码长度至少6位', trigger: 'change' },
- ]
- }
-
-
- </script>
2.自定义效验规则
- //自定义效验规则函数
- const validatorUserName=(rule:any,value:any,callback:any)=>{
- //rule:即为校验规则对象
- //value:即为表单元素文本内容
- //函数:如果符合条件callBack放行通过即为
- //如果不符合条件callBack方法,注入错误提示信息
- if (value.length >= 5) {
- callback();
- } else {
- callback(new Error('账号长度至少五位'));
- }
-
- }
-
- const validatorPassword = (rule: any, value: any, callback: any) => {
- if (value.length >= 6) {
- callback();
- } else {
- callback(new Error('密码长度至少六位'));
- }
- }
-
- //定义表单效验需要的配置对象
- const rules = {
- //规则对象属性:
- //required,代表这个字段务必要校验的
- //min:文本长度至少多少位
- //max:文本长度最多多少位
- //message:错误的提示信息
- //trigger:触发校验表单的时机 change->文本发生变化触发校验,blur:失去焦点的时候触发校验规则
- username: [
- // { required: true, message: '用户名不能为空', trigger: 'blur' },
- // { required: true, min: 6, max: 10, message: '账号长度至少6位', trigger: 'change' },
- {trigger:'change',validator:validatorUserName}
- ],
- password: [
- // { required: true, min: 6, max: 15, message: '密码长度至少6位', trigger: 'change' },
- {trigger:'change',validator:validatorPassword}
- ]
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。