From d2b2e8ef7bafb702650a6d2269bee076f1da9a49 Mon Sep 17 00:00:00 2001
From: zjh <2207896513@qq.com>
Date: 星期三, 26 十一月 2025 18:47:58 +0800
Subject: [PATCH] 代码提交

---
 pages/QC/SJ/detail.vue |  601 ++++++++++++------------------------------------------
 1 files changed, 138 insertions(+), 463 deletions(-)

diff --git a/pages/QC/SJ/detail.vue b/pages/QC/SJ/detail.vue
index 3aa38be..5852394 100644
--- a/pages/QC/SJ/detail.vue
+++ b/pages/QC/SJ/detail.vue
@@ -7,13 +7,11 @@
     </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 class="tabs">
+      <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>
     </view>
 
     <view class="tab-content">
@@ -94,17 +92,17 @@
 
           <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 class="btn upload-btn" @click="chooseImage">
+                <uni-icons type="upload" size="16" color="#fff"></uni-icons>
+                涓婁紶/鏌ョ湅鍥剧墖
               </button>
               <button class="btn upload-btn" @click="saveRemarks">
-                <uni-icons color="#fff" size="16" type="compose"></uni-icons>
+                <uni-icons type="compose" size="16" color="#fff"></uni-icons>
                 澶囨敞
+              </button>
+              <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>
@@ -112,19 +110,19 @@
           <!-- 鍝嶅簲寮忚璁$殑绗簩涓緭鍏ョ粍 -->
           <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 class="btn upload-btn" @click="chooseImage">
+                <uni-icons type="upload" size="16" color="#fff"></uni-icons>
+                涓婁紶/鏌ョ湅鍥剧墖
               </button>
-              <button class="btn upload-btn" @click="saveRemarks">
-                <uni-icons color="#fff" size="16" type="compose"></uni-icons>
+              <button v-if="current" class="btn upload-btn" @click="saveRemarks">
+                <uni-icons type="compose" size="16" color="#fff"></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"
+              <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 v-if="(tableData.length < formData.levelNum) && current" class="btn primary-btn" @click="submit">淇濆瓨缁撴灉
               </button>
             </view>
           </view>
@@ -132,51 +130,27 @@
       </view>
 
       <!-- 缁撴灉琛ㄦ牸 -->
-      <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 v-if="tableData.length > 0" class="table-container">
+        <view class="table-header">
+          <view class="th">缂栧彿</view>
+          <view class="th">妫�楠岀粨鏋�</view>
+          <view class="th" v-if="current">鎿嶄綔</view>
         </view>
 
-        <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 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 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>
-
-              <!-- 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 class="td" v-if="current" >
+            <button v-if="!isNumber" class="btn danger-btn" @click="numberEdit(item)">
+              {{ editResult(item.fcheckResu) }}
+            </button>
+            <button v-if="isNumber" class="btn danger-btn" @click="toDetail(item)">
+              淇敼
+            </button>
           </view>
         </view>
       </view>
@@ -236,7 +210,8 @@
       remarks: "",
       remarksPopup: false,
       currentTab: 0,
-      tabs: []
+      tabs: [],
+      current: true // 鎺у埗鏄惁鍙紪杈�
     }
   },
   methods: {
@@ -480,6 +455,12 @@
         this.loadTabItems();
       })
     },
+    // 涓婁紶鍥剧墖
+    chooseImage() {
+      uni.navigateTo({
+        url: 'ImageItem?id=777' + this.formData.id + '&gid=' + this.gid
+      });
+    },
     saveRemarks() {
       this.remarksPopup = !this.remarksPopup;
       this.remarks = this.formData.remarks;
@@ -529,6 +510,7 @@
     this.billNo = params["billNo"];
     this.gid = params["gid"];
     this.currentTab = parseInt(params["index"] || 0);
+    this.current = params["current"] !== 'B'; // B琛ㄧず宸插畬鎴愮姸鎬侊紝涓嶅彲缂栬緫
 
     this.refreshResult();
     this.loadTabItems();
@@ -552,65 +534,53 @@
   padding: 20px;
   border-bottom: 1px solid $border-color;
   background: linear-gradient(90deg, #f0f7ff, #e1f0ff);
-  margin-bottom: 0; /* 璋冩暣锛屽洜涓轰笅闈㈡湁tab鏍� */
-}
 
-.header .title {
-  font-size: 24px;
-  color: #333;
-  margin-bottom: 10px;
-}
+  .title {
+    font-size: 24px;
+    color: #333;
+    margin-bottom: 10px;
+  }
 
-.header .order-number {
-  color: #666;
-  font-size: 14px;
-}
-
-/* 鏍囩鏍忔牱寮� */
-.tabs-container {
-  width: 100%;
-  position: relative;
-  background-color: $bg-color;
-  border-bottom: 1px solid $border-color;
+  .order-number {
+    color: #666;
+    font-size: 14px;
+  }
 }
 
 .tabs {
   display: flex;
-  white-space: nowrap;
-  overflow-x: auto;
-  scrollbar-width: none; /* Firefox */
-  -ms-overflow-style: none; /* IE and Edge */
-}
+  background-color: $bg-color;
+  border-bottom: 1px solid $border-color;
 
-.tabs::-webkit-scrollbar {
-  display: none; /* Chrome, Safari and Opera */
-}
+  .tab {
+    flex: 1;
+    text-align: center;
+    padding: 12px 0;
+    border-right: 1px solid $border-color;
+    color: #666;
+    transition: all 0.3s;
 
-.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;
-}
+    &:last-child {
+      border-right: none;
+    }
 
-.tab.active {
-  background-color: #fff;
-  color: $primary-color;
-  font-weight: bold;
-  position: relative;
-}
+    &.active {
+      background-color: #fff;
+      color: $primary-color;
+      font-weight: bold;
+      position: relative;
 
-.tab.active::after {
-  content: '';
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  height: 2px;
-  background-color: $primary-color;
+      &::after {
+        content: '';
+        position: absolute;
+        bottom: 0;
+        left: 0;
+        right: 0;
+        height: 2px;
+        background-color: $primary-color;
+      }
+    }
+  }
 }
 
 .tab-content {
@@ -676,289 +646,50 @@
       color: #fff;
       padding: 0 10px;
       margin: 0;
+      height: 45px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      border: none;
+      border-radius: 4px;
     }
   }
 }
 
