当前位置: 首页 > Web前端 > vue.js

用Vue.js做一个极简调查

时间:2023-03-31 23:34:31 vue.js

前言最近pm问我能不能做一个类似腾讯问卷之星的调查功能?即在PC端配置问卷,APP用户填写,填写保存后,即可查看自己的问卷信息。一开始我本着职业操守说了一句:我先看看腾讯问卷之星是怎么实现的,到时候再给大家答复。做了一些研究,觉得我可以做到。所以我同意了。过了几天,设计稿下来了,我开始着手制作。幸运的是,结果证明是成功的。话不多说,先看看效果吧。1:PC问卷配置页我们第一版的问卷配置页只有单选题、多选题和填空题。目前点击左侧的话题类型,右侧页面会生成相应的体型。大概的配置页面如下:简单说一下填空题的各种题型(其实页面和逻辑都比较简单,所以我就一笔带过了)选择题(单选题问题也有更多的选项描述和分数,以及更改位置或删除当前选项的操作按钮)选择题(与单选基本相同,但用户可以选择多个选项)2:pc问卷配置的特殊跳题页面目前我们支持3种跳转方式来满足不同用户的需求,跳转到指定页面并根据选项跳转到页面和定制方案(为特殊用户提供定制方案来推广自己的产品,当然这个有点需要另外收钱)。目前问卷配置页面已经完成,用户可以根据自己的需求配置问卷。配置问卷后,用户可以在APP中回答问卷。3:app问卷PC配置页面出来后,填写app,大概页面如下。4:我遇到的问题是做问卷的时候一帆风顺,没有专门的跳转,但是在做专门的页面调整的时候卡住了。比如用户从第三页跳到第六页。怎么才能让Ta从第六页回到第三页而不是第五页呢,因为我一开始是根据下标来判断问卷的页数的。当时纠结了一阵子,然后用一个数组记录下标,通过上一步和下一步维护这个类似栈的数组。上一步和下一步的相关代码:if(step===1){for(letquestionofthis.currentPage&&this.currentPage.questionList){letflag=falseletisRequired=falseif(question.optionList){for(letoptionItemofquestion.optionList){if(optionItem.checked){flag=true}if(optionItem.ifRequired){isRequired=true}}}if(!question.optionId&&!flag&&isRequired){Toast.start({info:'请填写所有选项',type:'error',time:1500})returnfalse}}if(this.currentSteps===this.MaxPageCount||this.currentPage.pageRedirectType==='CUSTOM_CONTENT'){this.save()返回false}if(this.currentPage.pageRedirectType==='CUSTOM_OPTION'){for(let[index,pageItem]ofthis.questionPageList.entries()){if(this.pageId===pageItem.pageId){this.currentSteps=index返回false}}}if(this.currentPage.pageRedirectType==='CUSTOM_PAGE'){for(let[index,pageItem]ofthis.questionPageList.entries()){if(this.currentPage.pageRedirectPageId===pageItem.pageId){这个。currentSteps=indexreturnfalse}}}this.currentSteps=this.currentSteps+1}else{this.stepsArr=this.stepsArr.slice(0,-1)this.currentSteps=this.stepsArr.pop()}总结这份问卷提出需求的时候,其实有些人在技术讨论的时候并没有考虑到。我们领导问我是一页一页交还是一起交。毕业一年了,希望自己不要盲目自信,多总结经验,多积累技能。多向大佬学习。路漫漫其修远兮,我们一起加油。