From 983dddd66ab8a999544272089e8c0fc12370f356 Mon Sep 17 00:00:00 2001
From: wbc <2597324127@qq.com>
Date: 星期一, 08 十二月 2025 22:38:22 +0800
Subject: [PATCH] 通用界面,不良功能搬运至平板程序

---
 pages/QC/XJ/List.vue |  611 +++++++++++++++++++++++++++++++++----------------------
 1 files changed, 368 insertions(+), 243 deletions(-)

diff --git a/pages/QC/XJ/List.vue b/pages/QC/XJ/List.vue
index 78147a2..bf2e174 100644
--- a/pages/QC/XJ/List.vue
+++ b/pages/QC/XJ/List.vue
@@ -1,187 +1,104 @@
 <template>
-  <view>
+  <view class="inspection-app">
     <!-- 鍒锋柊椤甸潰鍚庣殑椤堕儴鎻愮ず妗� -->
     <view class="tips" :class="{ 'tips-ani': tipShow }">鍒锋柊鎴愬姛</view>
 
-    <view class="newsTab">
-      <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem" style-type="button"
-                             active-color="#87cefa" ></uni-segmented-control>
-      <view class="content">
-        <view v-show="current===0">
-          <!-- 鍩轰簬 uni-list 鐨勯〉闈㈠竷灞� -->
-          <uni-list>
-            <!-- to 灞炴�ф惡甯﹀弬鏁拌烦杞鎯呴〉闈紝褰撳墠鍙负鍙傝�� -->
-            <uni-list-item style="margin-top: 10px;background-color:#EFEFF4;border-radius: 5px;"
-                           class="list-item" direction="column" v-for="item in data" :key="item.id"
-                           :to="'Add?id='+item.id+'&releaseNo='+item.releaseNo">
-              <!-- 閫氳繃header鎻掓Ы瀹氫箟鍒楄〃鐨勬爣棰� -->
-              <template v-slot:header>
-                <view class="form-group uni-title" style="margin-bottom: 0;">
-                  <label class="form-label">妫�楠屽崟鍙�:</label>
-                  <input class="form-input" disabled="true" type="text" v-model="item.releaseNo"/>
-                </view>
-              </template>
-              <!-- 閫氳繃body鎻掓Ы瀹氫箟鍒楄〃鍐呭鏄剧ず -->
-              <template v-slot:body>
-                <view style="margin-top: 0;">
-                  <view class="uni-content">
-                    <view class="uni-title-sub uni-ellipsis-2">
-                      <view class="form-group">
-                        <label class="form-label lab">鍒涘缓鏃堕棿:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.createDate"/>
-                      </view>
-                    </view>
-                    <view class="uni-note" >
-                      <view class="form-group">
-                        <label class="form-label lab">鍒涘缓浜�:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.createBy"/>
-                      </view>
-                    </view>
-
-                    <view class="uni-title-sub uni-ellipsis-2">
-                      <view class="form-group">
-                        <label class="form-label lab">浜х嚎:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.daa020"/>
-                      </view>
-                    </view>
-
-                    <view class="uni-title-sub uni-ellipsis-2">
-                      <view class="form-group">
-                        <label class="form-label lab">鐗╂枡缂栫爜:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.itemNo"/>
-                      </view>
-                    </view>
-
-                    <view class="uni-title-sub uni-ellipsis-2">
-                      <view class="form-group">
-                        <label class="form-label">鐗╂枡鍚嶇О:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.itemName"/>
-                      </view>
-                    </view>
-
-                    <view class="uni-title-sub uni-ellipsis-2">
-                      <view class="form-group">
-                        <label class="form-label">瑙勬牸鍨嬪彿:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.itemModel"/>
-                      </view>
-                    </view>
-
-                    <view class="uni-title-sub uni-ellipsis-2">
-                      <view class="form-group">
-                        <label class="form-label">宸ュ崟鏁伴噺:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.planQty"/>
-                      </view>
-                    </view>
-
-                    <view class="uni-note" style="color: red">
-                      <view class="form-group">
-                        <label class="form-label lab">妫�楠屼汉:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.fcheckBy"/>
-                      </view>
-                    </view>
-                    <view class="uni-note" style="color: red">
-                      <view class="form-group">
-                        <label class="form-label lab">妫�娴嬬粨鏋�:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.fcheckResu"/>
-                      </view>
-                    </view>
-                  </view>
-                </view>
-              </template>
-            </uni-list-item>
-          </uni-list>
-          <!-- 閫氳繃 loadMore 缁勪欢瀹炵幇涓婃媺鍔犺浇鏁堟灉锛屽闇�鑷畾涔夋樉绀哄唴瀹癸紝鍙弬鑰冿細https://ext.dcloud.net.cn/plugin?id=29 -->
-          <!-- <uni-load-more v-if="loading || options.status === 'noMore' " :status="options.status" /> -->
-
-          <!-- <view class="fab" @click="handleFabClick">
-            <text class="fab-icon">+</text>
-          </view> -->
-          <view class="plus-button" @click="handleFabClick">
-            +
-          </view>
+    <!-- 椤堕儴绛涢�夊尯 -->
+    <view class="filter-section">
+      <view class="filter-controls">
+        <!-- 鏌ヨ鏉′欢閫夋嫨鍣� -->
+        <view class="dropdown-filter">
+          <picker @change="onOptionsChange" :value="optionsIndex" :range="options">
+            <view class="picker">{{options[optionsIndex]}}</view>
+          </picker>
         </view>
