diff --git a/src/store/modules/reading.js b/src/store/modules/reading.js index 467b4655..75beef40 100644 --- a/src/store/modules/reading.js +++ b/src/store/modules/reading.js @@ -20,8 +20,8 @@ const hangingAgreement = [ ] const getDefaultState = () => { return { - // visitTaskList: [], - visitTaskList: sessionStorage.getItem('visitTaskList') ? JSON.parse(sessionStorage.getItem('visitTaskList')) : [], + visitTaskList: [], + // visitTaskList: sessionStorage.getItem('visitTaskList') ? JSON.parse(sessionStorage.getItem('visitTaskList')) : [], organList: [], seriesStack: [], activeHangingAgreement: hangingAgreement[0], @@ -166,7 +166,7 @@ const actions = { item.IsInit = false }) state.visitTaskList = res.Result - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') const currentTaskIdx = res.Result.findIndex(item => item.IsCurrentTask) if (currentTaskIdx > -1) { state.currentTaskId = res.Result[currentTaskIdx].VisitTaskId @@ -178,7 +178,7 @@ const actions = { }, resetVisitTasks({ state }) { return new Promise(resolve => { - sessionStorage.setItem('visitTaskList', '') + // sessionStorage.setItem('visitTaskList', '') state.visitTaskList = [] state.currentTaskId = '' state.activeSeries = {} @@ -209,14 +209,25 @@ const actions = { var seriesList = [] study.SeriesList.forEach((series, index) => { const imageIds = [] - - series.InstancePathList.forEach((path) => { - imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${path}`) + const instanceList = [] + // series.InstancePathList.forEach((path) => { + // imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${path}`) + // }) + series.InstanceInfoList.forEach(instance => { + if (instance.NumberOfFrames && instance.NumberOfFrames > 1) { + for (let i = 0; i < instance.NumberOfFrames; i++) { + const path = `${instance.Path}?frame=${i}&instanceId=${instance.Id}` + imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${path}`) + } + } else { + imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${instance.Path}?instanceId=${instance.Id}`) + } + instanceList.push(instance.Id) }) seriesList.push({ isDicom: study.IsDicom, imageIds: imageIds, - instanceList: series.InstanceList, + instanceList: instanceList, seriesId: series.Id, imageIdIndex: 0, seriesUid: series.SeriesInstanceUid, @@ -287,7 +298,7 @@ const actions = { } } - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }).catch(() => { resolve() }) }) @@ -303,7 +314,7 @@ const actions = { }) }) } - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }) }, @@ -322,7 +333,7 @@ const actions = { state.visitTaskList[index].Questions = res.Result state.visitTaskList[index].questionsInit = true state.visitTaskList[index].QuestionMarkInfoList = res.OtherInfo.QuestionMarkInfoList - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }).catch(() => { resolve() }) } @@ -340,7 +351,7 @@ const actions = { state.visitTaskList[index].Questions = res.Result state.visitTaskList[index].questionsInit = true state.visitTaskList[index].QuestionMarkInfoList = res.OtherInfo.QuestionMarkInfoList - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }).catch(() => { resolve() }) }) @@ -359,7 +370,7 @@ const actions = { var list = getQuestions(res.Result.SinglePage) state.visitTaskList[index].ReadingQuestions = list state.visitTaskList[index].readingQuestionsInit = true - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }).catch(() => { resolve() }) } @@ -376,7 +387,7 @@ const actions = { var list = getQuestions(res.Result.SinglePage) state.visitTaskList[index].ReadingQuestions = list state.visitTaskList[index].readingQuestionsInit = true - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }).catch(() => { resolve() }) }) @@ -387,7 +398,7 @@ const actions = { if (index > -1) { state.visitTaskList[index].ReadingQuestions = obj.questions } - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }) }, @@ -399,7 +410,7 @@ const actions = { questions = findQuestionAndAddLesion(questions, obj) state.visitTaskList[index].ReadingQuestions = questions } - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }) }, @@ -411,7 +422,7 @@ const actions = { questions = findQuestionAndUpdateLesion(questions, obj) state.visitTaskList[index].ReadingQuestions = questions } - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }) }, @@ -423,7 +434,7 @@ const actions = { questions = findQuestionAndRemoveLesion(questions, obj) state.visitTaskList[index].ReadingQuestions = questions } - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }) }, @@ -444,7 +455,7 @@ const actions = { }) state.visitTaskList[index].MeasureData = arr state.visitTaskList[index].measureDataInit = true - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }).catch(() => { resolve() }) } @@ -471,7 +482,7 @@ const actions = { }) state.visitTaskList[index].MeasureData = arr state.visitTaskList[index].measureDataInit = true - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }).catch(() => { resolve() }) } @@ -511,7 +522,7 @@ const actions = { await deleteCustomTag(obj.questionInfo.Id) state.visitTaskList[index].MeasureData = measureData } - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }) }, @@ -529,7 +540,7 @@ const actions = { }) state.visitTaskList[index].MeasureData = arr state.visitTaskList[index].measureDataInit = true - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }).catch(() => { resolve() }) }) @@ -548,7 +559,7 @@ const actions = { }) state.visitTaskList[index].MeasureData = arr state.visitTaskList[index].measureDataInit = true - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }).catch(() => { resolve() }) }) @@ -580,7 +591,7 @@ const actions = { state.visitTaskList[index].MeasureData.push(obj.data) console.log('新增标记成功') } - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') console.log(state.visitTaskList) resolve() }) @@ -602,7 +613,7 @@ const actions = { state.visitTaskList[index].MeasureData.push(obj.data) console.log('新增标记成功') } - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }) }, @@ -622,7 +633,7 @@ const actions = { } state.visitTaskList[index].MeasureData = measureData } - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }) }, @@ -641,7 +652,7 @@ const actions = { Id: obj.Id }) console.log('新增标记成功') - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() } var idx = measureData.findIndex(item => item.Id === obj.questionInfo.Id) @@ -657,7 +668,7 @@ const actions = { state.visitTaskList[index].MeasureData.push(obj.MeasureData.data) console.log('新增标记成功') } - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }) }, @@ -702,7 +713,7 @@ const actions = { // state.visitTaskList[index].MeasureData = measureData // } - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }) }, @@ -715,7 +726,7 @@ const actions = { measureData[idx].MeasureData.data.status = obj.status state.visitTaskList[index].MeasureData = measureData } - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }) }, @@ -726,8 +737,6 @@ const actions = { resolve() } else { var studyList = [] - // getVisitStudyList - // getReadingVisitStudyList getReadingVisitStudyList(obj.trialId, obj.subjectVisitId, obj.visitTaskId).then(res => { res.Result.forEach((study, studyIndex) => { const data = {} @@ -743,19 +752,30 @@ const actions = { var seriesList = [] study.SeriesList.forEach((series, seriesIndex) => { const imageIds = [] - try { - // if (~window.location.href.indexOf('3c210000-3e2c-0016-4247-08dabf28e96b')) { - series.InstancePathList.forEach((path) => { - // var path = id.split('/')[id.split('/').length - 1] - imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${path}`) - }) - } catch (e) { - console.log(e) - } + const instanceList = [] + // try { + // series.InstancePathList.forEach((path) => { + // imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${path}`) + // }) + // } catch (e) { + // console.log(e) + // } + series.InstanceInfoList.forEach(instance => { + if (instance.NumberOfFrames && instance.NumberOfFrames > 1) { + for (let i = 0; i < instance.NumberOfFrames; i++) { + const path = `${instance.Path}?frame=${i}&instanceId=${instance.Id}` + imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${path}`) + } + } else { + imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${instance.Path}?instanceId=${instance.Id}`) + } + instanceList.push(instance.Id) + }) seriesList.push({ isDicom: study.IsDicom, imageIds: imageIds, - instanceList: series.InstanceList, + instanceInfoList: series.InstanceInfoList, + instanceList: instanceList, seriesId: series.Id, imageIdIndex: 0, seriesUid: series.SeriesInstanceUid, @@ -782,7 +802,8 @@ const actions = { isLoading: false, isBeMark: series.IsBeMark, ww: series.WindowWidth, - wc: series.WindowCenter + wc: series.WindowCenter, + isExistMutiFrames: series.IsExistMutiFrames }) }) data.SeriesList = seriesList @@ -790,7 +811,7 @@ const actions = { }) state.visitTaskList[index].StudyList = studyList state.visitTaskList[index].studyListInit = true - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }).catch(() => { resolve() }) } @@ -823,7 +844,7 @@ const actions = { } } state.visitTaskList[index].StudyList = studyList - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') } else { // console.log(obj) } @@ -843,7 +864,7 @@ const actions = { studyList[obj.studyIndex].SeriesList[obj.seriesIndex].loadStatus = true } state.visitTaskList[obj.visitTaskindex].StudyList = studyList - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') } resolve() }) @@ -851,7 +872,7 @@ const actions = { setStatus({ state }, obj) { var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId) state.visitTaskList[index].IsInit = true - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') }, setActiveSeries({ state }, series) { return new Promise(resolve => { @@ -896,7 +917,7 @@ const actions = { state.visitTaskList[index].QuestionMarkInfoList.push(obj.data) console.log('新增标记成功') } - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }) }, @@ -912,7 +933,7 @@ const actions = { } state.visitTaskList[index].QuestionMarkInfoList = measureData } - sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') + // sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '') resolve() }) } 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 d6d7cc23..2f5a46d6 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,15 +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] @@ -1095,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) @@ -1126,15 +1110,18 @@ export default { // } // resolve() // }) + this.loading = true cornerstone.loadAndCacheImage(this.stack.imageIds[this.stack.currentImageIdIndex]) .then(async image => { await scope.onFirstImageLoaded(image) + scope.loading = false resolve() }) .catch((error) => { if (error.error && error.error.message) { this.$alert(error.error.message) } + scope.loading = false resolve() }) }) @@ -1208,14 +1195,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() @@ -1281,14 +1264,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) // 初次加载时,如果该影像存在标记,则以标记的窗宽窗位为初始化默认值,否则以序列的窗宽窗位为初始化默认值 @@ -1344,14 +1323,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 @@ -1468,14 +1443,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) @@ -1533,11 +1504,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) { @@ -1952,6 +1920,14 @@ export default { } } }, + getInstanceInfo(imageId) { + const params = {} + const searchParams = new URLSearchParams(imageId.split('?')[1]) + for (const [key, value] of searchParams.entries()) { + params[key] = value + } + return params + }, preventDefault(e) { e.stopImmediatePropagation() e.stopPropagation() diff --git a/src/views/trials/trials-panel/reading/dicoms/components/DicomViewer.vue b/src/views/trials/trials-panel/reading/dicoms/components/DicomViewer.vue index 11e546d0..68450171 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/DicomViewer.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/DicomViewer.vue @@ -292,6 +292,51 @@