From 1c3a906026557688f4fa7bc5805480b29959071e Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期五, 14 十一月 2025 11:28:08 +0800
Subject: [PATCH] 调试

---
 components/WorkOrderPrint.vue |  364 +++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 293 insertions(+), 71 deletions(-)

diff --git a/components/WorkOrderPrint.vue b/components/WorkOrderPrint.vue
index 1ee9177..03805e6 100644
--- a/components/WorkOrderPrint.vue
+++ b/components/WorkOrderPrint.vue
@@ -1,8 +1,55 @@
 <template>
 	<view class="page wide-layout" :class="{'has-overlay': (isShowUserSelect || isShow || barcodeIsShow)}">
 		<view class="status-section">
+			<!-- 鎶ュ伐璁板綍琛ㄩ儴鍒嗭紝鍦ㄦ爣棰樿娣诲姞鍒锋柊鎸夐挳 -->
 			<view class="report-table-wrapper">
-				<view class="report-title">鎶ュ伐璁板綍琛�</view>
+				<view class="report-header">
+					<view class="report-title">鎶ュ伐璁板綍琛�</view>
+					<view class="header-buttons">
+						<button class="refresh-btn-header" @click="refresh">鍒锋柊</button>
+						<button v-if="isGeneratingBarcode" class="reset-btn-header" @click="resetGenerateState">閲嶇疆</button>
+					</view>
+				</view>
+
+				<!-- 鏁伴噰鎬讳骇閲� -->
+				<view class="section-title">褰撳墠鏁伴噰浜ч噺鎶ュ伐璁板綍</view>
+				<div class="table-scroll">
+					<table class="report-table">
+						<thead>
+							<tr>
+								<th>鏃堕棿</th>
+								<th>鎶ュ伐浜�</th>
+								<th>宸ュ崟鍙�</th>
+								<th>浜у搧鍚嶇О</th>
+								<th>璁″垝鐢熶骇鏁�</th>
+								<th>鏈哄彴鍙�</th>
+								<th>鍒濆閲囬泦鏁�</th>
+								<th>鎶ュ伐鏃堕噰闆嗘暟</th>
+								<th>鍩轰簬鏁伴噰鐨勬姤宸ユ暟</th>
+								<th>涓嶈壇鏁�</th>
+								<th>鑹搧鏁帮紙璁$畻锛�</th>
+							</tr>
+						</thead>
+						<tbody>
+							<tr class="summary-row highlight-row">
+								<td>{{ nowTime }}</td>
+								<td>{{ staffDisplay || '-' }}</td>
+								<td>{{ orderNo || '-' }}</td>
+								<td>{{ order.daa003 || '-' }}</td>
+								<td>{{ planQtyDisplay }}</td>
+								<td>{{ machineNo || '-' }}</td>
+								<td>{{ order.initCjNum }}</td>
+								<td>{{ order.currentCjNum }}</td>
+								<td>{{ order.currentCjNum - order.initCjNum }}</td>
+								<td>{{ realTimeDefectiveCount }}</td>
+								<td>{{ realTimeOkCount }}</td>
+							</tr>
+						</tbody>
+					</table>
+				</div>
+
+				<!-- 鍘嗗彶鎶ュ伐璁板綍 -->
+				<view class="section-title history-title">鍘嗗彶鎶ュ伐璁板綍</view>
 				<div class="table-scroll">
 					<table class="report-table">
 						<thead>
@@ -21,26 +68,30 @@
 							</tr>
 						</thead>
 						<tbody>
-							<tr>
-								<td>{{ nowTime }}</td>
-								<td>{{ staffDisplay || '-' }}</td>
-								<td>{{ orderNo || '-' }}</td>
+							<tr v-for="(r, idx) in reportingHistory" :key="idx">
+								<td>{{ r.bgDate }}</td>
+								<td>{{ r.staff || '-' }}</td>
+								<td>{{ r.orderNo || '-' }}</td>
 								<td>{{ order.daa003 || '-' }}</td>
 								<td>{{ planQtyDisplay }}</td>
