From fca192d3c38c5dcfbb6ace8bc71d6078f6a079b2 Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期日, 20 七月 2025 18:09:06 +0800 Subject: [PATCH] LLJ附件系统全面优化:多格式文件预览与APK兼容性 --- pages/QC/SJ/detail.vue | 1416 +++++++++++++++++++++++++++++++--------------------------- 1 files changed, 752 insertions(+), 664 deletions(-) diff --git a/pages/QC/SJ/detail.vue b/pages/QC/SJ/detail.vue index 2cde35f..5cd7f31 100644 --- a/pages/QC/SJ/detail.vue +++ b/pages/QC/SJ/detail.vue @@ -1,751 +1,839 @@ <template> - <view class="container"> - <!-- 澶撮儴 --> - <view class="header"> - <view class="title">棣栨妫�楠岄」鐩槑缁�</view> - <view class="order-number">褰撳墠妫�楠屽崟鍙�: {{releaseNo}}</view> - </view> + <view class="container"> + <!-- 澶撮儴 --> + <view class="header"> + <view class="title">棣栨椤圭洰鏄庣粏</view> + <view class="order-number">棣栨鍗曞彿: {{formData.billNo}}</view> + </view> - <!-- 鏍囩鏍� --> - <view class="tabs"> - <view v-for="(tab, index) in tabs" :key="index" class="tab" :class="{active: currentTab === index}" - @tap="switchTab(index,tab.id)"> - {{ tab.projName }} - </view> - </view> - <view class="tab-content"> - <!-- 鍩烘湰淇℃伅 --> - <view class="section"> - <view class="section-header">鍩烘湰淇℃伅</view> - <view class="section-body"> - <view class="info-grid"> - <view class="info-item"> - <view class="info-label">椤圭洰鍚嶇О</view> - <view class="info-value">{{ formData.projName }}</view> - </view> - <view class="info-item"> - <view class="info-label">浣跨敤浠〃</view> - <view class="info-value">{{ formData.usingInstruments }}</view> - </view> - <view class="info-item"> - <view class="info-label">妫�楠屾暟閲�</view> - <view class="info-value">{{ formData.levelNum }}</view> - </view> + <!-- 鏍囩鏍� - 濡傛灉鏈夊涓楠岄」鐩彲浠ュ垏鎹� --> + <view class="tabs" v-if="tabs && tabs.length > 1"> + <view v-for="(tab, index) in tabs" :key="index" class="tab" :class="{active: currentTab === index}" + @tap="switchTab(index, tab.id)"> + {{ tab.projName }} + </view> + </view> + + <view class="tab-content"> + <!-- 鍩烘湰淇℃伅 --> + <view class="section"> + <view class="section-header">鍩烘湰淇℃伅</view> + <view class="section-body"> + <view class="info-grid"> + <view class="info-item"> + <view class="info-label">椤圭洰鍚嶇О</view> + <view class="info-value">{{ formData.projName }}</view> + </view> + <view class="info-item" v-if="formData.itemMod"> + <view class="info-label">璐ㄩ噺瑕佹眰</view> + <view class="info-value">{{ formData.itemMod }}</view> + </view> + <view class="info-item" v-if="formData.inspectionMethod"> + <view class="info-label">妫�楠屾柟娉�</view> + <view class="info-value">{{ formData.inspectionMethod }}</view> + </view> + <view class="info-item" v-if="formData.usingInstruments"> + <view class="info-label">浣跨敤浠〃</view> + <view class="info-value">{{ formData.usingInstruments }}</view> + </view> + <view class="info-item"> + <view class="info-label">妫�楠屾暟</view> + <view class="info-value">{{ formData.levelNum }}</view> + </view> + <view class="info-item" v-if="formData.minValue"> + <view class="info-label">涓嬮檺</view> + <view class="info-value">{{ formData.minValue }}</view> + </view> + <view class="info-item" v-if="formData.standardValue"> + <view class="info-label">鏍囧噯鍊�</view> + <view class="info-value">{{ formData.standardValue }}</view> + </view> + <view class="info-item" v-if="formData.maxValue"> + <view class="info-label">涓婇檺</view> + <view class="info-value">{{ formData.maxValue }}</view> + </view> + <view class="info-item" v-if="formData.updater"> + <view class="info-label">鏇存柊浜�</view> + <view class="info-value">{{ formData.updater }}</view> + </view> + <view class="info-item" v-if="formData.updateTime"> + <view class="info-label">鏇存柊鏃堕棿</view> + <view class="info-value">{{ formData.updateTime }}</view> + </view> + </view> + </view> + </view> - <view v-if="formData.minValue!=null" class="info-item"> - <view class="info-label">涓嬮檺</view> - <view class="info-value">{{ formData.minValue }}</view> - </view> - <view v-if="formData.standardValue!=null" class="info-item"> - <view class="info-label">鏍囧噯鍊�</view> - <view class="info-value">{{ formData.standardValue }}</view> - </view> - <view v-if="formData.maxValue!=null" class="info-item"> - <view class="info-label">涓婇檺</view> - <view class="info-value">{{ formData.maxValue }}</view> - </view> - </view> - </view> - </view> + <!-- 瑙勬牸瑕佹眰 --> + <view class="section" v-if="formData.specRequ"> + <view class="section-header">瑙勬牸瑕佹眰</view> + <view class="section-body"> + <text class="spec-text">{{ formData.specRequ }}</text> + </view> + </view> - <!-- 瑙勬牸瑕佹眰 --> - <view class="section"> - <view class="section-header">璐ㄩ噺瑕佹眰</view> - <view class="section-body"> - <text class="spec-text">{{ formData.itemMod }}</text> - </view> - </view> - <!-- 瑙勬牸瑕佹眰 --> - <view class="section"> - <view class="section-header">妫�楠屾弿杩�</view> - <view class="section-body"> - <text class="spec-text">{{ formData.inspectionMethod }}</text> - </view> - </view> - <!-- 妫�楠岀粨鏋� --> - <view class="section"> - <view class="section-header">妫�楠岀粨鏋�</view> - <view class="section-body"> - <view v-if="formData.result!=null" class="result-preview"> - <view class="info-label">棰勮缁撴灉</view> - <view class="info-value"><b>{{formData.result}}</b></view> - </view> + <!-- 妫�楠屾弿杩� --> + <view class="section" v-if="formData.itemMod"> + <view class="section-header">妫�楠屾弿杩�</view> + <view class="section-body"> + <text class="spec-text">{{ formData.itemMod }}</text> + </view> + </view> - <view v-if="formData.remarks!=null" class="result-ng"> - <view class="info-label">涓嶈壇鎻忚堪</view> - <view class="info-value danger">{{formData.remarks}}</view> - </view> - </view> - </view> + <!-- 妫�楠岀粨鏋� --> + <view class="section"> + <view class="section-header">妫�楠岀粨鏋�</view> + <view class="section-body"> + <view class="info-grid"> + <view class="info-item" v-if="formData.result"> + <view class="info-label">棰勮缁撴灉</view> + <view class="info-value">{{formData.result}}</view> + </view> + </view> - <!-- 缁撴灉褰曞叆 --> - <view class="section"> - <view class="section-header">妫�楠岀粨鏋滃綍鍏�</view> - <view class="section-body"> - <view class="input-group input1"> - <view class="input-wrapper"> + <view v-if="formData.result != null" class="result-preview"> + <view class="info-label">棰勮缁撴灉</view> + <view class="info-value">{{formData.result}}</view> + </view> - <button class="btn upload-btn" @tap="chooseImage"> - <uni-icons type="upload" size="16" color="#fff"></uni-icons> - 涓婁紶/鏌ョ湅鍥剧墖 - </button> - <button v-if="this.current" class="btn upload-btn" @tap="upRemarks"> - <uni-icons type="compose" size="16" color="#fff"></uni-icons> - 涓嶈壇鎻忚堪 - </button> - <input v-if="(tableData.length < formData.levelNum)" @input="search($event)" - v-model="inputTxt" type="text" class="result-input" placeholder="璇疯緭鍏ユ楠岀粨鏋�..." - placeholder-class="placeholder" /> - <button v-if="(tableData.length < formData.levelNum)" - style="margin: 0px;background-color: #3498db;color:#ffffff ;" class="btn primary-btn" - @tap="saveResult">淇濆瓨缁撴灉</button> - </view> - </view> + <view v-if="formData.remarks != null" class="result-ng"> + <view class="info-label">涓嶅悎鏍兼弿杩�</view> + <view class="info-value danger">{{formData.remarks}}</view> + </view> + </view> + </view> - <view class="input-group input2"> - <view class="input-wrapper"> + <!-- 缁撴灉褰曞叆 --> + <view class="section"> + <view class="section-header">妫�楠岀粨鏋滃綍鍏�</view> + <view class="section-body"> + <view class="input-group"> + <view class="input-wrapper"> + <button class="btn upload-btn" @tap="saveRemarks"> + <uni-icons type="compose" size="16" color="#fff"></uni-icons> + 涓嶅悎鏍兼弿杩� + </button> + + <input v-if="tableData.length < formData.levelNum" + v-model="formData.fcheckResu" + type="text" + class="result-input" + placeholder="娌℃湁鏈�澶у�煎拰鏈�灏忓�兼椂濉啓0锛堟湭閫氳繃妫�楠岋級鎴�1锛堥�氳繃妫�楠岋級" + placeholder-class="placeholder" /> + <button v-if="(tableData.length < formData.levelNum)" + style="margin: 0px;background-color: #3498db;color:#ffffff ;" class="btn primary-btn" + @tap="submit">淇濆瓨缁撴灉</button> + </view> + </view> + </view> + </view> - <button class="btn upload-btn" @tap="chooseImage"> - <uni-icons type="upload" size="16" color="#fff"></uni-icons> - 涓婁紶/鏌ョ湅鍥剧墖 - </button> - <button v-if="this.current" class="btn upload-btn" @tap="upRemarks"> - <uni-icons type="compose" size="16" color="#fff"></uni-icons> - 涓嶈壇鎻忚堪 - </button> - </view> - <view class="input-wrapper" style="margin-top: 15px;"> + <!-- 缁撴灉琛ㄦ牸 --> + <view v-if="tableData.length > 0" class="table-container"> + <view class="table-header"> + <view class="th">缂栧彿</view> + <view class="th">妫�楠岀粨鏋�<i style="color: rgb(0 212 68);" + v-if="!(tableData.length < formData.levelNum)">锛堣緭鍏ュ凡瀹屾垚锛�</i></view> + <view class="th">鎿嶄綔</view> + </view> - <input v-if="(tableData.length < formData.checkQyt)" @input="search($event)" - v-model="inputTxt" type="text" class="result-input" placeholder="璇疯緭鍏ユ楠岀粨鏋�..." - placeholder-class="placeholder" /> - <button v-if="(tableData.length < formData.checkQyt)" - style="margin: 0px;background-color: #3498db;color:#ffffff ;" class="btn primary-btn" - @tap="saveResult">淇濆瓨缁撴灉</button> - </view> - </view> - </view> - </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', getResultClass(item.fcheckResu, item.fstand)]"> + {{ item.fcheckResu }} + </view> + </view> + <view class="td"> + <button v-if="!isNumber" class="btn danger-btn" @tap="numberEdit(item)"> + {{ editResult(item.fcheckResu) }} + </button> + <button v-if="isNumber" class="btn danger-btn" @tap="toDetail(item)"> + 淇敼 + </button> + </view> + </view> + </view> - <!-- 缁撴灉琛ㄦ牸 --> - <view v-if="tableData.length>0" class="table-container"> - <view class="table-header"> - <view class="th">缂栧彿</view> - <view class="th">妫�楠岀粨鏋�<i style="color: rgb(0 212 68);" - v-if="!(tableData.length < formData.levelNum)">锛堣緭鍏ュ凡瀹屾垚锛�</i></view> - <view class="th" v-if="current">鎿嶄綔</view> - </view> + <!-- 鍥剧墖棰勮 --> + <view v-if="isShowImg" class="section"> + <view class="section-header">鐩稿叧鍥剧墖</view> + <view class="section-body"> + <view class="image-preview" @click="previewImage"> + <image :src="base64Image" mode="aspectFit" class="preview-image"/> + </view> + </view> + </view> + </view> - <view v-for="(item, index) in tableData" :key="index" class="table-row"> - <view class="td">{{ index + 1 }}</view> - <view v-if="!isNumber" class="td"> - <view :class="['result-badge', 'OK']" v-if="item.fcheckResu==1"> - OK - </view> - <view :class="['result-badge', 'NG']" v-if="item.fcheckResu==0"> - NG - </view> - </view> - <view v-if="isNumber" class="td"> - <view :class="['result-badge', item.fcheckResu]"> - {{ item.fcheckResu }} - </view> - </view> - <view class="td" v-if="current"> - <button v-if="!isNumber" class="btn danger-btn" @tap="toggleResult(item)"> - {{ editResult(item.fcheckResu) }} - </button> - <button v-if="isNumber" class="btn danger-btn" @tap="toDetail(item)"> - 淇敼 - </button> - </view> - </view> - </view> - <view v-if="remarksPopup" class="overlay"> - <view class="popup"> - <h3>淇敼涓嶅悎鏍兼弿杩�</h3> - <form> - <view class="form-group"> - <label class="form-label">涓嶅悎鏍兼弿杩�:</label> - <input class="form-input" type="text" v-model="remarks" /> - </view> - <button class="updateBut" type="warn" @click="editRemarks">淇敼</button> - <button @click="remarksPopup = !remarksPopup">鍙栨秷</button> - </form> - </view> - </view> - <view v-if="showPopup" class="overlay"> - <view class="popup"> - <h3>淇敼妫�楠岀粨鏋�</h3> - <form :modelValue="editData"> - <view class="form-group"> - <label class="form-label">妫�楠岀粨鏋�:</label> - <input class="form-input" type="text" v-model="editData.fcheckResu" /> - </view> - <button type="warn" @click="eidt">淇敼</button> - <button @click="showPopup = !showPopup">鍙栨秷</button> - </form> - </view> - </view> + <!-- 淇敼涓嶅悎鏍兼弿杩板脊鍑烘 --> + <view v-if="remarksPopup" class="overlay"> + <view class="popup"> + <view class="popup-header"> + <h3>淇敼涓嶅悎鏍兼弿杩�</h3> + </view> + <view class="popup-content"> + <view class="input-group"> + <view class="input-label">涓嶅悎鏍兼弿杩帮細</view> + <input class="input-field" type="text" v-model="remarks" placeholder="璇疯緭鍏ヤ笉鍚堟牸鎻忚堪"/> + </view> + </view> + <view class="popup-actions"> + <button class="action-btn primary" @click="editRemarks">淇敼</button> + <button class="action-btn secondary" @click="remarksPopup = !remarksPopup">鍙栨秷</button> + </view> + </view> + </view> - </view> - </view> + <!-- 淇敼妫�楠岀粨鏋滃脊鍑烘 --> + <view v-if="showPopup" class="overlay"> + <view class="popup"> + <view class="popup-header"> + <h3>淇敼妫�楠岀粨鏋�</h3> + </view> + <view class="popup-content"> + <view class="input-group"> + <view class="input-label">妫�楠岀粨鏋滐細</view> + <input class="input-field" type="text" v-model="editData.fcheckResu" placeholder="璇疯緭鍏ユ楠岀粨鏋�"/> + </view> + </view> + <view class="popup-actions"> + <button class="action-btn primary" @click="eidt">淇敼</button> + <button class="action-btn secondary" @click="showPopup = !showPopup">鍙栨秷</button> + </view> + </view> + </view> + </view> </template> <script> - import { - compile - } from "vue"; +export default { + data() { + return { + formData: {}, + isNumber: false, + checkItem: "", + id: 0, + gid: 0, + billNo: "", + showPopup: false, + editData: {}, + tableData: [], + base64Image: "", + isShowImg: false, + remarks: "", + remarksPopup: false, + // ===== 鏂板LLJ鏍峰紡鐩稿叧鏁版嵁 ===== + currentTab: 0, + tabs: [] + } + }, + methods: { + getResultClass(fcheckResu, fstand) { + // 鏍规嵁妫�楠岀粨鏋滃拰鍒ゅ畾鏍囪瘑纭畾鏍峰紡绫� + if (fstand === '鈭�' || fcheckResu === 'OK') { + return 'OK'; + } else if (fstand === '脳' || fcheckResu === 'NG') { + return 'NG'; + } else { + // 瀵逛簬鏁板瓧缁撴灉锛屾牴鎹甪stand鍒ゆ柇 + return fstand === '鈭�' ? 'OK' : 'NG'; + } + }, + + // ===== 鏂板鏍囩鍒囨崲鏂规硶 ===== + switchTab(index, id) { + this.currentTab = index; + // 濡傛灉闇�瑕佸垏鎹㈡楠岄」鐩紝鍙互鍦ㄨ繖閲屾坊鍔犻�昏緫 + // this.gid = id; + // this.refreshResult(); + }, - export default { - data() { - return { - formData: {}, - tableData: {}, - mainId: '', - isNumber: false, - currentTab: 0, - tabs: [], - inputResult: '', - remarksPopup: false, - showPopup: false, - editData: {}, - inputTxt: '', - formID: '', - releaseNo: '', - current: false - } - }, - methods: { - switchTab(index, mainIds) { - this.currentTab = index - this.mainId = mainIds; - this.refreshResult(); - }, - //妫�娴嬭緭鍏ユ鐨勮緭鍏ワ紝骞剁粰鍙橀噺璧嬪�� - search(event) { - this.formData.fcheckResu = event.detail.value; - }, - toggleResult(item) { - let fstand = "鈭�"; - let fcheckResu = 1; + previewImage() { + uni.previewImage({ + urls: [this.base64Image], + }); + }, + editResult(fcheckResu) { + if (fcheckResu == '1') { + return "鏀逛负涓嶅悎鏍�"; + } else { + return "鏀逛负鍚堟牸"; + } + }, + submit() { - if (item.fcheckResu == '1') { - fstand = "脳"; - fcheckResu = 0; - } + let count = this.formData.levelNum; + let fstand = "鈭�"; - this.$post({ - url: "/SJ/UpdateQSItemDetail", - data: { - id: item.id, - pid: item.pid, - gid: item.gid, - fstand: fstand, - fcheckResu: fcheckResu, - updateBy: this.$loginInfo.account, - } - }).then(res => { - this.$showMessage("淇敼鎴愬姛"); - this.refreshResult(); //鍒锋柊椤甸潰 - }) - }, - chooseImage() { - uni.navigateTo({ - url: 'ImageItem?id=' + this.formData.id - }); - }, - upRemarks() { - this.remarksPopup = true; - }, - saveResult() { - let count = this.formData.levelNum; - let fstand = "鈭�"; + //鏈夋渶澶у�煎拰鏈�灏忓�煎氨鏍规嵁鏄惁绗﹀悎鏍囧噯鍊兼洿鏂板垽瀹氱粨鏋滐紝娌℃湁鏈�澶у�煎拰鏈�灏忓�煎氨鏍规嵁鏄惁閫氳繃妫�楠屽垽瀹氱粨鏋� + if (this.formData.maxValue && this.formData.minValue) { - //鏈夋渶澶у�煎拰鏈�灏忓�煎氨鏍规嵁鏄惁绗﹀悎鏍囧噯鍊兼洿鏂板垽瀹氱粨鏋滐紝娌℃湁鏈�澶у�煎拰鏈�灏忓�煎氨鏍规嵁鏄惁閫氳繃妫�楠屽垽瀹氱粨鏋� - if (this.formData.maxValue && this.formData.minValue) { + if (!this.formData.fcheckResu) { + this.$showMessage("璇疯緭鍏ユ楠屽��"); + return; + } - if (!this.formData.fcheckResu) { - this.$showMessage("璇疯緭鍏ユ楠屽��"); - return; - } + if (this.formData.fcheckResu >= this.formData.minValue && this.formData.fcheckResu <= this.formData.maxValue) { + fstand = "鈭�" + } else { + fstand = "脳"; + } + count = 1; + } else { - if (this.formData.fcheckResu >= this.formData.minValue && this.formData.fcheckResu <= this.formData - .maxValue) { - fstand = "鈭�" - } else { - fstand = "脳"; - } - count = 1; - } else { + if (!this.formData.fcheckResu) { + this.formData.fcheckResu = 1 + } - if (!this.formData.fcheckResu) { - this.formData.fcheckResu = 1 - } + if (this.formData.fcheckResu == 0 || this.formData.fcheckResu == 1) { + this.formData.isPass = this.formData.fcheckResu + } else { + this.$showMessage("鏃犳爣鍑嗗�兼椂锛屾楠岀粨鏋滃彧鑳戒负0鎴�1!"); + return; + } + count = count - this.tableData.length; + } - if (this.formData.fcheckResu == 0 || this.formData.fcheckResu == 1) { - this.formData.isPass = this.formData.fcheckResu - } else { - this.$showMessage("鏃犳爣鍑嗗�兼椂锛屾楠岀粨鏋滃彧鑳戒负0鎴�1!"); - return; - } - count = count - this.tableData.length; - } + this.formData.updater = this.$loginInfo.account; - this.formData.updater = this.$loginInfo.account; + this.$post({ + url: "/SJ/SetQSItemDetail", + data: { + pid: this.id, + gid: this.gid, + fstand: fstand, + fcheckResu: this.formData.fcheckResu, + updateBy: this.formData.updater, + count: count + } + }).then(res => { + this.formData.fcheckResu = null; + this.$showMessage("淇濆瓨鎴愬姛"); + this.refreshResult(); + }) - this.$post({ - url: "/SJ/SetQSItemDetail", - data: { - pid: this.mainId, - gid: this.formID, - fstand: fstand, - fcheckResu: this.formData.fcheckResu, - updateBy: this.formData.updater, - count: count - } - }).then(res => { - this.formData.fcheckResu = null; - this.$showMessage("淇濆瓨鎴愬姛"); - this.refreshResult(); - }) + }, + refreshResult() { + this.$post({ + url: "/SJ/getQSItems", + data: { + id: this.id + } + }).then(res => { + this.formData = res.data.tbBillList[0]; + this.formData.billNo = this.billNo; + if (this.formData.imageData) { + this.isShowImg = true; + this.base64Image = 'data:image/jpeg;base64,' + this.formData.imageData; + } + if (this.formData.maxValue && this.formData.minValue && this.formData.standardValue) { + this.isNumber = true; + } + }) + this.$post({ + url: "/SJ/getQSItemDetail", + data: { + pid: this.id, + gid: this.gid + } + }).then(res => { + this.tableData = res.data.tbBillList; + }) + }, + toDetail(item) { + this.showPopup = !this.showPopup; + this.editData = item; + }, + eidt() { - }, - goBack() { - uni.navigateBack() - }, - //鑾峰彇妫�楠屽崟璇︽儏 - refreshResult() { - this.$post({ - url: "/SJ/getQSItems", - data: { - id: this.mainId - } - }).then(res => { + if (!this.editData.fcheckResu) { + this.$showMessage("璇疯緭鍏ユ楠岀粨鏋�"); + } - this.formData = res.data.tbBillList[0]; - this.$post({ - url: "/SJ/getQSItemDetail", - data: { - pid: this.mainId, - gid: this.formID - } - }).then(res => { - this.tableData = res.data.tbBillList; - }) - // this.tableData = res.data.tbBillList.itemXj02s; + if (this.formData.fcheckResu == this.editData.fcheckResu) { + this.$showMessage("淇敼鎴愬姛"); + return; + } - if (this.formData.imageData) { - this.isShowImg = true; - this.base64Image = 'data:image/jpeg;base64,' + this.formData.imageData; - } + let fstand = "鈭�"; - //fupAllow fdownAllow standardValue - if (this.formData.maxValue && this.formData.minValue && this.formData.standardValue) { - this.isNumber = true; - } else { - this.isNumber = false; - } - }) - }, - editResult(fcheckResu) { - if (fcheckResu == '1') { - return "鏀逛负涓嶅悎鏍�"; - } else { - return "鏀逛负鍚堟牸"; - } - }, - toDetail(item) { - this.showPopup = !this.showPopup; - this.editData = item; - }, - editRemarks() { - if (this.remarks) { - //saveRemarksGid - this.$post({ - url: "/SJ/saveRemarksPid", - data: { - pid: this.formData.id, - remarks: this.remarks - } - }).then(res => { - if (res.data.tbBillList > 0) { - this.formData.remarks = this.remarks; - this.remarksPopup = !this.remarksPopup; - this.$showMessage("淇濆瓨鎴愬姛"); - } - }) - } else { - this.$post({ - url: "/SJ/saveRemarksPid", - data: { - pid: this.formData.id, - remarks: '' - } - }).then(res => { - if (res.data.tbBillList > 0) { - this.formData.remarks = this.remarks; - this.remarksPopup = !this.remarksPopup; - this.$showMessage("淇濆瓨鎴愬姛"); - } - }) - } - }, - eidt() { + if (this.formData.maxValue && this.formData.minValue) { - if (!this.editData.fcheckResu) { - this.$showMessage("璇疯緭鍏ユ楠岀粨鏋�"); - } + if (!this.editData.fcheckResu) { + this.$showMessage("璇疯緭鍏ユ楠屽��"); + return; + } - if (this.formData.fcheckResu == this.editData.fcheckResu) { - this.$showMessage("淇敼鎴愬姛"); - return; - } + if (this.editData.fcheckResu >= this.formData.minValue && this.editData.fcheckResu <= this.formData.maxValue) { + this.editData.isPass = 1 + } else { + this.editData.isPass = 0 + fstand = "脳"; + } + } else { - let fstand = "鈭�"; + if (!this.editData.fcheckResu) { + this.editData.fcheckResu = 1 + } - if (this.formData.maxValue && this.formData.minValue) { + if (this.editData.fcheckResu == 0 || this.editData.fcheckResu == 1) { + if (this.editData.fcheckResu == 0) { + fstand = "脳"; + } + } else { + this.$showMessage("鏃犳爣鍑嗗�兼椂锛屾楠岀粨鏋滃彧鑳戒负0鎴�1!"); + return; + } + } - if (!this.editData.fcheckResu) { - this.$showMessage("璇疯緭鍏ユ楠屽��"); - return; - } + this.editData.updater = this.$loginInfo.account; - if (parseFloat(this.editData.fcheckResu) >= parseFloat(this.formData.fdownAllow) && parseFloat(this - .editData - .fcheckResu) <= parseFloat(this.formData.fupAllow)) { - this.editData.isPass = 1 - } else { - this.editData.isPass = 0 - fstand = "脳"; - } - } else { + this.$post({ + url: "/SJ/UpdateQSItemDetail", + data: { + id: this.editData.id, + pid: this.id, + gid: this.gid, + fstand: fstand, + fcheckResu: this.editData.fcheckResu, + updateBy: this.editData.updater, + } + }).then(res => { + this.showPopup = !this.showPopup; + this.$showMessage("淇敼鎴愬姛"); + this.refreshResult();//鍒锋柊椤甸潰 + }) + }, + numberEdit(item) { - if (!this.editData.fcheckResu) { - this.editData.fcheckResu = 1 - } + let fstand = "鈭�"; + let fcheckResu = 1; - if (this.editData.fcheckResu == 0 || this.editData.fcheckResu == 1) { - if (this.editData.fcheckResu == 0) { - fstand = "脳"; - } - } else { - this.$showMessage("鏃犳爣鍑嗗�兼椂锛屾楠岀粨鏋滃彧鑳戒负0鎴�1!"); - return; - } - } + if (item.fcheckResu == '1') { + fstand = "脳"; + fcheckResu = 0; + } - this.editData.updater = this.$loginInfo.account; + this.$post({ + url: "/SJ/UpdateQSItemDetail", + data: { + id: item.id, + pid: item.pid, + gid: item.gid, + fstand: fstand, + fcheckResu: fcheckResu, + updateBy: this.$loginInfo.account, + } + }).then(res => { + this.$showMessage("淇敼鎴愬姛"); + this.refreshResult(); //鍒锋柊椤甸潰 + }) + }, + saveRemarks() { + this.remarksPopup = !this.remarksPopup; + this.remarks = this.formData.remarks; + }, + editRemarks() { + if (this.remarks) { + //saveRemarksGid + this.$post({ + url: "/SJ/saveRemarksPid", + data: { + pid: this.formData.id, + remarks: this.remarks + } + }).then(res => { + if (res.data.tbBillList > 0) { + this.formData.remarks = this.remarks; + this.remarksPopup = !this.remarksPopup; + this.$showMessage("淇濆瓨鎴愬姛"); + } + }) + } + } + }, + onLoad(options) { +//options涓寘鍚簡url闄勫甫鐨勫弬鏁� + let params = options; - this.$post({ - url: "/SJ/UpdateQSItemDetail", - data: { - id: this.editData.id, - pid: this.mainId, - gid: this.formID, - fstand: fstand, - fcheckResu: this.editData.fcheckResu, - updateBy: this.editData.updater, - } - }).then(res => { - this.showPopup = !this.showPopup; - this.$showMessage("淇敼鎴愬姛"); - this.refreshResult(); //鍒锋柊椤甸潰 - }) - }, - }, - onLoad(options) { - //options涓寘鍚簡url闄勫甫鐨勫弬鏁� - let params = options; - this.mainId = params["mainId"]; - this.refreshResult(); - this.formID = params["formID"]; - this.releaseNo = params["releaseNo"]; - this.currentTab = parseInt(params["index"]); - this.current = params["current"] === 'true' ? true : false; - this.$post({ - url: "/SJ/getQSItems", - data: { - pid: this.formID - } - }).then(res1 => { - let tableData = res1.data.tbBillList - //褰撳凡妫�楠屼釜鏁伴兘涓嶄负绌烘椂鎸夌収妫�娴嬬粨鏋勬帓搴� - tableData.sort((a, b) => { - if (a.result === '鏈畬鎴�' && b.result === '鍚堟牸') { - return -1; - } else if (a.result === '鍚堟牸' && b.result === '鏈畬鎴�') { - return 1; - } else { - return 0; - } - }); - this.tabs = tableData; - // if (this.tableData.length === 0) { - // this.isShowTable = true; - // } - this.tableData.forEach((item, index) => { - this.set(item, 'current', this.current); - }); - console.log(this.tableData); - }) - } - } + this.id = params["id"]; + this.billNo = params["billNo"]; + this.gid = params["gid"]; + + this.refreshResult(); + } +} </script> <style lang="scss"> - $primary-color: #409EFF; - $success-color: #67C23A; - $danger-color: #F56C6C; - $border-color: #DCDFE6; - $bg-color: #f5f7fa; +$primary-color: #409EFF; +$success-color: #67C23A; +$danger-color: #F56C6C; +$border-color: #DCDFE6; +$bg-color: #f5f7fa; - .container { - padding: 20px; - background-color: #fff; - } +.container { + padding: 20px; + background-color: #fff; +} - .header { - padding: 20px; - border-bottom: 1px solid $border-color; - background: linear-gradient(90deg, #f0f7ff, #e1f0ff); +.header { + padding: 20px; + border-bottom: 1px solid $border-color; + background: linear-gradient(90deg, #f0f7ff, #e1f0ff); - .title { - font-size: 24px; - color: #333; - margin-bottom: 10px; - } + .title { + font-size: 24px; + color: #333; + margin-bottom: 10px; + } - .order-number { - color: #666; - font-size: 14px; - } - } + .order-number { + color: #666; + font-size: 14px; + } +} - .tabs { - display: flex; - background-color: $bg-color; - border-bottom: 1px solid $border-color; +.tabs { + display: flex; + background-color: $bg-color; + border-bottom: 1px solid $border-color; - .tab { - flex: 1; - text-align: center; - padding: 12px 0; - border-right: 1px solid $border-color; - color: #666; - transition: all 0.3s; + .tab { + flex: 1; + text-align: center; + padding: 12px 0; + border-right: 1px solid $border-color; + color: #666; + transition: all 0.3s; - &:last-child { - border-right: none; - } + &:last-child { + border-right: none; + } - &.active { - background-color: #fff; - color: $primary-color; - font-weight: bold; - position: relative; + &.active { + background-color: #fff; + color: $primary-color; + font-weight: bold; + position: relative; - &::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; + } + } + } +} - .section { - margin: 20px 0; - border: 1px solid $border-color; - border-radius: 4px; +.section { + margin: 20px 0; + border: 1px solid $border-color; + border-radius: 4px; - &-header { - padding: 12px 16px; - background-color: $bg-color; - border-bottom: 1px solid $border-color; - font-weight: bold; - } + &-header { + padding: 12px 16px; + background-color: $bg-color; + border-bottom: 1px solid $border-color; + font-weight: bold; + } - &-body { - padding: 16px; - } - } + &-body { + padding: 16px; + } +} - .info-grid { - display: grid; - grid-template-columns: repeat(3, 1fr); - gap: 16px; +.info-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 16px; - .info-item { - margin-bottom: 12px; + .info-item { + margin-bottom: 12px; - .info-label { - color: #909399; - font-size: 14px; - margin-bottom: 4px; - } + .info-label { + color: #909399; + font-size: 14px; + margin-bottom: 4px; + } - .info-value { - color: #333; - font-weight: 500; - } - } - } + .info-value { + color: #333; + font-weight: 500; + } + } +} - .input-group { - margin: 16px 0; +.input-group { + margin: 16px 0; - .input-wrapper { - display: flex; - gap: 12px; + .input-wrapper { + display: flex; + gap: 12px; - .result-input { - flex: 1; - height: 45px; - padding: 0 12px; - border: 1px solid $border-color; - border-radius: 4px; - font-size: 14px; - } + .result-input { + flex: 1; + height: 45px; + padding: 0 12px; + border: 1px solid $border-color; + border-radius: 4px; + font-size: 14px; + } - .upload-btn { - background-color: #909399; - color: #fff; - padding: 0 10px; - margin: 0; - //height: 40rpx; - } - } - } + .upload-btn { + background-color: #909399; + color: #fff; + padding: 0 10px; + margin: 0; + } + } +} - .table-container { - border: 1px solid $border-color; - border-radius: 4px; - margin-top: 20px; +.table-container { + border: 1px solid $border-color; + border-radius: 4px; + margin-top: 20px; - .table-header { - display: flex; - background-color: $bg-color; - border-bottom: 1px solid $border-color; + .table-header { + display: flex; + background-color: $bg-color; + border-bottom: 1px solid $border-color; - .th { - flex: 1; - padding: 12px; - font-weight: bold; - } - } + .th { + flex: 1; + padding: 12px; + font-weight: bold; + } + } - .table-row { - display: flex; - border-bottom: 1px solid $border-color; - padding: 12px; + .table-row { + display: flex; + border-bottom: 1px solid $border-color; + padding: 12px; - &:last-child { - border-bottom: none; - } + &:last-child { + border-bottom: none; + } - .td { - flex: 1; - display: flex; - align-items: center; - } - } - } + .td { + flex: 1; + display: flex; + align-items: center; + } + } +} - .result-badge { - display: inline-block; - padding: 4px 8px; - border-radius: 4px; - font-size: 12px; - font-weight: bold; +.result-badge { + display: inline-block; + padding: 4px 8px; + border-radius: 4px; + font-size: 12px; + font-weight: bold; - &.OK { - background-color: rgba($success-color, 0.1); - color: $success-color; - } + &.OK { + background-color: rgba($success-color, 0.1); + color: $success-color; + } - &.NG { - background-color: rgba($danger-color, 0.1); - color: $danger-color; - } - } + &.NG { + background-color: rgba($danger-color, 0.1); + color: $danger-color; + } +} - .action-buttons { - margin-top: 20px; - display: flex; - justify-content: flex-end; - gap: 12px; +.spec-text { + font-size: 14px; + color: #333; + line-height: 1.5; +} - .btn { - padding: 8px 20px; - border-radius: 4px; +.result-preview { + margin: 16px 0; + padding: 12px; + background-color: #f8f9fa; + border-radius: 4px; + display: flex; + align-items: center; + gap: 12px; - &.primary-btn { - background-color: $primary-color; - color: #fff; + .info-label { + color: #909399; + font-size: 14px; + min-width: 80px; + } - } + .info-value { + color: #333; + font-weight: 500; + } +} - &.cancel-btn { - background-color: #909399; - color: #fff; - } - } - } +.result-ng { + margin: 16px 0; + padding: 12px; + background-color: rgba($danger-color, 0.1); + border-radius: 4px; + display: flex; + align-items: center; + gap: 12px; - .danger { - color: $danger-color; - } + .info-label { + color: $danger-color; + font-size: 14px; + min-width: 80px; + } - .overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.5); - display: flex; - justify-content: center; - align-items: center; - } + .info-value { + color: $danger-color; + font-weight: 500; + } +} - .popup { - background-color: #fff; - padding: 20px; - border: 1px solid #ccc; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); - width: 68vw; - /* 璁剧疆瀹藉害涓鸿鍙e搴︾殑80% */ - height: 25vh; - /* 璁剧疆楂樺害涓鸿鍙i珮搴︾殑80% */ - } +.action-buttons { + margin-top: 20px; + display: flex; + justify-content: flex-end; + gap: 12px; - .updateBut { - background-color: #3498db; - color: white; - } + .btn { + padding: 8px 20px; + border-radius: 4px; - .input1 { - display: block; - } + &.primary-btn { + background-color: $primary-color; + color: #fff; + } - .input2 { - display: none; - } + &.cancel-btn { + background-color: #909399; + color: #fff; + } + } +} - /* 鍝嶅簲寮忚璁� */ - @media (max-width: 500px) { - .input1 { - display: none; - } +.danger { + color: $danger-color; +} - .input2 { - display: block; - } - } +.overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + display: flex; + justify-content: center; + align-items: center; + z-index: 1000; +} + +.popup { + background-color: #fff; + padding: 20px; + border: 1px solid #ccc; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + width: 68vw; + height: 25vh; + border-radius: 8px; +} + +.popup-header { + padding: 20px; + border-bottom: 1px solid #eee; + + h3 { + font-size: 18px; + font-weight: 600; + color: #2c3e50; + margin: 0; + } +} + +.popup-content { + padding: 20px; + + .input-group { + margin-bottom: 15px; + + .input-label { + font-size: 14px; + color: #7f8c8d; + margin-right: 10px; + min-width: 80px; + } + + .input-field { + flex: 1; + padding: 8px 12px; + border: 1px solid #ddd; + border-radius: 4px; + font-size: 14px; + background-color: white; + } + } +} + +.popup-actions { + padding: 20px; + border-top: 1px solid #eee; + display: flex; + gap: 10px; + justify-content: flex-end; + + .action-btn { + padding: 12px 20px; + border: none; + border-radius: 6px; + font-size: 14px; + font-weight: 500; + cursor: pointer; + transition: all 0.2s; + + &.primary { + background-color: #3498db; + color: white; + } + + &.secondary { + background-color: #95a5a6; + color: white; + } + } +} + +/* 鍥剧墖棰勮 */ +.image-preview { + text-align: center; + cursor: pointer; +} + +.preview-image { + max-width: 100%; + max-height: 300px; + border-radius: 4px; + border: 1px solid #ddd; +} + +/* 鍝嶅簲寮忚璁� */ +@media (max-width: 768px) { + .info-grid { + grid-template-columns: 1fr; + } + + .input-group { + flex-direction: column; + align-items: flex-start; + } + + .input-label { + margin-bottom: 5px; + } +} </style> \ No newline at end of file -- Gitblit v1.9.3