Skip to content

自定义校验表单

点我查看正则列表使用方式

手机号
手机号
手机号
vue
<template>
  <FormGenerator ref="RefFormGenerator" v-bind="{ ...formAttrs }" />
</template>

<script lang="tsx" setup>
import { FormGenerator, GeneratorUtils } from 'element-plus-generator'
import type { FormAttrs, RefFormGenerator } from 'element-plus-generator/lib/type'
import type { FormItemRule } from 'element-plus'

import { RegExpMobilePhoneNunber } from 'common-rules'
import { ref } from 'vue'

const checkIphoneNum: FormItemRule['validator'] = (rule, value, callback) => {
  if (!value) return callback(new Error('请输入手机号'))
  if (!/(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/.test(value)) {
    return callback(new Error('手机格式有误'))
  }
  return callback()
}

const RefFormGenerator = ref<RefFormGenerator>()
const formAttrs = ref<FormAttrs>({
  model: {},
  formOption: [
    {
      type: 'input',
      formItem: {
        prop: 'phone1',
        label: '手机号',
        rules: {
          trigger: 'change',
          validator: checkIphoneNum
        }
      },
    },
    {
      type: 'input',
      formItem: {
        prop: 'phone2',
        label: '手机号',
        rules: {
          trigger: 'change',
          pattern: RegExpMobilePhoneNunber
        }
      },
    }, {
      type: 'input',
      formItem: {
        prop: 'phone3',
        label: '手机号',
        rules: {
          trigger: 'change',
          message: '自定义校验提示',
          pattern: /^(?:(?:\+|00)86)?1[3-9]\d{9}$/
        }
      },
    },
  ],
  onSubmit: () => {
    console.log(RefFormGenerator.value());
  }
})

GeneratorUtils.setRequired(formAttrs.value.formOption)
</script>