H5完整版问卷模板

//如图,根据简要需求拟写一个简单的问卷模板
1.顶部提示文案{根据需求跟换}
2.百分比进度条跟随当前作答进度而改变
3.当前题数/总题数
4.根据索引显示上一题下一题/提交资料

<html data-dpr="1" style="font-size: 37.52px;">
    <head>
        <title>问卷调查</title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta data-hid="description" name="description" content="">
        <meta name="wap-font-scale" content="no">
        <link rel="icon" href="./img/lw.ico" type="image/x-icon" />
        <link rel="stylesheet" href="css/question.css" />
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vant@2.12/lib/index.css" />
        <!-- 引入 Vue 和 Vant 的 JS 文件 -->
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/vant@2.9/lib/vant.min.js"></script>
    </head>
    <style>
        [v-clock] {
            display: none;
        }
    </style>
    <body style="font-size: 24px;">
        <div id="app" v-clock>
            <div class="main_html" v-clock>
                <div class="main-content" style="background:#fff;margin-top:0px;">
                    <div class="header-content">
                        <div class="content" v-clock>
                            <div class="self_test_warp">
                                <div class="self_test_title">
                                    答题期间终端回答,数据将不被保存
                                    本测评内容仅供参考,不作为诊断依据
                                </div>
                                <!-- 进度条 -->
                                <div class="schedule_wrapbox">
                                    <div class="schedule_wrap">
                                        <!-- :style="{'width':(Qindex+1+'0'+'%')}" -->
                                        <div class="cur_schedule" :style="{'width':(BFZ*(Qindex+1)+'%')}"></div>
                                    </div>
                                    <div class="Boxpress">
                                        100%
                                    </div>
                                </div>
                                <!-- end -->
                                <!-- 进度 -->
                                <div class="back_schedule_wrap" v-clock>
                                    <span>{{Qindex+1}}</span>/{{quesList.length}}
                                </div>
                                <div class="oboxtext" v-clock>
                                    已完成{{Qindex+1+'0'+'%'}}还剩{{quesList.length-(Qindex+1)}}道题
                                </div>
                           
                        </div>
                        <!--  -->
                        <div class="steepbox"> </div>
                        <div class="Qt-box">
                          
                                <!--  -->
                                <!-- 当前进度/总进度end -->
                                <div class="self_test_question" v-clock><span id="curQuestionTitle">{{Qindex+1}}.{{quesList[Qindex].title}}</span></div>
                                <!-- type:1 选项题  2填空题 -->
                                <ul class="self_test_main_wrap" v-if="quesList[Qindex].type==1">
                                    <li score="0" class="self_test_item self_test_normal" v-for="(item,index) in quesList[Qindex].answerList"
                                        @click="getRadio(index,index)" :class="[item.active?'self_test_select':'']">
                                        <div class="self_test_icon choose_normal" :class="[item.active?'choose_select':'']"></div>
                                        <div class="self_test_option" :style="{'color':(item.active?'#fff':'#333'),'border':(item.active?'1rpx solid #5D91F6':'1rpx solid #999')}">
                                            {{item.name}}
                                        </div>
                                    </li>
                                </ul>
                                <!-- 2填空题 -->
                                <div class="self_test_main_wrap" v-clock v-if="quesList[Qindex].type==2">
                                    <!-- 文本框 -->
                                    <div class="" v-clock>
                                        <textarea v-clock class="inputBox" rows="5" cols="5">{{quesList[Qindex].content}}</textarea>
                                    </div>
                                    <!-- end -->
                            
                                </div>
                                <!-- end -->
                                <!-- 操作 -->
                                <div class="self_test_back_wrap " v-clock>
                                    <span id="backTxt" v-if="Qindex>0" :class="[Qindex>0?'':'display_none']" @click="getBack">上一题</span>
                                    <span id="nextbtn" :class="[Qindex>0?'':'display_none']" @click="getnext" v-if="quesList[Qindex].type==2">下一题</span>
                                    <span id="backTxt" @click="getsubmit" v-if="Qend==1">提交测试</span>
                                </div>
                        </div>
                            <!-- end -->
                    </div>
                </div>
            </div>

            <script>
                new Vue({
                    el: '#app',
                    data: {
                        // 当前索引
                        Qindex: 0,
                        // 百分比进度
                        BFZ:0,
                        // 提交测试按钮显示状态
                        Qend: 0,
                        // 标题
                        title: "教你如何",
                        // 题型数据
                        quesList: [{
                                title: "教你如何走出心理阴影,重铸强大内心?",
                                type: 1, //1 选项题 2填空题
                                answerList: [{
                                    name: "选择我"
                                }, {
                                    name: "选择我"
                                }, {
                                    name: "选择我"
                                }, ]
                            },
                            {
                                type: 2,
                                title: "您是否有夜间睡眠打鼾及呼吸暂停的现象?",
                                content: "jhhh"
                            }, {
                                type: 1,
                                title: "您是否有如下症状:多饮、多尿、易饥,是否有餐前低血糖症状 ?",
                                answerList: [{
                                    name: "选择我"
                                }, {
                                    name: "选择我1项"
                                }, {
                                    name: "选择我2项"
                                }
                            }
                        ]

                    },

                    mounted() {
                     var that=this;
                     // 这里通过总题数计算百分比%
                     that.BFZ=100/(that.quesList.length);
                    },
                    methods: {
                        /**
                         * 返回上一题
                         *@param {Qindex}当前题目索引-1
                         * **/
                        getBack() {
                            var that = this;
                            if (that.Qindex > 0) {
                                that.Qindex = that.Qindex - 1;
                                that.Qend=0;
                            }
                            console.log("上一题长度", that.Qindex);
                        },
                        /**
                         * 下一题
                         * @param {Qindex}当前题目索引+1
                         */
                        getnext() {
                            var that = this;
                            that.Qindex = that.Qindex + 1;
                            console.log("下一题长度", that.Qindex);
                        },
                        /**
                         * 选中列表
                         * @param {index} 当前选中选项 
                         */
                        getRadio(item, index) {
                            var that = this;
                            // 获取到选择答案数据
                            var list = that.quesList[that.Qindex].answerList;
                            // 获取总题数长度
                            var Qlength = that.quesList.length;
                            //循环数组数据,判断是否选中
                            for (var i in list) {
                                if (index == i) {
                                    list[i].active = true;
                                    if (that.Qindex < Qlength - 1) {
                                        that.Qindex = that.Qindex + 1;
                                    }
                                    // 这里更新进度条
                                    console.log("获取长度1", that.Qindex);
                                    console.log("获取长度2", Qlength);

                                } else {
                                    list[i].active = false;
                                }
                            }
                            if (that.Qindex == Qlength - 1) {
                                console.log("~~~~这里到达最后一题~~~~~~");
                                // 设置显示提交按钮
                                that.Qend = 1;
                            } else {
                                // 关闭提交按钮
                                that.Qend = 0;
                            }
                            // 避免页面渲染无效
                            that.$forceUpdate();
                        },
                        /**提交数据**/
                        getsubmit() {
                            // 获取最终用户选中的数据
                            var that = this;
                            // that.quesList此数据是问题跟选项数组数据,选项中参数active为true,标识用户选中的数据
                            console.log("用户最终选中的数据====>", that.quesList);
                            that.$toast({
                               message:JSON.stringify(that.quesList),
                               forbidClick: true,
                             });

                        }

                    }
                })
            </script>
    </body>
</html>

 

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟老五

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值