From e3034e3b07eaa4382dd2d2fa57d5c1f7ff90a994 Mon Sep 17 00:00:00 2001 From: caiyiling <1321909229@qq.com> Date: Fri, 17 May 2024 15:45:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E8=A7=88=E5=A4=9A=E5=B8=A7=E5=9B=BE?= =?UTF-8?q?=E5=83=8F=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/dicom-show/dicom-study.vue | 142 ++++++++++++++---- src/views/dicom-show/dicom-visit.vue | 214 ++++++++++++++++++++------- 2 files changed, 275 insertions(+), 81 deletions(-) diff --git a/src/views/dicom-show/dicom-study.vue b/src/views/dicom-show/dicom-study.vue index 2aea62e2..c9dd14a4 100644 --- a/src/views/dicom-show/dicom-study.vue +++ b/src/views/dicom-show/dicom-study.vue @@ -43,6 +43,47 @@ fit="fill" >
+
+
+ Key Images +
+
+ #{{ item.seriesNumber }} +
+
+ +
+ +
+
{{ instance.InstanceNumber }}
+
{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}
+
+ +
+ +
+
+ +
Key Images
@@ -64,7 +105,7 @@
-
+
{{ $t('trials:audit:table:isReading') }} @@ -206,14 +247,15 @@ export default { var seriesList = [] Result.forEach(function(item) { const imageIds = [] - // item.InstanceList.forEach(function(id) { - // imageIds.push(`wadouri:/api/instance/content/${id}`) - // }) - // item.InstanceList.forEach((id) => { - // imageIds.push(`wadouri:http://123.56.94.154:7000/instance/content/${id}`) - // }) - item.InstancePathList.forEach((path) => { - imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? scope.OSSclientConfig.basePath : scope.OSSclientConfig.basePath}${path}`) + item.InstanceInfoList.forEach(i => { + if (i.NumberOfFrames && i.NumberOfFrames > 1) { + for (let j = 0; j < i.NumberOfFrames; j++) { + const path = `${i.Path}?frame=${j}&instanceId=${i.Id}` + imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? scope.OSSclientConfig.basePath : scope.OSSclientConfig.basePath}${path}`) + } + } else { + imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? scope.OSSclientConfig.basePath : scope.OSSclientConfig.basePath}${i.Path}?instanceId=${i.Id}`) + } }) var subjectVisitId = scope.$router.currentRoute.query.subjectVisitId var studyId = scope.$router.currentRoute.query.studyId @@ -223,6 +265,7 @@ export default { subjectVisitId, studyId, imageIds: imageIds, + instanceInfoList: item.InstanceInfoList, seriesId: item.Id, seriesUid: item.SeriesInstanceUid, seriesNumber: item.SeriesNumber, @@ -238,7 +281,8 @@ export default { keySeries: item.KeySeries, tpCode: scope.tpCode, loadStatus: false, - imageloadedArr: [] + imageloadedArr: [], + isExistMutiFrames: item.IsExistMutiFrames }) }) scope.seriesList = seriesList @@ -269,20 +313,25 @@ export default { var isDeleted = res.Result[0].IsDeleted var seriesList = [] var imageIds = [] + let isExistMutiFrames = false + const instanceInfoList = [] res.Result.forEach(instance => { if (instance.NumberOfFrames > 1) { for (let i = 0; i < instance.NumberOfFrames; i++) { imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${instance.Path}?frame=${i}`) } + isExistMutiFrames = true } else { imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${instance.Path}`) } + instanceInfoList.push({ Id: instance.Id, InstanceNumber: instance.InstanceNumber, NumberOfFrames: instance.NumberOfFrames, Path: instance.Path }) }) seriesList.push({ trialId, subjectVisitId, studyId, imageIds: imageIds, + instanceInfoList, seriesId: seriesId, seriesUid: seriesInstanceUid, seriesNumber: seriesNumber, @@ -295,7 +344,8 @@ export default { instanceCount: res.Result.length, prefetchInstanceCount: 0, loadStatus: false, - imageloadedArr: [] + imageloadedArr: [], + isExistMutiFrames: isExistMutiFrames }) this.seriesList = seriesList if (this.seriesList.length > 0) { @@ -319,21 +369,38 @@ export default { this.$refs.dicomViewer.loadImageStack(this.seriesList[seriesIndex]) if (!series.loadStatus) { requestPoolManager.changePriority(series.seriesId) - // var isAddToTakPool = false - // if (this.showSeriesList.includes(`${seriesIndex}`)) { - // isAddToTakPool = true - // } else { - // this.showSeriesList.push(`${seriesIndex}`) - // } - // if (!isAddToTakPool) { - // var priority = parseInt(new Date().getTime()) - // series.isLoading = true - // series.imageIds.map((imageId) => { - // this.imageList.push({ imageId: imageId, seriesId: series.seriesId, priority }) - // }) - // } else { - // requestPoolManager.changePriority(series.seriesId) - // } + } + }, + showMultiFrames(series, seriesIndex, instanceInfo) { + this.currentSeriesIndex = seriesIndex + const imageIds = [] + if (instanceInfo.NumberOfFrames && instanceInfo.NumberOfFrames > 1) { + for (let j = 0; j < instanceInfo.NumberOfFrames; j++) { + const path = `${instanceInfo.Path}?frame=${j}&instanceId=${instanceInfo.Id}` + imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${path}`) + } + } else { + imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${instanceInfo.Path}?instanceId=${instanceInfo.Id}`) + } + const seriesInfo = { + trialId: series.trialId, + subjectVisitId: series.subjectVisitId, + studyId: series.studyId, + imageIds: imageIds, + seriesId: series.seriesId, + seriesUid: series.seriesUid, + seriesNumber: series.seriesNumber, + sliceThickness: series.sliceThickness, + modality: series.modality, + description: series.description, + isReading: series.isReading, + isDeleted: series.isDeleted, + previewImageUrl: series.previewImageUrl, + instanceCount: series.instanceCount + } + this.$refs.dicomViewer.loadImageStack(seriesInfo) + if (!series.loadStatus) { + requestPoolManager.changePriority(series.seriesId) } }, initStudy() { @@ -756,6 +823,29 @@ export default { color: #D0D0D0; font-size: 13px; } +.instance_frame_wrapper{ + min-width: 120px; + background-color: #2c2c2c; + border: 1px solid #2c2c2c; + padding: 5px; +} +.frame_content{ + height: 50px; + padding: 5px; + display: flex; + justify-content: flex-start; + color: #ddd; + font-size: 12px; + border: 1px solid #404040; +} +.frame_content:hover { + /* font-weight: bold; */ + /* box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); */ + cursor: pointer; + /* color: #428bca; */ + border-color: #213a54 !important; + background-color: #213a54; +} /* .viewerRightSidePanel { width: 300px; height: 100%; diff --git a/src/views/dicom-show/dicom-visit.vue b/src/views/dicom-show/dicom-visit.vue index feba26c4..fc8c534c 100644 --- a/src/views/dicom-show/dicom-visit.vue +++ b/src/views/dicom-show/dicom-visit.vue @@ -46,13 +46,6 @@ @click="showSeriesImage($event,index,i,series)" >
- -
-
- #{{ series.seriesNumber }} +
+
#{{ series.seriesNumber }}
+
+ +
+ +
+
{{ instance.InstanceNumber }}
+
{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}
+
+ +
+ +
+
+
{{ series.modality }}: {{ series.instanceCount }} image @@ -80,10 +106,10 @@
{{ series.prefetchInstanceCount }}/{{ series.instanceCount }}
- +
-
+
{{ $t('trials:audit:table:isReading') }} @@ -163,13 +189,46 @@ >
-
- Key Images +
+
+ Key Images +
+
#{{ seriesItem.seriesNumber }}
+
+ +
+ +
+
{{ instance.InstanceNumber }}
+
{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}
+
+ +
+ +
+
+
-
- #{{ seriesItem.seriesNumber }} -
-
+
{{ seriesItem.modality }}: {{ seriesItem.instanceCount }} image
@@ -180,7 +239,6 @@ {{ seriesItem.description }}
-