From 4299dc4a3f0a0ac25ee9ea28eeda3bd94a40abfc Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期二, 21 十月 2025 11:11:24 +0800
Subject: [PATCH] 核磅记录和移库记录需要倒叙和头部插入

---
 pages/wareHouse/nuclearScale/nuclearscalerecord.vue | 1159 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 822 insertions(+), 337 deletions(-)

diff --git a/pages/wareHouse/nuclearScale/nuclearscalerecord.vue b/pages/wareHouse/nuclearScale/nuclearscalerecord.vue
index 09b4a22..4363f74 100644
--- a/pages/wareHouse/nuclearScale/nuclearscalerecord.vue
+++ b/pages/wareHouse/nuclearScale/nuclearscalerecord.vue
@@ -8,12 +8,21 @@
 			</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 class="content-header-title">{{ list.length - index }}</view>
 						</view>
 						<view class="content-body">
 							<view class="row-list">
@@ -22,7 +31,7 @@
 									<view class="_label-name">鎵规鍙凤細</view>
 								</view>
 								<view class="_content">
-									{{ item.outBatchNo }}
+									{{ item.batchNo }}
 								</view>
 							</view>
 							<view class="row-list">
@@ -31,7 +40,7 @@
 									<view class="_label-name">浜у搧鎻忚堪锛�</view>
 								</view>
 								<view class="_content">
-									{{ item.netWeight }}
+									{{ item.partDescription }}
 								</view>
 							</view>
 							<view class="row-list">
@@ -49,7 +58,7 @@
 									<view class="_label-name">姣涢噸锛�</view>
 								</view>
 								<view class="_content">
-									{{ item.grossWeight }}
+									{{ item.newGrossWeight }}
 								</view>
 							</view>
 							<view class="row-list">
@@ -58,7 +67,7 @@
 									<view class="_label-name">鐩橀噸锛�</view>
 								</view>
 								<view class="_content">
-									{{ item.trayWeight }}
+									{{ item.newWeight }}
 								</view>
 							</view>
 							<view class="row-list">
@@ -67,7 +76,7 @@
 									<view class="_label-name">鍑�閲嶏細</view>
 								</view>
 								<view class="_content">
-									{{ item.value5 }}
+									{{ item.newNetWeight }}
 								</view>
 							</view>
 							<view class="row-list">
@@ -76,7 +85,7 @@
 									<view class="_label-name">鏍哥閲嶉噺锛�</view>
 								</view>
 								<view class="_content">
-									{{ item.netWeight }}
+									{{ item.verificationWeight }}
 								</view>
 							</view>
 							<view class="row-list">
@@ -85,7 +94,7 @@
 									<view class="_label-name">鍙夎溅鐩橀噸锛�</view>
 								</view>
 								<view class="_content">
-									{{ item.value7 }}
+									{{ item.forkliftWeight }}
 								</view>
 							</view>
 						</view>
@@ -97,26 +106,20 @@
 			</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">
+		<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="packing-registration-param-item param-extra">
-						<view class="packing-registration-param-item-left">
-							<text class="item-one">鍚嶇О锛�</text>
+					<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="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 class="device-uuid">
+							<text>UUID:</text>
+							<text>{{ item.address || "鏃犲湴鍧�" }}</text>
 						</view>
 					</view>
 				</scroll-view>
@@ -125,7 +128,7 @@
 	</view>
 </template>
 <script>
-	import content_bg from '@/static/custom/finishProductIn/locNoBg.png'
+	import content_bg from "@/static/custom/finishProductIn/locNoBg.png";
 	const jcapi = uni.requireNativePlugin("JCSDK-JCApiModule");
 
 	// 浜岀淮鐮佺被鍨�
@@ -133,35 +136,35 @@
 		QrCode: 31,
 		PDF417: 32,
 		DataMatrix: 33,
-		AZTEC: 34
-	}
+		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',
+					backgroundAttachment: "fixed",
+					backgroundSize: "100% auto",
+					backgroundRepeat: "no-repeat",
 				},
-				keywords: '',
+				keywords: "",
 				list: [],
 				total: 0,
 				pageNum: 1,
 				pageSize: 10,
-				status: 'loading',
+				status: "loading",
 				loadText: {
 					loadmore: "鍔犺浇鏇村...",
 					loading: "鍔姏鍔犺浇涓�...",
@@ -169,9 +172,10 @@
 				},
 				maskShow: false,
 				listDevice: [], //钃濈墮璁惧鏁版嵁
