spring
5 天以前 2f26ba8f2c8f5c67e5ed16f4e89baaef82d70a3b
联调pda扫码功能,解决pda上面样式问题
已修改6个文件
已重命名12个文件
246 ■■■■ 文件已修改
components/scan/scan.vue 168 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manifest.json 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/product/feed/locationList.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/product/report/index.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/sys/home/index.vue 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/sys/user/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/custom/home/eight.png 补丁 | 查看 | 原始文档 | blame | 历史
static/custom/home/eleven.png 补丁 | 查看 | 原始文档 | blame | 历史
static/custom/home/five.png 补丁 | 查看 | 原始文档 | blame | 历史
static/custom/home/four.png 补丁 | 查看 | 原始文档 | blame | 历史
static/custom/home/nine.png 补丁 | 查看 | 原始文档 | blame | 历史
static/custom/home/one.png 补丁 | 查看 | 原始文档 | blame | 历史
static/custom/home/seven.png 补丁 | 查看 | 原始文档 | blame | 历史
static/custom/home/six.png 补丁 | 查看 | 原始文档 | blame | 历史
static/custom/home/ten.png 补丁 | 查看 | 原始文档 | blame | 历史
static/custom/home/three.png 补丁 | 查看 | 原始文档 | blame | 历史
static/custom/home/twelve.png 补丁 | 查看 | 原始文档 | blame | 历史
static/custom/home/two.png 补丁 | 查看 | 原始文档 | blame | 历史
components/scan/scan.vue
@@ -1,6 +1,7 @@
<template>
    <view>
        <view class="content">
            <!-- <text>扫描结果:{{ scanResult }}</text> -->
        </view>
    </view>
