uniapp使用uview弹框页面 +通用表单+校验

<template>
  <up-modal
    :show="modelValue"
    title="信息"
    confirmText="提交"
    showCancelButton
    @confirm="confirm"
    @cancel="commonClick"
  >
    <up-form labelPosition="left" :model="form" :rules="rules" labelWidth="60" ref="formRef">
      <up-form-item label="姓名" prop="username">
        <up-input v-model="form.username"></up-input>
      </up-form-item>
      <up-form-item label="手机号" prop="mobile">
        <up-input v-model="form.mobile" type="number"></up-input>
      </up-form-item>
    </up-form>
  </up-modal>
</template>

<script setup lang="ts">
import { editUserInfo } from '@/services/project'
import { useUserInfo } from '@/stores'

const props = defineProps<{
  modelValue?: Boolean
}>()

const emit = defineEmits<{
  (e: 'update:modelValue', value: Boolean): void
}>()

const form = ref({
  username: '',
  mobile: '',
})

const rules = ref({
  username: [
    {
      required: true,
      message: '请输入姓名',
      trigger: ['blur', 'change'],
    },
  ],
  mobile: [
    {
      required: true,
      message: '请输入手机号',
      trigger: ['change', 'blur'],
    },
    {
      // 自定义验证函数,见上说明
      validator: (rule: any, value: any, callback: any) => {
        // 上面有说,返回true表示校验通过,返回false表示不通过
        // uni.$u.test.mobile()就是返回true或者false的
        return uni.$u.test.mobile(value)
      },
      message: '手机号码不正确',
      // 触发器可以同时用blur和change
      trigger: ['change', 'blur'],
    },
  ],
})

const formRef = ref<any>(null)

const useInfo = useUserInfo()

const commonClick = () => {
  emit('update:modelValue', false)
  formRef.value.resetFields()
}

const confirm = () => {
  formRef.value
    .validate()
    .then(async (valid: any) => {
      if (valid) {
        const res = await editUserInfo({ ...form.value, id: useInfo.userInfo.id })
        commonClick()
        useToast('提交成功')
      }
    })
    .catch(() => {
      // 处理验证错误
      console.log('验证错误')
    })
}
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值