我这里用了Collapse 折叠面板--
data里面的数据是这样的data:{form:{extraList:[ { tables: [] } ] } } 动态表单校验
这是部分代码 最下面是完整代码 表单里嵌套表格 可以新增每个表格
<el-form-item
v-show="!scope.row.buttonVisible"
:prop="'extraList.' + i + '.tables.'+scope.$index + '.componentMinPower'"
:rules="tables.componentMaxPower"
label-width="0"
>
<el-input
placeholder="请输入"
v-model="
form.extraList[i].tables[scope.$index].componentMinPower
"
clearable
type="number"
oninput="value=value.replace(/^0|[^0-9]/g,'');"
/>
</el-form-item>
<el-collapse style="margin-top: 20px">
<el-collapse-item v-for="(item, i) in form.extraList" :key="i">
<template slot="title">
<div
style="
display: flex;
justify-content: space-between;
align-items: center;
width: 90%;
"
@click.stop=""
>
<div
style="
display: flex;
justify-content: flex-start;
align-items: center;
"
>
<el-form-item
label="组件功率区间(W):"
style="margin: 0"
:prop="'extraList.' + i + '.minComValue'"
:rules="extraList.minComValue"
label-width="200px"
>
<el-input
type="number"
placeholder="请输入比例"
v-model="item.minComValue"
oninput="value=value.replace(/^0|[^0-9]/g,'');"
/>
</el-form-item>
<span style="margin: 0 5px">至</span>
<el-form-item
:prop="'extraList.' + i + '.maxComValue'"
:rules="extraList.maxComValue"
label-width="0"
style="margin: 0"
>
<el-input
type="number"
placeholder="请输入比例"
v-model="item.maxComValue"
oninput="value=value.replace(/^0|[^0-9]/g,'');"
/>
</el-form-item>
</div>
<div>
<el-button type="text" @click.stop="TableAddRow(i)"
>添加一行</el-button
>
<el-button type="text" @click="delClass(i)">删除</el-button>
</div>
</div>
</template>
<el-table
:data="item.tables"
ref="table"
row-key="keys"
style="width: 100%"
>
<el-table-column label="#" type="index" width="50">
</el-table-column>
<el-table-column
prop="province"
label="组件功率区间(W)"
align="center"
>
<template slot-scope="scope">
<div style="display: flex; justify-content: center">
<el-form-item
v-show="!scope.row.buttonVisible"
:prop="'extraList.' + i + '.tables.'+scope.$index + '.componentMinPower'"
:rules="tables.componentMaxPower"
label-width="0"
>
<el-input
placeholder="请输入"
v-model="
form.extraList[i].tables[scope.$index].componentMinPower
"
clearable
type="number"
oninput="value=value.replace(/^0|[^0-9]/g,'');"
/>
</el-form-item>
<el-form-item
v-show="!scope.row.buttonVisible"
:prop="'extraList.' + i + '.tables.'+scope.$index + '.componentMaxPower'"
:rules="tables.componentMaxPower"
label-width="0"
>
<div style="display: flex">
<span>至</span>
<el-input
placeholder="请输入"
clearable
type="number"
oninput="value=value.replace(/^0|[^0-9]/g,'');"
v-model="
form.extraList[i].tables[scope.$index]
.componentMaxPower
"
/>
</div>
</el-form-item>
<span v-show="scope.row.buttonVisible">
{{
form.extraList[i].tables[scope.$index].componentMinPower
? `${
form.extraList[i].tables[scope.$index]
.componentMinPower
}W至${
form.extraList[i].tables[scope.$index]
.componentMaxPower
}W`
: ""
}}
</span>
</div>
</template>
</el-table-column>
<el-table-column
prop="price"
label="激励价格(元/块)"
align="center"
>
<template slot-scope="scope">
<div style="display: flex; justify-content: center">
<el-form-item
v-show="!scope.row.buttonVisible"
:prop="'extraList.' + i + '.tables.'+scope.$index + '.price'"
:rules="tables.price"
label-width="0"
style="width: 60%"
>
<el-input
type="number"
placeholder="请输入"
clearable
v-model="form.extraList[i].tables[scope.$index].price"
oninput="value=value.replace(/^0|[^0-9]/g,'');"
></el-input>
</el-form-item>
<span v-show="scope.row.buttonVisible">{{
form.extraList[i].tables[scope.$index].price
}}</span>
</div>
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<div v-if="scope.row.buttonVisible">
<el-button
class="operation-item"
type="text"
@click="TableEdit(scope.$index, scope.row.buttonVisible, i)"
>编辑</el-button
>
<el-button
class="operation-item"
type="text"
@click="TableDelete(scope.$index, i)"
>删除</el-button
>
</div>
<div v-else>
<el-button
class="operation-item"
type="text"
@click="
TableCancel(scope.$index, scope.row.buttonVisible, i)
"
>取消</el-button
>
<el-button
class="operation-item"
type="text"
@click="TableSave(scope.$index, scope.row.buttonVisible, i)"
>保存</el-button
>
</div>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
</el-collapse>