微信小程序在线考试项目开发-用户信息注册登录功能

news/2024/5/3 20:43:46/文章来源:https://blog.csdn.net/SmartJunTao/article/details/126809683

⭐️⭐️⭐️  作者:船长在船上
🚩🚩🚩  主页:来访地址船长在船上的博客
🔨🔨🔨  简介:CSDN前端领域优质创作者,资深前端开发工程师,专注前端开发,在CSDN总结工作中遇到的问题或者问题解决方法以及对新技术的分享,欢迎咨询交流,共同学习。

🔔🔔🔔   感谢:如果觉得博主的文章不错或者对你的工作有帮助或者解决了你的问题,可以关注、支持一下博主。如有疑问可以留言、评论,看到后会及时回复。

本项目会耗时一周到两周来完成,最近要又要辛苦加班了,项目给的时间不多,程序员太不容易了,做完项目调休好好休息一下!

此时此刻,记录一下项目实现。

小程序在线考试项目介绍:

技术选型:轻量、可靠的小程序 UI 组件库Vant2:Vant Weapp

项目功能:

  • 用户授权认证
  • 用户身份信息登记登录,身份信息查看,身份登记之后才能进行在线考试
  • 管理员模拟考试列表:
  1. 考试状态数据列表检索(待完成、评分中、已完成)
  • 考试过程:
  1. 选择要参加的考试类型
  2. 对多种类型的题目进行包括对单选题、多选题、判断题、填空题、问答题依次作答
  • 对于已完成的评分的考题进行查看:答题卡记录
  • 微信服务通知:根据当前用户绑定的微信账号身份(手机号、岗位、所属公司),所在公司有新发布的考题时,推送提醒,点击进入小程序答题页面

实现效果: 

 

 

 

 

小程序在线考试

目录

实现效果: 

小程序在线考试

1.安装Vant Weapp

通过npm 安装

 2.个人中心页面实现


1.安装Vant Weapp

  • 通过npm 安装

npm i @vant/weapp -S --production
  • 通过 yarn 安装 
yarn add @vant/weapp --production
  • 安装 0.x 版本
npm i vant-weapp -S --production 

使用vant组件:

{"usingComponents": {"van-field": "@vant/weapp/field/index","van-icon": "@vant/weapp/icon/index","van-popup": "@vant/weapp/popup/index","van-button": "@vant/weapp/button/index","van-toast": "@vant/weapp/toast/index"},"navigationBarTitleText":"考试系统"
}


 2.个人中心页面实现

myCenter.wxml

<view class="mycenter"><view class="textCenter">{{isDisabled==false?'您当前账号的身份信息':'请先登记您的身份信息'}}</view><view class="centerbox"><form bindsubmit="saveData"><view class="userName"><text class="nameText">员工姓名</text><van-field class="fieldName" value="{{ name }}" placeholder="请输入您的真实姓名" border="{{ false }}" bind:blur ="userNameInput" readonly="{{isDisabled==false?true:false}}"/></view><view class="userName"><text class="nameText" style="padding-left:36rpx">手机号</text><van-field class="fieldName" value="{{ phone }}" placeholder="请输入您的手机号" border="{{ false }}" bind:blur ="userPhoneInput" readonly="{{isDisabled==false?true:false}}"/></view><view class="userName"><text class="nameText">所属公司</text><van-field wx:if="{{isDisabled==false}}" class="fieldName" value="{{ company }}" placeholder="请选择您所属的公司" readonly border="{{ false }}"></van-field><van-field wx:else class="fieldName" value="{{ company }}" placeholder="请选择您所属的公司" readonly border="{{ false }}" right-icon="arrow-down" bind:click-input="handleDown"></van-field></view><van-button class="loginBtn" type="info" round block formType="submit" wx:if="{{isDisabled}}">确 定</van-button></form></view><van-popup show="{{ showPopup }}" custom-style="height: 40%" round position="bottom" closeable bind:close="closePopup"><view class="popuoContent"><view class="popup-li" wx:for="{{companyList}}" wx:key="id" data-item="{{item}}" bindtap="handleCompany">{{item.name}}</view></view></van-popup><van-toast id="van-toast" />
</view>

myCenter.js重要代码

