优化
This commit is contained in:
@@ -148,7 +148,7 @@
|
||||
</view>
|
||||
<view class="seal-row">
|
||||
<input v-model="sealNo" class="seal-input" placeholder="输入封签号(必填)" maxlength="64" />
|
||||
<button class="evidence-btn seal-btn" @tap="saveSealNo">保存封签</button>
|
||||
<button class="evidence-btn seal-btn" :disabled="sealSaving || !sealReadyToSave" @tap="saveSealNo">{{ sealSaving ? '保存中…' : '保存封签' }}</button>
|
||||
</view>
|
||||
<view v-if="remoteError" class="remote-error-row"><text class="remote-error" role="alert">{{ remoteError }}</text><button class="evidence-retry-btn" :disabled="remoteLoading" @tap="refreshTask">刷新任务</button></view>
|
||||
<button class="loading-complete-btn" :disabled="submitting || !loadingStageReady || pickingVersion === null || loadingVersion === null || !evidenceComplete" @tap="completeLoadingTask">确认装柜完成</button>
|
||||
@@ -387,7 +387,7 @@
|
||||
selectedIncompleteReason: '',
|
||||
completionSummary: { picked: 0, partial: 0, skipped: 0, autoSkipped: 0 },
|
||||
evidenceSlots: EVIDENCE_SLOTS,
|
||||
evidenceFiles: {}, evidenceDrafts: {}, evidencePreviewCache: {}, evidenceQueueItems: [], evidenceQueue: null, evidenceContextId: 0, evidenceIdentity: null, cameraPicking: false, evidencePreviewOpening: false, evidencePreviewReturning: false, sealNo: '', loadingVersion: null, pickingVersion: null, remotePick: null,
|
||||
evidenceFiles: {}, evidenceDrafts: {}, evidencePreviewCache: {}, evidenceQueueItems: [], evidenceQueue: null, evidenceContextId: 0, evidenceIdentity: null, cameraPicking: false, evidencePreviewOpening: false, evidencePreviewReturning: false, sealNo: '', sealSaving: false, loadingVersion: null, pickingVersion: null, remotePick: null,
|
||||
remoteTaskId: null, assignmentVersion: null, submitId: '',
|
||||
taskRequestId: 0,
|
||||
remoteError: '', remoteLoading: false, submitting: false,
|
||||
@@ -503,6 +503,9 @@
|
||||
},
|
||||
evidenceComplete() {
|
||||
return this.evidenceSlots.every((slot) => this.validEvidenceEntries(slot.type).length > 0) && Boolean(String(this.sealNo || '').trim())
|
||||
},
|
||||
sealReadyToSave() {
|
||||
return Boolean(String(this.sealNo || '').trim()) && this.hasUnboundUploadedEvidence('SEAL')
|
||||
}
|
||||
},
|
||||
created() {
|
||||
@@ -791,6 +794,7 @@
|
||||
this.evidenceFiles = {}
|
||||
this.evidenceQueueItems = []
|
||||
this.sealNo = ''
|
||||
this.sealSaving = false
|
||||
this.evidenceQueue = createEvidenceUploadQueue({
|
||||
upload: (item, onProgress) => uploadEvidenceFile(item.inboundId, item.evidenceType, item.localPath, item.tenantId, onProgress),
|
||||
onChange: (items) => { if (this.evidenceContextId === contextId) this.evidenceQueueItems = items }
|
||||
@@ -1014,8 +1018,14 @@
|
||||
uni.previewImage({ current, urls, fail: () => { this.evidencePreviewOpening = false } })
|
||||
},
|
||||
evidenceItems(result) {
|
||||
if (Array.isArray(result?.evidences)) return result.evidences
|
||||
return Array.isArray(result?.evidences?.evidences) ? result.evidences.evidences : []
|
||||
const items = Array.isArray(result?.evidences) ? result.evidences : (Array.isArray(result?.evidences?.evidences) ? result.evidences.evidences : [])
|
||||
const seen = new Set()
|
||||
return items.filter((item) => {
|
||||
const key = `${item.evidenceType || ''}:${item.fileId || `id-${item.id || ''}`}`
|
||||
if (seen.has(key)) return false
|
||||
seen.add(key)
|
||||
return true
|
||||
})
|
||||
},
|
||||
validEvidenceEntries(type) { return this.evidenceEntries(type).filter((item) => item.id && item.fileId && item.uploadStatus !== 'PENDING') },
|
||||
evidenceEntry(type) { const list = this.evidenceEntries(type); return list.length ? list[list.length - 1] : null },
|
||||
@@ -1352,10 +1362,19 @@
|
||||
}
|
||||
},
|
||||
async saveSealNo() {
|
||||
if (this.sealSaving) return
|
||||
if (!String(this.sealNo || '').trim()) { this.showToast('请输入封签号', 'warning'); return }
|
||||
this.rememberEvidenceDraft()
|
||||
if (!this.loadingStageReady) { this.showToast('封签号已暂存,装柜状态同步后自动保存', 'success'); return }
|
||||
await this.saveEvidence('SEAL', `seal-no-${this.evidenceIdentity?.taskId || this.evidenceIdentity?.inboundId}-${Date.now()}`)
|
||||
const current = [...this.evidenceEntries('SEAL')].reverse().find((item) => item.fileId && !item.id)
|
||||
if (!current) { this.showToast('当前封签已保存,无需重复提交', 'success'); return }
|
||||
const operationId = stableOperationId('seal', stableTaskOperationIdentity(this.draftIdentity()), { fileId: String(current.fileId), sealNo: String(this.sealNo).trim() })
|
||||
this.sealSaving = true
|
||||
try {
|
||||
await this.saveEvidence('SEAL', operationId, current.localPath || null)
|
||||
} finally {
|
||||
this.sealSaving = false
|
||||
}
|
||||
},
|
||||
async voidEvidencePhoto(photo) {
|
||||
if (!this.requireEvidenceStage()) return
|
||||
|
||||
Reference in New Issue
Block a user