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