非dicom全局和裁判阅片更改
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
10f4bf7480
commit
aae2d6a1c5
|
@ -3,35 +3,95 @@
|
||||||
<!-- 访视阅片 -->
|
<!-- 访视阅片 -->
|
||||||
<visit-review v-if="taskInfo && taskInfo.ReadingCategory=== 1" />
|
<visit-review v-if="taskInfo && taskInfo.ReadingCategory=== 1" />
|
||||||
<!-- 全局阅片 -->
|
<!-- 全局阅片 -->
|
||||||
<global-review v-else-if="taskInfo && taskInfo.ReadingCategory=== 2" />
|
<global-review
|
||||||
|
v-else-if="taskInfo && taskInfo.ReadingCategory=== 2"
|
||||||
|
:trialId="trialId"
|
||||||
|
:subjectId="taskInfo.SubjectId"
|
||||||
|
:visitTaskId="taskInfo.VisitTaskId"
|
||||||
|
:readingCategory="taskInfo.ReadingCategory"
|
||||||
|
:subjectCode="taskInfo.SubjectCode"
|
||||||
|
:taskBlindName="taskInfo.TaskBlindName"
|
||||||
|
:isReadingShowSubjectInfo="taskInfo.IsReadingShowSubjectInfo"
|
||||||
|
:isReadingShowPreviousResults="taskInfo.IsReadingShowPreviousResults"
|
||||||
|
:isExistsClinicalData="taskInfo.IsExistsClinicalData"
|
||||||
|
/>
|
||||||
<!-- 裁判阅片 -->
|
<!-- 裁判阅片 -->
|
||||||
<ad-review v-else-if="taskInfo && taskInfo.ReadingCategory=== 4" />
|
<ad-review
|
||||||
|
v-else-if="taskInfo && taskInfo.ReadingCategory=== 4"
|
||||||
|
:trialId="trialId"
|
||||||
|
:subjectId="taskInfo.SubjectId"
|
||||||
|
:visitTaskId="taskInfo.VisitTaskId"
|
||||||
|
:readingCategory="taskInfo.ReadingCategory"
|
||||||
|
:subjectCode="taskInfo.SubjectCode"
|
||||||
|
:taskBlindName="taskInfo.TaskBlindName"
|
||||||
|
:isReadingShowSubjectInfo="taskInfo.IsReadingShowSubjectInfo"
|
||||||
|
:isReadingShowPreviousResults="taskInfo.IsReadingShowPreviousResults"
|
||||||
|
:isExistsClinicalData="taskInfo.IsExistsClinicalData"
|
||||||
|
/>
|
||||||
<!-- 肿瘤学阅片 -->
|
<!-- 肿瘤学阅片 -->
|
||||||
<oncology-review v-else-if="taskInfo && taskInfo.ReadingCategory=== 5" />
|
<!-- <oncology-review v-else-if="taskInfo && taskInfo.ReadingCategory=== 5" /> -->
|
||||||
|
<el-dialog
|
||||||
|
:visible.sync="clinicalDataVisible"
|
||||||
|
:custom-class="isClinicalDataFullscreen?'full-dialog-container':'dialog-container'"
|
||||||
|
:show-close="false"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
:fullscreen="isClinicalDataFullscreen"
|
||||||
|
>
|
||||||
|
<span slot="title" class="dialog-footer">
|
||||||
|
<!-- 当前阅片任务存在临床数据,请查看。若已查看,请点击“确认” -->
|
||||||
|
<span v-if="!closeCDVisible">{{ $t('trials:reading:dagTitle:msg1') }}</span>
|
||||||
|
<div style="position: absolute;right: 20px;top: 10px;">
|
||||||
|
<svg-icon :icon-class="isClinicalDataFullscreen?'exit-fullscreen':'fullscreen'" style="cursor: pointer;font-size: 20px;" @click="isClinicalDataFullscreen=!isClinicalDataFullscreen" />
|
||||||
|
<svg-icon v-if="closeCDVisible" icon-class="dClose" style="cursor: pointer;font-size: 25px;margin-left: 10px;" @click="clinicalDataVisible = false" />
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
<div style="height: 100%;margin:0;display: flex;flex-direction: column;">
|
||||||
|
<clinical-data
|
||||||
|
v-if="clinicalDataVisible"
|
||||||
|
style="flex: 1"
|
||||||
|
:trial-id="trialId"
|
||||||
|
:subject-id="taskInfo.SubjectId"
|
||||||
|
:visit-task-id="cdVisitTaskId"
|
||||||
|
:is-reading-show-subject-info="taskInfo.IsReadingShowSubjectInfo"
|
||||||
|
/>
|
||||||
|
<div v-if="!closeCDVisible" style="text-align:right">
|
||||||
|
<el-button type="primary" @click="handleConfirmCD">{{ $t('trials:reading:button:confirm') }}</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { getNextTask } from '@/api/trials'
|
import { getNextTask, readClinicalData } from '@/api/trials'
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
import VisitReview from '@/views/trials/trials-panel/reading/visit-review'
|
import VisitReview from '@/views/trials/trials-panel/reading/visit-review'
|
||||||
import GlobalReview from '@/views/trials/trials-panel/reading/global-review'
|
import GlobalReview from '@/views/trials/trials-panel/reading/global-review'
|
||||||
import AdReview from '@/views/trials/trials-panel/reading/ad-review'
|
import AdReview from '@/views/trials/trials-panel/reading/ad-review'
|
||||||
import OncologyReview from '@/views/trials/trials-panel/reading/oncology-review'
|
// import OncologyReview from '@/views/trials/trials-panel/reading/oncology-review'
|
||||||
|
import ClinicalData from '@/views/trials/trials-panel/reading/clinical-data'
|
||||||
export default {
|
export default {
|
||||||
name: 'ReadingViewer',
|
name: 'ReadingViewer',
|
||||||
components: {
|
components: {
|
||||||
VisitReview,
|
VisitReview,
|
||||||
GlobalReview,
|
GlobalReview,
|
||||||
AdReview,
|
AdReview,
|
||||||
OncologyReview
|
// OncologyReview
|
||||||
|
ClinicalData
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
taskInfo: null,
|
taskInfo: null,
|
||||||
loading: false
|
trialId: '',
|
||||||
|
loading: false,
|
||||||
|
clinicalDataVisible: false,
|
||||||
|
isClinicalDataFullscreen: false,
|
||||||
|
closeCDVisible: false,
|
||||||
|
cdVisitTaskId: ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
this.trialId = this.$route.query.trialId
|
||||||
this.getTaskInfo()
|
this.getTaskInfo()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -48,23 +108,32 @@ export default {
|
||||||
const res = await getNextTask(params)
|
const res = await getNextTask(params)
|
||||||
this.taskInfo = res.Result
|
this.taskInfo = res.Result
|
||||||
localStorage.setItem('taskInfo', JSON.stringify(res.Result))
|
localStorage.setItem('taskInfo', JSON.stringify(res.Result))
|
||||||
// if (res.Result.IsExistsClinicalData && res.Result.IsNeedReadClinicalData && !res.Result.IsReadClinicalData) {
|
|
||||||
// this.isFullscreen = false
|
|
||||||
// this.dialogVisible = true
|
|
||||||
// this.cdVisitTaskId = res.Result.visitTaskId
|
|
||||||
// }
|
|
||||||
// this.$nextTick(() => {
|
|
||||||
// if (res.Result.IsFirstChangeTask && res.Result.ReadingTaskState === 0) {
|
|
||||||
// this.tipVisible = true
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
this.loading = false
|
this.loading = false
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.taskInfo.IsExistsClinicalData && this.taskInfo.IsNeedReadClinicalData && !this.taskInfo.IsReadClinicalData) {
|
||||||
|
this.isClinicalDataFullscreen = false
|
||||||
|
this.clinicalDataVisible = true
|
||||||
|
this.cdVisitTaskId = this.taskInfo.VisitTaskId
|
||||||
|
}
|
||||||
|
})
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e)
|
console.log(e)
|
||||||
store.dispatch('reading/setCurrentReadingTaskState', 2)
|
store.dispatch('reading/setCurrentReadingTaskState', 2)
|
||||||
this.loading = false
|
this.loading = false
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
async handleConfirmCD() {
|
||||||
|
this.loading = true
|
||||||
|
var visitTaskId = this.taskInfo.VisitTaskId
|
||||||
|
try {
|
||||||
|
await readClinicalData({ visitTaskId })
|
||||||
|
this.loading = false
|
||||||
|
this.clinicalDataVisible = false
|
||||||
|
this.closeCDVisible = true
|
||||||
|
} catch (e) {
|
||||||
|
this.loading = false
|
||||||
}
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -72,5 +141,22 @@ export default {
|
||||||
.reading-viewer-container {
|
.reading-viewer-container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
::v-deep .dialog-container{
|
||||||
|
margin-top: 50px !important;
|
||||||
|
width:75%;
|
||||||
|
height:80%;
|
||||||
|
}
|
||||||
|
::v-deep .el-dialog__body{
|
||||||
|
padding: 20px 20px 0 20px;
|
||||||
|
height: calc(100% - 70px);
|
||||||
|
}
|
||||||
|
.el-dialog__header{
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.full-dialog-container{
|
||||||
|
::v-deep .is-fullscreen .el-dialog__body{
|
||||||
|
height: calc(100% - 70px);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -91,11 +91,9 @@
|
||||||
:fullscreen="isClinicalDataFullscreen"
|
:fullscreen="isClinicalDataFullscreen"
|
||||||
>
|
>
|
||||||
<span slot="title" class="dialog-footer">
|
<span slot="title" class="dialog-footer">
|
||||||
<!-- 当前阅片任务存在临床数据,请查看。若已查看,请点击“确认” -->
|
|
||||||
<span v-if="!closeCDVisible">{{ $t('trials:reading:dagTitle:msg1') }}</span>
|
|
||||||
<div style="position: absolute;right: 20px;top: 10px;">
|
<div style="position: absolute;right: 20px;top: 10px;">
|
||||||
<svg-icon :icon-class="isClinicalDataFullscreen?'exit-fullscreen':'fullscreen'" style="cursor: pointer;font-size: 20px;" @click="isClinicalDataFullscreen=!isClinicalDataFullscreen" />
|
<svg-icon :icon-class="isClinicalDataFullscreen?'exit-fullscreen':'fullscreen'" style="cursor: pointer;font-size: 20px;" @click="isClinicalDataFullscreen=!isClinicalDataFullscreen" />
|
||||||
<svg-icon v-if="closeCDVisible" icon-class="dClose" style="cursor: pointer;font-size: 25px;margin-left: 10px;" @click="clinicalDataVisible = false" />
|
<svg-icon icon-class="dClose" style="cursor: pointer;font-size: 25px;margin-left: 10px;" @click="clinicalDataVisible = false" />
|
||||||
</div>
|
</div>
|
||||||
</span>
|
</span>
|
||||||
<div style="height: 100%;margin:0;display: flex;flex-direction: column;">
|
<div style="height: 100%;margin:0;display: flex;flex-direction: column;">
|
||||||
|
@ -107,9 +105,6 @@
|
||||||
:visit-task-id="cdVisitTaskId"
|
:visit-task-id="cdVisitTaskId"
|
||||||
:is-reading-show-subject-info="taskInfo.IsReadingShowSubjectInfo"
|
:is-reading-show-subject-info="taskInfo.IsReadingShowSubjectInfo"
|
||||||
/>
|
/>
|
||||||
<div v-if="!closeCDVisible" style="text-align:right">
|
|
||||||
<el-button type="primary" @click="handleConfirmCD">{{ $t('trials:reading:button:confirm') }}</el-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
@ -117,7 +112,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getRelatedVisitTask, getReadingImageFile, getNoneDicomMarkListOutDto, readClinicalData } from '@/api/trials'
|
import { getRelatedVisitTask, getReadingImageFile, getNoneDicomMarkListOutDto } from '@/api/trials'
|
||||||
import StudyList from './StudyList'
|
import StudyList from './StudyList'
|
||||||
// import ImageViewer from './ImageViewer'
|
// import ImageViewer from './ImageViewer'
|
||||||
// import PdfViewer from './PDFViewer'
|
// import PdfViewer from './PDFViewer'
|
||||||
|
@ -156,7 +151,6 @@ export default {
|
||||||
relatedStudyInfo: null,
|
relatedStudyInfo: null,
|
||||||
clinicalDataVisible: false,
|
clinicalDataVisible: false,
|
||||||
isClinicalDataFullscreen: false,
|
isClinicalDataFullscreen: false,
|
||||||
closeCDVisible: false,
|
|
||||||
trialId: '',
|
trialId: '',
|
||||||
cdVisitTaskId: ''
|
cdVisitTaskId: ''
|
||||||
}
|
}
|
||||||
|
@ -181,13 +175,7 @@ export default {
|
||||||
this.taskInfo = JSON.parse(localStorage.getItem('taskInfo'))
|
this.taskInfo = JSON.parse(localStorage.getItem('taskInfo'))
|
||||||
this.trialId = this.$route.query.trialId
|
this.trialId = this.$route.query.trialId
|
||||||
this.getRelatedTask()
|
this.getRelatedTask()
|
||||||
this.$nextTick(() => {
|
|
||||||
if (this.taskInfo.IsExistsClinicalData && this.taskInfo.IsNeedReadClinicalData && !this.taskInfo.IsReadClinicalData) {
|
|
||||||
this.isClinicalDataFullscreen = false
|
|
||||||
this.clinicalDataVisible = true
|
|
||||||
this.cdVisitTaskId = this.taskInfo.VisitTaskId
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 获取关联任务信息
|
// 获取关联任务信息
|
||||||
|
@ -243,71 +231,6 @@ export default {
|
||||||
}
|
}
|
||||||
const res = await getReadingImageFile(params)
|
const res = await getReadingImageFile(params)
|
||||||
this.$set(this.visitTaskList[visitTaskIdx], 'StudyList', res.Result)
|
this.$set(this.visitTaskList[visitTaskIdx], 'StudyList', res.Result)
|
||||||
// const arr = [
|
|
||||||
// {
|
|
||||||
// BodyPart: '',
|
|
||||||
// Code: 0,
|
|
||||||
// CodeView: '',
|
|
||||||
// Description: '',
|
|
||||||
// FileCount: 0,
|
|
||||||
// Id: '6783b9e8-738f-42d6-bc36-8d3b36b060ee',
|
|
||||||
// ImageDate: '0001-01-01 00:00:00',
|
|
||||||
// IsCriticalSequence: true,
|
|
||||||
// IsDeleted: false,
|
|
||||||
// IsReading: false,
|
|
||||||
// Modality: '',
|
|
||||||
// StudyName: '',
|
|
||||||
// SubjectId: '08dd3125-be6c-d544-0242-0a0001000000',
|
|
||||||
// SubjectVisitId: '01000000-0a10-0242-4a73-08dd3125be6d',
|
|
||||||
// TrialId: '08dd2ee1-0754-9e3d-0242-0a0001000000',
|
|
||||||
// UpdateTime: '0001-01-01 00:00:00',
|
|
||||||
// NoneDicomStudyFileList: [
|
|
||||||
// {
|
|
||||||
// Id: '08dd3480-5a81-cb9d-0242-0a0001000000',
|
|
||||||
// Path: '/08dd2ee1-0754-9e3d-0242-0a0001000000/DocumentToSign/1740706111094_Independent%20Review%20Charter.pdf',
|
|
||||||
// FileName: 'A11CF934.jpg',
|
|
||||||
// CreateTime: '2025-01-14 17:46:43',
|
|
||||||
// CreateUserId: '746d0000-3e2c-0016-f276-08daeedff8de',
|
|
||||||
// NoneDicomStudyId: '08dd3480-4747-4454-0242-0a0001000000',
|
|
||||||
// FileSize: 29137,
|
|
||||||
// FullFilePath: '/08dd2ee1-0754-9e3d-0242-0a0001000000/DocumentToSign/1740706111094_Independent%20Review%20Charter.pdf',
|
|
||||||
// FileType: 'image/jpeg'
|
|
||||||
// }
|
|
||||||
// ]
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// BodyPart: '',
|
|
||||||
// Code: 0,
|
|
||||||
// CodeView: '',
|
|
||||||
// Description: '',
|
|
||||||
// FileCount: 0,
|
|
||||||
// Id: '6783b9e8-738f-42f6-bc36-8d3b36b060ee',
|
|
||||||
// ImageDate: '0001-01-01 00:00:00',
|
|
||||||
// IsCriticalSequence: true,
|
|
||||||
// IsDeleted: false,
|
|
||||||
// IsReading: false,
|
|
||||||
// Modality: '',
|
|
||||||
// StudyName: '',
|
|
||||||
// SubjectId: '08dd3125-be6c-d544-0242-0a0001000000',
|
|
||||||
// SubjectVisitId: '01000000-0a00-0242-4a73-08dd3125be6d',
|
|
||||||
// TrialId: '08dd2ee1-0754-9e3d-0242-0a0001000000',
|
|
||||||
// UpdateTime: '0001-01-01 00:00:00',
|
|
||||||
// NoneDicomStudyFileList: [
|
|
||||||
// {
|
|
||||||
// Id: '08dd3480-5a81-cb8d-0242-0a0001000000',
|
|
||||||
// Path: '/08dd2ee1-0754-9e3d-0242-0a0001000000/DocumentToSign/1740706163441_IRaCIS%20%E5%90%8E%E5%8F%B0%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9FV%201.0%20CRO%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3_20200601.pdf',
|
|
||||||
// FileName: 'A11CF934.jpg',
|
|
||||||
// CreateTime: '2025-01-14 17:46:43',
|
|
||||||
// CreateUserId: '746d0000-3e2c-0016-f276-08daeedff8de',
|
|
||||||
// NoneDicomStudyId: '08dd3480-4747-4454-0242-0a0001000000',
|
|
||||||
// FileSize: 29137,
|
|
||||||
// FullFilePath: '/08dd2ee1-0754-9e3d-0242-0a0001000000/DocumentToSign/1740706163441_IRaCIS%20%E5%90%8E%E5%8F%B0%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9FV%201.0%20CRO%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3_20200601.pdf',
|
|
||||||
// FileType: 'image/jpeg'
|
|
||||||
// }
|
|
||||||
// ]
|
|
||||||
// }
|
|
||||||
// ]
|
|
||||||
// this.$set(this.visitTaskList[visitTaskIdx], 'StudyList', arr)
|
|
||||||
this.loading = false
|
this.loading = false
|
||||||
resolve()
|
resolve()
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -370,21 +293,8 @@ export default {
|
||||||
toggleImage(obj) {
|
toggleImage(obj) {
|
||||||
this.$refs[obj.taskId][0].activeImage(obj)
|
this.$refs[obj.taskId][0].activeImage(obj)
|
||||||
},
|
},
|
||||||
async handleConfirmCD() {
|
|
||||||
this.loading = true
|
|
||||||
var visitTaskId = this.taskInfo.VisitTaskId
|
|
||||||
try {
|
|
||||||
await readClinicalData({ visitTaskId })
|
|
||||||
this.loading = false
|
|
||||||
this.clinicalDataVisible = false
|
|
||||||
this.closeCDVisible = true
|
|
||||||
// this.isReadClinicalData = true
|
|
||||||
} catch (e) {
|
|
||||||
this.loading = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
previewCD(taskId) {
|
previewCD(taskId) {
|
||||||
this.closeCDVisible = true
|
|
||||||
this.isClinicalDataFullscreen = false
|
this.isClinicalDataFullscreen = false
|
||||||
this.dialogVisible = true
|
this.dialogVisible = true
|
||||||
this.cdVisitTaskId = taskId
|
this.cdVisitTaskId = taskId
|
||||||
|
|
Loading…
Reference in New Issue