首页 > 其他分享 >uniapp 如何实现扫码搜索

uniapp 如何实现扫码搜索

时间:2024-12-09 16:56:35浏览次数:12  
标签:uniapp 扫码 res 查询 searchFormData 搜索 data 摄像头

场景描述

在众多移动应用中需要用到扫码二维码或条码查询信息的场景比比皆是,如 商品管理中查询商品信息,订单跟踪过程中扫码单号查询订单信息和库存管理中的商品盘点。

                                                                (图 一)

实操准备

为了更好接近实战,大家可以直接去gitee或者gitcode下载现成的项目 《星云erp-移动版》来操作。大家也可以自己通过脚手架或Hbuilder自行创建项目。

                                                                (图 二)

项目的基础运行与配置见《手把手教你0到1运行uniapp开发的项目

具体实现

1、以 “商品管理”中扫码查询商品为例,具体代码见

                                                           (图三)

2、先实现界面,样式如(图 一),代码如下

<view class="top-view">
			<view class="search-input-view">
				<uni-search-bar placeholder="输入商品的编码" @confirm="searchBycode" :focus="true" @blur="blur" @input="input"
					clearButton="none" cancelButton="none" @cancel="cancel" @clear="clear">
				</uni-search-bar>
			</view>
			<view class="scan-btn-view" @click="scanCode"><uni-icons color="#ffffff" type="scan" size="26"></uni-icons>
			</view>
</view>

CSS


<style lang="scss">
	.top-view {
		background-color: #007AFF;
		display: flex;
		flex-direction: row;
		justify-content: center;
		/* 水平居中 */
		align-items: center;
		/* 垂直居中 */
	}
   .search-input-view {
		width: 75%;
	}

	.scan-btn-view {
		width: 8%;
	}

	.search-btn-view {
		width: 8%;
	}
</style>

3、实现手动输入执行搜索,见 @confirm="searchBycode"

searchBycode(res) {

				//默认res.value是 商品的编码
				this.searchFormData.code = res.value;

				//根据输入条件查询商品
				queryByKeyword(this.searchFormData)
					.then((res) => {
						// console.log(res.data)
						//更新查询结果
						this.searchFormDataList = res.data.datas;
					});
		
			},

4、实现扫码查询商品信息(支持小程序和app)

scanCode() {

				// app或者小程序,
				uni.scanCode({
					onlyFromCamera: true,
					success: function(res) {
						this.searchFormData.code = res.result;
						//触发搜索条码
						queryByKeyword(this.searchFormData)
							.then((res) => {
								//更新查询结果
								this.searchFormDataList = res.data.datas;
							});
						//清空searchFormData
						this.searchFormData.available = true;
						this.searchFormData.productCode = '';
					}
				});

			},

5、实现扫码查询商品信息(支持H5)

mumu-getQrcode插件

下载mumu-getQrcode插件,导入项目中,mumu-getQrcode插件下载地址

##导入到项目中后,就可以创建页面使用了,列如我创建的sacn.vue
sacn.vue代码如下(示例):

<template>
    <view class="container">
        <mumu-get-qrcode @success='qrcodeSucess' @error="qrcodeError" :continue="false">
            <template v-slot:error>
                <view>摄像头启动失败</view>
            </template>
        </mumu-get-qrcode>
    </view>
</template>

<script>
    import mumuGetQrcode from '@/uni_modules/mumu-getQrcode/components/mumu-getQrcode/mumu-getQrcode.vue' //引入

    
    export default {
        components: {
            mumuGetQrcode //注册
        },
        data() {
            return {
              
            }
        },
        name: 'Qrcode',
        methods: {
            qrcodeSucess(data) { //摄像头扫码成功后返回
                console.log('摄像头扫码成功 =>', data)
                uni.showModal({
                    title: '成功',
                    content: data,
                    success: () => {
                    }
                })
            },
            qrcodeError(err) { //摄像头扫码失败返回
                uni.showModal({
                    title: '摄像头授权失败',
                    content: '摄像头授权失败,请检测当前浏览器是否有摄像头权限。',
                    success: () => {
                        uni.navigateBack({}) //返回到上一页
                    }
                })
            }
            
        },
        onLoad() {
            
        }
    }
