| | |
| | | <view class="form-grid"> |
| | | <view class="form-group"> |
| | | <label class="form-label">项目名称:</label> |
| | | <input class="form-input" disabled="true" type="text" v-model="formData.fcheckItem" /> |
| | | <input v-model="formData.fcheckItem" class="form-input" disabled="true" type="text"/> |
| | | </view> |
| | | <view class="form-group"> |
| | | <label class="form-label">规格要求:</label> |
| | | <input class="form-input" disabled="true" type="text" v-model="formData.fspecRequ" /> |
| | | <input v-model="formData.fspecRequ" class="form-input" disabled="true" type="text"/> |
| | | </view> |
| | | <view class="form-group"> |
| | | <label class="form-label">检验方法:</label> |
| | | <input class="form-input" disabled="true" type="text" v-model="formData.inspectionMethod" /> |
| | | <input v-model="formData.inspectionMethod" class="form-input" disabled="true" type="text"/> |
| | | </view> |
| | | <view class="form-group"> |
| | | <label class="form-label">检验工具:</label> |
| | | <input class="form-input" disabled="true" type="text" v-model="formData.fcheckTool" /> |
| | | <input v-model="formData.fcheckTool" class="form-input" disabled="true" type="text"/> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="form-grid"> |
| | | <view class="form-group"> |
| | | <label class="form-label">检验数:</label> |
| | | <input class="form-input" disabled="true" type="text" v-model="formData.checkQyt" /> |
| | | <input v-model="formData.checkQyt" class="form-input" disabled="true" type="text"/> |
| | | </view> |
| | | <view class="form-group"> |
| | | <label class="form-label">检验标准编码:</label> |
| | | <input class="form-input" disabled="true" type="text" |
| | | v-model="formData.sampleSizeNo" /> |
| | | <input v-model="formData.sampleSizeNo" class="form-input" disabled="true" |
| | | type="text"/> |
| | | </view> |
| | | <view class="form-group"> |
| | | <label class="form-label">检验水平:</label> |
| | | <input class="form-input" disabled="true" type="text" |
| | | v-model="formData.fcheckLevel" /> |
| | | <input v-model="formData.fcheckLevel" class="form-input" disabled="true" |
| | | type="text"/> |
| | | </view> |
| | | <view class="form-group"> |
| | | <label class="form-label">接收水平:</label> |
| | | <input class="form-input" disabled="true" type="text" v-model="formData.facLevel" /> |
| | | <input v-model="formData.facLevel" class="form-input" disabled="true" type="text"/> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="form-grid"> |
| | | <view class="form-group"> |
| | | <label class="form-label">下限:</label> |
| | | <input class="form-input" disabled="true" type="text" |
| | | v-model="formData.fdownAllow" /> |
| | | <input v-model="formData.fdownAllow" class="form-input" disabled="true" |
| | | type="text"/> |
| | | </view> |
| | | <view class="form-group"> |
| | | <label class="form-label">标准值:</label> |
| | | <input class="form-input" disabled="true" type="text" v-model="formData.fstand" /> |
| | | <input v-model="formData.fstand" class="form-input" disabled="true" type="text"/> |
| | | </view> |
| | | <view class="form-group"> |
| | | <label class="form-label">上限:</label> |
| | | <input class="form-input" disabled="true" type="text" v-model="formData.fupAllow" /> |
| | | <input v-model="formData.fupAllow" class="form-input" disabled="true" type="text"/> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="form-grid"> |
| | | <view class="form-group"> |
| | | <label class="form-label">AC数:</label> |
| | | <input class="form-input" disabled="true" type="text" v-model="formData.facQty" /> |
| | | <input v-model="formData.facQty" class="form-input" disabled="true" type="text"/> |
| | | </view> |
| | | <view class="form-group"> |
| | | <label class="form-label">RE数:</label> |
| | | <input class="form-input" disabled="true" type="text" v-model="formData.freQty" /> |
| | | <input v-model="formData.freQty" class="form-input" disabled="true" type="text"/> |
| | | </view> |
| | | <view class="form-group"> |
| | | <label class="form-label">不合格数:</label> |
| | | <input class="form-input" disabled="true" type="text" v-model="formData.fngQty" /> |
| | | <input v-model="formData.fngQty" class="form-input" disabled="true" type="text"/> |
| | | </view> |
| | | <view class="form-group"> |
| | | <label class="form-label">预览结果:</label> |
| | | <input class="form-input" disabled="true" type="text" v-model="formData.fcheckResu" /> |
| | | <input v-model="formData.fcheckResu" class="form-input" disabled="true" type="text"/> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="form-grid"> |
| | | <view class="form-group"> |
| | | <label class="form-label">检测结果:</label> |
| | | <input class="form-input" type="number" v-model="fcheckResuK" /> |
| | | <input v-model="fcheckResuK" class="form-input" type="number"/> |
| | | </view> |
| | | |
| | | <!-- 提示词作为检测结果的提示 --> |
| | |
| | | </view> |
| | | </view> |
| | | |
| | | <button :class="['action-btn', 'btn-primary', { 'btn-loading': isLoading }]" |
| | | v-if="tableData.length < formData.checkQyt" @click="submit" :disabled="isLoading"> |
| | | <button v-if="tableData.length < formData.checkQyt" |
| | | :class="['action-btn', 'btn-primary', { 'btn-loading': isLoading }]" :disabled="isLoading" @click="submit"> |
| | | {{ isLoading ? '保存中...' : '保存' }} |
| | | </button> |
| | | </view> |
| | |
| | | <view class="list-container"> |
| | | <uni-table ref="table" border emptyText="暂无更多数据"> |
| | | <uni-tr> |
| | | <uni-th width="80" align="center" class="th">编号</uni-th> |
| | | <uni-th width="120" align="center" class="th">判定标识</uni-th> |
| | | <uni-th width="100" align="center" class="th">检验结果</uni-th> |
| | | <uni-th width="120" align="center" class="th">操作</uni-th> |
| | | <uni-th align="center" class="th" width="80">编号</uni-th> |
| | | <uni-th align="center" class="th" width="120">判定标识</uni-th> |
| | | <uni-th 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="table-row" |
| | | :class="{ 'hover-effect': isHoveringRow === index }" @mouseenter="isHoveringRow = index" |
| | | <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"> |
| | | <input class="form-input" disabled="true" type="text" v-model="item.fstand" /> |
| | | <input v-model="item.fstand" class="form-input" disabled="true" type="text"/> |
| | | </uni-td> |
| | | <uni-td align="center"> |
| | | <span class="result-badge" |
| | | :class="{ 'pass': item.fcheckResu === 'OK', 'fail': item.fcheckResu === 'NG' }"> |
| | | <span :class="{ 'pass': item.fcheckResu === 'OK', 'fail': item.fcheckResu === 'NG' }" |
| | | class="result-badge"> |
| | | {{ item.fcheckResu || '未检验' }} |
| | | </span> |
| | | </uni-td> |
| | | <uni-td align="center"> |
| | | <view class="action-group"> |
| | | <button :class="['action-btn', 'btn-sm', 'btn-warn', { 'btn-disabled': isLoading }]" |
| | | v-if="isNumber" @click="toDetail(item)" :disabled="isLoading"> |
| | | <button v-if="isNumber" |
| | | :class="['action-btn', 'btn-sm', 'btn-warn', { 'btn-disabled': isLoading }]" :disabled="isLoading" @click="toDetail(item)"> |
| | | {{ isLoading ? '处理中...' : '修改' }} |
| | | </button> |
| | | <button :class="['action-btn', 'btn-sm', 'btn-warn', { 'btn-disabled': isLoading }]" |
| | | v-if="!isNumber" @click="numberEdit(item)" :disabled="isLoading"> |
| | | <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> |
| | |
| | | <!-- 操作按钮 --> |
| | | <view class="action-buttons"> |
| | | <view class="button-group"> |
| | | <button :class="['action-btn', 'btn-warn', { 'btn-disabled': isLoading }]" @click="saveRemarks" |
| | | :disabled="isLoading"> |
| | | <button :class="['action-btn', 'btn-warn', { 'btn-disabled': isLoading }]" :disabled="isLoading" |
| | | @click="saveRemarks"> |
| | | {{ isLoading ? '处理中...' : '添加不合格描述' }} |
| | | </button> |
| | | </view> |
| | |
| | | |
| | | <!-- 修改检验结果弹出层 --> |
| | | <view v-if="showPopup" class="overlay active"> |
| | | <view class="popup" :class="{ 'popup-scale': isPopupAnimated }" @animationend="isPopupAnimated = false"> |
| | | <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> |
| | |
| | | <form :modelValue="editData"> |
| | | <view class="form-group"> |
| | | <label class="form-label">检验结果:</label> |
| | | <input class="form-input" type="text" v-model="editData.fcheckResu" /> |
| | | <input v-model="editData.fcheckResu" class="form-input" type="text"/> |
| | | </view> |
| | | <view class="button-group"> |
| | | <button :class="['action-btn', 'btn-warn', { 'btn-loading': isEditLoading }]" @click="eidt" |
| | | :disabled="isEditLoading"> |
| | | <button :class="['action-btn', 'btn-warn', { 'btn-loading': isEditLoading }]" :disabled="isEditLoading" |
| | | @click="eidt"> |
| | | {{ isEditLoading ? '修改中...' : '修改' }} |
| | | </button> |
| | | <button @click="showPopup = !showPopup"> |
| | |
| | | |
| | | <!-- 修改不合格描述弹出层 --> |
| | | <view v-if="remarksPopup" class="overlay active"> |
| | | <view class="popup" :class="{ 'popup-scale': isPopupAnimated }" @animationend="isPopupAnimated = false"> |
| | | <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> |
| | |
| | | <form> |
| | | <view class="form-group"> |
| | | <label class="form-label">不合格描述:</label> |
| | | <input class="form-input" type="text" v-model="remarks" /> |
| | | <input v-model="remarks" class="form-input" type="text"/> |
| | | </view> |
| | | <view class="button-group"> |
| | | <button :class="['action-btn', 'btn-warn', { 'btn-loading': isRemarksLoading }]" |
| | | @click="editRemarks" :disabled="isRemarksLoading"> |
| | | :disabled="isRemarksLoading" @click="editRemarks"> |
| | | {{ isRemarksLoading ? '保存中...' : '修改' }} |
| | | </button> |
| | | <button @click="remarksPopup = !remarksPopup"> |
| | |
| | | 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; |
| | | } |
| | | |
| | | /* 手机屏幕优化 */ |
| | | @media (max-width: 768px) { |
| | | .page-container { |
| | | padding: 10px; |
| | | } |
| | | |
| | | .form-card, .table-card { |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | /* 超小屏幕优化 */ |
| | | @media (max-width: 480px) { |
| | | .page-container { |
| | | padding: 8px; |
| | | } |
| | | |
| | | .form-card, .table-card { |
| | | padding: 12px; |
| | | } |
| | | |
| | | .form-input { |
| | | height: 34px; |
| | | font-size: 12px; |
| | | } |
| | | |
| | | .form-label { |
| | | font-size: 12px; |
| | | } |
| | | |
| | | .action-btn { |
| | | padding: 10px; |
| | | font-size: 14px; |
| | | } |
| | | } |
| | | </style> |