影像浏览页面-关联访视,左侧的影像列表按照访视-检查-序列的层级展示;点击单个序列时,自动下载当前序列影像
continuous-integration/drone/push Build encountered an error Details

uat
wangxiaoshuang 2025-07-18 11:43:29 +08:00
parent 51a94ad89e
commit 17737d901c
1 changed files with 103 additions and 72 deletions

View File

@ -152,9 +152,16 @@
<el-tab-pane v-show="!visitTaskId" :label="$t('trials:dicom-show:relatedVisit')" name="relation-study"
class="pane-relation-wrapper">
<div class="viewerSidethumbinner">
<el-collapse v-model="relationActiveName" @change="handelRelationActiveChange">
<el-collapse-item v-for="(study, studyIndex) in relationStudyList" :key="`${study.StudyId}`"
:name="`${study.StudyId}`">
<template v-for="item in relationStudyListByVisitName">
<div :key="`${item.VisitName}`">
<div v-show="item.VisitName" class="text-desc" style="background-color: #1f1f1f;">
{{ item.VisitName }}
</div>
<template v-for="(study, studyIndex) in relationStudyList">
<el-collapse-item :key="`${study.StudyId}`" :name="`${study.StudyId}`"
v-if="study.VisitName === item.VisitName">
<template slot="title">
<div class="text-desc">
@ -174,14 +181,15 @@
<div class="viewerSidethumbs ps" style="position: relative;">
<div class="viewerSidethumbinner">
<div v-for="(seriesItem, index) in study.seriesList" :key="seriesItem.seriesId">
<div class="viewernavigatorwrapper" style="position: relative;border:1px solid #434343;"
series-type="relation"
<div class="viewernavigatorwrapper"
style="position: relative;border:1px solid #434343;" series-type="relation"
@click="showRelationSeriesImage($event, seriesItem, studyIndex, index)">
<img class="image-preview" :src="seriesItem.previewImageUrl" crossorigin="anonymous"
alt="" style="width: 85px;height:85px;" fit="fill">
<div class="viewernavitextwrapper">
<div style="padding: 1px 5px 1px 1px;display: flex;justify-content: space-between;">
<div
style="padding: 1px 5px 1px 1px;display: flex;justify-content: space-between;">
<div v-if="seriesItem.keySeries" style="color:red">
Key Images
</div>
@ -190,13 +198,14 @@
<el-popover placement="right-start" trigger="click"
popper-class="instance_frame_wrapper">
<div class="frame_list">
<div v-for="(instance, idx) in seriesItem.instanceInfoList" :key="instance.Id"
class="frame_content"
<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(studyIndex, seriesItem, index, instance)">
<div>
<div>{{ instance.InstanceNumber }}</div>
<div>{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame`
<div>{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1}
frame`
}}</div>
</div>
@ -238,6 +247,11 @@
</div>
</div>
</el-collapse-item>
</template>
</div>
</template>
</el-collapse>
</div>
@ -293,6 +307,7 @@ export default {
visitInfo: '',
activeName: 'current-study',
relationStudyList: [],
relationStudyListByVisitName: [],
cachedImages: [],
isReading: null,
isStartLoad: false,
@ -692,7 +707,20 @@ export default {
const res = await getAllRelationStudyList(this.subjectVisitId)
loading.close()
this.relationStudyList = res.Result
this.relationStudyListByVisitName = []
res.Result.forEach(item => {
let index = this.relationStudyListByVisitName.findIndex(d => d.VisitName === item.VisitName)
if (index < 0) {
this.relationStudyListByVisitName.push({
VisitName: item.VisitName,
series: [item]
})
} else {
this.relationStudyListByVisitName[index].series.push(item)
}
})
} catch (e) {
console.log(e)
loading.close()
}
}
@ -798,6 +826,9 @@ export default {
this.imageList.push({ imageId: imageId, seriesId: series.seriesId, priority })
})
}
if (this.imageList.length > 0) {
this.loopLoad()
}
}
},
loadAllImages() {