From 97af26e2ad64d7974367df80a900c1f680bd19c5 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 23 七月 2025 10:38:08 +0800
Subject: [PATCH] 首检,巡检,入库检

---
 pages/QC/SJ/detail.vue | 1671 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 1,007 insertions(+), 664 deletions(-)

diff --git a/pages/QC/SJ/detail.vue b/pages/QC/SJ/detail.vue
index 2cde35f..366942d 100644
--- a/pages/QC/SJ/detail.vue
+++ b/pages/QC/SJ/detail.vue
@@ -1,751 +1,1094 @@
 <template>
-	<view class="container">
-		<!-- 澶撮儴 -->
-		<view class="header">
-			<view class="title">棣栨妫�楠岄」鐩槑缁�</view>
-			<view class="order-number">褰撳墠妫�楠屽崟鍙�: {{releaseNo}}</view>
-		</view>
+  <view class="container">
+    <!-- 澶撮儴 -->
+    <view class="header">
+      <view class="title">棣栨椤圭洰鏄庣粏</view>
+      <view class="order-number">褰撳墠妫�楠屽崟鍙�: {{ formData.billNo }}</view>
+    </view>
 
-		<!-- 鏍囩鏍� -->
-		<view class="tabs">
-			<view v-for="(tab, index) in tabs" :key="index" class="tab" :class="{active: currentTab === index}"
-				@tap="switchTab(index,tab.id)">
-				{{ tab.projName }}
-			</view>
-		</view>
-		<view class="tab-content">
-			<!-- 鍩烘湰淇℃伅 -->
-			<view class="section">
-				<view class="section-header">鍩烘湰淇℃伅</view>
-				<view class="section-body">
-					<view class="info-grid">
-						<view class="info-item">
-							<view class="info-label">椤圭洰鍚嶇О</view>
-							<view class="info-value">{{ formData.projName }}</view>
-						</view>
-						<view class="info-item">
-							<view class="info-label">浣跨敤浠〃</view>
-							<view class="info-value">{{ formData.usingInstruments }}</view>
-						</view>
-						<view class="info-item">
-							<view class="info-label">妫�楠屾暟閲�</view>
-							<view class="info-value">{{ formData.levelNum }}</view>
-						</view>
+    <!-- 鏍囩鏍� -->
+    <view class="tabs-container">
+      <scroll-view class="tabs" scroll-x="true" show-scrollbar="false">
+        <view v-for="(tab, index) in tabs" :key="index" :class="{active: currentTab === index}" class="tab"
+              @tap="switchTab(index, tab.id)">
+          {{ tab.projName || tab.fcheckItem || '椤圭洰' + (index + 1) }}
+        </view>
+      </scroll-view>
+    </view>
 
-						<view v-if="formData.minValue!=null" class="info-item">
-							<view class="info-label">涓嬮檺</view>
-							<view class="info-value">{{ formData.minValue }}</view>
-						</view>
-						<view v-if="formData.standardValue!=null" class="info-item">
-							<view class="info-label">鏍囧噯鍊�</view>
-							<view class="info-value">{{ formData.standardValue }}</view>
-						</view>
-						<view v-if="formData.maxValue!=null" class="info-item">
-							<view class="info-label">涓婇檺</view>
-							<view class="info-value">{{ formData.maxValue }}</view>
-						</view>
-					</view>
-				</view>
-			</view>
+    <view class="tab-content">
+      <!-- 鍩烘湰淇℃伅 -->
+      <view class="section">
+        <view class="section-header">鍩烘湰淇℃伅</view>
+        <view class="section-body">
+          <view class="info-grid">
+            <view class="info-item">
+              <view class="info-label">椤圭洰鍚嶇О</view>
+              <view class="info-value">{{ formData.projName }}</view>
+            </view>
+            <view class="info-item">
+              <view class="info-label">璐ㄩ噺瑕佹眰</view>
+              <view class="info-value">{{ formData.itemMod }}</view>
+            </view>
+            <view class="info-item">
+              <view class="info-label">妫�楠屾柟娉�</view>
+              <view class="info-value">{{ formData.inspectionMethod }}</view>
+            </view>
+            <view class="info-item">
+              <view class="info-label">浣跨敤浠〃</view>
+              <view class="info-value">{{ formData.usingInstruments }}</view>
+            </view>
+            <view class="info-item">
+              <view class="info-label">妫�楠屾暟</view>
+              <view class="info-value">{{ formData.levelNum }}</view>
+            </view>
+            <view v-if="formData.minValue" class="info-item">
+              <view class="info-label">涓嬮檺</view>
+              <view class="info-value">{{ formData.minValue }}</view>
+            </view>
+            <view v-if="formData.standardValue" class="info-item">
+              <view class="info-label">鏍囧噯鍊�</view>
+              <view class="info-value">{{ formData.standardValue }}</view>
+            </view>
+            <view v-if="formData.maxValue" class="info-item">
+              <view class="info-label">涓婇檺</view>
+              <view class="info-value">{{ formData.maxValue }}</view>
+            </view>
+            <view class="info-item">
+              <view class="info-label">鏇存柊浜�</view>
+              <view class="info-value">{{ formData.updater }}</view>
+            </view>
+            <view class="info-item">
+              <view class="info-label">鏇存柊鏃堕棿</view>
+              <view class="info-value">{{ formData.updateTime }}</view>
+            </view>
+          </view>
+        </view>
+      </view>
 
-			<!-- 瑙勬牸瑕佹眰 -->
-			<view class="section">
-				<view class="section-header">璐ㄩ噺瑕佹眰</view>
-				<view class="section-body">
-					<text class="spec-text">{{ formData.itemMod }}</text>
-				</view>
-			</view>
-			<!-- 瑙勬牸瑕佹眰 -->
-			<view class="section">
-				<view class="section-header">妫�楠屾弿杩�</view>
-				<view class="section-body">
-					<text class="spec-text">{{ formData.inspectionMethod }}</text>
-				</view>
-			</view>
-			<!-- 妫�楠岀粨鏋� -->
-			<view class="section">
-				<view class="section-header">妫�楠岀粨鏋�</view>
-				<view class="section-body">
-					<view v-if="formData.result!=null" class="result-preview">
-						<view class="info-label">棰勮缁撴灉</view>
-						<view class="info-value"><b>{{formData.result}}</b></view>
-					</view>
+      <!-- 妫�楠岀粨鏋� -->
+      <view class="section">
+        <view class="section-header">妫�楠岀粨鏋�</view>
+        <view class="section-body">
+          <view class="info-grid">
+            <view v-if="formData.result" class="info-item">
+              <view class="info-label">棰勮缁撴灉</view>
+              <view class="info-value">{{ formData.result }}</view>
+            </view>
+            <view v-if="formData.remarks" class="info-item">
+              <view class="info-label">涓嶅悎鏍兼弿杩�</view>
+              <view class="info-value danger">{{ formData.remarks }}</view>
+            </view>
+          </view>
+        </view>
+      </view>
 