</template>
@@ -9,85 +10,158 @@
    var main, receiver, filter;
    var action, extraKey;
    var _codeQueryTag = false;
    export default {
        data() {
            return {
                scanCode: ''
            scanCode: '',
            scanResult: ''
            }
        },
        created: function(option) {
    created() {
            uni.getSystemInfo({
                success: (res) => {
                    var brand = res.brand.toUpperCase();
                    var model = res.model.toUpperCase();
                console.log('设备品牌:', brand);
                console.log('设备型号:', model);
                // Zebra设备配置
                    if (brand.indexOf("ZEBRA")!=-1 && model.indexOf("TC2")!=-1) {
                         action = "com.zebra.scan";
                         extraKey = "com.motorolasolutions.emdk.datawedge.data_string";
                    } else if (brand.indexOf("SEUIC")!=-1||brand.indexOf("AUTOID")!=-1) {
                }
                // AUTOID9N设备配置
                else if (brand.indexOf("SEUIC") != -1 || brand.indexOf("AUTOID") != -1) {
                    // AUTOID9N专用配置
                    if (model.indexOf("AUTOID9N") != -1) {
                        action = "com.android.server.scannerservice.broadcast";
                        extraKey = "scannerdata"; // 或 "BARCODE_STRING",根据实际情况调整
                    }
                    // 其他SEUIC设备
                    else {
                         action = "com.android.server.scannerservice.broadcast";
                         extraKey = "scannerdata";
                    }else{
                    }
                }
                else {
                    console.log('未知设备品牌,无法初始化扫码');
                        return;
                    }
                    console.log(action);
                    console.log(extraKey);
                    this.initScan()
                console.log('扫码广播配置:', { action, extraKey });
                this.initScan();
                    this.startScan();
                }
            })
        },
        onHide: function() {
            this.stopScan();
        },
        destroyed: function() {
            this.stopScan();
        },
        methods: {
            initScan() {
                console.log('initScan');
                let _this = this;
                main = plus.android.runtimeMainActivity(); //获取activity
                var IntentFilter = plus.android.importClass('android.content.IntentFilter');
                filter = new IntentFilter();
                //下面的addAction内改为自己的广播动作
                filter.addAction(action);
                receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
                    onReceive: function(context, intent) {
                        console.log('onReceive');
                        plus.android.importClass(intent);
                        //下面的getStringExtra内改为自己的广播标签--有误
                        let code = intent.getStringExtra(extraKey);
                        _this.queryCode(code);
            fail: (err) => {
                console.error('获取系统信息失败:', err);
                    }
                });
            },
    onLoad() {
        // 监听全局扫码事件
        uni.$on('scan', (event) => {
            this.scanResult = event.code;
            console.log('扫码结果:', this.scanResult);
        });
    },
    onUnload() {
        this.stopScan();
        uni.$off('scan'); // 移除事件监听
    },
    methods: {
        initScan() {
            console.log('初始化扫码接收器');
            try {
                main = plus.android.runtimeMainActivity(); // 获取activity
                var IntentFilter = plus.android.importClass('android.content.IntentFilter');
                filter = new IntentFilter();
                filter.addAction(action);
                console.log('注册广播过滤器:', action);
                receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
                    onReceive: function (context, intent) {
                        console.log('接收到扫码广播');
                        try {
                            plus.android.importClass(intent);
                            let code = intent.getStringExtra(extraKey);
                            if (code) {
                                console.log('扫码内容:', code);
                                this.queryCode(code);
                            } else {
                                console.warn('扫码内容为空,可能ExtraKey不正确:', extraKey);
                                // 尝试备选ExtraKey
                                const altExtraKey = extraKey === "BARCODE_STRING" ? "scannerdata" : "BARCODE_STRING";
                                code = intent.getStringExtra(altExtraKey);
                                if (code) {
                                    console.log('使用备选ExtraKey获取到内容:', altExtraKey);
                                    this.queryCode(code);
                                }
                            }
                        } catch (e) {
                            console.error('处理扫码广播时出错:', e);
                        }
                    }.bind(this) // 确保this指向组件实例
                });
                console.log('扫码接收器初始化成功');
            } catch (e) {
                console.error('初始化扫码接收器失败:', e);
            }
        },
            startScan() {
                console.log('startScan');
            console.log('开始监听扫码广播');
            try {
                if (main && receiver && filter) {
                main.registerReceiver(receiver, filter);
                    console.log('广播接收器已注册');
                } else {
                    console.error('无法注册广播接收器: 组件未初始化');
                }
            } catch (e) {
                console.error('注册广播接收器失败:', e);
            }
            },
            stopScan() {
                console.log('stopScan');
            console.log('停止监听扫码广播');
            try {
                if (main && receiver) {
                main.unregisterReceiver(receiver);
                    console.log('广播接收器已注销');
                }
            } catch (e) {
                console.error('注销广播接收器失败:', e);
            }
            },
            queryCode: function(code) {
                console.log('queryCode');
                if (_codeQueryTag) return false;
        queryCode(code) {
            console.log('处理扫码结果:', code);
            if (_codeQueryTag) {
                console.log('忽略重复扫码');
                return false;
            }
                _codeQueryTag = true;
                setTimeout(function() {
            // 防抖处理
            setTimeout(() => {
                    _codeQueryTag = false;
                }, 150);
                var id = code
                uni.$emit('scan', {
                    code: id
                })
            // 触发全局事件
            uni.$emit('scan', { code });
            }
        }
    }
</script>
<style>
</style>
<style></style>
manifest.json
@@ -56,7 +56,10 @@
                    "<uses-permission android:name=\"android.permission.BLUETOOTH\"/>",
                    "<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"/>",
                    "<uses-permission android:name=\"android.permission.BLUETOOTH_CONNECT\"/> ",
                    "<uses-permission android:name=\"android.permission.BLUETOOTH_SCAN\"/>"
          "<uses-permission android:name=\"android.permission.BLUETOOTH_SCAN\"/>",
          "<uses-permission android:name=\"android.permission.RECEIVE_SMS\"/>",
          "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
          "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>"
                ],
                "abiFilters" : [ "armeabi-v7a", "arm64-v8a" ]
            },
