利用后端传来的数组对象,与前端的数组对象不符合,进行处理赋值。从而能遍历动态生成每一项。
const res=[
{
"id": 22,
"itemName": 38,
"itemValue": {
"money": "12",
"conditionOne": "1|1|8",
"conditionTow": "3|3|4",
"conditionThree": "2|2|6"
}
},
{
"id": 23,
"itemName": 38,
"itemValue": {
"money": "12",
"conditionOne": "2|8|0",
"conditionTow": "10|0|0",
"conditionThree": "0|10|0"
}
}
]
const list=ref([])
const gettfmsg = async (obj: any) => {
const res = await GetTFsetListtAPI(obj)
tablelist.value = res.lists
listlength.value = res.lists.length
for (let index = 0; index < listlength.value; index++) {
const obj = {
id: res.lists[index].id,
type1: res.lists[index].itemName,
type2: res.lists[index].itemValue.money,
can1: res.lists[index].itemValue.conditionOne.split('|')[0],
can2: res.lists[index].itemValue.conditionOne.split('|')[1],
can3: res.lists[index].itemValue.conditionOne.split('|')[2],
can4: res.lists[index].itemValue.conditionTow.split('|')[0],
can5: res.lists[index].itemValue.conditionTow.split('|')[1],
can6: res.lists[index].itemValue.conditionTow.split('|')[2],
can7: res.lists[index].itemValue.conditionThree.split('|')[0],
can8: res.lists[index].itemValue.conditionThree.split('|')[1],
can9: res.lists[index].itemValue.conditionThree.split('|')[2]
}
list.value.push(obj)
}
console.log('列表数据', res)
console.log('列表长度', res.lists.length)
}
动态生成每一项
<div v-for="(item, index) in list" :key="index" class="mt-5">
<el-form ref="form" size="large">
<el-collapse-item :title="`投放费配置项${index + 1}`" :name="index">
<!-- 投放类型与基础投放费 -->
<div class="flex">
<el-form-item label="投放类型:" style="margin-left: 20px">
<el-select
v-model="item.type1"
placeholder="请选择"
style="width: 240px"
>
<el-option
v-for="item in options1"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="基础投放费:" style="margin-left: 20px">
<el-input
style="width: 200px"
v-model="item.type2"
placeholder="请输入投放费"
><template #append>元 / 张</template></el-input
>
</el-form-item>
</div>
<!-- 无条件 -->
<div class="flex justify-around items-center">
<el-form-item
label="无条件投放分配比例:广告分发商占比"
prop="name"
style="margin-left: 84px"
>
<el-input-number
placeholder="请输入内容"
style="width: 150px"
v-model="item.can1"
:precision="1"
:step="0.1"
:min="0"
:max="10"
/>
</el-form-item>
<el-form-item
label=" 平台占比"
prop="name"
style="margin-left: 20px"
>
<el-input-number
placeholder="请输入内容"
style="width: 150px"
v-model="item.can2"
:precision="1"
:step="0.1"
:min="0"
:max="10"
/>
</el-form-item>
<el-form-item
label=" 广告消费用户占比"
prop="name"
style="margin-left: 20px"
>
<el-input-number
placeholder="请输入内容"
style="width: 150px"
v-model="item.can3"
:precision="1"
:step="0.1"
:min="0"
:max="10"
/>
</el-form-item>
</div>
<!-- 符合任意1个条件投放分配比例 -->
<div class="flex justify-around items-center">
<el-form-item
label=" 符合任意1个条件投放分配比例:广告分发商占比"
prop="name"
style="margin-left: 20px"
>
<el-input-number
placeholder="请输入内容"
style="width: 150px"
v-model="item.can4"
:precision="1"
:step="0.1"
:min="0"
:max="10"
/>
</el-form-item>
<el-form-item
label=" 平台占比"
prop="name"
style="margin-left: 20px"
>
<el-input-number
placeholder="请输入内容"
style="width: 150px"
v-model="item.can5"
:precision="1"
:step="0.1"
:min="0"
:max="10"
/>
</el-form-item>
<el-form-item
label=" 广告消费用户占比"
prop="name"
style="margin-left: 20px"
>
<el-input-number
placeholder="请输入内容"
style="width: 150px"
v-model="item.can6"
:precision="1"
:step="0.1"
:min="0"
:max="10"
/>
</el-form-item>
</div>
<!-- 同时符合2个条件投放比例 -->
<div class="flex justify-around items-center">
<el-form-item
label="同时符合2个条件投放比例:广告分发商占比"
prop="name"
style="margin-left: 50px"
>
<el-input-number
placeholder="请输入内容"
style="width: 150px"
v-model="item.can7"
:precision="1"
:step="0.1"
:min="0"
:max="10"
/>
</el-form-item>
<el-form-item
label=" 平台占比"
prop="name"
style="margin-left: 20px"
>
<el-input-number
placeholder="请输入内容"
style="width: 150px"
v-model="item.can8"
:precision="1"
:step="0.1"
:min="0"
:max="10"
/>
</el-form-item>
<el-form-item
label=" 广告消费用户占比"
prop="name"
style="margin-left: 20px"
>
<el-input-number
placeholder="请输入内容"
style="width: 150px"
v-model="item.can9"
:precision="1"
:step="0.1"
:min="0"
:max="10"
/>
</el-form-item>
</div>
<div style="text-align: center" class="mt-5 mb-5">
<el-button type="primary" @click="serve(item)">{{
item.id ? '修改' : '保存'
}}</el-button>
</div>
<hr />
</el-collapse-item>
</el-form>
</div>