|
|
|
@@ -90,6 +90,29 @@
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="tool-item" :title="$t('trials:reading:button:upload')"
|
|
|
|
|
v-if="trialCriterion.ImageUploadEnum > 0 && readingTaskState < 2" v-hasPermi="['role:ir']">
|
|
|
|
|
<div class="tool-wrapper">
|
|
|
|
|
<div class="icon" @click.prevent="openUploadImage('upload')">
|
|
|
|
|
<i class="el-icon-upload2 svg-icon" />
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="trialCriterion.ImageDownloadEnum > 0" v-hasPermi="[
|
|
|
|
|
'role:ir',
|
|
|
|
|
'role:mim',
|
|
|
|
|
'role:mc',
|
|
|
|
|
'role:pm',
|
|
|
|
|
'role:apm',
|
|
|
|
|
'role:ea',
|
|
|
|
|
'role:qa',
|
|
|
|
|
]" class="tool-item" :title="$t('trials:reading:button:download')">
|
|
|
|
|
<div class="tool-wrapper">
|
|
|
|
|
<div class="icon" @click.prevent="openUploadImage('download')">
|
|
|
|
|
<i class="el-icon-download svg-icon" />
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div>
|
|
|
|
@@ -202,10 +225,16 @@
|
|
|
|
|
:close-on-click-modal="false" :title="personalConfigDialog.title" width="600px">
|
|
|
|
|
<Others />
|
|
|
|
|
</el-dialog>
|
|
|
|
|
<upload-dicom-and-nonedicom v-if="uploadImageVisible" :subject-id="uploadSubjectId"
|
|
|
|
|
:subject-code="uploadSubjectCode" :criterion="uploadTrialCriterion" :visible.sync="uploadImageVisible"
|
|
|
|
|
:visit-task-id="taskId" :is-reading-task-view-in-order="isReadingTaskViewInOrder" />
|
|
|
|
|
<download-dicom-and-nonedicom v-if="downloadImageVisible" :subject-id="uploadSubjectId"
|
|
|
|
|
:subject-code="uploadSubjectCode" :criterion="uploadTrialCriterion" :task-id="taskId"
|
|
|
|
|
:visible.sync="downloadImageVisible" />
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<script>
|
|
|
|
|
import { addNoneDicomMark, deleteTrialFileType } from '@/api/trials'
|
|
|
|
|
import { addNoneDicomMark, deleteTrialFileType, getCriterionReadingInfo } from '@/api/trials'
|
|
|
|
|
import {
|
|
|
|
|
RenderingEngine,
|
|
|
|
|
Enums,
|
|
|
|
@@ -228,6 +257,8 @@ const { ViewportType } = Enums
|
|
|
|
|
const renderingEngineId = 'myRenderingEngine'
|
|
|
|
|
import LengthscaleTool from "../tools/LengthscaleTool"
|
|
|
|
|
import { getCustomizeStandardsNoneDicomTools, config } from '@/views/trials/trials-panel/reading/dicoms3D/components/toolConfig'
|
|
|
|
|
import uploadDicomAndNonedicom from '@/components/uploadDicomAndNonedicom'
|
|
|
|
|
import downloadDicomAndNonedicom from '@/components/downloadDicomAndNonedicom'
|
|
|
|
|
const {
|
|
|
|
|
ToolGroupManager,
|
|
|
|
|
Enums: csToolsEnums,
|
|
|
|
@@ -249,7 +280,11 @@ const {
|
|
|
|
|
const { MouseBindings, Events: toolsEvents } = csToolsEnums
|
|
|
|
|
export default {
|
|
|
|
|
name: 'ImageViewer',
|
|
|
|
|
components: { Others },
|
|
|
|
|
components: {
|
|
|
|
|
Others,
|
|
|
|
|
downloadDicomAndNonedicom,
|
|
|
|
|
uploadDicomAndNonedicom,
|
|
|
|
|
},
|
|
|
|
|
props: {
|
|
|
|
|
relatedStudyInfo: {
|
|
|
|
|
type: Object,
|
|
|
|
@@ -296,7 +331,19 @@ export default {
|
|
|
|
|
|
|
|
|
|
customizeStandardsNoneDicom: [],
|
|
|
|
|
tools: [],
|
|
|
|
|
criterionType: null
|
|
|
|
|
criterionType: null,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 上传
|
|
|
|
|
downloadImageVisible: false,
|
|
|
|
|
uploadImageVisible: false,
|
|
|
|
|
uploadSubjectId: null,
|
|
|
|
|
uploadSubjectCode: null,
|
|
|
|
|
uploadTrialCriterion: {},
|
|
|
|
|
uploadStatus: 'upload',
|
|
|
|
|
taskId: '',
|
|
|
|
|
isReadingTaskViewInOrder: null,
|
|
|
|
|
trialCriterion: {}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
computed: {
|
|
|
|
@@ -347,7 +394,6 @@ export default {
|
|
|
|
|
},
|
|
|
|
|
mounted() {
|
|
|
|
|
this.taskInfo = JSON.parse(localStorage.getItem('taskInfo'))
|
|
|
|
|
console.log(this.taskInfo, 'this.taskInfo')
|
|
|
|
|
this.readingTaskState = this.taskInfo.ReadingTaskState
|
|
|
|
|
this.criterionType = this.taskInfo.CriterionType
|
|
|
|
|
if (this.criterionType === 0) {
|
|
|
|
@@ -381,11 +427,30 @@ export default {
|
|
|
|
|
this.digitPlaces = digitPlaces === -1 ? this.digitPlaces : digitPlaces
|
|
|
|
|
this.initLoader()
|
|
|
|
|
window.addEventListener('message', this.handleIframeMessage)
|
|
|
|
|
this.getTrialCriterion()
|
|
|
|
|
},
|
|
|
|
|
beforeDestroy() {
|
|
|
|
|
window.removeEventListener('message', this.handleIframeMessage)
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
getTrialCriterion() {
|
|
|
|
|
getCriterionReadingInfo({
|
|
|
|
|
TrialId: this.$route.query.trialId,
|
|
|
|
|
TrialReadingCriterionId: this.$route.query.TrialReadingCriterionId
|
|
|
|
|
})
|
|
|
|
|
.then((res) => {
|
|
|
|
|
this.trialCriterion = res.Result
|
|
|
|
|
})
|
|
|
|
|
.catch(() => { })
|
|
|
|
|
},
|
|
|
|
|
openUploadImage(status) {
|
|
|
|
|
this.taskId = this.taskInfo.VisitTaskId
|
|
|
|
|
this.uploadSubjectCode = localStorage.getItem("subjectCode")
|
|
|
|
|
this.uploadSubjectId = localStorage.getItem("subjectId")
|
|
|
|
|
this.uploadTrialCriterion = this.trialCriterion
|
|
|
|
|
this.uploadStatus = status
|
|
|
|
|
this[`${status}ImageVisible`] = true
|
|
|
|
|
},
|
|
|
|
|
showPanel(e) {
|
|
|
|
|
e.currentTarget.firstChild.lastChild.style.display = 'block'
|
|
|
|
|
},
|
|
|
|
|