-								<td>{{ machineNo || '-' }}</td>
-								<td>{{ initialValue }}</td>
-								<td>{{ productionCount }}</td>
-								<td>{{ calculatedTotalProduction }}</td>
-								<td>{{ calculatedDefectiveCount }}</td>
-								<td>{{ sQuantity }}</td>
+								<td>{{ r.machineNo || '-' }}</td>
+								<td>{{ r.initialValue }}</td>
+								<td>{{ r.productionCount }}</td>
+								<td>{{ r.totalProduction }}</td>
+								<td>{{ r.BfQty }}</td>
+								<td>{{ r.OkQty }}</td>
+							</tr>
+							<tr v-if="!reportingHistory.length">
+								<td colspan="11" class="no-data">鏆傛棤鍘嗗彶鎶ュ伐璁板綍</td>
 							</tr>
 						</tbody>
 					</table>
 				</div>
 			</view>
 
+			<!-- 绉婚櫎浜嗗師鏉ョ殑鐘舵�佽涓殑鎸夐挳缁� -->
 			<view class="status-row">
-				<view class="status-box">
+				<!--<view class="status-box">
 					<text>鏈哄彴闈㈡澘鏁帮細</text>
 					<input v-model="productionCount" class="highlight" disabled />
 				</view>
@@ -61,30 +112,26 @@
 				<view class="status-box result-box">
 					<text>宸茬敓浜ф暟锛�</text>
 					<input v-model="calculatedTotalProduction" class="highlight" disabled />
-				</view>
-				<view class="btn-group">
-					<button class="refresh-btn-inline" @click="refresh">鍒锋柊</button>
-					<button v-if="isGeneratingBarcode" class="reset-btn-inline" @click="resetGenerateState">閲嶇疆</button>
-				</view>
+				</view>-->
 			</view>
 
 			<view class="flex-row gap-lg">
-				<view class="print-section flex-grow">
-					<view class="barcode-info">
-						<view class="user-select">
-							<text>涓嶈壇鏁伴噺锛�</text>
-							<input v-model="customAmount" class="inp bad-input" placeholder="璇疯緭鍏ユ暟閲�" />
-						</view>
-						<view class="user-select">
-							<button class="details-btn" @click="confirmCustomAmount">纭鎻愪氦</button>
-						</view>
-					</view>
-				</view>
-
-				<view class="current-user-section fill-width">
+				<!-- 褰撳墠鎶ュ伐浜洪儴鍒� -->
+				<view class="current-user-section">
 					<text>褰撳墠鎶ュ伐浜猴細</text>
 					<text class="current-user-name">{{ staffDisplay || '鏈�夋嫨' }}</text>
 					<button class="select-user-btn" @click="isShowUserSelect = true">閫変汉</button>
+				</view>
+
+				<!-- 涓嶈壇鏁伴噺閮ㄥ垎 -->
+				<view class="defective-section">
+					<text>涓嶈壇鏁伴噺锛�</text>
+					<input v-model="customAmount" class="inp bad-input" placeholder="璇疯緭鍏ユ暟閲�" />
+				</view>
+
+				<!-- 纭鎻愪氦鎸夐挳 -->
+				<view class="submit-section">
+					<button class="details-btn" @click="confirmCustomAmount">纭鎻愪氦</button>
 				</view>
 			</view>
 
@@ -101,7 +148,7 @@
 						<button v-if="userSearch" class="user-search-clear" @click="userSearch=''">娓呯┖</button>
 						<view class="user-search-info">
 							鍖归厤锛歿{ filteredUsers.length }} / {{ users.length }}
-						</view>
+			</view>
 					</view>
 					<view class="user-list-scroll">
 						<template v-if="filteredUsers.length">
@@ -125,11 +172,11 @@
 				</view>
 			</view>
 