-					<view v-if="formData.remarks!=null" class="result-ng">
-						<view class="info-label">涓嶈壇鎻忚堪</view>
-						<view class="info-value danger">{{formData.remarks}}</view>
-					</view>
-				</view>
-			</view>
+      <!-- 缁撴灉褰曞叆 -->
+      <view class="section">
+        <view class="section-header">妫�楠岀粨鏋滃綍鍏�</view>
+        <view class="section-body">
+          <view v-if="!formData.maxValue && !formData.minValue" class="info-item edit">
+            <view class="info-label" style="color: #F56C6C">鎻愮ず</view>
+            <view class="info-value" style="color: #F56C6C">娌℃湁鏈�澶у�煎拰鏈�灏忓�兼椂濉啓0锛堟湭閫氳繃妫�楠岋級鎴�1锛堥�氳繃妫�楠岋級</view>
+          </view>
 
-			<!-- 缁撴灉褰曞叆 -->
-			<view class="section">
-				<view class="section-header">妫�楠岀粨鏋滃綍鍏�</view>
-				<view class="section-body">
-					<view class="input-group input1">
-						<view class="input-wrapper">
+          <view class="input-group input1">
+            <view class="input-wrapper">
+              <input v-if="tableData.length < formData.levelNum" v-model="formData.fcheckResu" class="result-input"
+                     placeholder="璇疯緭鍏ユ楠岀粨鏋�..." type="number"/>
+              <button v-if="tableData.length < formData.levelNum" class="btn primary-btn" @click="submit">淇濆瓨缁撴灉
+              </button>
+              <button v-if="isShowImg" class="btn upload-btn" @click="previewImage">
+                <uni-icons color="#fff" size="16" type="image"></uni-icons>
+                鏌ョ湅鍥剧墖
+              </button>
+              <button class="btn upload-btn" @click="saveRemarks">
+                <uni-icons color="#fff" size="16" type="compose"></uni-icons>
+                涓嶅悎鏍兼弿杩�
+              </button>
+            </view>
+          </view>
 
-							<button class="btn upload-btn" @tap="chooseImage">
-								<uni-icons type="upload" size="16" color="#fff"></uni-icons>
-								涓婁紶/鏌ョ湅鍥剧墖
-							</button>
-							<button v-if="this.current" class="btn upload-btn" @tap="upRemarks">
-								<uni-icons type="compose" size="16" color="#fff"></uni-icons>
-								涓嶈壇鎻忚堪
-							</button>
-							<input v-if="(tableData.length < formData.levelNum)" @input="search($event)"
-								v-model="inputTxt" type="text" class="result-input" placeholder="璇疯緭鍏ユ楠岀粨鏋�..."
-								placeholder-class="placeholder" />
-							<button v-if="(tableData.length < formData.levelNum)"
-								style="margin: 0px;background-color: #3498db;color:#ffffff ;" class="btn primary-btn"
-								@tap="saveResult">淇濆瓨缁撴灉</button>
-						</view>
-					</view>
+          <!-- 鍝嶅簲寮忚璁$殑绗簩涓緭鍏ョ粍 -->
+          <view class="input-group input2">
+            <view class="input-wrapper">
+              <button v-if="isShowImg" class="btn upload-btn" @click="previewImage">
+                <uni-icons color="#fff" size="16" type="image"></uni-icons>
+                鏌ョ湅鍥剧墖
+              </button>
+              <button class="btn upload-btn" @click="saveRemarks">
+                <uni-icons color="#fff" size="16" type="compose"></uni-icons>
+                涓嶅悎鏍兼弿杩�
+              </button>
+            </view>
+            <view class="input-wrapper" style="margin-top: 15px;">
+              <input v-if="tableData.length < formData.levelNum" v-model="formData.fcheckResu" class="result-input"
+                     placeholder="璇疯緭鍏ユ楠岀粨鏋�..." type="number"/>
+              <button v-if="tableData.length < formData.levelNum" class="btn primary-btn" @click="submit">淇濆瓨缁撴灉
+              </button>
+            </view>
+          </view>
+        </view>
+      </view>
 
-					<view class="input-group input2">
-						<view class="input-wrapper">
+      <!-- 缁撴灉琛ㄦ牸 -->
+      <view v-if="tableData.length > 0" class="simple-table-container">
+        <view class="simple-table-header">
+          <view class="simple-title">妫�楠岃褰� ({{ tableData.length }}/{{ formData.levelNum }})</view>
+          <view :class="{'completed': !(tableData.length < formData.levelNum)}" class="simple-status">
+            {{ tableData.length < formData.levelNum ? '杩涜涓�' : '宸插畬鎴�' }}
+          </view>
+        </view>
 
-							<button class="btn upload-btn" @tap="chooseImage">
-								<uni-icons type="upload" size="16" color="#fff"></uni-icons>
-								涓婁紶/鏌ョ湅鍥剧墖
-							</button>
-							<button v-if="this.current" class="btn upload-btn" @tap="upRemarks">
-								<uni-icons type="compose" size="16" color="#fff"></uni-icons>
-								涓嶈壇鎻忚堪
-							</button>
-						</view>
-						<view class="input-wrapper" style="margin-top: 15px;">
+        <view class="simple-table">
+          <view class="simple-header-row">
+            <view class="simple-header-cell">缂栧彿</view>
+            <view class="simple-header-cell">妫�楠岀粨鏋�</view>
+            <view class="simple-header-cell">鎿嶄綔</view>
+          </view>
 
-							<input v-if="(tableData.length < formData.checkQyt)" @input="search($event)"
-								v-model="inputTxt" type="text" class="result-input" placeholder="璇疯緭鍏ユ楠岀粨鏋�..."
-								placeholder-class="placeholder" />
-							<button v-if="(tableData.length < formData.checkQyt)"
-								style="margin: 0px;background-color: #3498db;color:#ffffff ;" class="btn primary-btn"
-								@tap="saveResult">淇濆瓨缁撴灉</button>
-						</view>
-					</view>
-				</view>
-			</view>
+          <view v-for="(item, index) in tableData" :key="index" class="simple-data-row">
+            <view class="simple-data-cell simple-index">
+              {{ index + 1 }}
+            </view>
+            <view class="simple-data-cell simple-result">
+              <!-- 鏁板瓧缁撴灉鏍峰紡 -->
+              <view v-if="isNumber && !isNaN(parseFloat(item.fcheckResu))" class="simple-number-result">
+                <view class="result-value">{{ item.fcheckResu }}</view>
+                <view v-if="formData.unitName" class="result-unit">{{ formData.unitName }}</view>
+                <view :class="{'pass': isInRange(item.fcheckResu), 'fail': !isInRange(item.fcheckResu)}"
+                      class="result-status">
+                  {{ isInRange(item.fcheckResu) ? '鍚堟牸' : '涓嶅悎鏍�' }}
+                </view>
+              </view>
 
