Compare commits
No commits in common. "3b8505ba3a8c6b498d8ee4919f826b218f55e111" and "9b63c2c82e0bcccda6b4c2f3eef12b7ec46f8dee" have entirely different histories.
3b8505ba3a
...
9b63c2c82e
|
|
@ -34,7 +34,6 @@ const getters = {
|
||||||
paymentHistoryQuery: state => state.financials.paymentHistoryQuery,
|
paymentHistoryQuery: state => state.financials.paymentHistoryQuery,
|
||||||
revenusQuery: state => state.financials.revenusQuery,
|
revenusQuery: state => state.financials.revenusQuery,
|
||||||
visitTaskList: state => state.reading.visitTaskList,
|
visitTaskList: state => state.reading.visitTaskList,
|
||||||
BodyPart: state => state.reading.BodyPart,
|
|
||||||
organList: state => state.reading.organList,
|
organList: state => state.reading.organList,
|
||||||
seriesStack: state => state.reading.seriesStack,
|
seriesStack: state => state.reading.seriesStack,
|
||||||
activeHangingAgreement: state => state.reading.activeHangingAgreement,
|
activeHangingAgreement: state => state.reading.activeHangingAgreement,
|
||||||
|
|
|
||||||
|
|
@ -32,8 +32,7 @@ const getDefaultState = () => {
|
||||||
lastCanvasTaskId: '',
|
lastCanvasTaskId: '',
|
||||||
imageQuality: null,
|
imageQuality: null,
|
||||||
imageQualityIssues: null,
|
imageQualityIssues: null,
|
||||||
currentLoadIns: [],
|
currentLoadIns: []
|
||||||
BodyPart: []
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function getQuestions(questions) {
|
function getQuestions(questions) {
|
||||||
|
|
@ -172,28 +171,6 @@ function getQuestionAnswer(questions, questionMark, answers) {
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function getBodyPart(bodyPart, other) {
|
|
||||||
if (!bodyPart && !other) return ''
|
|
||||||
var separator = ','
|
|
||||||
if (bodyPart.indexOf('|') > -1) {
|
|
||||||
separator = '|'
|
|
||||||
} else if (bodyPart.indexOf(',') > -1) {
|
|
||||||
separator = ','
|
|
||||||
} else if (bodyPart.indexOf(',') > -1) {
|
|
||||||
separator = ','
|
|
||||||
}
|
|
||||||
let BodyPart = {}
|
|
||||||
BodyPart.Bodypart = await Vue.prototype.$getBodyPart(Vue.prototype.$route.query.trialId)
|
|
||||||
var arr = bodyPart.split(separator)
|
|
||||||
var newArr = arr.map((i) => {
|
|
||||||
return Vue.prototype.$fd('Bodypart', i.trim(), 'Code', BodyPart, 'Name')
|
|
||||||
})
|
|
||||||
if (other) {
|
|
||||||
newArr.push(other)
|
|
||||||
}
|
|
||||||
newArr = newArr.filter(Boolean)
|
|
||||||
return newArr
|
|
||||||
}
|
|
||||||
// function getKeySeriesInfo(keyInstance, series) {
|
// function getKeySeriesInfo(keyInstance, series) {
|
||||||
// const obj = {}
|
// const obj = {}
|
||||||
// const set = new Set()
|
// const set = new Set()
|
||||||
|
|
@ -873,14 +850,6 @@ const actions = {
|
||||||
var studyList = []
|
var studyList = []
|
||||||
var keyImages = []
|
var keyImages = []
|
||||||
getReadingVisitStudyList(obj.trialId, obj.subjectVisitId, obj.visitTaskId).then(res => {
|
getReadingVisitStudyList(obj.trialId, obj.subjectVisitId, obj.visitTaskId).then(res => {
|
||||||
try {
|
|
||||||
res.Result.forEach(async item => {
|
|
||||||
let arr = await getBodyPart(item.BodyPartForEdit, item.BodyPartForEditOther)
|
|
||||||
state.BodyPart[item.StudyId] = arr
|
|
||||||
})
|
|
||||||
} catch (err) {
|
|
||||||
console.log(err)
|
|
||||||
}
|
|
||||||
const i = res.Result.findIndex(i => i.IsCriticalSequence)
|
const i = res.Result.findIndex(i => i.IsCriticalSequence)
|
||||||
if (i > -1) {
|
if (i > -1) {
|
||||||
const seriesList = res.Result[i].SeriesList && res.Result[i].SeriesList
|
const seriesList = res.Result[i].SeriesList && res.Result[i].SeriesList
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@
|
||||||
<el-table-column prop="Name" :label="$t('trials:self-attachment:table:fileName')" show-overflow-tooltip
|
<el-table-column prop="Name" :label="$t('trials:self-attachment:table:fileName')" show-overflow-tooltip
|
||||||
sortable="custom" />
|
sortable="custom" />
|
||||||
<el-table-column :label="$t('trials:self-attachment:table:AttachmentCount')" prop="AttachmentCount"
|
<el-table-column :label="$t('trials:self-attachment:table:AttachmentCount')" prop="AttachmentCount"
|
||||||
show-overflow-tooltip>
|
show-overflow-tooltip sortable="custom">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button type="text" @click.stop="openAttachment(scope.row, true)">{{ scope.row.AttachmentCount
|
<el-button type="text" @click.stop="openAttachment(scope.row, true)">{{ scope.row.AttachmentCount
|
||||||
}}</el-button>
|
}}</el-button>
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,7 @@
|
||||||
<el-tooltip class="item" effect="dark" :content="$t('trials:reading:button:clinicalData')" placement="bottom">
|
<el-tooltip class="item" effect="dark" :content="$t('trials:reading:button:clinicalData')" placement="bottom">
|
||||||
<svg-icon icon-class="documentation" class="svg-icon" />
|
<svg-icon icon-class="documentation" class="svg-icon" />
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</div>
|
|
||||||
<!-- 检查部位 -->
|
|
||||||
<div v-else-if="CriterionType == 19 || CriterionType == 20" class="info-cd" @click.stop="handleViewBP($event)">
|
|
||||||
<el-tooltip class="item" effect="dark" :content="$t('trials:reading:button:BodyPart')" placement="bottom">
|
|
||||||
<svg-icon icon-class="documentation" class="svg-icon" />
|
|
||||||
</el-tooltip>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- 切换访视 -->
|
<!-- 切换访视 -->
|
||||||
<div v-if="stack.imageRendered && isReadingTaskViewInOrder === 1" class="info-visit"
|
<div v-if="stack.imageRendered && isReadingTaskViewInOrder === 1" class="info-visit"
|
||||||
|
|
@ -40,8 +35,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="info-image">
|
<div class="info-image">
|
||||||
<div v-show="mousePosition.mo">
|
<div v-show="mousePosition.mo">
|
||||||
Pos: {{ mousePosition.x ? mousePosition.x.toFixed(0) : '' }}, {{ mousePosition.y ? mousePosition.y.toFixed(0) :
|
Pos: {{ mousePosition.x ? mousePosition.x.toFixed(0) : '' }}, {{ mousePosition.y ? mousePosition.y.toFixed(0) : '' }}
|
||||||
'' }}
|
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
v-if="(dicomInfo.modality === 'CT' || dicomInfo.modality === 'DR' || dicomInfo.modality === 'CR') && mousePosition.mo">
|
v-if="(dicomInfo.modality === 'CT' || dicomInfo.modality === 'DR' || dicomInfo.modality === 'CR') && mousePosition.mo">
|
||||||
|
|
@ -2010,13 +2004,8 @@ export default {
|
||||||
e.stopImmediatePropagation()
|
e.stopImmediatePropagation()
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
},
|
|
||||||
handleViewBP(e) {
|
|
||||||
DicomEvent.$emit('previewBP', this.series.studyId)
|
|
||||||
e.stopImmediatePropagation()
|
|
||||||
e.stopPropagation()
|
|
||||||
e.preventDefault()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -1,44 +1,57 @@
|
||||||
<template>
|
<template>
|
||||||
<div ref="container" style="width:100%;height:100%" class="dicom-container">
|
<div ref="container" style="width:100%;height:100%" class="dicom-container">
|
||||||
<!-- 访视阅片 -->
|
<!-- 访视阅片 -->
|
||||||
<div
|
<div v-if="readingCategory === 1 && (CriterionType === 7 || ((CriterionType === 1 || CriterionType === 0) && readingVersionEnum === 1)) " class="reading-wrapper">
|
||||||
v-if="readingCategory === 1 && (CriterionType === 7 || ((CriterionType === 1 || CriterionType === 0) && readingVersionEnum === 1))"
|
|
||||||
class="reading-wrapper">
|
|
||||||
<VisitReview :reading-tool="readingTool" />
|
<VisitReview :reading-tool="readingTool" />
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div v-else-if="(isReadingTaskViewInOrder === 1 || ((isReadingTaskViewInOrder !== 1) && isShow)) && readingCategory=== 1 && CriterionType !== 0" class="reading-wrapper">
|
||||||
v-else-if="(isReadingTaskViewInOrder === 1 || ((isReadingTaskViewInOrder !== 1) && isShow)) && readingCategory === 1 && CriterionType !== 0"
|
|
||||||
class="reading-wrapper">
|
|
||||||
<el-tabs v-model="activeName" v-loading="loading" :before-leave="beforeLeave">
|
<el-tabs v-model="activeName" v-loading="loading" :before-leave="beforeLeave">
|
||||||
<!-- 阅片 -->
|
<!-- 阅片 -->
|
||||||
<el-tab-pane :label="$t('trials:reading:tabTitle:review')" name="read">
|
<el-tab-pane :label="$t('trials:reading:tabTitle:review')" name="read">
|
||||||
<ReadPage v-if="tabs.includes('read')" :trial-id="trialId" :visit-task-id="visitTaskId"
|
<ReadPage
|
||||||
:subject-id="subjectId" :subject-code="subjectCode" :is-show="isShow"
|
v-if="tabs.includes('read')"
|
||||||
:question-form-change-state="questionFormChangeState" :question-form-change-num="questionFormChangeNum"
|
:trial-id="trialId"
|
||||||
|
:visit-task-id="visitTaskId"
|
||||||
|
:subject-id="subjectId"
|
||||||
|
:subject-code="subjectCode"
|
||||||
|
:is-show="isShow"
|
||||||
|
:question-form-change-state="questionFormChangeState"
|
||||||
|
:question-form-change-num="questionFormChangeNum"
|
||||||
:is-reading-show-subject-info="isReadingShowSubjectInfo"
|
:is-reading-show-subject-info="isReadingShowSubjectInfo"
|
||||||
:is-reading-task-view-in-order="isReadingTaskViewInOrder" :is-exists-clinical-data="isExistsClinicalData"
|
:is-reading-task-view-in-order="isReadingTaskViewInOrder"
|
||||||
:is-exists-no-dicom-file="isExistsNoDicomFile" :is-exists-manual="isExistsManual"
|
:is-exists-clinical-data="isExistsClinicalData"
|
||||||
:ise-c-r-f-show-in-dicom-reading="IseCRFShowInDicomReading" @previewCD="previewCD" />
|
:is-exists-no-dicom-file="isExistsNoDicomFile"
|
||||||
|
:is-exists-manual="isExistsManual"
|
||||||
|
:ise-c-r-f-show-in-dicom-reading="IseCRFShowInDicomReading"
|
||||||
|
@previewCD="previewCD"
|
||||||
|
/>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<!-- 报告 -->
|
<!-- 报告 -->
|
||||||
<el-tab-pane v-if="!IseCRFShowInDicomReading" :label="$t('trials:reading:tabTitle:report')" name="report">
|
<el-tab-pane v-if="!IseCRFShowInDicomReading" :label="$t('trials:reading:tabTitle:report')" name="report">
|
||||||
<ReportPage v-if="tabs.includes('report') && isShow" ref="reportPage"
|
<ReportPage v-if="tabs.includes('report') && isShow" ref="reportPage" :question-form-change-state="questionFormChangeState" :visit-task-id="visitTaskId" />
|
||||||
:question-form-change-state="questionFormChangeState" :visit-task-id="visitTaskId" />
|
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div v-else-if="(isReadingTaskViewInOrder === 1 || ((isReadingTaskViewInOrder !== 1) && isShow)) && readingCategory=== 1 && CriterionType === 0" class="reading-wrapper">
|
||||||
v-else-if="(isReadingTaskViewInOrder === 1 || ((isReadingTaskViewInOrder !== 1) && isShow)) && readingCategory === 1 && CriterionType === 0"
|
|
||||||
class="reading-wrapper">
|
|
||||||
<el-tabs v-model="activeName" v-loading="loading" :before-leave="beforeLeaveCustomize">
|
<el-tabs v-model="activeName" v-loading="loading" :before-leave="beforeLeaveCustomize">
|
||||||
<!-- 阅片 -->
|
<!-- 阅片 -->
|
||||||
<el-tab-pane :label="$t('trials:reading:tabTitle:review')" name="read">
|
<el-tab-pane :label="$t('trials:reading:tabTitle:review')" name="read">
|
||||||
<CustomizeReadPage v-if="tabs.includes('read')" :trial-id="trialId"
|
<CustomizeReadPage
|
||||||
:trial-reading-criterion-id="TrialReadingCriterionId" :visit-task-id="visitTaskId" :subject-id="subjectId"
|
v-if="tabs.includes('read')"
|
||||||
:subject-code="subjectCode" :is-show="isShow" :is-reading-show-subject-info="isReadingShowSubjectInfo"
|
:trial-id="trialId"
|
||||||
|
:trial-reading-criterion-id="TrialReadingCriterionId"
|
||||||
|
:visit-task-id="visitTaskId"
|
||||||
|
:subject-id="subjectId"
|
||||||
|
:subject-code="subjectCode"
|
||||||
|
:is-show="isShow"
|
||||||
|
:is-reading-show-subject-info="isReadingShowSubjectInfo"
|
||||||
:is-reading-task-view-in-order="isReadingTaskViewInOrder"
|
:is-reading-task-view-in-order="isReadingTaskViewInOrder"
|
||||||
:ise-c-r-f-show-in-dicom-reading="IseCRFShowInDicomReading" :is-exists-clinical-data="isExistsClinicalData"
|
:ise-c-r-f-show-in-dicom-reading="IseCRFShowInDicomReading"
|
||||||
:is-exists-no-dicom-file="isExistsNoDicomFile" :is-exists-manual="isExistsManual" @previewCD="previewCD" />
|
:is-exists-clinical-data="isExistsClinicalData"
|
||||||
|
:is-exists-no-dicom-file="isExistsNoDicomFile"
|
||||||
|
:is-exists-manual="isExistsManual"
|
||||||
|
@previewCD="previewCD"
|
||||||
|
/>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<!-- 报告 -->
|
<!-- 报告 -->
|
||||||
<el-tab-pane v-if="!IseCRFShowInDicomReading" :label="$t('trials:reading:tabTitle:report')" name="report">
|
<el-tab-pane v-if="!IseCRFShowInDicomReading" :label="$t('trials:reading:tabTitle:report')" name="report">
|
||||||
|
|
@ -47,40 +60,70 @@
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
<!-- 全局阅片 -->
|
<!-- 全局阅片 -->
|
||||||
<GlobalReview v-else-if="isShow && readingCategory === 2" :trial-id="trialId" :subject-id="subjectId"
|
<GlobalReview
|
||||||
:visit-task-id="visitTaskId" :reading-category="readingCategory" :subject-code="subjectCode"
|
v-else-if="isShow && readingCategory === 2"
|
||||||
:task-blind-name="taskBlindName" :is-reading-show-subject-info="isReadingShowSubjectInfo"
|
:trial-id="trialId"
|
||||||
|
:subject-id="subjectId"
|
||||||
|
:visit-task-id="visitTaskId"
|
||||||
|
:reading-category="readingCategory"
|
||||||
|
:subject-code="subjectCode"
|
||||||
|
:task-blind-name="taskBlindName"
|
||||||
|
:is-reading-show-subject-info="isReadingShowSubjectInfo"
|
||||||
:is-reading-show-previous-results="isReadingShowPreviousResults"
|
:is-reading-show-previous-results="isReadingShowPreviousResults"
|
||||||
:is-exists-clinical-data="isExistsClinicalData" />
|
:is-exists-clinical-data="isExistsClinicalData"
|
||||||
|
/>
|
||||||
<!-- 裁判阅片 -->
|
<!-- 裁判阅片 -->
|
||||||
<AdReview v-else-if="isShow && readingCategory === 4" :trial-id="trialId" :subject-id="subjectId"
|
<AdReview
|
||||||
:visit-task-id="visitTaskId" :reading-category="readingCategory" :subject-code="subjectCode"
|
v-else-if="isShow && readingCategory === 4"
|
||||||
:task-blind-name="taskBlindName" :is-reading-show-subject-info="isReadingShowSubjectInfo"
|
:trial-id="trialId"
|
||||||
|
:subject-id="subjectId"
|
||||||
|
:visit-task-id="visitTaskId"
|
||||||
|
:reading-category="readingCategory"
|
||||||
|
:subject-code="subjectCode"
|
||||||
|
:task-blind-name="taskBlindName"
|
||||||
|
:is-reading-show-subject-info="isReadingShowSubjectInfo"
|
||||||
:is-reading-show-previous-results="isReadingShowPreviousResults"
|
:is-reading-show-previous-results="isReadingShowPreviousResults"
|
||||||
:is-exists-clinical-data="isExistsClinicalData" />
|
:is-exists-clinical-data="isExistsClinicalData"
|
||||||
|
/>
|
||||||
|
|
||||||
<!-- 肿瘤学阅片 -->
|
<!-- 肿瘤学阅片 -->
|
||||||
<OncologyReview v-else-if="isShow && readingCategory === 5" :trial-id="trialId" :subject-id="subjectId"
|
<OncologyReview
|
||||||
:visit-task-id="visitTaskId" :reading-category="readingCategory" :subject-code="subjectCode"
|
v-else-if="isShow && readingCategory === 5"
|
||||||
:task-blind-name="taskBlindName" :is-reading-show-subject-info="isReadingShowSubjectInfo"
|
:trial-id="trialId"
|
||||||
|
:subject-id="subjectId"
|
||||||
|
:visit-task-id="visitTaskId"
|
||||||
|
:reading-category="readingCategory"
|
||||||
|
:subject-code="subjectCode"
|
||||||
|
:task-blind-name="taskBlindName"
|
||||||
|
:is-reading-show-subject-info="isReadingShowSubjectInfo"
|
||||||
:is-reading-show-previous-results="isReadingShowPreviousResults"
|
:is-reading-show-previous-results="isReadingShowPreviousResults"
|
||||||
:is-exists-clinical-data="isExistsClinicalData" />
|
:is-exists-clinical-data="isExistsClinicalData"
|
||||||
|
/>
|
||||||
|
|
||||||
<el-dialog :visible.sync="dialogVisible" :custom-class="isFullscreen ? 'full-dialog-container' : 'dialog-container'"
|
<el-dialog
|
||||||
:show-close="false" :close-on-click-modal="false" :fullscreen="isFullscreen">
|
:visible.sync="dialogVisible"
|
||||||
|
:custom-class="isFullscreen?'full-dialog-container':'dialog-container'"
|
||||||
|
:show-close="false"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
:fullscreen="isFullscreen"
|
||||||
|
>
|
||||||
<span slot="title" class="dialog-footer">
|
<span slot="title" class="dialog-footer">
|
||||||
<!-- 当前阅片任务存在临床数据,请查看。若已查看,请点击“确认” -->
|
<!-- 当前阅片任务存在临床数据,请查看。若已查看,请点击“确认” -->
|
||||||
<span v-if="!closeCDVisible">{{ $t('trials:reading:dagTitle:msg1') }}</span>
|
<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="isFullscreen ? 'exit-fullscreen' : 'fullscreen'"
|
<svg-icon :icon-class="isFullscreen?'exit-fullscreen':'fullscreen'" style="cursor: pointer;font-size: 20px;" @click="isFullscreen=!isFullscreen" />
|
||||||
style="cursor: pointer;font-size: 20px;" @click="isFullscreen = !isFullscreen" />
|
<svg-icon v-if="closeCDVisible" icon-class="dClose" style="cursor: pointer;font-size: 25px;margin-left: 10px;" @click="dialogVisible = false" />
|
||||||
<svg-icon v-if="closeCDVisible" icon-class="dClose" style="cursor: pointer;font-size: 25px;margin-left: 10px;"
|
|
||||||
@click="dialogVisible = 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;">
|
||||||
<ClinicalData v-if="dialogVisible" style="flex: 1" :trial-id="trialId" :subject-id="subjectId"
|
<ClinicalData
|
||||||
:visit-task-id="cdVisitTaskId" :is-reading-show-subject-info="isReadingShowSubjectInfo" />
|
v-if="dialogVisible"
|
||||||
|
style="flex: 1"
|
||||||
|
:trial-id="trialId"
|
||||||
|
:subject-id="subjectId"
|
||||||
|
:visit-task-id="cdVisitTaskId"
|
||||||
|
:is-reading-show-subject-info="isReadingShowSubjectInfo"
|
||||||
|
/>
|
||||||
<div v-if="!closeCDVisible" style="text-align:right">
|
<div v-if="!closeCDVisible" style="text-align:right">
|
||||||
<!-- 确认 -->
|
<!-- 确认 -->
|
||||||
<el-button type="primary" @click="handleConfirmCD">{{ $t('trials:reading:button:confirm') }}</el-button>
|
<el-button type="primary" @click="handleConfirmCD">{{ $t('trials:reading:button:confirm') }}</el-button>
|
||||||
|
|
@ -88,7 +131,12 @@
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<el-dialog :visible.sync="tipVisible" :show-close="false" :close-on-click-modal="false" width="500px">
|
<el-dialog
|
||||||
|
:visible.sync="tipVisible"
|
||||||
|
:show-close="false"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
width="500px"
|
||||||
|
>
|
||||||
<span slot="title" class="dialog-footer">
|
<span slot="title" class="dialog-footer">
|
||||||
<!-- 提示 -->
|
<!-- 提示 -->
|
||||||
{{ $t('trials:iRecist:warnning:msg44') }}
|
{{ $t('trials:iRecist:warnning:msg44') }}
|
||||||
|
|
@ -121,27 +169,7 @@
|
||||||
<el-button type="primary" @click="tipVisible = false">{{ $t('trials:reading:button:confirm') }}</el-button>
|
<el-button type="primary" @click="tipVisible = false">{{ $t('trials:reading:button:confirm') }}</el-button>
|
||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<el-dialog :visible.sync="dialogBodyPartVisible"
|
|
||||||
:custom-class="isFullscreen ? 'full-dialog-container' : 'dialog-container'" :show-close="false"
|
|
||||||
:close-on-click-modal="false" :fullscreen="isFullscreen">
|
|
||||||
<span slot="title" class="dialog-footer">
|
|
||||||
<!-- <span>{{ $t('trials:reading:dagTitle:msg1') }}</span> -->
|
|
||||||
<div style="position: absolute;right: 20px;top: 10px;">
|
|
||||||
<svg-icon :icon-class="isFullscreen ? 'exit-fullscreen' : 'fullscreen'"
|
|
||||||
style="cursor: pointer;font-size: 20px;" @click="isFullscreen = !isFullscreen" />
|
|
||||||
<svg-icon icon-class="dClose" style="cursor: pointer;font-size: 25px;margin-left: 10px;"
|
|
||||||
@click="dialogBodyPartVisible = false" />
|
|
||||||
</div>
|
|
||||||
</span>
|
|
||||||
<div style="height: 100%;margin:0;display: flex;flex-direction: column;">
|
|
||||||
<span>{{ Array.isArray(this.BodyPartForEdit) ? this.BodyPartForEdit.join("|") : '' }}</span>
|
|
||||||
<div style="text-align:right">
|
|
||||||
<!-- 确认 -->
|
|
||||||
<el-button type="primary" @click="dialogBodyPartVisible = false">{{ $t('trials:reading:button:confirm')
|
|
||||||
}}</el-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</el-dialog>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
|
@ -160,7 +188,6 @@ import store from '@/store'
|
||||||
// import { getToken } from '@/utils/auth'
|
// import { getToken } from '@/utils/auth'
|
||||||
import { changeURLStatic } from '@/utils/history.js'
|
import { changeURLStatic } from '@/utils/history.js'
|
||||||
import requestPoolManager from '@/utils/request-pool'
|
import requestPoolManager from '@/utils/request-pool'
|
||||||
import { mapGetters } from 'vuex'
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Reading',
|
name: 'Reading',
|
||||||
components: {
|
components: {
|
||||||
|
|
@ -208,14 +235,9 @@ export default {
|
||||||
tipVisible: false,
|
tipVisible: false,
|
||||||
closeCDVisible: false,
|
closeCDVisible: false,
|
||||||
cdVisitTaskId: '',
|
cdVisitTaskId: '',
|
||||||
readingVersionEnum: null,
|
readingVersionEnum: null
|
||||||
dialogBodyPartVisible: false,
|
|
||||||
BodyPartForEdit: []
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
|
||||||
...mapGetters(['BodyPart'])
|
|
||||||
},
|
|
||||||
mounted() {
|
mounted() {
|
||||||
requestPoolManager.resetRequestPool()
|
requestPoolManager.resetRequestPool()
|
||||||
requestPoolManager.setSortType(0)
|
requestPoolManager.setSortType(0)
|
||||||
|
|
@ -242,12 +264,6 @@ export default {
|
||||||
this.dialogVisible = true
|
this.dialogVisible = true
|
||||||
this.cdVisitTaskId = taskId
|
this.cdVisitTaskId = taskId
|
||||||
})
|
})
|
||||||
DicomEvent.$on('previewBP', (studyId) => {
|
|
||||||
console.log(this.BodyPart, 'this.BodyPart')
|
|
||||||
this.BodyPartForEdit = this.BodyPart[studyId]
|
|
||||||
this.isFullscreen = false
|
|
||||||
this.dialogBodyPartVisible = true
|
|
||||||
})
|
|
||||||
this.activeName = this.$router.currentRoute.query.tabName ? this.$router.currentRoute.query.tabName : 'read'
|
this.activeName = this.$router.currentRoute.query.tabName ? this.$router.currentRoute.query.tabName : 'read'
|
||||||
this.tabs.push(this.activeName)
|
this.tabs.push(this.activeName)
|
||||||
this.trialId = this.$router.currentRoute.query.trialId
|
this.trialId = this.$router.currentRoute.query.trialId
|
||||||
|
|
@ -498,115 +514,98 @@ export default {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
::v-deep.el-message-box__headerbtn {
|
::v-deep.el-message-box__headerbtn{
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
.dicom-container{
|
||||||
.dicom-container {
|
.reading-wrapper{
|
||||||
.reading-wrapper {
|
width: 100%;
|
||||||
width: 100%;
|
height: 100%;
|
||||||
height: 100%;
|
padding: 0 5px;
|
||||||
padding: 0 5px;
|
box-sizing: border-box;
|
||||||
|
background-color: #000;
|
||||||
|
::v-deep.el-tabs{
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
background-color: #000;
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
::v-deep.el-tabs {
|
flex-direction: column;
|
||||||
|
.el-tabs__item{
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.el-tabs__header{
|
||||||
|
height: 50px;
|
||||||
|
margin:0px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.el-tabs__content{
|
||||||
|
flex: 1;
|
||||||
|
margin:0px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.el-tabs__item{
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.el-tab-pane{
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
.el-tabs__item {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-tabs__header {
|
|
||||||
height: 50px;
|
|
||||||
margin: 0px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-tabs__content {
|
|
||||||
flex: 1;
|
|
||||||
margin: 0px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-tabs__item {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-tab-pane {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep.hot-keys-label {
|
}
|
||||||
color: #dfdfdf !important;
|
::v-deep.hot-keys-label{
|
||||||
}
|
color: #dfdfdf !important;
|
||||||
|
}
|
||||||
|
::v-deep.shortcut-key-input span{
|
||||||
|
color: #dfdfdf !important;
|
||||||
|
}
|
||||||
|
// ::v-deep .el-dialog{
|
||||||
|
// background: #1e1e1e;
|
||||||
|
// ::v-deep .el-dialog__body{
|
||||||
|
// padding: 10px;
|
||||||
|
// }
|
||||||
|
|
||||||
::v-deep.shortcut-key-input span {
|
// }
|
||||||
color: #dfdfdf !important;
|
::v-deep.el-dialog{
|
||||||
}
|
|
||||||
|
|
||||||
// ::v-deep .el-dialog{
|
|
||||||
// background: #1e1e1e;
|
|
||||||
// ::v-deep .el-dialog__body{
|
|
||||||
// padding: 10px;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// }
|
|
||||||
::v-deep.el-dialog {
|
|
||||||
background: #1e1e1e;
|
background: #1e1e1e;
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
|
.el-dialog__title{
|
||||||
.el-dialog__title {
|
color:#fff;
|
||||||
color: #fff;
|
|
||||||
}
|
}
|
||||||
|
.el-input .el-input__inner{
|
||||||
.el-input .el-input__inner {
|
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
border: 1px solid #5e5e5e;
|
border: 1px solid #5e5e5e;
|
||||||
}
|
}
|
||||||
|
.el-input.is-disabled .el-input__inner{
|
||||||
.el-input.is-disabled .el-input__inner {
|
|
||||||
background-color: #646464a1;
|
background-color: #646464a1;
|
||||||
}
|
}
|
||||||
|
.el-form-item__label{
|
||||||
.el-form-item__label {
|
|
||||||
color: #dfdfdf
|
color: #dfdfdf
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
::v-deep.dialog-container{
|
||||||
::v-deep.dialog-container {
|
|
||||||
margin-top: 50px !important;
|
margin-top: 50px !important;
|
||||||
width: 75%;
|
width:75%;
|
||||||
height: 80%;
|
height:80%;
|
||||||
}
|
}
|
||||||
|
::v-deep.el-dialog__body{
|
||||||
::v-deep.el-dialog__body {
|
padding: 20px;
|
||||||
padding: 20px;
|
height: calc(100% - 70px);
|
||||||
height: calc(100% - 70px);
|
}
|
||||||
}
|
.el-dialog__header{
|
||||||
|
|
||||||
.el-dialog__header {
|
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep .el-radio__input.is-disabled.is-checked .el-radio__inner {
|
::v-deep .el-radio__input.is-disabled.is-checked .el-radio__inner {
|
||||||
background-color: #428bca;
|
background-color: #428bca;
|
||||||
border-color: #428bca;
|
border-color: #428bca;
|
||||||
}
|
}
|
||||||
|
|
||||||
.full-dialog-container {
|
.full-dialog-container{
|
||||||
::v-deep.is-fullscreen .el-dialog__body {
|
::v-deep.is-fullscreen .el-dialog__body{
|
||||||
height: calc(100% - 70px);
|
height: calc(100% - 70px);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -147,6 +147,7 @@
|
||||||
prop="UserType"
|
prop="UserType"
|
||||||
:label="$t('trials:staff:table:userType')"
|
:label="$t('trials:staff:table:userType')"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
|
sortable
|
||||||
width="160"
|
width="160"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
|
|
|
||||||
|
|
@ -1,39 +1,60 @@
|
||||||
<template>
|
<template>
|
||||||
<el-form ref="subjectStatusForm" v-loading="loading" :model="form" :rules="rules" size="small" label-width="160px">
|
<el-form
|
||||||
|
ref="subjectStatusForm"
|
||||||
|
v-loading="loading"
|
||||||
|
:model="form"
|
||||||
|
:rules="rules"
|
||||||
|
size="small"
|
||||||
|
label-width="160px"
|
||||||
|
>
|
||||||
<div class="base-dialog-body">
|
<div class="base-dialog-body">
|
||||||
<!-- Status -->
|
<!-- Status -->
|
||||||
<el-form-item :label="$t('trials:subject:table:status')" prop="Status">
|
<el-form-item :label="$t('trials:subject:table:status')" prop="Status">
|
||||||
<el-radio-group v-model="form.Status" :disabled="originalStatus === 2" @change="handleChange">
|
<el-radio-group v-model="form.Status" :disabled="originalStatus === 2">
|
||||||
<el-radio v-for="item of $d.Subject_Visit_Status" :label="item.value" :key="item.id">
|
<el-radio v-for="item of $d.Subject_Visit_Status" :label="item.value" :key="item.id">{{item.label}}</el-radio>
|
||||||
{{ item.label }}</el-radio>
|
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- Out Visit Date -->
|
<!-- Out Visit Date -->
|
||||||
<el-form-item v-if="form.Status == 2" :label="$t('trials:subject:table:outVisitDate')" prop="VisitOverTime">
|
<el-form-item v-if="form.Status== 2" :label="$t('trials:subject:table:outVisitDate')" prop="VisitOverTime">
|
||||||
<el-date-picker v-model="form.VisitOverTime" type="date" :picker-options="pickerOption"
|
<el-date-picker
|
||||||
value-format="yyyy-MM-dd" format="yyyy-MM-dd" />
|
v-model="form.VisitOverTime"
|
||||||
|
type="date"
|
||||||
|
:picker-options="pickerOption"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
format="yyyy-MM-dd"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 末次访视 -->
|
<!-- 末次访视 -->
|
||||||
<el-form-item v-if="form.Status === 2" :label="$t('trials:subject:table:finalSubjectVisit')"
|
<el-form-item v-if="form.Status===2" :label="$t('trials:subject:table:finalSubjectVisit')" prop="FinalSubjectVisitId">
|
||||||
prop="FinalSubjectVisitId">
|
<el-select
|
||||||
<el-select v-model="form.FinalSubjectVisitId" clearable filterable style="width:100%"
|
v-model="form.FinalSubjectVisitId"
|
||||||
:disabled="originalStatus === 2">
|
clearable
|
||||||
<el-option v-for="item in subjectVisitOptions" :key="item.Id" :label="item.VisitName" :value="item.Id" />
|
filterable
|
||||||
|
style="width:100%"
|
||||||
|
:disabled="originalStatus === 2"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in subjectVisitOptions"
|
||||||
|
:key="item.Id"
|
||||||
|
:label="item.VisitName"
|
||||||
|
:value="item.Id"
|
||||||
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 结束访视的原因 -->
|
<!-- 结束访视的原因 -->
|
||||||
<el-form-item v-if="form.Status === 2" :label="$t('trials:subject:table:outVisitReason')" prop="Reason">
|
<el-form-item v-if="form.Status===2" :label="$t('trials:subject:table:outVisitReason')" prop="Reason">
|
||||||
<el-input v-model="form.Reason" type="textarea" autosize />
|
<el-input v-model="form.Reason" type="textarea" autosize />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 访视中止的原因 -->
|
|
||||||
<el-form-item v-if="form.Status === 3" :label="$t('trials:subject:table:outVisitReason')" prop="SuspendReason">
|
|
||||||
<el-input v-model="form.SuspendReason" type="textarea" autosize />
|
|
||||||
</el-form-item>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
|
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
|
||||||
<el-form-item style="text-align:right;">
|
<el-form-item style="text-align:right;">
|
||||||
<!-- 取消 -->
|
<!-- 取消 -->
|
||||||
<el-button :disabled="btnLoading" size="small" type="primary" @click="handleCancel">
|
<el-button
|
||||||
|
:disabled="btnLoading"
|
||||||
|
size="small"
|
||||||
|
type="primary"
|
||||||
|
@click="handleCancel"
|
||||||
|
>
|
||||||
{{ $t('common:button:cancel') }}
|
{{ $t('common:button:cancel') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button size="small" type="primary" :loading="btnLoading" @click="handleSave">
|
<el-button size="small" type="primary" :loading="btnLoading" @click="handleSave">
|
||||||
|
|
@ -62,14 +83,12 @@ export default {
|
||||||
OutEnrollmentTime: '',
|
OutEnrollmentTime: '',
|
||||||
Reason: '',
|
Reason: '',
|
||||||
VisitOverTime: '',
|
VisitOverTime: '',
|
||||||
FinalSubjectVisitId: '',
|
FinalSubjectVisitId: ''
|
||||||
SuspendReason: ''
|
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
OutEnrollmentTime: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }],
|
OutEnrollmentTime: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }],
|
||||||
FinalSubjectVisitId: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }],
|
FinalSubjectVisitId: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }],
|
||||||
Reason: [{ max: 500, message: `${this.$t('common:ruleMessage:maxLength')} 500` }],
|
Reason: [{ max: 500, message: `${this.$t('common:ruleMessage:maxLength')} 500` }],
|
||||||
SuspendReason: [{ max: 500, message: `${this.$t('common:ruleMessage:maxLength')} 500` }],
|
|
||||||
VisitOverTime: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }]
|
VisitOverTime: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }]
|
||||||
},
|
},
|
||||||
pickerOption: {
|
pickerOption: {
|
||||||
|
|
@ -89,9 +108,6 @@ export default {
|
||||||
this.initForm()
|
this.initForm()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleChange() {
|
|
||||||
if (this.form.Status !== 3) this.form.SuspendReason = ''
|
|
||||||
},
|
|
||||||
async initForm() {
|
async initForm() {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
const { Result } = await getSubjectVisitSelectOptions(this.data.Id)
|
const { Result } = await getSubjectVisitSelectOptions(this.data.Id)
|
||||||
|
|
|
||||||
|
|
@ -356,14 +356,7 @@ export default {
|
||||||
} else {
|
} else {
|
||||||
this.searchData.Asc = false
|
this.searchData.Asc = false
|
||||||
}
|
}
|
||||||
let prop = column.prop
|
this.searchData.SortField = column.prop
|
||||||
if (prop === 'TotalImageSizeStr') {
|
|
||||||
prop = 'TotalImageSize'
|
|
||||||
}
|
|
||||||
if (prop === 'TotalReadingImageSizeStr') {
|
|
||||||
prop = 'TotalReadingImageSize'
|
|
||||||
}
|
|
||||||
this.searchData.SortField = prop
|
|
||||||
this.searchData.PageIndex = 1
|
this.searchData.PageIndex = 1
|
||||||
this.getList()
|
this.getList()
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@
|
||||||
<el-table-column prop="BodyPartForEdit" :label="$t('trials:uploadedDicoms:table:bodyPart')" min-width="100"
|
<el-table-column prop="BodyPartForEdit" :label="$t('trials:uploadedDicoms:table:bodyPart')" min-width="100"
|
||||||
show-overflow-tooltip sortable>
|
show-overflow-tooltip sortable>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ getBodyPart(scope.row.BodyPartForEdit, scope.row.BodyPartForEditOther) }}
|
{{ getBodyPart(scope.row.BodyPartForEdit) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 序列数量 -->
|
<!-- 序列数量 -->
|
||||||
|
|
@ -499,7 +499,7 @@
|
||||||
<!-- 检查部位 -->
|
<!-- 检查部位 -->
|
||||||
<el-form-item :label="$t('trials:audit:table:bodyPart')" prop="BodyPartForEdit" :rules="[
|
<el-form-item :label="$t('trials:audit:table:bodyPart')" prop="BodyPartForEdit" :rules="[
|
||||||
{
|
{
|
||||||
required: studyForm.BodyPartForEditOther ? false : true,
|
required: true,
|
||||||
message: $t('common:ruleMessage:specify'),
|
message: $t('common:ruleMessage:specify'),
|
||||||
trigger: 'blur',
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
|
|
@ -508,8 +508,6 @@
|
||||||
<el-checkbox v-for="bodyPart in trialBodyPartTypes" :key="bodyPart" :label="bodyPart">{{
|
<el-checkbox v-for="bodyPart in trialBodyPartTypes" :key="bodyPart" :label="bodyPart">{{
|
||||||
$fd('Bodypart', bodyPart, 'Code', BodyPart, 'Name')
|
$fd('Bodypart', bodyPart, 'Code', BodyPart, 'Name')
|
||||||
}}</el-checkbox>
|
}}</el-checkbox>
|
||||||
<el-input :placeholder="$t('trials:audit:placeholder:BodyPartForEditOther')"
|
|
||||||
v-model="studyForm.BodyPartForEditOther" style="width:150px;margin-left: 30px;"></el-input>
|
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 序列数量 -->
|
<!-- 序列数量 -->
|
||||||
|
|
@ -606,7 +604,6 @@ export default {
|
||||||
BodyPartForEdit: [],
|
BodyPartForEdit: [],
|
||||||
SeriesCount: null,
|
SeriesCount: null,
|
||||||
StudyTime: '',
|
StudyTime: '',
|
||||||
BodyPartForEditOther: ''
|
|
||||||
},
|
},
|
||||||
uploadQueues: dicomStore.studyList, // 上传队列
|
uploadQueues: dicomStore.studyList, // 上传队列
|
||||||
selectArr: [], // 已勾选待上传文件
|
selectArr: [], // 已勾选待上传文件
|
||||||
|
|
@ -712,7 +709,6 @@ export default {
|
||||||
modality: this.studyForm.Modality,
|
modality: this.studyForm.Modality,
|
||||||
bodyPart: this.studyForm.BodyPart,
|
bodyPart: this.studyForm.BodyPart,
|
||||||
StudyName: this.studyForm.StudyName,
|
StudyName: this.studyForm.StudyName,
|
||||||
BodyPartForEditOther: this.studyForm.BodyPartForEditOther,
|
|
||||||
}
|
}
|
||||||
updateModality(this.trialId, params)
|
updateModality(this.trialId, params)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
|
|
@ -1445,7 +1441,7 @@ export default {
|
||||||
seriesInstanceUid: v.seriesUid,
|
seriesInstanceUid: v.seriesUid,
|
||||||
SOPClassUID: o.SOPClassUID,
|
SOPClassUID: o.SOPClassUID,
|
||||||
TransferSytaxUID: o.TransferSytaxUID,
|
TransferSytaxUID: o.TransferSytaxUID,
|
||||||
MediaStorageSOPInstanceUID: o.MediaStorageSOPInstanceUID,
|
MediaStorageSOPInstanceUID:o.MediaStorageSOPInstanceUID,
|
||||||
MediaStorageSOPClassUID: o.MediaStorageSOPClassUID,
|
MediaStorageSOPClassUID: o.MediaStorageSOPClassUID,
|
||||||
sopInstanceUid: o.instanceUid,
|
sopInstanceUid: o.instanceUid,
|
||||||
instanceNumber: o.instanceNumber,
|
instanceNumber: o.instanceNumber,
|
||||||
|
|
@ -1534,7 +1530,7 @@ export default {
|
||||||
seriesInstanceUid: v.seriesUid,
|
seriesInstanceUid: v.seriesUid,
|
||||||
SOPClassUID: o.SOPClassUID,
|
SOPClassUID: o.SOPClassUID,
|
||||||
TransferSytaxUID: o.TransferSytaxUID,
|
TransferSytaxUID: o.TransferSytaxUID,
|
||||||
MediaStorageSOPInstanceUID: o.MediaStorageSOPInstanceUID,
|
MediaStorageSOPInstanceUID:o.MediaStorageSOPInstanceUID,
|
||||||
MediaStorageSOPClassUID: o.MediaStorageSOPClassUID,
|
MediaStorageSOPClassUID: o.MediaStorageSOPClassUID,
|
||||||
sopInstanceUid: o.instanceUid,
|
sopInstanceUid: o.instanceUid,
|
||||||
instanceNumber: o.instanceNumber,
|
instanceNumber: o.instanceNumber,
|
||||||
|
|
@ -1871,8 +1867,8 @@ export default {
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getBodyPart(bodyPart, other) {
|
getBodyPart(bodyPart) {
|
||||||
if (!bodyPart && !other) return ''
|
if (!bodyPart) return ''
|
||||||
var separator = ','
|
var separator = ','
|
||||||
if (bodyPart.indexOf('|') > -1) {
|
if (bodyPart.indexOf('|') > -1) {
|
||||||
separator = '|'
|
separator = '|'
|
||||||
|
|
@ -1885,10 +1881,6 @@ export default {
|
||||||
var newArr = arr.map((i) => {
|
var newArr = arr.map((i) => {
|
||||||
return this.$fd('Bodypart', i.trim(), 'Code', this.BodyPart, 'Name')
|
return this.$fd('Bodypart', i.trim(), 'Code', this.BodyPart, 'Name')
|
||||||
})
|
})
|
||||||
if (other) {
|
|
||||||
newArr.push(other)
|
|
||||||
}
|
|
||||||
newArr = newArr.filter(Boolean)
|
|
||||||
return newArr.join(' | ')
|
return newArr.join(' | ')
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
<!-- 检查部位 -->
|
<!-- 检查部位 -->
|
||||||
<el-table-column prop="BodyPart" :label="$t('trials:uploadNonDicoms:table:bodyPart')" sortable>
|
<el-table-column prop="BodyPart" :label="$t('trials:uploadNonDicoms:table:bodyPart')" sortable>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ getBodyPart(scope.row.BodyPart, scope.row.BodyPartForEditOther) }}
|
{{ getBodyPart(scope.row.BodyPart) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 文件 -->
|
<!-- 文件 -->
|
||||||
|
|
@ -163,7 +163,7 @@
|
||||||
<!-- 检查部位 -->
|
<!-- 检查部位 -->
|
||||||
<el-form-item :label="$t('trials:uploadNonDicoms:table:bodyPart')" prop="BodyParts" :rules="[
|
<el-form-item :label="$t('trials:uploadNonDicoms:table:bodyPart')" prop="BodyParts" :rules="[
|
||||||
{
|
{
|
||||||
required: form.BodyPartForEditOther ? false : true,
|
required: true,
|
||||||
message: $t('common:ruleMessage:specify'),
|
message: $t('common:ruleMessage:specify'),
|
||||||
trigger: 'blur',
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
|
|
@ -172,8 +172,6 @@
|
||||||
<el-checkbox v-for="bodyPart in trialBodyPartTypes" :key="bodyPart" :label="bodyPart">{{
|
<el-checkbox v-for="bodyPart in trialBodyPartTypes" :key="bodyPart" :label="bodyPart">{{
|
||||||
$fd('Bodypart', bodyPart, 'Code', BodyPart, 'Name')
|
$fd('Bodypart', bodyPart, 'Code', BodyPart, 'Name')
|
||||||
}}</el-checkbox>
|
}}</el-checkbox>
|
||||||
<el-input :placeholder="$t('trials:audit:placeholder:BodyPartForEditOther')"
|
|
||||||
v-model="form.BodyPartForEditOther" style="width:150px;margin-left: 30px;"></el-input>
|
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 检查日期 -->
|
<!-- 检查日期 -->
|
||||||
|
|
@ -383,7 +381,6 @@ export default {
|
||||||
Modality: '',
|
Modality: '',
|
||||||
ImageDate: '',
|
ImageDate: '',
|
||||||
StudyName: '',
|
StudyName: '',
|
||||||
BodyPartForEditOther: ""
|
|
||||||
},
|
},
|
||||||
pickerOption: {
|
pickerOption: {
|
||||||
disabledDate: (time) => {
|
disabledDate: (time) => {
|
||||||
|
|
@ -487,13 +484,12 @@ export default {
|
||||||
this.form.StudyName = ''
|
this.form.StudyName = ''
|
||||||
this.form.ImageDate = ''
|
this.form.ImageDate = ''
|
||||||
this.form.BodyParts = []
|
this.form.BodyParts = []
|
||||||
this.form.BodyPartForEditOther = ''
|
|
||||||
this.dialogVisible = true
|
this.dialogVisible = true
|
||||||
},
|
},
|
||||||
// 打开比编辑弹框,并初始化数据
|
// 打开比编辑弹框,并初始化数据
|
||||||
handleEdit(row) {
|
handleEdit(row) {
|
||||||
this.title = this.$t('trials:uploadNonDicoms:dialogTitle:edit')
|
this.title = this.$t('trials:uploadNonDicoms:dialogTitle:edit')
|
||||||
const { CodeView, Id, BodyPart, Modality, ImageDate, StudyName, BodyPartForEditOther } = {
|
const { CodeView, Id, BodyPart, Modality, ImageDate, StudyName } = {
|
||||||
...row,
|
...row,
|
||||||
}
|
}
|
||||||
this.form.CodeView = CodeView
|
this.form.CodeView = CodeView
|
||||||
|
|
@ -503,7 +499,6 @@ export default {
|
||||||
this.form.StudyName = StudyName
|
this.form.StudyName = StudyName
|
||||||
this.form.ImageDate = ImageDate
|
this.form.ImageDate = ImageDate
|
||||||
this.form.BodyParts = this.form.BodyPart.split(', ')
|
this.form.BodyParts = this.form.BodyPart.split(', ')
|
||||||
this.form.BodyPartForEditOther = BodyPartForEditOther
|
|
||||||
this.dialogVisible = true
|
this.dialogVisible = true
|
||||||
},
|
},
|
||||||
// 保存非Dicom检查信息
|
// 保存非Dicom检查信息
|
||||||
|
|
@ -1023,8 +1018,8 @@ export default {
|
||||||
})
|
})
|
||||||
window.open(routeData.href, '_blank')
|
window.open(routeData.href, '_blank')
|
||||||
},
|
},
|
||||||
getBodyPart(bodyPart, other) {
|
getBodyPart(bodyPart) {
|
||||||
if (!bodyPart && !other) return ''
|
if (!bodyPart) return ''
|
||||||
var separator = ','
|
var separator = ','
|
||||||
if (bodyPart.indexOf('|') > -1) {
|
if (bodyPart.indexOf('|') > -1) {
|
||||||
separator = '|'
|
separator = '|'
|
||||||
|
|
@ -1037,10 +1032,6 @@ export default {
|
||||||
var newArr = arr.map((i) => {
|
var newArr = arr.map((i) => {
|
||||||
return this.$fd('Bodypart', i.trim(), 'Code', this.BodyPart, 'Name')
|
return this.$fd('Bodypart', i.trim(), 'Code', this.BodyPart, 'Name')
|
||||||
})
|
})
|
||||||
if (other) {
|
|
||||||
newArr.push(other)
|
|
||||||
}
|
|
||||||
newArr = newArr.filter(Boolean)
|
|
||||||
return newArr.join(' | ')
|
return newArr.join(' | ')
|
||||||
},
|
},
|
||||||
// 设置已删除序列行样式
|
// 设置已删除序列行样式
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@
|
||||||
<i class="el-icon-warning" style="color: #f44336; font-size: 16px" />
|
<i class="el-icon-warning" style="color: #f44336; font-size: 16px" />
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<span v-else>{{
|
<span v-else>{{
|
||||||
getBodyPart(scope.row.BodyPartForEdit, scope.row.BodyPartForEditOther)
|
getBodyPart(scope.row.BodyPartForEdit)
|
||||||
}}</span>
|
}}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
@ -284,7 +284,7 @@
|
||||||
<!-- 检查部位 -->
|
<!-- 检查部位 -->
|
||||||
<el-table-column prop="BodyPart" :label="$t('trials:audit:table:nonDicomsBodypart')" sortable>
|
<el-table-column prop="BodyPart" :label="$t('trials:audit:table:nonDicomsBodypart')" sortable>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ getBodyPart(scope.row.BodyPart, scope.row.BodyPartForEditOther) }}
|
{{ getBodyPart(scope.row.BodyPart) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 文件 -->
|
<!-- 文件 -->
|
||||||
|
|
@ -635,7 +635,7 @@
|
||||||
<!-- 检查部位 -->
|
<!-- 检查部位 -->
|
||||||
<el-form-item :label="$t('trials:audit:table:bodyPart')" prop="BodyPartForEdit" :rules="[
|
<el-form-item :label="$t('trials:audit:table:bodyPart')" prop="BodyPartForEdit" :rules="[
|
||||||
{
|
{
|
||||||
required: studyForm.BodyPartForEditOther ? false : true,
|
required: true,
|
||||||
message: $t('common:ruleMessage:specify'),
|
message: $t('common:ruleMessage:specify'),
|
||||||
trigger: 'blur',
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
|
|
@ -644,8 +644,6 @@
|
||||||
<el-checkbox v-for="bodyPart in trialBodyPartTypes" :key="bodyPart" :label="bodyPart">{{
|
<el-checkbox v-for="bodyPart in trialBodyPartTypes" :key="bodyPart" :label="bodyPart">{{
|
||||||
$fd('Bodypart', bodyPart, 'Code', BodyPart, 'Name')
|
$fd('Bodypart', bodyPart, 'Code', BodyPart, 'Name')
|
||||||
}}</el-checkbox>
|
}}</el-checkbox>
|
||||||
<el-input :placeholder="$t('trials:audit:placeholder:BodyPartForEditOther')"
|
|
||||||
v-model="studyForm.BodyPartForEditOther" style="width:150px;margin-left: 30px;"></el-input>
|
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 序列数量 -->
|
<!-- 序列数量 -->
|
||||||
|
|
@ -744,7 +742,7 @@
|
||||||
<!-- 检查部位 -->
|
<!-- 检查部位 -->
|
||||||
<el-form-item :label="$t('trials:audit:table:nonDicomsBodypart')" prop="BodyParts" :rules="[
|
<el-form-item :label="$t('trials:audit:table:nonDicomsBodypart')" prop="BodyParts" :rules="[
|
||||||
{
|
{
|
||||||
required: noneDicomForm.BodyPartForEditOther ? false : true,
|
required: true,
|
||||||
message: $t('common:ruleMessage:specify'),
|
message: $t('common:ruleMessage:specify'),
|
||||||
trigger: 'blur',
|
trigger: 'blur',
|
||||||
},
|
},
|
||||||
|
|
@ -753,8 +751,6 @@
|
||||||
<el-checkbox v-for="bodyPart in trialBodyPartTypes" :key="bodyPart" :label="bodyPart">{{
|
<el-checkbox v-for="bodyPart in trialBodyPartTypes" :key="bodyPart" :label="bodyPart">{{
|
||||||
$fd('Bodypart', bodyPart, 'Code', BodyPart, 'Name')
|
$fd('Bodypart', bodyPart, 'Code', BodyPart, 'Name')
|
||||||
}}</el-checkbox>
|
}}</el-checkbox>
|
||||||
<el-input :placeholder="$t('trials:audit:placeholder:BodyPartForEditOther')"
|
|
||||||
v-model="noneDicomForm.BodyPartForEditOther" style="width:150px;margin-left: 30px;"></el-input>
|
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 检查日期 -->
|
<!-- 检查日期 -->
|
||||||
|
|
@ -1022,8 +1018,7 @@ export default {
|
||||||
BodyPartForEdit: [],
|
BodyPartForEdit: [],
|
||||||
SeriesCount: null,
|
SeriesCount: null,
|
||||||
StudyTime: '',
|
StudyTime: '',
|
||||||
ModifyReason: '',
|
ModifyReason: ''
|
||||||
BodyPartForEditOther: ''
|
|
||||||
},
|
},
|
||||||
currentQCRow: {},
|
currentQCRow: {},
|
||||||
isAudit: false, // 审核过之后功能按钮禁用标识
|
isAudit: false, // 审核过之后功能按钮禁用标识
|
||||||
|
|
@ -1042,8 +1037,7 @@ export default {
|
||||||
Modality: '',
|
Modality: '',
|
||||||
ImageDate: '',
|
ImageDate: '',
|
||||||
StudyName: '',
|
StudyName: '',
|
||||||
ModifyReason: '',
|
ModifyReason: ''
|
||||||
BodyPartForEditOther: ''
|
|
||||||
},
|
},
|
||||||
subjectClinicalData: {},
|
subjectClinicalData: {},
|
||||||
moment,
|
moment,
|
||||||
|
|
@ -2161,9 +2155,7 @@ export default {
|
||||||
this.$set(this.studyForm, 'Modality', row.ModalityForEdit)
|
this.$set(this.studyForm, 'Modality', row.ModalityForEdit)
|
||||||
// this.studyForm.Modality = row.ModalityForEdit
|
// this.studyForm.Modality = row.ModalityForEdit
|
||||||
this.studyForm.BodyPartForEdit = bodyPart
|
this.studyForm.BodyPartForEdit = bodyPart
|
||||||
// this.studyForm.BodyPartForEditOther = BodyPartForEditOther
|
|
||||||
this.$set(this.studyForm, 'ModifyReason', '')
|
this.$set(this.studyForm, 'ModifyReason', '')
|
||||||
console.log(this.studyForm, 'this.studyForm')
|
|
||||||
},
|
},
|
||||||
// 更新拍片部位/拍片类型信息
|
// 更新拍片部位/拍片类型信息
|
||||||
handleUpdateStudyInfo() {
|
handleUpdateStudyInfo() {
|
||||||
|
|
@ -2179,7 +2171,6 @@ export default {
|
||||||
modality: this.studyForm.Modality,
|
modality: this.studyForm.Modality,
|
||||||
bodyPart: this.studyForm.BodyPart,
|
bodyPart: this.studyForm.BodyPart,
|
||||||
StudyName: this.studyForm.StudyName,
|
StudyName: this.studyForm.StudyName,
|
||||||
BodyPartForEditOther: this.studyForm.BodyPartForEditOther,
|
|
||||||
}
|
}
|
||||||
if (this.isAuditToEdit) {
|
if (this.isAuditToEdit) {
|
||||||
this.btnLoading = false
|
this.btnLoading = false
|
||||||
|
|
@ -2215,7 +2206,6 @@ export default {
|
||||||
ModifyReason: this.studyForm.ModifyReason,
|
ModifyReason: this.studyForm.ModifyReason,
|
||||||
Modality: this.studyForm.Modality,
|
Modality: this.studyForm.Modality,
|
||||||
BodyPart: this.studyForm.BodyPart,
|
BodyPart: this.studyForm.BodyPart,
|
||||||
BodyPartForEditOther: this.studyForm.BodyPartForEditOther,
|
|
||||||
},
|
},
|
||||||
signInfo
|
signInfo
|
||||||
}
|
}
|
||||||
|
|
@ -2251,7 +2241,7 @@ export default {
|
||||||
|
|
||||||
// 打开非Dicom信息编辑框
|
// 打开非Dicom信息编辑框
|
||||||
handleEditNoneDicomInfo(row) {
|
handleEditNoneDicomInfo(row) {
|
||||||
const { CodeView, Id, BodyPart, Modality, ImageDate, StudyName, BodyPartForEditOther } = {
|
const { CodeView, Id, BodyPart, Modality, ImageDate, StudyName } = {
|
||||||
...row,
|
...row,
|
||||||
}
|
}
|
||||||
this.noneDicomForm.StudyName = StudyName
|
this.noneDicomForm.StudyName = StudyName
|
||||||
|
|
@ -2262,7 +2252,6 @@ export default {
|
||||||
this.noneDicomForm.ImageDate = ImageDate
|
this.noneDicomForm.ImageDate = ImageDate
|
||||||
this.noneDicomForm.BodyParts = BodyPart.split(', ')
|
this.noneDicomForm.BodyParts = BodyPart.split(', ')
|
||||||
this.noneDicomForm.ModifyReason = null
|
this.noneDicomForm.ModifyReason = null
|
||||||
this.noneDicomForm.BodyPartForEditOther = BodyPartForEditOther
|
|
||||||
this.editNoneDicomVisible = true
|
this.editNoneDicomVisible = true
|
||||||
},
|
},
|
||||||
// 更新非Dicom部位/拍片类型信息
|
// 更新非Dicom部位/拍片类型信息
|
||||||
|
|
@ -2445,8 +2434,8 @@ export default {
|
||||||
})
|
})
|
||||||
this.open = window.open(routeData.href, '_blank')
|
this.open = window.open(routeData.href, '_blank')
|
||||||
},
|
},
|
||||||
getBodyPart(bodyPart, other) {
|
getBodyPart(bodyPart) {
|
||||||
if (!bodyPart && !other) return ''
|
if (!bodyPart) return ''
|
||||||
var separator = ','
|
var separator = ','
|
||||||
if (bodyPart.indexOf('|') > -1) {
|
if (bodyPart.indexOf('|') > -1) {
|
||||||
separator = '|'
|
separator = '|'
|
||||||
|
|
@ -2459,10 +2448,6 @@ export default {
|
||||||
var newArr = arr.map((i) => {
|
var newArr = arr.map((i) => {
|
||||||
return this.$fd('Bodypart', i.trim(), 'Code', this.BodyPart, 'Name')
|
return this.$fd('Bodypart', i.trim(), 'Code', this.BodyPart, 'Name')
|
||||||
})
|
})
|
||||||
if (other) {
|
|
||||||
newArr.push(other)
|
|
||||||
}
|
|
||||||
newArr = newArr.filter(Boolean)
|
|
||||||
return newArr.join(' | ')
|
return newArr.join(' | ')
|
||||||
},
|
},
|
||||||
openManuals() {
|
openManuals() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue