lugano融合添加历史访视融合记录查看
parent
18c31112b3
commit
f34f7a0656
|
@ -3621,3 +3621,18 @@ export function verifyIsCanConfirm(param) {
|
|||
})
|
||||
}
|
||||
|
||||
export function getPTAndCtSeries(param) {
|
||||
return request({
|
||||
url: `/SubjectVisit/getPTAndCtSeries`,
|
||||
method: 'post',
|
||||
data: param
|
||||
})
|
||||
}
|
||||
|
||||
export function getDicomSeriesInfo(param) {
|
||||
return request({
|
||||
url: `/SubjectVisit/getDicomSeriesInfo`,
|
||||
method: 'post',
|
||||
data: param
|
||||
})
|
||||
}
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1710814433132" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6202" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M509.48 9.666C232.874 9.666 8.666 233.874 8.666 510.48c0 276.618 224.206 500.818 500.814 500.818 276.618 0 500.818-224.202 500.818-500.818 0-276.606-224.2-500.814-500.818-500.814z m0 896.198c-218.384 0-395.378-176.994-395.378-395.382 0-218.384 176.996-395.378 395.378-395.378 218.388 0 395.382 176.996 395.382 395.378 0.002 218.388-176.992 395.382-395.382 395.382z m26.362-390.848v-189.042c0-29.136-23.578-52.718-52.718-52.718s-52.716 23.582-52.716 52.718v210.87c0 0.18 0.012 0.356 0.014 0.534 0.006 0.686 0.018 1.37 0.052 2.054 0.026 0.52 0.072 1.036 0.112 1.55 0.026 0.334 0.042 0.666 0.076 1 0.06 0.632 0.142 1.258 0.226 1.884 0.028 0.21 0.05 0.422 0.08 0.63 0.102 0.698 0.222 1.388 0.35 2.076 0.026 0.136 0.046 0.276 0.074 0.412 0.142 0.732 0.304 1.458 0.476 2.178 0.022 0.098 0.042 0.196 0.068 0.292 0.182 0.744 0.382 1.48 0.596 2.21l0.068 0.244c0.22 0.74 0.46 1.474 0.71 2.202l0.078 0.228c0.256 0.732 0.532 1.454 0.818 2.17 0.032 0.076 0.06 0.154 0.09 0.23 0.292 0.718 0.602 1.428 0.926 2.13l0.104 0.228c0.334 0.716 0.684 1.424 1.05 2.124 0.032 0.058 0.06 0.12 0.09 0.178 0.386 0.732 0.79 1.454 1.208 2.164l0.044 0.078a52.9 52.9 0 0 0 8.716 11.054l148.508 148.506c20.594 20.598 53.956 20.598 74.548 0 20.586-20.586 20.586-53.95 0-74.542l-133.648-133.642z" fill="#FFFFFF" p-id="6203"></path></svg>
|
After Width: | Height: | Size: 1.6 KiB |
|
@ -463,11 +463,9 @@
|
|||
v-if="fusionSeries.visible"
|
||||
:visible.sync="fusionSeries.visible"
|
||||
:close-on-click-modal="false"
|
||||
:title="$t('trials:lugano:dialogTitle:fusion') "
|
||||
width="850px"
|
||||
>
|
||||
<div slot="title">
|
||||
<span>{{ $t('trials:lugano:dialogTitle:fusion') }}</span>
|
||||
</div>
|
||||
<el-form ref="fusionForm" :model="fusionForm" label-width="120px" label-position="left">
|
||||
<!-- 任务名称 -->
|
||||
<el-form-item
|
||||
|
@ -1993,14 +1991,14 @@ export default {
|
|||
})
|
||||
},
|
||||
fusion() {
|
||||
sessionStorage.setItem('ctSeriesInfo', JSON.stringify(this.ctSeriesInfo))
|
||||
sessionStorage.setItem('petSeriesInfo', JSON.stringify(this.petSeriesInfo))
|
||||
// sessionStorage.setItem('ctSeriesInfo', JSON.stringify(this.ctSeriesInfo))
|
||||
// sessionStorage.setItem('petSeriesInfo', JSON.stringify(this.petSeriesInfo))
|
||||
this.fusionSeries.visible = false
|
||||
var token = getToken()
|
||||
var trialReadingCriterionId = this.$router.currentRoute.query.TrialReadingCriterionId
|
||||
var trialId = this.$router.currentRoute.query.trialId
|
||||
var digitPlaces = Number(localStorage.getItem('digitPlaces'))
|
||||
var path = `/petct?TrialReadingCriterionId=${trialReadingCriterionId}&trialId=${trialId}&visitTaskId=${this.fusionForm.visitTaskId}&taskBlindName=${this.fusionForm.taskBlindName}&subjectCode=${this.fusionForm.subjectCode}&readingTaskState=${this.fusionForm.readingTaskState}&isBaseLineTask=${this.fusionForm.isBaseLineTask}&isCurrentTask=${this.fusionForm.isCurrentTask}&isReadingShowSubjectInfo=${this.isReadingShowSubjectInfo}&digitPlaces=${digitPlaces}&TokenKey=${token}&lang=${this.$i18n.locale}`
|
||||
var path = `/petct?TrialReadingCriterionId=${trialReadingCriterionId}&trialId=${trialId}&visitTaskId=${this.fusionForm.visitTaskId}&taskBlindName=${this.fusionForm.taskBlindName}&subjectCode=${this.fusionForm.subjectCode}&readingTaskState=${this.fusionForm.readingTaskState}&isBaseLineTask=${this.fusionForm.isBaseLineTask}&isCurrentTask=${this.fusionForm.isCurrentTask}&isReadingShowSubjectInfo=${this.isReadingShowSubjectInfo}&studyId=${this.fusionForm.studyID}&ctseriesId=${this.ctSeriesInfo.seriesId}&ptseriesId=${this.petSeriesInfo.seriesId}&digitPlaces=${digitPlaces}&TokenKey=${token}&lang=${this.$i18n.locale}`
|
||||
var routeData = this.$router.resolve({ path })
|
||||
if (this.petctWindow) {
|
||||
this.petctWindow.close()
|
||||
|
|
|
@ -0,0 +1,324 @@
|
|||
<template>
|
||||
<el-form ref="fusionForm" :model="fusionForm" label-width="120px" label-position="left">
|
||||
<!-- 任务名称 -->
|
||||
<el-form-item
|
||||
:label="$t('trials:lugano:fusionDialog:label:taskBlindName')"
|
||||
prop="taskBlindName"
|
||||
>
|
||||
<el-select
|
||||
v-model="fusionForm.visitTaskId"
|
||||
clearable
|
||||
@change="handleTaskIdChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in taskList"
|
||||
:key="item.VisitTaskId"
|
||||
:label="item.TaskBlindName"
|
||||
:value="item.VisitTaskId"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 检查 -->
|
||||
<el-form-item
|
||||
:label="$t('trials:lugano:fusionDialog:label:study')"
|
||||
prop="studyId"
|
||||
:rules="[
|
||||
{ required: true, message: $t('common:ruleMessage:select'), trigger: 'blur' }
|
||||
]"
|
||||
>
|
||||
<el-select
|
||||
v-model="fusionForm.studyId"
|
||||
clearable
|
||||
@change="handleStudyIdChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in studyList"
|
||||
:key="item.StudyId"
|
||||
:label="item.StudyCode"
|
||||
:value="item.StudyId"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 融合图像 -->
|
||||
<label style="color: #dfdfdf;line-height: 36px;vertical-align: middle;font-size: 14px;">{{ $t('trials:lugano:fusionDialog:label:fusionImages') }}</label>
|
||||
<div style="display: flex;flex-direction: row;justify-content: space-between;margin-bottom:10px;" class="series-table">
|
||||
|
||||
<div style="border: 1px solid #5e5e5e;border-radius: 5px;padding: 0 10px;">
|
||||
<!-- CT/MRI序列 -->
|
||||
<h3 style="color:#ddd">{{ $t('trials:lugano:fusionDialog:label:ctSeries') }}</h3>
|
||||
<el-table
|
||||
ref="ctSeries"
|
||||
:data="ctSeries"
|
||||
:show-header="false"
|
||||
style="width: 380px"
|
||||
size="mini"
|
||||
height="300"
|
||||
:default-sort="{prop: 'instanceCount', order: 'descending'}"
|
||||
@selection-change="handleCTSelectionChange"
|
||||
@select="handleCTSelect"
|
||||
>
|
||||
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="30"
|
||||
/>
|
||||
<el-table-column
|
||||
label=""
|
||||
width="100"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-image
|
||||
style="width: 60px; height: 60px"
|
||||
:src="`${OSSclientConfig.basePath}${scope.row.ImageResizePath}`"
|
||||
fit="fit"
|
||||
crossorigin="anonymous"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label=""
|
||||
min-width="50"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div>#{{ scope.row.SeriesNumber }} </div>
|
||||
<div>{{ scope.row.Modality }}: {{ scope.row.InstanceCount }} images T: {{ parseFloat(scope.row.SliceThickness).toFixed(digitPlaces) }}</div>
|
||||
<div>{{ scope.row.Description }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
<div style="border: 1px solid #5e5e5e;border-radius: 5px;padding: 0 10px;">
|
||||
<!-- PET序列 -->
|
||||
<h3 style="color:#ddd">{{ $t('trials:lugano:fusionDialog:label:ptSeries') }}</h3>
|
||||
<el-table
|
||||
ref="petSeries"
|
||||
:data="petSeries"
|
||||
:show-header="false"
|
||||
style="width: 380px"
|
||||
size="mini"
|
||||
height="300"
|
||||
@selection-change="handlePTSelectionChange"
|
||||
@select="handlePTSelect"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="30"
|
||||
/>
|
||||
<el-table-column
|
||||
label=""
|
||||
width="100"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-image
|
||||
style="width: 60px; height: 60px"
|
||||
:src="`${OSSclientConfig.basePath}${scope.row.ImageResizePath}`"
|
||||
fit="fit"
|
||||
crossorigin="anonymous"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label=""
|
||||
min-width="50"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div>#{{ scope.row.SeriesNumber }} </div>
|
||||
<div>{{ scope.row.Modality }}: {{ scope.row.InstanceCount }} images T: {{ parseFloat(scope.row.SliceThickness).toFixed(digitPlaces) }}</div>
|
||||
<div>{{ scope.row.Description }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
<el-form-item style="text-align:right;">
|
||||
<!-- 取消 -->
|
||||
<el-button size="mini" @click="fusionSeries.visible = false">{{ $t('common:button:cancel') }}</el-button>
|
||||
<!-- 确认 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="handleSubmitFusionSeries"
|
||||
>
|
||||
{{ $t('common:button:confirm') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
<script>
|
||||
import { getPTAndCtSeries } from '@/api/trials'
|
||||
import { getToken } from '@/utils/auth'
|
||||
export default {
|
||||
name: 'FusionForm',
|
||||
data() {
|
||||
return {
|
||||
fusionForm: {
|
||||
visitTaskId: '',
|
||||
studyId: '',
|
||||
taskBlindName: '',
|
||||
isBaseLineTask: null,
|
||||
ctSeriesInfo: {},
|
||||
petSeriesInfo: {}
|
||||
},
|
||||
visitTaskId: '',
|
||||
taskList: [],
|
||||
studyList: [],
|
||||
ctSeries: [],
|
||||
petSeries: [],
|
||||
petctWindow: null,
|
||||
digitPlaces: 2
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
var digitPlaces = Number(localStorage.getItem('digitPlaces'))
|
||||
this.digitPlaces = digitPlaces === -1 ? this.digitPlaces : digitPlaces
|
||||
this.visitTaskId = this.$route.query.visitTaskId
|
||||
this.getSeriesInfo()
|
||||
},
|
||||
methods: {
|
||||
getSeriesInfo() {
|
||||
const loading = this.$loading({ fullscreen: true })
|
||||
getPTAndCtSeries({ visitTaskId: this.visitTaskId }).then(res => {
|
||||
this.taskList = res.Result
|
||||
this.initForm()
|
||||
loading.close()
|
||||
}).catch(() => {
|
||||
loading.close()
|
||||
})
|
||||
},
|
||||
initForm() {
|
||||
if (this.taskList.length === 0) return
|
||||
this.fusionForm.visitTaskId = this.taskList[0].VisitTaskId
|
||||
this.fusionForm.taskBlindName = this.taskList[0].TaskBlindName
|
||||
this.fusionForm.isBaseLineTask = this.taskList[0].IsBaseLineTask
|
||||
|
||||
this.studyList = this.taskList[0].StudyInfoList
|
||||
const studyIdx = this.taskList[0].StudyInfoList.findIndex(i => i.StudyId === this.taskList[0].StudyId)
|
||||
this.fusionForm.studyId = this.studyList[studyIdx].StudyId
|
||||
this.ctSeries = this.studyList[studyIdx].CTSeriesList
|
||||
this.petSeries = this.studyList[studyIdx].PTSeriesList
|
||||
const ctSexiesIdx = this.ctSeries.findIndex(i => i.Id === this.taskList[0].CTSeriesId)
|
||||
|
||||
const ptSexiesIdx = this.petSeries.findIndex(i => i.Id === this.taskList[0].PTSeriesId)
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.fusionForm.ctSeriesInfo = Object.assign({}, this.ctSeries[ctSexiesIdx])
|
||||
this.fusionForm.petSeriesInfo = Object.assign({}, this.petSeries[ptSexiesIdx])
|
||||
this.$refs.ctSeries.toggleRowSelection(this.ctSeries[ctSexiesIdx])
|
||||
this.$refs.petSeries.toggleRowSelection(this.petSeries[ptSexiesIdx])
|
||||
})
|
||||
},
|
||||
handleSubmitFusionSeries() {
|
||||
this.$refs['fusionForm'].validate((valid) => {
|
||||
if (!valid) return
|
||||
if (Object.keys(this.fusionForm.ctSeriesInfo).length === 0 || Object.keys(this.fusionForm.petSeriesInfo).length === 0) {
|
||||
// '请选择序列信息!'
|
||||
this.$confirm(this.$t('trials:lugano:fusionDialog:message:checkSeries'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||
showCancelButton: false,
|
||||
type: 'warning'
|
||||
}).then(() => {}).catch(() => {})
|
||||
return
|
||||
}
|
||||
var count = Math.abs(this.fusionForm.ctSeriesInfo.instanceCount - this.fusionForm.petSeriesInfo.instanceCount)
|
||||
if (count > 10) {
|
||||
// '选择的两组序列,影像数存在较大差距, 是否继续?'
|
||||
this.$confirm(this.$t('trials:lugano:fusionDialog:message:validSeries'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.fusion()
|
||||
}).catch(() => {})
|
||||
} else {
|
||||
this.fusion()
|
||||
}
|
||||
})
|
||||
},
|
||||
fusion() {
|
||||
const token = getToken()
|
||||
const trialReadingCriterionId = this.$route.query.TrialReadingCriterionId
|
||||
const trialId = this.$route.query.trialId
|
||||
const digitPlaces = Number(localStorage.getItem('digitPlaces'))
|
||||
const isReadingShowSubjectInfo = this.$route.query.isReadingShowSubjectInfo
|
||||
const subjectCode = this.$route.query.subjectCode
|
||||
const path = `/petct?TrialReadingCriterionId=${trialReadingCriterionId}&trialId=${trialId}&visitTaskId=${this.fusionForm.visitTaskId}&taskBlindName=${this.fusionForm.taskBlindName}&subjectCode=${subjectCode}&readingTaskState=2&isBaseLineTask=${this.fusionForm.isBaseLineTask}&isCurrentTask=false&isReadingShowSubjectInfo=${isReadingShowSubjectInfo}&studyId=${this.fusionForm.studyId}&ctseriesId=${this.fusionForm.ctSeriesInfo.Id}&ptseriesId=${this.fusionForm.petSeriesInfo.Id}&digitPlaces=${digitPlaces}&TokenKey=${token}&lang=${this.$i18n.locale}`
|
||||
var routeData = this.$router.resolve({ path })
|
||||
if (this.petctWindow) {
|
||||
this.petctWindow.close()
|
||||
}
|
||||
this.petctWindow = window.open(routeData.href, '_blank')
|
||||
this.$emit('close')
|
||||
},
|
||||
handleTaskIdChange(v) {
|
||||
var idx = this.taskList.findIndex(i => i.VisitTaskId === v)
|
||||
this.studyList = idx > -1 ? this.taskList[idx].StudyInfoList : []
|
||||
this.fusionForm.taskBlindName = idx > -1 ? this.taskList[idx].TaskBlindName : ''
|
||||
this.fusionForm.isBaseLineTask = idx > -1 ? this.taskList[idx].IsBaseLineTask : null
|
||||
},
|
||||
handleStudyIdChange(v) {
|
||||
var idx = this.studyList.findIndex(i => i.StudyId === v)
|
||||
this.ctSeries = idx > -1 ? this.studyList[idx].CTSeriesList : []
|
||||
this.petSeries = idx > -1 ? this.studyList[idx].PTSeriesList : []
|
||||
},
|
||||
handleCTSelectionChange(rows) {
|
||||
if (rows.length > 0) {
|
||||
this.fusionForm.ctSeriesInfo = Object.assign({}, rows[0])
|
||||
} else {
|
||||
this.fusionForm.ctSeriesInfo = {}
|
||||
}
|
||||
},
|
||||
handleCTSelect(selection) {
|
||||
if (selection.length > 1) {
|
||||
const del_row = selection.shift()
|
||||
this.$refs.ctSeries.toggleRowSelection(del_row, false)
|
||||
}
|
||||
},
|
||||
handlePTSelectionChange(rows) {
|
||||
if (rows.length > 0) {
|
||||
this.fusionForm.petSeriesInfo = Object.assign({}, rows[0])
|
||||
} else {
|
||||
this.fusionForm.petSeriesInfo = {}
|
||||
}
|
||||
},
|
||||
handlePTSelect(selection) {
|
||||
if (selection.length > 1) {
|
||||
const del_row = selection.shift()
|
||||
this.$refs.petSeries.toggleRowSelection(del_row, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.series-table{
|
||||
/deep/.el-table{
|
||||
background-color: #1e1e1e !important;
|
||||
color: #dfdfdf;
|
||||
}
|
||||
/deep/.el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf{
|
||||
border-bottom: 1px solid #dfdfdf;
|
||||
}
|
||||
.el-table--border::after, .el-table--group::after, .el-table::before{
|
||||
background-color: #1e1e1e;
|
||||
}
|
||||
/deep/.el-table__header-wrapper{
|
||||
th{
|
||||
background-color: #1e1e1e !important;
|
||||
color: #dfdfdf;
|
||||
}
|
||||
}
|
||||
/deep/.el-table__body-wrapper{
|
||||
tr{
|
||||
background-color: #1e1e1e !important;
|
||||
color: #dfdfdf;
|
||||
}
|
||||
tr:hover > td{
|
||||
background-color: #1e1e1e !important;
|
||||
}
|
||||
}
|
||||
/deep/.el-table__empty-block{
|
||||
background-color: #1e1e1e !important;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
|
@ -149,18 +149,6 @@
|
|||
</el-tooltip>
|
||||
</template>
|
||||
|
||||
<!-- <el-tooltip v-if="isCurrentTask" class="item" effect="dark" content="圆形测量" placement="bottom">
|
||||
<div class="tool-wrapper">
|
||||
<div
|
||||
class="icon"
|
||||
:class="[activeTool==='Probe'?'tool_active':'']"
|
||||
data-tool="Probe"
|
||||
>
|
||||
<svg-icon icon-class="oval" class="svg-icon" @click.prevent="setBasicToolActive('Probe')" />
|
||||
</div>
|
||||
<div class="text">探针</div>
|
||||
</div>
|
||||
</el-tooltip> -->
|
||||
<!-- 重置 -->
|
||||
<el-tooltip class="item" effect="dark" :content="`${$t('trials:reading:button:reset')}`" placement="bottom">
|
||||
<div class="tool-wrapper">
|
||||
|
@ -226,6 +214,18 @@
|
|||
</div>
|
||||
</el-tooltip>
|
||||
|
||||
<el-tooltip v-if="isCurrentTask" class="item" effect="dark" :content="$t('trials:lugano:button:record')" placement="bottom" style="margin-left:20px">
|
||||
<div class="tool-wrapper">
|
||||
<div
|
||||
class="icon"
|
||||
@click.prevent="historyRecord"
|
||||
>
|
||||
<svg-icon icon-class="record" class="svg-icon" />
|
||||
</div>
|
||||
<div class="text">{{ $t('trials:lugano:button:record') }}</div>
|
||||
</div>
|
||||
</el-tooltip>
|
||||
|
||||
<!-- 截屏 -->
|
||||
<!-- <el-tooltip class="item" effect="dark" :content="`${$t('trials:reading:button:screenShot')}`" placement="bottom">
|
||||
<div class="tool-wrapper">
|
||||
|
@ -330,6 +330,14 @@
|
|||
>
|
||||
<CustomWwwcForm :ww="activeCanvasWW" :wc="activeCanvasWC" @close="customWwc.visible = false" @setWwwc="setWwwc" />
|
||||
</el-dialog>
|
||||
<el-dialog
|
||||
:visible.sync="fusion.visible"
|
||||
:close-on-click-modal="false"
|
||||
:title="$t('trials:lugano:button:record')"
|
||||
width="850px"
|
||||
>
|
||||
<FusionForm @close="fusion.visible = false" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
@ -352,7 +360,6 @@ import {
|
|||
import * as cornerstone3D from '@cornerstonejs/core'
|
||||
import * as cornerstoneTools from '@cornerstonejs/tools'
|
||||
import initLibraries from './js/initLibraries'
|
||||
|
||||
import { createImageIdsAndCacheMetaData } from './js/createImageIdsAndCacheMetaData'
|
||||
import setCtTransferFunctionForVolumeActor from './js/setCtTransferFunctionForVolumeActor'
|
||||
import { setCtMappingRange } from './js/setCtTransferFunctionForVolumeActor'
|
||||
|
@ -367,7 +374,8 @@ import Viewport from './Viewport'
|
|||
import Questions from './Questions'
|
||||
import TableQuestions from './TableQuestions'
|
||||
import CustomWwwcForm from './../CustomWwwcForm'
|
||||
import { getTableAnswerRowInfoList } from '@/api/trials'
|
||||
import FusionForm from './FusionForm.vue'
|
||||
import { getTableAnswerRowInfoList, getDicomSeriesInfo } from '@/api/trials'
|
||||
import FusionEvent from './FusionEvent'
|
||||
// import { ColorMaps } from '@kitware/vtk.js/Common/Core/ColorMaps'
|
||||
import vtkColorMaps from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps'
|
||||
|
@ -458,7 +466,8 @@ export default {
|
|||
Viewport,
|
||||
Questions,
|
||||
TableQuestions,
|
||||
CustomWwwcForm
|
||||
CustomWwwcForm,
|
||||
FusionForm
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -516,8 +525,8 @@ export default {
|
|||
loadingText: '',
|
||||
initAnnotations: [],
|
||||
activeCanvasWW: null,
|
||||
activeCanvasWC: null
|
||||
|
||||
activeCanvasWC: null,
|
||||
fusion: { visible: false } // 历史记录融合调窗
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
@ -552,7 +561,7 @@ export default {
|
|||
this.isReadingShowSubjectInfo = this.$route.query.isReadingShowSubjectInfo === 'true'
|
||||
this.subjectCode = this.$route.query.subjectCode
|
||||
this.taskBlindName = this.$route.query.taskBlindName
|
||||
this.isCurrentTask = this.$route.query.isReadingShowSubjectInfo === 'true'
|
||||
this.isCurrentTask = this.$route.query.isCurrentTask === 'true'
|
||||
this.customWwc = { visible: false, title: this.$t('trials:reading:dagTitle:wwwcCustom') }
|
||||
const digitPlaces = parseInt(this.$route.query.digitPlaces)
|
||||
this.digitPlaces = digitPlaces === -1 ? 2 : digitPlaces
|
||||
|
@ -665,9 +674,11 @@ export default {
|
|||
// console.log(colormaps, registerColormap)
|
||||
// colormaps.forEach(registerColormap)
|
||||
renderingEngine = new RenderingEngine(renderingEngineId)
|
||||
var ctseriesId = this.$route.query.ctseriesId
|
||||
this.ctSeries = await this.getSeriesInfo(ctseriesId)
|
||||
|
||||
this.ctSeries = JSON.parse(sessionStorage.getItem('ctSeriesInfo'))
|
||||
this.petSeries = JSON.parse(sessionStorage.getItem('petSeriesInfo'))
|
||||
var ptseriesId = this.$route.query.ptseriesId
|
||||
this.petSeries = await this.getSeriesInfo(ptseriesId)
|
||||
await this.getImages()
|
||||
|
||||
// 设置viewport
|
||||
|
@ -757,6 +768,36 @@ export default {
|
|||
this.loadingText = ''
|
||||
this.loading = false
|
||||
},
|
||||
getSeriesInfo(seriesId) {
|
||||
return new Promise(resolve => {
|
||||
getDicomSeriesInfo({ seriesId }).then(res => {
|
||||
var series = res.Result
|
||||
var imageIds = series.InstancePathList.map(path => `wadouri:${localStorage.getItem('location') !== 'USA' ? this.OSSclientConfig.basePath : this.OSSclientConfig.basePath}${path}`
|
||||
)
|
||||
resolve({
|
||||
imageIds: imageIds,
|
||||
instanceList: series.InstanceList,
|
||||
seriesId: series.Id,
|
||||
imageIdIndex: 0,
|
||||
seriesUid: series.SeriesInstanceUid,
|
||||
seriesNumber: series.SeriesNumber,
|
||||
sliceThickness: series.SliceThickness,
|
||||
modality: series.Modality,
|
||||
description: series.Description,
|
||||
instanceCount: series.InstanceCount,
|
||||
studyId: this.$route.query.studyId,
|
||||
taskBlindName: this.$route.query.taskBlindName,
|
||||
visitTaskId: this.$route.query.visitTaskId
|
||||
})
|
||||
})
|
||||
})
|
||||
// var idx = series.findIndex(i => i.seriesId === seriesId)
|
||||
// if (idx > -1) {
|
||||
// return series[idx]
|
||||
// } else {
|
||||
// return {}
|
||||
// }
|
||||
},
|
||||
getAnnotations() {
|
||||
return new Promise(resolve => {
|
||||
const viewportIds = ['PT_AXIAL', 'CT_AXIAL', 'FUSION_AXIAL']
|
||||
|
@ -2057,6 +2098,9 @@ export default {
|
|||
}
|
||||
})
|
||||
},
|
||||
historyRecord() {
|
||||
this.fusion.visible = true
|
||||
},
|
||||
async receiveMsg(event) {
|
||||
if (event.data.type === 'readingPageUpdate') {
|
||||
this.$refs['questions'].initList()
|
||||
|
@ -2066,6 +2110,14 @@ export default {
|
|||
this.viewportRender()
|
||||
} else if (event.data.type === 'readingPageStateUpdate') {
|
||||
this.readingTaskState = event.data.data.readingTaskState
|
||||
if (this.readingTaskState === 2) {
|
||||
window.close()
|
||||
}
|
||||
} else if (event.data.type === 'setReadingState') {
|
||||
this.readingTaskState = event.data.data.readingTaskState
|
||||
if (this.readingTaskState === 2) {
|
||||
window.close()
|
||||
}
|
||||
}
|
||||
},
|
||||
startTimer() {
|
||||
|
@ -2095,6 +2147,25 @@ export default {
|
|||
height: 100%;
|
||||
background-color: #000;
|
||||
padding: 5px 2px;
|
||||
/deep/.el-dialog {
|
||||
background: #1e1e1e;
|
||||
border: 1px solid #ddd;
|
||||
color: #ddd;
|
||||
.el-dialog__title{
|
||||
color:#fff;
|
||||
}
|
||||
.el-input .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
.el-input.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
.el-form-item__label{
|
||||
color: #dfdfdf
|
||||
}
|
||||
}
|
||||
}
|
||||
::-webkit-scrollbar {
|
||||
width: 5px;
|
||||
|
|
|
@ -812,7 +812,6 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
var params = {
|
||||
questionId: this.parentQsId,
|
||||
rowId: this.questionForm.RowId,
|
||||
|
@ -822,12 +821,15 @@ export default {
|
|||
otherMeasureData: otherMeasureData ? JSON.stringify(otherMeasureData) : '',
|
||||
answerList: answers,
|
||||
isCanEditPosition: this.questionForm.IsCanEditPosition,
|
||||
otherStudyId: this.$route.query.studyId,
|
||||
// otherStudyId: otherMeasureData ? otherMeasureData.data.studyId : '',
|
||||
// otherSeriesId: otherMeasureData ? otherMeasureData.data.seriesId : '',
|
||||
otherInstanceId: otherMeasureData ? otherMeasureData.data.instanceId : '',
|
||||
// numberOfFrames: measureData && !isNaN(parseInt(this.questionForm.MeasureData.frame)) ? parseInt(this.questionForm.MeasureData.frame) : 0,
|
||||
otherPicturePath: picturePath,
|
||||
organInfoId: this.questionForm.OrganInfoId
|
||||
organInfoId: this.questionForm.OrganInfoId,
|
||||
ptSeriesId: otherMeasureData ? this.$route.query.ptseriesId : '',
|
||||
ctSeriesId: otherMeasureData ? this.$route.query.ctseriesId : ''
|
||||
}
|
||||
if (this.questionForm.IsDicomReading === false) {
|
||||
params.isDicomReading = false
|
||||
|
@ -969,6 +971,7 @@ export default {
|
|||
// '删除成功!'
|
||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
||||
loading.close()
|
||||
window.opener.postMessage({ type: 'petctLesionUpdate' }, window.location)
|
||||
}
|
||||
}).catch(() => { loading.close() })
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue