当前位置: 首页 > news >正文

惠普电脑网站建设策划方案h5模板下载有哪些网站

惠普电脑网站建设策划方案,h5模板下载有哪些网站,沈阳网站建设求职简历,杭州网站制作建设一、功能需求 搭建一款消防安全培训答题小程序,大体上实现功能如下: 1.重要消防相关信息发布提醒; 2.培训课程库播放,文档的,加视频的; 3.题库、考试单选、多选、判断三类题 ; 4.考试成绩查…

一、功能需求

搭建一款消防安全培训答题小程序,大体上实现功能如下:

1.重要消防相关信息发布提醒;

2.培训课程库播放,文档的,加视频的;

3.题库、考试单选、多选、判断三类题 ;

4.考试成绩查询、输出表单 ;

5.单次培训:限时内完成,签到(手签名),限时内完成考试;

二、项目结构

使用微信开发者工具创建一个新的小程序项目,项目结构大致如下:

pages
├── index           // 首页,显示重要信息提醒
├── course          // 培训课程库页面
├── exam            // 考试页面
├── result          // 考试成绩查询页面
├── signin          // 单次培训签到页面

三、关键代码

实现一个基本的消防安全培训答题小程序,包含重要信息发布、培训课程库、题库考试、成绩查询和单次培训签到等功能。以下是一个消防安全培训答题小程序的实现思路及部分代码:

app.json

{"pages": ["pages/index/index","pages/course/course","pages/exam/exam","pages/result/result","pages/signin/signin"],"window": {"backgroundTextStyle": "light","navigationBarBackgroundColor": "#fff","navigationBarTitleText": "消防安全培训答题小程序","navigationBarTextStyle": "black"}
}

pages/index/index.wxml

<view class="container"><view class="notice" wx:for="{{notices}}" wx:key="*this">{{item}}</view><button bindtap="goToCourse">进入培训课程库</button><button bindtap="goToSignin">参加单次培训</button>
</view>

pages/index/index.js

Page({data: {notices: ["近期将开展消防安全培训,请及时参加!"]},goToCourse() {wx.navigateTo({url: '/pages/course/course'});},goToSignin() {wx.navigateTo({url: '/pages/signin/signin'});}
});

pages/course/course.wxml

<view class="container"><view class="doc-item" wx:for="{{documents}}" wx:key="*this"><text>{{item.title}}</text><button bindtap="openDoc" data-url="{{item.url}}">查看文档</button></view><video src="{{videoUrl}}" controls></video>
</view>

pages/course/course.js

Page({data: {documents: [{ title: "消防知识手册", url: "https://example.com/fire_manual.pdf" },{ title: "消防应急预案", url: "https://example.com/fire_plan.pdf" }],videoUrl: "https://example.com/fire_video.mp4"},openDoc(e) {const url = e.currentTarget.dataset.url;wx.downloadFile({url: url,success: function (res) {const filePath = res.tempFilePath;wx.openDocument({filePath: filePath,success: function (res) {console.log('打开文档成功');}});}});}
});

pages/exam/exam.wxml

<view class="container"><view wx:for="{{questions}}" wx:key="index"><view>{{item.question}}</view><view wx:if="{{item.type === 'single'}}" wx:for="{{item.options}}" wx:key="*this"><radio-group bindchange="onSingleAnswerChange" data-index="{{index}}"><radio value="{{item}}">{{item}}</radio></radio-group></view><view wx:if="{{item.type === 'multiple'}}" wx:for="{{item.options}}" wx:key="*this"><checkbox-group bindchange="onMultipleAnswerChange" data-index="{{index}}"><checkbox value="{{item}}">{{item}}</checkbox></checkbox-group></view><view wx:if="{{item.type === 'judge'}}"><radio-group bindchange="onJudgeAnswerChange" data-index="{{index}}"><radio value="true">正确</radio><radio value="false">错误</radio></radio-group></view></view><button bindtap="submitExam">提交考试</button>
</view>

pages/exam/exam.js

