From 3a75daf63f5b64af3388424c3de82662c20aa383 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期五, 18 七月 2025 13:49:01 +0800
Subject: [PATCH] 添加了打印超时定时器清除逻辑,确保打印成功后清除超时回调

---
 pages/wareHouse/nuclearScale/nuclearscalerecord.vue | 1615 ++++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 922 insertions(+), 693 deletions(-)

diff --git a/pages/wareHouse/nuclearScale/nuclearscalerecord.vue b/pages/wareHouse/nuclearScale/nuclearscalerecord.vue
index b4b0834..d80cbfe 100644
--- a/pages/wareHouse/nuclearScale/nuclearscalerecord.vue
+++ b/pages/wareHouse/nuclearScale/nuclearscalerecord.vue
@@ -1,731 +1,960 @@
 <template>
-	<view class="page">
-		<view class="finishProductIn-locno-bg" />
-		<u-navbar title="鏍哥璁板綍" :background="background" :border-bottom="false" :title-bold="true" title-color="#000"
-			back-icon-color="#000">
-			<view class="navbar-right" slot="right" @click="goPrintAll">
-				鍏ㄩ儴鎵撳嵃
-			</view>
-		</u-navbar>
-		<view class="wrap">
-			<scroll-view class="finishProductIn-locno-scroll-list" scroll-y="true" @scrolltolower="getmoreList()">
-				<u-cell-group class="finishProductIn-locno-scroll-list-group" :border="false">
-					<view class="content" v-for="(item, index) in list" :key="item.locNo" :index="index"
-						@click="selectNo(item)">
-						<view class="content-header">
-							<view class="content-header-title">{{ index + 1 }}</view>
-						</view>
-						<view class="content-body">
-							<view class="row-list">
-								<view class="_label">
-									<view class="_label-icon-1"> </view>
-									<view class="_label-name">鎵规鍙凤細</view>
-								</view>
-								<view class="_content">
-									{{ item.outBatchNo }}
-								</view>
-							</view>
-							<view class="row-list">
-								<view class="_label">
-									<view class="_label-icon-2"> </view>
-									<view class="_label-name">浜у搧鎻忚堪锛�</view>
-								</view>
-								<view class="_content">
-									{{ item.netWeight }}
-								</view>
-							</view>
-							<view class="row-list">
-								<view class="_label">
-									<view class="_label-icon-3"> </view>
-									<view class="_label-name">闆朵欢鍙凤細</view>
-								</view>
-								<view class="_content">
-									{{ item.partNo }}
-								</view>
-							</view>
-							<view class="row-list">
-								<view class="_label">
-									<view class="_label-icon-1"> </view>
-									<view class="_label-name">姣涢噸锛�</view>
-								</view>
-								<view class="_content">
-									{{ item.grossWeight }}
-								</view>
-							</view>
-							<view class="row-list">
-								<view class="_label">
-									<view class="_label-icon-2"> </view>
-									<view class="_label-name">鐩橀噸锛�</view>
-								</view>
-								<view class="_content">
-									{{ item.trayWeight }}
-								</view>
-							</view>
-							<view class="row-list">
-								<view class="_label">
-									<view class="_label-icon-3"> </view>
-									<view class="_label-name">鍑�閲嶏細</view>
-								</view>
-								<view class="_content">
-									{{ item.value5 }}
-								</view>
-							</view>
-							<view class="row-list">
-								<view class="_label">
-									<view class="_label-icon-1"> </view>
-									<view class="_label-name">鏍哥閲嶉噺锛�</view>
-								</view>
-								<view class="_content">
-									{{ item.netWeight }}
-								</view>
-							</view>
-							<view class="row-list">
-								<view class="_label">
-									<view class="_label-icon-2"> </view>
-									<view class="_label-name">鍙夎溅鐩橀噸锛�</view>
-								</view>
-								<view class="_content">
-									{{ item.value7 }}
-								</view>
-							</view>
-						</view>
-					</view>
-				</u-cell-group>
-				<view class="loadmore" @click="getmoreList()">
-					<u-loadmore :status="status" :load-text="loadText" @loadmore="getmoreList()" />
-				</view>
-			</scroll-view>
-		</view>
-		<u-toast ref="uToast" />
-		<u-modal v-model="maskShow" title="" v-for="(item, index) in listDevice" :key="index"
-			:show-confirm-button="true" @confirm="tapQuery(item)">
-			<view class="packing-registration-param-view" @touchmove.stop.prevent="moveHandle" @click="maskclose">
-				<scroll-view class="uni-scroll_box" scroll-y @touchmove.stop.prevent="moveHandle"
-					@click.stop="moveHandle">
-					<view class="packing-registration-param-item param-extra">
-						<view class="packing-registration-param-item-left">
-							<text class="item-one">鍚嶇О锛�</text>
-						</view>
-						<view class="packing-registration-param-item-right">
-							<text class="item-one">{{ item.name }}</text>
-						</view>
-					</view>
-					<view class="packing-registration-param-item param-extra">
-						<view class="packing-registration-param-item-left">
-							<text class="item-one">UUID:</text>
-						</view>
-						<view class="packing-registration-param-item-right">
-							<text class="item-one">{{ item.address }}</text>
-
-						</view>
-					</view>
-				</scroll-view>
-			</view>
-		</u-modal>
-	</view>
+  <view class="page">
+    <view class="finishProductIn-locno-bg" />
+    <u-navbar
+      title="鏍哥璁板綍"
+      :background="background"
+      :border-bottom="false"
+      :title-bold="true"
+      title-color="#000"
+      back-icon-color="#000"
+    >
+      <view class="navbar-right" slot="right" @click="goPrintAll">
+        鍏ㄩ儴鎵撳嵃
+      </view>
+    </u-navbar>
+    <view class="wrap">
+      <!-- 杩炴帴鍜屾墦鍗扮姸鎬佹寚绀哄櫒 -->
+      <view
+        class="status-indicator"
+        :class="{
+          connected: connectionStatus === 'connected',
+          connecting: connectionStatus === 'connecting',
+          disconnected: connectionStatus === 'disconnected',
+        }"
+      >
+        <text class="status-text">{{ getConnectionStatusText() }}</text>
+        <text class="print-status" v-if="printStatus !== 'idle'"
+          >- {{ getPrintStatusText() }}</text
+        >
+      </view>
+      <scroll-view
+        class="finishProductIn-locno-scroll-list"
+        scroll-y="true"
+        @scrolltolower="getmoreList()"
+      >
+        <u-cell-group
+          class="finishProductIn-locno-scroll-list-group"
+          :border="false"
+        >
+          <view
+            class="content"
+            v-for="(item, index) in list"
+            :key="item.locNo"
+            :index="index"
+            @click="selectNo(item)"
+          >
+            <view class="content-header">
+              <view class="content-header-title">{{ index + 1 }}</view>
+            </view>
+            <view class="content-body">
+              <view class="row-list">
+                <view class="_label">
+                  <view class="_label-icon-1"> </view>
+                  <view class="_label-name">鎵规鍙凤細</view>
+                </view>
+                <view class="_content">
+                  {{ item.outBatchNo }}
+                </view>
+              </view>
+              <view class="row-list">
+                <view class="_label">
+                  <view class="_label-icon-2"> </view>
+                  <view class="_label-name">浜у搧鎻忚堪锛�</view>
+                </view>
+                <view class="_content">
+                  {{ item.netWeight }}
+                </view>
+              </view>
+              <view class="row-list">
+                <view class="_label">
+                  <view class="_label-icon-3"> </view>
+                  <view class="_label-name">闆朵欢鍙凤細</view>
+                </view>
+                <view class="_content">
+                  {{ item.partNo }}
+                </view>
+              </view>
+              <view class="row-list">
+                <view class="_label">
+                  <view class="_label-icon-1"> </view>
+                  <view class="_label-name">姣涢噸锛�</view>
+                </view>
+                <view class="_content">
+                  {{ item.grossWeight }}
+                </view>
+              </view>
+              <view class="row-list">
+                <view class="_label">
+                  <view class="_label-icon-2"> </view>
+                  <view class="_label-name">鐩橀噸锛�</view>
+                </view>
+                <view class="_content">
+                  {{ item.trayWeight }}
+                </view>
+              </view>
+              <view class="row-list">
+                <view class="_label">
+                  <view class="_label-icon-3"> </view>
+                  <view class="_label-name">鍑�閲嶏細</view>
+                </view>
+                <view class="_content">
+                  {{ item.value5 }}
+                </view>
+              </view>
+              <view class="row-list">
+                <view class="_label">
+                  <view class="_label-icon-1"> </view>
+                  <view class="_label-name">鏍哥閲嶉噺锛�</view>
+                </view>
+                <view class="_content">
+                  {{ item.netWeight }}
+                </view>
+              </view>
+              <view class="row-list">
+                <view class="_label">
+                  <view class="_label-icon-2"> </view>
+                  <view class="_label-name">鍙夎溅鐩橀噸锛�</view>
+                </view>
+                <view class="_content">
+                  {{ item.value7 }}
+                </view>
+              </view>
+            </view>
+          </view>
+        </u-cell-group>
+        <view class="loadmore" @click="getmoreList()">
+          <u-loadmore
+            :status="status"
+            :load-text="loadText"
+            @loadmore="getmoreList()"
+          />
+        </view>
+      </scroll-view>
+    </view>
+    <u-toast ref="uToast" />
+    <u-modal v-model="maskShow" title="" :show-confirm-button="false">
+      <view @touchmove.stop.prevent="moveHandle" @click="maskclose">
+        <scroll-view
+          class="uni-scroll_box"
+          scroll-y
+          @touchmove.stop.prevent="moveHandle"
+          @click.stop="moveHandle"
+        >
+          <view class="modal-title">閫夋嫨钃濈墮璁惧</view>
+          <view v-if="listDevice.length === 0" class="empty-tip">鏆傛棤璁惧</view>
+          <view
+            v-for="(item, index) in listDevice"
+            :key="index"
+            @click="tapQuery(item)"
+            class="device-item"
+          >
+            <view class="device-name">
+              <text>鍚嶇О锛�</text>
+              <text>{{ item.name || "鏈煡璁惧" }}</text>
+            </view>
+            <view class="device-uuid">
+              <text>UUID:</text>
+              <text>{{ item.address || "鏃犲湴鍧�" }}</text>
+            </view>
+          </view>
+        </scroll-view>
+      </view>
+    </u-modal>
+  </view>
 </template>
 <script>
