irc_web/.svn/pristine/65/65ec4f37127806d9c277870905b...

186 lines
5.6 KiB
Plaintext

<template>
<div style="width:100%;height:100%">
<div v-if="readingCategory && readingCategory=== 1" class="reading-wrapper">
<el-tabs v-model="activeName" v-loading="loading" :before-leave="beforeLeave">
<el-tab-pane label="阅片" name="read">
<ReadPage
v-if="tabs.includes('read')"
:trial-id="trialId"
:visit-task-id="visitTaskId"
:subject-id="subjectId"
:subject-code="subjectCode"
:is-exists-clinical-data="isExistsClinicalData"
:is-exists-no-dicom-file="isExistsNoDicomFile"
/>
</el-tab-pane>
<el-tab-pane label="报告" name="report">
<ReportPage v-if="tabs.includes('report')" :visit-task-id="visitTaskId" />
</el-tab-pane>
</el-tabs>
</div>
</div>
</template>
<script>
import { getNextTask } from '@/api/trials'
import ReadPage from './components/ReadPage'
import ReportPage from './components/ReportPage'
import DicomEvent from './components/DicomEvent'
import { getToken } from '@/utils/auth'
export default {
name: 'Reading',
components: {
ReadPage,
ReportPage
},
data() {
return {
activeName: '',
tabs: [],
trialId: '',
subjectCode: '',
subjectId: '',
visitTaskId: '',
loading: false,
readingCategory: null,
isReadingShowSubjectInfo: false,
isReadingShowPreviousResults: false,
isExistsClinicalData: false,
isExistsNoDicomFile: false,
digitPlaces: 2
}
},
mounted() {
DicomEvent.$on('getNextTask', () => {
this.getTaskInfo()
})
this.activeName = this.$router.currentRoute.query.tabName
this.tabs.push(this.activeName)
this.trialId = this.$router.currentRoute.query.trialId
this.subjectCode = this.$router.currentRoute.query.subjectCode
this.subjectId = this.$router.currentRoute.query.subjectId
this.visitTaskId = this.$router.currentRoute.query.visitTaskId
this.readingCategory = parseInt(this.$router.currentRoute.query.readingCategory)
this.taskBlindName = this.$router.currentRoute.query.taskBlindName
this.isReadingShowSubjectInfo = this.$router.currentRoute.query.isReadingShowSubjectInfo
this.isReadingShowPreviousResults = this.$router.currentRoute.query.isReadingShowPreviousResults
this.isExistsClinicalData = this.$router.currentRoute.query.isExistsClinicalData === 'true'
this.isExistsNoDicomFile = this.$router.currentRoute.query.isExistsNoDicomFile === 'true'
this.digitPlaces = this.$router.currentRoute.query.digitPlaces ? Number(this.$router.currentRoute.query.digitPlaces) : 1
localStorage.setItem('digitPlaces', 2)
},
beforeDestroy() {
DicomEvent.$off('getNextTask')
},
methods: {
getTaskInfo() {
this.loading = true
var param = {
subjectId: this.subjectId,
trialId: this.trialId,
subjectCode: this.subjectCode,
trialReadingCriterionId: localStorage.getItem('TrialReadingCriterionId')
}
getNextTask(param).then(async res => {
this.visitTaskId = res.Result.VisitTaskId
this.subjectId = res.Result.SubjectId
this.subjectCode = res.Result.SubjectCode
this.taskBlindName = res.Result.taskBlindName
this.isReadingShowSubjectInfo = res.Result.IsReadingShowSubjectInfo
this.isReadingShowPreviousResults = res.Result.IsReadingShowPreviousResults
this.isExistsNoDicomFile = res.Result.IsExistsNoDicomFile
this.isExistsClinicalData = res.Result.IsExistsClinicalData
this.readingCategory = res.Result.ReadingCategory
if (res.Result.ReadingCategory === 1) {
this.$nextTick(() => {
this.activeName = 'read'
DicomEvent.$emit('getNextVisitInfo')
DicomEvent.$emit('getReportInfo')
})
} else {
var token = getToken()
var subjectCode = this.subjectCode
var subjectId = this.subjectId
var trialId = this.trialId
this.$router.push({
path: `/readingPage?subjectCode=${subjectCode}&subjectId=${subjectId}&trialId=${trialId}&TokenKey=${token}`
})
}
this.loading = false
}).catch(() => { this.loading = false })
},
beforeLeave(activeName, oldActiveName) {
if (oldActiveName === 'read') {
var list = null
DicomEvent.$emit('getAllUnSaveLesions', val => {
list = val
})
if (list.length > 0) {
var arr = []
list.map(i => {
arr.push(i.lessionName)
})
this.$confirm(`请先保存${arr.join('、')}病灶信息!`, {
type: 'warning',
showCancelButton: false
}).then(() => {
}).catch(() => {
})
return false
} else {
if (!this.tabs.includes(activeName)) {
this.tabs.push(activeName)
}
return true
}
} else {
if (!this.tabs.includes(activeName)) {
this.tabs.push(activeName)
}
return true
}
}
}
}
</script>
<style lang="scss" scoped>
.reading-wrapper{
width: 100%;
height: 100%;
padding: 0 5px;
box-sizing: border-box;
background-color: #000;
.el-tabs{
box-sizing: border-box;
height: 100%;
display: flex;
flex-direction: column;
.el-tabs__item{
color: #fff;
}
>>>.el-tabs__header{
height: 50px;
margin:0px;
box-sizing: border-box;
}
>>>.el-tabs__content{
flex: 1;
margin:0px;
box-sizing: border-box;
}
>>>.el-tabs__item{
color: #fff;
}
>>>.el-tab-pane{
height: 100%;
}
}
}
</style>