From 10ae883d6368fb8fc3f95620f610c3aaf6c6a3cd Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期二, 14 七月 2026 13:50:35 +0800
Subject: [PATCH] PDA扫码调试
---
src/pages/works.vue | 231 +++++++++++++++++++++++++++++++++------------------------
1 files changed, 133 insertions(+), 98 deletions(-)
diff --git a/src/pages/works.vue b/src/pages/works.vue
index d3c5d17..7a53a4f 100644
--- a/src/pages/works.vue
+++ b/src/pages/works.vue
@@ -299,17 +299,20 @@
</up-grid>
</view>
</view>
- <PdaScan :active="pdaScanActive"
- eventName="scan_work_report" />
+ <ScanWaitMask :show="scanMaskShow"
+ :status="scanMaskStatus" />
+ <PdaScan />
<DownloadProgressMask />
</view>
</template>
<script setup>
import { ref, onMounted, nextTick, reactive, computed } from "vue";
+ import { onShow } from "@dcloudio/uni-app";
import { userLoginFacotryList } from "@/api/login";
import { getProductWorkOrderById } from "@/api/productionManagement/productionReporting";
import DownloadProgressMask from "@/components/DownloadProgressMask.vue";
+ import ScanWaitMask from "@/components/ScanWaitMask.vue";
import PdaScan from "@/components/pda-scan/pda-scan.vue";
import modal from "@/plugins/modal";
import useUserStore from "@/store/modules/user";
@@ -318,8 +321,11 @@
const show = ref(false);
const factoryList = ref([]);
const factoryListTem = ref([]);
- const pdaScanActive = ref(false);
+ const pendingWorkReportScan = ref(false);
let scanWorkReportTimer = null;
+ const scanMaskShow = ref(false);
+ const scanMaskStatus = ref("waiting");
+ const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
const iconStyle = {
fontSize: "1.125rem",
color: "#2979ff",
@@ -1076,124 +1082,153 @@
factoryList.value = [];
});
}
- const getcode = async () => {
- const canUsePdaBroadcast = () => {
+
+ const canUsePdaBroadcast = () => {
+ try {
+ if (typeof plus === "undefined") return false;
+ if (plus?.os?.name !== "Android") return false;
+ if (!plus?.android) return false;
+
+ const sys = uni.getSystemInfoSync?.() || {};
+ const brand = String(sys?.brand || "").toUpperCase();
+ const model = String(sys?.model || "").toUpperCase();
+
+ return (
+ brand.includes("DROI") ||
+ model.includes("MV-IDP5204") ||
+ model.includes("IDP")
+ );
+ } catch (e) {
+ return false;
+ }
+ };
+
+ const handleWorkReportScan = async scanResultRaw => {
+ const scanResult = scanResultRaw == null ? "" : String(scanResultRaw);
+ let orderRow = "";
+
+ const isNumericId = /^\d+$/.test(scanResult.trim());
+
+ if (isNumericId) {
+ const workOrderId = scanResult.trim();
+ modal.loading("姝e湪鑾峰彇宸ュ崟淇℃伅...");
try {
- if (typeof plus === "undefined") return false;
- if (plus?.os?.name !== "Android") return false;
- if (!plus?.android) return false;
+ const workRes = await getProductWorkOrderById({ id: workOrderId });
+ modal.closeLoading();
- const sys = uni.getSystemInfoSync?.() || {};
- const brand = String(sys?.brand || "").toUpperCase();
- const model = String(sys?.model || "").toUpperCase();
+ console.log("宸ュ崟鏌ヨ缁撴灉:", workRes);
- return (
- brand.includes("DROI") ||
- model.includes("MV-IDP5204") ||
- model.includes("IDP")
- );
- } catch (e) {
- return false;
- }
- };
+ if (workRes.code === 200 && workRes.data) {
+ const workData = workRes.data;
+ console.log("宸ュ崟鏁版嵁:", workData);
- const handleWorkReportScan = async scanResultRaw => {
- const scanResult = scanResultRaw == null ? "" : String(scanResultRaw);
- let orderRow = "";
-
- const isNumericId = /^\d+$/.test(scanResult.trim());
-
- if (isNumericId) {
- const workOrderId = scanResult.trim();
- modal.loading("姝e湪鑾峰彇宸ュ崟淇℃伅...");
- try {
- const workRes = await getProductWorkOrderById({ id: workOrderId });
- modal.closeLoading();
-
- console.log("宸ュ崟鏌ヨ缁撴灉:", workRes);
-
- if (workRes.code === 200 && workRes.data) {
- const workData = workRes.data;
- console.log("宸ュ崟鏁版嵁:", workData);
-
- if (workData.endOrder === true) {
- modal.msgError("璇ヨ鍗曞凡缁撴潫锛屾棤娉曟姤宸�");
- return;
- }
-
- orderRow = JSON.stringify(workData);
-
- console.log("鏋勯�犵殑orderRow:", orderRow);
- } else {
- modal.msgError("鏈壘鍒板搴旂殑宸ュ崟淇℃伅");
+ if (workData.endOrder === true) {
+ modal.msgError("璇ヨ鍗曞凡缁撴潫锛屾棤娉曟姤宸�");
return;
}
- } catch (error) {
- modal.closeLoading();
- console.error("鑾峰彇宸ュ崟淇℃伅澶辫触:", error);
- modal.msgError("鑾峰彇宸ュ崟淇℃伅澶辫触: " + (error.message || "鏈煡閿欒"));
- return;
- }
- } else {
- try {
- const orderRowStart = scanResult.indexOf("orderRow={");
- if (orderRowStart !== -1) {
- const jsonPart = scanResult.substring(orderRowStart + 9);
- orderRow = jsonPart;
- } else {
- orderRow = scanResult;
- }
- } catch (e) {
- console.error(e, "瑙f瀽澶辫触====????=====");
- orderRow = "";
- }
- try {
- JSON.parse(orderRow);
- } catch (error) {
- modal.msgError("璁㈠崟瑙f瀽澶辫触锛岃妫�鏌ヤ簩缁寸爜鏍煎紡");
+ orderRow = JSON.stringify(workData);
+
+ console.log("鏋勯�犵殑orderRow:", orderRow);
+ } else {
+ modal.msgError("鏈壘鍒板搴旂殑宸ュ崟淇℃伅");
return;
}
+ } catch (error) {
+ modal.closeLoading();
+ console.error("鑾峰彇宸ュ崟淇℃伅澶辫触:", error);
+ modal.msgError("鑾峰彇宸ュ崟淇℃伅澶辫触: " + (error.message || "鏈煡閿欒"));
+ return;
+ }
+ } else {
+ try {
+ const orderRowStart = scanResult.indexOf("orderRow={");
+ if (orderRowStart !== -1) {
+ const jsonPart = scanResult.substring(orderRowStart + 9);
+ orderRow = jsonPart;
+ } else {
+ orderRow = scanResult;
+ }
+ } catch (e) {
+ console.error(e, "瑙f瀽澶辫触====????=====");
+ orderRow = "";
}
- uni.navigateTo({
- url: `/pages/productionManagement/productionReport/index?orderRow=${orderRow}`,
- });
- };
+ try {
+ JSON.parse(orderRow);
+ } catch (error) {
+ modal.msgError("璁㈠崟瑙f瀽澶辫触锛岃妫�鏌ヤ簩缁寸爜鏍煎紡");
+ return;
+ }
+ }
- if (canUsePdaBroadcast()) {
+ uni.navigateTo({
+ url: `/pages/productionManagement/productionReport/index?orderRow=${orderRow}`,
+ });
+ };
+
+ onShow(() => {
+ uni.$off("scan");
+ uni.$on("scan", async data => {
+ console.log("onscan");
+ console.log("鎵爜缁撴灉锛�", data.code);
+ if (!pendingWorkReportScan.value) return;
+
+ pendingWorkReportScan.value = false;
+ scanMaskStatus.value = "done";
if (scanWorkReportTimer) {
clearTimeout(scanWorkReportTimer);
scanWorkReportTimer = null;
}
- uni.$off("scan_work_report");
- uni.$on("scan_work_report", async data => {
- pdaScanActive.value = false;
- uni.$off("scan_work_report");
+ await delay(350);
+ scanMaskShow.value = false;
+ await handleWorkReportScan(data?.code);
+ });
+ });
+
+ const getcode = async () => {
+ pendingWorkReportScan.value = true;
+ scanMaskStatus.value = "waiting";
+ scanMaskShow.value = true;
+
+ if (scanWorkReportTimer) {
+ clearTimeout(scanWorkReportTimer);
+ scanWorkReportTimer = null;
+ }
+
+ scanWorkReportTimer = setTimeout(() => {
+ pendingWorkReportScan.value = false;
+ scanWorkReportTimer = null;
+ scanMaskStatus.value = "timeout";
+ delay(900).then(() => {
+ scanMaskShow.value = false;
+ });
+ }, 20000);
+
+ if (canUsePdaBroadcast()) return;
+
+ uni.scanCode({
+ success: async res => {
+ pendingWorkReportScan.value = false;
+ scanMaskStatus.value = "done";
if (scanWorkReportTimer) {
clearTimeout(scanWorkReportTimer);
scanWorkReportTimer = null;
}
- await handleWorkReportScan(data?.code);
- });
- pdaScanActive.value = true;
- uni.showToast({
- title: "璇蜂娇鐢≒DA鎵爜",
- icon: "none",
- });
- scanWorkReportTimer = setTimeout(() => {
- pdaScanActive.value = false;
- uni.$off("scan_work_report");
- scanWorkReportTimer = null;
- }, 20000);
- return;
- }
-
- uni.scanCode({
- success: async res => {
+ await delay(350);
+ scanMaskShow.value = false;
await handleWorkReportScan(res.result);
},
fail: err => {
+ pendingWorkReportScan.value = false;
+ scanMaskStatus.value = "timeout";
+ delay(900).then(() => {
+ scanMaskShow.value = false;
+ });
+ if (scanWorkReportTimer) {
+ clearTimeout(scanWorkReportTimer);
+ scanWorkReportTimer = null;
+ }
uni.showToast({
title: "鎵爜澶辫触",
icon: "none",
--
Gitblit v1.9.3