From eaa506e57403d1b8502f16ca5dd6e82c347724d0 Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期四, 17 七月 2025 23:09:32 +0800 Subject: [PATCH] 优化QC模块样式统一和功能完善 --- pages/QC/SJ/List.vue | 716 ++++++++++++++++++++++++++++++----------------------------- 1 files changed, 365 insertions(+), 351 deletions(-) diff --git a/pages/QC/SJ/List.vue b/pages/QC/SJ/List.vue index ed8c960..6202f58 100644 --- a/pages/QC/SJ/List.vue +++ b/pages/QC/SJ/List.vue @@ -1,245 +1,113 @@ <template> - <view> + <view class="inspection-app"> <!-- 鍒锋柊椤甸潰鍚庣殑椤堕儴鎻愮ず妗� --> <view class="tips" :class="{ 'tips-ani': tipShow }">鍒锋柊鎴愬姛</view> - - <!-- 鎼滅储妗� --> - <view class="search-bar"> - <view class="search-bar-box"> - <!-- <image class="search-span" src="../../static/image/searchSpan.png"/> --> - <input type="text" value="" v-model="searchValue" placeholder="鐗╂枡缂栫爜 鐗╂枡鍚嶇О" class="search-text" maxlength="100" focus/> - <button @click="btnclicked" class="search-btn">鎼滅储</button> - </view> - </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+'&billNo='+item.billNo"> - <!-- 閫氳繃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.billNo"/> - </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.statusDate"/> - </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.SJ_MJ"/> - </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.line"/> - </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.caa015" /> - </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.cust" /> - </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.daa003"/> - </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.daa004"/> - </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.daa008"/> - </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.fName"/> - </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.statusUser"/> - </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.result"/> - </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+'&billNo='+item.billNo"> - <!-- 閫氳繃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.billNo"/> - </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.statusDate"/> - </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.SJ_MJ"/> - </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.line"/> - </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.caa015" /> - </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.cust" /> - </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.daa003"/> - </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.daa004"/> - </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.daa008"/> - </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.fName"/> - </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.statusUser"/> - </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.result"/> - </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})"> + {{items[0]}} + </button> + <button :class="['tab-button', current === 1 ? 'active' : '']" @click="onClickItem({currentIndex: 1})"> + {{items[1]}} + </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="badge normal" v-if="item.SJ_MJ">{{item.SJ_MJ}}</text> + <text class="card-title">妫�楠屽崟鍙�: {{item.billNo}}</text> + <text class="status pass" v-if="item.result === '鍚堟牸'">鍚堟牸</text> + <text class="status unqualified" v-if="item.result === '涓嶅悎鏍�'">涓嶅悎鏍�</text> + <text class="status pending" v-if="!item.result">寰呮楠�</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.daa003}}</text> + </view> + <view class="info-item"> + <text class="info-label">瑙勬牸鍨嬪彿</text> + <text class="info-content">{{item.daa004}}</text> + </view> + </view> + + <view class="info-row"> + <view class="info-item"> + <text class="info-label">浜х嚎</text> + <text class="info-content">{{item.line}}</text> + </view> + <view class="info-item"> + <text class="info-label">宸ュ崟鏁伴噺</text> + <text class="info-content highlight">{{item.daa008}}</text> + </view> + </view> + + <view class="info-row"> + <view class="info-item"> + <text class="info-label">閿�鍞鍗�</text> + <text class="info-content">{{item.caa015}}</text> + </view> + <view class="info-item"> + <text class="info-label">瀹㈡埛</text> + <text class="info-content">{{item.cust}}</text> + </view> + </view> + + <view class="meta-info"> + <text class="meta-item"> + <uni-icons type="calendar" size="14" color="#95a5a6"></uni-icons> + {{item.statusDate}} + </text> + <text class="meta-item"> + <uni-icons type="person" size="14" color="#95a5a6"></uni-icons> + 鍒涘缓浜�: {{item.fName}} + </text> + </view> + + <view class="meta-info" v-if="item.statusUser"> + <text class="meta-item"> + <uni-icons type="person" size="14" color="#95a5a6"></uni-icons> + 妫�楠屼汉: {{item.statusUser}} + </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> @@ -252,7 +120,11 @@ current: 0, data: [], tipShow: false ,// 鏄惁鏄剧ず椤堕儴鎻愮ず妗� - searchValue:'' + searchValue: '', + // ===== 鏂板鎼滅储鍔熻兘鐩稿叧鏁版嵁 ===== + optionsIndex: 0, // 褰撳墠閫夋嫨鐨勬煡璇㈡潯浠剁储寮� + options: ['宸ュ崟', '妫�楠屽崟鍙�', '浜х嚎', '鐗╂枡缂栫爜', '鐗╂枡鍚嶇О'], // 鏌ヨ鏉′欢閫夐」 + selectedField: 'daa001' // 褰撳墠閫夋嫨鐨勬煡璇㈠瓧娈碉紝榛樿涓哄伐鍗� }; }, onLoad() { @@ -260,20 +132,35 @@ this.init(); }, methods: { - //鎼滅储妗嗙偣鍑讳簨浠� - btnclicked() { - this.init(); - }, + // ===== 鏂板鏌ヨ鏉′欢閫夋嫨鏂规硶 ===== + onOptionsChange(e) { + this.optionsIndex = e.detail.value; + // 鏍规嵁閫夋嫨鐨勯�夐」璁剧疆鎼滅储瀛楁 + const fieldMap = { + 0: 'daa001', // 宸ュ崟 + 1: 'billNo', // 妫�楠屽崟鍙� + 2: 'line', // 浜х嚎 + 3: 'itemNo', // 鐗╂枡缂栫爜 + 4: 'daa003' // 鐗╂枡鍚嶇О(浜у搧鍚嶇О) + }; + this.selectedField = fieldMap[this.optionsIndex]; + }, + + //鎼滅储妗嗙偣鍑讳簨浠� + btnclicked() { + this.init(); + }, + init() { - - - //鑾峰彇鎼滅储鏉′欢鍐呭 - let SearchValue=this.searchValue; - + //鑾峰彇鎼滅储鏉′欢鍐呭 + let SearchValue = this.searchValue; + let result = "鏈畬鎴�"; if (this.current === 1) { result = "宸插畬鎴�"; } + + // ===== 淇敼鍚庣殑API璋冪敤锛屾坊鍔犳悳绱㈠瓧娈靛弬鏁� ===== //椤甸潰鍔犺浇鏃惰皟鐢ㄧ殑浜嬩欢 this.$post({ url: "/SJ/GetPage", @@ -282,7 +169,9 @@ limit: 20, statusUser: this.$loginInfo.account, result: result, - SearchValue:SearchValue + SearchValue: SearchValue, + selectedIndex: this.optionsIndex, // 鏂板锛氭悳绱㈡潯浠剁储寮� + searchField: this.selectedField // 鏂板锛氭悳绱㈠瓧娈靛悕 } }).then(res => { this.data = res.data.tbBillList; @@ -298,6 +187,11 @@ this.current = index.currentIndex; this.init(); } + }, + navigateToDetail(item) { + uni.navigateTo({ + url: 'Add?id=' + item.id + '&billNo=' + item.billNo + }); }, }, /** @@ -327,41 +221,225 @@ }; </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; +.badge { font-size: 12px; - background-color: #FFFFFF; - /* Adjust the font size as per your requirement */ + padding: 2px 6px; + border-radius: 10px; + margin-right: 8px; +} + +.badge.normal { + background-color: #3498db; + color: white; +} + +.status { + font-size: 12px; + 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; } .plus-button { @@ -371,7 +449,7 @@ width: 60px; height: 60px; border-radius: 50%; - background-color: #007bff; + background-color: #3498db; color: #ffffff; text-align: center; line-height: 59px; @@ -379,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 { @@ -408,81 +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; -} - - -// 鎼滅储妗� -.search-bar{ - width: 100%; - height: 80rpx; - margin-top: 2%; -} -.search-bar-box{ - display: flex; - margin: 0 auto; - width: 90vw; - height: 60rpx; - border:5rpx solid #00a8cc; - border-radius: 50rpx; -} -.search-span{ - width: 100rpx; - height: 56rpx; - margin-top: 6rpx; - margin-left: 30rpx; -} -.search-text{ - width: 100%; - margin-top: 10rpx; - margin-left: 20rpx; - font-size: 30rpx; - color: #7f7f81; -} -.search-btn{ - background-color: #00a8cc; /* Green */ - color: white; - text-align: center; - display: inline-block; - font-size: 35rpx; - width:100px; - height: 60rpx; - line-height: 65rpx; - border-radius: 30rpx; - letter-spacing: 3rpx; -} - -uni-button{ - margin: 0px; +@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