151 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
| <template>
 | ||
|   <div class="preview-wrapper">
 | ||
|     <div class="left-wrapper">
 | ||
|       <div v-for="item in noneDicomStudyList" :key="item.Id">
 | ||
|         <div class="study-info">
 | ||
|           <h4>{{ `${item.CodeView} (Modality: ${item.Modality})` }}</h4>
 | ||
|         </div>
 | ||
|         <ul>
 | ||
|           <li v-for="file in item.NoneDicomStudyFileList" :key="file.Id">
 | ||
|             <el-button :class="{activeBtn:file.Id === fileInfo.currentId}" plain style="width:100%;text-align:left;" @click="preview(file)">{{ file.FileName }}</el-button>
 | ||
|           </li>
 | ||
|         </ul>
 | ||
|       </div>
 | ||
|     </div>
 | ||
|     <div class="right-wrapper">
 | ||
|       <iframe
 | ||
|         v-if="fileInfo.currentFileType === 0"
 | ||
|         frameborder="0"
 | ||
|         :src="fileInfo.currentFilePath"
 | ||
|         width="100%"
 | ||
|         height="100%"
 | ||
|       />
 | ||
|       <!-- <embed v-else-if="fileInfo.currentFileType === 1" :src="fileInfo.currentFilePath" style="width: 100%; height: 100%"> -->
 | ||
|       <!-- <iframe v-else-if="fileInfo.currentFileType === 1" :src="fileInfo.currentFilePath+'#toolbar=0'" width="100%" height="100%" frameborder="0" /> -->
 | ||
|       <iframe v-else-if="fileInfo.currentFileType === 1" :src="`/static/pdfjs/web/viewer.html?file=${fileInfo.currentFilePath}`" width="100%" height="100%" frameborder="0" />
 | ||
| 
 | ||
|       <div v-else-if="fileInfo.currentFileType === 2">
 | ||
|         {{ $t('common:message:downloadFile') }}
 | ||
|         <el-link type="primary" @click="downLoadFile(fileInfo.currentFilePath)">{{ $t('common:button:download') }}</el-link>
 | ||
|       </div>
 | ||
|     </div>
 | ||
|   </div>
 | ||
| </template>
 | ||
| <script>
 | ||
| import { getNoneDicomStudyList } from '@/api/trials'
 | ||
| import store from '@/store'
 | ||
| import { changeURLStatic } from '@/utils/history.js'
 | ||
| export default {
 | ||
|   name: 'MultipleNoneDicom',
 | ||
|   data() {
 | ||
|     return {
 | ||
|       fileInfo: {
 | ||
|         currentId: '',
 | ||
|         currentFileName: '',
 | ||
|         currentFilePath: '',
 | ||
|         currentFileType: null // 0:图片;1:pdf; 2:其他
 | ||
|       },
 | ||
|       noneDicomStudyList: [],
 | ||
|       subjectVisitId: ''
 | ||
|     }
 | ||
|   },
 | ||
|   mounted() {
 | ||
|     if (this.$router.currentRoute.query.TokenKey) {
 | ||
|       store.dispatch('user/setToken', this.$router.currentRoute.query.TokenKey)
 | ||
|       changeURLStatic('TokenKey', '')
 | ||
|     }
 | ||
| 
 | ||
|     this.subjectVisitId = this.$router.currentRoute.query.Id
 | ||
|     this.getNoneDicomList()
 | ||
|   },
 | ||
|   methods: {
 | ||
|     // 获取非Dicom检查信息
 | ||
|     getNoneDicomList() {
 | ||
|       this.loading = true
 | ||
|       getNoneDicomStudyList(this.subjectVisitId).then(res => {
 | ||
|         this.noneDicomStudyList = res.Result
 | ||
|         this.loading = false
 | ||
|         const study = this.noneDicomStudyList.find((item, index) => {
 | ||
|           return item.NoneDicomStudyFileList.length > 0
 | ||
|         })
 | ||
|         if (study !== undefined) {
 | ||
|           this.preview(study.NoneDicomStudyFileList[0])
 | ||
|         }
 | ||
|       }).catch(() => { this.loading = false })
 | ||
|     },
 | ||
|     downLoadFile(filePath) {
 | ||
|       if (!filePath) return
 | ||
|       window.open(filePath, '_blank')
 | ||
|     },
 | ||
|     preview(file) {
 | ||
|       this.$set(this.fileInfo, 'currentId', file.Id)
 | ||
|       this.$set(this.fileInfo, 'currentFileName', file.FileName)
 | ||
|       this.$set(this.fileInfo, 'currentFileType', this.getFileType(file.FileName))
 | ||
|       this.$set(this.fileInfo, 'currentFilePath', file.FullFilePath)
 | ||
|     },
 | ||
|     getFileType(fileName) {
 | ||
|       if (!fileName) return null
 | ||
|       const fn = fileName.substring(fileName.lastIndexOf('.') + 1).toLocaleLowerCase()
 | ||
|       if (fn.indexOf('jpg') !== -1 || fn.indexOf('png') !== -1) {
 | ||
|         return 0
 | ||
|       } else if (fn.indexOf('pdf') !== -1) {
 | ||
|         return 1
 | ||
|       } else {
 | ||
|         return 2
 | ||
|       }
 | ||
|     }
 | ||
|   }
 | ||
| }
 | ||
| </script>
 | ||
| <style lang="scss">
 | ||
| .preview-wrapper{
 | ||
|   height: 100%;
 | ||
|   display: flex;
 | ||
|   flex-direction: row !important;
 | ||
|   width: 100%;
 | ||
|   height: 100%;
 | ||
|   ::-webkit-scrollbar {
 | ||
|     width: 7px;
 | ||
|     height: 7px;
 | ||
|   }
 | ||
|   ::-webkit-scrollbar-thumb {
 | ||
|     border-radius: 10px;
 | ||
|     background: #d0d0d0;
 | ||
|   }
 | ||
|   .left-wrapper{
 | ||
|     margin-right: 10px;
 | ||
|     height: 100%;
 | ||
|     width: 300px;
 | ||
|     border: 1px solid #ddd;
 | ||
|     overflow: auto;
 | ||
|     .study-info{
 | ||
|       background-color: #eee;
 | ||
|       padding: 2px;
 | ||
|       h4{
 | ||
|         padding-left: 5px;
 | ||
|       }
 | ||
|     }
 | ||
|     ul{
 | ||
|       list-style: none;
 | ||
|       margin: 0px;
 | ||
|       padding: 2px;
 | ||
|       border: 1px solid #ddd;
 | ||
|       li{
 | ||
|         padding: 2px 0px;
 | ||
|       }
 | ||
|     }
 | ||
|     .activeBtn{
 | ||
|       color: #428bca;
 | ||
|       border-color: #428bca;
 | ||
|     }
 | ||
|   }
 | ||
|   .right-wrapper{
 | ||
|     flex: 1;
 | ||
|     height: 100%;
 | ||
|     padding: 5px;
 | ||
|     border: 1px solid #ddd;
 | ||
|   }
 | ||
| 
 | ||
| }
 | ||
| </style>
 |