-			<view class="bottom-section">
+			<!-- 绂佺敤鎸夐挳锛氣�樹繚瀛樺苟鐢熸晥'銆佲�樺彇娑堚�� -->
+			<!--<view class="bottom-section">
 				<button class="save-btn" @click="save">淇濆瓨骞剁敓鏁�</button>
 				<button class="cancel-btn" @click="cancel">鍙栨秷</button>
-			</view>
-
+			</view>-->
 			<!-- 淇濈暀鏃у脊绐� -->
 			<view v-if="isShow" class="overlay">
 				<view class="popup">
@@ -191,21 +238,33 @@
 				printNum: 1, reportingList: [], printLoading: false, customAmount: '',
 				isGeneratingBarcode: false, lastGenerateTime: 0, generateRequestId: null,
 				nowTimeTimer: null, nowTime: '',
-				// 鏂板锛氭悳绱㈠叧閿瓧
-				userSearch: ''
+				userSearch: '',
+				/* 鏂板锛氬巻鍙叉姤宸ヨ褰曟暟缁� */
+				reportingHistory: []
 			}
 		},
 		computed: {
+			//鑹搧鏁板疄鏃惰绠�
+			realTimeDefectiveCount() {
+				// 浼樺厛鐢ㄨ緭鍏ユ鐨勫�硷紝鍚﹀垯鐢ㄦ帴鍙f暟鎹�
+				const val = Number(this.customAmount);
+				if (!isNaN(val) && this.customAmount !== '') return val;
+				return this.calculatedDefectiveCount;
+			},
+			realTimeOkCount() {
+				// 鑹搧鏁� = 鎶ュ伐鏁帮紙璁$畻锛� - 涓嶈壇鏁�
+				const total = (this.order.currentCjNum || 0) - (this.order.initCjNum || 0);
+				return total - this.realTimeDefectiveCount;
+			},
 			calculatedCurrentCount() { return (this.productionCount || 0) - (this.initialValue || 0); },
-			calculatedTotalProduction() { return (this.kgQty || 0) + this.calculatedCurrentCount; },
+			calculatedTotalProduction() { return (this.kgQty || 0); }, // 鑻ラ渶鎭㈠鏃ч�昏緫鍙敤 (this.kgQty||0)+this.calculatedCurrentCount
 			calculatedDefectiveCount() { return this.calculatedTotalProduction - (this.sQuantity || 0); },
-			planQtyDisplay() { return this.order.planQty || this.order.planQuantity || this.order.daa007 || this.order.daa010 || 0; },
+			planQtyDisplay() { return this.order.planQty || this.order.planQuantity || this.order.daa008 || 0; },
 			staffDisplay() {
 				if (!this.staffNo) return '';
 				const segs = this.staffNo.split(':');
 				return segs.length > 1 ? `${segs[0]} ${segs[1]}` : this.staffNo;
 			},
-			// 鏂板锛氳繃婊ゅ悗鐨勭敤鎴峰垪琛�
 			filteredUsers() {
 				if (!this.userSearch) return this.users;
 				const kw = this.userSearch.trim().toLowerCase();
@@ -218,7 +277,8 @@
 			this.init();
 			this.getXS0101();
 			this.updateNowTime();
-			this.nowTimeTimer = setInterval(this.updateNowTime, 60000);
+			// 绉掔骇鍒锋柊锛涘涓嶉渶鍔ㄦ�佽烦绉掑彲鏀逛负 60000
+			this.nowTimeTimer = setInterval(this.updateNowTime, 1000);
 		},
 		beforeDestroy() { if (this.nowTimeTimer) clearInterval(this.nowTimeTimer); },
 		methods: {
@@ -228,9 +288,10 @@
 				return segs.length > 1 ? `${segs[0]} ${segs[1]}` : u;
 			},
 			selectUser(u) { this.staffNo = u; this.isShowUserSelect = false; this.userSearch = ''; },
+			/* 淇敼锛氬鍔犵 */
 			updateNowTime() {
 				const d = new Date(), p = n => n.toString().padStart(2, '0');
-				this.nowTime = `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}`;
+				this.nowTime = `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}`;
 			},
 			initializeData() {
 				this.productionCount = this.printedCount = this.defectiveCount = 0;
@@ -244,7 +305,7 @@
 			},
 			refresh() {
 				this.$sendPostRequest({
-					url: "http://192.168.0.94:9095/Numerical/RefreshDev",
+					url: "http://192.168.0.94:9095/Numerical/RefreshDevBycl",
 					data: { machineNo: this.order.machineNo },
 					contentType: "application/json"
 				}).then(r => { r.code == 200 ? this.fetchData(true) : this.$showMessage("鍚屾澶辫触"); });
@@ -261,6 +322,7 @@
 				if (!this.orderId && !this.orderNo) return;
 				this.getOrderById();
 				this.getWomdaaPrintById();
+				this.getReportingHistory(); // 鏂板锛氭瘡娆″埛鏂板悓姝ュ巻鍙�
 				if (flag) {
 					this.$post({ url: "/Womdaa/GetWomdaasByShow", data: { machineNo: this.machineNo } })
 						.then(res => {
@@ -269,27 +331,71 @@
 						});
 				}
 			},
+			/* 鏂板锛氳幏鍙栧巻鍙叉姤宸ヨ褰� */
+			/* 淇敼锛氳鑼冨巻鍙叉椂闂村埌绉� */
+			getReportingHistory() {
+				if (!this.orderNo) { this.reportingHistory = []; return; }
+				const fmtSec = v => {
+					if (!v) return '';
+					// 鍏煎鍚庣鍙兘杩斿洖鐨勪笉鍚屾牸寮�
+					const d = new Date(typeof v === 'string' ? v.replace(/-/g, '/') : v);
+					if (isNaN(d.getTime())) return v; // 鏃犳硶瑙f瀽鍒欏師鏍疯繑鍥�
+					const p = n => n.toString().padStart(2, '0');
+					return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}`;
+				};
+				this.$post({
+					url: "/Womdaa/GetByBillNoBG",
+					data: { billNo: this.orderNo, machineNo: this.machineNo || null }
+				}).then(res => {
+					const list = res?.data?.tbBillList || res?.data || [];
+					this.reportingHistory = list.map(r => {
+						// 渚濇嵁浣犳暟鎹簱瀛楁鍋氭槧灏勶紙涓嬮潰瀛楁鍚嶆寜甯歌鍛藉悕涓句緥锛岄渶瑕佹寜瀹為檯鏀癸級
+						return {
+							bgDate: r.bgDate || '', // 鎶ュ伐鏃堕棿
+							staff: (r.staffNo ? (r.staffNo + ' ' + (r.staffName || '')) : (r.staffName || '')),//鎶ュ伐浜�
+							orderNo: r.billNo,//宸ュ崟鍙�
+							machineNo: r.machineNo,//鏈哄彴鍙�
+							initialValue: r.csQty ?? 0,//鍒濆閲囬泦鏁�
+							productionCount: r.cjQty ?? 0,//鎶ュ伐鏃堕噰闆嗘暟
+							totalProduction: (r.cjQty - r.csQty) ?? 0,//鎶ュ伐鏁帮紙璁$畻锛�
+							BfQty: r.bfQty,//涓嶈壇鏁�
+							OkQty: r.okQty//鑹搧鏁帮紙璁$畻锛�
+						}
+					});
+				}).catch(() => { this.reportingHistory = []; });
+			},
 			toggleUser(u) {
 				if (!u) return;
 				this.user = this.user === u ? null : u;
 				this.staffNo = this.user;
 			},
+			//閫夋嫨鎶ュ伐浜�
 			confirmCustomAmount() {
 				if (!this.customAmount || isNaN(Number(this.customAmount))) { this.$showMessage('璇疯緭鍏ユ湁鏁堢殑鏁伴噺'); return; }
+				if (!this.staffNo) { this.$showMessage('璇烽�夋嫨鎶ュ伐浜�'); return; }
+				const staffNo = this.staffNo.split(':')[0];
 				const amount = Number(this.customAmount);
 				this.$post({
 					url: "/MesInvItemBarcodes/AddBFToBarcodes",
-					data: { orderNo: this.orderNo, orderId: this.orderId, bf: amount }
+					data: {
+						orderNo: this.orderNo,
+						orderId: this.orderId,
+						bf: amount,
+						staffNo: staffNo,
+						initCjNum: this.order.initCjNum,        // 鍒濆閲囬泦鏁�
+						currentCjNum: this.order.currentCjNum   // 鎶ュ伐鏃堕噰闆嗘暟
+					}
 				}).then(res => {
 					if (res.status == 1) { this.$showMessage(res.message); return; }
 					this.$showMessage('鎶ュ簾鏁伴噺濉啓鎴愬姛');
-					this.fetchData(true);
+					this.fetchData(true); // 鑷姩鍒锋柊鍘嗗彶
 					this.customAmount = '';
 				}).catch(() => this.$showMessage('鎶ュ簾鏁伴噺濉啓澶辫触锛岃閲嶈瘯'));
 			},
 			save() {
 				if (!this.staffNo) { this.$showMessage('璇烽�夋嫨鎶ュ伐浜�'); return; }
 				uni.showToast({ title: '淇濆瓨鎴愬姛', icon: 'success' });
+				this.getReportingHistory(); // 淇濆瓨鍚庝篃鍙埛鏂�
 			},
 			cancel() { uni.showToast({ title: '鍙栨秷鎿嶄綔', icon: 'none' }); },
 			getOrderById() {
@@ -382,6 +488,78 @@
 </script>
 
 <style scoped>
+	.section-title {
+		font-size: 20px;
+		font-weight: bold;
+		margin: 18px 0 8px 0;
+		color: #fff;
+		background: #007aff;
+		padding: 8px 18px;
+		border-radius: 8px 8px 0 0;
+		display: inline-block;
+	}
+
+	.history-title {
+		background: #555;
+	}
+
+	.highlight-row {
+		background: #ffe9b3 !important;
+		font-weight: bold;
+	}
+
+	.report-table .summary-row {
+		background: #f0f8ff;
+		font-weight: 600;
+	}
+
+	.report-table .no-data {
+		text-align: center;
+		color: #777;
+		font-size: 14px;
+	}
+
+	.report-header {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		margin-bottom: 8px;
+	}
+
+	.header-buttons {
+		display: flex;
+		align-items: center;
+		gap: 12px;
+	}
+
+	.refresh-btn-header {
+		background: #00A2E9;
+		color: #fff;
+		border: none;
+		font-size: 16px;
+		border-radius: 8px;
+		padding: 8px 20px;
+		transition: background 0.15s;
+	}
+
+		.refresh-btn-header:hover {
+			background: #0086c0;
+		}
+
+	.reset-btn-header {
+		background: #ff6b6b;
+		color: #fff;
+		border: none;
+		font-size: 14px;
+		border-radius: 8px;
+		padding: 8px 16px;
+		transition: background 0.15s;
+	}
+
+		.reset-btn-header:hover {
+			background: #e94d4d;
+		}
+
 	.page {
 		padding: 1.2vh 2vw;
 		display: flex;
@@ -411,11 +589,41 @@
 	}
 
 	.report-title {
-		font-size: 24px;
+		font-size: 32px;
 		font-weight: 600;
 		text-align: center;
-		margin: 0 0 8px;
+		margin: 0;
 	}
+
+    /* 2. 鍖哄潡鏍囬 */
+    .section-title, .history-title {
+        font-size: 26px;
+    }
+
+    /* 3. 琛ㄦ牸瀛椾綋 */
+    .report-table, .report-table th, .report-table td {
+        font-size: 22px;
+    }
+
+    /* 4. 褰撳墠鎶ュ伐浜恒�佷笉鑹暟閲忕瓑杈撳叆鍖� */
+    .current-user-section,
+    .defective-section,
+    .submit-section {
+        font-size: 22px;
+    }
+
+    /* 5. 杈撳叆妗嗗瓧浣� */
+    .inp, .bad-input {
+        font-size: 28px;
+    }
+
+    /* 6. 鎸夐挳瀛椾綋 */
+    .details-btn,
+    .select-user-btn,
+    .refresh-btn-header,
+    .reset-btn-header {
+        font-size: 22px;
+    }
 
 	.report-table {
 		min-width: 1080px;
@@ -525,7 +733,7 @@
 		display: flex;
 		flex-wrap: wrap;
 		gap: 20px;
-		align-items: flex-start;
+		align-items: stretch;
 	}
 
 	.flex-grow {
@@ -536,17 +744,16 @@
 		gap: 30px;
 	}
 
-	.print-section {
-		padding: 6px 0 14px;
-		margin-bottom: 0;
-		flex: 1;
+	.defective-section {
+		display: flex;
+		align-items: center;
+		gap: 14px;
+		font-size: 18px;
 	}
 
-	.barcode-info {
+	.submit-section {
 		display: flex;
-		flex-wrap: wrap;
-		align-items: flex-start;
-		gap: 30px;
+		align-items: center;
 	}
 
 	.inp {
@@ -589,10 +796,7 @@
 		padding: 14px 22px;
 		background: #fff;
 		gap: 14px;
-	}
-
-	.fill-width {
-		flex: 0 1 380px;
+		flex: 0 0 auto;
 	}
 
 	.current-user-name {
@@ -649,7 +853,7 @@
 		display: flex;
 		flex-direction: column;
 	}
-	/* 鎼滅储鏉℃牱寮� */
+
 	.user-search-bar {
 		display: flex;
 		align-items: center;
@@ -700,8 +904,8 @@
 
 	.user-list-grid {
 		display: grid;
-		grid-template-columns: repeat(auto-fill,minmax(150px,1fr));
-		gap: 24px 24px;
+		grid-template-columns: repeat(auto-fill,minmax(110px,1fr));
+		gap: 12px 12px;
 	}
 
 	.user-list-btn {
@@ -709,14 +913,14 @@
 		flex-direction: column;
 		justify-content: center;
 		align-items: center;
-		gap: 6px;
-		padding: 16px 10px;
-		height: 120px;
-		font-size: 18px;
+		gap: 4px;
+		padding: 10px 8px;
+		height: 75px;
+		font-size: 14px;
 		background: #00a2e9;
 		color: #fff;
 		border: none;
-		border-radius: 10px;
+		border-radius: 8px;
 		cursor: pointer;
 		box-sizing: border-box;
 		word-break: break-word;
@@ -724,11 +928,11 @@
 
 		.user-list-btn .user-code {
 			font-weight: 600;
-			font-size: 18px;
+			font-size: 14px;
 		}
 
 		.user-list-btn .user-name {
-			font-size: 16px;
+			font-size: 13px;
 		}
 
 		.user-list-btn.selected {
@@ -832,12 +1036,30 @@
 		}
 
 		.user-list-btn {
-			height: 110px;
-			font-size: 16px;
+			height: 70px;
+			font-size: 13px;
 		}
+
+			.user-list-btn .user-code {
+				font-size: 13px;
+			}
+
+			.user-list-btn .user-name {
+				font-size: 12px;
+			}
 
 		.reason-btn {
 			font-size: 12px;
 		}
+
+		.refresh-btn-header {
+			font-size: 14px;
+			padding: 6px 16px;
+		}
+
+		.reset-btn-header {
+			font-size: 12px;
+			padding: 6px 12px;
+		}
 	}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3