diff --git a/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue b/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue index 7fee99f..217cc1b 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue @@ -754,14 +754,10 @@ export default { getToolStateInfo(e) { const { element, currentPoints, image, viewport } = e.detail var imageId = image.imageId - var instanceId = imageId.split('/')[imageId.split('/').length - 1] - var frame = null - if (instanceId.includes('?frame=')) { - frame = instanceId.split('?frame=')[1] - instanceId = instanceId.split('?frame=')[0] - } + const imageInfo = this.getInstanceInfo(imageId) + var instanceId = imageInfo.instanceId + var frame = imageInfo.frame this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 - instanceId = instanceId.split('.')[0] const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager for (var m = 0; m < this.measuredTools.length; m++) { var toolType = this.measuredTools[m] @@ -924,11 +920,8 @@ export default { if (this.readingTaskState >= 2) return var element = cornerstone.getEnabledElement(this.canvas) var { imageId } = element.image - var instanceId = imageId.split('/')[imageId.split('/').length - 1] - if (instanceId.includes('?frame=')) { - instanceId = instanceId.split('?frame=')[0] - } - instanceId = instanceId.split('.')[0] + const imageInfo = this.getInstanceInfo(imageId) + var instanceId = imageInfo.instanceId var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.stack.visitTaskId && i.IsCurrentTask && i.ReadingTaskState < 2) if (idx === -1) return this.measureData = this.visitTaskList[idx].MeasureData @@ -991,14 +984,10 @@ export default { mouseClick(e) { const { element, currentPoints, image, viewport } = e.detail var imageId = image.imageId - var instanceId = imageId.split('/')[imageId.split('/').length - 1] - var frame = null - if (instanceId.includes('?frame=')) { - frame = instanceId.split('?frame=')[1] - instanceId = instanceId.split('?frame=')[0] - } + const imageInfo = this.getInstanceInfo(imageId) + var instanceId = imageInfo.instanceId + var frame = imageInfo.frame this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 - instanceId = instanceId.split('.')[0] const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager for (let t = 0; t < this.measuredTools.length; t++) { var toolType = this.measuredTools[t] @@ -1094,14 +1083,10 @@ export default { this.minVistNum = this.visitTaskList[0].VisitTaskNum this.measureData = this.visitTaskList[idx].MeasureData const imageId = this.stack.imageIds[this.stack.currentImageIdIndex] - var instanceId = imageId.split('/')[imageId.split('/').length - 1] - var frame = null - if (instanceId.includes('?frame=')) { - frame = instanceId.split('?frame=')[1] - instanceId = instanceId.split('?frame=')[0] - } + const imageInfo = this.getInstanceInfo(imageId) + var instanceId = imageInfo.instanceId + var frame = imageInfo.frame this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 - instanceId = instanceId.split('.')[0] this.stack.instanceId = instanceId const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager ToolStateManager.clearImageIdToolState(dicomSeries.imageIds) @@ -1207,14 +1192,10 @@ export default { this.stack.firstImageLoading = false this.toolState.dicomInfoVisible = true - var instanceId = image.imageId.split('/')[image.imageId.split('/').length - 1] - var frame = null - if (instanceId.includes('?frame=')) { - frame = instanceId.split('?frame=')[1] - instanceId = instanceId.split('?frame=')[0] - } + const imageInfo = this.getInstanceInfo(image.imageId) + var instanceId = imageInfo.instanceId + var frame = imageInfo.frame this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 - instanceId = instanceId.split('.')[0] this.stack.instanceId = instanceId this.height = (this.stack.currentImageIdIndex) * 100 / (this.stack.imageIds.length - 1) this.resetWwwc() @@ -1280,14 +1261,10 @@ export default { this.stack.imageRendered = true // const { element } = e.detail var imageId = e.detail.image.imageId - var instanceId = imageId.split('/')[imageId.split('/').length - 1] - var frame = null - if (instanceId.includes('?frame=')) { - frame = instanceId.split('?frame=')[1] - instanceId = instanceId.split('?frame=')[0] - } + const imageInfo = this.getInstanceInfo(imageId) + var instanceId = imageInfo.instanceId + var frame = imageInfo.frame this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 - instanceId = instanceId.split('.')[0] if (this.imageId !== instanceId) { this.getOrientationMarker(e.detail.element) // 初次加载时,如果该影像存在标记,则以标记的窗宽窗位为初始化默认值,否则以序列的窗宽窗位为初始化默认值 @@ -1343,14 +1320,10 @@ export default { this.activeTool = 1 this.activeToolName = '' var { imageId } = element.image - var instanceId = imageId.split('/')[imageId.split('/').length - 1] - var frame = null - if (instanceId.includes('?frame=')) { - frame = instanceId.split('?frame=')[1] - instanceId = instanceId.split('?frame=')[0] - } + const imageInfo = this.getInstanceInfo(imageId) + var instanceId = imageInfo.instanceId + var frame = imageInfo.frame this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 - instanceId = instanceId.split('.')[0] if (e.detail.toolName === 'Length' || e.detail.toolName === 'ArrowAnnotate' || e.detail.toolName === 'RectangleRoi') { const measureData = {} measureData.studyId = this.stack.studyId @@ -1467,14 +1440,10 @@ export default { var element = cornerstone.getEnabledElement(this.canvas) var viewport = element.viewport var { imageId } = element.image - var instanceId = imageId.split('/')[imageId.split('/').length - 1] - var frame = null - if (instanceId.includes('?frame=')) { - frame = instanceId.split('?frame=')[1] - instanceId = instanceId.split('?frame=')[0] - } + const imageInfo = this.getInstanceInfo(imageId) + var instanceId = imageInfo.instanceId + var frame = imageInfo.frame this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 - instanceId = instanceId.split('.')[0] var uuid = measurementData.uuid var idx = this.measureData.findIndex(item => item.MeasureData && item.MeasureData.data && item.MeasureData.data.uuid === uuid) if (idx > -1) { @@ -1531,11 +1500,8 @@ export default { // 判断有没有标记 获取第一个标记 var element = cornerstone.getEnabledElement(this.canvas) var { imageId } = element.image - var instanceId = imageId.split('/')[imageId.split('/').length - 1] - if (instanceId.includes('?frame=')) { - instanceId = instanceId.split('?frame=')[0] - } - instanceId = instanceId.split('.')[0] + const imageInfo = this.getInstanceInfo(imageId) + var instanceId = imageInfo.instanceId var idx = this.measureData.findIndex(item => item.InstanceId === instanceId) var measureData = null if (idx > -1) { @@ -1961,6 +1927,15 @@ export default { e.stopImmediatePropagation() e.stopPropagation() e.preventDefault() + }, + getInstanceInfo(imageId) { + const params = {} + const searchParams = new URLSearchParams(imageId.split('?')[1]) + + for (const [key, value] of searchParams.entries()) { + params[key] = value + } + return params } }