广告
返回顶部
首页 > 资讯 > 精选 >微信小程序扫描二维码概念怎么实现
  • 625
分享到

微信小程序扫描二维码概念怎么实现

2023-06-26 09:06:28 625人浏览 泡泡鱼
摘要

这篇“微信小程序扫描二维码概念怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“微信小程序扫描二维码概念怎么实现”文章吧

这篇“微信小程序扫描二维码概念怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“微信小程序扫描二维码概念怎么实现”文章吧。

页面分析

  • 后台需要拿到开密码,然后显示在页面上

  • 我们需要一个定时器,规定多长时间用来检查单车是否损坏,这期间如果单车故障,可以点击回首页去车辆报障,当然也就取消了本次扫码。

  • 如果单车没有问题,检查时长完成后,自动跳转到计费页面

页面布局

  1. <!--pages/scanresult/index.wxml-->

  2. <view class="container">

  3.     <view class="passWord-title">

  4.         <text>开锁密码</text>

  5.     </view>

  6.     <view class="password-content">

  7.         <text>{{password}}</text>

  8.     </view>

  9.     <view class="tips">

  10.         <text>请使用密码解锁,{{time}}s后开始计费</text>

  11.         <view class="tips-action" bindtap="moveToWarn">

  12.             车辆有问题?

  13.             <text class="tips-href">回首页去车辆报障</text>

  14.         </view>

  15.     </view>

  16. </view>

微信小程序的页面元素有自己的一套名字,用的是weui设计风格,但是元素种类比较少,比如说<view>就代表着<div>,<text>是行内元素,<image>是图片标签等,所以页面标签这一块只要有html基础就很容易理解

页面样式

  1. .container{

  2.         width: 100%;

  3.         display: flex;

  4.         flex-direction: column;

  5.         align-items: center;

  6.         justify-content: space-between;

  7.         background-color: #fff;

  8. }

  9. .password-title,.tips{

  10.         width: 100%;

  11.         flex: 1;

  12.         text-align: center;

  13.         padding: 60rpx 0;

  14. }

  15. .password-content{

  16.         width: 100%;

  17.         flex: 8;

  18.         text-align: center;

  19.         font-size: 240rpx;

  20.         font-weight: 900;

  21. }

  22. .tips{

  23.         font-size: 32rpx;

  24. }

  25. .tips .tips-action{

  26.         margin-top: 20rpx;        

  27. }

  28. .tips .tips-href{

  29.         color: #b9dd08

  30. }

样式方面完全是CSS,注意这里的单位是rpx,是小程序为了自适应所有设备而设定的单位,按宽度为750px的设备计算,1rpx = 0.5px。其他比例换算可以看官方文档。
先来了解两个知识点:

  • 数据渲染页面:前面我们在地图组件中设置了数据模板,然后在js里通过服务器获取数据动态给模板数据赋值,每当js数据改变,页面就会重新渲染数据。所以核心思想是数据驱动页面。我们在结构里设置了数据模板{{time}},说明这个数据是需要我们去改变的,所以先在data对象里赋予初始值9(为了调试方便,特意把时间调的很短)

  • 为元素绑定事件:和传统html里不同,小程序页面为元素绑定事件不能操作元素,不然就违背了数据驱动页面的初衷,所以小程序在元素内声明一个变量如 bindtap="moveToWarn"来为指定元素绑定点击事件,然后在js里实现这个事件的功能。还可以绑定很多事件类型,更多可以查阅事件文档

