vue项目element UI input框扫码枪扫描过快出现数据丢失问题及解决方案

 更新时间:2022年12月06日 10:39:53   作者:蓝胖子的多啦A梦  
这篇文章主要介绍了vue项目element UI input框扫码枪扫描过快出现数据丢失问题,输入框要掉两个接口,根据第一个验证接口返回的code,弹不同的框,点击弹框确认再掉第二个接口,需要的朋友可以参考下

项目需求:

输入框要掉两个接口,根据第一个验证接口返回的code,弹不同的框,点击弹框确认再掉第二个接口

根据客户现场反应,扫描枪快速扫描会出现 料号前几位字符丢失 不完整的问题。于是开始了测试之路。

解决方案探索

1.首先考虑 ,可能是因为扫描过快,服务端接口还没返回过来,输入框就已经清空了值 导致条码有丢失字符的现象,所以我这边做了一个缓存,将输入框的值存到一个数组中去,定时上传到接口。 【x】
2.考虑到可能是因为vue原因影响,就将element的 el-input,改为原生js Input框。【x】
3.输入框加自动聚焦自定义指令,确保输入完成输入框不会失去焦点 【x】,因为el-input enter键触发完成后,输入框焦点还在。 【x】

4.最后分析,让客户给现场的服务器日志发送过来,查看前端传到接口中的 条码 是怎样的一个缺失状态。
通过查看 服务器日志,发现输入框在调取第一个验证接口时,条码发送的是完整的 并没有缺失,紧接着调取的第二个接口 条码就出现了问题。

**第二个接口传值时: 条码会多出来几位,导致第二次再去扫入,第二次的条码会丢失几位 **

查到问题 就好解决啦~

错误代码:

this.barcode: 输入框的值

verifyPutIn:输入框第一次调用的 验证接口

getInput():调用第二个接口的方法

问题就出在

第二个接口方法里,传参的时候, code:this.barcode,code 是又从输入框获取了一次值,这个时候就会有问题
因为扫码枪在快速扫描的时候,速度很快,字符过长,页面读取速度会有些慢,这时候重新从输入框获取值,这个值并不是刚开始的输入值了,可能会带有第二次扫入的几个字符

所以服务器日志中看到的, 第二个接口传过来的条码号会多字符,第二次条码号的前几位 字符****会丢失 就是这个原因啦 !!!

解决方法

第二个接口调取时code值 不要再从输入框获取,而是把第一个接口传的输入框值传过来,给第二个接口用

完整代码 如下

<el-input  v-model="barcode" clearable size="small" placeholder="请扫描条码编号" style="width: 200px" 
 class="filter-item" @keyup.enter.native="toQuery()"  />
  <script>
   export default {
     data() {
       return {
         barcode:''
       }
    } 
   methods: {
    toQuery() {
      let verifyParam = {};
      verifyParam = {
        barcode: this.barcode,
        name: this.pageOrderName,
      };
      this.barcode = null;
      verifyPutIn(verifyParam).then((res) => {
        if (res.code == 0) {
          this.getInput(verifyParam.barcode);
        } else {
          this.$confirm(
            res.msg, res.code == -1 ? "是否强制⼊库?" : "强制⼊库",
            {
              confirmButtonText: window.vm.$i18n.t("backTips.confirm"),
              cancelButtonText: window.vm.$i18n.t("backTips.cancel"),
              type: "warning",
            }
          ).then(() => {
            this.getInput(verifyParam.barcode);
          });
        }
      });
    },
    getInput(codeStr) {
      this.queryParams = {
        code: codeStr,
        name: this.pageOrderName,
      };
      operatePos(this.queryParams).then((res) => {
        if (res.code == 0) {
          this.name = "";
          // 开启自动播放
          this.audio.autoplay = true;
          this.audio.src = this.successUrl;
          if (res.data) {
            this.sonList = res.data;
            this.getNumList(this.sonList);
            this.poData = res.data.lastScanBoxCode.slice(
              res.data.lastScanBoxCode.length - 1
            );
            this.boxName = res.data.currentRfid.slice(0, 2);
            this.boxPartitionCounts = [];
            for (let i = 0; i < res.data.boxPartitionCounts.length; i++) {
              this.boxPartitionCounts.push({
                latticeNumber: this.boxNoList[i],
                amount: res.data.boxPartitionCounts[i],
              });
            }
            this.resSize = res.data.platsize;
          }
          this.$infoMsg.showInfoMsg(res.msg, this);
        } else {
          // 开启自动播放
          this.audio.autoplay = true;
          this.audio.src = this.errorUrl;
          this.$infoMsg.showErrorMsg(res.msg, this);
        }
      });
    }, 
 }
  </script>

到此这篇关于vue项目element UI input框扫码枪扫描过快出现数据丢失问题的文章就介绍到这了,更多相关vue扫码枪内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue路由监听实现同页面动态加载的示例

    Vue路由监听实现同页面动态加载的示例

    本文主要介绍了Vue基于路由监听实现同页面动态加载的示例,重点在于切换路由的时候,重新拉取列表数据,接下来看看实现方法吧
    2021-05-05
  • vue给组件传递不同的值方法

    vue给组件传递不同的值方法

    今天小编就为大家分享一篇vue给组件传递不同的值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • 使用elementuiadmin去掉默认mock权限控制的设置

    使用elementuiadmin去掉默认mock权限控制的设置

    这篇文章主要介绍了使用elementuiadmin去掉默认mock权限控制的设置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 前端小技能之Vue集成百度离线地图功能总结

    前端小技能之Vue集成百度离线地图功能总结

    最近项目里集成了百度地图的一些功能,所以下面这篇文章主要给大家介绍了关于前端小技能之Vue集成百度离线地图功能的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • 记一次Vue中$route序列号报错

    记一次Vue中$route序列号报错

    本文主要介绍了记一次Vue中$route序列号报错,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Vue点击在弹窗外部实现一键关闭的示例代码

    Vue点击在弹窗外部实现一键关闭的示例代码

    在Vue应用中,弹窗是一个常见的交互元素,有时我们可能希望用户点击弹窗外部时,弹窗能够自动关闭,本文主要介绍了Vue点击在弹窗外部实现一键关闭的示例代码,感兴趣的可以了解一下
    2024-06-06
  • Vue2项目升级到Vue3的详细教程

    Vue2项目升级到Vue3的详细教程

    看到好多开源项目都升级了vue3,下面这篇文章主要给大家介绍了关于Vue2项目升级到Vue3的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • vue+el-select 多数据分页搜索组件的实现

    vue+el-select 多数据分页搜索组件的实现

    本文主要介绍了vue+el-select 多数据分页搜索组件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • vue 点击其他区域关闭自定义div操作

    vue 点击其他区域关闭自定义div操作

    这篇文章主要介绍了vue 点击其他区域关闭自定义div操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • vue实现自定义多选与单选的答题功能

    vue实现自定义多选与单选的答题功能

    这篇文章主要介绍了使用vue实现自定义多选与单选的答题功能,vue组件中在表单方面提供了一个v-model指令,非常好用,具体实现过程大家跟随脚本之家小编一起看看吧
    2018-07-07

最新评论