-			<!-- 缁撴灉琛ㄦ牸 -->
-			<view v-if="tableData.length>0" class="table-container">
-				<view class="table-header">
-					<view class="th">缂栧彿</view>
-					<view class="th">妫�楠岀粨鏋�<i style="color: rgb(0 212 68);"
-							v-if="!(tableData.length < formData.levelNum)">锛堣緭鍏ュ凡瀹屾垚锛�</i></view>
-					<view class="th" v-if="current">鎿嶄綔</view>
-				</view>
+              <!-- NG/OK鐘舵�佹牱寮� -->
+              <view v-else class="simple-status-result">
+                <view :class="{'pass': item.fcheckResu === '1', 'fail': item.fcheckResu !== '1'}" class="simple-status">
+                  {{ item.fcheckResu === '1' ? '鍚堟牸' : '涓嶅悎鏍�' }}
+                </view>
+              </view>
+            </view>
+            <view class="simple-data-cell simple-action">
+              <button v-if="!isNumber" class="simple-btn" @click="numberEdit(item)">
+                {{ editResult(item.fcheckResu) }}
+              </button>
+              <button v-if="isNumber" class="simple-btn" @click="toDetail(item)">
+                淇敼
+              </button>
+            </view>
+          </view>
+        </view>
+      </view>
 
-				<view v-for="(item, index) in tableData" :key="index" class="table-row">
-					<view class="td">{{ index + 1 }}</view>
-					<view v-if="!isNumber" class="td">
-						<view :class="['result-badge', 'OK']" v-if="item.fcheckResu==1">
-							OK
-						</view>
-						<view :class="['result-badge', 'NG']" v-if="item.fcheckResu==0">
-							NG
-						</view>
-					</view>
-					<view v-if="isNumber" 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>
-			<view v-if="remarksPopup" class="overlay">
-				<view class="popup">
-					<h3>淇敼涓嶅悎鏍兼弿杩�</h3>
-					<form>
-						<view class="form-group">
-							<label class="form-label">涓嶅悎鏍兼弿杩�:</label>
-							<input class="form-input" type="text" v-model="remarks" />
-						</view>
-						<button class="updateBut" type="warn" @click="editRemarks">淇敼</button>
-						<button @click="remarksPopup = !remarksPopup">鍙栨秷</button>
-					</form>
-				</view>
-			</view>
-			<view v-if="showPopup" class="overlay">
-				<view class="popup">
-					<h3>淇敼妫�楠岀粨鏋�</h3>
-					<form :modelValue="editData">
-						<view class="form-group">
-							<label class="form-label">妫�楠岀粨鏋�:</label>
-							<input class="form-input" type="text" v-model="editData.fcheckResu" />
-						</view>
-						<button type="warn" @click="eidt">淇敼</button>
-						<button @click="showPopup = !showPopup">鍙栨秷</button>
-					</form>
-				</view>
-			</view>
+      <!-- 寮瑰嚭灞� - 涓嶅悎鏍兼弿杩� -->
+      <view v-if="remarksPopup" class="overlay">
+        <view class="popup">
+          <h3>淇敼涓嶅悎鏍兼弿杩�</h3>
+          <form>
+            <view class="form-group">
+              <label class="form-label">涓嶅悎鏍兼弿杩�:</label>
+              <input v-model="remarks" class="form-input" type="text"/>
+            </view>
+            <view class="popup-buttons">
+              <button class="btn primary-btn" type="warn" @click="editRemarks">淇敼</button>
+              <button class="btn cancel-btn" @click="remarksPopup = !remarksPopup">鍙栨秷</button>
+            </view>
+          </form>
+        </view>
+      </view>
 
-		</view>
-	</view>
+      <!-- 寮瑰嚭灞� - 淇敼妫�楠岀粨鏋� -->
+      <view v-if="showPopup" class="overlay">
+        <view class="popup">
+          <h3>淇敼妫�楠岀粨鏋�</h3>
+          <form :modelValue="editData">
+            <view class="form-group">
+              <label class="form-label">妫�楠岀粨鏋�:</label>
+              <input v-model="editData.fcheckResu" class="form-input" type="text"/>
+            </view>
+            <view class="popup-buttons">
+              <button class="btn primary-btn" type="warn" @click="eidt">淇敼</button>
+              <button class="btn cancel-btn" @click="showPopup = !showPopup">鍙栨秷</button>
+            </view>
+          </form>
+        </view>
+      </view>
+    </view>
+  </view>
 </template>
 
 <script>
