| | |
| | | <form :modelValue="formData"> |
| | | <view class="form-group"> |
| | | <label class="form-label">检验单号:</label> |
| | | <input class="form-input" disabled="true" type="text" v-model="formData.releaseNo" /> |
| | | <input v-model="formData.releaseNo" 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.itemNo" /> |
| | | <input v-model="formData.itemNo" 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.itemName" /> |
| | | <input v-model="formData.itemName" 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.itemModel" /> |
| | | <input v-model="formData.itemModel" 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.saleOrderNo" /> |
| | | <input v-model="formData.saleOrderNo" class="form-input" disabled="true" type="text"/> |
| | | </view> |
| | | <view class="form-group"> |
| | | <label class="form-label">送检数量:</label> |
| | | <input class="form-input" disabled="true" type="number" v-model="formData.planQty" /> |
| | | <input v-model="formData.planQty" class="form-input" disabled="true" type="number"/> |
| | | </view> |
| | | <view class="form-group"> |
| | | <label class="form-label">创建时间:</label> |
| | | <input class="form-input" disabled="true" type="text" v-model="formData.createDate" /> |
| | | <input v-model="formData.createDate" 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.createUser" /> |
| | | <input v-model="formData.createUser" 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.remeke" /> |
| | | <input v-model="formData.remeke" class="form-input" disabled="true" type="text"/> |
| | | </view> |
| | | </form> |
| | | </view> |
| | |
| | | <view class="header-badge">{{ tableData.length }}</view> |
| | | </view> |
| | | |
| | | <view class="inspection-list" v-if="tableData.length > 0"> |
| | | <view v-for="(item, index) in tableData" :key="index" class="inspection-item" |
| | | :class="{ 'item-completed': item.fcheckResu === '合格', 'item-failed': item.fcheckResu === '不合格' }"> |
| | | <view v-if="tableData.length > 0" class="inspection-list"> |
| | | <view v-for="(item, index) in tableData" :key="index" :class="{ 'item-completed': item.fcheckResu === '合格', 'item-failed': item.fcheckResu === '不合格' }" |
| | | class="inspection-item"> |
| | | |
| | | <!-- 左侧状态指示器 --> |
| | | <view class="status-indicator" |
| | | :class="{ 'status-pass': item.fcheckResu === '合格', 'status-fail': item.fcheckResu === '不合格', 'status-pending': item.fcheckResu === '未检验' }"> |
| | | <view :class="{ 'status-pass': item.fcheckResu === '合格', 'status-fail': item.fcheckResu === '不合格', 'status-pending': item.fcheckResu === '未检验' }" |
| | | class="status-indicator"> |
| | | </view> |
| | | |
| | | <!-- 主要内容区域 --> |
| | | <view class="item-content"> |
| | | <view class="item-header"> |
| | | <view class="item-title">{{ item.fcheckItem }}</view> |
| | | <view class="status-badge" |
| | | :class="{ 'badge-pass': item.fcheckResu === '合格', 'badge-fail': item.fcheckResu === '不合格', 'badge-pending': item.fcheckResu === '未检验' }"> |
| | | <text class="status-icon">{{ item.fcheckResu === '合格' ? '✓' : item.fcheckResu === '不合格' ? '✗' : '○' }}</text> |
| | | <view :class="{ 'badge-pass': item.fcheckResu === '合格', 'badge-fail': item.fcheckResu === '不合格', 'badge-pending': item.fcheckResu === '未检验' }" |
| | | class="status-badge"> |
| | | <text class="status-icon">{{ |
| | | item.fcheckResu === '合格' ? '✓' : item.fcheckResu === '不合格' ? '✗' : '○' |
| | | }} |
| | | </text> |
| | | <text class="status-text">{{ item.fcheckResu }}</text> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="item-description" v-if="item.fcheckItemDesc"> |
| | | <view v-if="item.fcheckItemDesc" class="item-description"> |
| | | <text class="description-text">{{ item.fcheckItemDesc }}</text> |
| | | </view> |
| | | |
| | |
| | | <view class="progress-info"> |
| | | <text class="progress-label">检验进度:</text> |
| | | <view class="progress-bar"> |
| | | <view class="progress-fill" |
| | | <view :class="{ 'progress-complete': item.fenterQty >= item.checkQyt, 'progress-incomplete': item.fenterQty < item.checkQyt }" |
| | | :style="{ width: (item.fenterQty / item.checkQyt * 100) + '%' }" |
| | | :class="{ 'progress-complete': item.fenterQty >= item.checkQyt, 'progress-incomplete': item.fenterQty < item.checkQyt }"> |
| | | class="progress-fill"> |
| | | </view> |
| | | </view> |
| | | <text class="progress-text">{{ item.fenterQty }}/{{ item.checkQyt }}</text> |
| | | </view> |
| | | |
| | | <view class="action-button" @click="toDetail(item)" |
| | | :class="{ 'btn-complete': item.fenterQty >= item.checkQyt, 'btn-incomplete': item.fenterQty < item.checkQyt }"> |
| | | <view :class="{ 'btn-complete': item.fenterQty >= item.checkQyt, 'btn-incomplete': item.fenterQty < item.checkQyt }" class="action-button" |
| | | @click="toDetail(item)"> |
| | | <text class="btn-text">{{ item.fenterQty >= item.checkQyt ? '查看详情' : '开始检验' }}</text> |
| | | <text class="btn-icon">→</text> |
| | | </view> |
| | |
| | | |
| | | <!-- 不合格描述弹出层 --> |
| | | <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 popup-buttons"> |
| | | <button :class="['action-btn', 'btn-danger']" @click="editRemarks"> |
| | |
| | | uploadImages() { |
| | | // 上传/查看图片的逻辑 |
| | | uni.navigateTo({ |
| | | url: 'ImageItem?id=' + this.formData.releaseNo |
| | | url: 'ImageItem?id=' + this.formData.id |
| | | }); |
| | | }, |
| | | addDefectDescription() { |
| | |
| | | /* 操作按钮区域 */ |
| | | .action-buttons { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | gap: 15px; |
| | | flex-direction: column; |
| | | gap: 12px; |
| | | padding: 15px 0; |
| | | } |
| | | |
| | | .btn { |
| | | flex: 1; |
| | | .btn, .secondary-btn { |
| | | width: 100%; |
| | | height: 45px; |
| | | border-radius: 8px; |
| | | border: none; |
| | |
| | | background-color: #6D6D70; |
| | | } |
| | | |
| | | /* 大屏幕时保持横向排列 */ |
| | | @media (min-width: 768px) { |
| | | .action-buttons { |
| | | flex-direction: row; |
| | | gap: 15px; |
| | | } |
| | | |
| | | .btn, .secondary-btn { |
| | | flex: 1; |
| | | width: auto; |
| | | } |
| | | } |
| | | |
| | | /* 检验项目卡片 */ |
| | | .inspection-card { |
| | | background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%); |