先来回头看一下首页地图立即用车事件代码,如果当前没有在计费,将可以扫码,扫码成功后将会传递参数(密码和车牌号)并跳转到../scanresult/index,也就是本页面。

  1. // 地图控件点击事件

  2.   bindcontroltap: function(e){

  3.     // 判断点击的是哪个控件 e.controlId代表控件的id,在页面加载时的第3步设置的id

  4.     switch(e.controlId){

  5.       // 点击定位控件

  6.       case 1: this.movetoPosition();

  7.         break;

  8.       // 点击立即用车,判断当前是否正在计费

  9.       case 2: if(this.timer === "" || this.timer === undefined){

  10.           // 没有在计费就扫码

  11.           wx.scanCode({

  12.             success: (res) => {

  13.               // 正在获取密码通知

  14.               wx.showLoading({

  15.                 title: '正在获取密码',

  16.                 mask: true

  17.               })

  18.               // 请求服务器获取密码和车号

  19.               wx.request({

  20.                 url: 'https://www.easy-mock.com/mock/59098d007a878d73716e966f/ofodata/password',

  21.                 data: {},

  22.                 method: 'GET',

  23.                 success: function(res){

  24.                   // 请求密码成功隐藏等待框

  25.                   wx.hideLoading();

  26.                   // 携带密码和车号跳转到密码页

  27.                   wx.redirectTo({

  28.                     url: '../scanresult/index?password=' + res.data.data.password + '&number=' + res.data.data.number,

  29.                     success: function(res){

  30.                       wx.showToast({

  31.                         title: '获取密码成功',

  32.                         duration: 1000

  33.                       })

  34.                     }

  35.                   })           

  36.                 }

  37.               })

  38.             }

  39.           })

  40.         // 当前已经在计费就回退到计费页

  41.         }else{

  42.           wx.navigateBack({

  43.             delta: 1

  44.           })

  45.         }  

  46.         break;

  47.       // 点击保障控件,跳转到报障页

  48.       case 3: wx.navigateTo({

  49.           url: '../warn/index'

  50.         });

  51.         break;

  52.       // 点击头像控件,跳转到个人中心

  53.       case 5: wx.navigateTo({

  54.           url: '../my/index'

  55.         });

  56.         break;

  57.       default: break;

  58.     }

  59.   },

我们在js里面写下如下代码,本页面的options就是上面传递过来的参数。试试打印出来是什么!

  1. // pages/scanresult/index.js

  2. Page({

  3.   data:{

  4.     time: 9 // 默认计时时长,这里设短一点,用于调试,ofo app是90s

  5.   },

  6. // 页面加载

  7.   onLoad:function(options){

  8.     // 获取密码

  9.     this.setData({

  10.       password: options.password

  11.     })

  12.     // 设置初始计时秒数

  13.     let time = 9;

  14.     // 开始定时器

  15.     this.timer = setInterval(() => {

  16.       this.setData({

  17.         time: -- time // 倒计时

  18.       });

  19.       // 读完秒后携带单车号码跳转到计费页

  20.       if(time = 0){

  21.         clearInterval(this.timer)

  22.         wx.redirectTo({

  23.           url: '../billing/index?number=' + options.number

  24.         })

  25.       }

  26.     },1000)

  27.   },

  28. // 点击去首页报障

  29.   moveToWarn: function(){

  30.     // 清除定时器

  31.     clearInterval(this.timer)

  32.     wx.redirectTo({

  33.       url: '../index/index'

  34.     })

  35.   }

  36. })

当倒计时完成之后,就应该自动跳转到计费页

页面分析

  • 后台需要拿到单车编号,并显示在页面上

  • 我们需要一个计时器累加骑行事件用来计费,而且可以显示最大单位是小时

  • 两个按钮:结束骑行,回到地图 。其中,点击结束骑行,关闭计时器,根据累计时长计费;点击回到地图,如果计时器已经关闭了,就关闭计费页,跳转到地图。如果计时器仍然在计时,保留当前页面,跳转到地图。

  • 点击回到地图需要把计时器状态带给首页,首页做出判断,判定再次点击立即用车响应合理逻辑(已经在计费,不能重复扫码。已经停止计费了,需要重新扫码)

页面结构(看看我们哪些是数据模板?,为元素绑定了什么事件?)

  1. <!--pages/billing/index.wxml-->

  2. <view class="container">

  3.     <view class="number">

  4.         <text>当前单车编号: {{number}}</text>

  5.     </view>

  6.     <view class="time">

  7.         <view class="time-title">

  8.             <text>{{billing}}</text>

  9.         </view>

  10.         <view class="time-content">

  11.             <text>{{hours}}:{{minuters}}:{{seconds}}</text>

  12.         </view>

  13.     </view>

  14.  

  15.     <view class="endride">

  16.         <button type="warn" disabled="{{disabled}}" bindtap="endRide">结束骑行</button>

  17.         <button type="primary" bindtap="moveToIndex">回到地图</button>

  18.     </view>

  19. </view>

页面样式

  1. .container{

  2.         width: 100%;

  3.         display: flex;

  4.         flex-direction: column;

  5.         align-items: center;

  6.         justify-content: space-between;

  7.         background-color: #fff;

  8. }

  9. .number,.endride{

  10.         padding: 60rpx 0;

  11.         flex: 2;

  12.         width: 100%;

  13.         text-align: center;

  14. }

  15. .time{

  16.         text-align: center;

  17.         width: 100%;

  18.         flex: 6;

  19. }

  20. .time .time-content{

  21.         font-size: 100rpx;

  22. }

  23. .endride button{

  24.         width: 90%;

  25.         margin-top: 40rpx;

  26. }

