173 lines
3.9 KiB
Vue
173 lines
3.9 KiB
Vue
|
|
<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>
|