Email.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <template>
  2. <div class="center">
  3. <div class="item account">
  4. <span class="icon">
  5. <img src="/login/Mail.png" alt="">
  6. </span>
  7. <input
  8. type="text"
  9. v-model="name"
  10. :placeholder="L['请输入邮箱']"
  11. class="input"
  12. @blur="validateEmail"
  13. autocomplete="off"
  14. />
  15. <div data-type="userName" class="cancel" @click="clearInputVal('name')">
  16. <span class="iconfont icon-cuowu"></span>
  17. </div>
  18. </div>
  19. <div class="error">
  20. <span
  21. v-if="emailErrorMsg"
  22. class="iconfont icon-jubao"
  23. ></span>
  24. {{ emailErrorMsg }}
  25. </div>
  26. <div class="item password">
  27. <span class="icon">
  28. <img src="/login/Password.png" alt="">
  29. </span>
  30. <input
  31. type="password"
  32. v-model="password"
  33. :placeholder="L['请输入密码']"
  34. class="input"
  35. autocomplete="new-password"
  36. />
  37. <div
  38. data-type="password"
  39. class="cancel"
  40. @click="clearInputVal('password')"
  41. >
  42. <span class="iconfont icon-cuowu"></span>
  43. </div>
  44. </div>
  45. <div class="error">
  46. <span
  47. v-if="errorMsg"
  48. class="iconfont icon-jubao"
  49. ></span>
  50. {{ errorMsg }}
  51. </div>
  52. <el-button
  53. @click="login"
  54. :class="{ submit: true, disabled: loginDisabled }"
  55. :disabled="loginDisabled"
  56. :loading="props.loginLoding"
  57. >{{ L["登录"] }}</el-button
  58. >
  59. </div>
  60. </template>
  61. <script setup>
  62. const props = defineProps({
  63. loginLoding: {
  64. type: Boolean,
  65. default: false
  66. },
  67. });
  68. const emits = defineEmits(["login"]);
  69. const errorMsg = ref(); //错误提示
  70. const name = ref(""); //账户
  71. const password = ref(""); //密码
  72. const emailCalc = ref();
  73. const pwdCalc = ref();
  74. const emailErrorMsg = ref("");
  75. const loginType = ref(1); //登陆类型:1-账号密码登陆,2-手机验证码登陆
  76. const L = getCurLanguage();
  77. const loginDisabled = computed(() => !name.value || !password.value);
  78. // 校验邮箱
  79. const validateEmail = () => {
  80. //邮箱非空的验证
  81. if (!name.value) {
  82. emailErrorMsg.value = L["请输入邮箱"];
  83. return false;
  84. }
  85. // 邮箱格式验证
  86. emailCalc.value = checkEmail(name.value);
  87. if (emailCalc.value !== true) {
  88. emailErrorMsg.value = emailCalc.value;
  89. return false;
  90. }
  91. emailErrorMsg.value = "";
  92. return true;
  93. };
  94. //清空输入框内容
  95. const clearInputVal = (type) => {
  96. if (type == "name") {
  97. name.value = "";
  98. } else if (type == "password") {
  99. password.value = "";
  100. }
  101. };
  102. const login = () => {
  103. let param = {};
  104. param.username = name.value;
  105. param.password = password.value;
  106. param.loginType = loginType.value;
  107. //邮箱验证
  108. if (!validateEmail()) return;
  109. //密码校验
  110. if (!param.password) {
  111. errorMsg.value = L["请输入密码"];
  112. return false;
  113. } else {
  114. pwdCalc.value = checkPwd(param.password);
  115. if (pwdCalc.value !== true) {
  116. errorMsg.value = pwdCalc.value;
  117. return false;
  118. }
  119. }
  120. errorMsg.value = "";
  121. emits("login", param);
  122. };
  123. const updateErrorMsg = (val) => {
  124. errorMsg.value = val
  125. }
  126. defineExpose({
  127. updateErrorMsg
  128. })
  129. </script>