数据逻辑(看注释更好理解哦)

  1. // pages/billing/index.js

  2. Page({

  3.   data:{

  4.     hours: 0,

  5.     minuters: 0,

  6.     seconds: 0,

  7.     billing: "正在计费"

  8.   },

  9. // 页面加载

  10.   onLoad:function(options){

  11.     // 获取扫码成功页传过来的车牌号,再定义一个定时器

  12.     this.setData({

  13.       number: options.number,

  14.       timer: this.timer

  15.     })

  16.     // 初始化计时器

  17.     let s = 0;

  18.     let m = 0;

  19.     let h = 0;

  20.     // 计时开始

  21.     this.timer = setInterval(() => {

  22.       this.setData({

  23.         seconds: s++

  24.       })

  25.       if(s == 60){

  26.         s = 0;

  27.         m++;

  28.         setTimeout(() => {         

  29.           this.setData({

  30.             minuters: m

  31.           });

  32.         },1000)      

  33.         if(m == 60){

  34.           m = 0;

  35.           h++

  36.           setTimeout(() => {         

  37.             this.setData({

  38.               hours: h

  39.             });

  40.           },1000)

  41.         }

  42.       };

  43.     },1000)  

  44.   },

  45. // 结束骑行,清除定时器

  46.   endRide: function(){

  47.     clearInterval(this.timer);

  48.     this.timer = "";

  49.     this.setData({

  50.       billing: "本次骑行耗时",

  51.       disabled: true

  52.     })

  53.   },

  54. // 携带定时器状态回到地图

  55.   moveToIndex: function(){

  56.     // 如果定时器为空

  57.     if(this.timer == ""){

  58.       // 关闭计费页跳到地图

  59.       wx.redirectTo({

  60.         url: '../index/index'

  61.       })

  62.     // 保留计费页跳到地图,带上计时器状态

  63.     }else{

  64.       wx.navigateTo({

  65.         url: '../index/index?timer=' + this.timer

  66.       })

  67.     }

  68.   }

  69. })

页面分析的第4步,主要实现在moveToIndex函数里。结束骑行之后,设置定时器值为空,当点击回到地图时判断计时器的状态(值是否为空)。如果为空,关闭计费页,结束本次骑行。如果不为空,携带定时器状态跳转到首页,首页立即用车点击事件就会对传过来的参数(计时器状态)响应合理逻辑。再回去上面看一下立即用车的判断条件,当本页面传过去的计时器不满足条件时,我们在地图首页点击立即用车将会回到本页面

以上就是关于“微信小程序扫描二维码概念怎么实现”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: 微信小程序扫描二维码概念怎么实现