</script>

<style scoped lang="scss">
    .container {
        height: 100%;
    }
</style>


6、在要点击扫描的方法上,跳转到这个sacn.vue页面

scanCode() {
                uni.navigateTo({
                    url: '/pages/scan/scan'
                })
    }


特别注意


因为调用了手机摄像头扫描二维码,所以只支持https域名,一开始我就是在http环境下,进入扫描时,摄像头不起作用,扫描不了,所以一定要在https域名下进行扫描。

标签:uniapp,扫码,res,查询,searchFormData,搜索,data,摄像头
From: https://blog.csdn.net/m0_37364725/article/details/144337968

相关文章

  • ElasticSearch搜索引擎常见面试题总结
    一、ElasticSearch基础:1、什么是Elasticsearch:Elasticsearch是基于Lucene的Restful的分布式实时全文搜索引擎,每个字段都被索引并可被搜索,可以快速存储、搜索、分析海量的数据。全文检索是指对每一个词建立一个索引,指明该词在文章中出现的次数和位置。当查询时,根据......
  • 做好的页面,你是如何获取更好的搜索引擎优化?
    要做好前端页面的搜索引擎优化(SEO),需要关注以下几个方面:1.技术性SEO:确保搜索引擎可以轻松访问和理解你的网站。页面速度优化:这是至关重要的。使用工具如GooglePageSpeedInsights,Lighthouse来分析和改进。压缩图片,优化代码,使用CDN,启用浏览器缓存等都是有效的策略。......
  • 基于java的SpringBoot/SSM+Vue+uniapp的宠物管理系统的详细设计和实现(源码+lw+部署文
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于java的SpringBoot/SSM+Vue+uniapp的在线考试系统的详细设计和实现(源码+lw+部署文
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于java的SpringBoot/SSM+Vue+uniapp的农场投入品运营线上管理系统的详细设计和实现(
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于java的SpringBoot/SSM+Vue+uniapp的图书管理系统的详细设计和实现(源码+lw+部署文
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 搜索技巧
    实验步骤一,打开必应搜索引擎在浏览器网址栏当中输入:https://www.bing.com回车进入页面intitle在必应的语法中可以指定在标题中包含的内容,增加指定内容在搜索返回结果的权重。intitle:admin inurl在必应的语法中可以指定搜索返回的结果的网页的链接当中包含的内容。......
  • VS2019的c代码不包含stdio.h就无法编译通过?头文件路径搜索顺序五花八门,有没有规律?搜
    VS2019的c代码不包含stdio.h就无法编译通过?有时,为了做一些测试,不希望包含系统头文件stdio.h,只希望用extern引用printf声明。但在VS2019可能会遇到链接错误:"errorLNK2019:无法解析的外部符号_printf,函数_main中引用了该符号".增加链接ucrt:#pragmacomment(lib,......
  • 算法刷题打卡DFS深度搜索
    DFS概要:    要想学会深度优先搜索的题目,首先需要知道他的代码原理,适用场景基本原理:    DFS是基于遍历,搜索树,图的算法,通过从根节点(或任意起始节点)开始,沿着每个分支深入访问节点,直到到达叶子节点或没有未访问的邻居节点为止,然后回溯到上一个节点,继续搜索其他......
  • 高德地图搜索“南京大学”原理及简单伪代码【一看就会】【OneGIS开发】
    1. 用户端发起请求-用户在安卓设备上打开高德地图应用,这一操作会激活应用与服务器之间的通信链路。当用户在搜索框输入“南京大学”并点击搜索按钮时,安卓应用会收集一些必要的信息。这些信息包括用户输入的关键词“南京大学”,还有设备的位置信息(通过GPS或网络定位获取),以及设......