-        <view v-show="current===1">
-          <uni-list>
-            <!-- to 灞炴�ф惡甯﹀弬鏁拌烦杞鎯呴〉闈紝褰撳墠鍙负鍙傝�� -->
-            <uni-list-item  style="margin-top: 10px;background-color:#EFEFF4;border-radius:5px;"
-                class="list-item" direction="column" v-for="item in data" :key="item.id"
-                           :to="'Add?id='+item.id+'&releaseNo='+item.releaseNo">
-              <!-- 閫氳繃header鎻掓Ы瀹氫箟鍒楄〃鐨勬爣棰� -->
-              <template v-slot:header>
-                <view class="form-group uni-title" style="margin-bottom: 0;">
-                  <label class="form-label">妫�楠屽崟鍙�:</label>
-                  <input class="form-input" disabled="true" type="text" v-model="item.releaseNo"/>
-                </view>
-              </template>
-              <!-- 閫氳繃body鎻掓Ы瀹氫箟鍒楄〃鍐呭鏄剧ず -->
-              <template v-slot:body>
-                <view style="margin-top: 0;">
-                  <view class="uni-content">
-                    <view class="uni-title-sub uni-ellipsis-2">
-                      <view class="form-group">
-                        <label class="form-label lab">鍒涘缓鏃堕棿:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.createDate"/>
-                      </view>
-                    </view>
-                    <view class="uni-note" >
-                      <view class="form-group">
-                        <label class="form-label lab">鍒涘缓浜�:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.createBy"/>
-                      </view>
-                    </view>
-                    <view class="uni-title-sub uni-ellipsis-2">
-                      <view class="form-group">
-                        <label class="form-label lab">浜х嚎:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.daa020"/>
-                      </view>
-                    </view>
-
-                    <view class="uni-title-sub uni-ellipsis-2">
-                      <view class="form-group">
-                        <label class="form-label lab">鐗╂枡缂栫爜:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.itemNo"/>
-                      </view>
-                    </view>
-
-                    <view class="uni-title-sub uni-ellipsis-2">
-                      <view class="form-group">
-                        <label class="form-label">鐗╂枡鍚嶇О:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.itemName"/>
-                      </view>
-                    </view>
-
-                    <view class="uni-title-sub uni-ellipsis-2">
-                      <view class="form-group">
-                        <label class="form-label">瑙勬牸鍨嬪彿:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.itemModel"/>
-                      </view>
-                    </view>
-
-                    <view class="uni-title-sub uni-ellipsis-2">
-                      <view class="form-group">
-                        <label class="form-label">宸ュ崟鏁伴噺:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.planQty"/>
-                      </view>
-                    </view>
-                    <view class="uni-note" style="color: red">
-                      <view class="form-group">
-                        <label class="form-label lab">妫�楠屼汉:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.fcheckBy"/>
-                      </view>
-                    </view>
-                    <view class="uni-note" style="color: red">
-                      <view class="form-group">
-                        <label class="form-label lab">妫�娴嬬粨鏋�:</label>
-                        <input class="form-input" disabled="true" type="text" v-model="item.fcheckResu"/>
-                      </view>
-                    </view>
-                  </view>
-                </view>
-              </template>
-            </uni-list-item>
-          </uni-list>
+        
+        <!-- 鎼滅储妗� -->
+        <view class="search-container">
+          <input class="search-input" v-model="searchValue" :placeholder="'璇疯緭鍏�'+options[optionsIndex]" @confirm="btnclicked" />
+          <button class="search-button" @click="btnclicked">鎼滅储</button>
+        </view>
+        
+        <!-- 鐘舵�佸垏鎹㈡爣绛� -->
+        <view class="status-tabs">
+          <button :class="['tab-button', current === 0 ? 'active' : '']" @click="onClickItem({currentIndex: 0})">
+            鏈彁浜�({{unsubmittedCount}})
+          </button>
+          <button :class="['tab-button', current === 1 ? 'active' : '']" @click="onClickItem({currentIndex: 1})">
+            宸叉彁浜�({{submittedCount}})
+          </button>
         </view>
       </view>
