• Vue3.2+TypeScript管理模块记录1-登录模块


    1.登录模块效验

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

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

       await loginForms.value.validate();

    1. 1
    2. <script setup lang="ts">
    3. import { User, Lock } from '@element-plus/icons-vue';
    4. import { reactive, ref } from 'vue';
    5. import { useRouter } from 'vue-router';
    6. import { ElNotification } from 'element-plus';
    7. //引入用户相关的仓库
    8. import useUserStore from "@/store/modules/user";
    9. //引入获取当前时间的函数
    10. import { getTime } from '@/utils/time';
    11. //获取el-form组件
    12. let loginForms=ref();
    13. let useStore = useUserStore();
    14. //获取路由器
    15. let $router = useRouter();
    16. //定义变量控制按钮加载效果
    17. let loading = ref(false);
    18. //收集账号与密码的数据
    19. let loginForm = reactive({ username: 'admin', password: '111111' })
    20. //点击登录按钮回调
    21. const login = async () => {
    22. //保证全部表单相校验通过再发请求
    23. await loginForms.value.validate();
    24. //效果加载
    25. loading.value = true;
    26. //点击登录按钮以后干什么
    27. //通知仓库发登录请求
    28. //请求成功=》首页数据展示的地方
    29. //请求失败-》弹出登录失败信息
    30. try {
    31. //保证登录成功
    32. await useStore.userLogin(loginForm);
    33. //编程式导航跳转到首页
    34. $router.push('/');
    35. //登录成功的提示信息
    36. ElNotification({
    37. type: 'success',
    38. message: '登录成功',
    39. title: `Hi 欢迎回家${getTime()}好`
    40. })
    41. loading.value = false;
    42. } catch (error) {
    43. //登录失败 加载效果 消失
    44. loading.value = false
    45. //登录失败的提示信息
    46. ElNotification({
    47. type: 'error',
    48. message: (error as Error).message
    49. })
    50. }
    51. }
    52. //定义表单效验需要的配置对象
    53. const rules = {
    54. //规则对象属性:
    55. //required,代表这个字段务必要校验的
    56. //min:文本长度至少多少位
    57. //max:文本长度最多多少位
    58. //message:错误的提示信息
    59. //trigger:触发校验表单的时机 change->文本发生变化触发校验,blur:失去焦点的时候触发校验规则
    60. username: [
    61. { required: true, message: '用户名不能为空', trigger: 'blur' },
    62. { required: true, min: 6, max: 10, message: '账号长度至少6位', trigger: 'change' },
    63. ],
    64. password: [
    65. { required: true, min: 6, max: 15, message: '密码长度至少6位', trigger: 'change' },
    66. ]
    67. }
    68. 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. }

  • 相关阅读:
    Qt OpenMP使用
    将彩色图转化为灰度图及其原理介绍
    Docker 单节点部署 Consul
    ez_pz_hackover_2016
    分享38个AI绘画网站
    沁恒CH9102是一个USB总线的转接芯片,实现USB转高速异步串口
    python selenium参数详解和案例实现
    北斗卫星:助力森林病虫害防治监测的革新技术
    Verilog仿真文件中的阻塞和非阻塞赋值问题探讨
    ArcGIS_标准差椭圆分析
  • 原文地址:https://blog.csdn.net/weixin_40746230/article/details/132856376