-	import {
-		compile
-	} from "vue";
+export default {
+  data() {
+    return {
+      formData: {},
+      isNumber: false,
+      checkItem: "",
+      id: 0,
+      gid: 0,
+      billNo: "",
+      showPopup: false,
+      editData: {},
+      tableData: [],
+      base64Image: "",
+      isShowImg: false,
+      remarks: "",
+      remarksPopup: false,
+      currentTab: 0,
+      tabs: []
+    }
+  },
+  methods: {
+    // 鍒囨崲鏍囩椤�
+    switchTab(index, id) {
+      this.currentTab = index;
+      this.id = id;
+      this.refreshResult();
+    },
 
-	export default {
-		data() {
-			return {
-				formData: {},
-				tableData: {},
-				mainId: '',
-				isNumber: false,
-				currentTab: 0,
-				tabs: [],
-				inputResult: '',
-				remarksPopup: false,
-				showPopup: false,
-				editData: {},
-				inputTxt: '',
-				formID: '',
-				releaseNo: '',
-				current: false
-			}
-		},
-		methods: {
-			switchTab(index, mainIds) {
-				this.currentTab = index
-				this.mainId = mainIds;
-				this.refreshResult();
-			},
-			//妫�娴嬭緭鍏ユ鐨勮緭鍏ワ紝骞剁粰鍙橀噺璧嬪��
-			search(event) {
-				this.formData.fcheckResu = event.detail.value;
-			},
-			toggleResult(item) {
-				let fstand = "鈭�";
-				let fcheckResu = 1;
+    // 鍔犺浇鏍囩椤�
+    loadTabItems() {
+      this.$post({
+        url: "/SJ/getQSItems",
+        data: {
+          pid: this.gid,
+        }
+      }).then(res => {
+        if (res.data && res.data.tbBillList) {
+          this.tabs = res.data.tbBillList;
+          // 鎸夋娴嬬粨鏋滄帓搴忥紝鏈畬鎴愮殑鎺掑湪鍓嶉潰
+          this.tabs.sort((a, b) => {
+            if (a.result === '鏈畬鎴�' && b.result !== '鏈畬鎴�') {
+              return -1;
+            } else if (a.result !== '鏈畬鎴�' && b.result === '鏈畬鎴�') {
+              return 1;
+            } else {
+              return 0;
+            }
+          });
+        } else {
+          // 娌℃湁椤圭洰鏃惰嚦灏戞坊鍔犲綋鍓嶉」鐩埌鏍囩
+          this.tabs = [{id: this.id, projName: this.formData.projName || '褰撳墠椤圭洰'}];
+        }
+      });
+    },
 
-				if (item.fcheckResu == '1') {
-					fstand = "脳";
-					fcheckResu = 0;
-				}
+    previewImage() {
+      uni.previewImage({
+        urls: [this.base64Image],
+      });
+    },
+    editResult(fcheckResu) {
+      if (fcheckResu == '1') {
+        return "鏀逛负涓嶅悎鏍�";
+      } else {
+        return "鏀逛负鍚堟牸";
+      }
+    },
+    submit() {
 
-				this.$post({
-					url: "/SJ/UpdateQSItemDetail",
-					data: {
-						id: item.id,
-						pid: item.pid,
-						gid: item.gid,
-						fstand: fstand,
-						fcheckResu: fcheckResu,
-						updateBy: this.$loginInfo.account,
-					}
-				}).then(res => {
-					this.$showMessage("淇敼鎴愬姛");
-					this.refreshResult(); //鍒锋柊椤甸潰
-				})
-			},
-			chooseImage() {
-				uni.navigateTo({
-					url: 'ImageItem?id=' + this.formData.id
-				});
-			},
-			upRemarks() {
-				this.remarksPopup = true;
-			},
-			saveResult() {
-				let count = this.formData.levelNum;
-				let fstand = "鈭�";
+      let count = this.formData.levelNum;
+      let fstand = "鈭�";
 
-				//鏈夋渶澶у�煎拰鏈�灏忓�煎氨鏍规嵁鏄惁绗﹀悎鏍囧噯鍊兼洿鏂板垽瀹氱粨鏋滐紝娌℃湁鏈�澶у�煎拰鏈�灏忓�煎氨鏍规嵁鏄惁閫氳繃妫�楠屽垽瀹氱粨鏋�
-				if (this.formData.maxValue && this.formData.minValue) {
+      //鏈夋渶澶у�煎拰鏈�灏忓�煎氨鏍规嵁鏄惁绗﹀悎鏍囧噯鍊兼洿鏂板垽瀹氱粨鏋滐紝娌℃湁鏈�澶у�煎拰鏈�灏忓�煎氨鏍规嵁鏄惁閫氳繃妫�楠屽垽瀹氱粨鏋�
+      if (this.formData.maxValue && this.formData.minValue) {
 
-					if (!this.formData.fcheckResu) {
-						this.$showMessage("璇疯緭鍏ユ楠屽��");
-						return;
-					}
+        if (!this.formData.fcheckResu) {
+          this.$showMessage("璇疯緭鍏ユ楠屽��");
+          return;
+        }
 
-					if (this.formData.fcheckResu >= this.formData.minValue && this.formData.fcheckResu <= this.formData
-						.maxValue) {
-						fstand = "鈭�"
-					} else {
-						fstand = "脳";
-					}
-					count = 1;
-				} else {
+        if (this.formData.fcheckResu >= this.formData.minValue && this.formData.fcheckResu <= this.formData.maxValue) {
+          fstand = "鈭�"
+        } else {
+          fstand = "脳";
+        }
+        count = 1;
+      } else {
 
-					if (!this.formData.fcheckResu) {
-						this.formData.fcheckResu = 1
-					}
+        if (!this.formData.fcheckResu) {
+          this.formData.fcheckResu = 1
+        }
 
-					if (this.formData.fcheckResu == 0 || this.formData.fcheckResu == 1) {
-						this.formData.isPass = this.formData.fcheckResu
-					} else {
-						this.$showMessage("鏃犳爣鍑嗗�兼椂锛屾楠岀粨鏋滃彧鑳戒负0鎴�1!");
-						return;
-					}
-					count = count - this.tableData.length;
-				}
+        if (this.formData.fcheckResu == 0 || this.formData.fcheckResu == 1) {
+          this.formData.isPass = this.formData.fcheckResu
+        } else {
+          this.$showMessage("鏃犳爣鍑嗗�兼椂锛屾楠岀粨鏋滃彧鑳戒负0鎴�1!");
+          return;
+        }
+        count = count - this.tableData.length;
+      }
 
-				this.formData.updater = this.$loginInfo.account;
+      this.formData.updater = this.$loginInfo.account;
 
-				this.$post({
-					url: "/SJ/SetQSItemDetail",
-					data: {
-						pid: this.mainId,
-						gid: this.formID,
-						fstand: fstand,
-						fcheckResu: this.formData.fcheckResu,
-						updateBy: this.formData.updater,
-						count: count
-					}
-				}).then(res => {
-					this.formData.fcheckResu = null;
-					this.$showMessage("淇濆瓨鎴愬姛");
-					this.refreshResult();
-				})
+      this.$post({
+        url: "/SJ/SetQSItemDetail",
+        data: {
+          pid: this.id,
+          gid: this.gid,
+          fstand: fstand,
+          fcheckResu: this.formData.fcheckResu,
+          updateBy: this.formData.updater,
+          count: count
+        }
+      }).then(res => {
+        this.formData.fcheckResu = null;
+        this.$showMessage("淇濆瓨鎴愬姛");
+        this.refreshResult();
+        // 閲嶆柊鍔犺浇鏍囩椤逛互鏇存柊鐘舵��
+        this.loadTabItems();
+      })
 
+    },
+    refreshResult() {
+      this.$post({
+        url: "/SJ/getQSItems",
+        data: {
+          id: this.id
+        }
+      }).then(res => {
+        this.formData = res.data.tbBillList[0];
+        this.formData.billNo = this.billNo;
+        if (this.formData.imageData) {
+          this.isShowImg = true;
+          this.base64Image = 'data:image/jpeg;base64,' + this.formData.imageData;
+        }
+        if (this.formData.maxValue && this.formData.minValue && this.formData.standardValue) {
+          this.isNumber = true;
+        }
+      })
 
-			},
-			goBack() {
-				uni.navigateBack()
-			},
-			//鑾峰彇妫�楠屽崟璇︽儏
-			refreshResult() {
-				this.$post({
-					url: "/SJ/getQSItems",
-					data: {
-						id: this.mainId
-					}
-				}).then(res => {
+      this.$post({
+        url: "/SJ/getQSItemDetail",
+        data: {
+          pid: this.id,
+          gid: this.gid
+        }
+      }).then(res => {
+        this.tableData = res.data.tbBillList;
+      })
+    },
+    toDetail(item) {
+      this.showPopup = !this.showPopup;
+      this.editData = item;
+    },
+    eidt() {
 
-					this.formData = res.data.tbBillList[0];
-					this.$post({
-						url: "/SJ/getQSItemDetail",
-						data: {
-							pid: this.mainId,
-							gid: this.formID
-						}
-					}).then(res => {
-						this.tableData = res.data.tbBillList;
-					})
-					// this.tableData = res.data.tbBillList.itemXj02s;
+      if (!this.editData.fcheckResu) {
+        this.$showMessage("璇疯緭鍏ユ楠岀粨鏋�");
+      }
 
-					if (this.formData.imageData) {
-						this.isShowImg = true;
-						this.base64Image = 'data:image/jpeg;base64,' + this.formData.imageData;
-					}
+      if (this.formData.fcheckResu == this.editData.fcheckResu) {
+        this.$showMessage("淇敼鎴愬姛");
+        return;
+      }
 
-					//fupAllow  fdownAllow  standardValue
-					if (this.formData.maxValue && this.formData.minValue && this.formData.standardValue) {
-						this.isNumber = true;
-					} else {
-						this.isNumber = false;
-					}
-				})
-			},
-			editResult(fcheckResu) {
-				if (fcheckResu == '1') {
-					return "鏀逛负涓嶅悎鏍�";
-				} else {
-					return "鏀逛负鍚堟牸";
-				}
-			},
-			toDetail(item) {
-				this.showPopup = !this.showPopup;
-				this.editData = item;
-			},
-			editRemarks() {
-				if (this.remarks) {
-					//saveRemarksGid
-					this.$post({
-						url: "/SJ/saveRemarksPid",
-						data: {
-							pid: this.formData.id,
-							remarks: this.remarks
-						}
-					}).then(res => {
-						if (res.data.tbBillList > 0) {
-							this.formData.remarks = this.remarks;
-							this.remarksPopup = !this.remarksPopup;
-							this.$showMessage("淇濆瓨鎴愬姛");
-						}
-					})
-				} else {
-					this.$post({
-						url: "/SJ/saveRemarksPid",
-						data: {
-							pid: this.formData.id,
-							remarks: ''
-						}
-					}).then(res => {
-						if (res.data.tbBillList > 0) {
-							this.formData.remarks = this.remarks;
-							this.remarksPopup = !this.remarksPopup;
-							this.$showMessage("淇濆瓨鎴愬姛");
-						}
-					})
-				}
-			},
-			eidt() {
+      let fstand = "鈭�";
 
-				if (!this.editData.fcheckResu) {
-					this.$showMessage("璇疯緭鍏ユ楠岀粨鏋�");
-				}
+      if (this.formData.maxValue && this.formData.minValue) {
 
-				if (this.formData.fcheckResu == this.editData.fcheckResu) {
-					this.$showMessage("淇敼鎴愬姛");
-					return;
-				}
+        if (!this.editData.fcheckResu) {
+          this.$showMessage("璇疯緭鍏ユ楠屽��");
+          return;
+        }
 
-				let fstand = "鈭�";
+        if (this.editData.fcheckResu >= this.formData.minValue && this.editData.fcheckResu <= this.formData.maxValue) {
+          this.editData.isPass = 1
+        } else {
+          this.editData.isPass = 0
+          fstand = "脳";
+        }
+      } else {
 
-				if (this.formData.maxValue && this.formData.minValue) {
+        if (!this.editData.fcheckResu) {
+          this.editData.fcheckResu = 1
+        }
 
-					if (!this.editData.fcheckResu) {
-						this.$showMessage("璇疯緭鍏ユ楠屽��");
-						return;
-					}
+        if (this.editData.fcheckResu == 0 || this.editData.fcheckResu == 1) {
+          if (this.editData.fcheckResu == 0) {
+            fstand = "脳";
+          }
+        } else {
+          this.$showMessage("鏃犳爣鍑嗗�兼椂锛屾楠岀粨鏋滃彧鑳戒负0鎴�1!");
+          return;
+        }
+      }
 
-					if (parseFloat(this.editData.fcheckResu) >= parseFloat(this.formData.fdownAllow) && parseFloat(this
-							.editData
-							.fcheckResu) <= parseFloat(this.formData.fupAllow)) {
-						this.editData.isPass = 1
-					} else {
-						this.editData.isPass = 0
-						fstand = "脳";
-					}
-				} else {
+      this.editData.updater = this.$loginInfo.account;
 
-					if (!this.editData.fcheckResu) {
-						this.editData.fcheckResu = 1
-					}
+      this.$post({
+        url: "/SJ/UpdateQSItemDetail",
+        data: {
+          id: this.editData.id,
+          pid: this.id,
+          gid: this.gid,
+          fstand: fstand,
+          fcheckResu: this.editData.fcheckResu,
+          updateBy: this.editData.updater,
+        }
+      }).then(res => {
+        this.showPopup = !this.showPopup;
+        this.$showMessage("淇敼鎴愬姛");
+        this.refreshResult();//鍒锋柊椤甸潰
+        // 閲嶆柊鍔犺浇鏍囩椤逛互鏇存柊鐘舵��
+        this.loadTabItems();
+      })
+    },
+    numberEdit(item) {
 
-					if (this.editData.fcheckResu == 0 || this.editData.fcheckResu == 1) {
-						if (this.editData.fcheckResu == 0) {
-							fstand = "脳";
-						}
-					} else {
-						this.$showMessage("鏃犳爣鍑嗗�兼椂锛屾楠岀粨鏋滃彧鑳戒负0鎴�1!");
-						return;
-					}
-				}
+      let fstand = "鈭�";
+      let fcheckResu = 1;
 
-				this.editData.updater = this.$loginInfo.account;
+      if (item.fcheckResu == '1') {
+        fstand = "脳";
+        fcheckResu = 0;
+      }
 
-				this.$post({
-					url: "/SJ/UpdateQSItemDetail",
-					data: {
-						id: this.editData.id,
-						pid: this.mainId,
-						gid: this.formID,
-						fstand: fstand,
-						fcheckResu: this.editData.fcheckResu,
-						updateBy: this.editData.updater,
-					}
-				}).then(res => {
-					this.showPopup = !this.showPopup;
-					this.$showMessage("淇敼鎴愬姛");
-					this.refreshResult(); //鍒锋柊椤甸潰
-				})
-			},
-		},
-		onLoad(options) {
-			//options涓寘鍚簡url闄勫甫鐨勫弬鏁�
-			let params = options;
-			this.mainId = params["mainId"];
-			this.refreshResult();
-			this.formID = params["formID"];
-			this.releaseNo = params["releaseNo"];
-			this.currentTab = parseInt(params["index"]);
-			this.current = params["current"] === 'true' ? true : false;
-			this.$post({
-			url: "/SJ/getQSItems",
-			data: {
-				pid: this.formID
-			}
-			}).then(res1 => {
-				let tableData = res1.data.tbBillList
-				//褰撳凡妫�楠屼釜鏁伴兘涓嶄负绌烘椂鎸夌収妫�娴嬬粨鏋勬帓搴�
-				tableData.sort((a, b) => {
-					if (a.result === '鏈畬鎴�' && b.result === '鍚堟牸') {
-						return -1;
-					} else if (a.result === '鍚堟牸' && b.result === '鏈畬鎴�') {
-						return 1;
-					} else {
-						return 0;
-					}
-				});
-				this.tabs = tableData;
-				// if (this.tableData.length === 0) {
-				// 	this.isShowTable = true;
-				// }
-				this.tableData.forEach((item, index) => {
-					this.set(item, 'current', this.current);
-				});
-				console.log(this.tableData);
-			})
-		}
-	}
+      this.$post({
+        url: "/SJ/UpdateQSItemDetail",
+        data: {
+          id: item.id,
+          pid: item.pid,
+          gid: item.gid,
+          fstand: fstand,
+          fcheckResu: fcheckResu,
+          updateBy: this.$loginInfo.account,
+        }
+      }).then(res => {
+        this.$showMessage("淇敼鎴愬姛");
+        this.refreshResult(); //鍒锋柊椤甸潰
+        // 閲嶆柊鍔犺浇鏍囩椤逛互鏇存柊鐘舵��
+        this.loadTabItems();
+      })
+    },
+    saveRemarks() {
+      this.remarksPopup = !this.remarksPopup;
+      this.remarks = this.formData.remarks;
+    },
+    editRemarks() {
+      if (this.remarks) {
+        //saveRemarksGid
+        this.$post({
+          url: "/SJ/saveRemarksPid",
+          data: {
+            pid: this.formData.id,
+            remarks: this.remarks
+          }
+        }).then(res => {
+          if (res.data.tbBillList > 0) {
+            this.formData.remarks = this.remarks;
+            this.remarksPopup = !this.remarksPopup;
+            this.$showMessage("淇濆瓨鎴愬姛");
+            // 閲嶆柊鍔犺浇鏍囩椤逛互鏇存柊鐘舵��
+            this.loadTabItems();
+          }
+        })
+      }
+    },
+    // 鍒ゆ柇鏁板瓧鏄惁鍦ㄨ寖鍥村唴
+    isInRange(value) {
+      if (!this.formData.maxValue || !this.formData.minValue) return true;
+      const numValue = parseFloat(value);
+      return numValue >= parseFloat(this.formData.minValue) &&
+          numValue <= parseFloat(this.formData.maxValue);
+    },
+    // 鑾峰彇鏁板瓧缁撴灉鐨勬牱寮忕被
+    getNumberResultClass(value) {
+      if (!this.formData.maxValue || !this.formData.minValue) return 'number-normal';
+      return this.isInRange(value) ? 'number-pass' : 'number-fail';
+    },
+    // 鑾峰彇鐘舵�佺粨鏋滅殑鏍峰紡绫�
+    getStatusClass(status) {
+      return status === '鈭�' ? 'status-pass' : 'status-fail';
+    }
+  },
+  onLoad(options) {
+    //options涓寘鍚簡url闄勫甫鐨勫弬鏁�
+    let params = options;
+
+    this.id = params["id"];
+    this.billNo = params["billNo"];
+    this.gid = params["gid"];
+    this.currentTab = parseInt(params["index"] || 0);
+
+    this.refreshResult();
+    this.loadTabItems();
+  }
+}
 </script>
 
 <style lang="scss">