+    </view>
+
+    <!-- 妫�楠屽崟鍒楄〃 -->
+    <view class="inspection-list">
+      <!-- 妫�楠屽崟鍗$墖 -->
+      <view class="inspection-card" v-for="item in data" :key="item.id" @click="navigateToDetail(item)">
+        <view class="card-header">
+          <text class="card-title">妫�楠屽崟鍙�: {{item.releaseNo}}</text>
+          <text class="status pass" v-if="item.fcheckResu === '鍚堟牸'">鍚堟牸</text>
+          <text class="status unqualified" v-if="item.fcheckResu === '涓嶅悎鏍�'">涓嶅悎鏍�</text>
+          <text class="status pending" v-if="!item.fcheckResu">寰呮楠�</text>
+        </view>
+
+        <view class="card-body">
+          <view class="info-row">
+            <view class="info-item">
+              <text class="info-label">鐗╂枡淇℃伅</text>
+              <text class="info-content">{{item.itemNo}}<br>{{item.itemName}}</text>
+            </view>
+            <view class="info-item">
+              <text class="info-label">瑙勬牸鍨嬪彿</text>
+              <text class="info-content">{{item.itemModel}}</text>
+            </view>
+          </view>
+
+          <view class="info-row">
+            <view class="info-item">
+              <text class="info-label">浜х嚎</text>
+              <text class="info-content">{{item.daa020}}</text>
+            </view>
+            <view class="info-item">
+              <text class="info-label">宸ュ崟鏁伴噺</text>
+              <text class="info-content highlight">{{item.planQty}}</text>
+            </view>
+          </view>
+
+          <view class="info-row">
+            <view class="info-item">
+              <text class="info-label">妫�楠屼汉</text>
+              <text class="info-content">{{item.fcheckBy}}</text>
+            </view>
+            <view class="info-item">
+              <text class="info-label">鍒涘缓浜�</text>
+              <text class="info-content">{{item.createBy}}</text>
+            </view>
+          </view>
+
+          <view class="meta-info">
+            <text class="meta-item">
+              <uni-icons type="calendar" size="14" color="#95a5a6"></uni-icons>
+              {{item.createDate}}
+            </text>
+            <text class="meta-item" v-if="item.fcheckResu">
+              <uni-icons type="checkmarkempty" size="14" color="#95a5a6"></uni-icons>
+              妫�娴嬬粨鏋�: {{item.fcheckResu}}
+            </text>
+          </view>
+        </view>
+
+        <view class="card-actions">
+          <button class="primary" @click.stop="navigateToDetail(item)">
+            {{current === 0 ? '寮�濮嬫楠�' : '鏌ョ湅璇︽儏'}}
+          </button>
+        </view>
+      </view>
+    </view>
+
+    <!-- 鏂板鎸夐挳 -->
+    <view class="plus-button" @click="handleFabClick">
+      +
     </view>
   </view>
 </template>
