lilei 1 year ago
parent
commit
22242d3e7c

+ 25 - 2
libs/scan-code.vue

@@ -1,14 +1,26 @@
 <template>
-	<view class="content"></view>
+	<view class="content">
+		<keyboard-listener @keydown="keyDown" @keyup="keyUp"></keyboard-listener>
+	</view>
 </template>
  
 <script>
+	import keyboardListener from 'uniapp-keyboard-listener'
 	export default {
+		components: {
+			keyboardListener
+		  },
 		data() {
 			return {
 				activity: null,
 				receiver: null,
-				intentFilter: null
+				intentFilter: null,
+				sPtime: 0,
+				keys:{
+					'TVNetwork': 'leftKey',
+					'TVAntennaCable': 'rightKey',
+					'TVSatelliteToggle': 'midKey'
+				}
 			}
 		},
 		created: function(option) {
@@ -21,8 +33,19 @@
 		destroyed: function() {
 			//页面退出时一定要卸载监听,否则下次进来时会重复,造成扫一次出2个以上的结果/
 			this.stopScan();
+			this.sPtime = 0
 		},
 		methods: {
+			keyDown(e){
+				if(!this.sPtime){
+					this.sPtime = e.timeStamp
+				}
+			},
+			keyUp(e){
+				const len = e.timeStamp - this.sPtime
+				this.sPtime = 0
+				this.$emit('onKey',this.keys[e.key],e)
+			},
 			initScan() {
 				let _this = this;
 				/* #ifdef APP-PLUS */

+ 7 - 0
node_modules/uniapp-keyboard-listener/.vscode/settings.json

@@ -0,0 +1,7 @@
+{
+    "javascript.format.insertSpaceBeforeFunctionParenthesis": true,
+    "vetur.format.defaultFormatter.js": "vscode-typescript",
+    "typescript.format.semicolons": "remove",
+    "javascript.format.semicolons": "remove",
+    "javascript.format.insertSpaceAfterConstructor": true
+}

+ 59 - 0
node_modules/uniapp-keyboard-listener/README.md

@@ -0,0 +1,59 @@
+# uniapp-keyboard-listener
+
+uni-app 全局按键事件监听。
+
+支持App端和H5端,一般用于监听硬件设备(键盘、扫描枪)按键事件。
+
+## 使用方式
+
+### NPM
+
+```
+npm i uniapp-keyboard-listener --save
+```
+
+```js
+import keyboardListener from 'uniapp-keyboard-listener'
+export default {
+  components: {
+    keyboardListener
+  }
+}
+```
+
+### 直接下载
+
+```js
+// 以下路径需根据项目实际情况填写
+import keyboardListener from '../../components/keyboard-listener'
+export default {
+  components: {
+    keyboardListener
+  }
+}
+```
+
+## 事件
+
+事件对象基本和浏览器事件 [KeyboardEvent](https://developer.mozilla.org/zh-CN/docs/Web/API/KeyboardEvent) 一致
+
+### keydown
+
+监听按键按下事件
+
+```html
+<keyboard-listener @keydown="onKeydown"></keyboard-listener>
+```
+
+### keyup
+
+按键松开事件
+
+```html
+<keyboard-listener @keyup="onKeyup"></keyboard-listener>
+```
+
+## 提示
+
+* 移动端软键盘无法判断具体按键(仅可判断 Enter 等)
+* 示例工程 [uniapp-keyboard-listener-demo](https://github.com/zhetengbiji/uniapp-keyboard-listener-demo/tree/master/test/uniapp-keyboard-listener-demo) 需要先安装 NPM 依赖。

+ 54 - 0
node_modules/uniapp-keyboard-listener/package.json

@@ -0,0 +1,54 @@
+{
+  "_from": "uniapp-keyboard-listener",
+  "_id": "uniapp-keyboard-listener@1.0.3",
+  "_inBundle": false,
+  "_integrity": "sha512-fLOMvc8pX2cSAhHxgWCz6Vlfduk4OdCEUGh2hzLnd95HeT2zI1eYGA04RgvCJq+Gk2r6cSWHWRW7e3zGUcJ+9A==",
+  "_location": "/uniapp-keyboard-listener",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "tag",
+    "registry": true,
+    "raw": "uniapp-keyboard-listener",
+    "name": "uniapp-keyboard-listener",
+    "escapedName": "uniapp-keyboard-listener",
+    "rawSpec": "",
+    "saveSpec": null,
+    "fetchSpec": "latest"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmmirror.com/uniapp-keyboard-listener/-/uniapp-keyboard-listener-1.0.3.tgz",
+  "_shasum": "bfc5a24f6506d0183b4c40e48944333d0fa7921f",
+  "_spec": "uniapp-keyboard-listener",
+  "_where": "D:\\jianguan\\apls-checkGoods-app",
+  "author": "",
+  "bugs": {
+    "url": "https://github.com/zhetengbiji/uniapp-keyboard-listener-demo/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "uni-app 全局按键事件监听",
+  "homepage": "https://github.com/zhetengbiji/uniapp-keyboard-listener-demo#readme",
+  "keywords": [
+    "键盘",
+    "按键",
+    "扫描",
+    "扫码",
+    "keyboard",
+    "keydown",
+    "keyup"
+  ],
+  "license": "ISC",
+  "main": "src/keyboard-listener.vue",
+  "name": "uniapp-keyboard-listener",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zhetengbiji/uniapp-keyboard-listener-demo.git"
+  },
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "1.0.3"
+}

+ 40 - 0
node_modules/uniapp-keyboard-listener/src/keyboard-listener.vue

@@ -0,0 +1,40 @@
+<template>
+  <view></view>
+</template>
+
+<script>
+export default {
+  methods: {
+    onEvent(event) {
+      this.$emit(event.type, event)
+    },
+  },
+}
+</script>
+
+<script module="keyboard" lang="renderjs">
+export default {
+  mounted () {
+    const onKey = (event) => {
+      const keys1 = ['type', 'timeStamp']
+      const keys2 = ['altKey', 'code', 'ctrlKey', 'isComposing', 'key', 'location', 'metaKey', 'repeat', 'shiftKey']
+      const keys3 = ['char', 'charCode', 'keyCode', 'keyIdentifier', 'keyLocation', 'which']
+      const data = {}
+      keys1.concat(keys2, keys3).forEach(key => data[key] = event[key])
+      this.$ownerInstance.callMethod('onEvent', data)
+    }
+    const names = ['keydown', 'keyup']
+    names.forEach(name => {
+      document.addEventListener(name, onKey, false)
+    })
+    this.$on('hook:beforeDestroy', () => {
+      names.forEach(name => {
+        document.removeEventListener(name, onKey, false)
+      })
+    })
+  }
+}
+</script>
+
+<style>
+</style>

+ 5 - 0
package-lock.json

@@ -4,6 +4,11 @@
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
+    "uniapp-keyboard-listener": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/uniapp-keyboard-listener/-/uniapp-keyboard-listener-1.0.3.tgz",
+      "integrity": "sha512-fLOMvc8pX2cSAhHxgWCz6Vlfduk4OdCEUGh2hzLnd95HeT2zI1eYGA04RgvCJq+Gk2r6cSWHWRW7e3zGUcJ+9A=="
+    },
     "uview-ui": {
       "version": "2.0.31",
       "resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.31.tgz",

+ 1 - 0
package.json

@@ -10,6 +10,7 @@
   "author": "",
   "license": "ISC",
   "dependencies": {
+    "uniapp-keyboard-listener": "^1.0.3",
     "uview-ui": "^2.0.31"
   }
 }

+ 5 - 1
pages/stockPan/index.vue

@@ -80,7 +80,7 @@
 			<button size="mini" type="warn" @click="addQty(false)"> <text class="iconfont icon-reduce-btn"> 减 </text></button>
 			<button size="mini" type="primary" @click="addQty(true)"> <text class="iconfont icon-add-btn"> 加 </text></button>
 		</view>
-		<scanCode></scanCode>
+		<scanCode @onKey="onKey"></scanCode>
 	</view>
 </template>
 
@@ -146,6 +146,10 @@
 			hideKeyborder(){
 				uni.hideKeyboard()
 			},
+			// 物理按键
+			onKey(key,e){
+				console.log(key,e)
+			},
 			// 修改数量和成本
 			updateCurr(){
 				if(this.curProduct.checkQty>0){

File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/app-plus/app-service.js


File diff suppressed because it is too large
+ 102 - 31
unpackage/dist/dev/app-plus/app-view.js


Some files were not shown because too many files changed in this diff