1
continuous-integration/drone/push Build is passing Details

rj
caiyiling 2026-05-08 15:28:10 +08:00
parent d680c57482
commit 197f17fc99
1 changed files with 2 additions and 51 deletions

View File

@ -915,13 +915,7 @@ export default {
fullScreenWidth: window.innerWidth - 570 + 'px', fullScreenWidth: window.innerWidth - 570 + 'px',
fullScreenHeight: window.innerHeight - 130 + 'px', fullScreenHeight: window.innerHeight - 130 + 'px',
ManualsClose: false, ManualsClose: false
screenshotCache: {
key: '',
at: 0,
base64: ''
},
screenshotInFlight: null
} }
}, },
@ -1066,8 +1060,7 @@ export default {
callback() callback()
return return
} }
const cacheKey = this.getScreenshotCacheKey(measuredData) const base64Str = await this.captureActiveViewportScreenshot()
const base64Str = await this.getOrCaptureScreenshot(cacheKey)
callback(base64Str) callback(base64Str)
}) })
DicomEvent.$on('imageLocation', async (measuredData) => { DicomEvent.$on('imageLocation', async (measuredData) => {
@ -1730,48 +1723,6 @@ export default {
} }
return false return false
}, },
getScreenshotCacheKey(measuredData) {
const currentCanvas = this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`] && this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0]
const currentStack = currentCanvas && currentCanvas.stack ? currentCanvas.stack : {}
return [
this.currentDicomCanvasIndex,
currentStack.visitTaskId || '',
currentStack.seriesId || '',
typeof currentStack.currentImageIdIndex === 'number' ? currentStack.currentImageIdIndex : '',
measuredData.visitTaskId || '',
measuredData.questionId || '',
measuredData.rowIndex || '',
measuredData.lesionName || '',
measuredData.isMarked ? 1 : 0
].join('|')
},
async getOrCaptureScreenshot(cacheKey) {
const now = Date.now()
if (this.screenshotCache.key === cacheKey &&
this.screenshotCache.base64 &&
now - this.screenshotCache.at < 1500) {
return this.screenshotCache.base64
}
if (this.screenshotInFlight && this.screenshotInFlight.key === cacheKey) {
return this.screenshotInFlight.promise
}
const promise = this.captureActiveViewportScreenshot()
.then((base64) => {
this.screenshotCache = {
key: cacheKey,
at: Date.now(),
base64: base64 || ''
}
return base64
})
.finally(() => {
if (this.screenshotInFlight && this.screenshotInFlight.key === cacheKey) {
this.screenshotInFlight = null
}
})
this.screenshotInFlight = { key: cacheKey, promise }
return promise
},
async captureActiveViewportScreenshot() { async captureActiveViewportScreenshot() {
// const currentCanvas = this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`] && this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0] // const currentCanvas = this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`] && this.$refs[`dicomCanvas${this.currentDicomCanvasIndex}`][0]
await this.$nextTick() await this.$nextTick()