rules.ts 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { formatString } from "@/core/utils/utils"
  2. export default function (key: string, arr?: Array<string | number>) {
  3. let rule = undefined
  4. if (arr) {
  5. let ruleFormat = rulesFormat[key]
  6. if (ruleFormat) {
  7. ruleFormat = formatString(ruleFormat, ...arr)
  8. //console.log("===>", ruleFormat)
  9. rule = JSON.parse(ruleFormat)
  10. }
  11. }
  12. //rulesFormat里没有找到再从rules找一下
  13. if (!rule) {
  14. rule = rules[key]
  15. }
  16. return rule
  17. }
  18. export const RULE_KEYS = {
  19. REQUIRED: "VB_REQUIRED",
  20. NUMBER: "VB_NUMBER",
  21. INT: "VB_INT",
  22. FLOAT: "VB_FLOAT",
  23. HEX: "VB_HEX",
  24. URL: "VB_URL",
  25. EMAIL: "VB_EMAIL",
  26. DATE: "VB_DATE",
  27. DATETIME: "VB_DATETIME",
  28. REQUIRED_NUMBER: "VB_REQUIRED_NUMBER",
  29. REQUIRED_INT: "VB_REQUIRED_INT",
  30. REQUIRED_FLOAT: "VB_REQUIRED_FLOAT",
  31. REQUIRED_HEX: "VB_REQUIRED_HEX",
  32. REQUIRED_URL: "VB_REQUIRED_URL",
  33. REQUIRED_EMAIL: "VB_REQUIRED_EMAIL",
  34. REQUIRED_DATE: "VB_REQUIRED_DATE",
  35. REQUIRED_DATETIME: "VB_REQUIRED_DATETIME",
  36. MIN: "VB_MIN",
  37. MAX: "VB_MAX",
  38. MIN_MAX: "VB_MIN_MAX",
  39. N_MIN: "VB_N_MIN",
  40. N_MAX: "VB_N_MAX",
  41. N_MIN_MAX: "VB_N_MIN_MAX",
  42. PATTERN: "VB_PATTERN",
  43. }
  44. export const rules = {
  45. VB_REQUIRED: { required: true, message: "必填", trigger: "blur" },
  46. VB_NUMBER: { type: "number", message: "请填写数字", trigger: ["blur"] },
  47. VB_INT: { type: "integer", message: "请填写整数", trigger: ["blur"] },
  48. VB_FLOAT: { type: "float", message: "请填写浮点数", trigger: ["blur"] },
  49. VB_HEX: { type: "hex", message: "请填写16进制数字", trigger: ["blur"] },
  50. VB_URL: { type: "url", message: "请填写正确的URL地址", trigger: ["blur"] },
  51. VB_EMAIL: { type: "email", message: "请填写正确的电子邮箱", trigger: ["blur"] },
  52. VB_DATE: { type: "date", message: "请选择日期", trigger: ["blur"] },
  53. VB_DATETIME: { type: "date", message: "请选择时间", trigger: ["blur"] },
  54. VB_REQUIRED_NUMBER: { type: "number", required: true, message: "请填写数字", trigger: ["blur"] },
  55. VB_REQUIRED_INT: { type: "integer", required: true, message: "请填写整数", trigger: ["blur"] },
  56. VB_REQUIRED_FLOAT: { type: "float", required: true, message: "请填写浮点数", trigger: ["blur"] },
  57. VB_REQUIRED_HEX: { type: "hex", required: true, message: "请填写16进制数字", trigger: ["blur"] },
  58. VB_REQUIRED_URL: [
  59. { type: "string", required: true, message: "请填写URL地址", trigger: "blur" },
  60. { type: "url", message: "请填写正确的URL地址", trigger: ["blur"] },
  61. ],
  62. VB_REQUIRED_EMAIL: [
  63. { type: "string", required: true, message: "请填写电子邮箱", trigger: "blur" },
  64. { type: "email", message: "请填写正确的电子邮箱", trigger: ["blur"] },
  65. ],
  66. VB_REQUIRED_DATE: { type: "date", required: true, message: "请选择日期", trigger: ["blur"] },
  67. VB_REQUIRED_DATETIME: { type: "date", required: true, message: "请选择时间", trigger: ["blur"] },
  68. }
  69. export const rulesFormat = {
  70. VB_REQUIRED: '{ "required": true, "message": "请填写{0}", "trigger": ["blur"] }',
  71. VB_MIN: '{"type": "string","min": {0}, "message": "至少{0}个字符", "trigger": ["blur"] }',
  72. VB_MAX: '{"type": "string","max": {0}, "message": "最多{0}个字符", "trigger": ["blur" ]}',
  73. VB_MIN_MAX: '{"type": "string","min": {0}, "max": {1}, "message": "长度在 {0} 到 {1} 个字符", "trigger": ["blur"]}',
  74. VB_N_MIN: '{"type": "number","min": {0}, "message": "最小{0}", "trigger": ["blur"] }',
  75. VB_N_MAX: '{"type": "number","max": {0}, "message": "最大{0}", "trigger": ["blur" ]}',
  76. VB_N_MIN_MAX: '{"type": "number","min": {0}, "max": {1}, "message": "请填写 {0} 到 {1} 的数字", "trigger": ["blur"]}',
  77. VB_PATTERN: '{"pattern": {0}, "message": "{1}", "trigger": ["blur"]}',
  78. }