-	$primary-color: #409EFF;
-	$success-color: #67C23A;
-	$danger-color: #F56C6C;
-	$border-color: #DCDFE6;
-	$bg-color: #f5f7fa;
+$primary-color: #409EFF;
+$success-color: #67C23A;
+$danger-color: #F56C6C;
+$border-color: #DCDFE6;
+$bg-color: #f5f7fa;
 
-	.container {
-		padding: 20px;
-		background-color: #fff;
-	}
+.container {
+  padding: 20px;
+  background-color: #fff;
+}
 
-	.header {
-		padding: 20px;
-		border-bottom: 1px solid $border-color;
-		background: linear-gradient(90deg, #f0f7ff, #e1f0ff);
+.header {
+  padding: 20px;
+  border-bottom: 1px solid $border-color;
+  background: linear-gradient(90deg, #f0f7ff, #e1f0ff);
+  margin-bottom: 0; /* 璋冩暣锛屽洜涓轰笅闈㈡湁tab鏍� */
+}
 
-		.title {
-			font-size: 24px;
-			color: #333;
-			margin-bottom: 10px;
-		}
+.header .title {
+  font-size: 24px;
+  color: #333;
+  margin-bottom: 10px;
+}
 
-		.order-number {
-			color: #666;
-			font-size: 14px;
-		}
-	}
+.header .order-number {
+  color: #666;
+  font-size: 14px;
+}
 
-	.tabs {
-		display: flex;
-		background-color: $bg-color;
-		border-bottom: 1px solid $border-color;
+/* 鏍囩鏍忔牱寮� */
+.tabs-container {
+  width: 100%;
+  position: relative;
+  background-color: $bg-color;
+  border-bottom: 1px solid $border-color;
+}
 
-		.tab {
-			flex: 1;
-			text-align: center;
-			padding: 12px 0;
-			border-right: 1px solid $border-color;
-			color: #666;
-			transition: all 0.3s;
+.tabs {
+  display: flex;
+  white-space: nowrap;
+  overflow-x: auto;
+  scrollbar-width: none; /* Firefox */
+  -ms-overflow-style: none; /* IE and Edge */
+}
 
-			&:last-child {
-				border-right: none;
-			}
+.tabs::-webkit-scrollbar {
+  display: none; /* Chrome, Safari and Opera */
+}
 
-			&.active {
-				background-color: #fff;
-				color: $primary-color;
-				font-weight: bold;
-				position: relative;
+.tab {
+  display: inline-block;
+  padding: 12px 20px;
+  text-align: center;
+  color: #666;
+  transition: all 0.3s;
+  border-right: 1px solid $border-color;
+  min-width: 100px;
+}
 
-				&::after {
-					content: '';
-					position: absolute;
-					bottom: 0;
-					left: 0;
-					right: 0;
-					height: 2px;
-					background-color: $primary-color;
-				}
-			}
-		}
-	}
+.tab.active {
+  background-color: #fff;
+  color: $primary-color;
+  font-weight: bold;
+  position: relative;
+}
 
-	.section {
-		margin: 20px 0;
-		border: 1px solid $border-color;
-		border-radius: 4px;
+.tab.active::after {
+  content: '';
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  height: 2px;
+  background-color: $primary-color;
+}
 
-		&-header {
-			padding: 12px 16px;
-			background-color: $bg-color;
-			border-bottom: 1px solid $border-color;
-			font-weight: bold;
-		}
+.tab-content {
+  padding-top: 20px;
+}
 
-		&-body {
-			padding: 16px;
-		}
-	}
+.section {
+  margin: 20px 0;
+  border: 1px solid $border-color;
+  border-radius: 4px;
 
-	.info-grid {
-		display: grid;
-		grid-template-columns: repeat(3, 1fr);
-		gap: 16px;
+  &-header {
+    padding: 12px 16px;
+    background-color: $bg-color;
+    border-bottom: 1px solid $border-color;
+    font-weight: bold;
+  }
 
-		.info-item {
-			margin-bottom: 12px;
+  &-body {
+    padding: 16px;
+  }
+}
 
-			.info-label {
-				color: #909399;
-				font-size: 14px;
-				margin-bottom: 4px;
-			}
+.info-grid {
+  display: grid;
+  grid-template-columns: repeat(3, 1fr);
+  gap: 16px;
 
-			.info-value {
-				color: #333;
-				font-weight: 500;
-			}
-		}
-	}
+  .info-item {
+    margin-bottom: 12px;
 
-	.input-group {
-		margin: 16px 0;
+    .info-label {
+      color: #909399;
+      font-size: 14px;
+      margin-bottom: 4px;
+    }
 
-		.input-wrapper {
-			display: flex;
-			gap: 12px;
+    .info-value {
+      color: #333;
+      font-weight: 500;
+    }
+  }
+}
 
-			.result-input {
-				flex: 1;
-				height: 45px;
-				padding: 0 12px;
-				border: 1px solid $border-color;
-				border-radius: 4px;
-				font-size: 14px;
-			}
+.input-group {
+  margin: 16px 0;
 
-			.upload-btn {
-				background-color: #909399;
-				color: #fff;
-				padding: 0 10px;
-				margin: 0;
-				//height: 40rpx;
-			}
-		}
-	}
+  .input-wrapper {
+    display: flex;
+    gap: 12px;
 
-	.table-container {
-		border: 1px solid $border-color;
-		border-radius: 4px;
-		margin-top: 20px;
+    .result-input {
+      flex: 1;
+      height: 45px;
+      padding: 0 12px;
+      border: 1px solid $border-color;
+      border-radius: 4px;
+      font-size: 14px;
+    }
 
-		.table-header {
-			display: flex;
-			background-color: $bg-color;
-			border-bottom: 1px solid $border-color;
+    .upload-btn {
+      background-color: #909399;
+      color: #fff;
+      padding: 0 10px;
+      margin: 0;
+    }
+  }
+}
 
-			.th {
-				flex: 1;
-				padding: 12px;
-				font-weight: bold;
-			}
-		}
+/* 绠�娲佽〃鏍兼牱寮� - 閫傚悎骞撮暱鐢ㄦ埛 */
+.simple-table-container {
+  margin: 20px 0;
+  border: 2px solid #ddd;
+  border-radius: 8px;
+  background: #fff;
+}
 
-		.table-row {
-			display: flex;
-			border-bottom: 1px solid $border-color;
-			padding: 12px;
+.simple-table-header {
+  padding: 15px 20px;
+  background: #f5f7fa;
+  border-bottom: 2px solid #ddd;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
 
-			&:last-child {
-				border-bottom: none;
-			}
+.simple-title {
+  font-size: 18px;
+  font-weight: bold;
+  color: #333;
+}
 
-			.td {
-				flex: 1;
-				display: flex;
-				align-items: center;
-			}
-		}
-	}
+.simple-status {
+  padding: 8px 16px;
+  border-radius: 6px;
+  font-size: 14px;
+  font-weight: bold;
+  background: #ffc107;
+  color: #333;
+}
 
-	.result-badge {
-		display: inline-block;
-		padding: 4px 8px;
-		border-radius: 4px;
-		font-size: 12px;
-		font-weight: bold;
+.simple-status.completed {
+  background: #28a745;
+  color: #fff;
+}
 
-		&.OK {
-			background-color: rgba($success-color, 0.1);
-			color: $success-color;
-		}
+.simple-table {
+  width: 100%;
+}
 
-		&.NG {
-			background-color: rgba($danger-color, 0.1);
-			color: $danger-color;
-		}
-	}
+.simple-header-row {
+  display: flex;
+  background: #e9ecef;
+  border-bottom: 2px solid #ddd;
+}
 
-	.action-buttons {
-		margin-top: 20px;
-		display: flex;
-		justify-content: flex-end;
-		gap: 12px;
+.simple-header-cell {
+  flex: 1;
+  padding: 15px 20px;
+  font-size: 16px;
+  font-weight: bold;
+  color: #333;
+  text-align: center;
+  border-right: 1px solid #ddd;
+}
 
-		.btn {
-			padding: 8px 20px;
-			border-radius: 4px;
+.simple-header-cell:first-child {
+  flex: 0 0 80px;
+}
 
-			&.primary-btn {
-				background-color: $primary-color;
-				color: #fff;
+.simple-header-cell:last-child {
+  border-right: none;
+  flex: 0 0 120px;
+}
 
-			}
+.simple-data-row {
+  display: flex;
+  border-bottom: 1px solid #ddd;
+}
 
-			&.cancel-btn {
-				background-color: #909399;
-				color: #fff;
-			}
-		}
-	}
+.simple-data-row:nth-child(even) {
+  background: #f8f9fa;
+}
 
-	.danger {
-		color: $danger-color;
-	}
+.simple-data-cell {
+  flex: 1;
+  padding: 15px 20px;
+  text-align: center;
+  border-right: 1px solid #ddd;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
 
-	.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;
-	}
+.simple-index {
+  flex: 0 0 80px;
+  font-size: 18px;
+  font-weight: bold;
+  color: #333;
+}
 
-	.popup {
-		background-color: #fff;
-		padding: 20px;
-		border: 1px solid #ccc;
-		box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
-		width: 68vw;
-		/* 璁剧疆瀹藉害涓鸿鍙e搴︾殑80% */
-		height: 25vh;
-		/* 璁剧疆楂樺害涓鸿鍙i珮搴︾殑80% */
-	}
+.simple-result {
+  text-align: left;
+  justify-content: flex-start;
+}
 
-	.updateBut {
-		background-color: #3498db;
-		color: white;
-	}
+.simple-action {
+  border-right: none;
+  flex: 0 0 120px;
+}
 
-	.input1 {
-		display: block;
-	}
+.simple-number-result {
+  display: flex;
+  align-items: center;
+  gap: 12px;
+  width: 100%;
+}
 
-	.input2 {
-		display: none;
-	}
+.result-value {
+  font-size: 20px;
+  font-weight: bold;
+  color: #333;
+}
 
-	/* 鍝嶅簲寮忚璁� */
-	@media (max-width: 500px) {
-		.input1 {
-			display: none;
-		}
+.result-unit {
+  font-size: 14px;
+  color: #666;
+}
 
-		.input2 {
-			display: block;
-		}
-	}
+.result-status {
+  padding: 6px 12px;
+  border-radius: 4px;
+  font-size: 14px;
+  font-weight: bold;
+  margin-left: auto;
+}
+
+.result-status.pass {
+  background: #d4edda;
+  color: #155724;
+  border: 1px solid #c3e6cb;
+}
+
+.result-status.fail {
+  background: #f8d7da;
+  color: #721c24;
+  border: 1px solid #f5c6cb;
+}
+
+.simple-status-result {
+  width: 100%;
+}
+
+.simple-status {
+  padding: 10px 20px;
+  border-radius: 6px;
+  font-size: 16px;
+  font-weight: bold;
+  text-align: center;
+  display: inline-block;
+}
+
+.simple-status.pass {
+  background: #28a745;
+  color: #fff;
+}
+
+.simple-status.fail {
+  background: #dc3545;
+  color: #fff;
+}
+
+.simple-btn {
+  padding: 10px 16px;
+  background: #007bff;
+  color: #fff;
+  border: none;
+  border-radius: 6px;
+  font-size: 14px;
+  font-weight: bold;
+  cursor: pointer;
+  min-width: 80px;
+}
+
+.simple-btn:active {
+  background: #0056b3;
+}
+
+// 鏂扮殑缁撴灉鏄剧ず鏍峰紡
+.result-display {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 100%;
+}
+
+// 鏁板瓧缁撴灉鏍峰紡
+.number-result {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  padding: 8px 12px;
+  border-radius: 8px;
+  min-width: 60px;
+  position: relative;
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+
+  &.number-pass {
+    background: linear-gradient(135deg, #e8f5e8, #f0f9f0);
+    border: 2px solid #67C23A;
+  }
+
+  &.number-fail {
+    background: linear-gradient(135deg, #fdeaea, #fef0f0);
+    border: 2px solid #F56C6C;
+  }
+
+  &.number-normal {
+    background: linear-gradient(135deg, #f5f7fa, #fafbfc);
+    border: 2px solid #909399;
+  }
+
+  .number-value {
+    font-size: 16px;
+    font-weight: bold;
+    color: #333;
+    margin-bottom: 2px;
+  }
+
+  .number-unit {
+    font-size: 10px;
+    color: #666;
+    margin-bottom: 4px;
+  }
+
+  .number-status {
+    position: absolute;
+    top: -4px;
+    right: -4px;
+    background: white;
+    border-radius: 50%;
+    width: 20px;
+    height: 20px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
+  }
+}
+
+// 鐘舵�佺粨鏋滄牱寮�
+.status-result {
+  display: flex;
+  align-items: center;
+  padding: 8px 16px;
+  border-radius: 20px;
+  font-weight: bold;
+  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
+  transition: all 0.3s ease;
+
+  &.status-pass {
+    background: linear-gradient(135deg, #67C23A, #85ce61);
+    color: white;
+  }
+
+  &.status-fail {
+    background: linear-gradient(135deg, #F56C6C, #f78989);
+    color: white;
+  }
+
+  .status-icon {
+    margin-right: 6px;
+    display: flex;
+    align-items: center;
+  }
+
+  .status-text {
+    font-size: 14px;
+    letter-spacing: 0.5px;
+  }
+
+  &:hover {
+    transform: translateY(-1px);
+    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
+  }
+}
+
+// 淇濈暀鍘熸湁鏍峰紡浣滀负澶囩敤
+.result-badge {
+  display: inline-block;
+  padding: 4px 8px;
+  border-radius: 4px;
+  font-size: 12px;
+  font-weight: bold;
+
+  &.OK {
+    background-color: rgba($success-color, 0.1);
+    color: $success-color;
+  }
+
+  &.NG {
+    background-color: rgba($danger-color, 0.1);
+    color: $danger-color;
+  }
+}
+
+.btn {
+  padding: 8px 20px;
+  border-radius: 4px;
+  font-size: 14px;
+  line-height: 1;
+
+  &.primary-btn {
+    background-color: $primary-color;
+    color: #fff;
+  }
+
+  &.danger-btn {
+    background-color: $danger-color;
+    color: #fff;
+  }
+
+  &.cancel-btn {
+    background-color: #909399;
+    color: #fff;
+  }
+}
+
+.danger {
+  color: $danger-color;
+}
+
+.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;
+}
+
+.popup {
+  background-color: #fff;
+  padding: 20px;
+  border-radius: 8px;
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
+  width: 80%;
+  max-width: 500px;
+
+  h3 {
+    margin-top: 0;
+    color: #2c3e50;
+    border-bottom: 1px solid #eee;
+    padding-bottom: 10px;
+  }
+
+  .form-group {
+    margin-bottom: 15px;
+    display: flex;
+    flex-direction: column;
+  }
+
+  .form-label {
+    margin-bottom: 5px;
+    font-weight: bold;
+  }
+
+  .form-input {
+    padding: 8px;
+    border: 1px solid #ddd;
+    border-radius: 4px;
+  }
+
+  .popup-buttons {
+    display: flex;
+    justify-content: flex-end;
+    gap: 10px;
+    margin-top: 20px;
+  }
+}
+
+.input1 {
+  display: block;
+}
+
+.input2 {
+  display: none;
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 500px) {
+  .input1 {
+    display: none;
+  }
+
+  .input2 {
+    display: block;
+  }
+
+  .info-grid {
+    grid-template-columns: repeat(2, 1fr);
+  }
+}
+
+@media (max-width: 768px) {
+  .info-grid {
+    grid-template-columns: repeat(2, 1fr);
+  }
+
+  .simple-table-header {
+    padding: 12px 16px;
+  }
+
+  .simple-title {
+    font-size: 16px;
+  }
+
+  .simple-header-cell,
+  .simple-data-cell {
+    padding: 12px 16px;
+    font-size: 14px;
+  }
+
+  .simple-index {
+    flex: 0 0 60px;
+  }
+
+  .simple-action {
+    flex: 0 0 100px;
+  }
+
+  .result-value {
+    font-size: 18px;
+  }
+}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3