From 508403e109aa9f8766b4caa05748afdec7103237 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期六, 11 十月 2025 15:40:55 +0800
Subject: [PATCH] 核磅记录的查询传参以及判断跳转页面的条件

---
 pages/wareHouse/nuclearScale/nuclearscalerecord.vue | 1261 ++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 925 insertions(+), 336 deletions(-)

diff --git a/pages/wareHouse/nuclearScale/nuclearscalerecord.vue b/pages/wareHouse/nuclearScale/nuclearscalerecord.vue
index ecc7ab9..b9dbc75 100644
--- a/pages/wareHouse/nuclearScale/nuclearscalerecord.vue
+++ b/pages/wareHouse/nuclearScale/nuclearscalerecord.vue
@@ -1,369 +1,958 @@
 <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 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="loadMore">
-        <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.index)"
-          >
-            <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.value0 }}
-                </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.value1 }}
-                </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.value2 }}
-                </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.value3 }}
-                </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.value4 }}
-                </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.value6 }}
-                </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="loadMore">
-          <u-loadmore :status="loadStatus"></u-loadmore>
-        </view>
-      </scroll-view>
-    </view>
-  </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.batchNo }}
+								</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.partDescription }}
+								</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.newGrossWeight }}
+								</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.newWeight }}
+								</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.newNetWeight }}
+								</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.verificationWeight }}
+								</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.forkliftWeight }}
+								</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'
-export default {
-  data() {
-    return {
-      background: {
-        backgroundImage: `url(${content_bg})`,
-        backgroundAttachment: 'fixed',
-        backgroundSize: '100% auto',
-        backgroundRepeat: 'no-repeat',
-      },
-      keywords: '',
-      alllist: [],
-      originList: [],
-      query: {
-        current: 1,
-        size: 10
-      },
-      list: [
-        {
-          value0: '123456789',
-          value1: '123456789',
-          value2: '123456789',
-          value3: '123456789',
-          value4: '123456789',
-          value5: '123456789',
-          value6: '123456789',
-          value7: '123456789'
-        },
-        {
-          value0: '123456789',
-          value1: '123456789',
-          value2: '123456789',
-          value3: '123456789',
-          value4: '123456789',
-          value5: '123456789',
-          value6: '123456789',
-          value7: '123456789'
-        }
-      ],
-      count: 0,
-      loadStatus: 'loading'
-    };
-  },
-  onLoad() {
-    this.$u.api.finishProductIn.fetchList().then(res => {
-      this.alllist = res.data
-      this.originList = res.data
-      this.loadList()
-    })
-  },
-  methods: {
-    loadMore() {
-      if (this.loadStatus == "nomore" || this.loadStatus == "loading") {
-        return
-      }
-      this.loadStatus = "loading";
-      setTimeout(() => {
-        this.query.current += 1;
-        this.loadList();
-      }, 100);
-    },
-    loadList() {
-      const data = this.originList.slice((this.query.current - 1) * this.query.size, this.query.current * this.query.size)
-      this.list = this.list.concat(data);
-      this.loadStatus = "loadmore";
-      if (!data || data.length < this.query.size) {
-        this.loadStatus = "nomore";
-      }
-    },
-    search(value) {
-      this.list = [];
-      this.query.current = 1;
-      if (value) {
-        this.originList = this.alllist.filter(item => item.locNo.includes(value))
-      } else {
-        this.originList = this.alllist
-      }
-      this.loadList()
-    },
-    // 鎵撳嵃鍗曚釜淇℃伅
-    selectNo(no) {
-      uni.showModal({
-					title: '鎻愮ず',
-					content: '鏄惁鎵撳嵃瑁呯鍗曪紵',
-					showCancel: true,
-        success: function (res) {
-          if (res.confirm) {
-              
+	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: [], //钃濈墮璁惧鏁版嵁
+				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: "", // 閿欒淇℃伅
+				verificationNo:''
+			};
+	},
+	onLoad(options) {
+			this.verificationNo = JSON.parse(decodeURIComponent(options.verificationNo))
+			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.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,
+							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;
+				}
+
+				// 璁剧疆涓鸿繛鎺ヤ腑鐘舵��
+				this.connectionStatus = "connecting";
+
+				// 澧炲己杩炴帴鐘舵�佹娴�
+				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() {
-      uni.showModal({
-					title: '鎻愮ず',
-					content: '鏄惁鎵撳嵃瑁呯鍗曪紵',
+			},
+
+			// 娣诲姞鍒版墦鍗伴槦鍒�
+			addToPrintQueue(items) {
+				if (!Array.isArray(items)) {
+					items = [items];
+				}
+
+				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: function (res) {
-          if (res.confirm) {
-              
+					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.outboundDate
+						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, 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();
 
-    //鍒锋柊涓婁竴涓〉闈�
-    refreshLastPage(no) {
-      // 鍛婄煡 A.vue 鏇存柊鏁版嵁
-      // 鑾峰彇椤甸潰鏍�
-      let pages = getCurrentPages()
+				// 鑾峰彇涓婁竴椤垫爤
+				let prevPage = pages[pages.length - 2];
 
-      // 鑾峰彇涓婁竴椤垫爤
-      let prevPage = pages[pages.length - 2]
+				// 瑙﹀彂涓婁竴椤� upData 鍑芥暟(骞舵惡甯﹀弬鏁�)
+				prevPage.$vm.setNo(no);
 
-      // 瑙﹀彂涓婁竴椤� upData 鍑芥暟(骞舵惡甯﹀弬鏁�)
-      prevPage.$vm.setNo(no)
-
-      // 杩斿洖涓婁竴椤�
-      uni.navigateBack({
-        delta: 1
-      })
-    },
-  }
-};
+				// 杩斿洖涓婁竴椤�
+				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;
-      }
-    }
-  }
-}
-.navbar-right {
-			font-weight: 500;
-			font-size: 13px;
-			color: #0b0b0b;
-			line-height: 36rpx;
-			margin-right: 32rpx;
-}
-</style>
+				.row-list .s1 {
+					color: #d35651;
+				}
+			}
+		}
+	}
+
+	.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