美文网首页
element实现Dialog对话框中嵌套form表单(实现添加

element实现Dialog对话框中嵌套form表单(实现添加

作者: 刘其瑞 | 来源:发表于2019-06-06 17:02 被阅读0次

    // 弹出Dialog对话框按钮

    <el-button type="primary" @click="dialogTableVisible = true">添加用户</el-button>
    

    @close="addDialogClose" // 关闭弹框的回调(用于清空表单)
    :visible.sync="dialogTableVisible" // 弹框是否开启
    :close-on-click-modal="false" // 是否可以通过点击任意位置关闭Dialog弹框

    <!-- 添加用户弹框 -->
        <el-dialog
          title="添加用户"
          @close="addDialogClose"
          :visible.sync="dialogTableVisible"
          :close-on-click-modal="false"
        >
        <!-- 添加用户的表单 -->
          <el-form ref="addFormRef" :rules="rulesAddUser" :model="addUser" label-width="100px">
            <el-form-item prop="username" label="用户姓名">
              <el-input v-model="addUser.username"></el-input>
            </el-form-item>
            <el-form-item prop="password" label="用户密码">
              <el-input v-model="addUser.password"></el-input>
            </el-form-item>
            <el-form-item prop="email" label="用户邮箱">
              <el-input v-model="addUser.email"></el-input>
            </el-form-item>
            <el-form-item prop="mobile" label="用户手机号">
              <el-input v-model="addUser.mobile"></el-input>
            </el-form-item>
            <el-form-item>
              <el-button @click="dialogTableVisible = false">取消</el-button>
              <el-button type="primary" @click="onAddUser">确定</el-button>
            </el-form-item>
          </el-form>
        </el-dialog>
    
      data() {
        // 自定义一个手机号验证规则
        var checkMoblie = (rule, value, callback) => {
          if (!value.trim()) {
            return callback(new Error('请输入手机号'))
          }
          if (!/^1[34578]\d{9}$/.test(value)) {
            return callback(new Error('手机号有误!请重填'))
          } else {
            callback()
          }
        }
        return {
          dialogTableVisible: false, // 添加用户弹框
          // 添加用户
          addUser: {
            username: '',
            password: '',
            email: '',
            mobile: ''
          },
          // 验证规则
          rulesAddUser: {
            username: [
              { required: true, message: '请输入用户名', trigger: 'blur' }
            ],
            password: [
              { required: true, message: '请输入用户密码', trigger: 'blur' }
            ],
            email: [
              { required: true, message: '请输入邮箱', trigger: 'blur' },
              {
                type: 'email',
                message: '请输入正确的邮箱地址',
                trigger: ['blur', 'change']
              }
            ],
            mobile: [
              { required: true, message: '请输入手机号', trigger: 'blur' },
              { validator: checkMoblie, trigger: 'blur' }
            ]
          }
        }
      }
    

    或者对单行进行校验

    <el-form-item
        prop="email"
        label="邮箱"
        :rules="[
          { required: true, message: '请输入邮箱地址', trigger: 'blur' },
          { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
        ]"
      >
        <el-input v-model="addUser.email"></el-input>
      </el-form-item>
    
    methods: {
        // 关闭弹框的回调
        addDialogClose() {
          this.$refs.addFormRef.resetFields() // 清空表单
        },
        // 点击添加用户
        onAddUser() {
          this.$refs.addFormRef.validate(async valid => {
            if (!valid) return null  // 如果验证失败就不往下继续执行
            const { data: res } = await this.$http.post('users', this.addUser)
            if (res.meta.status !== 201) return this.$message.error(res.meta.msg)
            this.$message.success('添加成功')
            this.dialogTableVisible = false  // 关闭弹框
            this.$refs.addFormRef.resetFields() // 清空表单
            this.getUserList() // 重新调用,刷新表单
          })
        },
    

    相关文章

      网友评论

          本文标题:element实现Dialog对话框中嵌套form表单(实现添加

          本文链接:https://www.haomeiwen.com/subject/gbquxctx.html