scan-code.vue 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <template>
  2. <view class="content"></view>
  3. </template>
  4. <script>
  5. var main,receiver,filter;
  6. var _codeQueryTag = false;
  7. export default {
  8. data() {
  9. return {
  10. scanCode:''
  11. }
  12. },
  13. created: function (option) {
  14. this.initScan()
  15. this.startScan();
  16. },
  17. onHide:function(){
  18. this.stopScan();
  19. },
  20. destroyed:function(){
  21. /*页面退出时一定要卸载监听,否则下次进来时会重复,造成扫一次出2个以上的结果*/
  22. this.stopScan();
  23. },
  24. methods: {
  25. initScan() {
  26. let that = this;
  27. main = plus.android.runtimeMainActivity(); //获取activity
  28. var receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
  29. onReceive: that.pdaReceive
  30. });
  31. var IntentFilter = plus.android.importClass('android.content.IntentFilter');
  32. var filter = new IntentFilter();
  33. filter.addAction("nlscan.action.SCANNER_RESULT"); //监听扫描
  34. main.registerReceiver(receiver, filter); //注册监听
  35. console.log('!!!!!!!!!!!!!!!!!!!!!!!!PDA发起监听!!!!!!!!!!!!!!!!!!!!!!!!!')
  36. },
  37. //接收pda扫码
  38. pdaReceive(context, intent) {
  39. //通过intent实例引入intent类,方便以后的'.'操作
  40. plus.android.importClass(intent)
  41. var productIdCode = intent.getStringExtra("SCAN_BARCODE1")
  42. this.queryCode(productIdCode)
  43. },
  44. startScan(){
  45. main.registerReceiver(receiver,filter);
  46. },
  47. stopScan(){
  48. main.unregisterReceiver(receiver);
  49. },
  50. queryCode: function(code){
  51. //防重复
  52. if(_codeQueryTag){
  53. return false
  54. }
  55. _codeQueryTag = true;
  56. setTimeout(function(){
  57. _codeQueryTag = false;
  58. },150)
  59. uni.$emit('scancodedate',{code:code})
  60. }
  61. }
  62. }
  63. </script>
  64. <style>
  65. page {
  66. background-color: #efeff4;
  67. }
  68. .content {
  69. text-align: center;
  70. }
  71. </style>