自定义阅片更改及非dicom阅片添加个性化配置
continuous-integration/drone/push Build is passing Details

uat
caiyiling 2025-03-21 15:03:21 +08:00
parent 6b10d07e2a
commit 272c28a988
6 changed files with 310 additions and 234 deletions

View File

@ -76,7 +76,7 @@
<el-input <el-input
v-if="question.Type==='input'" v-if="question.Type==='input'"
v-model="questionForm[question.Id]" v-model="questionForm[question.Id]"
:disabled="question.TableQuestionType === 2" :disabled="question.TableQuestionType === 2 || readingTaskState === 2"
/> />
<!-- 多行文本输入框 --> <!-- 多行文本输入框 -->
<el-input <el-input
@ -84,13 +84,14 @@
v-model="questionForm[question.Id]" v-model="questionForm[question.Id]"
type="textarea" type="textarea"
:autosize="{ minRows: 2, maxRows: 4}" :autosize="{ minRows: 2, maxRows: 4}"
:disabled="readingTaskState === 2"
/> />
<!-- 下拉框 --> <!-- 下拉框 -->
<el-select <el-select
v-if="question.Type==='select'" v-if="question.Type==='select'"
v-model="questionForm[question.Id]" v-model="questionForm[question.Id]"
clearable clearable
:disabled="(question.TableQuestionType === 2 || question.QuestionGenre === 2) && !!question.DictionaryCode" :disabled="(question.TableQuestionType === 2 || question.QuestionGenre === 2) && !!question.DictionaryCode || readingTaskState === 2"
@change="((val)=>{formItemChange(val, question)})" @change="((val)=>{formItemChange(val, question)})"
> >
<template v-if="question.TableQuestionType === 1"> <template v-if="question.TableQuestionType === 1">
@ -132,6 +133,7 @@
v-if="question.Type==='radio'" v-if="question.Type==='radio'"
v-model="questionForm[question.Id]" v-model="questionForm[question.Id]"
@change="((val)=>{formItemChange(val, question)})" @change="((val)=>{formItemChange(val, question)})"
:disabled="readingTaskState === 2"
> >
<el-radio <el-radio
v-for="val in question.TypeValue.split('|')" v-for="val in question.TypeValue.split('|')"
@ -145,6 +147,7 @@
<el-checkbox-group <el-checkbox-group
v-if="question.Type==='checkbox'" v-if="question.Type==='checkbox'"
v-model="questionForm[question.Id]" v-model="questionForm[question.Id]"
:disabled="readingTaskState === 2"
> >
<el-checkbox <el-checkbox
v-for="val in question.TypeValue.split('|')" v-for="val in question.TypeValue.split('|')"
@ -158,12 +161,12 @@
<el-input <el-input
v-if="question.Type === 'class' && question.ClassifyShowType === 1" v-if="question.Type === 'class' && question.ClassifyShowType === 1"
v-model="questionForm[question.Id]" v-model="questionForm[question.Id]"
:disabled="!question.ClassifyEditType" :disabled="!question.ClassifyEditType || readingTaskState === 2"
/> />
<el-select <el-select
v-if="question.Type === 'class' && question.ClassifyShowType === 2" v-if="question.Type === 'class' && question.ClassifyShowType === 2"
v-model="questionForm[question.Id]" v-model="questionForm[question.Id]"
:disabled="!question.ClassifyEditType" :disabled="!question.ClassifyEditType || readingTaskState === 2"
@change="(val) => { formItemChange(val, question) }" @change="(val) => { formItemChange(val, question) }"
> >
<el-option <el-option
@ -176,7 +179,7 @@
<el-radio-group <el-radio-group
v-if="question.Type === 'class' && question.ClassifyShowType === 3" v-if="question.Type === 'class' && question.ClassifyShowType === 3"
v-model="questionForm[question.Id]" v-model="questionForm[question.Id]"
:disabled="!question.ClassifyEditType" :disabled="!question.ClassifyEditType || readingTaskState === 2"
@change="(val) => { formItemChange(val, question) }" @change="(val) => { formItemChange(val, question) }"
> >
<el-radio <el-radio
@ -190,7 +193,7 @@
<el-input <el-input
v-if="question.Type === 'class' && question.ClassifyShowType === 4" v-if="question.Type === 'class' && question.ClassifyShowType === 4"
type="number" type="number"
:disabled="!question.ClassifyEditType" :disabled="!question.ClassifyEditType || readingTaskState === 2"
v-model="questionForm[question.Id]" v-model="questionForm[question.Id]"
@change="(val) => { formItemNumberChange(val, question) }" @change="(val) => { formItemNumberChange(val, question) }"
/> />
@ -215,6 +218,7 @@
v-model="questionForm[question.Id]" v-model="questionForm[question.Id]"
clearable clearable
@change="(val) => { formItemNumberChange(val, question) }" @change="(val) => { formItemNumberChange(val, question) }"
:disabled="readingTaskState === 2"
> >
<el-option <el-option
v-for="val in question.TypeValue.split('|')" v-for="val in question.TypeValue.split('|')"
@ -229,6 +233,7 @@
@change="(val) => { formItemNumberChange(val, question) }" @change="(val) => { formItemNumberChange(val, question) }"
@blur="handleBlur(questionForm[question.Id], questionForm, question.Id)" @blur="handleBlur(questionForm[question.Id], questionForm, question.Id)"
v-model="questionForm[question.Id]" v-model="questionForm[question.Id]"
:disabled="readingTaskState === 2"
> >
<!-- <template slot="append">1</template> --> <!-- <template slot="append">1</template> -->
<template slot="append" v-if="question.Unit !== 0">{{question.Unit !== 4 ? $fd('ValueUnit', question.Unit) : question.CustomUnit}}</template> <template slot="append" v-if="question.Unit !== 0">{{question.Unit !== 4 ? $fd('ValueUnit', question.Unit) : question.CustomUnit}}</template>
@ -238,7 +243,7 @@
type="number" type="number"
v-if="question.Type === 'number' && !question.TypeValue && question.DataSource === 1" v-if="question.Type === 'number' && !question.TypeValue && question.DataSource === 1"
@blur="handleBlur(questionForm[question.Id], questionForm, question.Id)" @blur="handleBlur(questionForm[question.Id], questionForm, question.Id)"
:disabled="question.DataSource === 1" :disabled="question.DataSource === 1 || readingTaskState === 2"
v-model="questionForm[question.Id]" v-model="questionForm[question.Id]"
> >
<!-- <template slot="append">2</template> --> <!-- <template slot="append">2</template> -->
@ -248,6 +253,7 @@
<!-- 上传图像 --> <!-- 上传图像 -->
<el-upload <el-upload
v-if="question.Type==='upload'" v-if="question.Type==='upload'"
:disabled="readingTaskState === 2"
action action
:accept="question.FileType" :accept="question.FileType"
:limit="question.ImageCount === 0 ? 100 : question.ImageCount" :limit="question.ImageCount === 0 ? 100 : question.ImageCount"
@ -258,7 +264,7 @@
:file-list="fileList" :file-list="fileList"
:class="{disabled:question.ImageCount === 0 ? false : fileList.length >= question.ImageCount}" :class="{disabled:question.ImageCount === 0 ? false : fileList.length >= question.ImageCount}"
> >
<el-button slot="default" class="el-icon-plus"> <el-button slot="default" class="el-icon-plus" v-if="readingTaskState < 2">
{{this.$t('common:button:upload')}} {{this.$t('common:button:upload')}}
</el-button> </el-button>
</el-upload> </el-upload>
@ -446,6 +452,13 @@ export default {
this.formItemNumberChange(this.question.Id, false) this.formItemNumberChange(this.question.Id, false)
} }
}, },
readingTaskState: {
deep: true,
immediate: true,
handler(v, oldv) {
console.log(v)
}
}
}, },
mounted() { mounted() {
var digitPlaces = Number(localStorage.getItem('digitPlaces')) var digitPlaces = Number(localStorage.getItem('digitPlaces'))

View File

@ -194,7 +194,7 @@
</template> </template>
</template> </template>
<template v-else-if="task.VisitTaskId === visitTaskId && scope.row.Type === 'upload'"> <template v-else-if="task.VisitTaskId === visitTaskId && scope.row.Type === 'upload'">
<CustomizeReportPageUpload <customize-report-page-upload
v-if="scope.row.Type==='upload' && (scope.row.xfIndex || scope.row.xfIndex === 0)" v-if="scope.row.Type==='upload' && (scope.row.xfIndex || scope.row.xfIndex === 0)"
:visitTaskId="visitTaskId" :visitTaskId="visitTaskId"
:question="scope.row" :question="scope.row"
@ -202,8 +202,8 @@
:readingTaskState="readingTaskState" :readingTaskState="readingTaskState"
:initUrl="questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]" :initUrl="questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]"
@setImageUrl="(url) => {setImageUrl(scope.row.QuestionId, scope.row.xfIndex, scope.row.TableQuestionId, url, scope.row.RowId)}" @setImageUrl="(url) => {setImageUrl(scope.row.QuestionId, scope.row.xfIndex, scope.row.TableQuestionId, url, scope.row.RowId)}"
></CustomizeReportPageUpload> ></customize-report-page-upload>
<CustomizeReportPageUpload <customize-report-page-upload
v-else-if="scope.row.Type==='upload'" v-else-if="scope.row.Type==='upload'"
:visitTaskId="visitTaskId" :visitTaskId="visitTaskId"
:question="scope.row" :question="scope.row"
@ -211,25 +211,25 @@
:readingTaskState="readingTaskState" :readingTaskState="readingTaskState"
:initUrl="questionForm[scope.row.QuestionId]" :initUrl="questionForm[scope.row.QuestionId]"
@setImageUrl="(url) => {setImageUrl(scope.row.QuestionId, scope.row.xfIndex, scope.row.TableQuestionId, url)}" @setImageUrl="(url) => {setImageUrl(scope.row.QuestionId, scope.row.xfIndex, scope.row.TableQuestionId, url)}"
></CustomizeReportPageUpload> ></customize-report-page-upload>
</template> </template>
<template v-else-if="scope.row.Type === 'upload'"> <template v-else-if="scope.row.Type === 'upload'">
<CustomizeReportPageUpload <customize-report-page-upload
v-if="scope.row.Type==='upload' && (scope.row.xfIndex || scope.row.xfIndex === 0)" v-if="scope.row.Type==='upload' && (scope.row.xfIndex || scope.row.xfIndex === 0)"
:visitTaskId="visitTaskId" :visitTaskId="visitTaskId"
:question="scope.row" :question="scope.row"
:task="task" :task="task"
:readingTaskState="readingTaskState" :readingTaskState="readingTaskState"
:initUrl="scope.row.Answers[task.VisitTaskId]" :initUrl="scope.row.Answers[task.VisitTaskId]"
></CustomizeReportPageUpload> ></customize-report-page-upload>
<CustomizeReportPageUpload <customize-report-page-upload
v-else-if="scope.row.Type==='upload'" v-else-if="scope.row.Type==='upload'"
:visitTaskId="visitTaskId" :visitTaskId="visitTaskId"
:question="scope.row" :question="scope.row"
:task="task" :task="task"
:readingTaskState="readingTaskState" :readingTaskState="readingTaskState"
:initUrl="scope.row.Answers[task.VisitTaskId]" :initUrl="scope.row.Answers[task.VisitTaskId]"
></CustomizeReportPageUpload> ></customize-report-page-upload>
</template> </template>
<template v-else-if="scope.row.QuestionType=== 22"> <template v-else-if="scope.row.QuestionType=== 22">
{{ scope.row.Answers[task.VisitTaskId] === '-1' ? '未知' : scope.row.Answers[task.VisitTaskId] }} {{ scope.row.Answers[task.VisitTaskId] === '-1' ? '未知' : scope.row.Answers[task.VisitTaskId] }}
@ -276,6 +276,7 @@
<script> <script>
import { changeCalculationAnswer, getReadingReportEvaluation, changeDicomReadingQuestionAnswer, submitDicomVisitTask, verifyVisitTaskQuestions, getQuestionCalculateRelation } from '@/api/trials' import { changeCalculationAnswer, getReadingReportEvaluation, changeDicomReadingQuestionAnswer, submitDicomVisitTask, verifyVisitTaskQuestions, getQuestionCalculateRelation } from '@/api/trials'
import { setSkipReadingCache } from '@/api/reading' import { setSkipReadingCache } from '@/api/reading'
import { getAutoCutNextTask } from '@/api/user'
import DicomEvent from './../components/DicomEvent' import DicomEvent from './../components/DicomEvent'
import CustomizeReportPageUpload from './CustomizeReportPageUpload' import CustomizeReportPageUpload from './CustomizeReportPageUpload'
import const_ from '@/const/sign-code' import const_ from '@/const/sign-code'
@ -736,15 +737,16 @@ export default {
} }
}, },
// //
signConfirm(signInfo) { async signConfirm(signInfo) {
this.loading = true this.loading = true
try {
var params = { var params = {
data: { data: {
visitTaskId: this.visitTaskId visitTaskId: this.visitTaskId
}, },
signInfo: signInfo signInfo: signInfo
} }
submitDicomVisitTask(params).then(res => { let res = await submitDicomVisitTask(params)
if (res.IsSuccess) { if (res.IsSuccess) {
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(this.$t('common:message:savedSuccessfully'))
if (this.$refs['signForm']) { if (this.$refs['signForm']) {
@ -752,41 +754,36 @@ export default {
} }
this.signVisible = false this.signVisible = false
// window.location.reload()
// window.opener.postMessage('refreshTaskList', window.location)
// //
this.readingTaskState = 2 this.readingTaskState = 2
store.dispatch('reading/setVisitTaskReadingTaskState', { visitTaskId: this.visitTaskId, readingTaskState: 2 }) store.dispatch('reading/setVisitTaskReadingTaskState', { visitTaskId: this.visitTaskId, readingTaskState: 2 })
DicomEvent.$emit('setReadingState', 2) DicomEvent.$emit('setReadingState', 2)
window.opener.postMessage('refreshTaskList', window.location) window.opener.postMessage('refreshTaskList', window.location)
const res = await getAutoCutNextTask()
let isAutoTask = res.Result.AutoCutNextTask
if (isAutoTask) {
window.location.reload()
} else {
this.$confirm(this.$t('trials:oncologyReview:title:msg2'), { this.$confirm(this.$t('trials:oncologyReview:title:msg2'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true distinguishCancelAndClose: true
}) })
.then(() => { .then(() => {
// var token = getToken()
// var subjectCode = this.$router.currentRoute.query.subjectCode
// var subjectId = this.$router.currentRoute.query.subjectId
// var trialId = this.$router.currentRoute.query.trialId
// this.$router.push({
// path: `/readingPage?subjectCode=${subjectCode}&subjectId=${subjectId}&trialId=${trialId}&TokenKey=${token}`
// })
// DicomEvent.$emit('getNextTask')
window.location.reload() window.location.reload()
}) })
.catch(action => { .catch(action => {
}) })
} }
}
this.loading = false this.loading = false
}).catch(() => { } catch(e) {
this.loading = false this.loading = false
if (this.$refs['signForm'] && this.$refs['signForm'].btnLoading) { if (this.$refs['signForm'] && this.$refs['signForm'].btnLoading) {
this.$refs['signForm'].btnLoading = false this.$refs['signForm'].btnLoading = false
} }
}) }
}, },
previewDicoms(task) { previewDicoms(task) {
var token = getToken() var token = getToken()

View File

@ -5,28 +5,28 @@
<!-- 全局阅片 --> <!-- 全局阅片 -->
<global-review <global-review
v-else-if="taskInfo && taskInfo.ReadingCategory=== 2" v-else-if="taskInfo && taskInfo.ReadingCategory=== 2"
:trialId="trialId" :trial-id="trialId"
:subjectId="taskInfo.SubjectId" :subject-id="taskInfo.SubjectId"
:visitTaskId="taskInfo.VisitTaskId" :visit-task-id="taskInfo.VisitTaskId"
:readingCategory="taskInfo.ReadingCategory" :reading-category="taskInfo.ReadingCategory"
:subjectCode="taskInfo.SubjectCode" :subject-code="taskInfo.SubjectCode"
:taskBlindName="taskInfo.TaskBlindName" :task-blind-name="taskInfo.TaskBlindName"
:isReadingShowSubjectInfo="taskInfo.IsReadingShowSubjectInfo" :is-reading-show-subject-info="taskInfo.IsReadingShowSubjectInfo"
:isReadingShowPreviousResults="taskInfo.IsReadingShowPreviousResults" :is-reading-show-previous-results="taskInfo.IsReadingShowPreviousResults"
:isExistsClinicalData="taskInfo.IsExistsClinicalData" :is-exists-clinical-data="taskInfo.IsExistsClinicalData"
/> />
<!-- 裁判阅片 --> <!-- 裁判阅片 -->
<ad-review <ad-review
v-else-if="taskInfo && taskInfo.ReadingCategory=== 4" v-else-if="taskInfo && taskInfo.ReadingCategory=== 4"
:trialId="trialId" :trial-id="trialId"
:subjectId="taskInfo.SubjectId" :subject-id="taskInfo.SubjectId"
:visitTaskId="taskInfo.VisitTaskId" :visit-task-id="taskInfo.VisitTaskId"
:readingCategory="taskInfo.ReadingCategory" :reading-category="taskInfo.ReadingCategory"
:subjectCode="taskInfo.SubjectCode" :subject-code="taskInfo.SubjectCode"
:taskBlindName="taskInfo.TaskBlindName" :task-blind-name="taskInfo.TaskBlindName"
:isReadingShowSubjectInfo="taskInfo.IsReadingShowSubjectInfo" :is-reading-show-subject-info="taskInfo.IsReadingShowSubjectInfo"
:isReadingShowPreviousResults="taskInfo.IsReadingShowPreviousResults" :is-reading-show-previous-results="taskInfo.IsReadingShowPreviousResults"
:isExistsClinicalData="taskInfo.IsExistsClinicalData" :is-exists-clinical-data="taskInfo.IsExistsClinicalData"
/> />
<!-- 肿瘤学阅片 --> <!-- 肿瘤学阅片 -->
<!-- <oncology-review v-else-if="taskInfo && taskInfo.ReadingCategory=== 5" /> --> <!-- <oncology-review v-else-if="taskInfo && taskInfo.ReadingCategory=== 5" /> -->
@ -134,7 +134,7 @@ export default {
} catch (e) { } catch (e) {
this.loading = false this.loading = false
} }
}, }
} }
} }
</script> </script>
@ -148,7 +148,7 @@ export default {
height:80%; height:80%;
} }
::v-deep .el-dialog__body{ ::v-deep .el-dialog__body{
padding: 20px 20px 0 20px; padding: 10px;
height: calc(100% - 70px); height: calc(100% - 70px);
} }
.el-dialog__header{ .el-dialog__header{

View File

@ -1,11 +1,11 @@
<template> <template>
<div v-loading="loading" class="ecrf-list-container"> <div v-loading="loading" class="ecrf-list-container">
<el-form <el-form
v-if="taskInfo"
ref="questions" ref="questions"
size="small" size="small"
:model="questionForm" :model="questionForm"
class="ecrf-form" class="ecrf-form"
v-if="taskInfo"
> >
<!-- <FormItem <!-- <FormItem
v-for="question of questions" v-for="question of questions"
@ -21,13 +21,13 @@
<QuestionFormItem <QuestionFormItem
v-for="question of questions" v-for="question of questions"
:key="question.Id" :key="question.Id"
:visitTaskId="visitTaskId" :visit-task-id="visitTaskId"
:question="question" :question="question"
:question-form="questionForm" :question-form="questionForm"
:reading-task-state="readingTaskState" :reading-task-state="readingTaskState"
:criterion-id="criterionId" :criterion-id="criterionId"
:CalculationList="calculationList" :calculation-list="calculationList"
:IsBaseline="isBaseline" :is-baseline="isBaseline"
@resetFormItemData="resetFormItemData" @resetFormItemData="resetFormItemData"
@setFormItemData="setFormItemData" @setFormItemData="setFormItemData"
/> />
@ -67,7 +67,7 @@
<script> <script>
import { getCustomTableQuestionAnswer, changeDicomReadingQuestionAnswer, getTrialReadingQuestion, saveVisitTaskQuestions, submitVisitTaskQuestionsInDto, getQuestionCalculateRelation } from '@/api/trials' import { getCustomTableQuestionAnswer, changeDicomReadingQuestionAnswer, submitVisitTaskQuestionsInDto, getQuestionCalculateRelation } from '@/api/trials'
import { setSkipReadingCache } from '@/api/reading' import { setSkipReadingCache } from '@/api/reading'
import const_ from '@/const/sign-code' import const_ from '@/const/sign-code'
import store from '@/store' import store from '@/store'
@ -125,6 +125,7 @@ export default {
currentTaskState: { currentTaskState: {
immediate: true, immediate: true,
handler(state) { handler(state) {
console.log(state)
if (state === 2) { if (state === 2) {
this.readingTaskState = 2 this.readingTaskState = 2
} }
@ -166,13 +167,10 @@ export default {
this.questions = res.Result.SinglePage this.questions = res.Result.SinglePage
this.loading = false this.loading = false
} }
} catch (e) { } catch (e) {
console.log(e) console.log(e)
this.loading = false this.loading = false
} }
}, },
setChild(obj) { setChild(obj) {
obj.forEach(i => { obj.forEach(i => {
@ -223,7 +221,7 @@ export default {
visitTaskId: this.visitTaskId, visitTaskId: this.visitTaskId,
answers: answers answers: answers
} }
let res = await changeDicomReadingQuestionAnswer(params) const res = await changeDicomReadingQuestionAnswer(params)
if (res.IsSuccess) { if (res.IsSuccess) {
if (isMsg) { if (isMsg) {
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(this.$t('common:message:savedSuccessfully'))
@ -381,20 +379,24 @@ export default {
::v-deep .el-table--border th.gutter:last-of-type { ::v-deep .el-table--border th.gutter:last-of-type {
border: none; border: none;
} }
::v-deep .el-dialog__header { ::v-deep .el-dialog{
background-color: #000; background: #1e1e1e;
color: #fff; border: 1px solid #ddd;
color: #ddd;
.el-dialog__title{ .el-dialog__title{
color:#fff; color:#fff;
} }
.el-input .el-input__inner{
background-color: transparent;
color: #ddd;
border: 1px solid #5e5e5e;
} }
::v-deep .el-dialog__body { .el-input.is-disabled .el-input__inner{
background-color: #000; background-color: #646464a1;
color: #fff; }
.el-form-item__label{
color: #dfdfdf
} }
::v-deep .el-dialog__footer {
background-color: #000;
color: #fff;
} }
} }
</style> </style>

View File

@ -2,6 +2,7 @@
<div class="none-dicom-viewer"> <div class="none-dicom-viewer">
<!-- tools --> <!-- tools -->
<div class="tools-wrapper"> <div class="tools-wrapper">
<div class="tools-left">
<!-- 布局 --> <!-- 布局 -->
<div class="tool-item" :title="$t('trials:reading:button:layout')"> <div class="tool-item" :title="$t('trials:reading:button:layout')">
<el-dropdown @command="handleCommand"> <el-dropdown @command="handleCommand">
@ -102,6 +103,11 @@
<svg-icon icon-class="refresh" class="svg-icon" /> <svg-icon icon-class="refresh" class="svg-icon" />
</div> </div>
</div> </div>
<div>
<el-button type="text" @click="previewConfig">{{ $t('trials:reading:button:customCfg') }}</el-button>
</div>
</div>
<!-- viewports --> <!-- viewports -->
<div class="viewports-wrapper"> <div class="viewports-wrapper">
<div class="grid-container" :style="gridStyle"> <div class="grid-container" :style="gridStyle">
@ -237,6 +243,16 @@
<el-button type="primary" @click="saveForm">{{ $t('common:button:save') }}</el-button> <el-button type="primary" @click="saveForm">{{ $t('common:button:save') }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
<el-dialog
v-if="personalConfigDialog.visible"
:visible.sync="personalConfigDialog.visible"
:close-on-click-modal="false"
:title="personalConfigDialog.title"
width="600px"
>
<Others />
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
@ -258,6 +274,7 @@ import hardcodedMetaDataProvider from './../js/hardcodedMetaDataProvider'
import registerWebImageLoader from './../js/registerWebImageLoader' import registerWebImageLoader from './../js/registerWebImageLoader'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import store from '@/store' import store from '@/store'
import Others from '@/views/trials/trials-panel/reading/dicoms/components/Others'
const { ViewportType } = Enums const { ViewportType } = Enums
const renderingEngineId = 'myRenderingEngine' const renderingEngineId = 'myRenderingEngine'
const { const {
@ -278,6 +295,7 @@ const {
const { MouseBindings, Events: toolsEvents } = csToolsEnums const { MouseBindings, Events: toolsEvents } = csToolsEnums
export default { export default {
name: 'ImageViewer', name: 'ImageViewer',
components: { Others },
props: { props: {
relatedStudyInfo: { relatedStudyInfo: {
type: Object, type: Object,
@ -310,6 +328,7 @@ export default {
imageType: ['image/jpeg', 'image/jpg', 'image/bmp', 'image/png'], imageType: ['image/jpeg', 'image/jpg', 'image/bmp', 'image/png'],
digitPlaces: 2, digitPlaces: 2,
dialogVisible: false, dialogVisible: false,
personalConfigDialog: { visible: false, title: this.$t('trials:reading:button:customCfg') }, //
form: { form: {
length: null, length: null,
annotationObj: {} annotationObj: {}
@ -1180,6 +1199,9 @@ export default {
// //
viewCD(id) { viewCD(id) {
this.$emit('previewCD', id) this.$emit('previewCD', id)
},
previewConfig() {
this.personalConfigDialog.visible = true
} }
} }
} }
@ -1194,11 +1216,17 @@ export default {
.tools-wrapper { .tools-wrapper {
height: 50px; height: 50px;
display: flex; display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center; align-items: center;
border-bottom: 1px solid #727272; border-bottom: 1px solid #727272;
color: #ddd; color: #ddd;
padding: 0 5px;
.tools-left {
flex: 1;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
.tool-item { .tool-item {
padding: 5px; padding: 5px;
margin: 0 5px; margin: 0 5px;
@ -1317,5 +1345,24 @@ export default {
} }
} }
} }
::v-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
}
}
} }
</style> </style>

View File

@ -239,6 +239,7 @@
<script> <script>
import { changeCalculationAnswer, getReadingReportEvaluation, submitDicomVisitTask, verifyVisitTaskQuestions, getQuestionCalculateRelation } from '@/api/trials' import { changeCalculationAnswer, getReadingReportEvaluation, submitDicomVisitTask, verifyVisitTaskQuestions, getQuestionCalculateRelation } from '@/api/trials'
import { setSkipReadingCache } from '@/api/reading' import { setSkipReadingCache } from '@/api/reading'
import { getAutoCutNextTask } from '@/api/user'
import const_ from '@/const/sign-code' import const_ from '@/const/sign-code'
import SignForm from '@/views/trials/components/newSignForm' import SignForm from '@/views/trials/components/newSignForm'
import PreviewFile from '@/components/PreviewFile/index' import PreviewFile from '@/components/PreviewFile/index'
@ -618,15 +619,16 @@ export default {
} }
}, },
// //
signConfirm(signInfo) { async signConfirm(signInfo) {
this.loading = true this.loading = true
try {
var params = { var params = {
data: { data: {
visitTaskId: this.visitTaskId visitTaskId: this.visitTaskId
}, },
signInfo: signInfo signInfo: signInfo
} }
submitDicomVisitTask(params).then(res => { const res = await submitDicomVisitTask(params)
if (res.IsSuccess) { if (res.IsSuccess) {
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(this.$t('common:message:savedSuccessfully'))
if (this.$refs['signForm']) { if (this.$refs['signForm']) {
@ -634,43 +636,39 @@ export default {
} }
this.signVisible = false this.signVisible = false
// window.location.reload()
// window.opener.postMessage('refreshTaskList', window.location)
// //
this.readingTaskState = 2 this.readingTaskState = 2
this.taskInfo.ReadingTaskState = 2 this.taskInfo.ReadingTaskState = 2
localStorage.setItem('taskInfo', JSON.stringify(this.taskInfo)) localStorage.setItem('taskInfo', JSON.stringify(this.taskInfo))
store.dispatch('noneDicomReview/setCurrentTaskState', 2) store.dispatch('noneDicomReview/setCurrentTaskState', 2)
// DicomEvent.$emit('setReadingState', 2)
window.opener.postMessage('refreshTaskList', window.location) window.opener.postMessage('refreshTaskList', window.location)
this.$confirm(this.$t('trials:oncologyReview:title:msg2'), { const res = await getAutoCutNextTask()
const isAutoTask = res.Result.AutoCutNextTask
if (isAutoTask) {
window.location.reload()
} else {
// ''
this.$confirm(this.$t('trials:readingReport:message:msg4'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true distinguishCancelAndClose: true
}) })
.then(() => { .then(() => {
// var token = getToken()
// var subjectCode = this.$router.currentRoute.query.subjectCode
// var subjectId = this.$router.currentRoute.query.subjectId
// var trialId = this.$router.currentRoute.query.trialId
// this.$router.push({
// path: `/readingPage?subjectCode=${subjectCode}&subjectId=${subjectId}&trialId=${trialId}&TokenKey=${token}`
// })
// DicomEvent.$emit('getNextTask')
window.location.reload() window.location.reload()
}) })
.catch(action => { .catch(action => {
// changeURLStatic('visitTaskId', this.visitTaskId)
}) })
} }
}
this.loading = false this.loading = false
}).catch(() => { } catch (e) {
console.log(e)
this.loading = false this.loading = false
if (this.$refs['signForm'] && this.$refs['signForm'].btnLoading) { if (this.$refs['signForm'] && this.$refs['signForm'].btnLoading) {
this.$refs['signForm'].btnLoading = false this.$refs['signForm'].btnLoading = false
} }
}) }
}, },
previewDicoms(task) { previewDicoms(task) {
var token = getToken() var token = getToken()
@ -822,6 +820,25 @@ export default {
height: 30px; height: 30px;
line-height: 40px; line-height: 40px;
} }
::v-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
}
}
} }
::v-deep .el-switch__label{ ::v-deep .el-switch__label{
color:#fff; color:#fff;