6***@qq.com
6***@qq.com
  • 发布:2018-11-24 14:00
  • 更新:2019-12-16 16:53
  • 阅读:12401

uni.scanCode 扫码问题

分类:uni-app

uni.scanCode不支持传参数(utoken)和(ApiUrl)嘛,要不然,就只要简单扫一扫功能了。

<template>  
    <view>  
        <view class="page-body">  
            <view class="page-section-title">扫码结果</view>  
            <view class="uni-list">  
                <view class="uni-cell">  
                    <view class="uni-input">{{result}}</view>  
                </view>  
            </view>  
            <view class="btn-area">  
                <button type="primary" @tap="scanCode">扫一扫</button>  
            </view>  
        </view>  
    </view>  
</template>  

<script>  
    import {  
        mapState,  
        mapMutations  
    } from 'vuex'  

    export default {  
        computed: mapState(['utoken']),  
        data() {  
            return {  
                title: 'scanCode',  
                result: '',  
            }  
        },  
        onUnload:function(){  
            this.result = '';  
        },  
        methods: {  
            scanCode: function () {  
                uni.scanCode({  
                    onlyFromCamera: true,  
                    success: function (res)  {  
                                                //getScan();  
                                                //this.getScan();  
                        uni.request({  
                            crossDomian:true,  
                            method:"POST",  
                            header : {  
                                "Content-type":"application/x-www-form-urlencoded",  
                                "Authorization":"Bearer "+this.utoken,  
                                "Accept":"application/vnd.baid.v1+json"  
                            },  
                            url: ApiUrl+'/v1scan',  
                            data:{  
                                'scankey':res.result,  
                                'term':plus.os,  
                                'dev':plus.device,  
                                'clientinfo':JSON.stringify(plus.push.getClientInfo()),  
                            },  
                            success: (res) => {  
                                uni.hideLoading();  
                                uni.showModal({  
                                    title: '提示',  
                                    content: JSON.stringify(res.data)  
                                });  
                            }  
                        })  
                    },  
                    complete:function(res){  
                        uni.showLoading({  
                            'title': '识别中...'  
                        });  
                        setTimeout(function () {  
                            uni.hideLoading();  
                        }, 2000);  
                    },  
                    fail: function (res) {  
                        setTimeout(function () {  
                            uni.hideLoading();  
                        }, 2000);  
                    }  
                })  
            },  
            getScan:function(){  
                uni.request({  
                    crossDomian:true,  
                    method:"POST",  
                    header : {  
                        "Content-type":"application/x-www-form-urlencoded",  
                        "Authorization":"Bearer "+this.utoken,  
                        "Accept":"application/vnd.baid.v1+json"  
                    },  
                    url: ApiUrl+'/v1scan',  
                    data:{  
                        'scankey':this.result,  
                        //'term':plus.os,  
                        //'dev':plus.device,  
                        //'clientinfo':JSON.stringify(plus.push.getClientInfo()),  
                    },  
                    success: (res) => {  
                        uni.showModal({  
                            title: '提示',  
                            content: JSON.stringify(res.data)  
                        });  
                    }  
                })  
            }  
        }  
    }  
</script>  

<style>  

</style>  

如果是单用uni.request(里面的是ok的;

2018-11-24 14:00 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com - IT新手

scan:function(){
uni.scanCode({
success: function (res) {
console.log('条码类型:' + res.scanType);
console.log('条码内容:' + res.result);
this.orderNo = res.result;
}
});
},
我这里面有啥问题 为什么就是绑定不到return里的元素
<input class="uni-input" type="number" name="orderNo" v-model="orderNo"></input>
这里一直没有值

  • 8***@qq.com

    用箭头函数或者定个变量保存this指向

    第一种:scan:function(){

    uni.scanCode({

    success: res => {

    console.log('条码类型:' + res.scanType);

    console.log('条码内容:' + res.result);

    this.orderNo = res.result;

    }

    });

    },

    第二种:scan:function(){

    let _this = this

    uni.scanCode({

    success: function (res) {

    console.log('条码类型:' + res.scanType);

    console.log('条码内容:' + res.result);

    _this.orderNo = res.result;

    }

    });

    },

    2019-02-22 20:33

  • 2***@qq.com

    回复 8***@qq.com:谢谢大佬了,我之前用了第二种方法,看来文档还是要多看看

    2019-03-25 16:01

  • 菜逼开发者

    回复 2***@qq.com: 现在两种方法都不行了

    2020-12-17 15:03

8***@qq.com

8***@qq.com - 前端开发

看的什么文档啊

呢

- 程序员

我在app中使用这个总是什么都扫不出来,就一直在扫码界面,没效果

  • 原来是手机的问题,重启一下就好了

    2019-06-13 22:45

3***@qq.com

3***@qq.com

这个要怎么使用啊,扫码功能。是要编译后打包成APP 扫码功能才能看吗,第一次用,不知道如何下手了

5***@qq.com

5***@qq.com

为什么这个方法是先触发onShow事件,然后才出来扫码结果呢?而在ios端则是先出来扫码结果再触发onShow事件?

4***@qq.com

4***@qq.com - uni-app 初学

。。。 有出现过扫码卡死的情况嘛,我android,ios扫码就直接卡死在扫码的界面了

  • 2***@qq.com

    我也是,不知道是怎么回事,一直在找问题

    2020-01-02 10:54

  • h***@163.com

    回复 2***@qq.com: 我也是这个问题,有解决办法没?

    2020-02-26 17:36

该问题目前已经被锁定, 无法添加新回复