uniapp 如何实现扫码搜索

场景描述

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

                                                                (图 一)

实操准备

为了更好接近实战,大家可以直接去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域名下进行扫描。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值