rule.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import { reactive } from "vue";
  2. import { isPhone } from "@pureadmin/utils";
  3. import type { FormRules } from "element-plus";
  4. import { $t, transformI18n } from "@/plugins/i18n";
  5. import { useUserStoreHook } from "@/store/modules/user";
  6. /** 6位数字验证码正则 */
  7. export const REGEXP_SIX = /^\d{6}$/;
  8. /** 密码正则(密码格式应为8-18位数字、字母、符号的任意两种组合) */
  9. export const REGEXP_PWD =
  10. /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)]|[()])+$)(?!^.*[\u4E00-\u9FA5].*$)([^(0-9a-zA-Z)]|[()]|[a-z]|[A-Z]|[0-9]){8,18}$/;
  11. /** 登录校验 */
  12. const loginRules = reactive<FormRules>({
  13. password: [
  14. {
  15. validator: (rule, value, callback) => {
  16. if (value === "") {
  17. callback(new Error(transformI18n($t("login.purePassWordReg"))));
  18. } else if (!REGEXP_PWD.test(value)) {
  19. callback(new Error(transformI18n($t("login.purePassWordRuleReg"))));
  20. } else {
  21. callback();
  22. }
  23. },
  24. trigger: "blur"
  25. }
  26. ],
  27. verifyCode: [
  28. {
  29. validator: (rule, value, callback) => {
  30. if (value === "") {
  31. callback(new Error(transformI18n($t("login.pureVerifyCodeReg"))));
  32. } else if (useUserStoreHook().verifyCode !== value) {
  33. callback(
  34. new Error(transformI18n($t("login.pureVerifyCodeCorrectReg")))
  35. );
  36. } else {
  37. callback();
  38. }
  39. },
  40. trigger: "blur"
  41. }
  42. ]
  43. });
  44. /** 手机登录校验 */
  45. const phoneRules = reactive<FormRules>({
  46. phone: [
  47. {
  48. validator: (rule, value, callback) => {
  49. if (value === "") {
  50. callback(new Error(transformI18n($t("login.purePhoneReg"))));
  51. } else if (!isPhone(value)) {
  52. callback(new Error(transformI18n($t("login.purePhoneCorrectReg"))));
  53. } else {
  54. callback();
  55. }
  56. },
  57. trigger: "blur"
  58. }
  59. ],
  60. verifyCode: [
  61. {
  62. validator: (rule, value, callback) => {
  63. if (value === "") {
  64. callback(new Error(transformI18n($t("login.pureVerifyCodeReg"))));
  65. } else if (!REGEXP_SIX.test(value)) {
  66. callback(new Error(transformI18n($t("login.pureVerifyCodeSixReg"))));
  67. } else {
  68. callback();
  69. }
  70. },
  71. trigger: "blur"
  72. }
  73. ]
  74. });
  75. /** 忘记密码校验 */
  76. const updateRules = reactive<FormRules>({
  77. phone: [
  78. {
  79. validator: (rule, value, callback) => {
  80. if (value === "") {
  81. callback(new Error(transformI18n($t("login.purePhoneReg"))));
  82. } else if (!isPhone(value)) {
  83. callback(new Error(transformI18n($t("login.purePhoneCorrectReg"))));
  84. } else {
  85. callback();
  86. }
  87. },
  88. trigger: "blur"
  89. }
  90. ],
  91. verifyCode: [
  92. {
  93. validator: (rule, value, callback) => {
  94. if (value === "") {
  95. callback(new Error(transformI18n($t("login.pureVerifyCodeReg"))));
  96. } else if (!REGEXP_SIX.test(value)) {
  97. callback(new Error(transformI18n($t("login.pureVerifyCodeSixReg"))));
  98. } else {
  99. callback();
  100. }
  101. },
  102. trigger: "blur"
  103. }
  104. ],
  105. password: [
  106. {
  107. validator: (rule, value, callback) => {
  108. if (value === "") {
  109. callback(new Error(transformI18n($t("login.purePassWordReg"))));
  110. } else if (!REGEXP_PWD.test(value)) {
  111. callback(new Error(transformI18n($t("login.purePassWordRuleReg"))));
  112. } else {
  113. callback();
  114. }
  115. },
  116. trigger: "blur"
  117. }
  118. ]
  119. });
  120. export { loginRules, phoneRules, updateRules };