-	import content_bg from '@/static/custom/finishProductIn/locNoBg.png'
-	const jcapi = uni.requireNativePlugin("JCSDK-JCApiModule");
+import content_bg from "@/static/custom/finishProductIn/locNoBg.png";
+const jcapi = uni.requireNativePlugin("JCSDK-JCApiModule");
 
-	// 浜岀淮鐮佺被鍨�
-	const QrCodeType = {
-		QrCode: 31,
-		PDF417: 32,
-		DataMatrix: 33,
-		AZTEC: 34
-	}
-	// 绾挎潯绫诲瀷
-	const LineType = {
-		Solid: 1, // 瀹炵嚎
-		Dotted: 2, // 铏氱嚎锛堥粯璁よ櫄瀹�1:1鐩搁棿锛�
-	}
-	// 鎹㈣鏂瑰紡
-	const LineModeType = {
-		Justified: 1, // 瀹介珮鍥哄畾锛屽唴瀹硅嚜閫傚簲锛堝瓧鍙�/瀛楅棿璺�/琛岄棿璺濇寜姣斾緥缂╂斁锛�
-		AutoHeight: 2, // 瀹藉害鍥哄畾锛岄珮搴﹁嚜閫傚簲
-		Fixed: 4, // 瀹介珮鍥哄畾锛岃秴鍑洪儴鍒嗚鍓�
-		Adapt: 6, // 瀹介珮鍥哄畾锛屽唴瀹硅秴杩囨椂棰勮瀹介珮鑷姩缂╁皬
-	}
-	export default {
-		data() {
-			return {
-				background: {
-					backgroundImage: `url(${content_bg})`,
-					backgroundAttachment: 'fixed',
-					backgroundSize: '100% auto',
-					backgroundRepeat: 'no-repeat',
-				},
-				keywords: '',
-				list: [],
-				total: 0,
-				pageNum: 1,
-				pageSize: 10,
-				status: 'loading',
-				loadText: {
-					loadmore: "鍔犺浇鏇村...",
-					loading: "鍔姏鍔犺浇涓�...",
-					nomore: "娌℃湁鏇村浜�",
-				},
-				maskShow: false,
-				listDevice: [], //钃濈墮璁惧鏁版嵁
-				pritList: [],
-				printDensity: 3, // 榛樿鎵撳嵃娴撳害
-				labelType: 1, // 榛樿鏍囩绫诲瀷 *                  
-				// 1锛氶棿闅欑焊
-				// 2锛氶粦鏍囩焊
-				// 3锛氳繛缁焊
-				// 4锛氬畾瀛旂焊
-				// 5锛氶�忔槑绾�
-				printMode: 2, // 榛樿鎵撳嵃妯″紡
-				//	1锛氱儹鏁�
-				// 	2锛氱儹杞嵃
-				connectedDevice: null // 宸茶繛鎺ョ殑鎵撳嵃鏈�
-			};
-		},
-		onLoad() {
-			this.getlist()
-			// 鍒濆鍖朣DK
-			jcapi.initSDK()
-			// 鐩戝惉椤电爜鍥炶皟
-			jcapi.didReadPrintCountInfo(function(r) {
-				console.log(r)
-			})
+// 浜岀淮鐮佺被鍨�
+const QrCodeType = {
+  QrCode: 31,
+  PDF417: 32,
+  DataMatrix: 33,
+  AZTEC: 34,
+};
+// 绾挎潯绫诲瀷
+const LineType = {
+  Solid: 1, // 瀹炵嚎
+  Dotted: 2, // 铏氱嚎锛堥粯璁よ櫄瀹�1:1鐩搁棿锛�
+};
+// 鎹㈣鏂瑰紡
+const LineModeType = {
+  Justified: 1, // 瀹介珮鍥哄畾锛屽唴瀹硅嚜閫傚簲锛堝瓧鍙�/瀛楅棿璺�/琛岄棿璺濇寜姣斾緥缂╂斁锛�
+  AutoHeight: 2, // 瀹藉害鍥哄畾锛岄珮搴﹁嚜閫傚簲
+  Fixed: 4, // 瀹介珮鍥哄畾锛岃秴鍑洪儴鍒嗚鍓�
+  Adapt: 6, // 瀹介珮鍥哄畾锛屽唴瀹硅秴杩囨椂棰勮瀹介珮鑷姩缂╁皬
+};
+export default {
+  data() {
+    return {
+      background: {
+        backgroundImage: `url(${content_bg})`,
+        backgroundAttachment: "fixed",
+        backgroundSize: "100% auto",
+        backgroundRepeat: "no-repeat",
+      },
+      keywords: "",
+      list: [],
+      total: 0,
+      pageNum: 1,
+      pageSize: 10,
+      status: "loading",
+      loadText: {
+        loadmore: "鍔犺浇鏇村...",
+        loading: "鍔姏鍔犺浇涓�...",
+        nomore: "娌℃湁鏇村浜�",
+      },
+      maskShow: false,
+      listDevice: [], //钃濈墮璁惧鏁版嵁
+      printQueue: [], // 鎵撳嵃闃熷垪
+      printing: false, // 鏄惁姝e湪鎵撳嵃
+      printDensity: 3, // 榛樿鎵撳嵃娴撳害
+      labelType: 1, // 榛樿鏍囩绫诲瀷
+      // 1锛氶棿闅欑焊
+      // 2锛氶粦鏍囩焊
+      // 3锛氳繛缁焊
+      // 4锛氬畾瀛旂焊
+      // 5锛氶�忔槑绾�
+      printMode: 2, // 榛樿鎵撳嵃妯″紡
+      //	1锛氱儹鏁�
+      // 	2锛氱儹杞嵃
+      connectedDevice: null, // 宸茶繛鎺ョ殑鎵撳嵃鏈�
+      connectionStatus: "disconnected", // 杩炴帴鐘舵��: disconnected, connecting, connected
+      printStatus: "idle", // 鎵撳嵃鐘舵��: idle, printing, error
+      errorMessage: "", // 閿欒淇℃伅
+    };
+  },
+  onLoad() {
+    this.getlist();
+    // 鍒濆鍖朣DK
+    jcapi.initSDK();
+    // 鐩戝惉椤电爜鍥炶皟
+    jcapi.didReadPrintCountInfo(function (r) {
+      console.log(r);
+    });
 
-			// 鐩戝惉閿欒鍥炶皟
-			jcapi.didReadPrintErrorInfo((r) => {
-				console.log(r)
-				if (r.code == 23) {
-					// 鎵撳嵃鏈烘柇寮�杩炴帴
-					this.connectedDevice = null
-					uni.showToast({
-						icon: 'none',
-						title: '鎵撳嵃鏈鸿繛鎺ュ凡鏂紑锛岃閲嶆柊杩炴帴',
-						duration: 2 * 1000
-					})
-				} else {
-					uni.showToast({
-						icon: 'none',
-						title: JSON.stringify(r),
-						duration: 2 * 1000
-					})
-				}
-			})
-		},
-		methods: {
-			getmoreList() {
-				if (this.pageSize >= this.total) {
-					this.status = "nomore";
-					return;
-				}
-				this.status = "loading";
-				setTimeout(() => {
-					this.pageSize += this.pageSize;
-					this.getlist();
-				}, 1000);
-			},
-			getlist() {
-				this.$u.api.workReporting
-					.getWorkshopOrder({
-						current: this.pageNum,
-						size: this.pageSize
-					})
-					.then((res) => {
-						this.list = res.data.records;
-						this.total = res.data.total;
-						if (this.pageSize >= this.total) {
-							this.status = "nomore";
-						} else {
-							this.status = "loadmore";
-						}
-					});
-			},
-			search(value) {
-				if (value) {
-					this.list = [];
-					this.pageSize = 10;
-					this.$u.api.workReporting
-						.getWorkshopOrder({
-							current: this.pageNum,
-							size: this.pageSize,
-							moNo: value,
-						})
-						.then((res) => {
-							this.list = res.data.records;
-							this.total = res.data.total;
-							if (this.pageSize >= this.total) {
-								this.status = "nomore";
-							} else {
-								this.status = "loadmore";
-							}
-						});
-				} else {
-					this.getlist();
-				}
-			},
-			// 鎵撳嵃鍗曚釜淇℃伅
-			// 妫�鏌ヨ摑鐗欒繛鎺ョ姸鎬�
-			async checkBluetoothConnection() {
-				if (!this.connectedDevice) return false;
-				
-				// 灏濊瘯鍙戦�佷竴涓畝鍗曞懡浠ゆ鏌ヨ繛鎺ョ姸鎬�
-				return new Promise(resolve => {
-					jcapi.checkPrinterStatus(this.connectedDevice.address, r => {
-						if (r && r.code === 0) {
-							resolve(true);
-						} else {
-							// 杩炴帴宸叉柇寮�
-							this.connectedDevice = null;
-							resolve(false);
-						}
-					});
-				});
-			},
+    // 鐩戝惉閿欒鍥炶皟
+    jcapi.didReadPrintErrorInfo((r) => {
+      console.log(r);
+      if (r.code == 23) {
+        // 鎵撳嵃鏈烘柇寮�杩炴帴
+        this.connectedDevice = null;
+        uni.showToast({
+          icon: "none",
+          title: "鎵撳嵃鏈鸿繛鎺ュ凡鏂紑锛岃閲嶆柊杩炴帴",
+          duration: 2 * 1000,
+        });
+      } else {
+        uni.showToast({
+          icon: "none",
+          title: JSON.stringify(r),
+          duration: 2 * 1000,
+        });
+      }
+    });
+  },
+  methods: {
+    getmoreList() {
+      if (this.pageSize >= this.total) {
+        this.status = "nomore";
+        return;
+      }
+      this.status = "loading";
+      setTimeout(() => {
+        this.pageSize += this.pageSize;
+        this.getlist();
+      }, 1000);
+    },
+    getlist() {
+      this.$u.api.workReporting
+        .getWorkshopOrder({
+          current: this.pageNum,
+          size: this.pageSize,
+        })
+        .then((res) => {
+          this.list = res.data.records;
+          this.total = res.data.total;
+          if (this.pageSize >= this.total) {
+            this.status = "nomore";
+          } else {
+            this.status = "loadmore";
+          }
+        });
+    },
+    search(value) {
+      if (value) {
+        this.list = [];
+        this.pageSize = 10;
+        this.$u.api.workReporting
+          .getWorkshopOrder({
+            current: this.pageNum,
+            size: this.pageSize,
+            moNo: value,
+          })
+          .then((res) => {
+            this.list = res.data.records;
+            this.total = res.data.total;
+            if (this.pageSize >= this.total) {
+              this.status = "nomore";
+            } else {
+              this.status = "loadmore";
+            }
+          });
+      } else {
+        this.getlist();
+      }
+    },
+    // 妫�鏌ヨ摑鐗欒繛鎺ョ姸鎬�
+    async checkBluetoothConnection() {
+      if (!this.connectedDevice) {
+        this.connectionStatus = "disconnected";
+        return false;
+      }
 
-			selectNo(item) {
-				let that = this
-				uni.showModal({
-					title: '鎻愮ず',
-					content: '鏄惁鎵撳嵃瑁呯鍗曪紵',
-					showCancel: true,
-					success: async function(res) {
-						if (res.confirm) {
-							// 妫�鏌ヨ摑鐗欒繛鎺ョ姸鎬�
-							const isConnected = await that.checkBluetoothConnection();
-							if (isConnected) {
-								// 宸茶繛鎺ワ紝鐩存帴鎵撳嵃
-								that.pritList = [item]
-								that.pritList.forEach(async item => {
-									await that.printQrCode(item)
-								})
-							} else {
-								// 鏈繛鎺ユ垨杩炴帴宸叉柇寮�锛屾悳绱㈣澶�
-								that.searchDevice()
-								that.pritList = [item]
-							}
-						}
-					}
-				});
-			},
-			// 鎵撳嵃鍏ㄩ儴淇℃伅
-			goPrintAll() {
-				let that = this
-				uni.showModal({
-					title: '鎻愮ず',
-					content: '鏄惁鎵撳嵃瑁呯鍗曪紵',
-					showCancel: true,
-					success: async function(res) {
-						if (res.confirm) {
-							// 妫�鏌ヨ摑鐗欒繛鎺ョ姸鎬�
-							const isConnected = await that.checkBluetoothConnection();
-							if (isConnected) {
-								// 宸茶繛鎺ワ紝鐩存帴鎵撳嵃
-								that.pritList = that.list
-								that.pritList.forEach(async item => {
-									await that.printQrCode(item)
-								})
-							} else {
-								// 鏈繛鎺ユ垨杩炴帴宸叉柇寮�锛屾悳绱㈣澶�
-								that.searchDevice()
-								that.pritList = that.list
-							}
-						}
-					}
-				});
-			},
-			moveHandle() {
+      // 璁剧疆涓鸿繛鎺ヤ腑鐘舵��
+      this.connectionStatus = "connecting";
 
-			},
-			maskclose() {
+      // 澧炲己杩炴帴鐘舵�佹娴�
+      return new Promise((resolve) => {
+        // 绠�鍖栬繛鎺ョ姸鎬佹娴嬶紝鐩存帴浣跨敤宸茶褰曠殑杩炴帴鐘舵��
+        if (this.connectedDevice) {
+          this.connectionStatus = "connected";
+          resolve(true);
+        } else {
+          this.connectionStatus = "disconnected";
+          uni.showToast({
+            icon: "none",
+            title: "鎵撳嵃鏈烘湭杩炴帴锛岃鍏堣繛鎺�",
+            duration: 2000,
+          });
+          resolve(false);
+        }
+      });
+    },
 
-			},
-			//鎵撳嵃浜岀淮鐮�
-			async printQrCode(item) {
-				console.log('item de shuju ', item)
-				const params = {
-					rwMatlBindId: item.id
-				};
-				try {
-				let res = await this.$u.api.dailyPaper.zongjianLabelInfo(params)
-				if (!res.data) {
-					this.$refs.uToast.show({
-						title: '鏈煡璇㈠埌璇ユ爣绛句俊鎭紒',
-						type: 'warning '
-					})
-					return
-				}
-				// const res = {
-				// 	ht: 'HT20250717995352665',
-				// 	lj: '88.118.1/A0611091',
-				// 	ljms: '閾滃崟绾� 瑁搁摐-TY-鍦嗗舰-3.0',
-				// 	fh: '1083.6',
-				// 	scdt: '2025-07-14 13:46:55.0',
-				// 	scph: '2025071273-3',
-				// 	fhdw: '姹熶笢鍚堥噾鎶�鏈湁闄愬叕鍙�',
-				// 	shdw: '鏄嗗北娉板痉閫氶摐涓氭湁闄愬叕鍙�',
-				// }
-				// 浠嶢PI鍝嶅簲涓彁鍙栨墍闇�鏁版嵁
-				const {
-					ht,
-					lj,
-					ljms,
-					fh,
-					scdt,
-					scph,
-					fhdw,
-					shdw
-				} = res.data
-				// const jsonString = JSON.stringify(res.data)
+    // 娣诲姞鍒版墦鍗伴槦鍒�
+    addToPrintQueue(items) {
+      if (!Array.isArray(items)) {
+        items = [items];
+      }
 
-				// 鍒濆鍖栫敾鏉�
-				jcapi.initDrawingBoard({
-					width: 70,
-					height: 49,
-					rotate: 90
-				});
+      this.printQueue.push(...items);
+      // 濡傛灉涓嶅湪鎵撳嵃涓紝鍒欏紑濮嬪鐞嗛槦鍒�
+      if (!this.printing) {
+        this.processPrintQueue();
+      }
+    },
 
-				// 缁樺埗浜岀淮鐮�
-				const qrContent =
-					`ht:${ht}\nlj:${lj}\nljms:${ljms}\nfh:${fh}\nscdt:${scdt}\nscph:${scph}\nfhdw:${fhdw}\nshdw:${shdw}`;
-				jcapi.drawLabelQrCode({
-					x: 43.5,
-					y: 2,
-					width: 24,
-					height: 24,
-					value: qrContent,
-					rotate: 0,
-					codeType: QrCodeType.QrCode,
-				});
-				// getDrawLabelLine	锛坸鍧愭爣锛寉鍧愭爣锛岀嚎鏉″搴︼紝绾挎潯楂樺害锛屾棆杞搴︼紝绾挎潯绫诲瀷锛�
-				// 缁樺埗妯嚎 瀹炵嚎8鏉�
-				this.getDrawLabelLine(1, 1, 67, 0.5, 0, LineType.Solid)
-				this.getDrawLabelLine(1, 6, 42, 0.3, 0, LineType.Solid)
-				this.getDrawLabelLine(1, 11, 42, 0.3, 0, LineType.Solid)
-				this.getDrawLabelLine(1, 16, 42, 0.3, 0, LineType.Solid)
-				this.getDrawLabelLine(1, 21, 42, 0.3, 0, LineType.Solid)
-				this.getDrawLabelLine(1, 27, 67, 0.3, 0, LineType.Solid)
-				this.getDrawLabelLine(1, 32, 67,0.3, 0, LineType.Solid)
-				this.getDrawLabelLine(1, 37, 67, 0.3, 0, LineType.Solid)
-				this.getDrawLabelLine(1, 42, 67, 0.3, 0, LineType.Solid)
-				this.getDrawLabelLine(1, 47, 67, 0.5, 0, LineType.Solid)
-				//缁樺埗绔栫嚎
-				this.getDrawLabelLine(1, 1, 0.5, 46, 0, LineType.Solid) // 绔栫嚎1
-				this.getDrawLabelLine(43, 1, 0.3, 26, 0, LineType.Solid) // 绔栫嚎2
-				this.getDrawLabelLine(68, 1, 0.5, 46, 0, LineType.Solid) // 绔栫嚎2
-				// getDrawLabelText	锛�1.x鍧愭爣锛�2.y鍧愭爣锛�3.鏂囨湰妗嗗搴︼紝4.鏂囨湰妗嗛珮搴︼紝5.缁樺埗鏂囧瓧鍐呭锛�6.瀛椾綋澶у皬锛堥粯璁ら珮搴�4mm锛�,7.鏃嬭浆瑙掑害,8.鎹㈣鏂瑰紡,9.饩忛棿闅�,10.瀛楅棿闅�,11.鏂囧瓧姘村钩甯冨眬,12鏂囧瓧鍨傜洿甯冨眬)
-				// 鏍囬
-				this.getDrawLabelText(3, 2.5, 40, 8, '涓ぉ绉戞妧瑁呯娓呭崟', 2.5, 0, LineModeType.AutoHeight, 0, 0, 1, 1,1)
-				// 濉啿鏂囧瓧鏍囬
-				this.getDrawLabelText(2, 7, 25, 8, '鍚堝悓鍙�:', 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 1,1)
-				this.getDrawLabelText(2, 12, 25, 8, '闆朵欢鍙�:', 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 1,1)
-				this.getDrawLabelText(2, 17, 25, 8, '闆朵欢鎻忚堪:', 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 1,1)
-				this.getDrawLabelText(2, 22.5, 25, 8, '鍙戣揣/瑁呯鏁�:', 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 1,1)
-				this.getDrawLabelText(2, 27.5, 25, 8, '鐢熶骇鏃ユ湡:', 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 1,1)
-				this.getDrawLabelText(2, 32.5, 25, 8, '鐢熶骇鎵瑰彿:', 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 1,1)
-				this.getDrawLabelText(2, 37.5, 25, 8, '鍙戣揣鍗曚綅:', 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 1,1)
-				this.getDrawLabelText(2, 42.5, 25, 8, '鏀惰揣鍗曚綅:', 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 1,1)
-				// 濉啿鍙傛暟鍊�
-				this.getDrawLabelText(11, 7, 30, 8, ht, 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 0,1)
-				this.getDrawLabelText(11, 12, 32, 8, lj, 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 0,1)
-				this.getDrawLabelText(14, 17, 30, 8, ljms, 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 0,1)
-				this.getDrawLabelText(17, 22.5, 27, 8, fh, 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 0,1)
-				this.getDrawLabelText(14, 27.5, 55, 8, scdt, 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 0,1)
-				this.getDrawLabelText(14, 32.5, 55, 8, scph, 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 0,1)
-				this.getDrawLabelText(14, 37.5,55, 8, fhdw, 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 0,1)
-				this.getDrawLabelText(14, 42.5, 55, 8, shdw, 2.5, 0, LineModeType.AutoHeight, 0, 0, 0, 0,1)
+    // 澶勭悊鎵撳嵃闃熷垪
+    async processPrintQueue() {
+      while (this.printQueue.length > 0) {
+        // 妫�鏌ヨ繛鎺ョ姸鎬�
+        const isConnected = await this.checkBluetoothConnection();
+        if (!isConnected) {
+          // 濡傛灉鏈繛鎺ワ紝鏄剧ず钃濈墮杩炴帴瀵硅瘽妗�
+          this.searchDevice();
+          // 涓嶆槸鐩存帴return锛岃�屾槸绛夊緟鐢ㄦ埛杩炴帴鍚庡啀缁х画澶勭悊
+          return;
+        }
 
-				// 鐢熸垚鎵撳嵃鏁版嵁
-				let imageJsonObj = jcapi.generateLabelJson()
-				let imageJsonObj111 = jcapi.generatePrintPreviewImage(imageJsonObj)
-				console.log('棰勮', imageJsonObj111)
-				// // 璁剧疆鎵撳嵃浠诲姟
-				jcapi.startJob({
-					totalCount: 1,
-					density: this.printDensity,
-					labelType: this.labelType,
-					printMode: this.printMode,
-				}, function(r) {
-					console.log('鎵撳嵃', r)
-					if (r.code == 0) {
-						// 鎵撳嵃鏁版嵁
-						jcapi.printData(imageJsonObj, {
-							"printQuantity": 1,
-						}, function(r) {
-							if (r.code == 0) {
-								console.log("鎵撳嵃鎴愬姛")
-								uni.showToast({
-									title: '鎵撳嵃鎴愬姛',
-									icon: 'success'
-								})
-							} else {
-								console.log("鎵撳嵃澶辫触")
-								uni.showToast({
-									title: '鎵撳嵃澶辫触: ' + (r.msg || '鏈煡閿欒'),
-									icon: 'none'
-								})
-							}
-						})
-					} else {
-						console.log("璁剧疆鎵撳嵃浠诲姟澶辫触")
-					}
+        this.printing = true;
+        this.printStatus = "printing";
 
-				})
+        // 鍙栧嚭闃熷垪涓殑绗竴涓换鍔�
+        const item = this.printQueue.shift();
 
-			},
-			tapQuery(item) {
-				this.maskShow = false
-				// 杩炴帴鎵撳嵃鏈�
-				let _this = this;
-				console.log(item)
-				jcapi.openPrinterByDevice({
-					address: item.address,
-					name: item.name,
-					deviceType: 0 // 璁惧绫诲瀷锛�0-钃濈墮锛�1-缃戠粶
-				}, function(r) {
-					uni.showToast({
-						title: (r.code == 0) ? "杩炴帴鎴愬姛" : "杩炴帴澶辫触",
-						duration: 2 * 1000
-					})
-					if (r.code == 0) {
-						_this.connectedDevice = item
-						// 娣诲姞鎵撳嵃鍒楄〃绌哄�兼鏌�
-						if (!_this.pritList || _this.pritList.length === 0) {
-							uni.showToast({
-								title: '娌℃湁鍙墦鍗扮殑鏁版嵁',
-								icon: 'none'
-							})
-							return
-						}
-						// 缁樻爣绛捐繘琛屾墦鍗�
-						_this.pritList.forEach(async item => {
-							await _this.printQrCode(item)
-						})
-					}
-				})
-			},
-			//鎵撳嵃鐩稿叧
-			searchDevice() {
-				let _this = this
-				uni.openBluetoothAdapter({ // 纭钃濈墮鏄惁鎵撳紑
-					success(r) {
-						uni.showLoading({
-							title: "鎼滅储涓�..."
-						})
-						// 鏈巿浜堣摑鐗欑浉鍏虫潈闄愬拰鏈墦寮�鎵嬫満瀹氫綅浼氭悳绱笉鍒拌澶�
-						jcapi.getBluetoothDevices(function(r) {
-							console.log("device:" + JSON.stringify(r))
-							// 鎼滅储鍒拌澶囧洖璋�
-							uni.hideLoading()
-							// 濡傛灉涔嬪墠鏈夎繛鎺ョ殑璁惧浣嗕笉鍦ㄦ悳绱㈢粨鏋滀腑锛岃鏄庤澶囧凡鏇存崲
-							if (_this.connectedDevice && !r.some(dev => dev.address === _this.connectedDevice.address)) {
-								_this.connectedDevice = null;
-								uni.showToast({
-									icon: 'none',
-									title: '宸茶繛鎺ョ殑钃濈墮璁惧宸叉洿鎹紝璇烽噸鏂伴�夋嫨',
-									duration: 2000
-								});
-							}
-							_this.listDevice = r;
-							_this.maskShow = true
-						})
-					},
-					fail(e) {
-						uni.showModal({
-							title: '鎻愮ず',
-							content: '鎵撳紑钃濈墮澶辫触锛岃妫�鏌ヨ摑鐗欐槸鍚﹀紑鍚�',
-							showCancel: false
-						})
-						console.log("寮�鍚摑鐗欒澶囧け璐�" + e)
-					}
-				})
-			},
-			// 缁樺埗妯嚎 瀹炵嚎
-			getDrawLabelLine(x, y, width, height, rotate, lineType) {
-				jcapi.drawLabelLine({
-					x: x,
-					y: y,
-					width: width,
-					height: height,
-					rotate: rotate,
-					lineType: lineType
-				});
-			},
-			// 濉啿鏂囧瓧鏍囬
-			getDrawLabelText(x, y, width, height, value, fontSize, rotate, lineMode, lineSpace, letterSpace,
-				textAlignHorizontal, textAlignVertical,bold) {
+        try {
+          // 鎵ц鎵撳嵃
+          await this.printQrCode(item);
 
-				jcapi.drawLabelText({
-					x: x,
-					y: y,
-					width: width,
-					height: height,
-					value: value,
-					fontSize: fontSize,
-					rotate: rotate,
-					lineMode: lineMode,
-					lineSpace: lineSpace,
-					letterSpace: letterSpace,
-					textAlignHorizontal: textAlignHorizontal,
-					textAlignVertical: textAlignVertical,
-					bold:bold
-				})
-			},
+          // 鎵撳嵃鎴愬姛鍚庣户缁鐞嗕笅涓�涓�
+          uni.showToast({
+            title: "鎵撳嵃鎴愬姛",
+            icon: "success",
+            duration: 1000,
+          });
 
-			//鍒锋柊涓婁竴涓〉闈�
-			refreshLastPage(no) {
-				// 鍛婄煡 A.vue 鏇存柊鏁版嵁
-				// 鑾峰彇椤甸潰鏍�
-				let pages = getCurrentPages()
+          // 鐭殏寤惰繜锛岄伩鍏嶆墦鍗版満缂撳瓨婧㈠嚭
+          await new Promise((resolve) => setTimeout(resolve, 1000));
+        } catch (error) {
+          console.error("鎵撳嵃鍑洪敊:", error);
+          this.printStatus = "error";
+          this.errorMessage = error.message || "鎵撳嵃鏃跺彂鐢熸湭鐭ラ敊璇�";
+          this.printing = false;
 
-				// 鑾峰彇涓婁竴椤垫爤
-				let prevPage = pages[pages.length - 2]
+          // 璁板綍澶辫触鐨勪换鍔★紝涓嶉噸鏂版坊鍔犲埌闃熷垪
+          this.failedPrintJobs = this.failedPrintJobs || [];
+          this.failedPrintJobs.push(item);
 
-				// 瑙﹀彂涓婁竴椤� upData 鍑芥暟(骞舵惡甯﹀弬鏁�)
-				prevPage.$vm.setNo(no)
+          uni.showToast({
+            title: `鎵撳嵃澶辫触: ${this.errorMessage}`,
+            icon: "none",
+            duration: 2000,
+          });
+          // 缁х画澶勭悊涓嬩竴涓换鍔�
+          continue;
+        }
+      }
 
-				// 杩斿洖涓婁竴椤�
-				uni.navigateBack({
-					delta: 1
-				})
-			},
-		}
-	};
+      this.printing = false;
+      this.printStatus = "idle";
+    },
+    // 鎵撳嵃鍗曚釜淇℃伅
+    selectNo(item) {
+      let that = this;
+      uni.showModal({
+        title: "鎻愮ず",
+        content: "鏄惁鎵撳嵃瑁呯鍗曪紵",
+        showCancel: true,
+        success: async function (res) {
+          if (res.confirm) {
+            // 娣诲姞鍒版墦鍗伴槦鍒�
+            that.addToPrintQueue(item);
+          }
+        },
+      });
+    },
+
+    // 鎵撳嵃鍏ㄩ儴淇℃伅
+    goPrintAll() {
+      let that = this;
+      uni.showModal({
+        title: "鎻愮ず",
+        content: `鏄惁鎵撳嵃鍏ㄩ儴${that.list.length}鏉¤绠卞崟锛焋,
+        showCancel: true,
+        success: async function (res) {
+          if (res.confirm) {
+            // 娣诲姞鍒版墦鍗伴槦鍒�
+            that.addToPrintQueue([...that.list]);
+          }
+        },
+      });
+    },
+    moveHandle() {},
+    maskclose() {},
+    //鎵撳嵃浜岀淮鐮�
+    async printQrCode(item) {
+      return new Promise(async (resolve, reject) => {
+        const params = {
+        	rwMatlBindId: item.id
+        };
+        try {
+          let res = await this.$u.api.dailyPaper.zongjianLabelInfo(params)
+          if (!res.data) {
+            this.$refs.uToast.show({
+              title: "鏈煡璇㈠埌璇ユ爣绛句俊鎭紒",
+              type: "warning ",
+            });
+            reject(new Error("鏈煡璇㈠埌璇ユ爣绛句俊鎭�"));
+            return;
+          }
+
+          // 浠嶢PI鍝嶅簲涓彁鍙栨墍闇�鏁版嵁
+          const { ht, lj, ljms, fh, scdt, scph, fhdw, shdw } = res.data;
+
+          // 鍒濆鍖栫敾鏉�
+          jcapi.initDrawingBoard({
+            width: 70,
+            height: 49,
+            rotate: 90,
+          });
+
+          // 缁樺埗浜岀淮鐮�
+          const qrContent = `ht:${ht}\nlj:${lj}\nljms:${ljms}\nfh:${fh}\nscdt:${scdt}\nscph:${scph}\nfhdw:${fhdw}\nshdw:${shdw}`;
+          jcapi.drawLabelQrCode({
+            x: 43.5,
+            y: 2,
+            width: 24,
+            height: 24,
+            value: qrContent,
+            rotate: 0,
+            codeType: QrCodeType.QrCode,
+          });
+
+          // 缁樺埗妯嚎
+          this.getDrawLabelLine(1, 1, 67, 0.5, 0, LineType.Solid);
+          this.getDrawLabelLine(1, 6, 42, 0.3, 0, LineType.Solid);
+          this.getDrawLabelLine(1, 11, 42, 0.3, 0, LineType.Solid);
+          this.getDrawLabelLine(1, 16, 42, 0.3, 0, LineType.Solid);
+          this.getDrawLabelLine(1, 21, 42, 0.3, 0, LineType.Solid);
+          this.getDrawLabelLine(1, 27, 67, 0.3, 0, LineType.Solid);
+          this.getDrawLabelLine(1, 32, 67, 0.3, 0, LineType.Solid);
+          this.getDrawLabelLine(1, 37, 67, 0.3, 0, LineType.Solid);
+          this.getDrawLabelLine(1, 42, 67, 0.3, 0, LineType.Solid);
+          this.getDrawLabelLine(1, 47, 67, 0.5, 0, LineType.Solid);
+
+          //缁樺埗绔栫嚎
+          this.getDrawLabelLine(1, 1, 0.5, 46, 0, LineType.Solid); // 绔栫嚎1
+          this.getDrawLabelLine(43, 1, 0.3, 26, 0, LineType.Solid); // 绔栫嚎2
+          this.getDrawLabelLine(68, 1, 0.5, 46, 0, LineType.Solid); // 绔栫嚎3
+
+          // 缁樺埗鏂囨湰
+          this.getDrawLabelText(3,2.5,40,8,"涓ぉ绉戞妧瑁呯娓呭崟",2.5,0,LineModeType.AutoHeight,0,0,1,1,1);
+          this.getDrawLabelText(2,7,25,8,"鍚堝悓鍙�:",2.5,0,LineModeType.AutoHeight,0,0,0,1,1);
+          this.getDrawLabelText(2,12,25,8,"闆朵欢鍙�:",2.5,0,LineModeType.AutoHeight,0,0,0,1,1);
+          this.getDrawLabelText(2,17,25,8,"闆朵欢鎻忚堪:",2.5,0,LineModeType.AutoHeight,0,0,0,1,1);
+          this.getDrawLabelText(2,22.5,25,8,"鍙戣揣/瑁呯鏁�:",2.5,0,LineModeType.AutoHeight,0,0,0,1,1);
+          this.getDrawLabelText(2,27.5,25,8,"鐢熶骇鏃ユ湡:",2.5,0,LineModeType.AutoHeight,0,0,0,1,1);
+          this.getDrawLabelText(2,32.5,25,8,"鐢熶骇鎵瑰彿:",2.5,0,LineModeType.AutoHeight,0,0,0,1,1);
+          this.getDrawLabelText(2,37.5,25,8,"鍙戣揣鍗曚綅:",2.5,0,LineModeType.AutoHeight,0,0,0,1,1);
+          this.getDrawLabelText(2,42.5,25,8,"鏀惰揣鍗曚綅:",2.5,0,LineModeType.AutoHeight,0,0,0,1,1);
+
+          // 濉厖鍙傛暟鍊�
+          this.getDrawLabelText(11,7,30,8,ht,2.5,0,LineModeType.AutoHeight,0,0,0,0,1);
+          this.getDrawLabelText(11,12,32,8,lj,2.5,0,LineModeType.AutoHeight,0,0,0,0,1);
+          this.getDrawLabelText(14,17,30,8,ljms,2.5,0,LineModeType.AutoHeight,0,0,0,0,1);
+          this.getDrawLabelText(17,22.5,27,8,fh,2.5,0,LineModeType.AutoHeight,0,0,0,0,1);
+          this.getDrawLabelText(14,27.5,55,8,scdt,2.5,0,LineModeType.AutoHeight,0,0,0,0,1);
+          this.getDrawLabelText(14,32.7,55,8,scph,2.5,0,LineModeType.AutoHeight,0,0,0,0,1);
+          this.getDrawLabelText(14,37.5,55,8,fhdw,2.5,0,LineModeType.AutoHeight,0,0,0,0,1);
+          this.getDrawLabelText(14,42.5,55,8,shdw,2.5,0,LineModeType.AutoHeight,0,0,0,0,1);
+
+          // 鐢熸垚鎵撳嵃鏁版嵁
+          let imageJsonObj = jcapi.generateLabelJson();
+
+          // 璁剧疆鎵撳嵃浠诲姟
+          jcapi.startJob(
+            {
+              totalCount: 1,
+              density: this.printDensity,
+              labelType: this.labelType,
+              printMode: this.printMode,
+            },
+            function (r) {
+              if (r.code == 0) {
+                // 鎵撳嵃鏁版嵁
+                // 瀛樺偍鍘熷鎵撳嵃璁℃暟鍥炶皟
+                const originalPrintCountCallback =
+                  jcapi.didReadPrintCountInfo._callback;
+                // 涓存椂鎵撳嵃璁℃暟鍥炶皟锛岀敤浜庣‘璁ゆ墦鍗板畬鎴�
+                const tempPrintCountCallback = (printResult) => {
+                  // 鎭㈠鍘熷鍥炶皟
+                  jcapi.didReadPrintCountInfo(originalPrintCountCallback);
+                  // 娓呴櫎鎵撳嵃瓒呮椂
+                  clearTimeout(printTimeout);
+                  // 缁撴潫褰撳墠鎵撳嵃浠诲姟
+                  // 瑙f瀽Promise琛ㄧず鎵撳嵃瀹屾垚
+                  resolve();
+                };
+                // 璁剧疆涓存椂鍥炶皟
+                jcapi.didReadPrintCountInfo(tempPrintCountCallback);
+
+                // 娣诲姞鎵撳嵃瓒呮椂澶勭悊
+                const printTimeout = setTimeout(() => {
+                  jcapi.didReadPrintCountInfo(originalPrintCountCallback);
+                  reject(new Error("鎵撳嵃瓒呮椂鏈搷搴�"));
+                }, 20000);
+
+                jcapi.printData(
+                  imageJsonObj,
+                  {
+                    printQuantity: 1,
+                  },
+                  function (r) {
+                    if (r.code != 0) {
+                      // 鎭㈠鍘熷鍥炶皟
+                      jcapi.didReadPrintCountInfo(originalPrintCountCallback);
+                      // 缁撴潫褰撳墠鎵撳嵃浠诲姟
+                      reject(new Error(r.msg || "鎵撳嵃澶辫触"));
+                    }
+                    // 鎵撳嵃鏁版嵁鍙戦�佹垚鍔熷悗绛夊緟鎵撳嵃璁℃暟鍥炶皟纭瀹為檯鎵撳嵃瀹屾垚
+                  }
+                );
+              } else {
+                reject(new Error(r.msg || "璁剧疆鎵撳嵃浠诲姟澶辫触"));
+              }
+            }
+          );
+        } catch (error) {
+          reject(error);
+        }
+      });
+    },
+    tapQuery(item) {
+      this.maskShow = false;
+      // 杩炴帴鎵撳嵃鏈�
+      let _this = this;
+
+      // 璁剧疆涓鸿繛鎺ヤ腑鐘舵��
+      this.connectionStatus = "connecting";
+
+      jcapi.openPrinterByDevice(
+        {
+          address: item.address,
+          name: item.name,
+          deviceType: 0, // 璁惧绫诲瀷锛�0-钃濈墮锛�1-缃戠粶
+        },
+        function (r) {
+          if (r.code == 0) {
+            _this.connectedDevice = item;
+            _this.connectionStatus = "connected";
+            uni.showToast({
+              title: "杩炴帴鎴愬姛",
+              duration: 1500,
+            });
+            // 寮�濮嬪鐞嗘墦鍗伴槦鍒�
+            if (_this.printQueue.length > 0) {
+              _this.processPrintQueue();
+            }
+          } else {
+            _this.connectionStatus = "disconnected";
+            uni.showToast({
+              title: "杩炴帴澶辫触: " + (r.msg || "鏈煡閿欒"),
+              icon: "none",
+              duration: 2000,
+            });
+          }
+        }
+      );
+    },
+    //鎵撳嵃鐩稿叧
+    searchDevice() {
+      let _this = this;
+      uni.openBluetoothAdapter({
+        // 纭钃濈墮鏄惁鎵撳紑
+        success(r) {
+          uni.showLoading({
+            title: "鎼滅储涓�...",
+          });
+          // 鏈巿浜堣摑鐗欑浉鍏虫潈闄愬拰鏈墦寮�鎵嬫満瀹氫綅浼氭悳绱笉鍒拌澶�
+          jcapi.getBluetoothDevices(function (r) {
+            console.log("device:" + JSON.stringify(r));
+            // 鎼滅储鍒拌澶囧洖璋�
+            uni.hideLoading();
+            // 濡傛灉涔嬪墠鏈夎繛鎺ョ殑璁惧浣嗕笉鍦ㄦ悳绱㈢粨鏋滀腑锛岃鏄庤澶囧凡鏇存崲
+            if (
+              _this.connectedDevice &&
+              !r.some((dev) => dev.address === _this.connectedDevice.address)
+            ) {
+              _this.connectedDevice = null;
+              uni.showToast({
+                icon: "none",
+                title: "宸茶繛鎺ョ殑钃濈墮璁惧宸叉洿鎹紝璇烽噸鏂伴�夋嫨",
+                duration: 2000,
+              });
+            }
+            _this.listDevice = r;
+            _this.maskShow = true;
+          });
+        },
+        fail(e) {
+          uni.showModal({
+            title: "鎻愮ず",
+            content: "鎵撳紑钃濈墮澶辫触锛岃妫�鏌ヨ摑鐗欐槸鍚﹀紑鍚�",
+            showCancel: false,
+          });
+          console.log("寮�鍚摑鐗欒澶囧け璐�" + e);
+        },
+      });
+    },
+    // 缁樺埗妯嚎
+    getDrawLabelLine(x, y, width, height, rotate, lineType) {
+      jcapi.drawLabelLine({
+        x: x,
+        y: y,
+        width: width,
+        height: height,
+        rotate: rotate,
+        lineType: lineType,
+      });
+    },
+    // 濉啿鏂囧瓧鏍囬
+    getDrawLabelText(
+      x,
+      y,
+      width,
+      height,
+      value,
+      fontSize,
+      rotate,
+      lineMode,
+      lineSpace,
+      letterSpace,
+      textAlignHorizontal,
+      textAlignVertical,
+      bold
+    ) {
+      jcapi.drawLabelText({
+        x: x,
+        y: y,
+        width: width,
+        height: height,
+        value: value,
+        fontSize: fontSize,
+        rotate: rotate,
+        lineMode: lineMode,
+        lineSpace: lineSpace,
+        letterSpace: letterSpace,
+        textAlignHorizontal: textAlignHorizontal,
+        textAlignVertical: textAlignVertical,
+        bold: bold,
+      });
+    },
+    getConnectionStatusText() {
+      switch (this.connectionStatus) {
+        case "connected":
+          return "钃濈墮宸茶繛鎺�";
+        case "connecting":
+          return "钃濈墮杩炴帴涓�...";
+        default:
+          return "钃濈墮鏈繛鎺�";
+      }
+    },
+    getPrintStatusText() {
+      switch (this.printStatus) {
+        case "printing":
+          const total = this.printQueue.length + 1; // 闃熷垪涓墿浣� + 褰撳墠姝e湪鎵撳嵃
+          const current = total - this.printQueue.length;
+          return `鎵撳嵃涓�(${current}/${total})`;
+        case "error":
+          return `鎵撳嵃閿欒: ${this.errorMessage}`;
+        default:
+          return "灏辩华";
+      }
+    },
+    //鍒锋柊涓婁竴涓〉闈�
+    refreshLastPage(no) {
+      // 鍛婄煡 A.vue 鏇存柊鏁版嵁
+      // 鑾峰彇椤甸潰鏍�
+      let pages = getCurrentPages();
+
+      // 鑾峰彇涓婁竴椤垫爤
+      let prevPage = pages[pages.length - 2];
+
+      // 瑙﹀彂涓婁竴椤� upData 鍑芥暟(骞舵惡甯﹀弬鏁�)
+      prevPage.$vm.setNo(no);
+
+      // 杩斿洖涓婁竴椤�
+      uni.navigateBack({
+        delta: 1,
+      });
+    },
+  },
+};
 </script>
 <style lang="scss">
-	.finishProductIn-locno-bg {
-		background-color: #F6F9FF;
-		background-image: url('~@/static/custom/finishProductIn/locNoBg.png');
-		// background: linear-gradient(180deg,rgba(206,227,254,1),rgba(206,227,254,1) 20%,rgba(206,227,254,0.5) 40%,rgba(206,227,254,0.25) 60%,rgba(206,227,254,0.08) 80%,rgba(206,227,254,0));
-		padding: 0 20rpx;
-		background-attachment: fixed;
-		background-size: 100% auto;
-		background-repeat: no-repeat;
-		position: fixed;
-		top: 0;
-		bottom: 0;
-		width: 100%;
-		z-index: -1;
-	}
+.finishProductIn-locno-bg {
+  background-color: #f6f9ff;
+  background-image: url("~@/static/custom/finishProductIn/locNoBg.png");
+  // background: linear-gradient(180deg,rgba(206,227,254,1),rgba(206,227,254,1) 20%,rgba(206,227,254,0.5) 40%,rgba(206,227,254,0.25) 60%,rgba(206,227,254,0.08) 80%,rgba(206,227,254,0));
+  padding: 0 20rpx;
+  background-attachment: fixed;
+  background-size: 100% auto;
+  background-repeat: no-repeat;
+  position: fixed;
+  top: 0;
+  bottom: 0;
+  width: 100%;
+  z-index: -1;
+}
 
-	.finishProductIn-locno-search {
-		padding: 40rpx 30rpx 20rpx 30rpx;
-	}
+.finishProductIn-locno-search {
+  padding: 40rpx 30rpx 20rpx 30rpx;
+}
 
-	.wrap .finishProductIn-locno-scroll-list {
-		height: calc(100vh - var(--window-top) - var(--window-bottom) - 242rpx);
-		width: 100%;
-	}
+.wrap .finishProductIn-locno-scroll-list {
+  height: calc(100vh - var(--window-top) - var(--window-bottom) - 242rpx);
+  width: 100%;
+}
 
-	.finishProductIn-locno-scroll-list-group {
-		::v-deep .u-cell-item-box {
-			background-color: rgba(250, 252, 255, 0.36) !important;
-			padding: 0rpx 30rpx;
-		}
+.finishProductIn-locno-scroll-list-group {
+  ::v-deep .u-cell-item-box {
+    background-color: rgba(250, 252, 255, 0.36) !important;
+    padding: 0rpx 30rpx;
+  }
 
-		.content {
-			font-size: 12px;
-			background-color: #ffffff;
-			box-sizing: border-box;
-			border-radius: 10rpx;
-			margin: 0rpx 0rpx 16rpx;
-			padding: 20rpx 8rpx;
-			box-shadow: none;
-			display: flex;
-			align-items: center;
+  .content {
+    font-size: 12px;
+    background-color: #ffffff;
+    box-sizing: border-box;
+    border-radius: 10rpx;
+    margin: 0rpx 0rpx 16rpx;
+    padding: 20rpx 8rpx;
+    box-shadow: none;
+    display: flex;
+    align-items: center;
 
-			.content-header {
-				width: 40rpx;
-				height: 90rpx;
-				display: flex;
-				align-items: center;
+    .content-header {
+      width: 40rpx;
+      height: 90rpx;
+      display: flex;
+      align-items: center;
 
-				.content-header-icon {
-					background-image: url("~@/static/custom/moveWareHouse/header_icon.png");
-					background-size: 100% auto;
-					background-repeat: no-repeat;
-					height: 28rpx;
-					width: 28rpx;
-				}
+      .content-header-icon {
+        background-image: url("~@/static/custom/moveWareHouse/header_icon.png");
+        background-size: 100% auto;
+        background-repeat: no-repeat;
+        height: 28rpx;
+        width: 28rpx;
+      }
 
-				.content-header-title {
-					margin-left: 11rpx;
-					font-size: 26rpx;
-					font-weight: bold;
-					color: #3d52f5;
-				}
-			}
+      .content-header-title {
+        margin-left: 11rpx;
+        font-size: 26rpx;
+        font-weight: bold;
+        color: #3d52f5;
+      }
+    }
 
-			.content-body {
-				flex: 1;
-				background: #f5f9ff;
-				border-radius: 10rpx;
-				padding: 0rpx 23rpx;
+    .content-body {
+      flex: 1;
+      background: #f5f9ff;
+      border-radius: 10rpx;
+      padding: 0rpx 23rpx;
 
-				.row-list {
-					height: 60rpx;
-					display: flex;
-					flex-direction: row;
-					padding: 0px;
-					align-items: center;
-				}
+      .row-list {
+        height: 60rpx;
+        display: flex;
+        flex-direction: row;
+        padding: 0px;
+        align-items: center;
+      }
 
-				.row-list ._label {
-					display: flex;
-					flex: 0.8;
-					color: #909399;
-					align-items: center;
+      .row-list ._label {
+        display: flex;
+        flex: 0.8;
+        color: #909399;
+        align-items: center;
 
-					._label-icon-1 {
-						background-image: url("~@/static/custom/moveWareHouse/label-icon-1.png");
-						background-size: 100% auto;
-						background-repeat: no-repeat;
-						height: 26rpx;
-						width: 26rpx;
-					}
+        ._label-icon-1 {
+          background-image: url("~@/static/custom/moveWareHouse/label-icon-1.png");
+          background-size: 100% auto;
+          background-repeat: no-repeat;
+          height: 26rpx;
+          width: 26rpx;
+        }
 
-					._label-icon-2 {
-						background-image: url("~@/static/custom/moveWareHouse/label-icon-2.png");
-						background-size: 100% auto;
-						background-repeat: no-repeat;
-						height: 26rpx;
-						width: 26rpx;
-					}
+        ._label-icon-2 {
+          background-image: url("~@/static/custom/moveWareHouse/label-icon-2.png");
+          background-size: 100% auto;
+          background-repeat: no-repeat;
+          height: 26rpx;
+          width: 26rpx;
+        }
 
-					._label-icon-3 {
-						background-image: url("~@/static/custom/moveWareHouse/label-icon-3.png");
-						background-size: 100% auto;
-						background-repeat: no-repeat;
-						height: 26rpx;
-						width: 26rpx;
-					}
+        ._label-icon-3 {
+          background-image: url("~@/static/custom/moveWareHouse/label-icon-3.png");
+          background-size: 100% auto;
+          background-repeat: no-repeat;
+          height: 26rpx;
+          width: 26rpx;
+        }
 
-					._label-name {
-						margin-left: 11rpx;
-						font-size: 26rpx;
-						font-weight: 500;
-						color: #666666;
-					}
-				}
+        ._label-name {
+          margin-left: 11rpx;
+          font-size: 26rpx;
+          font-weight: 500;
+          color: #666666;
+        }
+      }
 
-				.row-list ._content {
-					flex: 1.5;
-					text-align: right;
-					color: #909399;
-					font-size: 24rpx;
-				}
+      .row-list ._content {
+        flex: 1.5;
+        text-align: right;
+        color: #909399;
+        font-size: 24rpx;
+      }
 
-				.row-list .s1 {
-					color: #d35651;
-				}
-			}
-		}
-	}
+      .row-list .s1 {
+        color: #d35651;
+      }
+    }
+  }
+}
 
-	.navbar-right {
-		font-weight: 500;
-		font-size: 13px;
-		color: #0b0b0b;
-		line-height: 36rpx;
-		margin-right: 32rpx;
-	}
+.navbar-right {
+  font-weight: 500;
+  font-size: 13px;
+  color: #0b0b0b;
+  line-height: 36rpx;
+  margin-right: 32rpx;
+}
+
+/* 妯℃�佹鏍峰紡浼樺寲 */
+.u-modal {
+  --modal-width: 85% !important;
+  --modal-radius: 16rpx !important;
+  --modal-bg-color: #ffffff !important;
+}
+
+/* 妯℃�佹鍐呭鍖哄煙 */
+.uni-scroll_box {
+  height: 500rpx !important;
+  padding: 20rpx;
+}
+
+/* 璁惧鍒楄〃椤规牱寮� */
+.device-item {
+  background-color: #f5f9ff;
+  border-radius: 12rpx;
+  padding: 20rpx;
+  margin-bottom: 16rpx;
+  box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
+}
+
+/* 璁惧鍚嶇О鏍峰紡 */
+.device-name {
+  font-size: 28rpx;
+  font-weight: 500;
+  color: #333333;
+  margin-bottom: 10rpx;
+  display: flex;
+  justify-content: space-between;
+}
+
+/* UUID鏂囨湰鏍峰紡 */
+.device-uuid {
+  font-size: 28rpx;
+  font-weight: 500;
+  color: #333333;
+  margin-bottom: 10rpx;
+  display: flex;
+  justify-content: space-between;
+}
+
+/* 妯℃�佹鏍囬 */
+.modal-title {
+  font-size: 32rpx;
+  font-weight: bold;
+  color: #333333;
+  text-align: center;
+  margin-bottom: 20rpx;
+  padding-bottom: 10rpx;
+  border-bottom: 1rpx solid #eeeeee;
+}
+
+/* 绌虹姸鎬佹彁绀� */
+.empty-tip {
+  text-align: center;
+  padding: 100rpx 0;
+  color: #999999;
+  font-size: 28rpx;
+}
+
+.status-indicator {
+  padding: 8rpx 16rpx;
+  font-size: 24rpx;
+  text-align: center;
+  color: #fff;
+  background-color: #666;
+
+  &.connected {
+    background-color: #07c160;
+  }
+
+  &.connecting {
+    background-color: #ff976a;
+  }
+
+  &.disconnected {
+    background-color: #f53f3f;
+  }
+
+  .print-status {
+    margin-left: 10rpx;
+    font-size: 22rpx;
+  }
+}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3