news 2026/6/12 9:12:39

uniapp在app端扫码核销(支持自定义内容)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
uniapp在app端扫码核销(支持自定义内容)

效果图如下

本文将详细介绍如何使用 nvue + Barcode 模块实现一个完整的自定义扫码页面。
为什么选择 nvue?
因为uniapp中这个组件的限制

配置:
首先需要在 `manifest.json` 中启用 Barcode 模块:

{ "app-plus": { "modules": { "Barcode": {}, "Camera": {} }, "distribute": { "android": { "permissions": [ "<uses-permission android:name=\"android.permission.CAMERA\"/>" ] } } } }

2. pages.json 配置

在 `pages.json` 中注册页面并隐藏导航栏: { "path": "pages/Shops/code", "style": { "navigationBarTitleText": "扫一扫", "app-plus": { "titleNView": false } } }

页面完整代码

<template> <view class="page"> <!-- 状态栏占位 --> <view class="status-bar" :style="{ height: statusBarHeight + 'px' }"></view> <!-- 自定义导航栏 --> <view class="nav-bar"> <view class="nav-back" @click="goBack"> <uni-icons type="left" size="18" color="#333333"></uni-icons> </view> <text class="nav-title">订单核销</text> <view class="nav-placeholder"></view> </view> <!-- 扫码区域容器 --> <view class="scan-container"> <!-- Barcode 组件 --> <barcode ref="barcode" class="barcode" :autostart="false" @marked="onMarked" @error="onError"> </barcode> <!-- 底部提示 --> <view class="bottom-tip" @click="goToManualInput"> <text class="tip-text">无法识别?试试</text> <text class="tip-link">手动输入核销码</text> </view> </view> </view> </template>

Js逻辑代码

export default { data() { return { statusBarHeight: 0, isScanning: false // 防止重复扫码 } }, created() { // 获取状态栏高度,适配不同机型 const systemInfo = uni.getSystemInfoSync(); this.statusBarHeight = systemInfo.statusBarHeight || 0; }, onReady() { // 页面首次加载时启动扫码 this.startScan(); }, onShow() { // 页面显示时重新启动扫码(处理返回场景) this.isScanning = false; this.startScan(); }, methods: { // 启动扫码 startScan() { this.$nextTick(() => { try { const barcode = this.$refs.barcode; if (barcode && barcode.start) { barcode.start(); console.log('扫码已启动'); } } catch (e) { console.log('启动扫码失败:', e); } }); }, // 扫码成功回调 onMarked(e) { // 防止重复处理 if (this.isScanning) { return; } this.isScanning = true; const result = e.detail.code; console.log('扫码结果:', result); // 处理扫码结果 this.handleScanResult(result); // 延迟重置标志 setTimeout(() => { this.isScanning = false; }, 2000); }, // 扫码失败回调 onError(e) { console.log('扫码错误:', e); uni.showToast({ title: '扫码失败', icon: 'none' }); }, // 处理扫码结果 handleScanResult(code) { // 跳转到处理页面或调用接口 uni.navigateTo({ url: '/pages/result?code=' + code }); }, // 手动输入 goToManualInput() { uni.navigateTo({ url: '/pages/manualInput' }); }, // 返回 goBack() { uni.navigateBack({}); } } }

关于css就不公布了,大家可以自己定义。

遇到的一些问题:
1.页面黑屏(考虑Barcode 组件未正确启动)

// 确保在 $nextTick 中启动 this.$nextTick(() => { const barcode = this.$refs.barcode; if (barcode && barcode.start) { barcode.start(); } });

2.扫码后卡死(扫码成功后组件未停止,继续占用摄像头)

- 使用 `isScanning` 标志防止重复处理

- 在 `onShow` 中重置状态

3.返回后无法扫码(autostart 只在首次加载时生效)

onShow() {

this.startScan(); // 手动重启

}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 19:39:02

从职业烧伤到AI心理教练:开发者的自愈之路

在软件测试领域&#xff0c;职业倦怠&#xff08;俗称“职业烧伤”&#xff09;已成为普遍挑战&#xff0c;源于高强度工作、项目压力和创新需求匮乏。数据显示&#xff0c;2026年初&#xff0c;测试从业者离职率上升&#xff0c;部分原因包括长时间调试代码、应对紧急交付和缺…

作者头像 李华
网站建设 2026/6/10 21:58:48

20260205_183713_Agent四大范式___CRITIC:吴恩达力推Agent设

摘要 近期大型语言模型&#xff08;LLMs&#xff09;的进展令人瞩目。然而&#xff0c;这些模型偶尔会出现矛盾和问题行为&#xff0c;比如虚构事实、编写错误代码或产生攻击性内容。与人类不同&#xff0c;人类通常会借助外部工具来核实和优化他们的内容&#xff0c;例如利用搜…

作者头像 李华
网站建设 2026/6/7 17:29:51

manipulation十年演进

Manipulation&#xff08;操作/操纵&#xff09; 的十年&#xff08;2015–2025&#xff09;&#xff0c;是从“预定义轨迹的重复机械臂”向“具备人类级触觉与通用能力的柔性手”演进的十年。 这十年间&#xff0c;机器人操作的核心挑战从**“精确抓取”转向了“非结构化环境下…

作者头像 李华
网站建设 2026/6/10 3:13:47

计算机毕业设计springboot基于Java的校园内餐厅外送系统 高校智慧餐饮配送服务平台的设计与实现 基于微服务架构的校内食堂在线订餐系统

计算机毕业设计springboot基于Java的校园内餐厅外送系统k8i4c0gg&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 随着移动互联网技术的快速发展和校园生活节奏的加快&#xff0c…

作者头像 李华
网站建设 2026/6/10 9:04:39

计算机毕业设计springboot智慧社区服务平台 基于SpringBoot的社区数字化管理与生活服务平台 SpringBoot框架下的智能小区综合服务系统

计算机毕业设计springboot智慧社区服务平台434iut16 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着城镇化进程持续推进&#xff0c;传统社区管理模式面临效率低下、服务单一…

作者头像 李华
网站建设 2026/6/10 15:43:50

AI写论文哪个软件最好?实测5款热门工具,虎贲等考AI凭6大维度碾压

毕业季的论文战场&#xff0c;AI工具已成刚需&#xff0c;但“生成内容空洞”“文献虚假”“查重率飙红”等问题让学子们踩坑不断。AI写论文哪个软件最好&#xff1f;我们耗时15天&#xff0c;以“本科经管类硕士工科类毕业论文”为统一任务&#xff0c;实测虎贲等考AI、ChatGP…

作者头像 李华