简单粗暴直接上代码了,尽情享用吧
<div class="moudle-row" v-for="(item,index) in questionList" :key="index">
<!--单选-->
<div v-if="item.choicetype==1">
<h3 class="ask">{{index+1}}.{{item.subject}}</h3>
<ul>
<li v-for="(part,i) in item.optionList" class="moudle-option" :key="i">
<input :name="index" type="radio" :value="part.id" :id='id' v-model="picked[index]"/>
<label class="radiobox" :for='id' style="font-size:0.28rem;"> {{part.options}}</label>
</li>
</ul>
</div>
<!--多选-->
<div v-if="item.choicetype==2">
<h3 class="ask">{{index+1}}.{{item.subject}}</h3>
<ul>
<li v-for="(part,i) in item.optionList" class="moudle-option" :key="i">
<input type="checkbox" :value="part.id" :id='id' v-model="picked[index]"/>
<label class="radiobox" :for='id' style="font-size:0.28rem;"> {{part.options}}</label>
</li>
</ul>
</div>
</div>
data(){
return {
questionList:[],//问题集合
answerList: [],//答案集合
checkedValue:[],//所有选中值
checkboxList:[],
picked:{},
}
}
methods:{
getQuestion(){
var vm=this;
this.$api.post(this.baseUrl+'你的接口',{},(res)=>{
Indicator.close();
vm.questionList=res.data.data;
//处理选中时的数据处理格式
for(var i=0;i<this.questionList.length;i++){
this.picked[i]=[];
}
vm.questionList.forEach(function(item,index){
//设置默认属性,依此控制选中未选中状态
item.optionList.forEach((val,i)=>{
vm.$set(val,'checked',false)
})
})
},(err) => {
Toast({
message: "服务器异常",
position: 'middle',
duration: 1000
})
})
},
toSubmit(){
var vm=this;
var newArr=[];
//整理要传给后端的数据,依后端要求的格式处理
vm.questionList.forEach((item,index)=>{
newArr.push({
id:item.id,
options:[],
})
newArr[index].options=this.picked[index];
//单选时数据结构为字符串的处理成和多选一样的数组结构
if(item.choicetype==1&&this.picked[index].length!=0){
newArr[index].options=[this.picked[index]];
}
})
this.$api.post(this.baseUrl+'你的接口',{"onecase": JSON.stringify(newArr),},(res)=>{
Indicator.close();
if(res.data.code==200){
//你的逻辑
}
},err=>{
Toast({
message:'服务器异常',
position: 'middle',
duration: 1000
});
})
},
}
嘻嘻,copy完就跑?好歹点个赞嘛!