From 816ab1967ee766e3e3f3631c08371f2e7704408e Mon Sep 17 00:00:00 2001
From: xwt <2740516069@qq.com>
Date: 星期三, 24 九月 2025 16:48:39 +0800
Subject: [PATCH] IQC穴数,RKJ,SJ,XJ

---
 pages/QC/XJ/Add.vue     |  158 +++++++--
 pages/QC/RKJ/Add.vue    |   14 
 manifest.json           |    2 
 pages/QC/LLJ/Add.vue    |    1 
 pages/QC/LLJ/detail.vue |  193 +++++++++++-
 pages/QC/SJ/Add.vue     |  517 ++++++++++++++++++++--------------
 store/index.js          |    4 
 7 files changed, 605 insertions(+), 284 deletions(-)

diff --git a/manifest.json b/manifest.json
index 889d4ef..2474b4b 100644
--- a/manifest.json
+++ b/manifest.json
@@ -2,7 +2,7 @@
     "name" : "GS-MES-AP",
     "appid" : "__UNI__F08FAE3",
     "description" : "",
-    "versionName" : "1.1.3.6",
+    "versionName" : "1.1.3.8",
     "versionCode" : 1,
     "transformPx" : false,
     /* 5+App鐗规湁鐩稿叧 */
diff --git a/pages/QC/LLJ/Add.vue b/pages/QC/LLJ/Add.vue
index 030990e..1bed836 100644
--- a/pages/QC/LLJ/Add.vue
+++ b/pages/QC/LLJ/Add.vue
@@ -136,7 +136,6 @@
 			<button class="action-btn small" @click="addDestruction" v-if="this.current">鐮村潖瀹為獙</button>
 			<button class="action-btn small" @click="uploadImages">涓婁紶/鏌ョ湅鍥剧墖</button>
 			<button class="action-btn small" @click="fetchDrawingNumber">璋冨彇PLM鍥剧焊</button>
-			<button class="action-btn small" @click="getBom">Bom鐢ㄦ枡娓呭崟</button>
 			<button class="action-btn small" @click="viewAttachmentInfo">鏌ョ湅闄勪欢淇℃伅</button>
 			<button class="action-btn small" @click="addDefectDescription" v-if="this.current">娣诲姞涓嶈壇鎻忚堪</button>
 			<button class="action-btn small primary" @click="submitInspection" v-if="this.current">妫�楠屾彁浜�</button>
diff --git a/pages/QC/LLJ/detail.vue b/pages/QC/LLJ/detail.vue
index 0b40165..0880f4c 100644
--- a/pages/QC/LLJ/detail.vue
+++ b/pages/QC/LLJ/detail.vue
@@ -25,6 +25,10 @@
 							<view class="info-label">椤圭洰鍚嶇О</view>
 							<view class="info-value">{{ formData.fcheckItem }}</view>
 						</view>
+						<view v-if="parseHoleCount(formData.fcheckItem)" class="info-item">
+							<view class="info-label">绌存暟</view>
+							<view class="info-value hole-count">{{ parseHoleCount(formData.fcheckItem) }}绌�</view>
+						</view>
 						<view class="info-item">
 							<view class="info-label">妫�楠屽伐鍏�</view>
 							<view class="info-value">{{ formData.fcheckTool }}</view>
@@ -204,29 +208,62 @@
 
 			<!-- 缁撴灉琛ㄦ牸 -->
 			<view v-if="tableData.length>0" class="table-container">
-				<view class="table-header">
+				<!-- 鏈夌┐鏁版椂鐨勮〃鏍煎ご閮� -->
+				<view v-if="parseHoleCount(formData.fcheckItem)" class="table-header">
+					<view class="th">缂栧彿</view>
+					<view class="th">绌村彿</view>
+					<view class="th">璁板綍鍊�</view>
+					<view class="th">妫�楠岀粨鏋�<i style="color: rgb(0 212 68);"
+							v-if="!(tableData.length < formData.checkQyt)">锛堣緭鍏ュ凡瀹屾垚锛�</i></view>
+					<view class="th" v-if="current">鎿嶄綔</view>
+				</view>
+				
+				<!-- 鏃犵┐鏁版椂鐨勮〃鏍煎ご閮� -->
+				<view v-else class="table-header">
 					<view class="th">缂栧彿</view>
 					<view class="th">妫�楠岀粨鏋�<i style="color: rgb(0 212 68);"
 							v-if="!(tableData.length < formData.checkQyt)">锛堣緭鍏ュ凡瀹屾垚锛�</i></view>
 					<view class="th" v-if="current">鎿嶄綔</view>
 				</view>
 
-				<view v-for="(item, index) in tableData" :key="index" class="table-row">
-					<view class="td">{{ index + 1 }}</view>
-					<view class="td">
-						<view :class="['result-badge', item.fcheckResu]">
-							{{ item.fcheckResu }}
+				<!-- 鏈夌┐鏁版椂鐨勮〃鏍艰 -->
+				<template v-if="parseHoleCount(formData.fcheckItem)">
+					<view v-for="(item, index) in completeHoleList" :key="index" class="table-row">
+						<view class="td">{{ index + 1 }}</view>
+						<view class="td">{{ item.holeNumber }}绌�</view>
+						<view class="td">{{ item.recordValue }}</view>
+						<view class="td">
+							<view :class="['result-badge', getResultBadgeClass(item.resultStatus)]">
+								{{ item.resultStatus }}
+							</view>
+						</view>
+						<view class="td" v-if="current">
+							<button v-if="!item.isDefault && isNumber" class="btn danger-btn" @tap="toDetail(item)">
+								淇敼
+							</button>
 						</view>
 					</view>
