<template>
|
<el-input
|
οnkeyup="this.value=this.value.replace(/\D|/g,'')"
|
clearable
|
maxlength="116"
|
v-model="codeValue"
|
placeholder="请输入条形码"
|
/>
|
</template>
|
<script>
|
export default {
|
data(){
|
return {
|
codeValue: "",
|
code: "",
|
lastTime: "",
|
nextTime: "",
|
lastCode: "",
|
nextCode: "",
|
dtmainId: "",
|
};
|
},
|
created() {
|
window.document.onkeypress = (e) => {
|
if (window.event) {
|
// IE
|
this.nextCode = e.keyCode;
|
} else if (e.which) {
|
// Netscape/Firefox/Opera
|
this.nextCode = e.which;
|
}
|
if (e.which === 13) {
|
// 键盘回车事件
|
if (this.code.length < 3) return; // 扫码枪的速度很快,手动输入的时间不会让code的长度大于2,所以这里不会对扫码枪有效
|
|
//console.log("扫码结束。");
|
//console.log("条形码:", this.code);
|
this.parseQRCode(this.code); // 获取到扫码枪输入的内容,做别的操作
|
this.lastCode = "";
|
this.lastTime = "";
|
return;
|
}
|
this.nextTime = new Date().getTime();
|
if (!this.lastTime && !this.lastCode) {
|
this.code = ""; // 清空上次的条形码
|
this.code += e.key;
|
//console.log("扫码开始---", this.code);
|
}
|
if (this.lastCode && this.lastTime && this.nextTime - this.lastTime > 500) {
|
// 当扫码前有keypress事件时,防止首字缺失
|
this.code = e.key;
|
//console.log("防止首字缺失。。。", this.code);
|
} else if (this.lastCode && this.lastTime) {
|
this.code += e.key;
|
//console.log("扫码中。。。", this.code);
|
}
|
this.lastCode = this.nextCode;
|
this.lastTime = this.nextTime;
|
};
|
},
|
methods: {
|
parseQRCode(code) {
|
// if (code.length === 16) {
|
// console.log(code);
|
// } else if (code.length === 0) {
|
// console.log("请输入条码!");
|
// } else {
|
// alert("条码不合法:" + code);
|
// }
|
this.codeValue = code;
|
// 发送网络请求
|
},
|
},
|
}
|
</script>
|
<style scoped lang="scss">
|
|
</style>
|