-				pritList: [],
+				printQueue: [], // 鎵撳嵃闃熷垪
+				printing: false, // 鏄惁姝e湪鎵撳嵃
 				printDensity: 3, // 榛樿鎵撳嵃娴撳害
-				labelType: 1, // 榛樿鏍囩绫诲瀷 *                  
+				labelType: 1, // 榛樿鏍囩绫诲瀷
 				// 1锛氶棿闅欑焊
 				// 2锛氶粦鏍囩焊
 				// 3锛氳繛缁焊
@@ -180,39 +184,86 @@
 				printMode: 2, // 榛樿鎵撳嵃妯″紡
 				//	1锛氱儹鏁�
 				// 	2锛氱儹杞嵃
-				connectedDevice: null // 宸茶繛鎺ョ殑鎵撳嵃鏈�
+				connectedDevice: null, // 宸茶繛鎺ョ殑鎵撳嵃鏈�
+				connectionStatus: "disconnected", // 杩炴帴鐘舵��: disconnected, connecting, connected
+				printStatus: "idle", // 鎵撳嵃鐘舵��: idle, printing, error
+				errorMessage: "", // 閿欒淇℃伅
+				verificationNo: "",
+				failedPrintJobs: [],
 			};
 		},
-		onLoad() {
-			this.getlist()
+		onLoad(options) {
+			this.verificationNo = JSON.parse(
+				decodeURIComponent(options.verificationNo)
+			);
+			this.getlist();
 			// 鍒濆鍖朣DK
-			jcapi.initSDK()
+			jcapi.initSDK();
+
+			// 灏濊瘯鎭㈠涔嬪墠鐨勮摑鐗欒繛鎺ョ姸鎬�
+			this.restoreBluetoothConnection();
+
 			// 鐩戝惉椤电爜鍥炶皟
 			jcapi.didReadPrintCountInfo(function(r) {
-				console.log(r)
-			})
+				console.log("椤电爜", r);
+			});
 
 			// 鐩戝惉閿欒鍥炶皟
 			jcapi.didReadPrintErrorInfo((r) => {
-				console.log(r)
+				console.log("閿欒", r);
 				if (r.code == 23) {
 					// 鎵撳嵃鏈烘柇寮�杩炴帴
-					this.connectedDevice = null
+					this.connectedDevice = null;
+					// 娓呴櫎鏈湴瀛樺偍鐨勮繛鎺ヤ俊鎭�
+					uni.removeStorageSync("bluetoothConnection");
 					uni.showToast({
-						icon: 'none',
-						title: '鎵撳嵃鏈鸿繛鎺ュ凡鏂紑锛岃閲嶆柊杩炴帴',
-						duration: 2 * 1000
-					})
+						icon: "none",
+						title: "鎵撳嵃鏈鸿繛鎺ュ凡鏂紑锛岃閲嶆柊杩炴帴",
+						duration: 2 * 1000,
+					});
 				} else {
 					uni.showToast({
-						icon: 'none',
+						icon: "none",
 						title: JSON.stringify(r),
-						duration: 2 * 1000
-					})
+						duration: 2 * 1000,
+					});
 				}
