vue-antd对表单的简单封装

需求原因

  1. 在需求中大量出现表单,每次重写都有些费时,而且dom会很乱
  2. 功能基本类似,接受数据回显、发送数据

封装(仅做了常规input兼容)

<template>
  <div>
    <a-modal
      :title="formConfig.name"
      :visible="visible"
      @cancel="visible = false"
      @ok="submit()"
      width="600px"
      :mask-closable="false"
      :keyboard="false"
    >
      <a-form :form="form">
        <a-form-item
          v-bind="layout"
          v-for="(item,index) in formConfig.item"
          :key="index"
          :label="item.nameCn"
        >
          <a-input
            v-decorator="[item.name, {
              rules: [{required: true, message: `请输入${item.nameCn}`}]
            }]"
            :disabled="item.disabled"
          />
        </a-form-item>
      </a-form>
    </a-modal>
  </div>
</template>
<script>
export default {
  props: {
    formConfig: {
      required: true,
      type: Object
    }
  },
  data() {
    return {
      form: this.$form.createForm(this),
      visible: false,
      layout: { labelCol: { span: 6 }, wrapperCol: { span: 16 } }
    };
  },
  methods: {
    handleOpenForm(obj = []) {
      this.form.resetFields();
      this.visible = true;
      setTimeout(() => {
        this.form.setFieldsValue(obj);
      }, 100);
    },
    submit() {
      this.form.validateFields((err, values) => {
        if (err) {
          return;
        }
        this.$emit('submit', values);
      });
    }
  }
};
</script>

使用示例

<!-- 运维配置表单 -->
<easy-model-form
  :form-config="peonForm"
  ref="peonForm"
  @submit="submit"
/>

// 可以调整这里的属性来进行配置
const PEON_FORM = [
  {
    name: 'id',
    nameCn: 'id',
    disabled: true
  }, {
    name: 'tenant_id',
    nameCn: '租户id',
    disabled: true
  }, {
    name: 'peon_url',
    nameCn: 'peon_url',
    disabled: false
  }
];
data() {
  return {
    peonForm: {
        name: '运维配置表单',
        item: PEON_FORM
    }
  }
}

// 打开表单
this.$refs.peonForm.handleOpenForm(res.data);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值