-					<view class="td" v-if="current">
-						<button v-if="!isNumber" class="btn danger-btn" @tap="toggleResult(item)">
-							{{ editResult(item.fcheckResu) }}
-						</button>
-						<button v-if="isNumber" class="btn danger-btn" @tap="toDetail(item)">
-							淇敼
-						</button>
+				</template>
+				
+				<!-- 鏃犵┐鏁版椂鐨勮〃鏍艰 -->
+				<template v-else>
+					<view v-for="(item, index) in tableData" :key="index" class="table-row">
+						<view class="td">{{ index + 1 }}</view>
+						<view class="td">
+							<view :class="['result-badge', item.fcheckResu]">
+								{{ item.fcheckResu }}
+							</view>
+						</view>
+						<view class="td" v-if="current">
+							<button v-if="!isNumber" class="btn danger-btn" @tap="toggleResult(item)">
+								{{ editResult(item.fcheckResu) }}
+							</button>
+							<button v-if="isNumber" class="btn danger-btn" @tap="toDetail(item)">
+								淇敼
+							</button>
+						</view>
 					</view>
-				</view>
+				</template>
 			</view>
 			<view v-if="remarksPopup" class="overlay">
 				<view class="popup">
@@ -305,7 +342,100 @@
 				isFocus: false, // 鏂板锛屾帶鍒惰緭鍏ユ鑱氱劍
 			}
 		},