-			})
+			});
 		},
 		methods: {
+			restoreBluetoothConnection() {
+				try {
+					// 浠庢湰鍦板瓨鍌ㄨ幏鍙栦箣鍓嶄繚瀛樼殑杩炴帴淇℃伅
+					const savedConnection = uni.getStorageSync("bluetoothConnection");
+					if (savedConnection && savedConnection.address) {
+						console.log("灏濊瘯鎭㈠钃濈墮杩炴帴:", savedConnection);
+						// 璁剧疆涓鸿繛鎺ヤ腑鐘舵��
+						this.connectionStatus = "connecting";
+
+						// 灏濊瘯閲嶆柊杩炴帴
+						jcapi.openPrinterByDevice({
+								address: savedConnection.address,
+								name: savedConnection.name,
+								deviceType: 0, // 璁惧绫诲瀷锛�0-钃濈墮锛�1-缃戠粶
+							},
+							(r) => {
+								if (r.code == 0) {
+									this.connectedDevice = savedConnection;
+									this.connectionStatus = "connected";
+									console.log("钃濈墮杩炴帴宸叉仮澶�");
+								} else {
+									this.connectionStatus = "disconnected";
+									// 濡傛灉閲嶈繛澶辫触锛屾竻闄や繚瀛樼殑杩炴帴淇℃伅
+									uni.removeStorageSync("bluetoothConnection");
+									console.log("钃濈墮閲嶈繛澶辫触:", r);
+								}
+							}
+						);
+					}
+				} catch (e) {
+					console.error("鎭㈠钃濈墮杩炴帴澶辫触:", e);
+				}
+			},
 			getmoreList() {
 				if (this.pageSize >= this.total) {
 					this.status = "nomore";
@@ -225,12 +276,29 @@
 				}, 1000);
 			},
 			getlist() {
-				this.$u.api.workReporting
-					.getWorkshopOrder({
+				this.$u.api.NuclearScaleEntry.queryPacking({
+					current: this.pageNum,
+					size: this.pageSize,
+					verificationNo: this.verificationNo,
+				}).then((res) => {
+					this.list = res.data;
+					this.total = res.data.length;
+					if (this.pageSize >= this.total) {
+						this.status = "nomore";
+					} else {
+						this.status = "loadmore";
+					}
+				});
+			},
+			search(value) {
+				if (value) {
+					this.list = [];
+					this.pageSize = 10;
+					this.$u.api.NuclearScaleEntry.queryPacking({
 						current: this.pageNum,
-						size: this.pageSize
-					})
-					.then((res) => {
+						size: this.pageSize,
+						moNo: value,
+					}).then((res) => {
 						this.list = res.data.records;
 						this.total = res.data.total;
 						if (this.pageSize >= this.total) {
@@ -239,310 +307,608 @@
 							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;
+				if (!this.connectedDevice) {
+					this.connectionStatus = "disconnected";
+					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);
-						}
-					});
-				});
-			},
+				// 璁剧疆涓鸿繛鎺ヤ腑鐘舵��
+				this.connectionStatus = "connecting";
 
-			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]
-							}
-						}
+				// 澧炲己杩炴帴鐘舵�佹娴�
+				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);
 					}
 				});
 			},
-			// 鎵撳嵃鍏ㄩ儴淇℃伅
-			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() {
 
-			},
-			maskclose() {
+			// 娣诲姞鍒版墦鍗伴槦鍒�
+			addToPrintQueue(items) {
+				if (!Array.isArray(items)) {
+					items = [items];
+				}
 
-			},
-			//鎵撳嵃浜岀淮鐮�
-			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)
-
-					// 鍒濆鍖栫敾鏉�
-					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,
-					});
-					// 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)
-
-					// 鐢熸垚鎵撳嵃鏁版嵁
-					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("璁剧疆鎵撳嵃浠诲姟澶辫触")
-						}
-
-					})
-				} catch (error) {
-					console.log(error)
+				this.printQueue.push(...items);
+				// 濡傛灉涓嶅湪鎵撳嵃涓紝鍒欏紑濮嬪鐞嗛槦鍒�
+				if (!this.printing) {
+					this.processPrintQueue();
 				}
 			},