@@ -194,7 +111,15 @@
       items: ['鏈彁浜�', '宸叉彁浜�'],
       current: 0,
       data: [],
-      tipShow: false // 鏄惁鏄剧ず椤堕儴鎻愮ず妗�
+      tipShow: false, // 鏄惁鏄剧ず椤堕儴鎻愮ず妗�
+      searchValue: '',
+      // ===== 鏂板鎼滅储鍔熻兘鐩稿叧鏁版嵁 =====
+      optionsIndex: 0, // 褰撳墠閫夋嫨鐨勬煡璇㈡潯浠剁储寮�
+      options: ['宸ュ崟', '妫�楠屽崟鍙�', '浜х嚎', '鐗╂枡缂栫爜', '鐗╂枡鍚嶇О'], // 鏌ヨ鏉′欢閫夐」
+      selectedField: 'billNo', // 褰撳墠閫夋嫨鐨勬煡璇㈠瓧娈碉紝榛樿涓哄伐鍗�
+      // ===== 鏂板鏁伴噺缁熻鍙橀噺 =====
+      unsubmittedCount: 0, // 鏈彁浜ゆ暟閲�
+      submittedCount: 0 // 宸叉彁浜ゆ暟閲�
     };
   },
   onLoad() {
@@ -202,12 +127,37 @@
     this.init();
   },
   methods: {
+    // ===== 鏂板鏌ヨ鏉′欢閫夋嫨鏂规硶 =====
+    onOptionsChange(e) {
+      this.optionsIndex = e.detail.value;
+      // 鏍规嵁閫夋嫨鐨勯�夐」璁剧疆鎼滅储瀛楁
+      const fieldMap = {
+        0: 'billNo',     // 宸ュ崟
+        1: 'releaseNo',  // 妫�楠屽崟鍙�
+        2: 'daa020',     // 浜х嚎
+        3: 'itemNo',     // 鐗╂枡缂栫爜
+        4: 'itemName'    // 鐗╂枡鍚嶇О
+      };
+      this.selectedField = fieldMap[this.optionsIndex];
+    },
+    
+    //鎼滅储妗嗙偣鍑讳簨浠�
+    btnclicked() {
+      this.init();
+    },
+    
     init() {
-
+      //鑾峰彇鎼滅储鏉′欢鍐呭
+      let SearchValue = this.searchValue;
+      
       let result = "鏈畬鎴�";
       if (this.current === 1) {
         result = "宸插畬鎴�";
       }
+
+      // 鑾峰彇杞﹂棿鍜岀嚎浣撶瓫閫夋潯浠�
+      const departmentId = uni.getStorageSync('qc_filter_departmentId') || '';
+      const lineId = uni.getStorageSync('qc_filter_lineId') || '';
 
       //椤甸潰鍔犺浇鏃惰皟鐢ㄧ殑浜嬩欢
       this.$post({
@@ -216,10 +166,21 @@
           pageIndex: 1,
           limit: 20,
           createUser: this.$loginInfo.account,
-          result: result
+          result: result,
+          SearchValue: SearchValue,
+          selectedIndex: this.optionsIndex, // 鏂板锛氭悳绱㈡潯浠剁储寮�
+          searchField: this.selectedField,  // 鏂板锛氭悳绱㈠瓧娈靛悕
+          departmentId: departmentId,       // 鏂板锛氳溅闂碔D
+          lineId: lineId                     // 鏂板锛氱嚎浣揑D
         }
       }).then(res => {
         this.data = res.data.tbBillList;
+        // 璁剧疆鏁伴噺缁熻
+        if (this.current === 1) {
+          this.submittedCount = res.totalCount;
+        } else {
+          this.unsubmittedCount = res.totalCount;
+        }
       })
     },
     handleFabClick() {
@@ -233,6 +194,12 @@
         this.init();
       }
     },
