#
whycq
2024-09-13 f9e93380e5192b35943769950c698c50b86febb6
#
3个文件已修改
3个文件已添加
182 ■■■■■ 已修改文件
pages.json 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/home/home.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/pakin/pakin.vue 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/pakin/test.vue 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/js/PresetsPda.js 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/js/scanModule.js 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages.json
@@ -184,7 +184,16 @@
                "enablePullDownRefresh" : false
            }
        }
    ],
        ,{
            "path" : "pages/pakin/test",
            "style" :
            {
                "navigationBarTitleText": "文本测试",
                "enablePullDownRefresh": false
            }
        }
    ],
    "globalStyle": {
        "navigationBarTextStyle": "black",
        "navigationBarTitleText": "uni-app",
pages/home/home.vue
@@ -31,6 +31,13 @@
                        cuIcon: 'pullup',
                        url: '/pakin/pakin'
                    },
                    {
                        title: '文本测试',
                        name: 'pakin',
                        color: 'cyan',
                        cuIcon: 'pullup',
                        url: '/pakin/test'
                    },
                    // {
                    //     title: '再次拣料',
                    //     name: 'changePallet',
pages/pakin/pakin.vue
@@ -130,6 +130,8 @@
</template>
<script>
    import {setCurrentDeviceAction} from '../../static/js/PresetsPda.js'
    import {initScan,startScan,stopScan} from '../../static/js/scanModule.js'
    export default {
        data() {
            return {
@@ -203,11 +205,32 @@
            },
            // 搜索物料
            findMat() {
                let that = this
                let _this = this
                initScan();
                startScan();
                let item = {}
                item['threeCode'] = that.matnr
                this.dataList.unshift(item)
                this.focuss()
                uni.$on("SCAN_CODE", ({code}) => {
                    console.log(code);
                    item['threeCode'] = code
                    if (_this.dataList.length > 0) {
                        let add = false
                        for    (let k of _this.dataList) {
                            if (code == k.threeCode) {
                                add = false
                            } else {
                                add = true
                            }
                        }
                        if (add) {
                            _this.dataList.unshift(item)
                        }
                    } else {
                        _this.dataList.unshift(item)
                    }
                    _this.focuss()
                    // code就是扫码的结果 接下来写业务需求
                });
            },
            selectMat() {
                let that = this
pages/pakin/test.vue
New file
@@ -0,0 +1,58 @@
<template>
    <view>
        <view>
            <!-- <input type="text" v-model="val" maxlength="600"/> -->
            <textarea v-model="val" placeholder="" maxlength="600" @input="input"/>
        </view>
        <hr>
        <view>
            {{val}}
        </view>
    </view>
</template>
<script>
    import {setCurrentDeviceAction} from '../../static/js/PresetsPda.js'
    import {initScan,startScan,stopScan} from '../../static/js/scanModule.js'
    export default {
        data() {
            return {
                val: ''
            }
        },
        onload() {
            console.log("onLoad");
            // 将本设备的信息存入本地
            setCurrentDeviceAction();
            // 初始化
            initScan();
        },
        destroyed() {
            stopScan();
        },
        methods: {
            input() {
                console.log(this.val);
                initScan();
                startScan();
                uni.$on("SCAN_CODE", ({code}) => {
                    console.log("code:" + code);
                    // code就是扫码的结果 接下来写业务需求
                });
            },
            mounted() {
                initScan();
                startScan();
                uni.$on("SCAN_CODE", ({code}) => {
                    console.log("code:" + code);
                    // code就是扫码的结果 接下来写业务需求
                });
            },
        }
    }
</script>
<style>
</style>
static/js/PresetsPda.js
New file
@@ -0,0 +1,30 @@
const deviceBrand = uni.getSystemInfoSync().deviceBrand;
// 目前已知的广播动作和广播标签 后续可继续叠加
// 自定义广播动作和标签也可进行预设
export const actionData = [{
        // 霍尼韦尔(默认广播和标签)
        deviceBrand: 'mobiwire',
        action: 'com.honeywell.scan.broadcast',
        stringExtra: 'data',
    },
    {
        // 优博讯(默认广播和标签)
        deviceBrand: 'urovo',
        action: 'android.intent.ACTION_DECODE_DATA',
        stringExtra: 'barcode_string',
    }
]
// 首页进入页面 将本设备的信息存入本地  如果该厂商没在预设中 就拿第一个位置的配置,根据项目中使用的PDA自行决定
export const setCurrentDeviceAction = () => {
    // 如果本地有存广播信息 就不拿了
    if (uni.getStorageSync('currentDeviceData')?.deviceBrand) return
    const data = actionData.find(item => deviceBrand === item.deviceBrand)
    if (data && Object.keys(data).length) {
        uni.setStorageSync('currentDeviceData', data)
    } else {
        uni.setStorageSync('currentDeviceData', actionData[0])
    }
};
static/js/scanModule.js
New file
@@ -0,0 +1,45 @@
let main, receiver, filter;
let _codeQueryTag = false; // 标记变量
export const initScan = () => {
  main = plus.android.runtimeMainActivity(); // 获取主 activity
  var IntentFilter = plus.android.importClass("android.content.IntentFilter");
  filter = new IntentFilter();
  const action = uni.getStorageSync('currentDeviceData').action // 获取动作
  const stringExtra = uni.getStorageSync('currentDeviceData').stringExtra // 获取字符串额外参数
  filter.addAction(action); // 添加广播动作
  receiver = plus.android.implements(
    "io.dcloud.feature.internal.reflect.BroadcastReceiver",
    {
      onReceive: function (context, intent) {
        plus.android.importClass(intent);
        let code = intent.getStringExtra(stringExtra); // 获取广播中的字符串额外参数
        console.log(code);
        queryCode(code);
      },
    }
  );
};
export const startScan = () => {
  main.registerReceiver(receiver, filter); // 开始监听广播
};
export const stopScan = () => {
    console.log(1);
  main.unregisterReceiver(receiver); // 停止监听广播
  // 解绑 uni 全局事件监听器,否则可能会出错
  uni.$off('SCAN_CODE');
};
export const queryCode = (code) => {
  // 防止重复查询
  if (_codeQueryTag) return false;
  _codeQueryTag = true; // 标记为已经查询
  setTimeout(function () {
    _codeQueryTag = false; // 重置标记
  }, 150);
  var id = code;
  //id 就是扫码的结果
  uni.$emit("SCAN_CODE", { code: id }); // 触发 SCAN_CODE 事件,并传递扫描到的内容
};