单选,多选,可不选的问卷调查demo

简单粗暴直接上代码了,尽情享用吧

<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;">&nbsp;{{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;">&nbsp;{{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完就跑?好歹点个赞嘛!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nuiapp是一个公司管理用的小程序,其中涉及到人员择的审批工作流。官方的picker组件不支持多,无法满足场景使用需求。然而,通过参考一篇简书文章,可以实现多功能。在nuiapp中,可以通过增加一个单选和多的属性(mul)来实现择类型的切换。当单选时,中一个项会自动关闭择组件。另外,还可以增加一个禁用属性(pick_disable),当该属性等于1时,项不可点击。页面根据每个项的checked属性来判断是否中,所以每次改变勾状态都要设置被改变的项的checked属性,并更新列表。这样即使返回上一层,再进入当前层级时,中状态仍然会被保留。同时,列表中择状态的改变也会与底部的footer进行双联动。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [小程序公司部门人组件 树状单选实现](https://blog.csdn.net/lsz285481204/article/details/111873792)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [小程序人控件 - 仿企业微信实现多及多层级无规则嵌套](https://blog.csdn.net/weixin_34405332/article/details/87962255)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值