-/* 绠�娲佽〃鏍兼牱寮� - 閫傚悎骞撮暱鐢ㄦ埛 */
-.simple-table-container {
-  margin: 20px 0;
-  border: 2px solid #ddd;
-  border-radius: 8px;
-  background: #fff;
-}
-
-.simple-table-header {
-  padding: 15px 20px;
-  background: #f5f7fa;
-  border-bottom: 2px solid #ddd;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-}
-
-.simple-title {
-  font-size: 18px;
-  font-weight: bold;
-  color: #333;
-}
-
-.simple-status {
-  padding: 8px 16px;
-  border-radius: 6px;
-  font-size: 14px;
-  font-weight: bold;
-  background: #ffc107;
-  color: #333;
-}
-
-.simple-status.completed {
-  background: #28a745;
-  color: #fff;
-}
-
-.simple-table {
-  width: 100%;
-}
-
-.simple-header-row {
-  display: flex;
-  background: #e9ecef;
-  border-bottom: 2px solid #ddd;
-}
-
-.simple-header-cell {
-  flex: 1;
-  padding: 15px 20px;
-  font-size: 16px;
-  font-weight: bold;
-  color: #333;
-  text-align: center;
-  border-right: 1px solid #ddd;
-}
-
-.simple-header-cell:first-child {
-  flex: 0 0 80px;
-}
-
-.simple-header-cell:last-child {
-  border-right: none;
-  flex: 0 0 120px;
-}
-
-.simple-data-row {
-  display: flex;
-  border-bottom: 1px solid #ddd;
-}
-
-.simple-data-row:nth-child(even) {
-  background: #f8f9fa;
-}
-
-.simple-data-cell {
-  flex: 1;
-  padding: 15px 20px;
-  text-align: center;
-  border-right: 1px solid #ddd;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.simple-index {
-  flex: 0 0 80px;
-  font-size: 18px;
-  font-weight: bold;
-  color: #333;
-}
-
-.simple-result {
-  text-align: left;
-  justify-content: flex-start;
-}
-
-.simple-action {
-  border-right: none;
-  flex: 0 0 120px;
-}
-
-.simple-number-result {
-  display: flex;
-  align-items: center;
-  gap: 12px;
-  width: 100%;
-}
-
-.result-value {
-  font-size: 20px;
-  font-weight: bold;
-  color: #333;
-}
-
-.result-unit {
-  font-size: 14px;
-  color: #666;
-}
-
-.result-status {
-  padding: 6px 12px;
+.table-container {
+  border: 1px solid $border-color;
   border-radius: 4px;
-  font-size: 14px;
-  font-weight: bold;
-  margin-left: auto;
-}
+  margin-top: 20px;
 
-.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;
+  .table-header {
     display: flex;
-    align-items: center;
-    justify-content: center;
-    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
-  }
-}
+    background-color: $bg-color;
+    border-bottom: 1px solid $border-color;
 
-// 鐘舵�佺粨鏋滄牱寮�
-.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;
+    .th {
+      flex: 1;
+      padding: 12px;
+      font-weight: bold;
+    }
   }
 
-  &.status-fail {
-    background: linear-gradient(135deg, #F56C6C, #f78989);
-    color: white;
-  }
-
-  .status-icon {
-    margin-right: 6px;
+  .table-row {
     display: flex;
-    align-items: center;
-  }
+    border-bottom: 1px solid $border-color;
+    padding: 12px;
 
-  .status-text {
-    font-size: 14px;
-    letter-spacing: 0.5px;
-  }
+    &:last-child {
+      border-bottom: none;
+    }
 
-  &:hover {
-    transform: translateY(-1px);
-    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
+    .td {
+      flex: 1;
+      display: flex;
+      align-items: center;
+    }
   }
 }
 
-// 淇濈暀鍘熸湁鏍峰紡浣滀负澶囩敤
 .result-badge {
   display: inline-block;
   padding: 4px 8px;
@@ -977,25 +708,25 @@
   }
 }
 
-.btn {
-  padding: 8px 20px;
-  border-radius: 4px;
-  font-size: 14px;
-  line-height: 1;
+.action-buttons {
+  margin-top: 20px;
+  display: flex;
+  justify-content: flex-end;
+  gap: 12px;
 
-  &.primary-btn {
-    background-color: $primary-color;
-    color: #fff;
-  }
+  .btn {
+    padding: 8px 20px;
+    border-radius: 4px;
 
-  &.danger-btn {
-    background-color: $danger-color;
-    color: #fff;
-  }
+    &.primary-btn {
+      background-color: $primary-color;
+      color: #fff;
+    }
 
-  &.cancel-btn {
-    background-color: #909399;
-    color: #fff;
+    &.cancel-btn {
+      background-color: #909399;
+      color: #fff;
+    }
   }
 }
 
@@ -1018,41 +749,17 @@
 .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;
+  border: 1px solid #ccc;
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
+  width: 68vw;
+  /* 璁剧疆瀹藉害涓鸿鍙e搴︾殑80% */
+  height: 25vh;
+  /* 璁剧疆楂樺害涓鸿鍙i珮搴︾殑80% */
+}
 
-  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;
-  }
+.updateBut {
+  background-color: #3498db;
+  color: white;
 }
 
 .input1 {
@@ -1075,38 +782,6 @@
 
   .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