非dicom阅片添加视频查看
continuous-integration/drone/push Build is passing Details

main
wangxiaoshuang 2026-01-08 15:17:18 +08:00
parent e17a89e151
commit e58fbdcab6
1 changed files with 52 additions and 54 deletions

View File

@ -1,16 +1,10 @@
<template> <template>
<div v-loading="loading" class="study-wrapper"> <div v-loading="loading" class="study-wrapper">
<div class="study-info"> <div class="study-info">
<div <div v-if="taskInfo && taskInfo.IsReadingShowSubjectInfo" :title="taskInfo.SubjectCode">
v-if="taskInfo && taskInfo.IsReadingShowSubjectInfo"
:title="taskInfo.SubjectCode"
>
{{ taskInfo.SubjectCode }} {{ taskInfo.SubjectCode }}
</div> </div>
<div <div v-if="taskInfo && taskInfo.IsReadingShowSubjectInfo" :title="visitTaskInfo.TaskBlindName">
v-if="taskInfo && taskInfo.IsReadingShowSubjectInfo"
:title="visitTaskInfo.TaskBlindName"
>
{{ visitTaskInfo.TaskBlindName }} {{ visitTaskInfo.TaskBlindName }}
</div> </div>
</div> </div>
@ -18,14 +12,12 @@
<el-collapse v-model="activeNames" @change="handleChange"> <el-collapse v-model="activeNames" @change="handleChange">
<el-collapse-item v-for="(study, index) in studyList" :key="`${study.Id}`" :name="`${study.Id}`"> <el-collapse-item v-for="(study, index) in studyList" :key="`${study.Id}`" :name="`${study.Id}`">
<template slot="title"> <template slot="title">
<div <div v-if="!study.IsCriticalSequence" class="dicom-desc">
v-if="!study.IsCriticalSequence"
class="dicom-desc"
>
<!-- <div v-if="taskInfo && taskInfo.IsShowStudyName">{{ study.StudyName }}</div> --> <!-- <div v-if="taskInfo && taskInfo.IsShowStudyName">{{ study.StudyName }}</div> -->
<div style="text-overflow: ellipsis;overflow: hidden;"> <div style="text-overflow: ellipsis;overflow: hidden;">
<span :title="study.CodeView">{{ study.CodeView }}</span> <span :title="study.CodeView">{{ study.CodeView }}</span>
<span v-if="taskInfo && taskInfo.IsShowStudyName" :title="study.StudyName" style="margin-left: 5px;">{{ study.StudyName }}</span> <span v-if="taskInfo && taskInfo.IsShowStudyName" :title="study.StudyName" style="margin-left: 5px;">{{
study.StudyName }}</span>
</div> </div>
<div style="text-overflow: ellipsis;overflow: hidden;"> <div style="text-overflow: ellipsis;overflow: hidden;">
<span :title="study.BodyPart">{{ study.BodyPart }}</span> <span :title="study.BodyPart">{{ study.BodyPart }}</span>
@ -38,31 +30,17 @@
</div> </div>
</template> </template>
<div class="file-list-container"> <div class="file-list-container">
<div <div v-for="(k, i) in study.NoneDicomStudyFileList" :key="i" style="position:relative;margin-top:1px;"
v-for="(k, i) in study.NoneDicomStudyFileList" @click="selectFile(study, index, i, k)">
:key="i" <div :class="{ 'file-active': index === activeStudyIndex && i === activeFileIndex }" class="file-wrapper">
style="position:relative;margin-top:1px;"
@click="selectFile(study, index, i)"
>
<div
:class="{'file-active': index === activeStudyIndex && i === activeFileIndex}"
class="file-wrapper"
>
<div class="file-image"> <div class="file-image">
<el-image <el-image
v-if="k.FileType === 'image/jpeg' || k.FileType === 'image/jpg' || k.FileType === 'image/bmp' || k.FileType === 'image/png'" v-if="k.FileType === 'image/jpeg' || k.FileType === 'image/jpg' || k.FileType === 'image/bmp' || k.FileType === 'image/png'"
style="width: 100%;height: 100%;" style="width: 100%;height: 100%;"
:src="`${OSSclientConfig.basePath}${k.Path}?x-oss-process=image/resize,w_50,h_50/format,png`" :src="`${OSSclientConfig.basePath}${k.Path}?x-oss-process=image/resize,w_50,h_50/format,png`"
fit="contain" fit="contain" crossorigin="anonymous" />
crossorigin="anonymous" <el-image v-else-if="k.FileType === 'application/pdf'" style="width: 100%;height: 100%;" :src="pdf"
/> fit="contain" crossorigin="anonymous" />
<el-image
v-else-if="k.FileType === 'application/pdf'"
style="width: 100%;height: 100%;"
:src="pdf"
fit="contain"
crossorigin="anonymous"
/>
</div> </div>
<div class="file-text" :title="k.FileName"> <div class="file-text" :title="k.FileName">
{{ k.FileName }} {{ k.FileName }}
@ -117,7 +95,12 @@ export default {
}) })
}, },
// //
selectFile(study, studyIndex, fileIndex) { selectFile(study, studyIndex, fileIndex, item) {
if (item.FileType.includes('mp4')) return this.$preview({
path: item.Path || item.FilePath,
type: 'mp4',
title: item.FileName,
})
this.activeStudyIndex = studyIndex this.activeStudyIndex = studyIndex
this.activeFileIndex = fileIndex this.activeFileIndex = fileIndex
const fileList = study.NoneDicomStudyFileList const fileList = study.NoneDicomStudyFileList
@ -152,6 +135,7 @@ export default {
overflow-x: hidden; overflow-x: hidden;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.study-info { .study-info {
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
@ -162,6 +146,7 @@ export default {
background-color: #4c4c4c; background-color: #4c4c4c;
height: 50px; height: 50px;
} }
.dicom-desc { .dicom-desc {
font-weight: bold; font-weight: bold;
font-size: 13px; font-size: 13px;
@ -179,19 +164,23 @@ export default {
touch-action: auto; touch-action: auto;
overflow-y: auto; overflow-y: auto;
} }
.file-active { .file-active {
background-color: #607d8b !important; background-color: #607d8b !important;
border: 1px solid #607d8b !important; border: 1px solid #607d8b !important;
} }
::v-deep.el-progress__text { ::v-deep.el-progress__text {
color: #ccc; color: #ccc;
font-size: 12px; font-size: 12px;
} }
.file-list-container { .file-list-container {
width: 100%; width: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: flex-start; justify-content: flex-start;
.file-wrapper { .file-wrapper {
width: 100%; width: 100%;
padding: 5px; padding: 5px;
@ -200,6 +189,7 @@ export default {
align-items: center; align-items: center;
cursor: pointer; cursor: pointer;
background-color: #3a3a3a; background-color: #3a3a3a;
// color: #ddd; // color: #ddd;
// white-space: nowrap; // white-space: nowrap;
// overflow: hidden; // overflow: hidden;
@ -207,13 +197,16 @@ export default {
.el-progress__text { .el-progress__text {
display: none; display: none;
} }
.el-progress-bar { .el-progress-bar {
padding-right: 0px; padding-right: 0px;
} }
.file-image { .file-image {
width: 50px; width: 50px;
height: 50px; height: 50px;
} }
.file-text { .file-text {
flex: 1; flex: 1;
padding-left: 5px; padding-left: 5px;
@ -225,17 +218,21 @@ export default {
} }
} }
::v-deep.el-collapse { ::v-deep.el-collapse {
border: none; border: none;
.el-collapse-item { .el-collapse-item {
background-color: #000 !important; background-color: #000 !important;
color: #ddd; color: #ddd;
} }
.el-collapse-item__content { .el-collapse-item__content {
padding-bottom: 0px; padding-bottom: 0px;
background-color: #000 !important; background-color: #000 !important;
} }
.el-collapse-item__header { .el-collapse-item__header {
background-color: #000 !important; background-color: #000 !important;
color: #ddd; color: #ddd;
@ -245,6 +242,7 @@ export default {
line-height: 20px; line-height: 20px;
} }
} }
::v-deep .el-progress-bar__inner { ::v-deep .el-progress-bar__inner {
transition: width 0s ease; transition: width 0s ease;
} }