Page({data: {questions: [{question: "以下哪种灭火器适用于扑灭电器火灾?",type: "single",options: ["泡沫灭火器", "二氧化碳灭火器", "水基型灭火器"],answer: "二氧化碳灭火器"},{question: "消防设施包括以下哪些?",type: "multiple",options: ["灭火器", "消火栓", "应急照明"],answer: ["灭火器", "消火栓", "应急照明"]},{question: "火灾发生时,应尽快乘坐电梯逃生。",type: "judge",answer: "false"}],userAnswers: []},onSingleAnswerChange(e) {const index = e.currentTarget.dataset.index;const answer = e.detail.value;const userAnswers = this.data.userAnswers;userAnswers[index] = answer;this.setData({userAnswers});},onMultipleAnswerChange(e) {const index = e.currentTarget.dataset.index;const answer = e.detail.value;const userAnswers = this.data.userAnswers;userAnswers[index] = answer;this.setData({userAnswers});},onJudgeAnswerChange(e) {const index = e.currentTarget.dataset.index;const answer = e.detail.value;const userAnswers = this.data.userAnswers;userAnswers[index] = answer;this.setData({userAnswers});},submitExam() {const { questions, userAnswers } = this.data;let score = 0;for (let i = 0; i < questions.length; i++) {const question = questions[i];const userAnswer = userAnswers[i];if (Array.isArray(question.answer)) {if (userAnswer.sort().toString() === question.answer.sort().toString()) {score++;}} else {if (userAnswer === question.answer) {score++;}}}wx.setStorageSync('examScore', score);wx.navigateTo({url: '/pages/result/result'});}
});

pages/result/result.wxml

<view class="container"><view>您的考试成绩是:{{score}} 分</view><button bindtap="exportResult">导出成绩表单</button>
</view>

pages/result/result.js

Page({data: {score: 0},onLoad() {const score = wx.getStorageSync('examScore');this.setData({score});},exportResult() {// 这里可以实现导出表单的逻辑,如生成 PDF 等wx.showToast({title: '导出功能待实现',icon: 'none'});}
});

pages/signin/signin.wxml 

<view class="container"><canvas id="signCanvas" style="width: 300px; height: 200px;"></canvas><button bindtap="saveSignature">保存签名</button><button bindtap="startExam">开始考试</button>
</view>

pages/signin/signin.js

Page({data: {signature: ''},onLoad() {const ctx = wx.createCanvasContext('signCanvas');this.setData({ctx});},saveSignature() {const ctx = this.data.ctx;ctx.draw(false, () => {wx.canvasToTempFilePath({canvasId: 'signCanvas',success: (res) => {const signature = res.tempFilePath;this.setData({signature});wx.showToast({title: '签名保存成功',icon: 'success'});}});});},startExam() {if (this.data.signature) {wx.navigateTo({url: '/pages/exam/exam'});} else {wx.showToast({title: '请先完成签名',icon: 'none'});}}
});

http://www.dtcms.com/a/544545.html

相关文章:

  • 怎么做网站seo山东省旅游网站建设
  • web网页,在线%抖音,舆情%分析系统demo,基于python+web+echart+nlp+知识图谱,数据库mysql
  • 把浅色的pdf文件加深
  • Actix-Web 框架实战:构建高性能 RESTful API 服务
  • 边缘计算中针对不同类型的任务(如分类、回归)评估指标
  • 【16】C语言-编辑`task.json`文件以改变警告等级
  • Rust高性能优化与零拷贝技术深度实践
  • Linux-Redhat系统启动读取文件流程
  • React 10
  • 京东方 EV101WXM-N10 工业液晶模组技术摘要
  • Deep End-to-End Alignment and Refinement for Time-of-Flight RGB-D modules复现
  • Java-163 MongoDB 生产安全加固实战:10 分钟完成认证、最小权限、角色详解
  • MinIO 与云原生_现代化对象存储解决方案
  • 【C语言实战(63)】从0到1:51单片机GPIO控制实战秘籍
  • 金仓替代MongoDB:互联网医院聊天脱敏实战
  • 使用 ESLint + Prettier + Husky
  • mongodb备份脚本(单机+副本集)
  • 金仓数据库平替MongoDB全栈安全实战:从文档存储到多模一体化的演进之路
  • 基于k8s环境下mongodb备份恢复实战
  • 申威ky10架构安装MongoDB 4.0.1(rpm包:mongodb-4.0.1-8.ky10.sw_64.rpm)详细步骤
  • 网站建设开发语言和使用工具it培训套路
  • Diffusion Model与视频超分(2):解读字节开源视频增强模型SeedVR2
  • Linux小课堂: 系统硬件资源管理与设备操作指南
  • ROS2核心概念之代码示例一
  • 工厂考勤系统选型参考:如何选出最合适的方案
  • 【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
  • Linux错误(7)接口处于Down状态不通告IPv6地址变更事件
  • 开发避坑指南(67):Maven引入iText7-core依赖失败解决方案
  • 北京南站地图建设公司简介怎么写
  • 镇江网站建设平台江苏企业展厅设计公司