本文链接: https://www.lsjlt.com/news/308619.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序扫描二维码概念怎么实现
    这篇“微信小程序扫描二维码概念怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“微信小程序扫描二维码概念怎么实现”文章吧...
    99+
    2023-06-26
  • 使用微信小程序实现二维码扫描功能
    使用微信小程序实现二维码扫描功能随着移动互联网的快速发展,二维码已经成为了一种非常方便的信息交互方式。微信小程序作为一种新的应用形式,也提供了二维码扫描功能。本文将介绍如何使用微信小程序实现二维码扫描,并提供具体的代码示例。一、准备工作在开...
    99+
    2023-11-21
    二维码 微信小程序 扫描
  • 微信小程序扫描普通二维码跳转到小程序指定页面
    这个功能的逻辑是什么呢? 二维码就相当于是一个链接 相当于我们点击一个链接跳转到另一个页面 只不过这里是扫码的形式 如何操作 首先我们需要在微信公众平台的开发管理——>开发设置,找到(扫普通链接二维码...
    99+
    2023-09-08
    微信小程序 小程序 javascript 前端
  • Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果(推荐)
     了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目...
    99+
    2022-06-06
    仿微信 二维码扫描 google 条形码 zxing 二维 二维码 Android
  • 微信小程序-扫普通链接二维码打开小程序
    类似很多饭堂扫桌面二维码点餐都是用这种方式实现扫普通链接二维码打开小程序 一、小程序设置: 链接后面带参数: 首先要在小程序管理-开发管理-开发设置:扫普通链接二维码打开小程序 添加可访问的链接,此链接要求域名已备案,并且要下载校验文件,...
    99+
    2023-10-04
    小程序 微信小程序
  • 微信小程序实现二维码生成器
    目录一、项目展示二、项目核心代码一、项目展示 项目是一个简单实用的二维码生成器。 使用者可以在生成器中输入文字生成二维码,也可以在识别器中识别二维码的内容 二、项目核心代码 二维码...
    99+
    2023-01-09
    小程序二维码生成器 小程序二维码生成 小程序二维码
  • java微信扫描公众号二维码实现登陆功能
    本文实例为大家分享了java微信扫描公众号二维码实现登陆的具体代码,供大家参考,具体内容如下前提条件: 微信公众平台为服务号, 2.服务号实现了账号绑定功能,即将open_id 与业务系统中的用户名有对应关系具体实现原理: 用户访问业务系统...
    99+
    2023-05-31
    java 二维码
  • Android中怎么实现二维码扫描功能
    这期内容当中小编将会给大家带来有关Android中怎么实现二维码扫描功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1 开发准备1.1 android studio 安装&emsp;&e...
    99+
    2023-06-04
  • 微信小程序API怎么获取页面二维码
    这篇文章主要介绍“微信小程序API怎么获取页面二维码”,在日常操作中,相信很多人在微信小程序API怎么获取页面二维码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序API怎么获取页面二维码”的疑惑有所...
    99+
    2023-06-26
  • 使用微信小程序实现二维码生成功能
    使用微信小程序实现二维码生成功能小程序的盛行使得开发者可以轻松地实现各种功能,而二维码生成功能正是其中之一。二维码作为快速传递信息的一种方式,被广泛应用于各种场景,如支付、活动推广等。在本篇文章中,我们将学习如何使用微信小程序实现二维码生成...
    99+
    2023-11-21
    微信小程序 二维码生成 实现功能
  • 微信小程序调用扫一扫功能怎么实现
    今天小编给大家分享一下微信小程序调用扫一扫功能怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。    小程序调用扫一扫...
    99+
    2023-06-26
  • nodejs获取微信小程序带参数二维码实现代码
    nodejs获取微信小程序带参数二维码实现代码 由于项目需求,需要获取小程序页面的带有参数的二维码。好,那就看文档搞吧。 之前都是写前端,没有写过后台的东西,这次难得有机会组长让我试一试试用node来写,那...
    99+
    2022-06-04
    参数 代码 程序
  • 微信小程序二维码识别不了怎么解决
    如果微信小程序二维码无法识别,可以尝试以下解决方法:1. 确认二维码质量:二维码质量不佳可能导致无法识别。请确保二维码清晰、无模糊、...
    99+
    2023-08-15
    微信小程序
  • 微信小程序里如何实现长按识别二维码
    这篇文章主要讲解了“微信小程序里如何实现长按识别二维码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序里如何实现长按识别二维码”吧!前言我们都知道公众号里的二维码可以长按识别,但是小...
    99+
    2023-06-13
  • 微信小程序里长按识别二维码的实现过程
    前言 我们都知道公众号里的二维码可以长按识别,但是小程序限制比较严格,没有办法实现二维码的长按识别,一直以来我都是这样认为的,微信的官方规则里也是这么写的,直到今天上午,我无意间发现...
    99+
    2022-11-11
  • 自定义带参数二维码扫码进入微信小程序获取参数
    第一步,需要进入小程序后台,开发设置里,添加二维码规则  第二步,添加好扫码进入的规则,比如扫码进去小程序的指定页面! (1)协议类型选择https (2)选择小写 (3)二维码规则,这个看文档有些人估计会比较迷糊,简单理解一下就是一个...
    99+
    2023-09-11
    微信小程序 小程序
  • 微信小程序使用weapp-qrcode.js生成二维码以及“扫普通链接二维码打开小程序”动态传递参数实现记录
    参考文章原文链接:微信小程序使用weapp-qrcode.js完成二维码的生成_fairy_404的博客-CSDN博客 首先给需要生成二维码的页面创建一个canvas 因为我这里实现的是弹窗展示二维码,所有就把 canvas移出页面,小伙...
    99+
    2023-09-01
    小程序 微信小程序 javascript
  • 微信小程序获取二维码报错47001怎么解决
    错误码47001是指传入的参数不合法。要解决这个问题,需要检查以下几个方面: 检查参数是否正确:确保传入的参数符合微信小程序的规...
    99+
    2023-10-26
    微信小程序
  • Android开发怎么实现模仿360二维码扫描功能
    小编给大家分享一下Android开发怎么实现模仿360二维码扫描功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:一、效果图:二、框架搭建首先,下载最新...
    99+
    2023-05-30
    android
  • 在微信小程序中怎么使用canvas+Painter插件制作二维码
    本篇内容介绍了“在微信小程序中怎么使用canvas+Painter插件制作二维码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、实现原理使...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作