+		computed: {
+			// 鐢熸垚瀹屾暣鐨勭┐浣嶅垪琛紙鏍规嵁妫�楠屾暟閲忕敓鎴愶紝绌村彿寰幆鏄剧ず锛�
+			completeHoleList() {
+				const holeCount = this.parseHoleCount(this.formData.fcheckItem);
+				if (!holeCount) return this.tableData;
+				
+				const checkQyt = this.formData.checkQyt || 0; // 妫�楠屾暟閲�
+				const completeList = [];
+				
+				// 鏍规嵁妫�楠屾暟閲忕敓鎴愯褰曪紝绌村彿寰幆鏄剧ず
+				for (let i = 1; i <= checkQyt; i++) {
+					// 璁$畻褰撳墠璁板綍鐨勭┐鍙凤紙寰幆鏄剧ず锛�
+					const holeNumber = ((i - 1) % holeCount) + 1;
+					
+					// 鏌ユ壘鏄惁宸叉湁璇ヤ綅缃殑璁板綍
+					const existingRecord = this.tableData.find((item, index) => {
+						return index === i - 1; // 鎸夐『搴忓尮閰�
+					});
+					
+					if (existingRecord) {
+						// 濡傛灉宸叉湁璁板綍锛屼娇鐢ㄧ幇鏈夋暟鎹�
+						completeList.push({
+							...existingRecord,
+							holeNumber: holeNumber,
+							recordValue: existingRecord.fcheckResu || 'N/A',
+							resultStatus: this.getResultStatus(existingRecord.fcheckResu) || '鏈~鍐�'
+						});
+					} else {
+						// 濡傛灉娌℃湁璁板綍锛屽垱寤洪粯璁よ褰�
+						completeList.push({
+							id: null,
+							holeNumber: holeNumber,
+							recordValue: 'N/A',
+							resultStatus: '鏈~鍐�',
+							fcheckResu: null,
+							isDefault: true // 鏍囪涓洪粯璁よ褰�
+						});
+					}
+				}
+				return completeList;
+			}
+		},
 		methods: {
+			// 瑙f瀽妫�楠岄」鐩悕绉颁腑鐨勭┐鏁�
+			parseHoleCount(checkItemName) {
+				if (!checkItemName) return null;
+				
+				// 鍖归厤鏍煎紡锛氬昂瀵告鏌ワ紙5绌达級鎴� 灏哄妫�鏌�(5绌�)
+				const match = checkItemName.match(/[锛�(](\d+)绌碵锛�)]/);
+				return match ? parseInt(match[1]) : null;
+			},
+			
+			// 鏍规嵁璁板綍鍊煎垽鏂楠岀粨鏋滅姸鎬�
+			getResultStatus(recordValue) {
+				if (!recordValue) return '';
+				
+				// 濡傛灉鏈変笂涓嬮檺锛屾牴鎹暟鍊煎垽鏂�
+				if (this.formData.fupAllow && this.formData.fdownAllow) {
+					const numValue = parseFloat(recordValue);
+					if (isNaN(numValue)) return recordValue;
+					
+					if (numValue >= parseFloat(this.formData.fdownAllow) && 
+						numValue <= parseFloat(this.formData.fupAllow)) {
+						return 'OK';
+					} else {
+						return 'NG';
+					}
+				}
+				
+				// 鏃犱笂涓嬮檺鏃讹紝鐩存帴杩斿洖璁板綍鍊�
+				return recordValue;
+			},
+			
+			// 鑾峰彇妫�楠岀粨鏋滃窘绔犵殑鏍峰紡绫�
+			getResultBadgeClass(resultStatus) {
+				switch(resultStatus) {
+					case 'OK':
+						return 'OK';
+					case 'NG':
+						return 'NG';
+					case '鏈~鍐�':
+						return 'pending';
+					default:
+						return 'default';
+				}
+			},
+			
+			// 娣诲姞鏂拌褰曪紙鐢ㄤ簬鏈~鍐欑殑绌翠綅锛�
+			addNewRecord(item) {
+				// 杩欓噷鍙互瑙﹀彂濉啓閫昏緫锛屾瘮濡傚脊鍑鸿緭鍏ユ鎴栬烦杞埌濉啓椤甸潰
+				// 鏆傛椂鍏堟樉绀烘彁绀�
+				this.$showMessage(`璇峰~鍐欑${item.holeNumber}绌寸殑妫�楠岀粨鏋渀);
+			},
+			
 			// 闃叉姈鑷姩淇濆瓨鏂规硶
 			autoSaveResult() {
 				// 娓呴櫎涔嬪墠鐨勫畾鏃跺櫒
@@ -504,7 +634,6 @@
 				this.remarksPopup = true;
 			},
 			saveResult() {
-
 				let count = this.formData.checkQyt;
 				let fstand = "鈭�";
 
@@ -522,8 +651,8 @@
 					}
 					
 					if (!/^-?\d+(\.\d+)?$/.test(this.formData.fcheckResu)) {
-					            this.$showMessage("璇疯緭鍏ユ纭殑鏁板�硷紒");
-					            return;
+						this.$showMessage("璇疯緭鍏ユ纭殑鏁板�硷紒");
+						return;
 					}
 					if (parseFloat(this.formData.fcheckResu) >= parseFloat(this.formData.fdownAllow) && parseFloat(this
 							.formData
@@ -573,6 +702,7 @@
 				})
 
 			},
+			
 			goBack() {
 				uni.navigateBack()
 			},
@@ -603,11 +733,8 @@
 				})
 			},
 			editResult(fcheckResu) {
-				if (fcheckResu == 'OK') {
-					return "鏀逛负涓嶅悎鏍�";
-				} else {
-					return "鏀逛负鍚堟牸";
-				}
+				// 缁熶竴鏄剧ず"鏀逛负涓嶅悎鏍�"
+				return "鏀逛负涓嶅悎鏍�";
 			},
 			toDetail(item) {
 				this.showPopup = !this.showPopup;
@@ -952,6 +1079,7 @@
 				flex: 1;
 				padding: 12px;
 				font-weight: bold;
+				text-align: center;
 			}
 		}
 
@@ -968,6 +1096,8 @@
 				flex: 1;
 				display: flex;
 				align-items: center;
+				justify-content: center;
+				text-align: center;
 			}
 		}
 	}
@@ -987,6 +1117,16 @@
 		&.NG {
 			background-color: rgba($danger-color, 0.1);
 			color: $danger-color;
+		}
+		
+		&.pending {
+			background-color: rgba(#f39c12, 0.1);
+			color: #f39c12;
+		}
+		
+		&.default {
+			background-color: rgba(#909399, 0.1);
+			color: #909399;
 		}
 	}
 
@@ -1081,4 +1221,13 @@
 		opacity: 0.6;
 		cursor: not-allowed;
 	}
+
+	.hole-count {
+		color: #409EFF;
+		font-weight: bold;
+		background-color: rgba(64, 158, 255, 0.1);
+		padding: 2px 8px;
+		border-radius: 4px;
+		display: inline-block;
+	}
 </style>
\ No newline at end of file
diff --git a/pages/QC/RKJ/Add.vue b/pages/QC/RKJ/Add.vue
index 1c04a15..dd65c69 100644
--- a/pages/QC/RKJ/Add.vue
+++ b/pages/QC/RKJ/Add.vue
@@ -2745,13 +2745,19 @@
 		}
 
 		.bottom-action-buttons {
-			flex-direction: column;
-			gap: 5px;
+			flex-direction: row;
+			align-items: center;
+			justify-content: center;
+			padding: 8px;
+			gap: 6px;
 		}
 
 		.action-btn.small {
-			min-width: 100%;
-			max-width: none;
+			min-width: 70px;
+			max-width: 100px;
+			padding: 8px 10px;
+			font-size: 13px;
+			min-height: 40px;
 		}
 	}
 
diff --git a/pages/QC/SJ/Add.vue b/pages/QC/SJ/Add.vue
index 4659047..558fd68 100644
--- a/pages/QC/SJ/Add.vue
+++ b/pages/QC/SJ/Add.vue
@@ -74,8 +74,8 @@
 		</view>
 
 		<!-- 妫�楠岄」鐩〃鏍� -->
-		<view class="inspection-table" v-if="tableData.length > 0">
-			<table>
+		<view class="inspection-table">
+			<table v-if="tableData.length > 0">
 				<thead>
 					<tr>
 						<th width="20%" style="text-align: center;">妫�楠岄」鐩�</th>
@@ -106,6 +106,12 @@
 					</tr>
 				</tbody>
 			</table>
+			<!-- 绌虹姸鎬佹樉绀� -->
+			<view v-else class="empty-state">
+				<view class="empty-icon">馃搵</view>
+				<view class="empty-text">鏆傛棤妫�楠岄」鐩�</view>
+				<view class="empty-desc">璇ユ楠屽崟杩樻病鏈夋楠岄」鐩�</view>
+			</view>
 		</view>
 		<!-- 琛ㄥ崟涓婃柟鎿嶄綔鎸夐挳鍖� -->
 		<view class="top-action-buttons">
@@ -386,7 +392,10 @@
 								});
 
 								if (this.tableData.length <= 0) {
-									this.isShowTable = true;
+									this.isShowTable = true; // 娌℃湁妫�楠岄」鐩椂鏄剧ず鐢熸垚鎸夐挳
+								} else {
+									this.isShowTable = false; // 鏈夋楠岄」鐩椂鐩存帴杩涘叆濉啓闃舵
+									this.isUpdate = false; // 璁剧疆涓洪潪鏇存柊鐘舵�侊紝鍙互鐩存帴濉啓
 								}
 							})
 						}
@@ -476,10 +485,14 @@
 						if (res.data.tbBillList.length > 0) {
 							this.tableData = res.data.tbBillList; // 鍦ㄧ澶村嚱鏁颁腑锛宼his 鎸囧悜澶栧眰浣滅敤鍩熺殑 this
 							this.isSubmit = false;
+							// 娉ㄦ剰锛氳繖閲屼笉鑷姩淇濆瓨锛屽洜涓鸿繕娌℃湁鍒涘缓妫�楠屽崟锛岄渶瑕佸厛璋冪敤save()鍒涘缓妫�楠屽崟
+							this.isShowTable = false; // 鐩存帴杩涘叆濉啓闃舵
+							this.isUpdate = false; // 璁剧疆涓洪潪鏇存柊鐘舵�侊紝鍙互鐩存帴濉啓
 						} else {
 							this.$showMessage("姝ょ墿鏂欐病鏈夊惎鐢ㄧ殑妫�楠岄」鐩紝璇风淮鎶�!");
 							this.isSubmit = true;
 							this.tableData = [];
+							this.isShowTable = true; // 娌℃湁妫�楠岄」鐩椂鏄剧ず鐢熸垚鎸夐挳
 						}
 					});
 
@@ -509,8 +522,8 @@
 				}).then(res => {
 					if (res.data.tbBillList.length > 0) {
 						this.tableData = res.data.tbBillList; // 鍦ㄧ澶村嚱鏁颁腑锛宼his 鎸囧悜澶栧眰浣滅敤鍩熺殑 this
-						this.isShowTable = true;
-						this.isUpdate = true;
+						// 鑷姩淇濆瓨妫�楠岄」鐩埌鏁版嵁搴�
+						this.saveTable();
 					} else {
 						this.$showMessage("姝ょ墿鏂欐病鏈夊惎鐢ㄧ殑妫�楠岄」鐩紝璇风淮鎶�!");
 						this.isShowTable = true;
@@ -969,6 +982,9 @@
 							if (genRes.data.result === 0) {
 								this.$showMessage("鑾峰彇妫�楠岄」鐩垚鍔�");
 								this.init();
+								// 鑾峰彇鎴愬姛鍚庣洿鎺ヨ繘鍏ュ~鍐欓樁娈�
+								this.isShowTable = false;
+								this.isUpdate = false;
 							} else {
 								this.$showMessage(genRes.data.message || "鑾峰彇澶辫触");
 							}
@@ -988,6 +1004,9 @@
 							if (genRes.data.result === 0) {
 								this.$showMessage("鑾峰彇妫�楠岄」鐩垚鍔�");
 								this.init();
+								// 鑾峰彇鎴愬姛鍚庣洿鎺ヨ繘鍏ュ~鍐欓樁娈�
+								this.isShowTable = false;
+								this.isUpdate = false;
 							} else {
 								this.$showMessage(genRes.data.message || "鑾峰彇澶辫触");
 							}
@@ -1006,343 +1025,415 @@
 <style scoped>
 /* 鍩虹鏍峰紡 */
 .inspection-sheet {
-	font-family: 'Microsoft YaHei', 'Segoe UI', sans-serif;
-	max-width: 1000px;
-	margin: 0 auto;
-	padding: 20px 20px 100px 20px; /* 搴曢儴澧炲姞鍐呰竟璺濅负鍥哄畾鎸夐挳鐣欑┖闂� */
-	background-color: #fff;
-	box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
-	min-height: 100vh;
-	position: relative;
-	transition: all 0.3s ease;
+  padding: 10px;
+  background-color: #f5f7fa;
+  min-height: 100vh;
+  padding-bottom: 120px; /* 涓哄簳閮ㄥ浐瀹氭寜閽暀鍑虹┖闂� */
 }
 
 /* 澶撮儴鏍峰紡 */
 .sheet-header {
-	text-align: center;
-	margin-bottom: 20px;
-	padding-bottom: 15px;
-	border-bottom: 2px solid #e0e0e0;
+  background-color: white;
+  padding: 20px;
+  border-radius: 8px;
+  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
+  margin-bottom: 20px;
 }
 
 .sheet-header h1 {
-	color: #2c3e50;
-	font-size: 24px;
-	margin-bottom: 5px;
+  font-size: 24px;
+  font-weight: 600;
+  color: #2c3e50;
+  margin-bottom: 10px;
 }
 
 .inspection-number {
-	font-size: 16px;
-	font-weight: bold;
-	color: #3498db;
+  font-size: 16px;
+  color: #3498db;
+  font-weight: 500;
 }
 
-/* 鍩烘湰淇℃伅鍖烘牱寮� */
-.basic-info,
-.material-info {
-	margin-bottom: 20px;
+/* 鍩烘湰淇℃伅鍖� */
+.basic-info {
+  background-color: white;
+  padding: 20px;
+  border-radius: 8px;
+  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
+  margin-bottom: 20px;
 }
 
 .info-row {
-	display: flex;
-	margin-bottom: 10px;
-	flex-wrap: wrap;
+  display: flex;
+  align-items: center;
+  margin-bottom: 15px;
 }
 
 .info-label {
-	font-weight: bold;
-	color: #34495e;
-	min-width: 80px;
-	margin-right: 5px;
+  font-size: 14px;
+  color: #7f8c8d;
+  margin-right: 10px;
+  min-width: 80px;
 }
 
 .info-value {
-	color: #2c3e50;
-	margin-right: 20px;
+  font-size: 14px;
+  color: #2c3e50;
+  margin-right: 20px;
 }
 
 .info-picker {
-	padding: 8px 12px;
-	border: 1px solid #ddd;
-	border-radius: 4px;
-	background-color: white;
-	font-size: 14px;
-	margin-right: 20px;
+  padding: 8px 12px;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  background-color: white;
+  font-size: 14px;
+  margin-right: 20px;
 }
 
-/* 鐗╂枡淇℃伅鍖烘牱寮� */
+/* 鐗╂枡淇℃伅鍖� */
 .material-info {
-	border: 1px solid #eee;
-	padding: 15px;
-	border-radius: 5px;
+  background-color: white;
+  padding: 20px;
+  border-radius: 8px;
+  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
+  margin-bottom: 20px;
 }
 
 .info-block {
-	display: flex;
-	align-items: center;
-	margin-bottom: 10px;
-	flex-wrap: wrap;
+  display: flex;
+  align-items: center;
+  margin-bottom: 15px;
 }
 
 .info-block .info-label {
-	min-width: 100px;
-	font-size: 14px;
-	color: #7f8c8d;
+  min-width: 100px;
+  font-size: 14px;
+  color: #7f8c8d;
 }
 
 .info-block .info-value {
-	font-size: 14px;
-	color: #2c3e50;
-	flex: 1;
+  font-size: 14px;
+  color: #2c3e50;
+  flex: 1;
 }
 
 .info-picker-input {
-	flex: 1;
-	padding: 8px 12px;
-	border: 1px solid #ddd;
-	border-radius: 4px;
-	background-color: white;
-	font-size: 14px;
+  flex: 1;
+  padding: 8px 12px;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  background-color: white;
+  font-size: 14px;
 }
 
 .info-input {
-	flex: 1;
-	padding: 8px 12px;
-	border: 1px solid #ddd;
-	border-radius: 4px;
-	background-color: white;
-	font-size: 14px;
+  flex: 1;
+  padding: 8px 12px;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  background-color: white;
+  font-size: 14px;
 }
 
 .highlight {
-	font-weight: bold;
-	color: #e74c3c;
+  font-weight: 600;
+  color: #e74c3c;
+  font-size: 16px;
 }
 
-/* 琛ㄦ牸鏍峰紡 */
+/* 妫�楠岄」鐩〃鏍� */
 .inspection-table {
-	margin: 25px 0;
+  margin: 25px 0;
+  border-radius: 8px;
+  overflow: hidden;
+  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+  background: #fff;
 }
 
 .inspection-table table {
-	width: 100%;
-	border-collapse: collapse;
+  width: 100%;
+  border-collapse: collapse;
 }
 
-.inspection-table th,
-.inspection-table td {
-	padding: 12px 15px;
-	border: 1px solid #ddd;
-	text-align: left;
+.inspection-table th, .inspection-table td {
+  padding: 16px 20px;
+  border: none;
+  text-align: left;
+  border-bottom: 1px solid #eee;
 }
 
 .inspection-table th {
-	background-color: #f8f9fa;
-	font-weight: bold;
-	color: #34495e;
+  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+  font-weight: 600;
+  color: #fff;
+  font-size: 14px;
+  letter-spacing: 0.5px;
+  position: relative;
 }
 
-.inspection-table tr:nth-child(even) {
-	background-color: #f9f9f9;
+.inspection-table tbody tr {
+  transition: all 0.3s ease;
+  border-left: 4px solid transparent;
 }
 
-.inspection-table tr:hover {
-	background-color: #f1f5f9;
+.inspection-table tbody tr:nth-child(even) {
+  background-color: #f8fafc;
+}
+
+.inspection-table tbody tr:hover {
+  background-color: #e8f4fd;
+  border-left-color: #3498db;
+  transform: translateY(-1px);
+  box-shadow: 0 4px 12px rgba(52, 152, 219, 0.15);
+}
+
+/* 妫�楠屾弿杩板垪鐗规畩鏍峰紡 */
+.inspection-table td:nth-child(2) {
+  position: relative;
+  min-height: 80px;
+  vertical-align: top;
+  padding: 16px 20px;
 }
 
 /* 姘村嵃鏍峰紡 */
 .watermark {
-	position: absolute;
-	font-size: 40px;
-	font-weight: bold;
-	opacity: 1;
-	z-index: 1;
-	pointer-events: none;
-	transform: rotate(-15deg);
-	width: 100%;
-	text-align: center;
-	top: 50%;
-	left: 50%;
-	transform: translate(-50%, -50%) rotate(-15deg);
+  position: absolute;
+  font-size: 32px;
+  font-weight: bold;
+  opacity: 0.4;
+  z-index: 3;
+  pointer-events: none;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%) rotate(-15deg);
+  text-shadow: 1px 1px 2px rgba(255, 255, 255, 0.8);
+  min-width: 60px;
+  text-align: center;
 }
 
 .watermark.approved {
-	color: #2ecc71;
-	/* 缁胯壊 */
+  color: #27ae60; /* 鏇存贰鐨勭豢鑹� */
 }
 
 .watermark.rejected {
-	color: #e74c3c;
-	/* 绾㈣壊 */
+  color: #e67e22; /* 鏇存贰鐨勭孩鑹� */
 }
 
 .watermark.pending {
-	color: #f39c12;
-	/* 姗欒壊 */
+  color: #f39c12; /* 姗欒壊 */
 }
 
-/* 鎻忚堪鏂囨湰瀹瑰櫒 */
+/* 鎻忚堪鏂囨湰鏍峰紡 */
 .description-text {
-	position: relative;
-	z-index: 2;
-	padding: 25px;
-	background-color: rgba(255, 255, 255, 0.7);
+  position: relative;
+  z-index: 2;
+  padding: 12px 16px;
+  background: transparent;
+  line-height: 1.6;
+  font-size: 14px;
+  color: #555;
+  margin: 0;
+  word-wrap: break-word;
+  word-break: break-word;
+  max-width: 100%;
+  /* 纭繚鏂囧瓧涓嶄細澶暱閬尅姘村嵃 */
+  padding-right: 80px;
+  min-height: 20px;
+  display: block;
 }
 
-/* 璋冩暣琛ㄦ牸鍗曞厓鏍� */
-.inspection-table td:nth-child(2) {
-	position: relative;
-	overflow: hidden;
-	padding: 0;
+.record-btn {
+  padding: 8px 16px;
+  background: linear-gradient(135deg, #3498db, #2980b9);
+  color: #fff;
+  border: none;
+  border-radius: 6px;
+  cursor: pointer;
+  transition: all 0.3s ease;
+  font-weight: 500;
+  font-size: 13px;
+  box-shadow: 0 2px 4px rgba(52, 152, 219, 0.3);
+}
+
+.record-btn:hover {
+  background: linear-gradient(135deg, #2980b9, #1f618d);
+  transform: translateY(-1px);
+  box-shadow: 0 4px 8px rgba(52, 152, 219, 0.4);
+}
+
+.record-btn:active {
+  transform: translateY(0);
 }
 
 /* 琛ㄥ崟涓婃柟鎿嶄綔鎸夐挳鍖烘牱寮� */
 .top-action-buttons {
-	display: flex;
-	justify-content: flex-end;
-	gap: 10px;
-	margin: 20px 0;
-	padding: 15px;
-	background-color: #f8f9fa;
-	border-radius: 8px;
-	border: 1px solid #e9ecef;
+  display: flex;
+  justify-content: flex-end;
+  gap: 10px;
+  margin: 20px 0;
+  padding: 15px;
+  background-color: #f8f9fa;
+  border-radius: 8px;
+  border: 1px solid #e9ecef;
 }
 
 /* 琛ㄥ崟涓嬫柟鎿嶄綔鎸夐挳鍖烘牱寮� */
 .bottom-action-buttons {
-	display: flex;
-	justify-content: center;
-	gap: 8px;
-	padding: 12px;
-	flex-wrap: wrap;
-	align-items: center;
-	position: fixed; /* 鍥哄畾鍦ㄥ睆骞曞簳閮� */
-	bottom: 0; /* 璺濈搴曢儴0px */
-	left: 0; /* 璺濈宸﹁竟0px */
-	right: 0; /* 璺濈鍙宠竟0px */
-	background-color: #fff; /* 鑳屾櫙鑹� */
-	border-top: 1px solid #e9ecef; /* 椤堕儴杈规 */
-	z-index: 1000; /* 纭繚鍦ㄦ渶涓婂眰 */
-	box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); /* 椤堕儴闃村奖 */
+  display: flex;
+  justify-content: center;
+  gap: 8px;
+  padding: 12px;
+  flex-wrap: wrap;
+  align-items: center;
+  position: fixed; /* 鍥哄畾鍦ㄥ睆骞曞簳閮� */
+  bottom: 0; /* 璺濈搴曢儴0px */
+  left: 0; /* 璺濈宸﹁竟0px */
+  right: 0; /* 璺濈鍙宠竟0px */
+  background-color: #fff; /* 鑳屾櫙鑹� */
+  border-top: 1px solid #e9ecef; /* 椤堕儴杈规 */
+  z-index: 1000; /* 纭繚鍦ㄦ渶涓婂眰 */
+  box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); /* 椤堕儴闃村奖 */
 }
 
 .action-btn {
-	background-color: #ecf0f1;
-	color: #34495e;
-	padding: 12px 15px;
-	border: none;
-	border-radius: 6px;
-	cursor: pointer;
-	font-size: 14px;
-	font-weight: 500;
-	transition: all 0.3s ease;
-	text-align: center;
-	min-height: 44px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
+  background-color: #ecf0f1;
+  color: #34495e;
+  padding: 12px 15px;
+  border: none;
+  border-radius: 6px;
+  cursor: pointer;
+  font-size: 14px;
+  font-weight: 500;
+  transition: all 0.3s ease;
+  text-align: center;
+  min-height: 44px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
 }
 
 .action-btn:hover {
-	background-color: #d5dbdb;
-	transform: translateY(-1px);
+  background-color: #d5dbdb;
+  transform: translateY(-1px);
 }
 
 .action-btn.primary {
-	background-color: #3498db;
-	color: #fff;
+  background-color: #3498db;
+  color: #fff;
 }
 
 .action-btn.primary:hover {
-	background-color: #2980b9;
+  background-color: #2980b9;
 }
 
 /* 灏忓昂瀵告寜閽牱寮� */
 .action-btn.small {
-	padding: 10px 12px;
-	font-size: 14px;
-	min-height: 44px;
-	white-space: nowrap;
-	flex-shrink: 0;
-	min-width: 80px;
-	max-width: 120px;
-	flex: 1;
+  padding: 10px 12px;
+  font-size: 14px;
+  min-height: 44px;
+  white-space: nowrap;
+  flex-shrink: 0;
+  min-width: 80px;
+  max-width: 120px;
+  flex: 1;
 }
 
 /* 鍘熸湁鎸夐挳鏍峰紡淇濇寔鍏煎 */
 .action-buttons {
-	display: flex;
-	gap: 10px;
-	margin: 15px 0;
-	justify-content: flex-end;
-}
-
-.record-btn {
-	padding: 6px 12px;
-	background-color: #f8f9fa;
-	border: 1px solid #ddd;
-	/* border-radius: 3px; */
-	cursor: pointer;
-	transition: all 0.2s;
-}
-
-.record-btn:hover {
-	background-color: #e9ecef;
+  display: flex;
+  gap: 10px;
+  margin: 15px 0;
+  justify-content: flex-end;
 }
 
 .overlay {
-	position: fixed;
-	top: 0;
-	left: 0;
-	width: 100%;
-	height: 100%;
-	background-color: rgba(0, 0, 0, 0.5);
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	z-index: 1000; /* 鎻愰珮灞傜骇锛岀‘淇濆湪鍥哄畾鎸夐挳涓婃柟 */
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.5);
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  z-index: 1000; /* 鎻愰珮灞傜骇锛岀‘淇濆湪鍥哄畾鎸夐挳涓婃柟 */
 }
 
 /* 寮圭獥鏁翠綋缇庡寲 */
 .popup {
-	background: #fff;
-	border-radius: 16px;
-	box-shadow: 0 8px 32px rgba(60,60,60,0.18);
-	padding: 28px 28px 18px 28px;
-	border: none;
-	position: relative;
-	min-width: 260px;
-	z-index: 1001; /* 纭繚寮圭獥鍐呭鍦ㄦ渶涓婂眰 */
-	max-height: 80vh; /* 闄愬埗鏈�澶ч珮搴︼紝閬垮厤琚簳閮ㄦ寜閽伄鎸� */
-	overflow-y: auto; /* 鍐呭杩囧鏃跺彲婊氬姩 */
+  background: #fff;
+  border-radius: 16px;
+  box-shadow: 0 8px 32px rgba(60,60,60,0.18);
+  padding: 28px 28px 18px 28px;
+  border: none;
+  position: relative;
+  min-width: 260px;
+  z-index: 1001; /* 纭繚寮圭獥鍐呭鍦ㄦ渶涓婂眰 */
+  max-height: 80vh; /* 闄愬埗鏈�澶ч珮搴︼紝閬垮厤琚簳閮ㄦ寜閽伄鎸� */
+  overflow-y: auto; /* 鍐呭杩囧鏃跺彲婊氬姩 */
 }
 
 .popup-header {
-	padding: 20px;
-	border-bottom: 1px solid #eee;
+  padding: 20px;
+  border-bottom: 1px solid #eee;
 }
 
 .popup-header h3 {
-	font-size: 18px;
-	font-weight: 600;
-	color: #2c3e50;
-	margin: 0;
+  font-size: 18px;
+  font-weight: 600;
+  color: #2c3e50;
+  margin: 0;
 }
 
 .popup-content {
-	padding: 20px;
+  padding: 20px;
 }
 
 .popup-actions {
-	padding: 20px;
-	border-top: 1px solid #eee;
-	display: flex;
-	gap: 10px;
-	justify-content: flex-end;
+  padding: 20px;
+  border-top: 1px solid #eee;
+  display: flex;
+  gap: 10px;
+  justify-content: flex-end;
+}
+
+/* 绌虹姸鎬佹牱寮� */
+.empty-state {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  padding: 60px 20px;
+  text-align: center;
+  background-color: #fafafa;
+  border-radius: 8px;
+  margin: 20px 0;
+}
+
+.empty-icon {
+  font-size: 48px;
+  margin-bottom: 16px;
+  opacity: 0.6;
+}
+
+.empty-text {
+  font-size: 18px;
+  font-weight: 600;
+  color: #666;
+  margin-bottom: 8px;
+}
+
+.empty-desc {
+  font-size: 14px;
+  color: #999;
+  line-height: 1.5;
 }
 
 /* 鍝嶅簲寮忚璁� */
 @media (max-width: 500px) {
+	.inspection-sheet {
+		padding-bottom: 100px; /* 灏忓睆骞曡澶囦笂鍑忓皯搴曢儴鍐呰竟璺� */
+	}
 
 	.info-row,
 	.info-block {
diff --git a/pages/QC/XJ/Add.vue b/pages/QC/XJ/Add.vue
index cc44bef..92453e0 100644
--- a/pages/QC/XJ/Add.vue
+++ b/pages/QC/XJ/Add.vue
@@ -1459,7 +1459,8 @@
   <style scoped>
   /* 鍩虹鏍峰紡 */
   .container {
-    padding: 10px;
+    padding: 20px;
+    padding-bottom: 120px; /* 涓哄浐瀹氭寜閽暀鍑烘洿澶氱┖闂达紝閬垮厤閬洊妫�楠岄」鐩� */
     background-color: #f5f7fa;
     min-height: 100vh;
   }
@@ -1565,41 +1566,43 @@
     box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
     margin: 25px 0;
   }
-  
+
   .inspection-table table {
     width: 100%;
     border-collapse: collapse;
   }
-  
+
   .inspection-table th {
-    background-color: #f8f9fa;
-    color: #34495e;
+    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+    color: white;
     padding: 12px 15px;
     font-weight: bold;
-    text-align: left;
-    border: 1px solid #ddd;
+    text-align: center;
+    border: none;
   }
-  
+
   .inspection-table td {
     padding: 12px 15px;
     text-align: left;
-    border: 1px solid #ddd;
+    border: none;
   }
-  
+
   .inspection-table tr:nth-child(even) {
     background-color: #f9f9f9;
   }
-  
+
   .inspection-table tr:hover {
     background-color: #f1f5f9;
+    transform: translateY(-1px);
+    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
   }
   
   /* 姘村嵃鏍峰紡 */
   .watermark {
     position: absolute;
-    font-size: 40px;
+    font-size: 32px;
     font-weight: bold;
-    opacity: 1;
+    opacity: 0.3;
     z-index: 1;
     pointer-events: none;
     transform: rotate(-15deg);
@@ -1609,15 +1612,15 @@
     left: 50%;
     transform: translate(-50%, -50%) rotate(-15deg);
   }
-  
+
   .watermark.approved {
     color: #2ecc71;
   }
-  
+
   .watermark.rejected {
     color: #e74c3c;
   }
-  
+
   .watermark.pending {
     color: #f39c12;
   }
@@ -1655,55 +1658,106 @@
   
   /* 鎿嶄綔鎸夐挳 */
   .action-buttons {
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    background-color: white;
+    border-top: 1px solid #e9ecef;
+    padding: 12px;
+    box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);
+    z-index: 1000;
     display: flex;
-    flex-direction: column;
-    gap: 10px;
-    margin-bottom: 20px;
+    flex-wrap: wrap;
+    gap: 8px;
+    justify-content: center;
+    align-items: center;
   }
   
   .action-btn {
-    padding: 12px 20px;
+    background-color: #ecf0f1;
+    color: #34495e;
+    padding: 12px 15px;
     border: none;
     border-radius: 6px;
-    font-size: 14px;
-    font-weight: 500;
     cursor: pointer;
-    transition: all 0.2s;
+    font-size: 12px;
+    font-weight: 500;
+    transition: all 0.3s ease;
+    text-align: center;
+    min-height: 44px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
   }
-  
+
+  .action-btn:hover {
+    background-color: #d5dbdb;
+    transform: translateY(-1px);
+  }
+
   .action-btn.primary {
     background-color: #3498db;
-    color: white;
+    color: #fff;
   }
-  
+
+  .action-btn.primary:hover {
+    background-color: #2980b9;
+  }
+
   .action-btn.secondary {
-    background-color: #95a5a6;
-    color: white;
+    background-color: #ecf0f1;
+    color: #34495e;
   }
-  
+
+  .action-btn.secondary:hover {
+    background-color: #d5dbdb;
+  }
+
   .action-btn.danger {
     background-color: #e74c3c;
-    color: white;
+    color: #fff;
   }
-  
+
+  .action-btn.danger:hover {
+    background-color: #c0392b;
+  }
+
   .action-btn.warning {
     background-color: #f39c12;
-    color: white;
+    color: #fff;
   }
-  
+
+  .action-btn.warning:hover {
+    background-color: #e67e22;
+  }
+
   .action-btn.success {
     background-color: #2ecc71;
-    color: white;
+    color: #fff;
   }
-  
+
+  .action-btn.success:hover {
+    background-color: #27ae60;
+  }
+
   .action-btn.info {
     background-color: #17a2b8;
-    color: white;
+    color: #fff;
+  }
+
+  .action-btn.info:hover {
+    background-color: #138496;
   }
   
   .action-btn.small {
-    padding: 6px 12px;
+    padding: 10px 12px;
     font-size: 12px;
+    min-height: 44px;
+    white-space: nowrap;
+    flex-shrink: 0;
+    min-width: 80px;
+    max-width: 120px;
   }
   
   /* 寮瑰嚭妗嗘牱寮� */
@@ -2324,12 +2378,36 @@
 
   /* 鍝嶅簲寮忚璁� */
   @media (max-width: 768px) {
+    .container {
+      padding-bottom: 120px; /* 涓哄浐瀹氭寜閽暀鍑虹┖闂达紝閬垮厤閬洊妫�楠岄」鐩� */
+    }
+    
     .info-grid {
       grid-template-columns: 1fr;
     }
     
     .action-buttons {
-      flex-direction: column;
+      flex-direction: row;
+      align-items: center;
+      justify-content: center;
+      padding: 8px;
+      gap: 6px;
+    }
+    
+    .action-btn {
+      min-width: 70px;
+      max-width: 100px;
+      padding: 8px 10px;
+      font-size: 11px;
+      min-height: 40px;
+    }
+    
+    .action-btn.small {
+      min-width: 70px;
+      max-width: 100px;
+      padding: 8px 10px;
+      font-size: 11px;
+      min-height: 40px;
     }
     
     /* 闄勪欢寮圭獥鍝嶅簲寮� */
@@ -2386,9 +2464,7 @@
     .attachment-icon {
       font-size: 20px;
     }
-  }
-  
-  @media (max-width: 480px) {
+    
     .attachment-popup-content {
       padding: 16px;
     }
diff --git a/store/index.js b/store/index.js
index 4b4ac80..28e71bd 100644
--- a/store/index.js
+++ b/store/index.js
@@ -10,9 +10,9 @@
 			networkFlag:'鍐呯綉', 
 			serverURLInt:'http://192.168.11.251:10055',//鏈嶅姟鍣ㄤ綋妫� 10.0.1.104:10054
 			serverURL:'http://localhost:10055',//鏈湴璋冭瘯鍦板潃
-			serverAPI:'http://localhost:5184/api',//褰撳墠姝e湪浣跨敤鐨勬湇鍔″櫒,榛樿涓哄缃�  localhost
+			//serverAPI:'http://localhost:5184/api',//褰撳墠姝e湪浣跨敤鐨勬湇鍔″櫒,榛樿涓哄缃�  localhost
 			//serverAPI:'http://192.168.1.22:10054/api',//鍐呯綉 
-			//serverAPI:'http://36.26.21.214:10054/api',
+			serverAPI:'http://36.26.21.214:10054/api',
 			ftpServer:'ftp://36.26.21.214',//FTP鏈嶅姟鍣ㄥ湴鍧�
 		}
 	},

--
Gitblit v1.9.3