阅片布局调整及中心调研更改
parent
4ad67e5501
commit
cd630a70fb
|
@ -61,7 +61,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 平均刻盘周期(天) -->
|
<!-- 平均刻盘周期(天) -->
|
||||||
<el-form-item :label="$t('trials:researchForm:form:engravingCycle')">
|
<el-form-item :label="$t('trials:researchForm:form:engravingCycle')">
|
||||||
<el-input-number v-model="form.AverageEngravingCycle" :disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" controls-position="right" :min="0" style="width:100%;" />
|
<el-input-number v-if="!notShowFieldList.includes('AverageEngravingCycle')" v-model="form.AverageEngravingCycle" :disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" controls-position="right" :min="0" style="width:100%;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<!-- 请确认参与本项目影像采集的影像技师具备对应的资质(如:“技师证”,对应设备的“大型设备上岗证”) -->
|
<!-- 请确认参与本项目影像采集的影像技师具备对应的资质(如:“技师证”,对应设备的“大型设备上岗证”) -->
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
<!-- <el-divider /> -->
|
<!-- <el-divider /> -->
|
||||||
<!-- 平均刻盘周期(天) -->
|
<!-- 平均刻盘周期(天) -->
|
||||||
<el-form-item :label="$t('trials:researchForm:form:engravingCycle')">
|
<el-form-item :label="$t('trials:researchForm:form:engravingCycle')">
|
||||||
<el-input-number v-model="form.AverageEngravingCycle" :disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" controls-position="right" :min="0" />
|
<el-input-number v-if="!notShowFieldList.includes('AverageEngravingCycle')" v-model="form.AverageEngravingCycle" :disabled="!(state === 0 && userTypeEnumInt === 0) || isHistory" controls-position="right" :min="0" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 请确认参与本项目影像采集的影像技师具备对应的资质(如:“技师证”,对应设备的“大型设备上岗证”) -->
|
<!-- 请确认参与本项目影像采集的影像技师具备对应的资质(如:“技师证”,对应设备的“大型设备上岗证”) -->
|
||||||
<el-form-item v-if="!notShowFieldList.includes('IsConfirmImagingTechnologist')" :label="$t('trials:researchForm:form:isQualified')">
|
<el-form-item v-if="!notShowFieldList.includes('IsConfirmImagingTechnologist')" :label="$t('trials:researchForm:form:isQualified')">
|
||||||
|
|
|
@ -47,7 +47,14 @@
|
||||||
>
|
>
|
||||||
<svg-icon icon-class="arrow" class="svg-icon" />
|
<svg-icon icon-class="arrow" class="svg-icon" />
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 矩形工具RectangleROITool -->
|
||||||
|
<div
|
||||||
|
:class="['tool-item', readingTaskState === 2 ? 'tool-disabled' : '', activeTool === 'RectangleROI' ? 'tool-item-active' : '']"
|
||||||
|
:title="$t('trials:dicom-show:RectangleRoi')"
|
||||||
|
@click.prevent="setAnnotateToolActive('RectangleROI')"
|
||||||
|
>
|
||||||
|
<svg-icon icon-class="rectangle" class="svg-icon" />
|
||||||
|
</div>
|
||||||
<!-- 自由曲线 -->
|
<!-- 自由曲线 -->
|
||||||
<div
|
<div
|
||||||
:class="['tool-item', readingTaskState === 2 ? 'tool-disabled' : '', activeTool === 'PlanarFreehandROI' ? 'tool-item-active' : '']"
|
:class="['tool-item', readingTaskState === 2 ? 'tool-disabled' : '', activeTool === 'PlanarFreehandROI' ? 'tool-item-active' : '']"
|
||||||
|
@ -110,7 +117,7 @@
|
||||||
>
|
>
|
||||||
{{ `${taskInfo.SubjectCode} ${v.taskInfo.TaskBlindName} ` }}
|
{{ `${taskInfo.SubjectCode} ${v.taskInfo.TaskBlindName} ` }}
|
||||||
</h2>
|
</h2>
|
||||||
<div v-if="v.currentFileName">{{ v.currentFileName }}</div>
|
<!-- <div v-if="v.currentFileName">{{ v.currentFileName }}</div> -->
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
v-if="taskInfo && taskInfo.IsReadingTaskViewInOrder === 1 && v.taskInfo"
|
v-if="taskInfo && taskInfo.IsReadingTaskViewInOrder === 1 && v.taskInfo"
|
||||||
|
@ -142,9 +149,57 @@
|
||||||
<div :style="{top: v.height + '%'}" class="slider" @click.stop.prevent="() => {return}" @mousedown.stop="sliderMousedown($event, index)" />
|
<div :style="{top: v.height + '%'}" class="slider" @click.stop.prevent="() => {return}" @mousedown.stop="sliderMousedown($event, index)" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-show="v.fileType === 'application/pdf'" class="content">
|
<div v-show="v.fileType === 'application/pdf' && fullScreenIndex === null " class="content flex_col">
|
||||||
|
<div class="content-top" style="height: 50px;">
|
||||||
|
<div class="left-top-text">
|
||||||
|
<div
|
||||||
|
v-if="v.taskInfo.IsExistsClinicalData"
|
||||||
|
class="cd-info"
|
||||||
|
:title="$t('trials:reading:button:clinicalData')"
|
||||||
|
@click.stop="viewCD(v.taskInfo.VisitTaskId)"
|
||||||
|
>
|
||||||
|
<svg-icon icon-class="documentation" class="svg-icon" />
|
||||||
|
</div>
|
||||||
|
<h2
|
||||||
|
v-if="taskInfo && taskInfo.IsReadingShowSubjectInfo && v.taskInfo"
|
||||||
|
class="subject-info"
|
||||||
|
>
|
||||||
|
{{ `${taskInfo.SubjectCode} ${v.taskInfo.TaskBlindName} ` }}
|
||||||
|
</h2>
|
||||||
|
<!-- <div v-if="v.currentFileName">{{ v.currentFileName }}</div> -->
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="taskInfo && taskInfo.IsReadingTaskViewInOrder === 1 && v.taskInfo"
|
||||||
|
class="top-center-tool"
|
||||||
|
>
|
||||||
|
<div class="toggle-visit-container">
|
||||||
|
<div
|
||||||
|
class="arrw_icon"
|
||||||
|
:style="{ cursor: v.taskInfo.VisitTaskNum !== 0 ? 'pointer' : 'not-allowed', color: v.taskInfo.VisitTaskNum !== 0 ? '#fff': '#6b6b6b' }"
|
||||||
|
@click.stop.prevent="toggleTask($event, v.taskInfo.VisitTaskNum, -1)"
|
||||||
|
@dblclick.stop="preventDefault($event)"
|
||||||
|
>
|
||||||
|
<i class="el-icon-caret-left" />
|
||||||
|
</div>
|
||||||
|
<div class="arrow_text">
|
||||||
|
{{ v.taskInfo.TaskBlindName }}
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="arrw_icon"
|
||||||
|
:style="{ cursor: v.taskInfo.VisitTaskNum < taskInfo.VisitNum ? 'pointer' : 'not-allowed', color: v.taskInfo.VisitTaskNum < taskInfo.VisitNum ? '#fff': '#6b6b6b' }"
|
||||||
|
@click.stop.prevent="toggleTask($event, v.taskInfo.VisitTaskNum, 1)"
|
||||||
|
@dblclick.stop="preventDefault($event)"
|
||||||
|
>
|
||||||
|
<i class="el-icon-caret-right" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content-main" style="flex: 1;">
|
||||||
<iframe v-if="v.currentFilePath" :ref="`iframe-${index}`" :src="`/static/pdfjs/web/viewer.html?file=${OSSclientConfig.basePath}${v.currentFilePath}?index=${index}`" width="100%" height="100%" frameborder="0" crossorigin="anonymous" />
|
<iframe v-if="v.currentFilePath" :ref="`iframe-${index}`" :src="`/static/pdfjs/web/viewer.html?file=${OSSclientConfig.basePath}${v.currentFilePath}?index=${index}`" width="100%" height="100%" frameborder="0" crossorigin="anonymous" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -176,6 +231,7 @@ const {
|
||||||
ZoomTool,
|
ZoomTool,
|
||||||
PlanarRotateTool,
|
PlanarRotateTool,
|
||||||
ArrowAnnotateTool,
|
ArrowAnnotateTool,
|
||||||
|
RectangleROITool,
|
||||||
PlanarFreehandROITool,
|
PlanarFreehandROITool,
|
||||||
EraserTool
|
EraserTool
|
||||||
} = cornerstoneTools
|
} = cornerstoneTools
|
||||||
|
@ -344,6 +400,7 @@ export default {
|
||||||
cornerstoneTools.addTool(ZoomTool)
|
cornerstoneTools.addTool(ZoomTool)
|
||||||
cornerstoneTools.addTool(PlanarRotateTool)
|
cornerstoneTools.addTool(PlanarRotateTool)
|
||||||
cornerstoneTools.addTool(ArrowAnnotateTool)
|
cornerstoneTools.addTool(ArrowAnnotateTool)
|
||||||
|
cornerstoneTools.addTool(RectangleROITool)
|
||||||
cornerstoneTools.addTool(PlanarFreehandROITool)
|
cornerstoneTools.addTool(PlanarFreehandROITool)
|
||||||
cornerstoneTools.addTool(EraserTool)
|
cornerstoneTools.addTool(EraserTool)
|
||||||
|
|
||||||
|
@ -364,6 +421,7 @@ export default {
|
||||||
return doneChangingTextCallback(await this.customPrompt())
|
return doneChangingTextCallback(await this.customPrompt())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
toolGroup.addTool(RectangleROITool.toolName)
|
||||||
toolGroup.addTool(PlanarFreehandROITool.toolName, {
|
toolGroup.addTool(PlanarFreehandROITool.toolName, {
|
||||||
allowOpenContours: false
|
allowOpenContours: false
|
||||||
// cachedStats: false
|
// cachedStats: false
|
||||||
|
@ -377,9 +435,11 @@ export default {
|
||||||
toolGroup.setToolPassive(PlanarRotateTool.toolName)
|
toolGroup.setToolPassive(PlanarRotateTool.toolName)
|
||||||
if (this.readingTaskState < 2) {
|
if (this.readingTaskState < 2) {
|
||||||
toolGroup.setToolPassive(ArrowAnnotateTool.toolName)
|
toolGroup.setToolPassive(ArrowAnnotateTool.toolName)
|
||||||
|
toolGroup.setToolPassive(RectangleROITool.toolName)
|
||||||
toolGroup.setToolPassive(PlanarFreehandROITool.toolName)
|
toolGroup.setToolPassive(PlanarFreehandROITool.toolName)
|
||||||
} else {
|
} else {
|
||||||
toolGroup.setToolEnabled(ArrowAnnotateTool.toolName)
|
toolGroup.setToolEnabled(ArrowAnnotateTool.toolName)
|
||||||
|
toolGroup.setToolEnabled(RectangleROITool.toolName)
|
||||||
toolGroup.setToolEnabled(PlanarFreehandROITool.toolName)
|
toolGroup.setToolEnabled(PlanarFreehandROITool.toolName)
|
||||||
}
|
}
|
||||||
toolGroup.setToolPassive(EraserTool.toolName)
|
toolGroup.setToolPassive(EraserTool.toolName)
|
||||||
|
@ -585,6 +645,8 @@ export default {
|
||||||
},
|
},
|
||||||
// 切换全屏
|
// 切换全屏
|
||||||
toggleFullScreen(e, index) {
|
toggleFullScreen(e, index) {
|
||||||
|
const i = this.viewportInfos.findIndex(i => i.index === index)
|
||||||
|
if (i === -1 && this.viewportInfos[i].fileType !== 'image/jpeg') return
|
||||||
this.fullScreenIndex = this.fullScreenIndex === index ? null : index
|
this.fullScreenIndex = this.fullScreenIndex === index ? null : index
|
||||||
this.activeCanvasIndex = index
|
this.activeCanvasIndex = index
|
||||||
},
|
},
|
||||||
|
@ -685,7 +747,7 @@ export default {
|
||||||
const { annotation } = e.detail
|
const { annotation } = e.detail
|
||||||
if (!annotation) return
|
if (!annotation) return
|
||||||
if (!annotation.annotationId) return
|
if (!annotation.annotationId) return
|
||||||
if (!annotation.data.contour.closed) return
|
if (annotation.metadata.toolName === 'PlanarFreehandROI' && !annotation.data.contour.closed) return
|
||||||
const i = this.viewportInfos.findIndex(i => i.index === this.activeCanvasIndex)
|
const i = this.viewportInfos.findIndex(i => i.index === this.activeCanvasIndex)
|
||||||
if (i === -1) return
|
if (i === -1) return
|
||||||
if (this.viewportInfos[i].taskInfo.VisitTaskId !== this.taskInfo.VisitTaskId) return
|
if (this.viewportInfos[i].taskInfo.VisitTaskId !== this.taskInfo.VisitTaskId) return
|
||||||
|
@ -711,7 +773,7 @@ export default {
|
||||||
if (this.readingTaskState === 2) return
|
if (this.readingTaskState === 2) return
|
||||||
const { annotation } = e.detail
|
const { annotation } = e.detail
|
||||||
if (!annotation) return
|
if (!annotation) return
|
||||||
if (!annotation.data.contour.closed) return
|
if (annotation.metadata.toolName === 'PlanarFreehandROI' && !annotation.data.contour.closed) return
|
||||||
const i = this.viewportInfos.findIndex(i => i.index === this.activeCanvasIndex)
|
const i = this.viewportInfos.findIndex(i => i.index === this.activeCanvasIndex)
|
||||||
if (i === -1) return
|
if (i === -1) return
|
||||||
if (this.viewportInfos[i].taskInfo.VisitTaskId !== this.taskInfo.VisitTaskId) return
|
if (this.viewportInfos[i].taskInfo.VisitTaskId !== this.taskInfo.VisitTaskId) return
|
||||||
|
@ -885,7 +947,10 @@ export default {
|
||||||
grid-column: 1 / -1;
|
grid-column: 1 / -1;
|
||||||
grid-row: 1 / -1;
|
grid-row: 1 / -1;
|
||||||
}
|
}
|
||||||
|
.flex_col {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
.content {
|
.content {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ps">
|
<div class="ps">
|
||||||
<el-collapse v-model="activeNames">
|
<el-collapse v-model="activeNames" @change="handleChange">
|
||||||
<el-collapse-item v-for="(study, index) in studyList" :key="`${study.Id}`" :name="`${study.Id}`">
|
<el-collapse-item v-for="(study, index) in studyList" :key="`${study.Id}`" :name="`${study.Id}`">
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
<div
|
<div
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
<el-image
|
<el-image
|
||||||
style="width: 100%;height: 100%;"
|
style="width: 100%;height: 100%;"
|
||||||
:src="`${OSSclientConfig.basePath}${k.Path}?x-oss-process=image/resize,w_50,h_50/format,png`"
|
:src="`${OSSclientConfig.basePath}${k.Path}?x-oss-process=image/resize,w_50,h_50/format,png`"
|
||||||
fit="fill"
|
fit="contain"
|
||||||
crossorigin="anonymous"
|
crossorigin="anonymous"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -90,7 +90,7 @@ export default {
|
||||||
this.studyList = this.visitTaskInfo.StudyList
|
this.studyList = this.visitTaskInfo.StudyList
|
||||||
if (this.studyList.length === 0) return
|
if (this.studyList.length === 0) return
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.activeNames.push(this.studyList[0].Id)
|
this.activeStudy(this.studyList[0].Id)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -98,7 +98,7 @@ export default {
|
||||||
setInitActiveFile() {
|
setInitActiveFile() {
|
||||||
if (this.studyList.length === 0) return
|
if (this.studyList.length === 0) return
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.activeNames.push(this.studyList[0].Id)
|
this.activeStudy(this.studyList[0].Id)
|
||||||
this.selectFile(this.studyList[0], 0, 0)
|
this.selectFile(this.studyList[0], 0, 0)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -113,12 +113,19 @@ export default {
|
||||||
if (this.studyList.length === 0) return
|
if (this.studyList.length === 0) return
|
||||||
const i = this.studyList.findIndex(i => i.Id === obj.studyId)
|
const i = this.studyList.findIndex(i => i.Id === obj.studyId)
|
||||||
if (i === -1) return
|
if (i === -1) return
|
||||||
this.activeNames.push(obj.studyId)
|
this.activeStudy(obj.studyId)
|
||||||
this.activeStudyIndex = i
|
this.activeStudyIndex = i
|
||||||
const fileList = this.studyList[i].NoneDicomStudyFileList
|
const fileList = this.studyList[i].NoneDicomStudyFileList
|
||||||
const fIndex = fileList.findIndex(f => f.Path === obj.path)
|
const fIndex = fileList.findIndex(f => f.Path === obj.path)
|
||||||
if (fIndex === -1) return
|
if (fIndex === -1) return
|
||||||
this.activeFileIndex = fIndex
|
this.activeFileIndex = fIndex
|
||||||
|
},
|
||||||
|
activeStudy(id) {
|
||||||
|
if (this.activeNames.indexOf(id) > -1) return
|
||||||
|
this.activeNames.push(id)
|
||||||
|
},
|
||||||
|
handleChange(v) {
|
||||||
|
console.log(v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue