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

【b站计算机拓荒者】【2025】微信小程序开发教程 - chapter3 项目实践 - 2信息采集

1 首页功能跳转

# 1 创建页面-信息采集 collection-人脸识别 face-语音识别 voice-活动 activity-心率检测 heart-积分商城 points## app.json{"pages": ["pages/index/index","pages/welcome/welcome","pages/my/my","pages/notice/notice","pages/activity/activity","pages/collection/collection","pages/face/face","pages/voice/voice","pages/heart/heart","pages/points/points"],}# 2 首页:index.wxml和index.js加入跳转逻辑## 1 pages\index\index.wxml<!-- 快捷入口 --><van-grid column-num="3"><van-grid-item icon="photo-o" text="信息采集" bind:click="gotoCollection"/><van-grid-item icon="photo-o" text="社区活动" bind:click="gotoActivity"/><van-grid-item icon="photo-o" text="人脸检测" bind:click="gotoFace"/><van-grid-item icon="photo-o" text="语音识别" bind:click="gotoVoice"/><van-grid-item icon="photo-o" text="心率检测" bind:click="gotoHeart"/><van-grid-item icon="photo-o" text="积分商城" bind:click="gotoPoints"/></van-grid>## 2 pages\index\index.jsPage({gotoCollection(){wx.navigateTo({url: '/pages/collection/collection',})}, gotoActivity(){wx.switchTab({url: '/pages/activity/activity',})}, gotoFace(){wx.navigateTo({url: '/pages/face/face',})}, gotoVoice(){wx.navigateTo({url: '/pages/voice/voice',})}, gotoHeart(){wx.navigateTo({url: '/pages/heart/heart',})}, gotoPoints(){wx.navigateTo({url: '/pages/points/points',})}
})

2 首页轮播图和公告接口

2.1 后端接口

跳过。

2.2 小程序前端

死图片死公告写活,跳过。

# index.js的onLoad请求后台接口获取轮播图图片等信息
# 注意此时的启动页还是广告页

2.3 补充-公共方法

# 接口url可以在公共文件里统一处理

1 新建setting.js文件

const rootUrl = 'http://127.0.0.1:8000/smart';module.exports = {welcome: rootUrl+'/welcome/',banner: rootUrl+'/banner/',
}

2 引入js文件

// pages\welcome\welcome.js
import api from '../../config/setting'
Page({/*** 页面的初始数据*/

3 替换url

 // 向后端发送请求 -- 获取广告页 -- 赋值给imgwx.request({url:api.welcome, // 'http://127.0.0.1:8000/smart/welcome',method: 'get',success:(res)=>{if(res.data.code === 100) {this.setData({img: res.data.result})} else {wx.showToast({title:'网络请求异常'})}},fail: (error)=>{wx.showToast({title:'网络请求异常'})}});

3 信息采集页

3.1 小程序前端

up又不想写了,我也不写,跳过。
找来了资料,直接一个copy操作 - 5月26日

效果
在这里插入图片描述

3.2 后端接口

不写,跳过。

3.3 引入矢量图

可以看chapter2 小程序核心的part 3,不写了,跳过。

3.4 打通接口//删除功能

# 1 删除确认,添加模态对话框# 2 删除成功,刷新页面

删除方法

// pages\collection\collection.js
doDeleteRow(e) {wx.showModal({title: "确认是否删除",complete: (res)=>{if(res.cancel) {return;}if(res.confirm) {// 删除var nid = e.currentTarget.dataset.nid;wx.showLoading({title: '删除中',mask: true});wx.request({url: api.welcome,method: 'get',success: (res)=>{// 刷新当前页面,需要自定义this.refresh();},complete: ()=>{wx.hideLoading();}})}}})
}

1 删除确认模态对话框
在这里插入图片描述
2 删除确认,删除中
在这里插入图片描述

3 接口成功或失败,loading关闭。

3.5 提交后返回信息采集页

# p16
# 1 提交创建个人信息后返回信息采集页,此时后台数据新增一条,返回信息采集页,由于没有刷新,因此没有最新数据# 2 在onShow方法里执行refresh方法(自定义方法)刷新页面
    onShow() {this.refresh(); // 自定义方法},

4 信息采集详情页

4.1 小程序端-拍照页面-camera

# 1 实现拍照页面,调取手机的相机功能# 2 点击form的相机图标,进入camera页面# 3 camera标签 -https://developers.weixin.qq.com/miniprogram/dev/component/camera.html-<camera class="camera"  device-position="{{ backFront ? 'back' : 'front' }}"  flash="off" frame-size="medium" ></camera>## 系统相机,扫描二维码等功能。## 默认前置摄像头,按钮控制摄像头翻转# 4 具体代码见项目,git地址见最后(尚未上传git)。# 5 要把拍的照片--》返回给上个页面,这部分可以看下面的代码实现

摄像头翻转和拍照方法实现
wxml

<!--pages/camera/camera.wxml-->
<camera class="camera"  device-position="{{ backFront ? 'back' : 'front' }}"  flash="off" frame-size="medium" ></camera><view class="function"><view class="switch"> </view><view class="record" bindtap="takePhoto"><image src="/images/record_on.png"></image></view><view class="switch" bindtap="switchCamera"><image src="/images/rotate-camera-white.png"></image></view></view>

js

Page({data: {backFront: true},// 摄像头翻转switchCamera() {this.setData({backFront: !this.data.backFront,// src: ''})},// 拍照takePhototakePhoto() {const ctx = wx.createCameraContext()ctx.takePhoto({quality: 'high',success: (res) => {// 如果当前页面的data中有src属性---》得到的就是图片地址// 要把拍的照片--》返回给上个页面// src: res.tempImagePathvar pages = getCurrentPages() // 取到当前打开的所有页面var prevPage = pages[pages.length - 2] // 拿到上个页面对象prevPage.setData({avatar: res.tempImagePath}) // 跳到上个页面wx.navigateBack({});}})},error(e) {console.log(e.detail)}, })

wxss省略。
拍照功能的官网示例

// camera.js
Page({takePhoto() {const ctx = wx.createCameraContext()ctx.takePhoto({quality: 'high',success: (res) => {this.setData({src: res.tempImagePath})}})},error(e) {console.log(e.detail)}
})

效果
在这里插入图片描述
跳转关系
在这里插入图片描述

4.2 小程序端-采集页面-form

# 1 onLoad()里请求接口,获取网格下拉数据# 2 双向数据绑定-<input placeholder="请填写姓名" placeholder-class='txt' model:value="{{name}}" bindinput="bindNameChange" /># 3 可以注意下picker上拉选择,用法不太一般-https://developers.weixin.qq.com/miniprogram/dev/component/picker.html# 4 上传文件,wx.uploadFile()# 5 上传成功,跳转会上一页
<!--pages/form/form.wxml-->
<view class="avatar"><image src='{{avatar}}' bindtap="bindToCamera"></image>
</view><view class="form"><view class="row-group"><input placeholder="请填写姓名" placeholder-class='txt' model:value="{{name}}" bindinput="bindNameChange" /></view><view class="picker-group"><picker bindchange="bindPickerChange" value="{{index}}" range="{{objectArray}}" range-key="name"><view wx:if="{{ index > -1}}" class="picker-txt picker">当前网格:{{objectArray[index].name}}</view><view wx:else class="picker-txt" >请选择网格</view></picker></view><view><button class="submit" bindtap="postUser" > 提 交 </button></view>
</view>

js

  // 上传图片postUser(e) {wx.showLoading({title: '提交中',mask: true})// 上传文件wx.uploadFile({url: api.welcome,filePath: this.data.avatar,  name: 'avatar',  // 文件名字formData: {  // 数据部分,姓名和网格name: this.data.name,area: this.data.objectArray[this.data.index].id // 选中了那个区域的id},success: (res) => {// 跳转回上一页wx.navigateBack({})},complete: () => {wx.hideLoading()}})}

在这里插入图片描述
wx.navigateTo()实现。
在这里插入图片描述

在这里插入图片描述

4.3 后端接口

# 1 当前登录用户负责的网格 
# 2 提交接口

不写,跳过。

http://www.xdnf.cn/news/671617.html

相关文章:

  • Protocol Buffers 复杂嵌套编译指南:生成 C++ 代码
  • JavaScript- 3.2 JavaScript实现不同显示器尺寸的响应式主题和页面
  • 开源酷炫大数据可视化大屏html+eacher 100+套
  • 力扣热题——分类求和并作差
  • Vue-02 (使用不同的 Vue CLI 插件)
  • 从 PyTorch 到 TensorFlow Lite:模型训练与推理
  • 【华为云物联网】iOtDA数据以表格字段转发OBS的设置攻略,便于以后数据上大屏
  • 如何描述BUG
  • VUE项目部署IIS服务器手册
  • 机器学习笔记【Week6】
  • 打板策略实战对比,khQuant回测横评第三弹【AI量化第29篇】
  • Nginx 在四大核心场景中的应用实践与优化
  • 深入解析 Flink 中的时间与窗口机制
  • 安卓证书的申请(保姆级图文)
  • Python服务器请求转发服务
  • KT6368A通过蓝牙芯片获取手机时间详细说明,对应串口指令举例
  • ubuntu中,c和c+程序,预编译、编译、链接和运行命令
  • 交换机 路由器
  • 2025 年江西研究生数学建模竞赛题A题电动汽车充电桩共享优化与电网安全协同模型完整思路 模型代码 结果 成品分享
  • 模板应用更新同步到所有开发中的应用
  • 思澈LCD-kit测试过程记录
  • 跳表(Skip List)查找算法详解
  • 2024年12月英语六级(第二套)真题+解析全24页
  • MySQL-5.7 修改密码和连接访问权限
  • 基于Python爬虫技术的对歌曲评论数据可视化分析系统
  • LabVIEW比例阀性能测试试验台
  • 【Python】日期计算和自动化运行脚本
  • 网站资源加载出现401错误
  • 用户配置文件(Profile)
  • Prim算法剖析与py/cpp/java语言实现