This commit is contained in:
2026-08-15 12:33:33 +08:00
parent 03734c8f25
commit 207c872dff
4 changed files with 105 additions and 5 deletions
+57
View File
@@ -251,6 +251,63 @@ export function getEvidence(inboundId, tenantId) {
})
}
export function getEvidencePreviewUrl(inboundId, evidenceId, tenantId) {
if (!inboundId || !evidenceId) return ''
return `/api/platform/v1/inbounds/${encodeURIComponent(inboundId)}/loading/evidence/${encodeURIComponent(evidenceId)}/content/pda?tenantId=${encodeURIComponent(tenantQuery(tenantId))}`
}
export function downloadEvidencePreview(previewUrl) {
requireOnline('当前网络不可用,无法查看装柜照片')
if (!previewUrl) throw new Error('装柜照片地址尚未同步')
const baseUrl = session.apiBase || '/api/platform/v1'
let url = String(previewUrl)
if (!/^https?:\/\//i.test(url) && /^https?:\/\//i.test(baseUrl)) {
const origin = baseUrl.match(/^(https?:\/\/[^/]+)/i)?.[1] || ''
url = `${origin}${url.startsWith('/') ? '' : '/'}${url}`
}
const headers = {}
if (session.token) headers.Authorization = `Bearer ${session.token}`
if (session.requestId) headers['X-Request-Id'] = session.requestId
debugLog('evidence.preview.start', { previewPath: String(previewUrl), resolvedUrl: url })
return new Promise((resolve, reject) => {
uni.downloadFile({
url,
header: headers,
success(response) {
const responseHeaders = response.header || {}
const contentType = responseHeaders['Content-Type'] || responseHeaders['content-type'] || ''
const requestId = responseHeaders['X-Request-Id'] || responseHeaders['x-request-id'] || ''
const traceId = responseHeaders['X-Trace-Id'] || responseHeaders['x-trace-id'] || ''
debugLog('evidence.preview.response', { previewPath: String(previewUrl), statusCode: response.statusCode, contentType, hasTempFilePath: Boolean(response.tempFilePath), requestId, traceId })
if (response.statusCode < 200 || response.statusCode >= 300 || !response.tempFilePath) {
const error = new Error('装柜照片下载失败')
error.statusCode = response.statusCode
error.requestId = requestId
error.traceId = traceId
reject(error)
return
}
if (contentType && !/^image\//i.test(contentType) && !/^application\/octet-stream/i.test(contentType)) {
const error = new Error('服务端未返回有效照片')
error.statusCode = response.statusCode
error.contentType = contentType
error.requestId = requestId
error.traceId = traceId
reject(error)
return
}
resolve(response.tempFilePath)
},
fail(error) {
debugLog('evidence.preview.error', { previewPath: String(previewUrl), message: error.errMsg || '' })
const next = new Error(error.errMsg || '装柜照片下载失败')
next.network = true
reject(next)
}
})
})
}
export function upsertEvidence(inboundId, payload, tenantId) {
if (!EVIDENCE_TYPES.includes(payload.evidenceType)) throw new Error('不支持的装柜证据类型')
return request({