vue多个动态表单拆分为组件以便维护案例

父组件内容:

		  <div
            v-for="(item, index) in form.payGiftLevelList"
            :key="item.key"
          >
            <div class="giftLevelWrap">
              <div style="margin-left: -40px">
                <reward-resource-form
                  ref="ActivityResource"
                />
              </div>
            </div>
          </div>
      async getResult() {
        const list = [];
        this.form.payGiftLevelList.map(async (item, index) => {
          const activityResource = this.$refs.ActivityResource[index].getData();
          list.push(activityResource);
        });
        const result = await Promise.all(list);
        console.log(result);
      },
      // 回显表单内容
      this.form.payGiftLevelList.forEach((it, index) => {
        this.$nextTick(() => {
          this.$refs.ActivityResource[index].setData(it);
        });
      });

子组件内容:

<template>
  <el-form
    :model="form"
    :rules="rules"
    :disabled="disabled"
    label-position="left"
    label-width="148px"
    ref="rewardResourceForm"
  >
    <el-form-item
      label=""
      required
    >
    <el-input-number
      v-model="form.useRuleMax"
      style="width: 80px; margin: 0 5px"
      :controls="false"
      :precision="0"
      size="mini"
      :min="1"
      :max="99999999"
      label="请输入购满金额"
    />
    </el-form-item>
    <el-form-item
      :label="actRuleBrand === 1 ? '阶梯权益' : '发放权益'"
      prop="data"
      :required="true"
    >
      <select-gift-checkbox
        v-model="form.data"
        :disabled-types="[]"
        :begin-end-time="beginEndTime"
      />
    </el-form-item>
  </el-form>
</template>

<script>
  export default {
    data() {
      return {
        form: {
          useRuleMax: '',
        },
        rules: {
          useRuleMax: [
            { required: true, message: '请输入购满金额', trigger: 'blur' }
          ],
        }
      };
    },
    methods: {
      getData() {
        return this.$refs.rewardResourceForm.validate().then((r) => {
          const {
            useRule,
            useRuleMax
          } = this.form;
          return {
            useRule,
            useRuleMax
          };
        });
      },
      setData(data) {
        // 转换成可用数组,直接转成一个数组
        const { useRule, useRuleMax, activityPayResDTO } = _.pick(data, [
          'useRule',
          'useRuleMax',
          'activityPayResDTO'
        ]);
        this.form = {
          data: activityPayResDTO,
          useRule,
          useRuleMax
        };
      },
    },
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值