vue封装组件以及调用

本文展示了如何在Vue中创建一个名为EditDialog的组件,用于编辑对话框功能。组件包含一个模板,用于显示包含标题名称、标题类型、元素类型和必填选项的表单,并提供提交和重置表单的方法。EditDialog接受一个表格数组作为属性,并通过`relationFrom`方法接收行数据来初始化表单。
摘要由CSDN通过智能技术生成

1.

index.js

export { default as addDialog } from './addDialog'
export { default as EditDialog } from './EditDialog'

editDialog.vue

<template>
    <div><el-dialog
      title="编辑"
      :visible.sync="dialogVisible"
      width="40%"
      custom-class="custonStyle">
      <el-row>
        <el-col :span="24">
          <el-form ref="addTagData" :model="tableData" :rules="rules" label-width="120px">
            <el-form-item label="标题名称" prop="title">
              <el-input v-model="tableData.title"></el-input>
            </el-form-item>
            <el-form-item label="标题类型" prop="titleType">
              <el-radio-group v-model="tableData.titleType">
                <el-radio label="0">企业</el-radio>
                <el-radio label="1">个人</el-radio>
              </el-radio-group>
            </el-form-item>
            <el-form-item label="元素类型" prop="eleType">
              <el-radio-group v-model="tableData.eleType">
                <el-radio label="0">复选</el-radio>
                <el-radio label="1">单选</el-radio>
              </el-radio-group>
            </el-form-item>
            <el-form-item label="必填" prop="unrequired">
              <el-radio-group v-model="tableData.unrequired">
                <el-radio label="0">是</el-radio>
                <el-radio label="1">否</el-radio>
              </el-radio-group>
            </el-form-item>
            <el-form-item>
              <el-button type="primary" @click="submitForm('addTagData')">提交</el-button>
              <el-button @click="resetForm('addTagData')">取消</el-button>
            </el-form-item>
          </el-form>
        </el-col>
      </el-row>
    </el-dialog></div>
</template>

<script>
    export default {
      props: {
        tableArray: {
          type:Array,
          default: ()=>[]
        }
      },
      data(){
        return {
          dialogVisible:false,
          tableData: { },
          rules: {
            title: [
              {required: true,message: '标题名称不能空',trigger: 'blur'},
            ],
          }
        }
      },
      methods:{
        //  弹出框编辑模型
        relationFrom(row){
          this.dialogVisible = !this.dialogVisible
          this.reset()
          this.tableData = Object.assign({},row)
          console.log(this.tableData)
        },
        // todo 规则重置
        // 表单重置
        reset() {
          if (this.$refs['addTagData']) {
            this.$refs['addTagData'].resetFields();
          }
        },
        //todo 提交
        submitForm(formName) {
          this.$refs[formName].validate((valid) => {
            if (valid) {
                   console.log(this.tableData)
            } else {
              this.$message.warning("添加失败,必填未写")
              return false;
            }
          });
        },
        resetForm(formName) {
          this.dialogVisible =!this.dialogVisible
          this.reset()
          // this.$refs[formName].resetFields();
        },
      }
    }
</script>
<style lang="scss" scoped>
  /deep/ .custonStyle .el-dialog__body{border-top: 1px solid #ccc;}
</style>

2.使用

<EditDialog ref="Edit"></EditDialog>
import {EditDialog} from './Popup/index'
components:{
  EditDialog,
},
methods: {
  //添加弹出框
  editRow(row){
    this.$refs.Edit.relationFrom(row)
  },
},
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值