l***@126.com
l***@126.com
  • 发布:2023-03-08 10:12
  • 更新:2023-12-19 15:18
  • 阅读:420

【报Bug】使用uni-easyinput 接收PDA扫码的值偶尔会出现缺失

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 11

HBuilderX类型: 正式

HBuilderX版本号: 3.6.4

手机系统: Android

手机系统版本号: Android 7.1.1

手机厂商: UROVO

手机机型: i6200Series

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
<template>  
    <view class="container">  
        <title-tip :showIf=showErrMsg :msg="this.msg"></title-tip>  
        <view class="form">  
            <uni-forms ref="form" :model="form" labelWidth="70px">  
                <uni-row :gutter="10">  
                    <uni-col :span="14">  
                        <uni-forms-item label="标签" label-width="75px" name="outerBoxLabelEx">  
                            <uni-easyinput id="myOuterInput" v-model="form.outerBoxLabelEx" placeholder=""  
                                @confirm="input($event)" :focus="isOuterFocus" />  
                            <!-- <input ref="testBinderCode" v-model="form.outerBoxLabelEx" :focus="isOuterFocus" @confirm="input($event)" class="input" /> -->  
                        </uni-forms-item>  
                    </uni-col>  
                </uni-row>  
            </uni-forms>  
        </view>  
        <view class="table">  
            <uni-table ref="table" :border="true" :loading="loading" emptyText="暂无更多数据" type="selection"  
                @selection-change="selectionChange">  
                <uni-tr>  
                    <uni-th width="95" align="center">标签</uni-th>  
                </uni-tr>  
                <uni-tr v-for="(item, index) in outerBoxLabelList" :key="index">  
                    <uni-td>{{ item.outerBoxLabel }}</uni-td>  
                </uni-tr>  
            </uni-table>  
        </view>  
        <!-- <view class="box">  
            <scanCode @setData="getScanCode"></scanCode>  
        </view> -->  
    </view>  
</template>  

<script>  
    import {  
        getLabel,  
        getBoxLabelInfo,  
        unBindingBoxLabel,  
        bindTray  
    } from "@/api/label/trayLabel"  
    import {  
        setTimeout  
    } from "timers";  

    export default {  
        data() {  
            return {  
                msg: null,  
                showErrMsg: false,  
                form: {  
                    outerBoxLabelEx: null,  
                },  
                /**控制绑定按钮*/  
                bindingButton: false,  
                loading: false,  
                outerBoxLabelList: [],  
                // 数据总量  
                total: 0,  
                // 每页数据量  
                pageSize: 10,  
                // 当前页  
                pageNum: 1,  
                // 外箱标签获取焦点  
                isOuterFocus: false,  

            }  
        },  
        onLoad() {  
            this.selectedIndexs = [];  
        },  
        methods: {  
            /**多选处理*/  
            selectedItems() {  
                return this.selectedIndexs.map(i => this.outerBoxLabelList[i])  
            },  
            /**多选*/  
            selectionChange(e) {  
                this.selectedIndexs = e.detail.index;  
            },  
            inputTest(e) {  
                setTimeout(() => {  
                    const labelInfo = {};  
                    labelInfo.outerBoxLabel = e.target.value;  
                    this.outerBoxLabelList.push(labelInfo);  
                    // 设为空,重新赋予焦点  
                    this.form.outerBoxLabelEx = null;  
                    this.isOuterFocus = false;  
                    var that = this;  
                    setTimeout(() => {  
                        that.$nextTick(function() {  
                            this.isOuterFocus = true;  
                        });  
                    }, 300)  
                }, 300)  
            },  
            resetForm() {  
                this.form = {  
                    outerBoxLabelListEx: [],  
                };  
                this.outerBoxLabelList = [];  
                //清除之前的选中状态  
                this.$refs.table.clearSelection();  
                // 初始化已选集合  
                this.selectedIndexs = [];  
                this.showErrMsg = false;  
            },  
        }  
    }  
</script>  

<style lang="scss" scoped>  
    page {  
        height: 100%;  
        background-color: #ffffff;  
    }  

    .container {  
        width: 100%;  
        height: 100%;  
        background-color: #fff;  
    }  

    .form {  
        padding: 10px;  
    }  

    .tray-box-button {  
        padding: 10px;  
    }  

    .form-submit {  
        margin-left: 6px;  
        margin-top: 4px;  
    }  

    /deep/.uni-forms-item__label {  
        padding: 0 4px 0 8px;  
    }  

    // !important 解决样式被element.style 覆盖  
    .uni-table-th {  
        padding: 6px 5px;  
        font-size: 12px;  
    }  

    .uni-table-td {  
        padding: 8px 6px;  
        font-size: 13px;  
    }  
</style>  

操作步骤:

使用PDA终端打开页面,点击easyinput输入框进行扫描

预期结果:

获取到完整的值传递给后端

实际结果:

输入框的值是OUTLABEL00001 传递给后端的是OUTLABEL0000或OUTLABEL0

bug描述:

使用uni-easyinput 接收PDA扫码的值偶尔会出现缺失
PDA扫描设置:

  1. 键盘方式输出
  2. 物理键盘
  3. 操作键字符:Carriage return
  4. UTF-8编码
2023-03-08 10:12 负责人:无 分享
已邀请:
l***@126.com

l***@126.com (作者)

请问下你们是怎么解决的?使用PDA扫码选择键盘方式输入到输入框自动回车,传递给后端的值会缺失部分,百分百复现

要回复问题请先登录注册