不负时光不负卿 發表於 2019-12-21 17:33:00

uni-app自定义app端的扫码界面

<p>记得当时是在西班牙有这样的一个需求,需要自定义扫码页面,还需要加上西班牙文,当时是在一个组件里面找到了这样的一个方法,全文大部分使用的app端的Native里面的方法,记录一下,跑路了项目代码要删库了</p>
<p><img src="https://img2018.cnblogs.com/i-beta/1680246/201912/1680246-20191221172856852-1908225784.png"></p>
<p>&nbsp;</p>
<p>&nbsp;效果图大概是这样的</p>
<p><br><br>以下是vue页面代码<br>&lt;template&gt;<br>        &lt;view&gt;&lt;/view&gt;<br>&lt;/template&gt;<br>&lt;script&gt;<br>import { mapState, mapMutations } from 'vuex';<br>var barcode = null;<br>export default {<br>        data() {<br>                return {<br>                        name: 'PUEDES ENCONTRAR EL QR AQUÍ', //要在扫码界面自定义的内容<br>                        flash: false, //是否打开摄像头<br>                        type: 'scan-listener'<br>                };<br>        },<br>        onLoad(d) {<br>                var pages = getCurrentPages();<br>                var page = pages;<br>                // #ifdef APP-PLUS<br>                plus.navigator.setFullscreen(true); //全屏<br>                var currentWebview = page.$getAppWebview();<br>                this.createBarcode(currentWebview); //创建二维码窗口<br>                this.createView(currentWebview); //创建操作按钮及tips界面<br>                // #endif<br>        },<br>        computed: {<br>                ...mapState(['token', 'user', 'powerBank', 'rackData', 'orderNum', 'slotId']),<br>                i18n() {<br>                        return this.$t('richScan');<br>                }<br>        },<br>        methods: {<br>                ...mapMutations(['tokenStorage', 'powerBankStorage']),<br>                // 扫码成功回调<br>                onmarked(type, result) {<br>                        var text = '未知: ';<br>                        console.log('内容' + JSON.stringify(result));<br>                        switch (type) {<br>                                case plus.barcode.QR:<br>                                        text = 'QR: ';<br>                                        break;<br>                                case plus.barcode.EAN13:<br>                                        text = 'EAN13: ';<br>                                        break;<br>                                case plus.barcode.EAN8:<br>                                        text = 'EAN8: ';<br>                                        break;<br>                        }<br>                        plus.navigator.setFullscreen(false);<br>                        let results = result.match(/WXXH.*/gi) + '';<br>                        this.powerBankStorage(results);<br>                        console.log(typeof this.powerBank);<br>                        uni.redirectTo({<br>                                url: '/pages/money/paydeposit'<br>                        });<br>                        // this.$eventHub.$emit(this.type, {<br>                        //         result: result<br>                        // });<br>                        barcode.close();<br>                },<br>                // 创建二维码窗口<br>                createBarcode(currentWebview) {<br>                        barcode = plus.barcode.create('barcode', , {<br>                                top: '0',<br>                                left: '0',<br>                                width: '100%',<br>                                height: '100%',<br>                                scanbarColor: '#1DA7FF',<br>                                position: 'static',<br>                                frameColor: '#1DA7FF'<br>                        });<br>                        barcode.onmarked = this.onmarked;<br>                        barcode.setFlash(this.flash);<br>                        currentWebview.append(barcode);<br>                        barcode.start();<br>                },<br>                // 创建操作按钮及tips<br>                createView(currentWebview) {<br>                        //顶部指引<br>                        var guide = new plus.nativeObj.View(<br>                                'guide',<br>                                {<br>                                        top: '12%',<br>                                        left: '20%',<br>                                        height: '150px',<br>                                        width: '218px'<br>                                },<br>                                [<br>                                        {<br>                                                tag: 'img',<br>                                                id: 'backBar',<br>                                                src: 'https://upower-spain.oss-eu-central-1.aliyuncs.com/spain/app/prompt.png',<br>                                                position: {<br>                                                        top: '0',<br>                                                        left: '0',<br>                                                        width: '235px',<br>                                                        height: '161px'<br>                                                }<br>                                        }<br>                                ]<br>                        );<br>                        // 创建返回原生按钮<br>                        var backVew = new plus.nativeObj.View(<br>                                'backVew',<br>                                {<br>                                        top: '0px',<br>                                        left: '0px',<br>                                        height: '40px',<br>                                        width: '100%'<br>                                },<br>                                [<br>                                        {<br>                                                tag: 'img',<br>                                                id: 'backBar',<br>                                                src: 'https://upower-spain.oss-eu-central-1.aliyuncs.com/spain/app/backBar.png',<br>                                                position: {<br>                                                        top: '2px',<br>                                                        left: '3px',<br>                                                        width: '35px',<br>                                                        height: '35px'<br>                                                }<br>                                        }<br>                                ]<br>                        );<br>                        // 创建打开手电筒的按钮<br>                        var scanBarVew = new plus.nativeObj.View(<br>                                'scanBarVew',<br>                                {<br>                                        top: '70%',<br>                                        left: '40%',<br>                                        height: '10%',<br>                                        width: '20%'<br>                                },<br>                                [<br>                                        {<br>                                                tag: 'img',<br>                                                id: 'scanBar',<br>                                                src: 'https://upower-spain.oss-eu-central-1.aliyuncs.com/spain/app/scanBar.png',<br>                                                position: {<br>                                                        width: '28%',<br>                                                        left: '36%',<br>                                                        height: '30%'<br>                                                }<br>                                        },<br>                                        {<br>                                                tag: 'font',<br>                                                id: 'font',<br>                                                text: this.i18n.open,<br>                                                textStyles: {<br>                                                        size: '10px',<br>                                                        color: '#ffffff'<br>                                                },<br>                                                position: {<br>                                                        width: '80%',<br>                                                        left: '10%'<br>                                                }<br>                                        }<br>                                ]<br>                        );<br>                        // 创建展示类内容组件<br>                        var content = new plus.nativeObj.View(<br>                                'content',<br>                                {<br>                                        top: '0px',<br>                                        left: '0px',<br>                                        height: '100%',<br>                                        width: '100%'<br>                                },<br>                                [<br>                                        {<br>                                                tag: 'font',<br>                                                id: 'scanTitle',<br>                                                text: '',<br>                                                textStyles: {<br>                                                        size: '18px',<br>                                                        color: '#ffffff'<br>                                                },<br>                                                position: {<br>                                                        top: '0px',<br>                                                        left: '0px',<br>                                                        width: '100%',<br>                                                        height: '40px'<br>                                                }<br>                                        },<br>                                        {<br>                                                tag: 'font',<br>                                                id: 'scanTips',<br>                                                text: this.i18n.name,<br>                                                textStyles: {<br>                                                        size: '14px',<br>                                                        color: '#ffffff',<br>                                                        whiteSpace: 'normal'<br>                                                },<br>                                                position: {<br>                                                        top: '90px',<br>                                                        left: '10%',<br>                                                        width: '80%',<br>                                                        height: 'wrap_content'<br>                                                }<br>                                        }<br>                                ]<br>                        );<br>                        if (this.$i18n.locale == 'en-US') {<br>                                //打开蓝牙指引<br>                                var SpiderGuideIcon = new plus.nativeObj.View(<br>                                        'SpiderGuideIcon',<br>                                        {<br>                                                left: '0%',<br>                                                right: '0',<br>                                                bottom: '0',<br>                                                height: '60px'<br>                                        },<br>                                        [<br>                                                {<br>                                                        tag: 'img',<br>                                                        id: 'backBar',<br>                                                        src: 'https://upower-spain.oss-eu-central-1.aliyuncs.com/spain/app/bluetooth.png',<br>                                                        position: {<br>                                                                left: '0',<br>                                                                right: '0',<br>                                                                bottom: '0',<br>                                                                height: '60px'<br>                                                        }<br>                                                }<br>                                        ]<br>                                );<br>                        } else {<br>                                //打开蓝牙指引<br>                                var SpiderGuideIcon = new plus.nativeObj.View(<br>                                        'SpiderGuideIcon',<br>                                        {<br>                                                left: '0%',<br>                                                right: '0',<br>                                                bottom: '0',<br>                                                height: '60px'<br>                                        },<br>                                        [<br>                                                {<br>                                                        tag: 'img',<br>                                                        id: 'backBar',<br>                                                        src: 'https://upower-spain.oss-eu-central-1.aliyuncs.com/spain/app/hybrid/lanyas.png',<br>                                                        position: {<br>                                                                left: '0',<br>                                                                right: '0',<br>                                                                bottom: '0',<br>                                                                height: '60px'<br>                                                        }<br>                                                }<br>                                        ]<br>                                );<br>                        }<br>                        backVew.interceptTouchEvent(true);<br>                        scanBarVew.interceptTouchEvent(true);<br>                        currentWebview.append(guide); //顶部指引<br>                        currentWebview.append(content);<br>                        currentWebview.append(scanBarVew);<br>                        currentWebview.append(backVew);<br>                        currentWebview.append(SpiderGuideIcon);<br>                        backVew.addEventListener(<br>                                'click',<br>                                function(e) {<br>                                        //返回按钮<br>                                        uni.navigateBack({<br>                                                delta: 1<br>                                        });<br>                                        barcode.close();<br>                                        plus.navigator.setFullscreen(false);<br>                                },<br>                                false<br>                        );<br>                        var temp = this;<br>                        scanBarVew.addEventListener(<br>                                'click',<br>                                function(e) {<br>                                        //点击按钮点亮手电筒<br>                                        temp.flash = !temp.flash;<br>                                        if (temp.flash) {<br>                                                scanBarVew.draw([<br>                                                        {<br>                                                                tag: 'img',<br>                                                                id: 'scanBar',<br>                                                                src: 'https://upower-spain.oss-eu-central-1.aliyuncs.com/spain/app/yellow-scanBar.png',<br>                                                                position: {<br>                                                                        width: '28%',<br>                                                                        left: '36%',<br>                                                                        height: '30%'<br>                                                                }<br>                                                        },<br>                                                        {<br>                                                                tag: 'font',<br>                                                                id: 'font',<br>                                                                text: temp.i18n.close,<br>                                                                textStyles: {<br>                                                                        size: '10px',<br>                                                                        color: '#ffffff'<br>                                                                },<br>                                                                position: {<br>                                                                        width: '80%',<br>                                                                        left: '10%'<br>                                                                }<br>                                                        }<br>                                                ]);<br>                                        } else {<br>                                                scanBarVew.draw([<br>                                                        {<br>                                                                tag: 'img',<br>                                                                id: 'scanBar',<br>                                                                src: 'https://upower-spain.oss-eu-central-1.aliyuncs.com/spain/app/scanBar.png',<br>                                                                position: {<br>                                                                        width: '28%',<br>                                                                        left: '36%',<br>                                                                        height: '30%'<br>                                                                }<br>                                                        },<br>                                                        {<br>                                                                tag: 'font',<br>                                                                id: 'font',<br>                                                                text: temp.i18n.open,<br>                                                                textStyles: {<br>                                                                        size: '10px',<br>                                                                        color: '#ffffff'<br>                                                                },<br>                                                                position: {<br>                                                                        width: '80%',<br>                                                                        left: '10%'<br>                                                                }<br>                                                        }<br>                                                ]);<br>                                        }<br>                                        if (barcode) {<br>                                                barcode.setFlash(temp.flash);<br>                                        }<br>                                },<br>                                false<br>                        );<br>                }<br>        },<br>        onBackPress() {<br>                // #ifdef APP-PLUS<br>                //&nbsp;点击返回时退出全屏<br>                barcode.close();<br>                plus.navigator.setFullscreen(false);<br>                // #endif<br>        },<br>        onUnload() {<br>                plus.navigator.setFullscreen(false);<br>        }<br>};<br>&lt;/script&gt;</p>
<p>&lt;style scoped&gt;<br>//@import '../../common/uni.css';<br>&lt;/style&gt;</p>

</div>
<div id="MySignature" role="contentinfo">
    流下了没有技术的泪水<br><br>
来源:https://www.cnblogs.com/Mr-ZhangH/p/12077603.html
頁: [1]
查看完整版本: uni-app自定义app端的扫码界面