Files
entityControl_mobile/pagesInventory/handInventory.vue
2026-03-06 16:50:46 +08:00

173 lines
3.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>