引入Toast组件:

  • 页面一定再次引入引入,不引入 会不生效
  • myCenter.wxml页面记得加上<van-toast id="van-toast" />
import Toast from '@vant/weapp/toast/toast';

注意事项: 

  • 点击 确定按钮调用saveData()方法;
  • 选择公司列表利用van-popup弹窗实现;
  • 用户授权后检索是否登记过信息,如果登记过则跳转到考试列表页进行答题考试,显示tabbar;如果没有登记过则不显示tabbar,需要就进行用户信息登记,登记之后跳转考试列表页进行答题考试;
  • 当切换tabbar时候,进入该页面获取用户信息进行信息回显;确定按钮不显示,用户信息也不能在修改;

var app = getApp();
import Toast from '@vant/weapp/toast/toast';
import { getCompanySelectListOfApp ,//获取公司下拉列表examLogin,//考试身份登记信息examUserInfo,//检索登记getWxUserDetail
} from "../api/index";
Page({/*** 页面的初始数据*/data: {isShow:false,showPopup:false,name:'',phone:'',company:'',// companyValue:'',companyList:[],//公司列表companyId:"",isDisabled:true,//是否登记},handleDown(){this.setData({showPopup:true})},onConfirm(){this.setData({showPopup:false})},closePopup(){this.setData({showPopup:false})},handleCompany(e){const {id,name} = e.currentTarget.dataset.item;this.setData({company:name,companyId:id,showPopup:false})},userNameInput(e){this.setData({name:e.detail.value})},userPhoneInput(e){this.setData({phone:e.detail.value})},saveData(){if(this.data.name==""){Toast("请输入员工姓名");return;}else if(this.data.phone==""){Toast("请输入手机号");return;}else if(this.data.company==""){Toast("请选择所属公司");return;}let params ={openId:wx.getStorageSync('openId'),realName:this.data.name,phone:this.data.phone,companyId:this.data.companyId}console.log(params,"params")examLogin(params).then(res=>{if(res.code == 200){wx.showToast({ title: '登录成功', icon: 'success', duration: 2000,success:function(){wx.showTabBar({fail: function() {setTimeout(function() {wx.showTabBar()}, 500)}});setTimeout(()=>{wx.switchTab({url: "/pages/examList/index",});}, 500)}})}})},// 获取公司下拉列表getCompanySelectList(){getCompanySelectListOfApp().then(res=>{console.log(res)if(res.code == 200){this.setData({companyList:res.data,})}})},//检索是否登记handleExamUserInfo(){examUserInfo({openId:wx.getStorageSync('openId')}).then(res=>{// 如果登记了跳转考试页if(res.code==200){this.setData({isDisabled:false})wx.switchTab({url: '/pages/examList/index',})wx.showTabBar({fail: function() {setTimeout(function() {wx.showTabBar()}, 500)}});}else{this.setData({isDisabled:true})wx.hideTabBar({fail: function() {setTimeout(function() {wx.hideTabBar()}, 500)}});}}).catch(()=>{this.setData({isDisabled:true})wx.hideTabBar({fail: function() {setTimeout(function() {wx.hideTabBar()}, 500)}});})},// 获取用户信息getUserDetail(){getWxUserDetail({openId:wx.getStorageSync('openId')}).then(res=>{if(res.code==200){this.setData({name:res.data.userName,phone:res.data.phone,company:res.data.companyName,companyId:res.data.companyId,isDisabled:false})wx.showTabBar({fail: function() {setTimeout(function() {wx.showTabBar()}, 500)}});}else{this.setData({isDisabled:true})wx.hideTabBar({fail: function() {setTimeout(function() {wx.hideTabBar()}, 500)}});}}).catch(()=>{this.setData({isDisabled:true})wx.hideTabBar({fail: function() {setTimeout(function() {wx.hideTabBar()}, 500)}});})},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {this.getCompanySelectList();//公司列表},/*** 生命周期函数--监听页面初次渲染完成*/onReady: function () {},/*** 生命周期函数--监听页面显示*/onShow: function () {let that = this;that.getUserDetail();}})

未完待续.........

考试系统后台管理项目: 

  • vue考试系统后台管理项目-登录、记住密码功能
  • vue考试系统后台管理项目-接口封装调用
  • 小程序在线考试项目开发-用户授权、身份信息获取流程

👉👉👉  欢迎来访船长在船上的博客,文章持续更新;项目功能持续迭代,项目开发测试完成会把完整代码上传码云,请及时收藏关注,方便查看。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_6832.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ERAT读和写指令(eratre和eratwe)

ERAT管理指令 为了使hypervisor&#xff08;或 “bare-metal” operating system&#xff09;软件可以直接操作ERAT的entries&#xff0c;在A2 core中实现一组nonarchitected的ERAT管理指令。为了防止user和guest模式下的程序影响TLB地址转换和访问控制机制&#xff0c;所有的E…

乐高广告创意50例——创意无砖

乐高的创意不仅仅局限于建造令人惊叹的建筑,或是拍摄定格电影,甚至是重新制作音乐专辑封面和电影海报,它甚至延伸到了广告领域。 与塑料砖一样,乐高可以采用最简单的概念,做出强大、智能且通常诙谐的声明。 从本图库中的精彩平面广告中,你可以看到,典型的乐高广告所采用…

《Python3 网络爬虫开发实战》:灵巧好用的 正则表达式

灵巧好用的 正则表达式 在上一节中&#xff0c;我们已经可以用 requests 来获取网页的源代码&#xff0c;得到 HTML 代码。但我们真正想要的数据是包含在 HTML 代码之中的&#xff0c;怎么才能从 HTML 代码中获取我们想要的信息呢&#xff1f;正则表达式就是其中一个有效的方法…

基于VC++的WEB浏览器的实现

目 录 摘 要 2 1设计题目与要求 2 2系统设计 2 2.1总体设计 2 2.2详细设计 2 2.2.1用户界面设计 3 2.2.2多标签模块设计 6 2.2.3浏览模块设计 6 2.2.4操作按钮模块设计 9 2.2.5页面缩放模块设计 10 2.2.6状态栏模块设计 11 2.2.7收藏夹模块设计 13 2.2.8窗体关闭模块设计 13 2.…

网页设计中蒸汽朋克的美丽例子

即使你不熟悉蒸汽朋克这个词,你无疑已经通过流行文化被介绍到了这种设计现象。蒸汽朋克指的是一种异想天开的风格,这种风格基于对19世纪可能的反乌托邦世界的想象。这听起来可能有点复杂,但这个折衷的类别将H.G.威尔斯的想法与维多利亚时代的设计、工业主义主题、后世界末日…

第3章 基础项目的搭建

3.1 后端项目搭建 3.1.1 gitee下载脚手架 下载地址&#xff1a;https://gitee.com/77jubao2015/springbootdemo 打开浏览器输入以上地址&#xff0c;点击下载即可&#xff0c;如图所示&#xff1a; 3.1.2 把脚手架导入到idea开发工具 步骤01 把下载后的脚手架放到指定位置并解…

数据库基本概念

目录 一、数据库概念 1、数据库的组成 &#xff08;数据为行&#xff0c;字段为列&#xff09; 2、数据库的管理系统&#xff08;DBMS) 二、数据库系统发展史 1、第一代数据库&#xff08;人工管理&#xff09; 2、第二代数据库&#xff08;文件管理&#xff09; 3、第三…

大学SQLServer2012 安装流程+启动+登录+用户的操作

这里写目录标题第一步下载解压的文件第二步骤安装软件第三步执行安装选项执行安装选项1执行安装选项2执行安装选项3 同意条款执行安装选项4配置检测执行安装选项5 下载需求组件执行安装选项6 上面安装完成后执行安装选项需求---关闭防火墙执行安装选项7--重新检测执行安装选项8…

SpringMVC基础:AJAX发送请求

AJAX请求 前面我们讲解了如何向浏览器发送一个JSON格式的数据&#xff0c;那么我们现在来看看如何向服务器请求数据。 Ajax即Asynchronous Javascript And XML&#xff08;异步JavaScript和XML&#xff09;&#xff0c;它的目标就是实现页面中的数据动态更新&#xff0c;而不是…

微服务--数据一致性

本篇文章讲解微服务数据一致性相关的知识 一、案例 在使用微服务时&#xff0c;存在跨多个服务更新数据库数据的情况。那么这就会出现一个问题&#xff0c;比如我们有三个服务&#xff08;如下图&#xff09;&#xff0c;正常情况下&#xff0c;当一个请求进来时&#xff0c;…

【软件与系统安全笔记】五、内存破坏防御

【软件与系统安全】五、内存破坏防御 这是《【软件与系统安全】笔记与期末复习》系列中的一篇 虽然对缓冲区溢出的认知已超过 40 年之久, 但缓冲区溢出仍未被消除。部分原因在于存在大量的利用选项&#xff1a; 多样的目标: 不仅仅可以利用返回地址, 实际上可以利用任意代码地…

JDK1.8中的Stream流源码中的常用方法全面解析附代码演示及源码展示

文章目录&#x1f4a8;更多相关知识&#x1f447;&#x1f342;allMatch&#x1f31f;代码演示&#x1f342;anyMatch&#x1f31f;代码演示&#x1f342;noneMatch&#x1f31f;代码演示&#x1f342;findFirst&#x1f31f;代码演示&#x1f342;findAny&#x1f31f;代码演示…

【愚公系列】2022年09月 微信小程序-WebGL纹理材质的使用

文章目录前言一、webgl的使用1.立体图形的绘制二、相关包源码三、总结前言 WebGL&#xff08;全写Web Graphics Library&#xff09;是一种3D绘图协议&#xff0c;这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起&#xff0c;通过增加OpenGL ES 2.0的一个JavaScrip…

[含毕业设计论文+PPT+源码等]ssm培训机构管理系统+Java后台管理系统|前后分离VUE

&#x1f496;&#x1f496;更多项目资源&#xff0c;最下方联系我们✨✨✨✨✨✨ 目录 微信小程序项目介绍 资料获取 微信小程序项目介绍 计算机毕业设计java毕设项目之微信小程序ssm培训机构管理系统小程序后台管理系统_哔哩哔哩_bilibili计算机毕业设计java毕设项目之微信…

基于Springboot健身会员俱乐部管理系统设计

开发技术&#xff1a; Idea Springboot Mysql 功能描述&#xff1a; 1 系统管理员模块的具体需求如下&#xff1a; &#xff08;1&#xff09;会员管理:系统管理员在本系统中拥有对会员进行管理的功能。包括会员的注册、个人信息的修改、会员的删除、变更和查询&#xff0c…

Linux——权限

目录 Linux权限的概念 Linux权限管理 文件访问者的分类 文件类型和访问权限 文件类型 基本权限 文件权限值的表示方法 文件访问权限的相关设置方法 目录的权限 粘滞位 关于权限的总结 Linux权限的概念 Linux下有两种用户&#xff1a;超级用户&#xff08;root&#xff09;、…

k8s 集群 使用yaml部署Tomcat方法

使用ymal部署Tomcat6 命令中&#xff0c;通过–dry-run选项&#xff0c;并不会真正的执⾏这条命令。 –dry-run‘none’: Must be “none”, “server”, or “client”. If client strategy, only print the object thatwould be sent, without sending it. If server strate…

计算机毕业设计之java+springboot基于vue的农机电招平台

计算机毕业设计之javaspringboot基于vue的农机电招平台 项目介绍 随着农机电招行业的不断发展,农机电招在现实生活中的使用和普及,农机电招行业成为近年内出现的一个新行业,并且能够成为大群众广为认可和接受的行为和选择。设计农机电招平台的目的就是借助计算机让复杂的销售操…

车企竞相“入股”元宇宙,美格智能着力打造制胜秘诀

2021年&#xff0c;元宇宙一夜爆红&#xff0c;引发社会各界关注。在“元宇宙”概念爆发初期&#xff0c;这个新概念下的产业与生态还是一片草莽。直到2021年底&#xff0c;在全社会的“元宇宙热”之下&#xff0c;各大企业才正式开启对元宇宙的竞相追逐&#xff0c;展开了元宇…

基于SSH的高校竞赛报名系统设计与实现

目录 1 需求分析 1 2 概要设计 1 &#xff08;1&#xff09;数据结构 1 &#xff08;2&#xff09; 模块划分 2 &#xff08;3&#xff09; 总体框架 2 &#xff08;4&#xff09;数据库设计&#xff1a; 2 ER图 2 数据库表结构&#xff1a; 3 3 详细设计 4 4 调试分析 6 5 测试…