higin.html 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta http-equv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1" />
  7. <meta name="format-detection" content="telephone=no" />
  8. <title>潜山市党建引领信用村(社区)建设</title>
  9. <meta name="keywords" content="潜山市党建引领信用村(社区)建设">
  10. <meta name="description" content="潜山市党建引领信用村(社区)建设">
  11. <script src="static/js/vue.js"></script>
  12. <script type="text/javascript" src="static/js/vue-router.js"></script>
  13. <script type="text/javascript" src="./static/js/jquery.min.js"></script>
  14. <script type="text/javascript" src="./static/js/qrcode.js"></script>
  15. <script src="static/js/common.js"></script>
  16. <link href="static/css/common.css" rel="stylesheet" />
  17. <link href="static/css/style.css" rel="stylesheet" />
  18. <script type="text/javascript" src="https://blog.minhazav.dev/assets/research/html5qrcode/html5-qrcode.min.js"></script>
  19. <style></style>
  20. </head>
  21. <body>
  22. <div id="app">
  23. <div>
  24. <div @click="getCameras">33</div>
  25. <div class="scan" :style="{'display':isScan ? 'none' : ''}">
  26. <div id="qr-reader" width="400px" height="400px">
  27. </div>
  28. </div>
  29. <div @click="stop">关闭</div>
  30. </div>
  31. <video id="video" width="640" height="480" autoplay></video>
  32. </div>
  33. <script type="text/javascript">
  34. </script>
  35. <script type="text/javascript">
  36. var app = new Vue({
  37. el: '#app',
  38. data: {
  39. cameraId: 0, //相机id
  40. isScan: true,
  41. startflag:false
  42. },
  43. created() {
  44. },
  45. destroyed (){
  46. this.stop()
  47. },
  48. mounted() {
  49. // this.init();
  50. // console.log(this.getQueryString("id"))
  51. },
  52. methods: {
  53. // init() {
  54. // util.addJs("https://blog.minhazav.dev/assets/research/html5qrcode/html5-qrcode.min.js");
  55. // },
  56. // 开始扫描
  57. getCameras() {
  58. if(!this.startflag){
  59. this.startflag=true
  60. Html5Qrcode.getCameras().then(devices => {
  61. if (devices) {
  62. if (devices.length == 1) {
  63. this.cameraId = devices[0].id;
  64. } else {
  65. this.cameraId = devices[1].id;
  66. }
  67. this.start();
  68. }
  69. }).catch(err => {
  70. this.$notify({
  71. type: 'warning',
  72. message: '调用摄像头失败 : ' + err
  73. });
  74. });
  75. }
  76. },
  77. // 启动相机
  78. start() {
  79. this.isScan = false;
  80. this.html5QrCode = new Html5Qrcode("qr-reader");
  81. this.html5QrCode.start(
  82. this.cameraId, {
  83. fps: 10,
  84. qrbox: {
  85. width: 250,
  86. height: 250
  87. }
  88. },
  89. qrCodeMessage => {
  90. console.log(qrCodeMessage,6)
  91. if (qrCodeMessage) {
  92. this.startflag=false
  93. this.stop();
  94. }
  95. }
  96. ).catch(err => {
  97. console.log(`Unable to start scanning, error: ${err}`);
  98. });
  99. },
  100. // 关闭相机
  101. stop() {
  102. this.isScan = true;
  103. this.html5QrCode.stop().then(ignore => {
  104. console.log("QR Code scanning stopped.");
  105. }).catch(err => {
  106. console.log("Unable to stop scanning.");
  107. });
  108. }
  109. },
  110. })
  111. </script>
  112. <script>
  113. </script>
  114. <style>
  115. .scan {
  116. width: 100%;
  117. height: 100vh;
  118. display: flex;
  119. align-items: center;
  120. justify-content: center;
  121. flex-direction: column;
  122. overflow: hidden;
  123. }
  124. </style>
  125. </body>
  126. </html>