From 4606f230a2c64fef2f54f61a35e67acd087df51c Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期三, 30 七月 2025 08:56:56 +0800 Subject: [PATCH] 1111 --- pages/QC/OQC/Add.vue | 2 pages/QC/OQC/List.vue | 1009 ++++++++++++++++++++++++++++------------------------------ 2 files changed, 487 insertions(+), 524 deletions(-) diff --git a/pages/QC/OQC/Add.vue b/pages/QC/OQC/Add.vue index d62de86..c9263fb 100644 --- a/pages/QC/OQC/Add.vue +++ b/pages/QC/OQC/Add.vue @@ -116,7 +116,7 @@ <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> <view class="action-buttons"> <button class="btn btn-primary" @click="submitInspection">鎻愪氦</button> - <button class="btn btn-primary" @click="regenerate">鐢熸垚妫�楠岄」鐩�</button> + <button v-if="formData.fsubmit != 1" class="btn btn-primary" @click="regenerate">鐢熸垚妫�楠岄」鐩�</button> <button class="secondary-btn" @click="uploadImages">涓婁紶/鏌ョ湅鍥剧墖</button> <button class="btn btn-secondary" @click="addDefectDescription">娣诲姞涓嶅悎鏍兼弿杩�</button> </view> diff --git a/pages/QC/OQC/List.vue b/pages/QC/OQC/List.vue index fc5e94c..d1f79d9 100644 --- a/pages/QC/OQC/List.vue +++ b/pages/QC/OQC/List.vue @@ -1,478 +1,461 @@ <template> - <view class="page-container"> - <!-- 鍒锋柊鎻愮ず妗� --> - <view class="success-toast" :class="{ 'show': tipShow }"> - <view class="toast-icon">鉁�</view> - <text class="toast-text">鍒锋柊鎴愬姛</text> - </view> + <view class="page-container"> + <!-- 鍒锋柊鎻愮ず妗� --> + <view :class="{ 'show': tipShow }" class="success-toast"> + <view class="toast-icon">鉁�</view> + <text class="toast-text">鍒锋柊鎴愬姛</text> + </view> - <!-- 澶撮儴鍖哄煙 --> - <view class="header-section"> - <!-- 椤甸潰鏍囬 --> - <view class="page-header"> - <view class="header-content"> - <view class="title-section"> - <text class="page-title">OQC妫�楠屽崟</text> - <text class="page-subtitle">璐ㄩ噺妫�楠岀鐞�</text> - </view> - <view class="stats-badge"> - <text class="stats-number">{{ totalCount }}</text> - <text class="stats-label">鎬昏</text> - </view> - </view> - </view> + <!-- 澶撮儴鍖哄煙 --> + <view class="header-section"> + <!-- 椤甸潰鏍囬 --> + <view class="page-header"> + <view class="header-content"> + <view class="title-section"> + <text class="page-title">OQC妫�楠屽崟</text> + <text class="page-subtitle">璐ㄩ噺妫�楠岀鐞�</text> + </view> + <view class="stats-badge"> + <text class="stats-number">{{ totalCount }}</text> + <text class="stats-label">鎬昏</text> + </view> + </view> + </view> - <!-- 鎼滅储鏍� --> - <view class="search-section"> - <view class="search-container"> - <view class="search-input-wrapper"> - <uni-icons type="search" size="18" color="#94a3b8"></uni-icons> - <input class="search-input" type="text" v-model="searchValue" - @confirm="getInputValue" placeholder="鎼滅储鐗╂枡缂栫爜銆佺墿鏂欏悕绉般�佸垱寤轰汉鍛�..." /> - <view v-if="searchValue" class="clear-btn" @tap="clearSearch"> - <uni-icons type="clear" size="16" color="#94a3b8"></uni-icons> - </view> - </view> - <view class="filter-btn" @tap="toggleFilter"> - <uni-icons type="tune" size="18" color="#4f46e5"></uni-icons> - </view> - </view> - - <!-- 绛涢�夊櫒 --> - <view v-if="showFilter" class="filter-panel"> - <picker mode="selector" :range="searchOptions" v-model="selectedOption" @change="onPickerChange"> - <view class="filter-option"> - <text class="filter-label">绛涢�夋潯浠�</text> - <text class="filter-value">{{ searchOptions[selectedOption] }}</text> - <uni-icons type="arrowdown" size="14" color="#64748b"></uni-icons> - </view> - </picker> - </view> - </view> + <!-- 鎼滅储鏍忔牱寮� --> + <view class="search-bar"> + <view class="search-card"> + <picker v-model="selectedOption" :range="searchOptions" mode="selector" @change="onPickerChange"> + <view class="picker"> + {{ searchOptions[selectedOption] }} + </view> + </picker> + <input v-model="searchValue" class="search-input" placeholder="璇疯緭鍏ユ悳绱㈠��" type="text" + @keypress.enter="getInputValue"/> + <button class="search-btn" @click="getInputValue">鎼滅储</button> + </view> + </view> - <!-- 閫夐」鍗� --> - <view class="tab-section"> - <view class="custom-tabs"> - <view v-for="(item, index) in items" :key="index" - class="tab-item" :class="{ 'active': current === index }" - @tap="onClickItem({ currentIndex: index })"> - <text class="tab-text">{{ item }}</text> - <view class="tab-indicator" v-if="current === index"></view> - </view> - </view> - </view> - </view> + <!-- 閫夐」鍗� --> + <view class="tab-section"> + <view class="custom-tabs"> + <view v-for="(item, index) in items" :key="index" + :class="{ 'active': current === index }" class="tab-item" + @tap="onClickItem({ currentIndex: index })"> + <text class="tab-text">{{ item }}</text> + <view v-if="current === index" class="tab-indicator"></view> + </view> + </view> + </view> + </view> - <!-- 鍐呭鍖哄煙 --> - <view class="content-container"> - <view v-show="current === 0"> - <!-- 鍔犺浇鐘舵�� --> - <view v-if="isLoading" class="loading-state"> - <view class="loading-spinner"></view> - <text class="loading-text">鍔犺浇涓�...</text> - </view> - - <!-- 绌虹姸鎬� --> - <view v-else-if="data.length === 0" class="empty-state"> - <view class="empty-icon">馃搵</view> - <text class="empty-title">鏆傛棤妫�楠屽崟</text> - <text class="empty-desc">鐐瑰嚮鍙充笅瑙掓寜閽垱寤烘柊鐨勬楠屽崟</text> - </view> - - <!-- 妫�楠屽崟鍒楄〃 --> - <view v-else class="inspection-list"> - <view v-for="item in data" :key="item.id || item.releaseNo" - class="inspection-card" @tap="navigateToDetail(item)"> - - <!-- 鍗$墖澶撮儴 --> - <view class="card-header"> - <view class="header-left"> - <view class="inspection-number"> - <text class="number-label">妫�楠屽崟鍙�</text> - <text class="number-value">{{ item.releaseNo }}</text> - </view> - <view class="material-info"> - <text class="material-code">{{ item.itemNo }}</text> - <text class="material-name">{{ item.itemName || '鏈煡鐗╂枡' }}</text> - </view> - </view> - <view class="header-right"> - <view class="status-badge" - :class="{ - 'status-submitted': item.fsubmit == 1, - 'status-pending': item.fsubmit != 1 - }"> - <view class="status-dot"></view> - <text class="status-text">{{ item.fsubmit == 1 ? '宸叉彁浜�' : '寰呮彁浜�' }}</text> - </view> - </view> - </view> - - <!-- 妫�楠岀粨鏋滃尯鍩� --> - <view class="inspection-result"> - <view class="result-item"> - <view class="result-icon" - :class="{ + <!-- 鍐呭鍖哄煙 --> + <view class="content-container"> + <view v-show="current === 0"> + <!-- 鍔犺浇鐘舵�� --> + <view v-if="isLoading" class="loading-state"> + <view class="loading-spinner"></view> + <text class="loading-text">鍔犺浇涓�...</text> + </view> + + <!-- 绌虹姸鎬� --> + <view v-else-if="data.length === 0" class="empty-state"> + <view class="empty-icon">馃搵</view> + <text class="empty-title">鏆傛棤妫�楠屽崟</text> + <text class="empty-desc">鐐瑰嚮鍙充笅瑙掓寜閽垱寤烘柊鐨勬楠屽崟</text> + </view> + + <!-- 妫�楠屽崟鍒楄〃 --> + <view v-else class="inspection-list"> + <view v-for="item in data" :key="item.id || item.releaseNo" + class="inspection-card" @tap="navigateToDetail(item)"> + + <!-- 鍗$墖澶撮儴 --> + <view class="card-header"> + <view class="header-left"> + <view class="inspection-number"> + <text class="number-label">妫�楠屽崟鍙�</text> + <text class="number-value">{{ item.releaseNo }}</text> + </view> + <view class="material-info"> + <text class="material-code">{{ item.itemNo }}</text> + <text class="material-name">{{ item.itemName || '鏈煡鐗╂枡' }}</text> + </view> + </view> + <view class="header-right"> + <view :class="{ + 'status-submitted': item.fsubmit == 1, + 'status-pending': item.fsubmit != 1 + }" + class="status-badge"> + <view class="status-dot"></view> + <text class="status-text">{{ item.fsubmit == 1 ? '宸叉彁浜�' : '寰呮彁浜�' }}</text> + </view> + </view> + </view> + + <!-- 妫�楠岀粨鏋滃尯鍩� --> + <view class="inspection-result"> + <view class="result-item"> + <view :class="{ 'icon-pass': item.fcheckResu === '鍚堟牸', 'icon-fail': item.fcheckResu === '涓嶅悎鏍�', 'icon-pending': !item.fcheckResu || item.fcheckResu === '鏈楠�' - }"> - <text class="result-symbol">{{ - item.fcheckResu === '鍚堟牸' ? '鉁�' : - item.fcheckResu === '涓嶅悎鏍�' ? '鉁�' : '鈼�' - }}</text> - </view> - <view class="result-content"> - <text class="result-label">妫�楠岀粨鏋�</text> - <text class="result-value" - :class="{ + }" + class="result-icon"> + <text class="result-symbol">{{ + item.fcheckResu === '鍚堟牸' ? '鉁�' : + item.fcheckResu === '涓嶅悎鏍�' ? '鉁�' : '鈼�' + }} + </text> + </view> + <view class="result-content"> + <text class="result-label">妫�楠岀粨鏋�</text> + <text :class="{ 'value-pass': item.fcheckResu === '鍚堟牸', 'value-fail': item.fcheckResu === '涓嶅悎鏍�', 'value-pending': !item.fcheckResu || item.fcheckResu === '鏈楠�' - }"> - {{ item.fcheckResu || '鏈楠�' }} - </text> - </view> - </view> - - <view class="inspector-info"> - <text class="inspector-label">妫�楠屼汉</text> - <text class="inspector-name">{{ item.modify1By || '寰呭垎閰�' }}</text> - </view> - </view> - - <!-- 璇︾粏淇℃伅 --> - <view class="card-details"> - <view class="detail-grid"> - <view class="detail-item"> - <text class="detail-label">鍒涘缓鏃堕棿</text> - <text class="detail-value">{{ item.createDate }}</text> - </view> - <view class="detail-item"> - <text class="detail-label">鏁伴噺</text> - <text class="detail-value">{{ item.planQty }}</text> - </view> - <view class="detail-item"> - <text class="detail-label">鍒涘缓浜�</text> - <text class="detail-value">{{ item.createUser }}</text> - </view> - <view class="detail-item"> - <text class="detail-label">閫佹浜�</text> - <text class="detail-value">{{ item.fcheckUser || '-' }}</text> - </view> - </view> - </view> - - <!-- 鎿嶄綔鎸囩ず鍣� --> - <view class="action-indicator"> - <uni-icons type="arrowright" size="16" color="#94a3b8"></uni-icons> - </view> - </view> - </view> - </view> - <!-- 绗簩涓�夐」鍗″唴瀹� - 宸叉楠� --> - <view v-show="current === 1"> - <!-- 鍔犺浇鐘舵�� --> - <view v-if="isLoading" class="loading-state"> - <view class="loading-spinner"></view> - <text class="loading-text">鍔犺浇涓�...</text> - </view> - - <!-- 绌虹姸鎬� --> - <view v-else-if="data.length === 0" class="empty-state"> - <view class="empty-icon">鉁�</view> - <text class="empty-title">鏆傛棤宸叉楠屽崟鎹�</text> - <text class="empty-desc">瀹屾垚妫�楠岀殑鍗曟嵁灏嗘樉绀哄湪杩欓噷</text> - </view> - - <!-- 妫�楠屽崟鍒楄〃 --> - <view v-else class="inspection-list"> - <view v-for="item in data" :key="item.id || item.releaseNo" - class="inspection-card completed" @tap="navigateToDetail(item)"> - - <!-- 鍗$墖澶撮儴 --> - <view class="card-header"> - <view class="header-left"> - <view class="inspection-number"> - <text class="number-label">妫�楠屽崟鍙�</text> - <text class="number-value">{{ item.releaseNo }}</text> - </view> - <view class="material-info"> - <text class="material-code">{{ item.itemNo }}</text> - <text class="material-name">{{ item.itemName || '鏈煡鐗╂枡' }}</text> - </view> - </view> - <view class="header-right"> - <view class="status-badge status-completed"> - <view class="status-dot"></view> - <text class="status-text">宸插畬鎴�</text> - </view> - </view> - </view> - - <!-- 妫�楠岀粨鏋滃尯鍩� --> - <view class="inspection-result"> - <view class="result-item"> - <view class="result-icon" - :class="{ + }" + class="result-value"> + {{ item.fcheckResu || '鏈楠�' }} + </text> + </view> + </view> + + <view class="inspector-info"> + <text class="inspector-label">妫�楠屼汉</text> + <text class="inspector-name">{{ item.modify1By || '寰呭垎閰�' }}</text> + </view> + </view> + + <!-- 璇︾粏淇℃伅 --> + <view class="card-details"> + <view class="detail-grid"> + <view class="detail-item"> + <text class="detail-label">鍒涘缓鏃堕棿</text> + <text class="detail-value">{{ item.createDate }}</text> + </view> + <view class="detail-item"> + <text class="detail-label">鏁伴噺</text> + <text class="detail-value">{{ item.planQty }}</text> + </view> + <view class="detail-item"> + <text class="detail-label">鍒涘缓浜�</text> + <text class="detail-value">{{ item.createUser }}</text> + </view> + <view class="detail-item"> + <text class="detail-label">閫佹浜�</text> + <text class="detail-value">{{ item.fcheckUser || '-' }}</text> + </view> + </view> + </view> + + <!-- 鎿嶄綔鎸囩ず鍣� --> + <view class="action-indicator"> + <uni-icons color="#94a3b8" size="16" type="arrowright"></uni-icons> + </view> + </view> + </view> + </view> + <!-- 绗簩涓�夐」鍗″唴瀹� - 宸叉楠� --> + <view v-show="current === 1"> + <!-- 鍔犺浇鐘舵�� --> + <view v-if="isLoading" class="loading-state"> + <view class="loading-spinner"></view> + <text class="loading-text">鍔犺浇涓�...</text> + </view> + + <!-- 绌虹姸鎬� --> + <view v-else-if="data.length === 0" class="empty-state"> + <view class="empty-icon">鉁�</view> + <text class="empty-title">鏆傛棤宸叉楠屽崟鎹�</text> + <text class="empty-desc">瀹屾垚妫�楠岀殑鍗曟嵁灏嗘樉绀哄湪杩欓噷</text> + </view> + + <!-- 妫�楠屽崟鍒楄〃 --> + <view v-else class="inspection-list"> + <view v-for="item in data" :key="item.id || item.releaseNo" + class="inspection-card completed" @tap="navigateToDetail(item)"> + + <!-- 鍗$墖澶撮儴 --> + <view class="card-header"> + <view class="header-left"> + <view class="inspection-number"> + <text class="number-label">妫�楠屽崟鍙�</text> + <text class="number-value">{{ item.releaseNo }}</text> + </view> + <view class="material-info"> + <text class="material-code">{{ item.itemNo }}</text> + <text class="material-name">{{ item.itemName || '鏈煡鐗╂枡' }}</text> + </view> + </view> + <view class="header-right"> + <view class="status-badge status-completed"> + <view class="status-dot"></view> + <text class="status-text">宸插畬鎴�</text> + </view> + </view> + </view> + + <!-- 妫�楠岀粨鏋滃尯鍩� --> + <view class="inspection-result"> + <view class="result-item"> + <view :class="{ 'icon-pass': item.fcheckResu === '鍚堟牸', 'icon-fail': item.fcheckResu === '涓嶅悎鏍�' - }"> - <text class="result-symbol">{{ - item.fcheckResu === '鍚堟牸' ? '鉁�' : '鉁�' - }}</text> - </view> - <view class="result-content"> - <text class="result-label">鏈�缁堢粨鏋�</text> - <text class="result-value" - :class="{ + }" + class="result-icon"> + <text class="result-symbol">{{ + item.fcheckResu === '鍚堟牸' ? '鉁�' : '鉁�' + }} + </text> + </view> + <view class="result-content"> + <text class="result-label">鏈�缁堢粨鏋�</text> + <text :class="{ 'value-pass': item.fcheckResu === '鍚堟牸', 'value-fail': item.fcheckResu === '涓嶅悎鏍�' - }"> - {{ item.fcheckResu }} - </text> - </view> - </view> - - <view class="inspector-info"> - <text class="inspector-label">妫�楠屼汉</text> - <text class="inspector-name">{{ item.modify1By }}</text> - </view> - </view> - - <!-- 璇︾粏淇℃伅 --> - <view class="card-details"> - <view class="detail-grid"> - <view class="detail-item"> - <text class="detail-label">妫�楠屾椂闂�</text> - <text class="detail-value">{{ item.modify1Date }}</text> - </view> - <view class="detail-item"> - <text class="detail-label">鏁伴噺</text> - <text class="detail-value">{{ item.planQty }}</text> - </view> - <view class="detail-item"> - <text class="detail-label">鍒涘缓浜�</text> - <text class="detail-value">{{ item.createUser }}</text> - </view> - <view class="detail-item"> - <text class="detail-label">閫佹浜�</text> - <text class="detail-value">{{ item.fcheckUser || '-' }}</text> - </view> - </view> - </view> - - <!-- 鎿嶄綔鎸囩ず鍣� --> - <view class="action-indicator"> - <uni-icons type="arrowright" size="16" color="#94a3b8"></uni-icons> - </view> - </view> - </view> - </view> - </view> - - <!-- 娴姩鎿嶄綔鎸夐挳 --> - <view class="fab-container"> - <view class="fab-button" @tap="handleFabClick"> - <uni-icons type="plus" size="24" color="#ffffff"></uni-icons> - </view> - </view> - </view> + }" + class="result-value"> + {{ item.fcheckResu }} + </text> + </view> + </view> + + <view class="inspector-info"> + <text class="inspector-label">妫�楠屼汉</text> + <text class="inspector-name">{{ item.modify1By }}</text> + </view> + </view> + + <!-- 璇︾粏淇℃伅 --> + <view class="card-details"> + <view class="detail-grid"> + <view class="detail-item"> + <text class="detail-label">妫�楠屾椂闂�</text> + <text class="detail-value">{{ item.modify1Date }}</text> + </view> + <view class="detail-item"> + <text class="detail-label">鏁伴噺</text> + <text class="detail-value">{{ item.planQty }}</text> + </view> + <view class="detail-item"> + <text class="detail-label">鍒涘缓浜�</text> + <text class="detail-value">{{ item.createUser }}</text> + </view> + <view class="detail-item"> + <text class="detail-label">閫佹浜�</text> + <text class="detail-value">{{ item.fcheckUser || '-' }}</text> + </view> + </view> + </view> + + <!-- 鎿嶄綔鎸囩ず鍣� --> + <view class="action-indicator"> + <uni-icons color="#94a3b8" size="16" type="arrowright"></uni-icons> + </view> + </view> + </view> + </view> + </view> + + <!-- 娴姩鎿嶄綔鎸夐挳 --> + <view class="fab-container"> + <view class="fab-button" @tap="handleFabClick"> + <uni-icons color="#ffffff" size="24" type="plus"></uni-icons> + </view> + </view> + </view> </template> <script> - export default { - components: {}, - data() { - return { - items: ['鏈楠�', '宸叉楠�'], - current: 0, - data: [], - pageIndex: 1, - limit: 20, - totalPage: 0, - totalCount: 0, - noData: false, - isLoading: false, - tipShow: false, - searchOptions: ['鐗╂枡缂栫爜', '鐗╂枡鍚嶇О', '鍒涘缓浜哄憳'], - selectedOption: 0, - searchValue: '', - copiedText: '', - headerHeight: 0, - showFilter: false, // 鎺у埗绛涢�夐潰鏉挎樉绀� - }; - }, - onLoad() { - this.init(); - }, - onShow() { - // 椤甸潰鏄剧ず鏃跺埛鏂版暟鎹� - this.pageIndex = 1; - this.loadData(); - }, - methods: { - onPickerChange(e) { - this.selectedOption = e.detail.value; - }, - getInputValue() { - this.pageIndex = 1; // 鎼滅储鏃堕噸缃〉鐮� - this.loadData(); // 璋冪敤缁熶竴鐨勬暟鎹姞杞芥柟娉� - }, - loadData() { - let result = "鏈畬鎴�"; - if (this.current === 1) { - result = "宸插畬鎴�"; - } +export default { + components: {}, + data() { + return { + items: ['鏈楠�', '宸叉楠�'], + current: 0, + data: [], + pageIndex: 1, + limit: 20, + totalPage: 0, + totalCount: 0, + noData: false, + isLoading: false, + tipShow: false, + searchOptions: ['鐗╂枡缂栫爜', '鐗╂枡鍚嶇О', '鍒涘缓浜哄憳', '妫�楠屽崟鍙�'], + selectedOption: 0, + searchValue: '', + copiedText: '', + headerHeight: 0 + }; + }, + onLoad() { + this.init(); + }, + onShow() { + // 椤甸潰鏄剧ず鏃跺埛鏂版暟鎹� + this.pageIndex = 1; + this.loadData(); + }, + methods: { + onPickerChange(e) { + this.selectedOption = e.detail.value; + }, + getInputValue() { + this.pageIndex = 1; // 鎼滅储鏃堕噸缃〉鐮� + this.loadData(); // 璋冪敤缁熶竴鐨勬暟鎹姞杞芥柟娉� + }, + loadData() { + let result = "鏈畬鎴�"; + if (this.current === 1) { + result = "宸插畬鎴�"; + } - if (this.isLoading) return; + if (this.isLoading) return; - this.isLoading = true; + this.isLoading = true; - let userName = this.$loginInfo.account; - let url = "/MesOqcItemsDetect02/getPage"; // 榛樿璋冪敤getPage - let requestData = { - pageIndex: this.pageIndex, - limit: this.limit, - createUser: userName, - result: result - }; + let userName = this.$loginInfo.account; + let url = "/MesOqcItemsDetect02/getPage"; // 榛樿璋冪敤getPage + let requestData = { + pageIndex: this.pageIndex, + limit: this.limit, + createUser: userName, + result: result + }; - console.log("璇锋眰鍙傛暟:", requestData); - console.log("褰撳墠閫夐」鍗�:", this.current); - console.log("result鐘舵��:", result); + console.log("璇锋眰鍙傛暟:", requestData); + console.log("褰撳墠閫夐」鍗�:", this.current); + console.log("result鐘舵��:", result); - // 鍒ゆ柇鎼滅储妗嗘槸鍚︽湁鍊� - if (this.searchValue != null && this.searchValue.trim() !== '') { - // 鏍规嵁閫夋嫨鐨勬悳绱㈤�夐」璁剧疆鎼滅储鏉′欢 - switch (this.selectedOption) { - case 0: // 鐗╂枡缂栫爜 - requestData.itemNo = this.searchValue; - break; - case 1: // 鐗╂枡鍚嶇О - requestData.itemName = this.searchValue; - break; - case 2: // 鍒涘缓浜哄憳 - requestData.createUser = this.searchValue; - break; - } - } + // 鍒ゆ柇鎼滅储妗嗘槸鍚︽湁鍊� + if (this.searchValue != null && this.searchValue.trim() !== '') { + // 鏍规嵁閫夋嫨鐨勬悳绱㈤�夐」璁剧疆鎼滅储鏉′欢 + switch (this.selectedOption) { + case 0: // 鐗╂枡缂栫爜 + requestData.itemNo = this.searchValue; + break; + case 1: // 鐗╂枡鍚嶇О + requestData.itemName = this.searchValue; + break; + case 2: // 鍒涘缓浜哄憳 + requestData.createUser = this.searchValue; + break; + case 3: // 妫�楠屽崟鍙� + requestData.releaseNo = this.searchValue; + break; + } + requestData.searchIndex = this.selectedOption; + } - this.$post({ - url: url, - data: requestData - }).then(res => { - console.log("API杩斿洖瀹屾暣鏁版嵁:", JSON.stringify(res, null, 2)); - console.log("res缁撴瀯:", res); - console.log("res.data:", res.data); - console.log("res.totalCount:", res.totalCount); - - // 鏍规嵁鍝嶅簲鏍煎紡.json锛屾纭殑鏁版嵁缁撴瀯鏄細 - // res.data 鏄暟缁勶紝res.totalCount 鏄�绘暟 - let dataList = null; - let totalCount = 0; - - if (res.data && Array.isArray(res.data)) { - // 姝g‘鐨勬暟鎹粨鏋勶細data鏄暟缁� - dataList = res.data; - totalCount = res.totalCount || 0; - } else if (res.tbBillList) { - // 澶囩敤缁撴瀯锛堝吋瀹瑰叾浠栨帴鍙o級 - dataList = res.tbBillList; - totalCount = res.totalCount || 0; - } else { - console.error("鏃犳硶瑙f瀽鐨勬暟鎹粨鏋�:", res); - console.error("鏈熸湜鐨勫瓧娈� data (鏁扮粍) 涓嶅瓨鍦�"); - this.$showMessage("鏁版嵁鏍煎紡閿欒锛岃鑱旂郴鎶�鏈敮鎸�"); - this.isLoading = false; - return; - } - - console.log("瑙f瀽鍚庣殑dataList:", dataList); - console.log("dataList闀垮害:", dataList ? dataList.length : 0); - - if (this.pageIndex === 1) { - this.data = dataList || []; - } else { - if (dataList && dataList.length > 0) { - this.data = [...this.data, ...dataList]; - } - } - - console.log("澶勭悊鍚庣殑data:", this.data); - console.log("data闀垮害:", this.data.length); - - this.totalCount = totalCount; - this.totalPage = Math.ceil(this.totalCount / this.limit); + this.$post({ + url: url, + data: requestData + }).then(res => { + console.log("API杩斿洖瀹屾暣鏁版嵁:", JSON.stringify(res, null, 2)); + console.log("res缁撴瀯:", res); + console.log("res.data:", res.data); + console.log("res.totalCount:", res.totalCount); - this.noData = this.pageIndex >= this.totalPage; - this.isLoading = false; - }).catch((error) => { - console.error("API璇锋眰澶辫触:", error); - this.isLoading = false; - this.searchValue = ''; - this.$showMessage("璇锋眰澶辫触锛岃閲嶈瘯"); - }); - }, - init() { - this.loadData(); // 缁熶竴璋冪敤loadData鏂规硶 - }, - handleFabClick() { - uni.navigateTo({ - url: 'ScanCode' - }); - }, - onClickItem(index) { - if (this.current !== index.currentIndex) { - this.current = index.currentIndex; - this.data = []; - this.pageIndex = 1; - this.loadData(); // 閫夐」鍗″垏鎹㈡椂璋冪敤loadData - } - }, - copyText(text) { - uni.setClipboardData({ - data: text, - success: () => { - this.copiedText = text; - this.tipShow = true; - setTimeout(() => { - this.tipShow = false; - }, 1000); - } - }); - }, - // 鏂板鏂规硶 - navigateToDetail(item) { - uni.navigateTo({ - url: 'Add?id=' + item.id - }); - }, - toggleFilter() { - this.showFilter = !this.showFilter; - }, - clearSearch() { - this.searchValue = ''; - this.pageIndex = 1; - this.loadData(); - } - }, - onPullDownRefresh() { - this.pageIndex = 1; - this.loadData(); - this.tipShow = true; - uni.stopPullDownRefresh(); + // 鏍规嵁鍝嶅簲鏍煎紡.json锛屾纭殑鏁版嵁缁撴瀯鏄細 + // res.data 鏄暟缁勶紝res.totalCount 鏄�绘暟 + let dataList = null; + let totalCount = 0; - setTimeout(() => { - this.tipShow = false; - }, 1000); - }, - onReachBottom() { - if (this.noData || this.isLoading) return; - this.pageIndex++; - this.loadData(); // 涓婃媺鍔犺浇鏃惰皟鐢╨oadData - } - }; + if (res.data && Array.isArray(res.data)) { + // 姝g‘鐨勬暟鎹粨鏋勶細data鏄暟缁� + dataList = res.data; + totalCount = res.totalCount || 0; + } else if (res.tbBillList) { + // 澶囩敤缁撴瀯锛堝吋瀹瑰叾浠栨帴鍙o級 + dataList = res.tbBillList; + totalCount = res.totalCount || 0; + } else { + console.error("鏃犳硶瑙f瀽鐨勬暟鎹粨鏋�:", res); + console.error("鏈熸湜鐨勫瓧娈� data (鏁扮粍) 涓嶅瓨鍦�"); + this.$showMessage("鏁版嵁鏍煎紡閿欒锛岃鑱旂郴鎶�鏈敮鎸�"); + this.isLoading = false; + return; + } + + console.log("瑙f瀽鍚庣殑dataList:", dataList); + console.log("dataList闀垮害:", dataList ? dataList.length : 0); + + if (this.pageIndex === 1) { + this.data = dataList || []; + } else { + if (dataList && dataList.length > 0) { + this.data = [...this.data, ...dataList]; + } + } + + console.log("澶勭悊鍚庣殑data:", this.data); + console.log("data闀垮害:", this.data.length); + + this.totalCount = totalCount; + this.totalPage = Math.ceil(this.totalCount / this.limit); + + this.noData = this.pageIndex >= this.totalPage; + this.isLoading = false; + }).catch((error) => { + console.error("API璇锋眰澶辫触:", error); + this.isLoading = false; + this.searchValue = ''; + this.$showMessage("璇锋眰澶辫触锛岃閲嶈瘯"); + }); + }, + init() { + this.loadData(); // 缁熶竴璋冪敤loadData鏂规硶 + }, + handleFabClick() { + uni.navigateTo({ + url: 'ScanCode' + }); + }, + onClickItem(index) { + if (this.current !== index.currentIndex) { + this.current = index.currentIndex; + this.data = []; + this.pageIndex = 1; + this.loadData(); // 閫夐」鍗″垏鎹㈡椂璋冪敤loadData + } + }, + copyText(text) { + uni.setClipboardData({ + data: text, + success: () => { + this.copiedText = text; + this.tipShow = true; + setTimeout(() => { + this.tipShow = false; + }, 1000); + } + }); + }, + // 鏂板鏂规硶 + navigateToDetail(item) { + uni.navigateTo({ + url: 'Add?id=' + item.id + }); + }, + }, + onPullDownRefresh() { + this.pageIndex = 1; + this.loadData(); + this.tipShow = true; + uni.stopPullDownRefresh(); + + setTimeout(() => { + this.tipShow = false; + }, 1000); + }, + onReachBottom() { + if (this.noData || this.isLoading) return; + this.pageIndex++; + this.loadData(); // 涓婃媺鍔犺浇鏃惰皟鐢╨oadData + } +}; </script> <style> @@ -576,95 +559,71 @@ margin-top: 2px; } -/* 鎼滅储鍖哄煙 */ -.search-section { +/* 鎼滅储鏍忔牱寮� */ +.search-bar { margin-bottom: 16px; } -.search-container { - display: flex; - gap: 8px; - align-items: center; -} - -.search-input-wrapper { - flex: 1; - position: relative; +.search-card { display: flex; align-items: center; - background: #f8f8f8; - border: 1px solid #ddd; - border-radius: 8px; - padding: 0 12px; + background-color: white; + border-radius: 12px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); + height: 44px; } -.search-input-wrapper:focus-within { - border-color: #007AFF; - background: white; +.picker { + width: 120px; + height: 44px; + line-height: 44px; + text-align: center; + font-size: 14px; + color: #666; + border-right: 1px solid #e0e0e0; + white-space: nowrap; } .search-input { flex: 1; - height: 40px; - border: none; - background: transparent; + height: 44px; + line-height: 44px; font-size: 14px; color: #333; - margin-left: 8px; + padding: 0 12px; + border: none; outline: none; + background: transparent; } .search-input::placeholder { color: #999; } -.clear-btn { - padding: 4px; - cursor: pointer; -} - -.filter-btn { - width: 40px; - height: 40px; - background: #f0f0f0; - border: 1px solid #ddd; - border-radius: 8px; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; -} - -.filter-btn:active { - background: #e0e0e0; -} - -/* 绛涢�夐潰鏉� */ -.filter-panel { - margin-top: 8px; - background: white; - border: 1px solid #ddd; - border-radius: 8px; - padding: 12px; -} - -.filter-option { - display: flex; - justify-content: space-between; - align-items: center; - padding: 8px 0; - cursor: pointer; -} - -.filter-label { +.search-btn { + background: linear-gradient(135deg, #007AFF, #0056D6); + color: white; + text-align: center; font-size: 14px; - color: #666; + width: 80px; + height: 44px; + line-height: 44px; + border-radius: 0 12px 12px 0; + border: none; + cursor: pointer; + transition: all 0.3s; + box-shadow: 0 2px 6px rgba(0, 122, 255, 0.2); } -.filter-value { - font-size: 14px; - color: #333; - font-weight: 500; +.search-btn:hover { + background: linear-gradient(135deg, #0056D6, #004BB8); + transform: translateY(-1px); + box-shadow: 0 3px 8px rgba(0, 122, 255, 0.25); +} + +.search-btn:active { + transform: translateY(1px); + box-shadow: 0 1px 4px rgba(0, 122, 255, 0.15); } /* 閫夐」鍗� */ @@ -730,8 +689,12 @@ } @keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } } .loading-text { @@ -1049,30 +1012,30 @@ align-items: flex-start; gap: 12px; } - + .stats-badge { align-self: flex-end; } - + .search-container { flex-direction: column; gap: 8px; } - + .filter-btn { align-self: flex-end; } - + .detail-grid { grid-template-columns: 1fr; } - + .inspection-result { flex-direction: column; align-items: flex-start; gap: 12px; } - + .inspector-info { text-align: left; width: 100%; -- Gitblit v1.9.3