pages/product/feed/locationList.vue
@@ -80,9 +80,7 @@
        },
        onShow() {
            let that = this
            uni.$off('scan') // 每次进来先 移除全局自定义事件监听器
            uni.$on('scan', function(data) {
                console.log('onscan');
@@ -192,5 +190,8 @@
        text-align: right;
    }
    
    .nodata{width: 20%;margin: auto;}
.nodata {
    width: 20%;
    margin: auto;
}
</style>
pages/product/report/index.vue
@@ -60,14 +60,16 @@
      </u-field>
    </modalBg>
    <saveForm ref="saveForm" />
    <scan></scan>
  </div>
</template>
<script>
import modalBg from '@/components/modal/modal-bg.vue'
import saveForm from './components/saveForm.vue'
import scan from "@/components/scan/scan.vue";
export default {
  components: { modalBg, saveForm },
  components: { modalBg, saveForm, scan },
  data() {
    return {
      checkboxList: [
@@ -173,6 +175,22 @@
  onReady() {
    this.$refs.uForm.setRules(this.rules);
  },
  onShow() {
    let that = this
    uni.$off('scan') // 每次进来先 移除全局自定义事件监听器
    uni.$on('scan', function (data) {
      console.log('onscan');
      //扫码成功后的回调,你可以写自己的逻辑代码在这里
      console.log('页面扫码结果:', data.code);
      if (data.code) {
        let codeInfo = JSON.parse(data.code)
        if (codeInfo.WorkNo) {
          // 扫描报工单二维码
          that.saveForm(codeInfo);
        }
      }
    })
  },
  methods: {
    // 多选处理
    changeCheckbox(val) {
@@ -205,8 +223,16 @@
        url: '/pages/product/report/orderList'
      })
    },
    // 存订单号
    setNo(val) {
      this.form.value3 = val
    },
    // 回显扫码的信息-报工单
    saveForm(val) {
      let { WorkNo, ProcessName, ORDER_NO } = val
      this.form.value1 = WorkNo
      this.form.value2 = ProcessName
      this.form.value3 = ORDER_NO
    }
  }
}
pages/sys/home/index.vue
@@ -11,7 +11,8 @@
            <u-grid :border="false">
                <u-grid-item v-for="(baseListItem, baseListIndex) in item.list" :key="baseListIndex"
                    @click="navTo(baseListItem.url)">
                    <img :src="require(`@/static/custom/home/${baseListItem.icon}.png`)" alt="">
                    <view class="img" :style="`background: url(../../../static/custom/home/${baseListItem.icon}.png) no-repeat;`">
                    </view>
                    <text class="grid-text">{{ baseListItem.name }}</text>
                </u-grid-item>
            </u-grid>
@@ -29,27 +30,27 @@
                        {
                            name: '报工',
                            url: '/pages/product/report/index',
                            icon: '报工'
                            icon: 'one'
                        },
                        {
                            name: '取消报工',
                            url: '/pages/product/cancelReport/index',
                            icon: '取消报工'
                            icon: 'two'
                        },
                        {
                            name: '接收(铜杆)',
                            url: '/',
                            icon: '接收(铜杆)'
                            icon: 'three'
                        },
                        {
                            name: '车间订单下发',
                            url: '/',
                            icon: '车间订单下发'
                            icon: 'four'
                        },
                        {
                            name: '车间取消下发',
                            url: '/',
                            icon: '车间取消下发'
                            icon: 'five'
                        },
                    ]
                },
@@ -59,27 +60,27 @@
                        {
                            name: '移库',
                            url: '/pages/wareHouse/moveWareHouse/index',
                            icon: '移库'
                            icon: 'six'
                        },
                        {
                            name: '盘点报告盘点',
                            url: '/pages/wareHouse/inventory/index',
                            icon: '盘点报告盘点'
                            icon: 'seven'
                        },
                        {
                            name: '核磅录入',
                            url: '/pages/wareHouse/packing/registration',
                            icon: '核磅录入'
                            icon: 'eight'
                        },
                        {
                            name: '库存件盘点',
                            url: '/pages/wareHouse/inventory/index',
                            icon: '库存件盘点'
                            icon: 'nine'
                        },
                        {
                            name: '导体备货盘点',
                            url: '/pages/wareHouse/inventory/index',
                            icon: '导体备货盘点'
                            icon: 'ten'
                        },
                    ]
                },
@@ -89,12 +90,12 @@
                        {
                            name: '领料',
                            url: '/pages/wareHouse/moveWareHouse/index',
                            icon: '领料'
                            icon: 'eleven'
                        },
                        {
                            name: '取消领料',
                            url: '/pages/wareHouse/inventory/index',
                            icon: '取消领料'
                            icon: 'twelve'
                        },
                    ]
                }
@@ -116,7 +117,7 @@
</script>
<style lang="scss">
.wrap {
    height: calc(100vh - 200rpx);
    height: 100%;
    background: linear-gradient(to bottom, #e5f0ff, #f6f9ff);
    overflow-y: auto;
}
@@ -140,4 +141,11 @@
.u-grid-item {
    background: transparent !important;
}
.img {
    width: 96rpx;
    height: 96rpx;
    background-size: contain !important;
    background-position: center !important;
}
</style>
pages/sys/user/index.vue
@@ -69,7 +69,7 @@
<style lang="scss" scoped>
.my {
  height: calc(100vh - 100rpx);
  height: 100%;
  background: linear-gradient(to bottom, #E5F0FF, #F6F9FF);
  .my-head {
static/custom/home/eight.png

static/custom/home/eleven.png

static/custom/home/five.png

static/custom/home/four.png

static/custom/home/nine.png

static/custom/home/one.png

static/custom/home/seven.png

static/custom/home/six.png

static/custom/home/ten.png

static/custom/home/three.png

static/custom/home/twelve.png

static/custom/home/two.png