当前位置:   article > 正文

Vue3.2+TypeScript管理模块记录1-登录模块_vue3 typescript 登录页面

vue3 typescript 登录页面

1.登录模块效验

rules:规则对象属性:
  required,代表这个字段务必要校验的
  min:文本长度至少多少位
  max:文本长度最多多少位
  message:错误的提示信息
  trigger:触发校验表单的时机 change->文本发生变化触发校验,blur:失去焦点的时候触发校验规则 

  //保证全部表单相校验通过再发请求

   await loginForms.value.validate();

  1. 1<template>
  2. <div class="login_container">
  3. <!-- xs表示设备小于等于768的时候 占多少份-->
  4. <el-row>
  5. <el-col :span="12" :xs="0"></el-col>
  6. <el-col :span="12" :xs="24">
  7. <el-form class="login-form" :model="loginForm" :rules="rules" ref="loginForms">
  8. <h1>Hello</h1>
  9. <h2>欢迎来到赤火管理系统</h2>
  10. <!-- 账号-->
  11. <el-form-item prop="username">
  12. <el-input :prefix-icon="User" v-model="loginForm.username"></el-input>
  13. </el-form-item>
  14. <!-- 密码-->
  15. <el-form-item prop="password">
  16. <el-input class="login_brn" type="password" :prefix-icon="Lock" v-model="loginForm.password"
  17. show-password></el-input>
  18. </el-form-item>
  19. <el-form-item>
  20. <el-button :loading="loading" class="login_brn" type="primary" size="default"
  21. @click="login">登录</el-button>
  22. </el-form-item>
  23. </el-form>
  24. </el-col>
  25. </el-row>
  26. </div>
  27. </template>
  28. <script setup lang="ts">
  29. import { User, Lock } from '@element-plus/icons-vue';
  30. import { reactive, ref } from 'vue';
  31. import { useRouter } from 'vue-router';
  32. import { ElNotification } from 'element-plus';
  33. //引入用户相关的仓库
  34. import useUserStore from "@/store/modules/user";
  35. //引入获取当前时间的函数
  36. import { getTime } from '@/utils/time';
  37. //获取el-form组件
  38. let loginForms=ref();
  39. let useStore = useUserStore();
  40. //获取路由器
  41. let $router = useRouter();
  42. //定义变量控制按钮加载效果
  43. let loading = ref(false);
  44. //收集账号与密码的数据
  45. let loginForm = reactive({ username: 'admin', password: '111111' })
  46. //点击登录按钮回调
  47. const login = async () => {
  48. //保证全部表单相校验通过再发请求
  49. await loginForms.value.validate();
  50. //效果加载
  51. loading.value = true;
  52. //点击登录按钮以后干什么
  53. //通知仓库发登录请求
  54. //请求成功=》首页数据展示的地方
  55. //请求失败-》弹出登录失败信息
  56. try {
  57. //保证登录成功
  58. await useStore.userLogin(loginForm);
  59. //编程式导航跳转到首页
  60. $router.push('/');
  61. //登录成功的提示信息
  62. ElNotification({
  63. type: 'success',
  64. message: '登录成功',
  65. title: `Hi 欢迎回家${getTime()}好`
  66. })
  67. loading.value = false;
  68. } catch (error) {
  69. //登录失败 加载效果 消失
  70. loading.value = false
  71. //登录失败的提示信息
  72. ElNotification({
  73. type: 'error',
  74. message: (error as Error).message
  75. })
  76. }
  77. }
  78. //定义表单效验需要的配置对象
  79. const rules = {
  80. //规则对象属性:
  81. //required,代表这个字段务必要校验的
  82. //min:文本长度至少多少位
  83. //max:文本长度最多多少位
  84. //message:错误的提示信息
  85. //trigger:触发校验表单的时机 change->文本发生变化触发校验,blur:失去焦点的时候触发校验规则
  86. username: [
  87. { required: true, message: '用户名不能为空', trigger: 'blur' },
  88. { required: true, min: 6, max: 10, message: '账号长度至少6位', trigger: 'change' },
  89. ],
  90. password: [
  91. { required: true, min: 6, max: 15, message: '密码长度至少6位', trigger: 'change' },
  92. ]
  93. }
  94. </script>

2.自定义效验规则

  1. //自定义效验规则函数
  2. const validatorUserName=(rule:any,value:any,callback:any)=>{
  3. //rule:即为校验规则对象
  4. //value:即为表单元素文本内容
  5. //函数:如果符合条件callBack放行通过即为
  6. //如果不符合条件callBack方法,注入错误提示信息
  7. if (value.length >= 5) {
  8. callback();
  9. } else {
  10. callback(new Error('账号长度至少五位'));
  11. }
  12. }
  13. const validatorPassword = (rule: any, value: any, callback: any) => {
  14. if (value.length >= 6) {
  15. callback();
  16. } else {
  17. callback(new Error('密码长度至少六位'));
  18. }
  19. }
  20. //定义表单效验需要的配置对象
  21. const rules = {
  22. //规则对象属性:
  23. //required,代表这个字段务必要校验的
  24. //min:文本长度至少多少位
  25. //max:文本长度最多多少位
  26. //message:错误的提示信息
  27. //trigger:触发校验表单的时机 change->文本发生变化触发校验,blur:失去焦点的时候触发校验规则
  28. username: [
  29. // { required: true, message: '用户名不能为空', trigger: 'blur' },
  30. // { required: true, min: 6, max: 10, message: '账号长度至少6位', trigger: 'change' },
  31. {trigger:'change',validator:validatorUserName}
  32. ],
  33. password: [
  34. // { required: true, min: 6, max: 15, message: '密码长度至少6位', trigger: 'change' },
  35. {trigger:'change',validator:validatorPassword}
  36. ]
  37. }

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号