From 97af26e2ad64d7974367df80a900c1f680bd19c5 Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期三, 23 七月 2025 10:38:08 +0800 Subject: [PATCH] 首检,巡检,入库检 --- pages/QC/RKJ/List.vue | 643 +++++++++++++++++++++++++++++++-------------------------- 1 files changed, 347 insertions(+), 296 deletions(-) diff --git a/pages/QC/RKJ/List.vue b/pages/QC/RKJ/List.vue index 4e335c9..6ce3ffe 100644 --- a/pages/QC/RKJ/List.vue +++ b/pages/QC/RKJ/List.vue @@ -1,228 +1,95 @@ <template> - <view> + <view class="inspection-app"> <!-- 鍒锋柊椤甸潰鍚庣殑椤堕儴鎻愮ず妗� --> - <view class="tips" :class="{ 'tips-ani': tipShow }">鍒锋柊鎴愬姛</view> + <view :class="{ 'tips-ani': tipShow }" class="tips">鍒锋柊鎴愬姛</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-note"> - <view class="form-group"> - <label class="form-label lab">閫佹鎵规鍙�:</label> - <input class="form-input" disabled="true" type="text" v-model="item.billNo"/> - </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.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.daa015"/> - </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.colorName"/>--> - <!-- </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.quantity"/> - </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.bgr"/> - </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" style="margin-bottom: 5px;"> + <view class="status-tabs"> + <button :class="['tab-button', current === 0 ? 'active' : '']" + @click="onClickItem({currentIndex: 0})">鏈彁浜�({{ uncheckedCount }}) + </button> + <button :class="['tab-button', current === 1 ? 'active' : '']" + @click="onClickItem({currentIndex: 1})">{{ checkedCount }} + </button> </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-note"> - <view class="form-group"> - <label class="form-label lab">閫佹鎵规鍙�:</label> - <input class="form-input" disabled="true" type="text" v-model="item.billNo"/> - </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.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.daa015"/> - </view> - </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.colorName"/>--> - <!-- </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.quantity"/> - </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.bgr"/> - </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="filter-controls" style="margin-bottom: 5px;"> + <view class="search-container"> + <input v-model="searchValue" class="search-input" placeholder="璇疯緭鍏ユ楠屽崟鍙锋垨鐗╂枡缂栫爜" + @confirm="handleSearch"/> + <button class="search-button" @click="handleSearch">鎼滅储</button> </view> </view> </view> + <!-- 妫�楠屽崟鍒楄〃 --> + <view class="inspection-list"> + <!-- 妫�楠屽崟鍗$墖 --> + <view v-for="item in data" :key="item.id" class="inspection-card" + @click="navigateToDetail(item)"> + <view class="card-header"> + <view class="card-title">妫�楠屽崟鍙�: {{ item.releaseNo }}</view> + <view :class="{'status-pending': current === 0, 'status-pass': item.fcheckResu === '鍚堟牸', 'status-fail': item.fcheckResu === '涓嶅悎鏍�'}" + class="status"> + {{ current === 0 ? '鏈彁浜�' : (item.fcheckResu ? item.fcheckResu : '宸叉彁浜�') }} + </view> + </view> + <view class="card-body"> + <view class="info-row"> + <view class="info-item"> + <view class="info-label">閫佹鎵规鍙�</view> + <view class="info-content">{{ item.billNo }}</view> + </view> + <view class="info-item"> + <view class="info-label">鍒涘缓鏃堕棿</view> + <view class="info-content">{{ item.createDate }}</view> + </view> + </view> + + <view class="info-row"> + <view class="info-item"> + <view class="info-label">鐗╂枡淇℃伅</view> + <view class="info-content">{{ item.itemNo }} | {{ item.itemName }}</view> + </view> + </view> + + <view class="info-row"> + <view class="info-item"> + <view class="info-label">閫佹鏁伴噺</view> + <view class="info-content highlight">{{ item.quantity }}</view> + </view> + <view class="info-item"> + <view class="info-label">浜х嚎</view> + <view class="info-content">{{ item.lineNo }}</view> + </view> + </view> + + <view v-if="item.fcheckBy" class="info-row"> + <view class="info-item"> + <view class="info-label">妫�楠屼汉</view> + <view class="info-content">{{ item.fcheckBy }}</view> + </view> + </view> + + <view class="meta-info"> + <view class="meta-item">鍒涘缓浜�: {{ item.createBy }}</view> + </view> + </view> + + <view class="card-actions"> + <button class="primary">{{ current === 0 ? '缁х画妫�楠�' : '鏌ョ湅璇︽儏' }}</button> + </view> + </view> + </view> + + <!-- 娣诲姞鎸夐挳 --> + <view v-if="current === 0" class="plus-button" @click="handleFabClick"> + <view class="plus-icon">+</view> + </view> </view> </template> @@ -234,13 +101,16 @@ items: ['鏈彁浜�', '宸叉彁浜�'], current: 0, data: [], + tipShow: false, // 鏄惁鏄剧ず椤堕儴鎻愮ず妗� + uncheckedCount: 0, + checkedCount: '宸叉彁浜�', + searchValue: '', pageIndex: 1, limit: 20, totalPage: 0, totalCount: 0, noData: false, // 娌℃湁鏇村鏁版嵁浜� isLoading: false, // 鏄惁姝e湪鍔犺浇 - tipShow: false }; }, onLoad() { @@ -249,9 +119,8 @@ }, methods: { init() { - let result = "鏈畬鎴�"; - if (this.current == 1) { + if (this.current === 1) { result = "宸插畬鎴�"; } @@ -266,25 +135,32 @@ pageIndex: this.pageIndex, limit: this.limit, createUser: this.$loginInfo.account, - result: result + result: result, + searchValue: this.searchValue } }).then(res => { if (this.pageIndex === 1) { // 濡傛灉鏄涓�椤碉紝鐩存帴瑕嗙洊鍘熸暟鎹� this.data = res.data.tbBillList; } else { - if (res.data.tbBillList.length > 0) { // 濡傛灉鏄笅涓�椤碉紝杩藉姞鏂版暟鎹� this.data = [...this.data, ...res.data.tbBillList]; } - } - this.totalCount = res.data.totalCount; + + this.totalCount = res.totalCount; this.totalPage = Math.ceil(this.totalCount / this.limit); this.noData = this.pageIndex >= this.totalPage; this.isLoading = false; // 缁撴潫鍔犺浇 + + // 鏇存柊璁℃暟 + if (this.current === 1) { + this.checkedCount = '宸叉彁浜わ紙' + this.totalCount + '锛�'; + } else { + this.uncheckedCount = this.totalCount; + } }).catch(() => { this.isLoading = false; // 鍑虹幇閿欒鏃剁粨鏉熷姞杞� }); @@ -302,19 +178,30 @@ this.init(); } }, + handleSearch() { + this.pageIndex = 1; + this.data = []; + this.init(); + }, + navigateToDetail(item) { + uni.navigateTo({ + url: 'Add?id=' + item.id + '&releaseNo=' + item.releaseNo + }); + } }, /** * 涓嬫媺鍒锋柊鍥炶皟鍑芥暟 */ onPullDownRefresh() { this.pageIndex = 1; + this.data = []; //閲嶆柊鎵ц涓�閬嶆煡璇� this.init(); this.tipShow = true; //鍏抽棴鍔ㄧ敾 uni.stopPullDownRefresh(); - setTimeout(function () { + setTimeout(() => { this.tipShow = false; }, 3000); }, @@ -330,76 +217,223 @@ //姣忔杩涘叆椤甸潰閮戒細鎵ц鐨勬柟娉� this.pageIndex = 1; this.data = []; - //this.current = 0 this.init(); } }; </script> -<style lang="scss"> -@import '@/common/uni-ui.scss'; - -.uni-note { - margin-top: 0; +<style> +/* 鍩虹鏍峰紡閲嶇疆 */ +.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 { +/* 鏂板鎼滅储妗嗘牱寮� */ +.search-container { + display: flex; + flex: 1; + margin: 0 10px; + height: 36px; + /* 涓庡叾浠栨帶浠堕珮搴︿竴鑷� */ +} + +.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; +} + +.filter-controls { + display: flex; + flex-wrap: wrap; + gap: 5px; +} + +.dropdown-filter { + min-width: 70px; +} + +.filter-label { + font-size: 14px; + color: #7f8c8d; +} + +.picker { + padding: 8px 12px; + border: 1px solid #ddd; + border-radius: 4px; + background-color: white; + font-size: 14px; + min-width: 120px; +} + +.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; +} + +.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: 80px; - /* Adjust the font size as per your requirement */ -} - -.form-input { +.card-title { + font-size: 16px; + font-weight: 600; flex: 1; - margin-bottom: 0; - border-bottom: 1px solid #c7c7c7; - padding: 5px; + margin: 0 8px; +} + +.status { font-size: 12px; - background-color: #FFFFFF; - /* Adjust the font size as per your requirement */ + padding: 4px 8px; + border-radius: 4px; + font-weight: 500; } -.plus-button { - position: fixed; - bottom: 20px; - right: 20px; - width: 60px; - height: 60px; - border-radius: 50%; - background-color: #007bff; - color: #ffffff; - text-align: center; - line-height: 59px; - font-size: 24px; - cursor: pointer; - z-index: 1000; - margin-bottom: 35px; +.status-pending { + background-color: #f39c12; + color: white; } -page { +.status-pass { + background-color: #00cd00; + color: white; +} + +.status-fail { + background-color: #ff0000; + color: white; +} + +.card-body { + padding: 16px; +} + +.info-row { display: flex; - flex-direction: column; - box-sizing: border-box; - background-color: #efeff4; - min-height: 100%; - height: auto; + 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; +} + +/* 鍒锋柊鎻愮ず鏍峰紡 */ .tips { color: #67c23a; font-size: 14px; @@ -418,36 +452,53 @@ opacity: 1; } -.content { - width: 100%; +/* 鍔犲彿鎸夐挳鏍峰紡 */ +.plus-button { + position: fixed; + bottom: 20px; + right: 20px; + width: 60px; + height: 60px; + border-radius: 50%; + background-color: #3498db; + color: #ffffff; + text-align: center; + line-height: 59px; + font-size: 24px; + cursor: pointer; + z-index: 1000; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); } -.list-picture { - width: 100%; - height: 145px; +/* 鍝嶅簲寮忚璁� */ +@media (min-width: 768px) { + .inspection-list { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(400px, 1fr)); + } + + .info-row { + flex-direction: row; + } } -.thumb-image { - width: 100%; - height: 100%; -} +@media (min-width: 300px) { + .inspection-list { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + } -.ellipsis { - display: flex; - overflow: hidden; -} + .info-row { + flex-direction: row; + } -.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; + .picker { + padding: 8px 12px; + border: 1px solid #ddd; + border-radius: 4px; + background-color: white; + font-size: 14px; + min-width: 10px; + } } </style> \ No newline at end of file -- Gitblit v1.9.3