+
+			// 澶勭悊鎵撳嵃闃熷垪
+			async processPrintQueue() {
+				while (this.printQueue.length > 0) {
+					// 妫�鏌ヨ繛鎺ョ姸鎬�
+					const isConnected = await this.checkBluetoothConnection();
+					if (!isConnected) {
+						// 濡傛灉鏈繛鎺ワ紝鏄剧ず钃濈墮杩炴帴瀵硅瘽妗�
+						this.searchDevice();
+						// 涓嶆槸鐩存帴return锛岃�屾槸绛夊緟鐢ㄦ埛杩炴帴鍚庡啀缁х画澶勭悊
+						return;
+					}
+
+					this.printing = true;
+					this.printStatus = "printing";
+
+					// 鍙栧嚭闃熷垪涓殑绗竴涓换鍔�
+					const item = this.printQueue.shift();
+
+					try {
+						// 鎵ц鎵撳嵃
+						await this.printQrCode(item);
+
+						// 鎵撳嵃鎴愬姛鍚庣户缁鐞嗕笅涓�涓�
+						uni.showToast({
+							title: "鎵撳嵃鎴愬姛",
+							icon: "success",
+							duration: 1000,
+						});
+
+						// 鐭殏寤惰繜锛岄伩鍏嶆墦鍗版満缂撳瓨婧㈠嚭
+						await new Promise((resolve) => setTimeout(resolve, 1000));
+					} catch (error) {
+						console.error("鎵撳嵃鍑洪敊:", error);
+						this.printStatus = "error";
+						this.errorMessage = error.message || "鎵撳嵃鏃跺彂鐢熸湭鐭ラ敊璇�";
+						this.printing = false;
+
+						// 璁板綍澶辫触鐨勪换鍔★紝涓嶉噸鏂版坊鍔犲埌闃熷垪
+						this.failedPrintJobs = this.failedPrintJobs || [];
+						this.failedPrintJobs.push(item);
+
+						uni.showToast({
+							title: `鎵撳嵃澶辫触: ${this.errorMessage}`,
+							icon: "none",
+							duration: 2000,
+						});
+						// 缁х画澶勭悊涓嬩竴涓换鍔�
+						continue;
+					}
+				}
+
+				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() {},
+			//鎵撳嵃浜岀淮鐮�
+			printQrCode(item) {
+				return new Promise(async (resolve, reject) => {
+					// const params = {
+					// 	rwMatlBindId: item.id
+					// };
+					try {
+						// let res = await this.$u.api.dailyPaper.zongjianLabelInfo(params)
+						if (!item) {
+							this.$refs.uToast.show({
+								title: "鏈煡璇㈠埌璇ユ爣绛句俊鎭紒",
+								type: "warning ",
+							});
+							reject(new Error("鏈煡璇㈠埌璇ユ爣绛句俊鎭�"));
+							return;
+						}
+
+						const ht = item.contractNo;
+						const lj = item.partNo;
+						const ljms = item.ccontrProModel;
+						const fh = item.newNetWeight;
+						const scdt = item.productionDate;
+						const scph = item.batchNo;
+						const shdw = item.customerName;
+						const fhdw = "姹熶笢鍚堥噾鎶�鏈湁闄愬叕鍙�";
+
+						// 鍒濆鍖栫敾鏉�
+						jcapi.initDrawingBoard({
+							width: 70,
+							height: 49,
+							rotate: 90,
+						});
+
+						// 缁樺埗浜岀淮鐮�
+						const qrContent = {
+							company: item.customerNo,
+							line_no: item.lineNo,
+							lot_batch_no: item.batchNo,
+							order_no: item.contractNo,
+							part_no: item.partNo,
+							total_qty: item.newNetWeight,
+							qty_arrived: item.newNetWeight,
+							release_no: item.relNo,
+						};
+
+						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, 23, 42, 0.3, 0, LineType.Solid);
+						this.getDrawLabelLine(1, 27.5, 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,
+							23.5,
+							25,
+							8,
+							"鍙戣揣/瑁呯鏁�:",
+							2.5,
+							0,
+							LineModeType.AutoHeight,
+							0,
+							0,
+							0,
+							1,
+							1
+						);
+						this.getDrawLabelText(
+							2,
+							28.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,
+							23.5,
+							27,
+							8,
+							fh,
+							2.5,
+							0,
+							LineModeType.AutoHeight,
+							0,
+							0,
+							0,
+							0,
+							1
+						);
+						this.getDrawLabelText(
+							14,
+							28.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
+				this.maskShow = false;
 				// 杩炴帴鎵撳嵃鏈�
 				let _this = this;
-				console.log(item)
+
+				// 璁剧疆涓鸿繛鎺ヤ腑鐘舵��
+				this.connectionStatus = "connecting";
+
 				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) {
+						address: item.address,
+						name: item.name,
+						deviceType: 0, // 璁惧绫诲瀷锛�0-钃濈墮锛�1-缃戠粶
+					},
+					function(r) {
+						// 鍦╰apQuery鏂规硶涓紝杩炴帴鎴愬姛鏃舵坊鍔犱繚瀛樿繛鎺ヤ俊鎭殑浠g爜
+						if (r.code == 0) {
+							_this.connectedDevice = item;
+							_this.connectionStatus = "connected";
+							// 淇濆瓨杩炴帴淇℃伅鍒版湰鍦板瓨鍌�
+							uni.setStorageSync("bluetoothConnection", item);
 							uni.showToast({
-								title: '娌℃湁鍙墦鍗扮殑鏁版嵁',
-								icon: 'none'
-							})
-							return
+								title: "杩炴帴鎴愬姛",
+								duration: 1500,
+							});
+							// 寮�濮嬪鐞嗘墦鍗伴槦鍒�
+							if (_this.printQueue.length > 0) {
+								_this.processPrintQueue();
+							}
+						} else {
+							_this.connectionStatus = "disconnected";
+							uni.showToast({
+								title: "杩炴帴澶辫触: " + (r.msg || "鏈煡閿欒"),
+								icon: "none",
+								duration: 2000,
+							});
 						}
-						// 缁樻爣绛捐繘琛屾墦鍗�
-						_this.pritList.forEach(async item => {
-							await _this.printQrCode(item)
-						})
 					}
-				})
+				);
 			},
 			//鎵撳嵃鐩稿叧
 			searchDevice() {
-				let _this = this
-				uni.openBluetoothAdapter({ // 纭钃濈墮鏄惁鎵撳紑
+				let _this = this;
+				uni.openBluetoothAdapter({
+					// 纭钃濈墮鏄惁鎵撳紑
 					success(r) {
 						uni.showLoading({
-							title: "鎼滅储涓�..."
-						})
+							title: "鎼滅储涓�...",
+						});
 						// 鏈巿浜堣摑鐗欑浉鍏虫潈闄愬拰鏈墦寮�鎵嬫満瀹氫綅浼氭悳绱笉鍒拌澶�
 						jcapi.getBluetoothDevices(function(r) {
-							console.log("device:" + JSON.stringify(r))
+							console.log("device:" + JSON.stringify(r));
 							// 鎼滅储鍒拌澶囧洖璋�
-							uni.hideLoading()
+							uni.hideLoading();
 							// 濡傛灉涔嬪墠鏈夎繛鎺ョ殑璁惧浣嗕笉鍦ㄦ悳绱㈢粨鏋滀腑锛岃鏄庤澶囧凡鏇存崲
-							if (_this.connectedDevice && !r.some(dev => dev.address === _this
-									.connectedDevice.address)) {
+							if (
+								_this.connectedDevice &&
+								!r.some((dev) => dev.address === _this.connectedDevice.address)
+							) {
 								_this.connectedDevice = null;
 								uni.showToast({
-									icon: 'none',
-									title: '宸茶繛鎺ョ殑钃濈墮璁惧宸叉洿鎹紝璇烽噸鏂伴�夋嫨',
-									duration: 2000
+									icon: "none",
+									title: "宸茶繛鎺ョ殑钃濈墮璁惧宸叉洿鎹紝璇烽噸鏂伴�夋嫨",
+									duration: 2000,
 								});
 							}
 							_this.listDevice = r;
-							_this.maskShow = true
-						})
+							_this.maskShow = true;
+						});
 					},
 					fail(e) {
 						uni.showModal({
-							title: '鎻愮ず',
-							content: '鎵撳紑钃濈墮澶辫触锛岃妫�鏌ヨ摑鐗欐槸鍚﹀紑鍚�',
-							showCancel: false
-						})
-						console.log("寮�鍚摑鐗欒澶囧け璐�" + e)
-					}
-				})
+							title: "鎻愮ず",
+							content: "鎵撳紑钃濈墮澶辫触锛岃妫�鏌ヨ摑鐗欐槸鍚﹀紑鍚�",
+							showCancel: false,
+						});
+						console.log("寮�鍚摑鐗欒澶囧け璐�" + e);
+					},
+				});
 			},
