父组件内容:
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
};
},
},