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

父组件内容:

javascript 复制代码
		  <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);
        });
      });

子组件内容:

javascript 复制代码
<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
        };
      },
    },
相关推荐
像风一样自由20201 小时前
HTML与JavaScript:构建动态交互式Web页面的基石
前端·javascript·html
浪裡遊2 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
幽络源小助理2 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
Liudef063 小时前
2048小游戏实现
javascript·css·css3
鱼樱前端5 小时前
今天介绍下最新更新的Vite7
前端·vue.js
独立开阀者_FwtCoder6 小时前
【Augment】 Augment技巧之 Rewrite Prompt(重写提示) 有神奇的魔法
前端·javascript·github
我想说一句6 小时前
事件机制与委托:从冒泡捕获到高效编程的奇妙之旅
前端·javascript
汤姆Tom6 小时前
JavaScript reduce()函数详解
javascript
小飞悟6 小时前
你以为 React 的事件很简单?错了,它暗藏玄机!
前端·javascript·面试
中微子6 小时前
JavaScript 事件机制:捕获、冒泡与事件委托详解
前端·javascript