From 900e4776223c2a42d8859fc8cd635c13ffcfb3b5 Mon Sep 17 00:00:00 2001 From: 如洲 陈 <1278080563@qq.com> Date: 星期二, 30 九月 2025 11:12:13 +0800 Subject: [PATCH] 出库检优化 --- pages/QC/THJ/detail.vue | 2142 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 1,072 insertions(+), 1,070 deletions(-) diff --git a/pages/QC/THJ/detail.vue b/pages/QC/THJ/detail.vue index bd13454..9fb810b 100644 --- a/pages/QC/THJ/detail.vue +++ b/pages/QC/THJ/detail.vue @@ -1,519 +1,505 @@ <template> - <view class="page-container"> - <!-- 妫�楠岄」鐩〃鍗曞崱鐗� --> - <view class="form-card"> - <view class="form-title"> - <view class="title-icon">馃搵</view> - <span>閿�鍞��璐ф楠岃鎯�</span> - </view> - <view class="form-container"> - <!-- 鍩烘湰淇℃伅妯″潡 --> - <view class="form-section"> - <view class="section-title">鍩烘湰淇℃伅</view> - <view class="form-grid"> - <view class="form-group"> - <label class="form-label">妫�楠屽崟鍙�:</label> - <input v-model="formData.releaseNo" class="form-input" disabled="true" type="text"/> - </view> - <view class="form-group"> - <label class="form-label">閫�璐у崟鍙�:</label> - <input v-model="formData.returnOrderNo" class="form-input" disabled="true" type="text"/> - </view> - <view class="form-group"> - <label class="form-label">鐗╂枡缂栫爜:</label> - <input v-model="formData.itemNo" class="form-input" disabled="true" type="text"/> - </view> - <view class="form-group"> - <label class="form-label">鐗╂枡鍚嶇О:</label> - <input v-model="formData.itemName" class="form-input" disabled="true" type="text"/> - </view> - <view class="form-group"> - <label class="form-label">閫�璐ф暟閲�:</label> - <input v-model="formData.returnQty" class="form-input" disabled="true" type="text"/> - </view> - <view class="form-group"> - <label class="form-label">閫�璐у師鍥�:</label> - <input v-model="formData.returnReason" class="form-input" disabled="true" type="text"/> + <view class="page-container"> + <!-- 妫�楠岄」鐩〃鍗曞崱鐗� --> + <view class="form-card"> + <view class="form-title"> + <view class="title-icon">馃搵</view> + <span>閿�鍞��璐ф楠岃鎯�</span> + </view> + <view class="form-container"> + <!-- 鍩烘湰淇℃伅妯″潡 --> + <view class="form-section"> + <view class="section-title">鍩烘湰淇℃伅</view> + <view class="form-grid"> + <view class="form-group"> + <label class="form-label">妫�楠屽崟鍙�:</label> + <input v-model="formData.releaseNo" class="form-input" disabled="true" type="text"/> + </view> + <view class="form-group"> + <label class="form-label">閫�璐у崟鍙�:</label> + <input v-model="formData.returnOrderNo" class="form-input" disabled="true" type="text"/> + </view> + <view class="form-group"> + <label class="form-label">鐗╂枡缂栫爜:</label> + <input v-model="formData.itemNo" class="form-input" disabled="true" type="text"/> + </view> + <view class="form-group"> + <label class="form-label">鐗╂枡鍚嶇О:</label> + <input v-model="formData.itemName" class="form-input" disabled="true" type="text"/> + </view> + <view class="form-group"> + <label class="form-label">閫�璐ф暟閲�:</label> + <input v-model="formData.returnQty" class="form-input" disabled="true" type="text"/> + </view> + <view class="form-group"> + <label class="form-label">閫�璐у師鍥�:</label> + <input v-model="formData.returnReason" class="form-input" disabled="true" type="text"/> + </view> </view> </view> - </view> - - <!-- 涓変釜妯″潡骞跺垪瀹瑰櫒 --> - <view class="three-modules-container"> - <!-- 妫�楠屽弬鏁版ā鍧� --> - <view class="module-item"> - <view class="module-header"> - <text class="module-title">妫�楠屽弬鏁�</text> + + <!-- 涓変釜妯″潡骞跺垪瀹瑰櫒 --> + <view class="three-modules-container"> + <!-- 妫�楠屽弬鏁版ā鍧� --> + <view class="module-item"> + <view class="module-header"> + <text class="module-title">妫�楠屽弬鏁�</text> + </view> + <view class="module-content"> + <view class="form-grid"> + <view class="form-group"> + <label class="form-label">妫�楠岄」鐩�:</label> + <input v-model="formData.projName" class="form-input" disabled="true" type="text"/> + </view> + <view class="form-group"> + <label class="form-label">妫�楠屾柟娉�:</label> + <input v-model="formData.inspectionMethod" class="form-input" disabled="true" type="text"/> + </view> + <view class="form-group"> + <label class="form-label">妫�楠屾爣鍑�:</label> + <input v-model="formData.qualityStandard" class="form-input" disabled="true" type="text"/> + </view> + <view class="form-group"> + <label class="form-label">妫�楠屾暟閲�:</label> + <input v-model="formData.levelNum" class="form-input" disabled="true" type="text"/> + </view> + </view> + </view> </view> - <view class="module-content"> - <view class="form-grid"> - <view class="form-group"> - <label class="form-label">妫�楠岄」鐩�:</label> - <input v-model="formData.projName" class="form-input" disabled="true" type="text"/> + + <!-- 鏁板�兼爣鍑嗘ā鍧� - 鍙湪鏈夋爣鍑嗗�兼椂鏄剧ず --> + <view v-if="hasStandardValues" class="module-item"> + <view class="module-header"> + <text class="module-title">鏁板�兼爣鍑�</text> + </view> + <view class="module-content"> + <view class="form-grid"> + <view class="form-group"> + <label class="form-label">涓嬮檺:</label> + <input v-model="formData.minValue" class="form-input" disabled="true" type="text"/> + </view> + <view class="form-group"> + <label class="form-label">鏍囧噯鍊�:</label> + <input v-model="formData.standardValue" class="form-input" disabled="true" type="text"/> + </view> + <view class="form-group"> + <label class="form-label">涓婇檺:</label> + <input v-model="formData.maxValue" class="form-input" disabled="true" type="text"/> + </view> </view> - <view class="form-group"> - <label class="form-label">妫�楠屾柟娉�:</label> - <input v-model="formData.inspectionMethod" class="form-input" disabled="true" type="text"/> - </view> - <view class="form-group"> - <label class="form-label">妫�楠屾爣鍑�:</label> - <input v-model="formData.qualityStandard" class="form-input" disabled="true" type="text"/> - </view> - <view class="form-group"> - <label class="form-label">妫�楠屾暟閲�:</label> - <input v-model="formData.levelNum" class="form-input" disabled="true" type="text"/> + </view> + </view> + + <!-- 鍒ゅ畾鏍囧噯妯″潡 --> + <view class="module-item"> + <view class="module-header"> + <text class="module-title">鍒ゅ畾鏍囧噯</text> + </view> + <view class="module-content"> + <view class="form-grid"> + <view class="form-group"> + <label class="form-label">妫�楠岀姸鎬�:</label> + <input :value="getDisplayResult()" class="form-input" disabled="true" type="text"/> + </view> + <view class="form-group"> + <label class="form-label">涓嶅悎鏍兼弿杩�:</label> + <input v-model="formData.remarks" class="form-input" disabled="true" type="text"/> + </view> </view> </view> </view> </view> - - <!-- 鏁板�兼爣鍑嗘ā鍧� - 鍙湪鏈夋爣鍑嗗�兼椂鏄剧ず --> - <view v-if="hasStandardValues" class="module-item"> - <view class="module-header"> - <text class="module-title">鏁板�兼爣鍑�</text> - </view> - <view class="module-content"> - <view class="form-grid"> - <view class="form-group"> - <label class="form-label">涓嬮檺:</label> - <input v-model="formData.minValue" class="form-input" disabled="true" type="text"/> - </view> - <view class="form-group"> - <label class="form-label">鏍囧噯鍊�:</label> - <input v-model="formData.standardValue" class="form-input" disabled="true" type="text"/> - </view> - <view class="form-group"> - <label class="form-label">涓婇檺:</label> - <input v-model="formData.maxValue" class="form-input" disabled="true" type="text"/> - </view> + + <!-- 妫�娴嬬粨鏋滃尯鍩� - 鍙湪鏈変笂涓嬮檺鏃舵樉绀� --> + <view v-if="Number(formData.maxValue) && Number(formData.minValue)" class="form-section"> + <view class="section-title">妫�娴嬬粨鏋�</view> + <view class="form-grid"> + <view class="form-group"> + <label class="form-label">妫�娴嬬粨鏋�:</label> + <input v-model="fcheckResuK" class="form-input" type="number" + placeholder="璇疯緭鍏ユ娴嬪��"/> </view> </view> </view> - - <!-- 鍒ゅ畾鏍囧噯妯″潡 --> - <view class="module-item"> - <view class="module-header"> - <text class="module-title">鍒ゅ畾鏍囧噯</text> - </view> - <view class="module-content"> - <view class="form-grid"> - <view class="form-group"> - <label class="form-label">妫�楠岀姸鎬�:</label> - <input :value="getDisplayResult()" class="form-input" disabled="true" type="text"/> - </view> - <view class="form-group"> - <label class="form-label">涓嶅悎鏍兼弿杩�:</label> - <input v-model="formData.remarks" class="form-input" disabled="true" type="text"/> - </view> - </view> - </view> - </view> + + + <!-- 鏈変笂涓嬮檺鏃舵樉绀轰繚瀛樻寜閽紝鏃犱笂涓嬮檺鏃惰嚜鍔ㄤ繚瀛� --> + <button v-if="tableData.length < formData.levelNum && Number(formData.maxValue) && Number(formData.minValue)" + :class="['action-btn', 'btn-primary', { 'btn-loading': isLoading }]" :disabled="isLoading" @click="submit"> + {{ isLoading ? '淇濆瓨涓�...' : '淇濆瓨妫�楠岀粨鏋�' }} + </button> </view> - - <!-- 妫�娴嬬粨鏋滃尯鍩� - 鍙湪鏈変笂涓嬮檺鏃舵樉绀� --> - <view v-if="Number(formData.maxValue) && Number(formData.minValue)" class="form-section"> - <view class="section-title">妫�娴嬬粨鏋�</view> - <view class="form-grid"> + </view> + + <!-- 鍥剧墖鏄剧ず鍖哄煙 --> + <view v-if="isShowImg" class="image-container"> + <img :src="base64Image" class="preview-image" @click="previewImage"/> + </view> + + <!-- 妫�楠岀粨鏋滆〃鏍煎崱鐗� --> + <view class="table-card"> + <view class="table-title"> + <view class="title-icon">馃搳</view> + <span>妫�楠岀粨鏋滃垪琛�</span> + </view> + <view class="list-container"> + <uni-table ref="table" border emptyText="鏆傛棤鏇村鏁版嵁"> + <uni-tr> + <uni-th align="center" class="th" width="80">缂栧彿</uni-th> + <uni-th align="center" class="th" width="120">鍒ゅ畾缁撴灉</uni-th> + <uni-th v-if="Number(formData.maxValue) && Number(formData.minValue)" align="center" class="th" width="100">妫�楠岀粨鏋�</uni-th> + <uni-th align="center" class="th" width="120">鎿嶄綔</uni-th> + </uni-tr> + <uni-tr v-for="(item, index) in tableData" :key="index" :class="{ 'hover-effect': isHoveringRow === index }" + class="table-row" @mouseenter="isHoveringRow = index" + @mouseleave="isHoveringRow = -1"> + <uni-td align="center"> + {{ index + 1 }} + </uni-td> + <uni-td align="center"> + <span v-if="item.fstand === '鈭�'" class="result-badge pass">鍚堟牸</span> + <span v-else-if="item.fstand === '脳'" class="result-badge fail">涓嶅悎鏍�</span> + <span v-else-if="hasStandardValues && (!item.fstand || item.fstand === '')" class="result-badge pending">鏈楠�</span> + <span v-else class="result-badge pending">{{ item.fstand || '鏈垽瀹�' }}</span> + </uni-td> + <uni-td v-if="Number(formData.maxValue) && Number(formData.minValue)" align="center"> + <view class="result-display"> + <!-- 鏈変笂涓嬮檺鏃舵樉绀哄疄闄呮暟鍊� --> + <span v-if="item.fcheckResu" class="result-number"> + {{ item.fcheckResu }} + </span> + <!-- 鍏朵粬鎯呭喌 --> + <span v-else class="result-badge pending"> + 鏈楠� + </span> + </view> + </uni-td> + <uni-td align="center"> + <view class="action-group"> + <button v-if="isNumber" + :class="['action-btn', 'btn-sm', 'btn-warn', { 'btn-disabled': isLoading }]" :disabled="isLoading" @click="toDetail(item)"> + {{ isLoading ? '澶勭悊涓�...' : '淇敼' }} + </button> + <button v-if="!isNumber" + :class="['action-btn', 'btn-sm', 'btn-warn', { 'btn-disabled': isLoading }]" :disabled="isLoading" @click="numberEdit(item)"> + {{ isLoading ? '澶勭悊涓�...' : editResult(item.fcheckResu) }} + </button> + </view> + </uni-td> + </uni-tr> + </uni-table> + </view> + </view> + + <!-- 鎿嶄綔鎸夐挳 --> + <view class="action-buttons"> + <view class="button-group"> + <button :class="['action-btn', 'btn-warn', { 'btn-disabled': isLoading }]" :disabled="isLoading" + @click="saveRemarks"> + {{ isLoading ? '澶勭悊涓�...' : '娣诲姞涓嶅悎鏍兼弿杩�' }} + </button> + </view> + </view> + + <!-- 淇敼妫�楠岀粨鏋滃脊鍑哄眰 --> + <view v-if="showPopup" class="overlay active"> + <view :class="{ 'popup-scale': isPopupAnimated }" class="popup" @animationend="isPopupAnimated = false"> + <view class="popup-header"> + <h3 class="popup-title">淇敼妫�楠岀粨鏋�</h3> + <view class="close-btn" @click="showPopup = !showPopup">脳</view> + </view> + <form :modelValue="editData"> <view class="form-group"> - <label class="form-label">妫�娴嬬粨鏋�:</label> - <input v-model="fcheckResuK" class="form-input" type="number" - placeholder="璇疯緭鍏ユ娴嬪��"/> + <label class="form-label">妫�楠岀粨鏋�:</label> + <input v-model="editData.fcheckResu" class="form-input" type="text"/> </view> - </view> + <view class="button-group"> + <button :class="['action-btn', 'btn-warn', { 'btn-loading': isEditLoading }]" :disabled="isEditLoading" + @click="eidt"> + {{ isEditLoading ? '淇敼涓�...' : '淇濆瓨淇敼' }} + </button> + <button @click="showPopup = !showPopup"> + 鍙栨秷 + </button> + </view> + </form> </view> - - - <!-- 鏈変笂涓嬮檺鏃舵樉绀轰繚瀛樻寜閽紝鏃犱笂涓嬮檺鏃惰嚜鍔ㄤ繚瀛� --> - <button v-if="tableData.length < formData.levelNum && Number(formData.maxValue) && Number(formData.minValue)" - :class="['action-btn', 'btn-primary', { 'btn-loading': isLoading }]" :disabled="isLoading" @click="submit"> - {{ isLoading ? '淇濆瓨涓�...' : '淇濆瓨妫�楠岀粨鏋�' }} - </button> </view> - </view> - - <!-- 鍥剧墖鏄剧ず鍖哄煙 --> - <view v-if="isShowImg" class="image-container"> - <img :src="base64Image" class="preview-image" @click="previewImage"/> - </view> - - <!-- 妫�楠岀粨鏋滆〃鏍煎崱鐗� --> - <view class="table-card"> - <view class="table-title"> - <view class="title-icon">馃搳</view> - <span>妫�楠岀粨鏋滃垪琛�</span> - </view> - <view class="list-container"> - <uni-table ref="table" border emptyText="鏆傛棤鏇村鏁版嵁"> - <uni-tr> - <uni-th align="center" class="th" width="80">缂栧彿</uni-th> - <uni-th align="center" class="th" width="120">鍒ゅ畾缁撴灉</uni-th> - <uni-th v-if="Number(formData.maxValue) && Number(formData.minValue)" align="center" class="th" width="100">妫�楠岀粨鏋�</uni-th> - <uni-th align="center" class="th" width="120">鎿嶄綔</uni-th> - </uni-tr> - <uni-tr v-for="(item, index) in tableData" :key="index" :class="{ 'hover-effect': isHoveringRow === index }" - class="table-row" @mouseenter="isHoveringRow = index" - @mouseleave="isHoveringRow = -1"> - <uni-td align="center"> - {{ index + 1 }} - </uni-td> - <uni-td align="center"> - <span v-if="item.fstand === '鈭�'" class="result-badge pass">鍚堟牸</span> - <span v-else-if="item.fstand === '脳'" class="result-badge fail">涓嶅悎鏍�</span> - <span v-else-if="hasStandardValues && (!item.fstand || item.fstand === '')" class="result-badge pending">鏈楠�</span> - <span v-else class="result-badge pending">{{ item.fstand || '鏈垽瀹�' }}</span> - </uni-td> - <uni-td v-if="Number(formData.maxValue) && Number(formData.minValue)" align="center"> - <view class="result-display"> - <!-- 鏈変笂涓嬮檺鏃舵樉绀哄疄闄呮暟鍊� --> - <span v-if="item.fcheckResu" class="result-number"> - {{ item.fcheckResu }} - </span> - <!-- 鍏朵粬鎯呭喌 --> - <span v-else class="result-badge pending"> - 鏈楠� - </span> - </view> - </uni-td> - <uni-td align="center"> - <view class="action-group"> - <button v-if="isNumber" - :class="['action-btn', 'btn-sm', 'btn-warn', { 'btn-disabled': isLoading }]" :disabled="isLoading" @click="toDetail(item)"> - {{ isLoading ? '澶勭悊涓�...' : '淇敼' }} - </button> - <button v-if="!isNumber" - :class="['action-btn', 'btn-sm', 'btn-warn', { 'btn-disabled': isLoading }]" :disabled="isLoading" @click="numberEdit(item)"> - {{ isLoading ? '澶勭悊涓�...' : editResult(item.fcheckResu) }} - </button> - </view> - </uni-td> - </uni-tr> - </uni-table> - </view> - </view> - - <!-- 鎿嶄綔鎸夐挳 --> - <view class="action-buttons"> - <view class="button-group"> - <button :class="['action-btn', 'btn-warn', { 'btn-disabled': isLoading }]" :disabled="isLoading" - @click="saveRemarks"> - {{ isLoading ? '澶勭悊涓�...' : '娣诲姞涓嶅悎鏍兼弿杩�' }} - </button> - </view> - </view> - - <!-- 淇敼妫�楠岀粨鏋滃脊鍑哄眰 --> - <view v-if="showPopup" class="overlay active"> - <view :class="{ 'popup-scale': isPopupAnimated }" class="popup" @animationend="isPopupAnimated = false"> - <view class="popup-header"> - <h3 class="popup-title">淇敼妫�楠岀粨鏋�</h3> - <view class="close-btn" @click="showPopup = !showPopup">脳</view> + + <!-- 淇敼涓嶅悎鏍兼弿杩板脊鍑哄眰 --> + <view v-if="remarksPopup" class="overlay active"> + <view :class="{ 'popup-scale': isPopupAnimated }" class="popup" @animationend="isPopupAnimated = false"> + <view class="popup-header"> + <h3 class="popup-title">淇敼涓嶅悎鏍兼弿杩�</h3> + <view class="close-btn" @click="remarksPopup = !remarksPopup">脳</view> + </view> + <form> + <view class="form-group"> + <label class="form-label">涓嶅悎鏍兼弿杩�:</label> + <input v-model="remarks" class="form-input" type="text"/> + </view> + <view class="button-group"> + <button :class="['action-btn', 'btn-warn', { 'btn-loading': isRemarksLoading }]" + :disabled="isRemarksLoading" @click="editRemarks"> + {{ isRemarksLoading ? '淇濆瓨涓�...' : '淇敼' }} + </button> + <button @click="remarksPopup = !remarksPopup"> + 鍙栨秷 + </button> + </view> + </form> </view> - <form :modelValue="editData"> - <view class="form-group"> - <label class="form-label">妫�楠岀粨鏋�:</label> - <input v-model="editData.fcheckResu" class="form-input" type="text"/> - </view> - <view class="button-group"> - <button :class="['action-btn', 'btn-warn', { 'btn-loading': isEditLoading }]" :disabled="isEditLoading" - @click="eidt"> - {{ isEditLoading ? '淇敼涓�...' : '淇濆瓨淇敼' }} - </button> - <button @click="showPopup = !showPopup"> - 鍙栨秷 - </button> - </view> - </form> </view> </view> - - <!-- 淇敼涓嶅悎鏍兼弿杩板脊鍑哄眰 --> - <view v-if="remarksPopup" class="overlay active"> - <view :class="{ 'popup-scale': isPopupAnimated }" class="popup" @animationend="isPopupAnimated = false"> - <view class="popup-header"> - <h3 class="popup-title">淇敼涓嶅悎鏍兼弿杩�</h3> - <view class="close-btn" @click="remarksPopup = !remarksPopup">脳</view> - </view> - <form> - <view class="form-group"> - <label class="form-label">涓嶅悎鏍兼弿杩�:</label> - <input v-model="remarks" class="form-input" type="text"/> - </view> - <view class="button-group"> - <button :class="['action-btn', 'btn-warn', { 'btn-loading': isRemarksLoading }]" - :disabled="isRemarksLoading" @click="editRemarks"> - {{ isRemarksLoading ? '淇濆瓨涓�...' : '淇敼' }} - </button> - <button @click="remarksPopup = !remarksPopup"> - 鍙栨秷 - </button> - </view> - </form> - </view> - </view> - </view> -</template> - -<script> -export default { - data() { - return { - formData: {}, - isNumber: false, - hasStandardValues: false, - checkItem: "", - id: 0, - gid: 0, - billNo: "", - showPopup: false, - editData: {}, - tableData: [], - isShowImg: false, - base64Image: "", - remarks: "", - remarksPopup: false, - fcheckResuK: "", - isLoading: false, - isEditLoading: false, - isRemarksLoading: false, - isHoveringRow: -1, - isPopupAnimated: false, - } - }, - methods: { - getDisplayResult() { - // 甯︽爣鍑嗗�肩殑椤圭洰锛屾牴鎹〃鏍兼暟鎹腑鐨勬楠岀粨鏋滄潵鏄剧ず鐘舵�� - if (this.hasStandardValues) { - // 妫�鏌ヨ〃鏍间腑鏄惁鏈夋楠岀粨鏋� - const hasResult = this.tableData.some(item => item.fcheckResu && item.fcheckResu !== ''); - if (hasResult) { - // 鏈夋楠岀粨鏋滄椂锛屾牴鎹渶鏂扮殑妫�楠岀粨鏋滄樉绀虹姸鎬� - const latestResult = this.tableData.find(item => item.fcheckResu && item.fcheckResu !== ''); - if (latestResult) { - return latestResult.fstand === '鈭�' ? '鍚堟牸' : '涓嶅悎鏍�'; + </template> + + <script> + export default { + data() { + return { + formData: {}, + isNumber: false, + hasStandardValues: false, + checkItem: "", + id: 0, + gid: 0, + billNo: "", + showPopup: false, + editData: {}, + tableData: [], + isShowImg: false, + base64Image: "", + remarks: "", + remarksPopup: false, + fcheckResuK: "", + isLoading: false, + isEditLoading: false, + isRemarksLoading: false, + isHoveringRow: -1, + isPopupAnimated: false, + } + }, + methods: { + getDisplayResult() { + // 甯︽爣鍑嗗�肩殑椤圭洰锛屾牴鎹〃鏍兼暟鎹腑鐨勬楠岀粨鏋滄潵鏄剧ず鐘舵�� + if (this.hasStandardValues) { + // 妫�鏌ヨ〃鏍间腑鏄惁鏈夋楠岀粨鏋� + const hasResult = this.tableData.some(item => item.fcheckResu && item.fcheckResu !== ''); + if (hasResult) { + // 鏈夋楠岀粨鏋滄椂锛屾牴鎹渶鏂扮殑妫�楠岀粨鏋滄樉绀虹姸鎬� + const latestResult = this.tableData.find(item => item.fcheckResu && item.fcheckResu !== ''); + if (latestResult) { + return latestResult.fstand === '鈭�' ? '鍚堟牸' : '涓嶅悎鏍�'; + } + } + // 娌℃湁妫�楠岀粨鏋滄椂鏄剧ず涓虹┖ + return ''; + } else { + // 鏃犳爣鍑嗗�肩殑椤圭洰锛岀洿鎺ユ樉绀篺ormData.result + return this.formData.result || ''; + } + }, + notifyAddPage() { + // 閫氱煡add椤甸潰鏁版嵁宸叉洿鏂� + uni.$emit('inspectionDataUpdated', { + id: this.gid, // 浣跨敤gid浣滀负妫�楠屽崟ID + gid: this.gid, + billNo: this.billNo + }); + }, + previewImage() { + uni.previewImage({ + urls: [this.base64Image], + }); + }, + editResult(fcheckResu) { + if (fcheckResu == '1') { + return "鏀逛负涓嶅悎鏍�"; + } else { + return "鏀逛负鍚堟牸"; + } + }, + autoGenerateDefaultResult() { + // 闈炴暟鍊煎瀷椤圭洰锛氳嚜鍔ㄨˉ榻愯嚦妫�楠屾暟閲忥紙榛樿鍚堟牸锛夛紝渚夸簬閫愭潯璋冩暣 + if (!this.hasStandardValues) { + const totalNeeded = Number(this.formData.levelNum) || 0; + const currentCount = this.tableData.length || 0; + const remaining = totalNeeded - currentCount; + if (remaining > 0) { + this.$post({ + url: "/THJ/SetQSItemDetail", + data: { + pid: this.id, + gid: this.gid, + fstand: "鈭�", + fcheckResu: "1", + updateBy: this.$loginInfo.account, + count: remaining + } + }).then(() => { + // 鍒锋柊鏁版嵁浠ユ樉绀烘柊鐢熸垚鐨勮褰� + this.refreshResult(); + }).catch(() => { + this.$showMessage("鑷姩鐢熸垚榛樿璁板綍澶辫触"); + }); } } - // 娌℃湁妫�楠岀粨鏋滄椂鏄剧ず涓虹┖ - return ''; - } else { - // 鏃犳爣鍑嗗�肩殑椤圭洰锛岀洿鎺ユ樉绀篺ormData.result - return this.formData.result || ''; - } - }, - notifyAddPage() { - // 閫氱煡add椤甸潰鏁版嵁宸叉洿鏂� - uni.$emit('inspectionDataUpdated', { - id: this.gid, // 浣跨敤gid浣滀负妫�楠屽崟ID - gid: this.gid, - billNo: this.billNo - }); - }, - previewImage() { - uni.previewImage({ - urls: [this.base64Image], - }); - }, - editResult(fcheckResu) { - if (fcheckResu == '1') { - return "鏀逛负涓嶅悎鏍�"; - } else { - return "鏀逛负鍚堟牸"; - } - }, - autoGenerateDefaultResult() { - // 妫�鏌ユ槸鍚﹀凡缁忔湁妫�楠岀粨鏋滆褰� - if (this.tableData.length === 0) { - // 鍙湁娌℃湁鏍囧噯鍊兼椂鎵嶈嚜鍔ㄧ敓鎴愰粯璁ょ殑鍚堟牸璁板綍 - if (!this.hasStandardValues) { - this.$post({ - url: "/THJ/SetQSItemDetail", - data: { - pid: this.id, - gid: this.gid, - fstand: "鈭�", // 榛樿鍚堟牸 - fcheckResu: "1", // 榛樿鍚堟牸 - updateBy: this.$loginInfo.account, - count: 1 - } - }).then(res => { - // 鍒锋柊鏁版嵁浠ユ樉绀烘柊鐢熸垚鐨勮褰� - this.refreshResult(); - }).catch(err => { - this.$showMessage("鑷姩鐢熸垚榛樿璁板綍澶辫触"); - }); - } - } - }, - submit() { - this.isLoading = true; - let count = this.formData.levelNum; - let fstand = "鈭�"; - - // 妫�鏌ユ槸鍚︽湁涓婁笅闄� - const hasLimits = Number(this.formData.maxValue) && Number(this.formData.minValue); - - if (hasLimits) { - // 鏈変笂涓嬮檺鏃讹紝鎵�鏈夎緭鍏ラ兘鎸夋暟鍊煎鐞� - if (!this.fcheckResuK) { - this.$showMessage("璇疯緭鍏ユ楠屽��"); - this.isLoading = false; - return; - } + }, + submit() { + this.isLoading = true; + let count = this.formData.levelNum; + let fstand = "鈭�"; - // 妫�鏌ヨ緭鍏ユ槸鍚︿负鏈夋晥鏁板�� - const inputValue = Number(this.fcheckResuK); - if (isNaN(inputValue)) { - this.$showMessage("璇疯緭鍏ユ湁鏁堢殑鏁板��"); - this.isLoading = false; - return; - } + // 妫�鏌ユ槸鍚︽湁涓婁笅闄� + const hasLimits = Number(this.formData.maxValue) && Number(this.formData.minValue); - // 鏍规嵁涓婁笅闄愬垽鏂悎鏍�/涓嶅悎鏍� - if (inputValue >= Number(this.formData.minValue) && inputValue <= Number(this.formData.maxValue)) { + if (hasLimits) { + // 鏈変笂涓嬮檺鏃讹紝鎵�鏈夎緭鍏ラ兘鎸夋暟鍊煎鐞� + if (!this.fcheckResuK) { + this.$showMessage("璇疯緭鍏ユ楠屽��"); + this.isLoading = false; + return; + } + + // 妫�鏌ヨ緭鍏ユ槸鍚︿负鏈夋晥鏁板�� + const inputValue = Number(this.fcheckResuK); + if (isNaN(inputValue)) { + this.$showMessage("璇疯緭鍏ユ湁鏁堢殑鏁板��"); + this.isLoading = false; + return; + } + + // 鏍规嵁涓婁笅闄愬垽鏂悎鏍�/涓嶅悎鏍� + if (inputValue >= Number(this.formData.minValue) && inputValue <= Number(this.formData.maxValue)) { + fstand = "鈭�"; + } else { + fstand = "脳"; + } + count = 1; + } else { + // 鏃犱笂涓嬮檺鏃讹紝榛樿璁剧疆涓哄悎鏍硷紝涓嶉渶瑕佺敤鎴疯緭鍏� + this.formData.isPass = 1; fstand = "鈭�"; - } else { - fstand = "脳"; + this.fcheckResuK = "1"; // 鑷姩璁剧疆涓哄悎鏍� + // 纭繚涓嶄細瓒呰繃妫�楠屾暟 + count = Math.min(1, this.formData.levelNum - this.tableData.length); + if (count <= 0) { + this.$showMessage("妫�楠屽凡瀹屾垚锛屾棤闇�缁х画淇濆瓨"); + this.isLoading = false; + return; + } } - count = 1; - } else { - // 鏃犱笂涓嬮檺鏃讹紝榛樿璁剧疆涓哄悎鏍硷紝涓嶉渶瑕佺敤鎴疯緭鍏� - this.formData.isPass = 1; - fstand = "鈭�"; - this.fcheckResuK = "1"; // 鑷姩璁剧疆涓哄悎鏍� - // 纭繚涓嶄細瓒呰繃妫�楠屾暟 - count = Math.min(1, this.formData.levelNum - this.tableData.length); - if (count <= 0) { - this.$showMessage("妫�楠屽凡瀹屾垚锛屾棤闇�缁х画淇濆瓨"); + + this.formData.updater = this.$loginInfo.account; + + this.$post({ + url: "/THJ/SetQSItemDetail", + data: { + pid: this.id, + gid: this.gid, + fstand: fstand, + fcheckResu: this.fcheckResuK, + updateBy: this.formData.updater, + count: count + } + }).then(res => { + this.$showMessage("淇濆瓨鎴愬姛"); + // 娣诲姞灏忓欢杩熺‘淇濇湇鍔″櫒澶勭悊瀹屾垚 + setTimeout(() => { + // 鍏堝埛鏂版暟鎹紝纭繚鏄剧ず鏈�鏂扮粨鏋� + this.refreshResult().then(() => { + // 鏁版嵁鍒锋柊瀹屾垚鍚庡啀娓呯┖杈撳叆妗� + this.fcheckResuK = ""; + // 閫氱煡add椤甸潰鏁版嵁宸叉洿鏂� + this.notifyAddPage(); + }); + }, 500); this.isLoading = false; - return; - } - } - - this.formData.updater = this.$loginInfo.account; - - this.$post({ - url: "/THJ/SetQSItemDetail", - data: { - pid: this.id, - gid: this.gid, - fstand: fstand, - fcheckResu: this.fcheckResuK, - updateBy: this.formData.updater, - count: count - } - }).then(res => { - this.$showMessage("淇濆瓨鎴愬姛"); - // 娣诲姞灏忓欢杩熺‘淇濇湇鍔″櫒澶勭悊瀹屾垚 - setTimeout(() => { - // 鍏堝埛鏂版暟鎹紝纭繚鏄剧ず鏈�鏂扮粨鏋� - this.refreshResult().then(() => { - // 鏁版嵁鍒锋柊瀹屾垚鍚庡啀娓呯┖杈撳叆妗� - this.fcheckResuK = ""; - // 閫氱煡add椤甸潰鏁版嵁宸叉洿鏂� - this.notifyAddPage(); - }); - }, 500); - this.isLoading = false; - }).catch(() => { - this.$showMessage("淇濆瓨澶辫触锛岃閲嶈瘯"); - this.isLoading = false; - }); - }, - refreshResult() { - this.isLoading = true; - return this.$post({ - url: "/THJ/getThjDetail02ById", - data: { - id: this.id - } - }).then(res => { + }).catch(() => { + this.$showMessage("淇濆瓨澶辫触锛岃閲嶈瘯"); + this.isLoading = false; + }); + }, + refreshResult() { + this.isLoading = true; + return this.$post({ + url: "/THJ/getThjDetail02ById", + data: { + id: this.id + } + }).then(res => { + + this.formData = res.data.tbBillList.itemThj01; + this.tableData = res.data.tbBillList.itemThj02s; + + + if (this.formData.imageData) { + this.isShowImg = true; + this.base64Image = 'data:image/jpeg;base64,' + this.formData.imageData; + } + + // 妫�鏌ユ槸鍚︽湁鏍囧噯鍊� + this.hasStandardValues = !!(this.formData.maxValue && this.formData.minValue && this.formData.standardValue); + + if (this.hasStandardValues) { + this.isNumber = true; + // 甯︽爣鍑嗗�肩殑椤圭洰锛屼繚鎸佸師濮嬫暟鎹紝鐢眊etDisplayResult鏂规硶澶勭悊鏄剧ず + } else { + this.isNumber = false; + // 娌℃湁鏍囧噯鍊兼椂锛岃嚜鍔ㄧ敓鎴愰粯璁ょ殑鍚堟牸璁板綍 + this.autoGenerateDefaultResult(); + } + this.isLoading = false; + return res; + }).catch(() => { + this.$showMessage("鑾峰彇鏁版嵁澶辫触"); + this.isLoading = false; + throw new Error("鑾峰彇鏁版嵁澶辫触"); + }); + }, + toDetail(item) { + this.showPopup = !this.showPopup; + this.editData = item; + }, + eidt() { + this.isEditLoading = true; - this.formData = res.data.tbBillList.itemThj01; - this.tableData = res.data.tbBillList.itemThj02s; - - - if (this.formData.imageData) { - this.isShowImg = true; - this.base64Image = 'data:image/jpeg;base64,' + this.formData.imageData; - } - - // 妫�鏌ユ槸鍚︽湁鏍囧噯鍊� - this.hasStandardValues = !!(this.formData.maxValue && this.formData.minValue && this.formData.standardValue); - - if (this.hasStandardValues) { - this.isNumber = true; - // 甯︽爣鍑嗗�肩殑椤圭洰锛屼繚鎸佸師濮嬫暟鎹紝鐢眊etDisplayResult鏂规硶澶勭悊鏄剧ず - } else { - this.isNumber = false; - // 娌℃湁鏍囧噯鍊兼椂锛岃嚜鍔ㄧ敓鎴愰粯璁ょ殑鍚堟牸璁板綍 - this.autoGenerateDefaultResult(); - } - this.isLoading = false; - return res; - }).catch(() => { - this.$showMessage("鑾峰彇鏁版嵁澶辫触"); - this.isLoading = false; - throw new Error("鑾峰彇鏁版嵁澶辫触"); - }); - }, - toDetail(item) { - this.showPopup = !this.showPopup; - this.editData = item; - }, - eidt() { - this.isEditLoading = true; - - if (!this.editData.fcheckResu) { - this.$showMessage("璇疯緭鍏ユ楠岀粨鏋�"); - this.isEditLoading = false; - return; - } - - if (this.formData.fcheckResu == this.editData.fcheckResu) { - this.$showMessage("淇敼鎴愬姛"); - this.showPopup = false; - this.isEditLoading = false; - return; - } - - let fstand = "鈭�"; - - // 妫�鏌ユ槸鍚︽湁涓婁笅闄� - const hasLimits = this.formData.maxValue && this.formData.minValue; - - if (hasLimits) { - // 鏈変笂涓嬮檺鏃讹紝鎵�鏈夎緭鍏ラ兘鎸夋暟鍊煎鐞� - if (!this.editData.fcheckResu) { - this.$showMessage("璇疯緭鍏ユ楠屽��"); - this.isEditLoading = false; - return; - } - - // 妫�鏌ヨ緭鍏ユ槸鍚︿负鏈夋晥鏁板�� - const inputValue = Number(this.editData.fcheckResu); - if (isNaN(inputValue)) { - this.$showMessage("璇疯緭鍏ユ湁鏁堢殑鏁板��"); - this.isEditLoading = false; - return; - } - - // 鏍规嵁涓婁笅闄愬垽鏂悎鏍�/涓嶅悎鏍� - if (inputValue >= Number(this.formData.minValue) && inputValue <= Number(this.formData.maxValue)) { - this.editData.isPass = 1; - fstand = "鈭�"; - } else { - this.editData.isPass = 0; - fstand = "脳"; - } - } else { - // 鏃犱笂涓嬮檺鏃讹紝鍙兘杈撳叆0鎴�1 if (!this.editData.fcheckResu) { this.$showMessage("璇疯緭鍏ユ楠岀粨鏋�"); this.isEditLoading = false; return; } + + if (this.formData.fcheckResu == this.editData.fcheckResu) { + this.$showMessage("淇敼鎴愬姛"); + this.showPopup = false; + this.isEditLoading = false; + return; + } + + let fstand = "鈭�"; - if (this.editData.fcheckResu == 0 || this.editData.fcheckResu == 1) { - if (this.editData.fcheckResu == 1) { + // 妫�鏌ユ槸鍚︽湁涓婁笅闄� + const hasLimits = this.formData.maxValue && this.formData.minValue; + + if (hasLimits) { + // 鏈変笂涓嬮檺鏃讹紝鎵�鏈夎緭鍏ラ兘鎸夋暟鍊煎鐞� + if (!this.editData.fcheckResu) { + this.$showMessage("璇疯緭鍏ユ楠屽��"); + this.isEditLoading = false; + return; + } + + // 妫�鏌ヨ緭鍏ユ槸鍚︿负鏈夋晥鏁板�� + const inputValue = Number(this.editData.fcheckResu); + if (isNaN(inputValue)) { + this.$showMessage("璇疯緭鍏ユ湁鏁堢殑鏁板��"); + this.isEditLoading = false; + return; + } + + // 鏍规嵁涓婁笅闄愬垽鏂悎鏍�/涓嶅悎鏍� + if (inputValue >= Number(this.formData.minValue) && inputValue <= Number(this.formData.maxValue)) { this.editData.isPass = 1; fstand = "鈭�"; } else { @@ -521,621 +507,637 @@ fstand = "脳"; } } else { - this.$showMessage("鏃犳爣鍑嗗�兼椂锛屾楠岀粨鏋滃彧鑳戒负0锛堜笉鍚堟牸锛夋垨1锛堝悎鏍硷級!"); - this.isEditLoading = false; - return; + // 鏃犱笂涓嬮檺鏃讹紝鍙兘杈撳叆0鎴�1 + if (!this.editData.fcheckResu) { + this.$showMessage("璇疯緭鍏ユ楠岀粨鏋�"); + this.isEditLoading = false; + return; + } + + if (this.editData.fcheckResu == 0 || this.editData.fcheckResu == 1) { + if (this.editData.fcheckResu == 1) { + this.editData.isPass = 1; + fstand = "鈭�"; + } else { + this.editData.isPass = 0; + fstand = "脳"; + } + } else { + this.$showMessage("鏃犳爣鍑嗗�兼椂锛屾楠岀粨鏋滃彧鑳戒负0锛堜笉鍚堟牸锛夋垨1锛堝悎鏍硷級!"); + this.isEditLoading = false; + return; + } } - } - - this.editData.updater = this.$loginInfo.account; - - this.$post({ - url: "/THJ/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 = false; - this.$showMessage("淇敼鎴愬姛"); - // 娣诲姞灏忓欢杩熺‘淇濇湇鍔″櫒澶勭悊瀹屾垚 - setTimeout(() => { - this.refreshResult().then(() => { - // 閫氱煡add椤甸潰鏁版嵁宸叉洿鏂� - this.notifyAddPage(); - }); - }, 500); - this.isEditLoading = false; - }).catch(() => { - this.$showMessage("淇敼澶辫触锛岃閲嶈瘯"); - this.isEditLoading = false; - }); - }, - numberEdit(item) { - this.isLoading = true; - let fstand = "鈭�"; - let fcheckResu = "1"; - - // 鏍规嵁褰撳墠鐘舵�佸垏鎹㈠悎鏍�/涓嶅悎鏍� - if (item.fcheckResu === "1" || item.fcheckResu === "OK") { - // 褰撳墠鏄悎鏍硷紝鏀逛负涓嶅悎鏍� - fstand = "脳"; - fcheckResu = "0"; - } else { - // 褰撳墠鏄笉鍚堟牸锛屾敼涓哄悎鏍� - fstand = "鈭�"; - fcheckResu = "1"; - } - - this.$post({ - url: "/THJ/UpdateQSItemDetail", - data: { - id: item.id, - pid: item.pid, - gid: item.gid, - fstand: fstand, - fcheckResu: fcheckResu, - updateBy: this.$loginInfo.account, - } - }).then(res => { - this.$showMessage("淇敼鎴愬姛"); - // 娣诲姞灏忓欢杩熺‘淇濇湇鍔″櫒澶勭悊瀹屾垚 - setTimeout(() => { - this.refreshResult().then(() => { - // 閫氱煡add椤甸潰鏁版嵁宸叉洿鏂� - this.notifyAddPage(); - }); - }, 500); - this.isLoading = false; - }).catch(() => { - this.$showMessage("淇敼澶辫触锛岃閲嶈瘯"); - this.isLoading = false; - }); - }, - saveRemarks() { - this.remarksPopup = !this.remarksPopup; - this.remarks = this.formData.remarks; - }, - editRemarks() { - this.isRemarksLoading = true; - if (this.remarks) { + + this.editData.updater = this.$loginInfo.account; + this.$post({ - url: "/THJ/saveRemarksPid", + url: "/THJ/UpdateQSItemDetail", data: { - pid: this.formData.id, - remarks: this.remarks + id: this.editData.id, + pid: this.id, + gid: this.gid, + fstand: fstand, + fcheckResu: this.editData.fcheckResu, + updateBy: this.editData.updater, } }).then(res => { - if (res.data.tbBillList > 0) { - this.formData.remarks = this.remarks; - this.remarksPopup = false; - this.$showMessage("淇濆瓨鎴愬姛"); - } else { - this.$showMessage("淇濆瓨澶辫触"); - } - this.isRemarksLoading = false; + this.showPopup = false; + this.$showMessage("淇敼鎴愬姛"); + // 娣诲姞灏忓欢杩熺‘淇濇湇鍔″櫒澶勭悊瀹屾垚 + setTimeout(() => { + this.refreshResult().then(() => { + // 閫氱煡add椤甸潰鏁版嵁宸叉洿鏂� + this.notifyAddPage(); + }); + }, 500); + this.isEditLoading = false; }).catch(() => { - this.$showMessage("淇濆瓨澶辫触锛岃閲嶈瘯"); - this.isRemarksLoading = false; + this.$showMessage("淇敼澶辫触锛岃閲嶈瘯"); + this.isEditLoading = false; }); - } else { - this.$showMessage("璇疯緭鍏ヤ笉鍚堟牸鎻忚堪"); - this.isRemarksLoading = false; + }, + numberEdit(item) { + this.isLoading = true; + let fstand = "鈭�"; + let fcheckResu = "1"; + + // 鏍规嵁褰撳墠鐘舵�佸垏鎹㈠悎鏍�/涓嶅悎鏍� + if (item.fcheckResu === "1" || item.fcheckResu === "OK") { + // 褰撳墠鏄悎鏍硷紝鏀逛负涓嶅悎鏍� + fstand = "脳"; + fcheckResu = "0"; + } else { + // 褰撳墠鏄笉鍚堟牸锛屾敼涓哄悎鏍� + fstand = "鈭�"; + fcheckResu = "1"; + } + + this.$post({ + url: "/THJ/UpdateQSItemDetail", + data: { + id: item.id, + pid: item.pid, + gid: item.gid, + fstand: fstand, + fcheckResu: fcheckResu, + updateBy: this.$loginInfo.account, + } + }).then(res => { + this.$showMessage("淇敼鎴愬姛"); + // 娣诲姞灏忓欢杩熺‘淇濇湇鍔″櫒澶勭悊瀹屾垚 + setTimeout(() => { + this.refreshResult().then(() => { + // 閫氱煡add椤甸潰鏁版嵁宸叉洿鏂� + this.notifyAddPage(); + }); + }, 500); + this.isLoading = false; + }).catch(() => { + this.$showMessage("淇敼澶辫触锛岃閲嶈瘯"); + this.isLoading = false; + }); + }, + saveRemarks() { + this.remarksPopup = !this.remarksPopup; + this.remarks = this.formData.remarks; + }, + editRemarks() { + this.isRemarksLoading = true; + if (this.remarks) { + this.$post({ + url: "/THJ/saveRemarksPid", + data: { + pid: this.formData.id, + remarks: this.remarks + } + }).then(res => { + if (res.data.tbBillList > 0) { + this.formData.remarks = this.remarks; + this.remarksPopup = false; + this.$showMessage("淇濆瓨鎴愬姛"); + } else { + this.$showMessage("淇濆瓨澶辫触"); + } + this.isRemarksLoading = false; + }).catch(() => { + this.$showMessage("淇濆瓨澶辫触锛岃閲嶈瘯"); + this.isRemarksLoading = false; + }); + } else { + this.$showMessage("璇疯緭鍏ヤ笉鍚堟牸鎻忚堪"); + this.isRemarksLoading = false; + } } + }, + onLoad(options) { + //options涓寘鍚簡url闄勫甫鐨勫弬鏁� + let params = options; + + this.id = params["id"]; + this.billNo = params["billNo"]; + this.gid = params["gid"]; + + this.refreshResult(); + }, + onUnload() { + // 椤甸潰鍗歌浇鏃讹紝閫氱煡鐖堕〉闈㈡暟鎹彲鑳藉凡鏇存柊 + // 閫氳繃浜嬩欢鎬荤嚎閫氱煡Add.vue椤甸潰鍒锋柊鏁版嵁 + uni.$emit('inspectionDataUpdated', { + id: this.id, + gid: this.gid + }); } - }, - onLoad(options) { - //options涓寘鍚簡url闄勫甫鐨勫弬鏁� - let params = options; - - this.id = params["id"]; - this.billNo = params["billNo"]; - this.gid = params["gid"]; - - this.refreshResult(); - }, - onUnload() { - // 椤甸潰鍗歌浇鏃讹紝閫氱煡鐖堕〉闈㈡暟鎹彲鑳藉凡鏇存柊 - // 閫氳繃浜嬩欢鎬荤嚎閫氱煡Add.vue椤甸潰鍒锋柊鏁版嵁 - uni.$emit('inspectionDataUpdated', { - id: this.id, - gid: this.gid - }); } -} -</script> - -<style> -/* 椤甸潰瀹瑰櫒 */ -.page-container { - padding: 20px; - background-color: #f5f5f5; - min-height: 100vh; -} - -/* 琛ㄥ崟鍗$墖 */ -.form-card { - background-color: #fff; - border-radius: 12px; - padding: 20px; - margin-bottom: 20px; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); -} - -/* 琛ㄥ崟鏍囬 */ -.form-title { - display: flex; - align-items: center; - font-size: 18px; - color: #333; - margin-bottom: 15px; -} - -.title-icon { - font-size: 22px; - margin-right: 10px; -} - -/* 琛ㄥ崟瀹瑰櫒 */ -.form-container { - padding-top: 10px; -} - -/* 琛ㄥ崟妯″潡鏍囬 */ -.form-section { - margin-bottom: 20px; -} - -.section-title { - font-size: 16px; - font-weight: 600; - color: #333; - margin-bottom: 10px; -} - -/* 琛ㄦ牸甯冨眬 */ -.form-grid { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 15px; -} - -/* 琛ㄥ崟椤� */ -.form-group { - display: flex; - align-items: center; -} - -.form-label { - width: 130px; - color: #333; - font-size: 14px; - font-weight: 500; -} - -.form-input { - flex: 1; - height: 40px; - padding: 0 10px; - border: 1px solid #e0e0e0; - border-radius: 8px; - background-color: #f8f8f8; - color: #666; - font-size: 14px; -} - -.form-input:disabled { - background-color: #e9e9e9; -} - -.form-input:focus { - border-color: #007AFF; - outline: none; -} - -/* 妫�楠岀粨鏋滃尯鍩� */ -.tip-group { - margin-top: 15px; -} - -.tip-box { - display: flex; - align-items: center; - background-color: #fff5d1; - padding: 10px; - border-radius: 8px; - border: 1px solid #f0e0a7; -} - -.tip-icon { - font-size: 20px; - color: #f39c12; - margin-right: 10px; -} - -.tip-text { - font-size: 14px; - color: #333; -} - -.highlight { - color: #007AFF; - font-weight: 600; -} - -/* 鎸夐挳鏍峰紡 */ -.action-btn { - width: 100%; - padding: 12px; - border-radius: 8px; - border: none; - color: #fff; - font-size: 16px; - font-weight: 500; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - transition: background-color 0.3s ease; -} - -.btn-primary { - background-color: #007AFF; -} - -.btn-primary:hover { - background-color: #0056CC; -} - -.btn-warn { - background-color: #f1b344; -} - -.btn-warn:hover { - background-color: #e6a135; -} - -.btn-disabled { - background-color: #c0c0c0; - cursor: not-allowed; -} - -/* 寮瑰嚭灞傛牱寮� */ -.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; - opacity: 0; - transition: opacity 0.3s ease; -} - -.overlay.active { - opacity: 1; -} - -.popup { - background-color: #fff; - border-radius: 12px; - width: 90%; - max-width: 500px; - padding: 20px; - transform: scale(0.8); - transition: transform 0.3s ease; -} - -.popup-scale { - transform: scale(1); -} - -.popup-header { - display: flex; - justify-content: space-between; - align-items: center; -} - -.popup-title { - font-size: 16px; - font-weight: 600; - color: #333; -} - -.close-btn { - font-size: 20px; - color: #333; - cursor: pointer; -} - -/* 鎿嶄綔鎸夐挳缁� */ -.button-group { - display: flex; - justify-content: space-between; - margin-top: 20px; -} - -.button-group button { - width: 48%; - padding: 10px; - border-radius: 8px; - border: none; - font-size: 14px; - font-weight: 500; - cursor: pointer; -} - -/* 妫�楠岀粨鏋滆〃鏍煎崱鐗� */ -.table-card { - background-color: #fff; - border-radius: 12px; - padding: 20px; - margin-bottom: 20px; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); -} - -/* 琛ㄦ牸鏍囬 */ -.table-title { - display: flex; - align-items: center; - font-size: 16px; - color: #333; - font-weight: 600; - margin-bottom: 15px; -} - -/* 琛ㄦ牸鏍峰紡 */ -.uni-table { - width: 100%; - border-collapse: collapse; -} - -.uni-th, -.uni-td { - padding: 12px; - text-align: center; -} - -.uni-th { - background-color: #f5f5f5; - font-size: 14px; - color: #666; - font-weight: 500; -} - -.table-row { - background-color: #fff; - border-bottom: 1px solid #e0e0e0; -} - -.table-row:hover { - background-color: #f9f9f9; -} - -.result-badge { - padding: 5px 12px; - font-size: 12px; - border-radius: 10px; - color: #fff; - display: inline-block; -} - -.pass { - background-color: #28a745; -} - -.fail { - background-color: #dc3545; -} - -.pending { - background-color: #f1b344; -} - -.action-group { - display: flex; - gap: 10px; -} - -.action-btn.btn-sm { - width: auto; - padding: 6px 12px; - font-size: 12px; -} - -/* 鎻愮ず淇℃伅 */ -.hover-effect:hover { - background-color: #f9f9f9; -} - -.btn-sm { - font-size: 14px; -} - -.btn-loading { - background-color: #c0c0c0; - cursor: not-allowed; -} - -/* 涓変釜妯″潡骞跺垪瀹瑰櫒鏍峰紡 */ -.three-modules-container { - display: flex; - flex-direction: column; - gap: 15px; - margin-bottom: 20px; -} - -/* 妯″潡椤规牱寮� */ -.module-item { - background-color: #f8f9fa; - border-radius: 8px; - padding: 15px; - border: 1px solid #e0e0e0; -} - -.module-header { - border-bottom: 1px solid #d0d0d0; - padding-bottom: 8px; - margin-bottom: 12px; -} - -.module-title { - font-size: 15px; - font-weight: 600; - color: #333; -} - -/* 妫�楠岀粨鏋滄樉绀烘牱寮� */ -.result-display { - display: flex; - flex-direction: column; - align-items: center; - gap: 5px; -} - -.result-number { - font-size: 16px; - font-weight: 600; - color: #333; - background-color: #f8f9fa; - padding: 8px 12px; - border-radius: 8px; - border: 2px solid #e0e0e0; - display: inline-block; - min-width: 40px; - text-align: center; -} - -/* 鍥剧墖瀹瑰櫒 */ -.image-container { - background-color: #fff; - border-radius: 12px; - padding: 20px; - margin-bottom: 20px; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); -} - -.preview-image { - width: 100%; - border-radius: 8px; - cursor: pointer; -} - -/* 鎿嶄綔鎸夐挳鍖哄煙 */ -.action-buttons { - background-color: #fff; - border-radius: 12px; - padding: 20px; - margin-bottom: 20px; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); -} - -/* 鎵嬫満灞忓箷浼樺寲 */ -@media (max-width: 768px) { + </script> + + <style> + /* 椤甸潰瀹瑰櫒 */ .page-container { - padding: 10px; + padding: 20px; + background-color: #f5f5f5; + min-height: 100vh; } - - .form-card, .table-card, .action-buttons, .image-container { - padding: 15px; - border-radius: 8px; + + /* 琛ㄥ崟鍗$墖 */ + .form-card { + background-color: #fff; + border-radius: 12px; + padding: 20px; + margin-bottom: 20px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } - + + /* 琛ㄥ崟鏍囬 */ + .form-title { + display: flex; + align-items: center; + font-size: 18px; + color: #333; + margin-bottom: 15px; + } + + .title-icon { + font-size: 22px; + margin-right: 10px; + } + + /* 琛ㄥ崟瀹瑰櫒 */ + .form-container { + padding-top: 10px; + } + + /* 琛ㄥ崟妯″潡鏍囬 */ + .form-section { + margin-bottom: 20px; + } + + .section-title { + font-size: 16px; + font-weight: 600; + color: #333; + margin-bottom: 10px; + } + + /* 琛ㄦ牸甯冨眬 */ .form-grid { - grid-template-columns: 1fr; - gap: 12px; + display: grid; + grid-template-columns: 1fr 1fr; + gap: 15px; } - + + /* 琛ㄥ崟椤� */ .form-group { - flex-direction: column; - align-items: flex-start; + display: flex; + align-items: center; } - + .form-label { - width: auto; - margin-bottom: 5px; - font-size: 13px; + width: 130px; + color: #333; + font-size: 14px; + font-weight: 500; } - + .form-input { - width: 100%; - height: 36px; - font-size: 13px; - } - - .three-modules-container { - gap: 12px; - } - - .module-item { - padding: 12px; - } - - .module-title { + flex: 1; + height: 40px; + padding: 0 10px; + border: 1px solid #e0e0e0; + border-radius: 8px; + background-color: #f8f8f8; + color: #666; font-size: 14px; } - + + .form-input:disabled { + background-color: #e9e9e9; + } + + .form-input:focus { + border-color: #007AFF; + outline: none; + } + + /* 妫�楠岀粨鏋滃尯鍩� */ + .tip-group { + margin-top: 15px; + } + .tip-box { - padding: 8px; - } - - .tip-text { - font-size: 13px; - } - - .result-number { - font-size: 14px; - padding: 6px 10px; - min-width: 35px; - } - - .result-badge { - font-size: 11px; - padding: 4px 10px; - } -} - -/* 瓒呭皬灞忓箷浼樺寲 */ -@media (max-width: 480px) { - .page-container { - padding: 8px; - } - - .form-card, .table-card, .action-buttons, .image-container { - padding: 12px; - } - - .form-input { - height: 34px; - font-size: 12px; - } - - .form-label { - font-size: 12px; - } - - .action-btn { + display: flex; + align-items: center; + background-color: #fff5d1; padding: 10px; - font-size: 14px; + border-radius: 8px; + border: 1px solid #f0e0a7; } - .result-number { - font-size: 12px; - padding: 4px 8px; - min-width: 30px; + .tip-icon { + font-size: 20px; + color: #f39c12; + margin-right: 10px; + } + + .tip-text { + font-size: 14px; + color: #333; + } + + .highlight { + color: #007AFF; + font-weight: 600; + } + + /* 鎸夐挳鏍峰紡 */ + .action-btn { + width: 100%; + padding: 12px; + border-radius: 8px; + border: none; + color: #fff; + font-size: 16px; + font-weight: 500; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: background-color 0.3s ease; + } + + .btn-primary { + background-color: #007AFF; + } + + .btn-primary:hover { + background-color: #0056CC; + } + + .btn-warn { + background-color: #f1b344; + } + + .btn-warn:hover { + background-color: #e6a135; + } + + .btn-disabled { + background-color: #c0c0c0; + cursor: not-allowed; + } + + /* 寮瑰嚭灞傛牱寮� */ + .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; + opacity: 0; + transition: opacity 0.3s ease; + } + + .overlay.active { + opacity: 1; + } + + .popup { + background-color: #fff; + border-radius: 12px; + width: 90%; + max-width: 500px; + padding: 20px; + transform: scale(0.8); + transition: transform 0.3s ease; + } + + .popup-scale { + transform: scale(1); + } + + .popup-header { + display: flex; + justify-content: space-between; + align-items: center; + } + + .popup-title { + font-size: 16px; + font-weight: 600; + color: #333; + } + + .close-btn { + font-size: 20px; + color: #333; + cursor: pointer; + } + + /* 鎿嶄綔鎸夐挳缁� */ + .button-group { + display: flex; + justify-content: space-between; + margin-top: 20px; + } + + .button-group button { + width: 48%; + padding: 10px; + border-radius: 8px; + border: none; + font-size: 14px; + font-weight: 500; + cursor: pointer; + } + + /* 妫�楠岀粨鏋滆〃鏍煎崱鐗� */ + .table-card { + background-color: #fff; + border-radius: 12px; + padding: 20px; + margin-bottom: 20px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + } + + /* 琛ㄦ牸鏍囬 */ + .table-title { + display: flex; + align-items: center; + font-size: 16px; + color: #333; + font-weight: 600; + margin-bottom: 15px; + } + + /* 琛ㄦ牸鏍峰紡 */ + .uni-table { + width: 100%; + border-collapse: collapse; + } + + .uni-th, + .uni-td { + padding: 12px; + text-align: center; + } + + .uni-th { + background-color: #f5f5f5; + font-size: 14px; + color: #666; + font-weight: 500; + } + + .table-row { + background-color: #fff; + border-bottom: 1px solid #e0e0e0; + } + + .table-row:hover { + background-color: #f9f9f9; } .result-badge { - font-size: 10px; - padding: 3px 8px; + padding: 5px 12px; + font-size: 12px; + border-radius: 10px; + color: #fff; + display: inline-block; } -} -</style> \ No newline at end of file + + .pass { + background-color: #28a745; + } + + .fail { + background-color: #dc3545; + } + + .pending { + background-color: #f1b344; + } + + .action-group { + display: flex; + gap: 10px; + } + + .action-btn.btn-sm { + width: auto; + padding: 6px 12px; + font-size: 12px; + } + + /* 鎻愮ず淇℃伅 */ + .hover-effect:hover { + background-color: #f9f9f9; + } + + .btn-sm { + font-size: 14px; + } + + .btn-loading { + background-color: #c0c0c0; + cursor: not-allowed; + } + + /* 涓変釜妯″潡骞跺垪瀹瑰櫒鏍峰紡 */ + .three-modules-container { + display: flex; + flex-direction: column; + gap: 15px; + margin-bottom: 20px; + } + + /* 妯″潡椤规牱寮� */ + .module-item { + background-color: #f8f9fa; + border-radius: 8px; + padding: 15px; + border: 1px solid #e0e0e0; + } + + .module-header { + border-bottom: 1px solid #d0d0d0; + padding-bottom: 8px; + margin-bottom: 12px; + } + + .module-title { + font-size: 15px; + font-weight: 600; + color: #333; + } + + /* 妫�楠岀粨鏋滄樉绀烘牱寮� */ + .result-display { + display: flex; + flex-direction: column; + align-items: center; + gap: 5px; + } + + .result-number { + font-size: 16px; + font-weight: 600; + color: #333; + background-color: #f8f9fa; + padding: 8px 12px; + border-radius: 8px; + border: 2px solid #e0e0e0; + display: inline-block; + min-width: 40px; + text-align: center; + } + + /* 鍥剧墖瀹瑰櫒 */ + .image-container { + background-color: #fff; + border-radius: 12px; + padding: 20px; + margin-bottom: 20px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + } + + .preview-image { + width: 100%; + border-radius: 8px; + cursor: pointer; + } + + /* 鎿嶄綔鎸夐挳鍖哄煙 */ + .action-buttons { + background-color: #fff; + border-radius: 12px; + padding: 20px; + margin-bottom: 20px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + } + + /* 鎵嬫満灞忓箷浼樺寲 */ + @media (max-width: 768px) { + .page-container { + padding: 10px; + } + + .form-card, .table-card, .action-buttons, .image-container { + padding: 15px; + border-radius: 8px; + } + + .form-grid { + grid-template-columns: 1fr; + gap: 12px; + } + + .form-group { + flex-direction: column; + align-items: flex-start; + } + + .form-label { + width: auto; + margin-bottom: 5px; + font-size: 13px; + } + + .form-input { + width: 100%; + height: 36px; + font-size: 13px; + } + + .three-modules-container { + gap: 12px; + } + + .module-item { + padding: 12px; + } + + .module-title { + font-size: 14px; + } + + .tip-box { + padding: 8px; + } + + .tip-text { + font-size: 13px; + } + + .result-number { + font-size: 14px; + padding: 6px 10px; + min-width: 35px; + } + + .result-badge { + font-size: 11px; + padding: 4px 10px; + } + } + + /* 瓒呭皬灞忓箷浼樺寲 */ + @media (max-width: 480px) { + .page-container { + padding: 8px; + } + + .form-card, .table-card, .action-buttons, .image-container { + padding: 12px; + } + + .form-input { + height: 34px; + font-size: 12px; + } + + .form-label { + font-size: 12px; + } + + .action-btn { + padding: 10px; + font-size: 14px; + } + + .result-number { + font-size: 12px; + padding: 4px 8px; + min-width: 30px; + } + + .result-badge { + font-size: 10px; + padding: 3px 8px; + } + } + </style> \ No newline at end of file -- Gitblit v1.9.3