irc_web/.svn/pristine/a8/a8314c4fc8c737b1cd5041dd16b...

262 lines
7.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div v-loading="loading" class="img-container">
<el-card class="box-card left">
<div class="title">
{{$t('trials:none-dicom-show:fileList')}}
</div>
<div class="left-content">
<!-- 检查层级 -->
<div v-for="(study,i) in studyList" :key="study.CodeView">
<div class="study-desc">
<span>{{ study.CodeView }}</span>
<span style="margin:0 5px">{{ study.Modality }}</span>
<span>{{ getBodyPart(study.BodyPart) }}</span>
</div>
<!-- 文件层级 -->
<div v-if="study.NoneDicomStudyFileList.length === 0" class="empty-text">
<slot name="empty">暂无数据</slot>
</div>
<div v-else id="imgList" style="height:100%;">
<div
v-for="(item,j) in study.NoneDicomStudyFileList"
:id="`img${item.Id}`"
:key="item.Id"
:class="{
'is-boxActive': item.Id === currentFileId
}"
class="img-box"
@click="selected(item,i,j,true)"
>
{{ `${j+1}. ${item.FileName}` }}
</div>
</div>
</div>
</div>
</el-card>
<!-- 预览图像 -->
<el-card class="box-card right">
<div style="width:100%;height: 100%;">
<Preview v-if="previewImage.imgList.length > 0" ref="previewImage" style="width:100%;" :preview-image="previewImage" :value="currentStudyFileIndex" @selectedImg="selectedImg" />
</div>
</el-card>
<!-- <el-card class="box-card" style="width:300px;height:100%;padding: 10px;margin-left:10px;">
<CheckForm />
</el-card> -->
</div>
</template>
<script>
import { getNoneDicomStudyList } from '@/api/trials'
import store from '@/store'
import { changeURLStatic } from '@/utils/history.js'
import Preview from './components/preview'
// import CheckForm from './components/form'
export default {
name: 'Notice',
components: {
Preview
// CheckForm
},
data() {
return {
activeName: 'first',
currentFileId: '',
currentStudyIndex: 0,
currentStudyFileIndex: 0,
pageSize: 0, // 一页展示的图片数
previewImage: {
imgList: [],
index: 0, // 当前点击的图片的索引
infinite: true, // 是否可以循环切换
popup: true, // 弹窗的显示隐藏
studyCode: '',
modality: '',
bodyPart: ''
},
previewVisible: false,
studyList: [],
subjectVisitId: '',
sudyId: '',
loading: false
}
},
mounted() {
if (this.$router.currentRoute.query.TokenKey) {
store.dispatch('user/setToken', this.$router.currentRoute.query.TokenKey)
changeURLStatic('TokenKey', '')
}
this.subjectVisitId = this.$router.currentRoute.query.subjectVisitId
this.studyId = this.$router.currentRoute.query.studyId
this.getNoneDicomList()
// 默认选择第一个文件
},
methods: {
getBodyPart(bodyPart) {
if (!bodyPart) return ''
var separator = ','
if (bodyPart.indexOf('|') > -1) {
separator = '|'
} else if (bodyPart.indexOf(',') > -1) {
separator = ','
} else if (bodyPart.indexOf('') > -1) {
separator = ''
}
var arr = bodyPart.split(separator)
var newArr = arr.map(i => {
return this.$fd('Bodypart', i.trim())
})
return newArr.join(' | ')
},
// 获取非Dicom检查信息
getNoneDicomList() {
this.loading = true
getNoneDicomStudyList(this.subjectVisitId, this.studyId).then(res => {
this.studyList = res.Result
this.loading = false
const studyIndex = this.studyList.findIndex(item => {
return item.NoneDicomStudyFileList.length > 0
})
if (studyIndex > -1) {
var fileObj = this.studyList[studyIndex]['NoneDicomStudyFileList']
this.selected(fileObj[0], studyIndex, 0, true)
}
}).catch(() => { this.loading = false })
},
selected(file, studyIndex, fileIndex, isChangeSub = false) {
this.currentFileId = file.Id
this.currentStudyIndex = studyIndex
this.previewImage.imgList = this.studyList[studyIndex].NoneDicomStudyFileList
this.currentStudyFileIndex = fileIndex
this.previewImage.index = fileIndex
this.previewImage.studyCode = this.studyList[studyIndex].CodeView
this.previewImage.bodyPart = this.studyList[studyIndex].BodyPart
this.previewImage.modality = this.studyList[studyIndex].Modality
this.$nextTick(() => {
if (isChangeSub) {
this.$refs['previewImage'].selected(fileIndex)
}
})
},
selectedImg(fileIndex) {
if (this.studyList.length > 0) {
this.currentStudyFileIndex = fileIndex
this.currentFileId = this.studyList[this.currentStudyIndex].NoneDicomStudyFileList[fileIndex].Id
this.previewImage.index = fileIndex
this.previewImage.studyCode = this.studyList[this.currentStudyIndex].CodeView
this.previewImage.bodyPart = this.studyList[this.currentStudyIndex].BodyPart
this.previewImage.modality = this.studyList[this.currentStudyIndex].Modality
this.$nextTick(() => {
const target = document.getElementById(`img${this.currentFileId}`)
const parent = document.getElementsByClassName('left-content')[0]
parent.scrollTop = target.offsetTop - parent.offsetTop
})
}
},
preview() {
this.previewVisible = true
}
}
}
</script>
<style lang="scss" scoped>
.img-container{
position: relative;
width: 100%;
height: 100%;
padding: 10px;
display: flex;
::-webkit-scrollbar {
width: 7px;
height: 7px;
}
::-webkit-scrollbar-thumb {
border-radius: 10px;
background: #d0d0d0;
}
/deep/ .el-card__body{
padding: 0px;
}
}
.study-desc{
padding: 15px 5px;
line-height: 20px;
background-color: #d5d5d5;
font-weight: 500;
}
.left{
width:220px;
height: 100%;
/deep/ .el-card__body{
height: 100%;
width: 100%;
display: flex;
flex-direction: column;
}
.title{
height: 40px;
line-height: 40px;
border: 1ppx solid;
border: 1px solid #ebe7e7;
padding-left: 10px;
background-color: #4e4e4e;
color: #ffffff;
}
.left-content{
flex: 1;
overflow-y: auto;
}
// /deep/ .el-tabs{
// height: 100%;
// }
// /deep/ .el-tabs__header{
// height: 40px;
// }
// /deep/ .el-tabs__content{
// flex: 1;
// overflow-y: auto;
// padding: 0;
// }
.img-box{
// position: relative;
display: inline-block;
box-sizing: border-box;
border-bottom: 2px solid #f3f3f3;
width: 180px;
height: 50px;
line-height: 50px;
cursor: pointer;
// margin-bottom: 5px;
padding-left: 5px;
}
.img-box:nth-last-child(1){
margin-bottom: 0px;
}
.is-boxActive {
// border-color: #409eff;
color: #409eff;
}
.is-boxActiv:after {
opacity: 0;
}
}
.right{
flex: 1;
height: 100%;
margin-left: 10px;
/deep/ .el-card__body{
height: 100%;
width: 100%;
}
}
</style>