-			// 缁樺埗妯嚎 瀹炵嚎
+			// 缁樺埗妯嚎
 			getDrawLabelLine(x, y, width, height, rotate, lineType) {
 				jcapi.drawLabelLine({
 					x: x,
@@ -550,13 +916,25 @@
 					width: width,
 					height: height,
 					rotate: rotate,
-					lineType: lineType
+					lineType: lineType,
 				});
 			},
 			// 濉啿鏂囧瓧鏍囬
-			getDrawLabelText(x, y, width, height, value, fontSize, rotate, lineMode, lineSpace, letterSpace,
-				textAlignHorizontal, textAlignVertical, bold) {
-
+			getDrawLabelText(
+				x,
+				y,
+				width,
+				height,
+				value,
+				fontSize,
+				rotate,
+				lineMode,
+				lineSpace,
+				letterSpace,
+				textAlignHorizontal,
+				textAlignVertical,
+				bold
+			) {
 				jcapi.drawLabelText({
 					x: x,
 					y: y,
@@ -570,34 +948,55 @@
 					letterSpace: letterSpace,
 					textAlignHorizontal: textAlignHorizontal,
 					textAlignVertical: textAlignVertical,
-					bold: bold
-				})
+					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 pages = getCurrentPages();
 
 				// 鑾峰彇涓婁竴椤垫爤
-				let prevPage = pages[pages.length - 2]
+				let prevPage = pages[pages.length - 2];
 
 				// 瑙﹀彂涓婁竴椤� upData 鍑芥暟(骞舵惡甯﹀弬鏁�)
-				prevPage.$vm.setNo(no)
+				prevPage.$vm.setNo(no);
 
 				// 杩斿洖涓婁竴椤�
 				uni.navigateBack({
-					delta: 1
-				})
+					delta: 1,
+				});
 			},
-		}
+		},
 	};
 </script>
 <style lang="scss">
 	.finishProductIn-locno-bg {
-		background-color: #F6F9FF;
-		background-image: url('~@/static/custom/finishProductIn/locNoBg.png');
+		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;
@@ -731,4 +1130,90 @@
 		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