Files
entityControl_mobile/pagesInventory/handInventory.vue

173 lines
3.9 KiB
Vue
Raw Permalink Normal View History

2026-03-06 16:50:46 +08:00
<template>
<view class="container">
<view style="display: flex;align-items: center;justify-content: space-between;">
<view>当前扫描到{{ searchList.length }}</view>
<view>总条目{{ scanTotal || '暂无' }}</view>
</view>
<uni-list style="margin-bottom: 80rpx;margin-top: 20rpx;">
<uni-list-item v-for="item in searchList" :title="item"></uni-list-item>
</uni-list>
<view class="bottom">
<button type="primary" v-show="!pandianStatus" @click="startScan">开始盘点</button>
<button type="primary" v-show="pandianStatus" @click="stopInventory(1)">开始匹配</button>
<button v-show="pandianStatus" style="margin-left: 20rpx;" @click="stopInventory(0)">取消盘点</button>
</view>
</view>
</template>
<script setup>
import { ref } from "vue";
import { onLoad } from "@dcloudio/uni-app";
import { getHandMatch, getTaskCount } from "@/api/inventory"
const scanTotal = ref("")
const taskInfo = ref({})
const getTotal = () => {
let obj = {
taskId: taskInfo.value.id,
showLoading: true
}
getTaskCount(obj).then(res => {
scanTotal.value = res.data
})
}
// 开始盘点
const startScan = () => {
uni.showToast({
title: '开始盘点',
duration: 2000,
icon: "none"
});
pandianStatus.value = true
startInventory()
}
// 加载插件 获取 module
var rfidManager = uni.requireNativePlugin("TH-PlatformRFID")
console.log("rfidManager", rfidManager)
// 扫码数组
const searchList = ref([]);
// 盘点状态对应显示按钮
const pandianStatus = ref(false)
// 页面
onLoad(() => {
var ret = rfidManager.soundInit();//初始时插件中的声音播放资源,可按自己实际需求看是否调用,如果有自己的声音播放资源,可以不用这个
//监听读取标签的数据回调
rfidManager.onInventoryTag((result) => {
if (!searchList.value.some(e => e == result.epc) && pandianStatus.value) {
console.log(JSON.stringify(result))
searchList.value.push(result.epc)
//16进制的epc 转 ASCII 码字符串
// var ascii = rfidManager.hexToASCII(result.epc);
// var epc = ascii;
rfidManager.soundPlay(1);
}
});
taskInfo.value = uni.getStorageSync("taskInfo")
getTotal()
init()
})
// 插件初始化
const init = function () {
uni.showLoading({
title: '正在初始化...',
mask: true
})
rfidManager.init((ret) => {
if (ret) {
uni.hideLoading()
} else {
uni.showToast({
title: ret,
duration: 2000,
icon: "none"
});
}
});
}
// 开始盘点
const startInventory = function () {
console.log('startInventory')
var ret = rfidManager.startInventory(0);
}
// 结束盘点
const stopInventory = function (status) {
console.log('stopInventory');
rfidManager.stopInventory();
if (status == 1) {
let obj = {
ids: searchList.value,
taskId: taskInfo.value.id,
}
getHandMatch(obj).then(res => {
console.log("res", res)
scanTotal.value = ""
pandianStatus.value = false
searchList.value = []
uni.redirectTo({
url: '/pagesInventory/matchResult?taskId=' + taskInfo.value.id
})
})
} else {
searchList.value = []
scanTotal.value = ""
pandianStatus.value = false
}
}
</script>
<style scoped lang="scss">
.container {
position: relative;
padding: 32rpx;
.bottom {
display: flex;
align-items: center;
position: fixed;
bottom: 0;
width: 100vw;
padding: 10rpx 32rpx;
left: 0;
box-sizing: border-box;
::v-deep uni-button {
flex: 1;
}
}
}
::v-deep .uni-select{
border: unset;
border-bottom: unset;
}
::v-deep .uv-popup .uv-popup__content {
overflow: unset !important;
}
::v-deep .uv-modal {
overflow: unset !important;
}
::v-deep .uv-input__content{
flex-direction: column;
}
::v-deep .uni-select__input-placeholder{
font-size: unset;
color: #c0c4cc;
}
::v-deep .uni-select{
padding: 0 !important;
}
</style>