Compare commits

..

No commits in common. "456ff203bbe400653a1443811b75263bf27b85c7" and "b2700df68a90c5f9ae7185a761cf26f20137f9e2" have entirely different histories.

2 changed files with 81 additions and 275 deletions

View File

@ -43,47 +43,6 @@
fit="fill" fit="fill"
> >
<div class="viewernavitextwrapper"> <div class="viewernavitextwrapper">
<div style="padding: 1px 5px 1px 1px;display: flex;justify-content: space-between;">
<div v-if="item.keySeries" style="color:red">
Key Images
</div>
<div v-else>
#{{ item.seriesNumber }}
</div>
<div v-if="item.isExistMutiFrames && item.instanceCount > 1">
<el-popover
placement="right"
trigger="hover"
popper-class="instance_frame_wrapper"
>
<div
v-for="(instance, idx) in item.instanceInfoList"
:key="instance.Id"
class="frame_content"
:style="{'margin-bottom':idx<item.instanceInfoList.length-1? '5px':'0px'}"
@click="showMultiFrames(item, index, instance)"
>
<!-- <div>
<img
class="image-preview"
:src="series.previewImageUrl"
crossorigin="anonymous"
alt=""
style="width: 40px;height:40px;"
fit="fill"
>
</div> -->
<div>
<div>{{ instance.InstanceNumber }}</div>
<div>{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}</div>
</div>
</div>
<i slot="reference" class="el-icon-connection" style="font-size: 15px;cursor: pointer;" />
</el-popover>
</div>
</div>
<div v-if="item.keySeries" style="padding: 1px;color:red"> <div v-if="item.keySeries" style="padding: 1px;color:red">
Key Images Key Images
</div> </div>
@ -105,7 +64,7 @@
</div> </div>
</div> </div>
<div v-if="showDelete" style="display: flex;flex-direction: row;justify-content: space-between;" @click.stop=""> <div v-if="showDelete" @click.stop="" style="display: flex;flex-direction: row;justify-content: space-between;">
<div> <div>
<span style="font-size: 12px;margin-right: 5px">{{ $t('trials:audit:table:isReading') }}</span> <span style="font-size: 12px;margin-right: 5px">{{ $t('trials:audit:table:isReading') }}</span>
@ -247,15 +206,14 @@ export default {
var seriesList = [] var seriesList = []
Result.forEach(function(item) { Result.forEach(function(item) {
const imageIds = [] const imageIds = []
item.InstanceInfoList.forEach(i => { // item.InstanceList.forEach(function(id) {
if (i.NumberOfFrames && i.NumberOfFrames > 1) { // imageIds.push(`wadouri:/api/instance/content/${id}`)
for (let j = 0; j < i.NumberOfFrames; j++) { // })
const path = `${i.Path}?frame=${j}&instanceId=${i.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}`) 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 subjectVisitId = scope.$router.currentRoute.query.subjectVisitId
var studyId = scope.$router.currentRoute.query.studyId var studyId = scope.$router.currentRoute.query.studyId
@ -265,7 +223,6 @@ export default {
subjectVisitId, subjectVisitId,
studyId, studyId,
imageIds: imageIds, imageIds: imageIds,
instanceInfoList: item.InstanceInfoList,
seriesId: item.Id, seriesId: item.Id,
seriesUid: item.SeriesInstanceUid, seriesUid: item.SeriesInstanceUid,
seriesNumber: item.SeriesNumber, seriesNumber: item.SeriesNumber,
@ -281,8 +238,7 @@ export default {
keySeries: item.KeySeries, keySeries: item.KeySeries,
tpCode: scope.tpCode, tpCode: scope.tpCode,
loadStatus: false, loadStatus: false,
imageloadedArr: [], imageloadedArr: []
isExistMutiFrames: item.IsExistMutiFrames
}) })
}) })
scope.seriesList = seriesList scope.seriesList = seriesList
@ -313,25 +269,20 @@ export default {
var isDeleted = res.Result[0].IsDeleted var isDeleted = res.Result[0].IsDeleted
var seriesList = [] var seriesList = []
var imageIds = [] var imageIds = []
let isExistMutiFrames = false
const instanceInfoList = []
res.Result.forEach(instance => { res.Result.forEach(instance => {
if (instance.NumberOfFrames > 1) { if (instance.NumberOfFrames > 1) {
for (let i = 0; i < instance.NumberOfFrames; i++) { 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}`) imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${instance.Path}?frame=${i}`)
} }
isExistMutiFrames = true
} else { } else {
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${instance.Path}`) 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({ seriesList.push({
trialId, trialId,
subjectVisitId, subjectVisitId,
studyId, studyId,
imageIds: imageIds, imageIds: imageIds,
instanceInfoList,
seriesId: seriesId, seriesId: seriesId,
seriesUid: seriesInstanceUid, seriesUid: seriesInstanceUid,
seriesNumber: seriesNumber, seriesNumber: seriesNumber,
@ -344,8 +295,7 @@ export default {
instanceCount: res.Result.length, instanceCount: res.Result.length,
prefetchInstanceCount: 0, prefetchInstanceCount: 0,
loadStatus: false, loadStatus: false,
imageloadedArr: [], imageloadedArr: []
isExistMutiFrames: isExistMutiFrames
}) })
this.seriesList = seriesList this.seriesList = seriesList
if (this.seriesList.length > 0) { if (this.seriesList.length > 0) {
@ -369,38 +319,21 @@ export default {
this.$refs.dicomViewer.loadImageStack(this.seriesList[seriesIndex]) this.$refs.dicomViewer.loadImageStack(this.seriesList[seriesIndex])
if (!series.loadStatus) { if (!series.loadStatus) {
requestPoolManager.changePriority(series.seriesId) requestPoolManager.changePriority(series.seriesId)
} // var isAddToTakPool = false
}, // if (this.showSeriesList.includes(`${seriesIndex}`)) {
showMultiFrames(series, seriesIndex, instanceInfo) { // isAddToTakPool = true
this.currentSeriesIndex = seriesIndex // } else {
const imageIds = [] // this.showSeriesList.push(`${seriesIndex}`)
if (instanceInfo.NumberOfFrames && instanceInfo.NumberOfFrames > 1) { // }
for (let j = 0; j < instanceInfo.NumberOfFrames; j++) { // if (!isAddToTakPool) {
const path = `${instanceInfo.Path}?frame=${j}&instanceId=${instanceInfo.Id}` // var priority = parseInt(new Date().getTime())
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${path}`) // series.isLoading = true
} // series.imageIds.map((imageId) => {
} else { // this.imageList.push({ imageId: imageId, seriesId: series.seriesId, priority })
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${instanceInfo.Path}?instanceId=${instanceInfo.Id}`) // })
} // } else {
const seriesInfo = { // requestPoolManager.changePriority(series.seriesId)
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() { initStudy() {
@ -823,29 +756,6 @@ export default {
color: #D0D0D0; color: #D0D0D0;
font-size: 13px; 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 { /* .viewerRightSidePanel {
width: 300px; width: 300px;
height: 100%; height: 100%;

View File

@ -46,6 +46,13 @@
@click="showSeriesImage($event,index,i,series)" @click="showSeriesImage($event,index,i,series)"
> >
<div class="viewernavigatorwrapper"> <div class="viewernavigatorwrapper">
<!-- <el-image
class="image-preview"
style="height:72px;width:72px;"
:src="series.previewImageUrl"
fit="fill"
/> -->
<img <img
class="image-preview" class="image-preview"
:src="series.previewImageUrl" :src="series.previewImageUrl"
@ -55,41 +62,8 @@
fit="fill" fit="fill"
> >
<div class="viewernavitextwrapper"> <div class="viewernavitextwrapper">
<div style="padding: 1px 5px 1px 1px;display: flex;justify-content: space-between;"> <div style="padding: 1px;">
<div>#{{ series.seriesNumber }}</div> #{{ series.seriesNumber }}
<div v-if="series.isExistMutiFrames && series.instanceCount > 1">
<el-popover
placement="right"
trigger="hover"
popper-class="instance_frame_wrapper"
>
<div
v-for="(instance, idx) in series.instanceInfoList"
:key="instance.Id"
class="frame_content"
:style="{'margin-bottom':idx<series.instanceInfoList.length-1? '5px':'0px'}"
@click="showMultiFrames(series, i, instance)"
>
<!-- <div>
<img
class="image-preview"
:src="series.previewImageUrl"
crossorigin="anonymous"
alt=""
style="width: 40px;height:40px;"
fit="fill"
>
</div> -->
<div>
<div>{{ instance.InstanceNumber }}</div>
<div>{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}</div>
</div>
</div>
<i slot="reference" class="el-icon-connection" style="font-size: 15px;cursor: pointer;" />
</el-popover>
</div>
</div> </div>
<div v-show="series.InstanceCount" style="padding: 1px;"> <div v-show="series.InstanceCount" style="padding: 1px;">
{{ series.modality }}: {{ series.instanceCount }} image {{ series.modality }}: {{ series.instanceCount }} image
@ -106,10 +80,10 @@
<div style="padding: 1px;"> <div style="padding: 1px;">
{{ series.prefetchInstanceCount }}/{{ series.instanceCount }} {{ series.prefetchInstanceCount }}/{{ series.instanceCount }}
</div> </div>
<div />
</div> </div>
</div> </div>
<div v-if="showDelete" style="display: flex;flex-direction: row;justify-content: space-between;" @click.stop=""> <div v-if="showDelete" @click.stop="" style="display: flex;flex-direction: row;justify-content: space-between;">
<div> <div>
<span style="font-size: 12px;">{{ $t('trials:audit:table:isReading') }}</span> <span style="font-size: 12px;">{{ $t('trials:audit:table:isReading') }}</span>
@ -189,46 +163,13 @@
> >
<div class="viewernavitextwrapper"> <div class="viewernavitextwrapper">
<div style="padding: 1px 5px 1px 1px;display: flex;justify-content: space-between;"> <div v-if="seriesItem.keySeries" style="padding: 1px;color:red">
<div v-if="seriesItem.keySeries" style="color:red">
Key Images Key Images
</div> </div>
<div v-else>#{{ seriesItem.seriesNumber }}</div> <div v-else style="padding: 1px;">
<div v-if="seriesItem.isExistMutiFrames && seriesItem.instanceCount > 1"> #{{ seriesItem.seriesNumber }}
<el-popover
placement="right"
trigger="hover"
popper-class="instance_frame_wrapper"
>
<div
v-for="(instance, idx) in seriesItem.instanceInfoList"
:key="instance.Id"
class="frame_content"
:style="{'margin-bottom':idx<seriesItem.instanceInfoList.length-1? '5px':'0px'}"
@click="showMultiFrames(seriesItem, i, instance)"
>
<!-- <div>
<img
class="image-preview"
:src="series.previewImageUrl"
crossorigin="anonymous"
alt=""
style="width: 40px;height:40px;"
fit="fill"
>
</div> -->
<div>
<div>{{ instance.InstanceNumber }}</div>
<div>{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame` }}</div>
</div> </div>
<div v-show=" seriesItem.instanceCount" style="padding: 1px;">
</div>
<i slot="reference" class="el-icon-connection" style="font-size: 15px;cursor: pointer;" />
</el-popover>
</div>
</div>
<div v-show="seriesItem.instanceCount" style="padding: 1px;">
{{ seriesItem.modality }}: {{ seriesItem.instanceCount }} image {{ seriesItem.modality }}: {{ seriesItem.instanceCount }} image
</div> </div>
<div v-show="seriesItem.sliceThickness" style="padding: 1px;"> <div v-show="seriesItem.sliceThickness" style="padding: 1px;">
@ -239,6 +180,7 @@
{{ seriesItem.description }} {{ seriesItem.description }}
</div> </div>
</el-tooltip> </el-tooltip>
</div> </div>
<!-- <div style="position: absolute;bottom: -10px;left: 0;width: 100%;"> <!-- <div style="position: absolute;bottom: -10px;left: 0;width: 100%;">
<el-progress v-if="seriesItem.prefetchInstanceCount>0 && seriesItem.prefetchInstanceCount<seriesItem.instanceCount" :percentage="Number(seriesItem.prefetchInstanceCount/seriesItem.instanceCount)*100" /> <el-progress v-if="seriesItem.prefetchInstanceCount>0 && seriesItem.prefetchInstanceCount<seriesItem.instanceCount" :percentage="Number(seriesItem.prefetchInstanceCount/seriesItem.instanceCount)*100" />
@ -299,7 +241,6 @@ export default {
} }
}, },
mounted() { mounted() {
document.documentElement.style.userSelect = 'none'
if (this.$router.currentRoute.query.TokenKey) { if (this.$router.currentRoute.query.TokenKey) {
store.dispatch('user/setToken', this.$router.currentRoute.query.TokenKey) store.dispatch('user/setToken', this.$router.currentRoute.query.TokenKey)
changeURLStatic('TokenKey', '') changeURLStatic('TokenKey', '')
@ -333,22 +274,21 @@ export default {
var seriesList = [] var seriesList = []
study.SeriesList.forEach((series) => { study.SeriesList.forEach((series) => {
const imageIds = [] const imageIds = []
series.InstanceInfoList.forEach(i => {
if (i.NumberOfFrames && i.NumberOfFrames > 1) { // series.InstanceList.forEach((id) => {
for (let j = 0; j < i.NumberOfFrames; j++) { // imageIds.push(`wadouri:/api/instance/content/${id}`)
const path = `${i.Path}?frame=${j}&instanceId=${i.Id}` // })
// series.InstanceList.forEach((id) => {
// imageIds.push(`wadouri:http://123.56.94.154:7000/instance/content/${id}`)
// })
series.InstancePathList.forEach((path) => {
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${path}`) 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}${i.Path}?instanceId=${i.Id}`)
}
}) })
seriesList.push({ seriesList.push({
trialId: this.trialId, trialId: this.trialId,
subjectVisitId: this.subjectVisitId, subjectVisitId: this.subjectVisitId,
studyId: study.StudyId, studyId: study.StudyId,
imageIds: imageIds, imageIds: imageIds,
instanceInfoList: series.InstanceInfoList,
seriesId: series.Id, seriesId: series.Id,
seriesUid: series.SeriesInstanceUid, seriesUid: series.SeriesInstanceUid,
seriesNumber: series.SeriesNumber, seriesNumber: series.SeriesNumber,
@ -361,8 +301,7 @@ export default {
instanceCount: series.InstanceCount, instanceCount: series.InstanceCount,
prefetchInstanceCount: 0, prefetchInstanceCount: 0,
loadStatus: false, loadStatus: false,
imageloadedArr: [], imageloadedArr: []
isExistMutiFrames: series.IsExistMutiFrames
}) })
}) })
data.SeriesList = seriesList data.SeriesList = seriesList
@ -390,38 +329,21 @@ export default {
this.$refs.dicomViewer.loadImageStack(this.studyList[studyIndex].SeriesList[seriesIndex]) this.$refs.dicomViewer.loadImageStack(this.studyList[studyIndex].SeriesList[seriesIndex])
if (!series.loadStatus) { if (!series.loadStatus) {
requestPoolManager.changePriority(series.seriesId) requestPoolManager.changePriority(series.seriesId)
} // var isAddToTakPool = false
}, // if (this.showSeriesList.includes(`${studyIndex}_${seriesIndex}`)) {
showMultiFrames(series, seriesIndex, instanceInfo) { // isAddToTakPool = true
this.currentSeriesIndex = seriesIndex // } else {
const imageIds = [] // this.showSeriesList.push(`${studyIndex}_${seriesIndex}`)
if (instanceInfo.NumberOfFrames && instanceInfo.NumberOfFrames > 1) { // }
for (let j = 0; j < instanceInfo.NumberOfFrames; j++) { // if (!isAddToTakPool) {
const path = `${instanceInfo.Path}?frame=${j}&instanceId=${instanceInfo.Id}` // var priority = parseInt(new Date().getTime())
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${path}`) // series.isLoading = true
} // series.imageIds.map((imageId, i) => {
} else { // this.imageList.push({ imageId: imageId, seriesId: series.seriesId, priority })
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${instanceInfo.Path}?instanceId=${instanceInfo.Id}`) // })
} // } else {
const seriesInfo = { // requestPoolManager.changePriority(series.seriesId)
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)
} }
}, },
changeReadingStatus(callback, data) { changeReadingStatus(callback, data) {
@ -528,19 +450,17 @@ export default {
const res = data.Result const res = data.Result
res.forEach(function(item) { res.forEach(function(item) {
const imageIds = [] const imageIds = []
item.InstanceInfoList.forEach(i => { // item.InstanceList.forEach(function(id) {
if (i.NumberOfFrames && i.NumberOfFrames > 1) { // imageIds.push(`wadouri:/api/instance/content/${id}`)
for (let j = 0; j < i.NumberOfFrames; j++) { // })
const path = `${i.Path}?frame=${j}&instanceId=${i.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}`) 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}`)
}
}) })
seriesList.push({ seriesList.push({
imageIds: imageIds, imageIds: imageIds,
instanceInfoList: item.InstanceInfoList,
seriesId: item.Id, seriesId: item.Id,
seriesUid: item.SeriesInstanceUid, seriesUid: item.SeriesInstanceUid,
seriesNumber: item.SeriesNumber, seriesNumber: item.SeriesNumber,
@ -553,8 +473,7 @@ export default {
hasLabel: item.HasLabel, hasLabel: item.HasLabel,
keySeries: item.KeySeries, keySeries: item.KeySeries,
loadStatus: false, loadStatus: false,
imageloadedArr: [], imageloadedArr: []
isExistMutiFrames: item.IsExistMutiFrames
}) })
}) })
scope.relationStudyList[index].seriesCount = seriesList.length scope.relationStudyList[index].seriesCount = seriesList.length
@ -775,9 +694,9 @@ export default {
padding: 5px; padding: 5px;
/* height: 95%; */ /* height: 95%; */
height: 99%; height: 99%;
/* overflow: hidden; overflow: hidden;
text-overflow: clip; */ text-overflow: clip;
/* white-space: nowrap; */ white-space: nowrap;
} }
.viewerContainer .viewerContentWrapper>div { .viewerContainer .viewerContentWrapper>div {
display: inline-block; display: inline-block;
@ -894,29 +813,6 @@ export default {
height: 40px; height: 40px;
line-height: 20px; line-height: 20px;
} }
.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 { /* .viewerRightSidePanel {
width: 300px; width: 300px;