| | |
| | | <template> |
| | | <view> |
| | | <view class="content"> |
| | | <!-- <text>扫描结果:{{ scanResult }}</text> --> |
| | | </view> |
| | | </view> |
| | | </template> |
| | |
| | | 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> |
| | |
| | | "<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" ] |
| | | }, |
| | |
| | | |
| | | }, |
| | | onShow() { |
| | | |
| | | let that = this |
| | | |
| | | uni.$off('scan') // 每次进来先 移除全局自定义事件监听器 |
| | | uni.$on('scan', function(data) { |
| | | console.log('onscan'); |
| | |
| | | text-align: right; |
| | | } |
| | | |
| | | .nodata{width: 20%;margin: auto;} |
| | | .nodata { |
| | | width: 20%; |
| | | margin: auto; |
| | | } |
| | | </style> |
| | |
| | | </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: [ |
| | |
| | | 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) { |
| | |
| | | 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 |
| | | } |
| | | } |
| | | } |
| | |
| | | <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> |
| | |
| | | { |
| | | 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' |
| | | }, |
| | | ] |
| | | }, |
| | |
| | | { |
| | | 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' |
| | | }, |
| | | ] |
| | | }, |
| | |
| | | { |
| | | name: '领料', |
| | | url: '/pages/wareHouse/moveWareHouse/index', |
| | | icon: '领料' |
| | | icon: 'eleven' |
| | | }, |
| | | { |
| | | name: '取消领料', |
| | | url: '/pages/wareHouse/inventory/index', |
| | | icon: '取消领料' |
| | | icon: 'twelve' |
| | | }, |
| | | ] |
| | | } |
| | |
| | | </script> |
| | | <style lang="scss"> |
| | | .wrap { |
| | | height: calc(100vh - 200rpx); |
| | | height: 100%; |
| | | background: linear-gradient(to bottom, #e5f0ff, #f6f9ff); |
| | | overflow-y: auto; |
| | | } |
| | |
| | | .u-grid-item { |
| | | background: transparent !important; |
| | | } |
| | | |
| | | .img { |
| | | width: 96rpx; |
| | | height: 96rpx; |
| | | background-size: contain !important; |
| | | background-position: center !important; |
| | | } |
| | | </style> |
| | |
| | | |
| | | <style lang="scss" scoped> |
| | | .my { |
| | | height: calc(100vh - 100rpx); |
| | | height: 100%; |
| | | background: linear-gradient(to bottom, #E5F0FF, #F6F9FF); |
| | | |
| | | .my-head { |