+    navigateToDetail(item) {
+      uni.navigateTo({
+        url: 'Add?id=' + item.id + '&releaseNo=' + item.releaseNo
+      });
+    },
+
   },
   /**
    * 涓嬫媺鍒锋柊鍥炶皟鍑芥暟
@@ -261,41 +228,218 @@
 };
 </script>
 
-<style lang="scss">
-@import '@/common/uni-ui.scss';
-
-.uni-note {
-  margin-top: 0;
+<style scoped>
+/* 鍩虹鏍峰紡閲嶇疆 */
+.inspection-app {
+  padding: 10px;
+  background-color: #f5f7fa;
+  min-height: 100vh;
 }
 
-/* Set the input backgrounds to be gray */
-.form-input {
-  background-color: #f2f2f2; /* Or any other shade of gray you prefer */
+/* 椤堕儴绛涢�夊尯 */
+.filter-section {
+  margin-bottom: 24px;
 }
 
-/* Ensure automatic adaptation based on page size */
-.form-group {
+.filter-controls {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 10px;
+}
+
+/* 鏌ヨ鏉′欢閫夋嫨鍣� */
+.dropdown-filter {
+  min-width: 80px;
+  margin-right: 10px;
+}
+
+.picker {
+  padding: 8px 12px;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  background-color: white;
+  font-size: 14px;
+  min-width: 80px;
+}
+
+/* 鎼滅储妗嗘牱寮� */
+.search-container {
+  display: flex;
+  flex: 1;
+  margin-right: 10px;
+  height: 36px;
+  min-width: 200px;
+}
+
+.search-input {
+  flex: 1;
+  padding: 8px 12px;
+  border: 1px solid #ddd;
+  border-radius: 4px 0 0 4px;
+  font-size: 14px;
+  background-color: white;
+}
+
+.search-button {
+  padding: 0 12px;
+  border: 1px solid #3498db;
+  border-radius: 0 4px 4px 0;
+  background-color: #3498db;
+  color: white;
+  font-size: 14px;
+  margin: 0;
+}
+
+.status-tabs {
+  display: flex;
+  border-radius: 4px;
+  overflow: hidden;
+  background-color: #ecf0f1;
+  flex: 1;
+  min-width: 200px;
+}
+
+.tab-button {
+  padding: 0px 16px;
+  border: none;
+  background: none;
+  font-size: 14px;
+  transition: all 0.3s;
+  margin: 0;
+  height: 35px;
+  flex: 1;
+}
+
+.tab-button.active {
+  background-color: #3498db;
+  color: white;
+}
+
+/* 妫�楠屽崟鍒楄〃 */
+.inspection-list {
+  display: flex;
+  flex-direction: column;
+  gap: 20px;
+}
+
+/* 妫�楠屽崟鍗$墖 */
+.inspection-card {
+  background-color: white;
+  border-radius: 8px;
+  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
+  overflow: hidden;
+  transition: all 0.3s;
+}
+
+.card-header {
+  padding: 16px;
+  border-bottom: 1px solid #eee;
   display: flex;
   align-items: center;
 }
 
-.form-label {
-  margin-bottom: 0;
-  border-bottom: 1px solid #FFFFFF;
-  padding: 5px;
-  font-size: 12px;
-  width: 60px;
-  /* Adjust the font size as per your requirement */
+.card-title {
+  font-size: 16px;
+  font-weight: 600;
+  flex: 1;
+  margin: 0 8px;
 }
 
-.form-input {
-  flex: 1;
-  margin-bottom: 0;
-  border-bottom: 1px solid #c7c7c7;
-  padding: 5px;
+.status {
   font-size: 12px;
-  background-color: #FFFFFF;
-  /* Adjust the font size as per your requirement */
+  padding: 4px 8px;
+  border-radius: 4px;
+  font-weight: 500;
+}
+
+.status.pending {
+  background-color: #f39c12;
+  color: white;
+}
+
+.status.pass {
+  background-color: #00cd00;
+  color: white;
+}
+
+.status.unqualified {
+  background-color: #ff0000;
+  color: white;
+}
+
+.card-body {
+  padding: 16px;
+}
+
+.info-row {
+  display: flex;
+  margin-bottom: 12px;
+  gap: 16px;
+}
+
+.info-item {
+  flex: 1;
+}
+
+.info-label {
+  display: block;
+  font-size: 12px;
+  color: #7f8c8d;
+  margin-bottom: 4px;
+}
+
+.info-content {
+  font-size: 14px;
+  color: #2c3e50;
+  line-height: 1.5;
+}
+
+.highlight {
+  font-weight: 600;
+  color: #2c3e50;
+  font-size: 16px;
+}
+
+.meta-info {
+  display: flex;
+  gap: 16px;
+  font-size: 12px;
+  color: #95a5a6;
+  margin-top: 12px;
+}
+
+.meta-item {
+  display: flex;
+  align-items: center;
+  gap: 4px;
+}
+
+.card-actions {
+  padding: 12px 16px;
+  border-top: 1px solid #eee;
+  display: flex;
+  gap: 8px;
+}
+
+button {
+  padding: 8px 16px;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  background-color: white;
+  font-size: 14px;
+  transition: all 0.2s;
+  flex: 1;
+}
+
+button.primary {
+  background-color: #3498db;
+  color: white;
+  border-color: #2980b9;
+}
+
+button:hover {
+  transform: translateY(-1px);
+  box-shadow: 0 2px 8px rgba(0,0,0,0.15);
 }
 
 .plus-button {
@@ -305,7 +449,7 @@
   width: 60px;
   height: 60px;
   border-radius: 50%;
-  background-color: #007bff;
+  background-color: #3498db;
   color: #ffffff;
   text-align: center;
   line-height: 59px;
@@ -313,15 +457,6 @@
   cursor: pointer;
   z-index: 1000;
   margin-bottom: 35px;
-}
-
-page {
-  display: flex;
-  flex-direction: column;
-  box-sizing: border-box;
-  background-color: #efeff4;
-  min-height: 100%;
-  height: auto;
 }
 
 .tips {
@@ -342,36 +477,26 @@
   opacity: 1;
 }
 
-.content {
-  width: 100%;
+/* 鍝嶅簲寮忚璁� */
+@media (min-width: 768px) {
+  .inspection-list {
+    display: grid;
+    grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
+  }
+  
+  .info-row {
+    flex-direction: row;
+  }
 }
 
-.list-picture {
-  width: 100%;
-  height: 145px;
-}
-
-.thumb-image {
-  width: 100%;
-  height: 100%;
-}
-
-.ellipsis {
-  display: flex;
-  overflow: hidden;
-}
-
-.uni-ellipsis-1 {
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-}
-
-.uni-ellipsis-2 {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  display: -webkit-box;
-  -webkit-line-clamp: 2;
-  -webkit-box-orient: vertical;
+@media (min-width: 300px) {
+  .inspection-list {
+    display: grid;
+    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
+  }
+  
+  .info-row {
+    flex-direction: row;
+  }
 }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3