From 9f1324fb9e73e5b53ac67542227e63cdc0b505ba Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期四, 09 七月 2026 15:44:53 +0800
Subject: [PATCH] 手机扫码改为PDA扫码
---
src/pages/works.vue | 166 +++++++++++++++++++++++++++++++++++-------------------
1 files changed, 107 insertions(+), 59 deletions(-)
diff --git a/src/pages/works.vue b/src/pages/works.vue
index fc7eed5..d3c5d17 100644
--- a/src/pages/works.vue
+++ b/src/pages/works.vue
@@ -299,6 +299,8 @@
</up-grid>
</view>
</view>
+ <PdaScan :active="pdaScanActive"
+ eventName="scan_work_report" />
<DownloadProgressMask />
</view>
</template>
@@ -308,6 +310,7 @@
import { userLoginFacotryList } from "@/api/login";
import { getProductWorkOrderById } from "@/api/productionManagement/productionReporting";
import DownloadProgressMask from "@/components/DownloadProgressMask.vue";
+ import PdaScan from "@/components/pda-scan/pda-scan.vue";
import modal from "@/plugins/modal";
import useUserStore from "@/store/modules/user";
@@ -315,6 +318,8 @@
const show = ref(false);
const factoryList = ref([]);
const factoryListTem = ref([]);
+ const pdaScanActive = ref(false);
+ let scanWorkReportTimer = null;
const iconStyle = {
fontSize: "1.125rem",
color: "#2979ff",
@@ -1072,78 +1077,121 @@
});
}
const getcode = async () => {
- uni.scanCode({
- success: async res => {
- // 瑙f瀽浜岀淮鐮佸唴瀹�
- const scanResult = res.result;
- let orderRow = "";
+ const canUsePdaBroadcast = () => {
+ try {
+ if (typeof plus === "undefined") return false;
+ if (plus?.os?.name !== "Android") return false;
+ if (!plus?.android) return false;
- // 鍒ゆ柇鎵弿缁撴灉鏄惁涓虹函鏁板瓧锛坕d锛�
- const isNumericId = /^\d+$/.test(scanResult.trim());
+ const sys = uni.getSystemInfoSync?.() || {};
+ const brand = String(sys?.brand || "").toUpperCase();
+ const model = String(sys?.model || "").toUpperCase();
- if (isNumericId) {
- // 濡傛灉鏄函鏁板瓧锛屾牴鎹� id 鑾峰彇宸ュ崟鏁版嵁
- const workOrderId = scanResult.trim();
- modal.loading("姝e湪鑾峰彇宸ュ崟淇℃伅...");
- try {
- const workRes = await getProductWorkOrderById({ id: workOrderId });
- modal.closeLoading();
+ return (
+ brand.includes("DROI") ||
+ model.includes("MV-IDP5204") ||
+ model.includes("IDP")
+ );
+ } catch (e) {
+ return false;
+ }
+ };
- console.log("宸ュ崟鏌ヨ缁撴灉:", workRes);
+ const handleWorkReportScan = async scanResultRaw => {
+ const scanResult = scanResultRaw == null ? "" : String(scanResultRaw);
+ let orderRow = "";
- if (workRes.code === 200 && workRes.data) {
- // 鏂版帴鍙h繑鍥炵殑鏄崟涓璞★紝涓嶆槸鏁扮粍
- const workData = workRes.data;
- console.log("宸ュ崟鏁版嵁:", workData);
+ const isNumericId = /^\d+$/.test(scanResult.trim());
- if (workData.endOrder === true) {
- modal.msgError("璇ヨ鍗曞凡缁撴潫锛屾棤娉曟姤宸�");
- return;
- }
+ if (isNumericId) {
+ const workOrderId = scanResult.trim();
+ modal.loading("姝e湪鑾峰彇宸ュ崟淇℃伅...");
+ try {
+ const workRes = await getProductWorkOrderById({ id: workOrderId });
+ modal.closeLoading();
- orderRow = JSON.stringify(workData);
+ console.log("宸ュ崟鏌ヨ缁撴灉:", workRes);
- console.log("鏋勯�犵殑orderRow:", orderRow);
- } else {
- modal.msgError("鏈壘鍒板搴旂殑宸ュ崟淇℃伅");
+ if (workRes.code === 200 && workRes.data) {
+ const workData = workRes.data;
+ console.log("宸ュ崟鏁版嵁:", workData);
+
+ if (workData.endOrder === true) {
+ modal.msgError("璇ヨ鍗曞凡缁撴潫锛屾棤娉曟姤宸�");
return;
}
- } catch (error) {
- modal.closeLoading();
- console.error("鑾峰彇宸ュ崟淇℃伅澶辫触:", error);
- modal.msgError("鑾峰彇宸ュ崟淇℃伅澶辫触: " + (error.message || "鏈煡閿欒"));
- return;
- }
- } else {
- // 濡傛灉涓嶆槸绾暟瀛楋紝灏濊瘯浠庢壂鐮佺粨鏋滀腑鎻愬彇orderRow鍙傛暟
- try {
- // 澶勭悊娣峰悎鏍煎紡: http://...?orderRow={...}
- const orderRowStart = scanResult.indexOf("orderRow={");
- if (orderRowStart !== -1) {
- // 鎻愬彇浠巓rderRow={寮�濮嬬殑JSON鍐呭
- const jsonPart = scanResult.substring(orderRowStart + 9); // 9鏄�"orderRow=".length
- orderRow = jsonPart;
- } else {
- // 濡傛灉鐩存帴鏄疛SON瀛楃涓诧紝灏濊瘯瑙f瀽
- orderRow = scanResult;
- }
- } catch (e) {
- console.error(e, "瑙f瀽澶辫触====????=====");
- orderRow = "";
- }
- // 楠岃瘉鏄惁涓烘湁鏁堢殑JSON
- 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;
}
- // 鎵爜鎴愬姛鍚庤烦杞埌鐢熶骇鎶ュ伐椤甸潰锛屽苟浼犻�抩rderRow鍙傛暟
- uni.navigateTo({
- url: `/pages/productionManagement/productionReport/index?orderRow=${orderRow}`,
- });
+ } 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瀽澶辫触锛岃妫�鏌ヤ簩缁寸爜鏍煎紡");
+ return;
+ }
+ }
+
+ uni.navigateTo({
+ url: `/pages/productionManagement/productionReport/index?orderRow=${orderRow}`,
+ });
+ };
+
+ if (canUsePdaBroadcast()) {
+ 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");
+ 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 handleWorkReportScan(res.result);
},
fail: err => {
uni.showToast({
--
Gitblit v1.9.3