美文网首页
生成二维码 && 扫码二维码

生成二维码 && 扫码二维码

作者: 郭先森啊 | 来源:发表于2021-08-05 13:39 被阅读0次
    生成二维码

    https://blog.csdn.net/weixin_43924228/article/details/101621089

    扫描二维码

    方案1:(调用第三方)
    1、https://blog.csdn.net/qq_37896578/article/details/96480198
    2、https://blog.csdn.net/weixin_40679578/article/details/103045305?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf
    3、https://www.cnblogs.com/rrene/p/9549870.html
    4、http://www.manongjc.com/detail/16-djuzfzsiefojxil.html

    5、https://www.jb51.net/article/182158.htm
    方案2:(调用微信官方)
    1、调用微信扫码功能 :https://blog.csdn.net/xiaozhuge_S/article/details/102546837?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
    2、https://www.jianshu.com/p/8a0c66620136【需调用后端接口,拿到返回值后调取微信 $ 换成vue写法】
    3、https://www.jianshu.com/p/1346264b32b2【需调用后端接口,拿到返回值后调取微信】
    4、https://blog.csdn.net/xiamoziqian/article/details/109332080

    调用第三方(方法1)
    <template>
      <div>
        <div class="erwm">
          <div class="scan">
            <div id="bcid">
              <div style="height:40%"></div>
              <p class="tip">...载入中...</p>
            </div>
            <footer class="footer">
              <p @click="startRecognize">11</p>
              <p @click="startScan">22</p>
              <p @click="cancelScan">33</p>
              <p @click="closeScan">44</p>
            </footer>
          </div>
        </div>
      </div>
    </template>
    
    <script type='text/ecmascript-6'>
    import Vue from 'vue'
    var scan = null;
    var styles = {frameColor: "#2e5dea",scanbarColor: "#2e5dea",};//边框属性,中间线属性,背景色
    var filter;//扫码格式 空为全类型
    export default {
      name: 'erwm',
      components: {
     
      },
      data() {
        return {
          codeUrl: '',
          isShow:true
        }
      },
    
     created () {
    进入页面就调取扫一扫
    
    this.startRecognize();
    
     this.startScan();
    
     alert('创建');
    
     },
    
      mounted(){
        this.startRecognize();
        this.startScan();
        // this.isShow = true;
      },
    
     updated(){
    this.startRecognize();
    
     this.startScan();
    
     this.isShow = true;
    
     alert('更新');
    
     },
    
    // destroyed(){
    // console.log('aaa');
    
    }
    
     ,
    
      methods: {
      创建扫描控件
        startRecognize() {
    
          let that = this;
          if (!window.plus) return;
          scan = new plus.barcode.Barcode('bcid',filter,styles);
          console.log(scan)
          scan.onmarked = onmarked;
    
          function onmarked(type, result, file) {
             switch (type) {
            case plus.barcode.QR:
             type = 'QR';
             break;
             case plus.barcode.EAN13:
            type = 'EAN13';
             break;
             case plus.barcode.EAN8:
             type = 'EAN8';
             break;
             default:
             type = '其它' + type;
             break;
             }
    
            result = result.replace(/\n/g, '');
            that.codeUrl = result;
            alert(result);
          }
    
          that.startScan();
    
        },
    
        //开始扫描
        startScan() {
          if (!window.plus) return;
          scan.start();
        },
    
        //关闭扫描
        cancelScan() {
          if (!window.plus) return;
          scan.cancel();
        },
    
        //关闭条码识别控件
        closeScan() {
          if (!window.plus) return;
          scan.close();
        },
    
        goback() { // 返回
          this.closeScan()
          this.$router.push({ path: '/Transferoptions' });
          // this.isShow = false;
        }
      }
    }
    
    </script>
    
    <style lang="less" scoped>
    
    .scan {
      height: 100%;
      #bcid {
        width: 100%;
        position: absolute;
        left: 0;
        right: 0;
        top: 0;
        bottom:0;
        text-align: center;
        color: red;
        background: #fff;
      }
      footer {
        position: absolute;
        left: 0;
        bottom: 1rem;
        height: 2rem;
        line-height: 2rem;
        z-index: 2;
        display: flex;
        align-items: center;
        width: 100%;
        justify-content: space-between;
      }
    }
    
    </style>
    
    调用第三方(方法2 ---- 亲测好用)
    <template>
      <div>   
        <div title="扫码" class="topbar">     
          <router-link to="/home" slot="left" 
            @click.native='cancelScan' 
            class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left">
          </router-link>  
        </div>
        <div class="mui-content">
          <div class="scan">
            <div id="bcid">
            <div class="content"></div>
              <p class="tip">...载入中...</p>
            </div>
            <div class="footer">
              <button type="primary" @click="startScan" v-show="isShow">点击扫描</button>
              <button type="primary" @click="cancelScan">取消</button>
            </div>
          </div>
        </div>
      </div>
    </template>
    
    <script type='text/ecmascript-6'>
      let scan = null;
      //点手机虚拟返回键
      document. addEventListener( "plusready",  function() {
        // 注册返回按键事件
        plus.key.addEventListener('backbutton', function() {
          // 事件处理
          scan.close();
          //关闭条码识别控件
          window.history.
          back();
        }, false);
      });
     
      export default{
    
        data(){
          return{
            codeUrl: '',
            isShow:true
          }
        },
    
        components:{
          // topbar
        },
      
        mounted () {
          this.startScan()//进入页面就调取扫一扫
        },
        created(){
          this.startRecognize();
          this.startScan();
        },
      
        methods: {
          //创建扫描控件
          startRecognize() {
            let that = this;
            if (!window.plus) 
            return;
            that.isShow=false;
            // 创建条码扫描识别控件
            scan = new plus.barcode.Barcode('bcid');
            // 条码识别成功
            scan.onmarked = onmarked;
            function onmarked(type, result, file) {
              switch (type) {
                case plus.barcode.QR:
                type = 'QR';
                break;
                case plus.barcode.EAN13:
                type = 'EAN13';
                break;
                case 
                plus.barcode.EAN8:
                type = 'EAN8';
                break;
                default:
                type =  '其它' + type;
                break;
              }
          
              result = result.replace(/\n/g, '');
              that.codeUrl = result;
              //扫描后返回值
              alert(result);
              scan.cancel();
              //关闭扫描
              scan.close();
              //关闭条码识别控件
              if(that.codeUrl){
                that.isShow=true
              }
            }
    
          },
          //开始扫描
          startScan() {
            if (!window.plus)
            return;
            this.startRecognize()
            //创建控件
            scan.start();
          },
          cancelScan(){
            this.isShow = true;
            scan.cancel();
            //关闭扫描
            scan.close();
            //关闭条码识别控件
          }
    
        }
      };
    </script>
    
    <style scoped lang='less'>
     .mui-content{
       padding: 44px 0 60px 0; /*px*/
       box-sizing: 
       border-box;
       margin-top: 60px; /*px*/
     }
     .scan {
       height: 100%;
     }
     .scan #bcid {
       width: 100%;
       position: absolute;
       left: 0;
       right: 0;
       top:50px;/*px*/
       bottom:3rem;
       text-align: center;
       color: #fff;
       background: #ccc
     }
     .scan .footer {
       position:absolute;
       left: 50%;
       transform: translate(-50%);
       bottom: 10px;
       width: 100%;
       height: 30px;
       z-index: 2;
       display: flex;
       justify-content: center;
     }
    
     .scan footer button{
       width: 45%;
       font-size: 30px;/*px*/
     }
     .clickBtn,.cancelBtn{
       margin-top:20px;/*px*/
       width: 150px;/*px*/
       height: 60px;/*px*/
       text-align: 
       center;;
     }
     .cancelBtn{
       margin-left:20px;/*px*/
     }
    </style>
    

    相关文章

      网友评论

          本文标题:生成二维码 && 扫码二维码

          本文链接:https://www.haomeiwen.com/subject/gcpjbktx.html