直接用uni.scanCode()做扫码功能碰到了扫描不识别的问题,而且是经常出现识别不到,所以就用nvue的barcode组件写了扫码试试,用着比 scanCode()方法强多了。

App-nvue,支持barcode组件,建议使用nvue方式

应用流程

1.点击扫码图标---跳转路由到nvue的扫码组件页面

2.获取二维码内的参数,携带参数返回上一页

3.获取返回的参数进行逻辑交互

4.交互完成,扫码结束。

下面代码是我此次项目用的代码:

<template>
	  <view class="saom" :style="{ width: windowWidth, height: windowHeight }">
	        <barcode id='1' class="barcode" :style="{ width: windowWidth, height: windowHeight }" :autostart="true" ref="barcode"  frameColor="#1C86EE" scanbarColor="#1C86EE" :filters="fil" @marked="success1" @error="fail1"></barcode>
	    </view>
</template>

<script>
	export default { 
	        data() {
	            return {
	                fil: [0,3,12],
					windowWidth: '', //屏幕可用宽度
					windowHeight: '', //屏幕可用高度
	            }
	        },
			onLoad() {
				this.saomhig();
			},
	        methods: {
	            success1(res) {
					let datasp =JSON.parse(res.detail.message)
	                console.log("success1:" +datasp);
					this.scaoyes(datasp)
					
	            },
	            fail1(e) {
	                console.log("fail1:" + JSON.stringify(e));
					uni.navigateBack();
	            },
	            toStart() {
					console.log("开始扫码")
	                this.$refs.barcode.start({
	                    vibrate:false,
						sound:'default'
	                });
	            },
	//设置
	scaoyes(data) {
		let pages = getCurrentPages();
		let prevPage = pages[pages.length - 2]; //上一个页面
		//直接调用上一个页面的setImage()方法,把数据存到上一个页面中去
		prevPage.$vm.saosuccess(data);
		uni.navigateBack();
	},
	// 初始化高度
	saomhig(){
		let _this = this;
		uni.getSystemInfo({
			success: function(res) {
				_this.windowWidth = res.windowWidth;
				_this.windowHeight = res.windowHeight;
				
			}
		});
	}
	           
	        }
	    }
</script>

<style scoped>

</style>

Logo

前往低代码交流专区

更多推荐