Compare commits
	
		
			4 Commits 
		
	
	
		
			9b63c2c82e
			...
			3b8505ba3a
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
								 | 
						3b8505ba3a | |
| 
							
							
								
								 | 
						fe8398df9d | |
| 
							
							
								
								 | 
						27caa4ff77 | |
| 
							
							
								
								 | 
						3b96a5326e | 
| 
						 | 
					@ -34,6 +34,7 @@ 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,7 +32,8 @@ const getDefaultState = () => {
 | 
				
			||||||
    lastCanvasTaskId: '',
 | 
					    lastCanvasTaskId: '',
 | 
				
			||||||
    imageQuality: null,
 | 
					    imageQuality: null,
 | 
				
			||||||
    imageQualityIssues: null,
 | 
					    imageQualityIssues: null,
 | 
				
			||||||
    currentLoadIns: []
 | 
					    currentLoadIns: [],
 | 
				
			||||||
 | 
					    BodyPart: []
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
function getQuestions(questions) {
 | 
					function getQuestions(questions) {
 | 
				
			||||||
| 
						 | 
					@ -171,6 +172,28 @@ 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()
 | 
				
			||||||
| 
						 | 
					@ -850,6 +873,14 @@ 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 sortable="custom">
 | 
					          show-overflow-tooltip>
 | 
				
			||||||
          <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,7 +7,12 @@
 | 
				
			||||||
      <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"
 | 
				
			||||||
| 
						 | 
					@ -35,7 +40,8 @@
 | 
				
			||||||
    </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">
 | 
				
			||||||
| 
						 | 
					@ -2004,8 +2010,13 @@ 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,57 +1,44 @@
 | 
				
			||||||
<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 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" />
 | 
					      <VisitReview :reading-tool="readingTool" />
 | 
				
			||||||
    </div>
 | 
					    </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-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
 | 
					          <ReadPage v-if="tabs.includes('read')" :trial-id="trialId" :visit-task-id="visitTaskId"
 | 
				
			||||||
            v-if="tabs.includes('read')"
 | 
					            :subject-id="subjectId" :subject-code="subjectCode" :is-show="isShow"
 | 
				
			||||||
            :trial-id="trialId"
 | 
					            :question-form-change-state="questionFormChangeState" :question-form-change-num="questionFormChangeNum"
 | 
				
			||||||
            :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-reading-task-view-in-order="isReadingTaskViewInOrder" :is-exists-clinical-data="isExistsClinicalData"
 | 
				
			||||||
            :is-exists-clinical-data="isExistsClinicalData"
 | 
					            :is-exists-no-dicom-file="isExistsNoDicomFile" :is-exists-manual="isExistsManual"
 | 
				
			||||||
            :is-exists-no-dicom-file="isExistsNoDicomFile"
 | 
					            :ise-c-r-f-show-in-dicom-reading="IseCRFShowInDicomReading" @previewCD="previewCD" />
 | 
				
			||||||
            :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" :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-tab-pane>
 | 
				
			||||||
      </el-tabs>
 | 
					      </el-tabs>
 | 
				
			||||||
    </div>
 | 
					    </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-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
 | 
					          <CustomizeReadPage v-if="tabs.includes('read')" :trial-id="trialId"
 | 
				
			||||||
            v-if="tabs.includes('read')"
 | 
					            :trial-reading-criterion-id="TrialReadingCriterionId" :visit-task-id="visitTaskId" :subject-id="subjectId"
 | 
				
			||||||
            :trial-id="trialId"
 | 
					            :subject-code="subjectCode" :is-show="isShow" :is-reading-show-subject-info="isReadingShowSubjectInfo"
 | 
				
			||||||
            :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"
 | 
					            :ise-c-r-f-show-in-dicom-reading="IseCRFShowInDicomReading" :is-exists-clinical-data="isExistsClinicalData"
 | 
				
			||||||
            :is-exists-clinical-data="isExistsClinicalData"
 | 
					            :is-exists-no-dicom-file="isExistsNoDicomFile" :is-exists-manual="isExistsManual" @previewCD="previewCD" />
 | 
				
			||||||
            :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">
 | 
				
			||||||
| 
						 | 
					@ -60,70 +47,40 @@
 | 
				
			||||||
      </el-tabs>
 | 
					      </el-tabs>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    <!-- 全局阅片 -->
 | 
					    <!-- 全局阅片 -->
 | 
				
			||||||
    <GlobalReview
 | 
					    <GlobalReview v-else-if="isShow && readingCategory === 2" :trial-id="trialId" :subject-id="subjectId"
 | 
				
			||||||
      v-else-if="isShow && readingCategory === 2"
 | 
					      :visit-task-id="visitTaskId" :reading-category="readingCategory" :subject-code="subjectCode"
 | 
				
			||||||
      :trial-id="trialId"
 | 
					      :task-blind-name="taskBlindName" :is-reading-show-subject-info="isReadingShowSubjectInfo"
 | 
				
			||||||
      :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
 | 
					    <AdReview v-else-if="isShow && readingCategory === 4" :trial-id="trialId" :subject-id="subjectId"
 | 
				
			||||||
      v-else-if="isShow && readingCategory === 4"
 | 
					      :visit-task-id="visitTaskId" :reading-category="readingCategory" :subject-code="subjectCode"
 | 
				
			||||||
      :trial-id="trialId"
 | 
					      :task-blind-name="taskBlindName" :is-reading-show-subject-info="isReadingShowSubjectInfo"
 | 
				
			||||||
      :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
 | 
					    <OncologyReview v-else-if="isShow && readingCategory === 5" :trial-id="trialId" :subject-id="subjectId"
 | 
				
			||||||
      v-else-if="isShow && readingCategory === 5"
 | 
					      :visit-task-id="visitTaskId" :reading-category="readingCategory" :subject-code="subjectCode"
 | 
				
			||||||
      :trial-id="trialId"
 | 
					      :task-blind-name="taskBlindName" :is-reading-show-subject-info="isReadingShowSubjectInfo"
 | 
				
			||||||
      :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
 | 
					    <el-dialog :visible.sync="dialogVisible" :custom-class="isFullscreen ? 'full-dialog-container' : 'dialog-container'"
 | 
				
			||||||
      :visible.sync="dialogVisible"
 | 
					      :show-close="false" :close-on-click-modal="false" :fullscreen="isFullscreen">
 | 
				
			||||||
      :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'" style="cursor: pointer;font-size: 20px;" @click="isFullscreen=!isFullscreen" />
 | 
					          <svg-icon :icon-class="isFullscreen ? 'exit-fullscreen' : 'fullscreen'"
 | 
				
			||||||
          <svg-icon v-if="closeCDVisible" icon-class="dClose" style="cursor: pointer;font-size: 25px;margin-left: 10px;" @click="dialogVisible = false" />
 | 
					            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>
 | 
					        </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
 | 
					        <ClinicalData v-if="dialogVisible" style="flex: 1" :trial-id="trialId" :subject-id="subjectId"
 | 
				
			||||||
          v-if="dialogVisible"
 | 
					          :visit-task-id="cdVisitTaskId" :is-reading-show-subject-info="isReadingShowSubjectInfo" />
 | 
				
			||||||
          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>
 | 
				
			||||||
| 
						 | 
					@ -131,12 +88,7 @@
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    </el-dialog>
 | 
					    </el-dialog>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <el-dialog
 | 
					    <el-dialog :visible.sync="tipVisible" :show-close="false" :close-on-click-modal="false" width="500px">
 | 
				
			||||||
      :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') }}
 | 
				
			||||||
| 
						 | 
					@ -169,7 +121,27 @@
 | 
				
			||||||
        <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>
 | 
				
			||||||
| 
						 | 
					@ -188,6 +160,7 @@ 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: {
 | 
				
			||||||
| 
						 | 
					@ -235,9 +208,14 @@ 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)
 | 
				
			||||||
| 
						 | 
					@ -264,6 +242,12 @@ 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
 | 
				
			||||||
| 
						 | 
					@ -514,48 +498,58 @@ 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{
 | 
					
 | 
				
			||||||
.reading-wrapper{
 | 
					.dicom-container {
 | 
				
			||||||
 | 
					  .reading-wrapper {
 | 
				
			||||||
    width: 100%;
 | 
					    width: 100%;
 | 
				
			||||||
    height: 100%;
 | 
					    height: 100%;
 | 
				
			||||||
    padding: 0 5px;
 | 
					    padding: 0 5px;
 | 
				
			||||||
    box-sizing: border-box;
 | 
					    box-sizing: border-box;
 | 
				
			||||||
    background-color: #000;
 | 
					    background-color: #000;
 | 
				
			||||||
  ::v-deep.el-tabs{
 | 
					
 | 
				
			||||||
 | 
					    ::v-deep.el-tabs {
 | 
				
			||||||
      box-sizing: border-box;
 | 
					      box-sizing: border-box;
 | 
				
			||||||
      height: 100%;
 | 
					      height: 100%;
 | 
				
			||||||
      display: flex;
 | 
					      display: flex;
 | 
				
			||||||
      flex-direction: column;
 | 
					      flex-direction: column;
 | 
				
			||||||
    .el-tabs__item{
 | 
					
 | 
				
			||||||
 | 
					      .el-tabs__item {
 | 
				
			||||||
        color: #fff;
 | 
					        color: #fff;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    .el-tabs__header{
 | 
					
 | 
				
			||||||
 | 
					      .el-tabs__header {
 | 
				
			||||||
        height: 50px;
 | 
					        height: 50px;
 | 
				
			||||||
      margin:0px;
 | 
					        margin: 0px;
 | 
				
			||||||
        box-sizing: border-box;
 | 
					        box-sizing: border-box;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    .el-tabs__content{
 | 
					
 | 
				
			||||||
 | 
					      .el-tabs__content {
 | 
				
			||||||
        flex: 1;
 | 
					        flex: 1;
 | 
				
			||||||
      margin:0px;
 | 
					        margin: 0px;
 | 
				
			||||||
        box-sizing: border-box;
 | 
					        box-sizing: border-box;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    .el-tabs__item{
 | 
					
 | 
				
			||||||
 | 
					      .el-tabs__item {
 | 
				
			||||||
        color: #fff;
 | 
					        color: #fff;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    .el-tab-pane{
 | 
					
 | 
				
			||||||
 | 
					      .el-tab-pane {
 | 
				
			||||||
        height: 100%;
 | 
					        height: 100%;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ::v-deep.hot-keys-label{
 | 
					
 | 
				
			||||||
 | 
					    ::v-deep.hot-keys-label {
 | 
				
			||||||
      color: #dfdfdf !important;
 | 
					      color: #dfdfdf !important;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ::v-deep.shortcut-key-input span{
 | 
					
 | 
				
			||||||
 | 
					    ::v-deep.shortcut-key-input span {
 | 
				
			||||||
      color: #dfdfdf !important;
 | 
					      color: #dfdfdf !important;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // ::v-deep .el-dialog{
 | 
					    // ::v-deep .el-dialog{
 | 
				
			||||||
    //   background: #1e1e1e;
 | 
					    //   background: #1e1e1e;
 | 
				
			||||||
    //   ::v-deep .el-dialog__body{
 | 
					    //   ::v-deep .el-dialog__body{
 | 
				
			||||||
| 
						 | 
					@ -563,49 +557,56 @@ export default {
 | 
				
			||||||
    //   }
 | 
					    //   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // }
 | 
					    // }
 | 
				
			||||||
  ::v-deep.el-dialog{
 | 
					    ::v-deep.el-dialog {
 | 
				
			||||||
      background: #1e1e1e;
 | 
					      background: #1e1e1e;
 | 
				
			||||||
      border: 1px solid #ddd;
 | 
					      border: 1px solid #ddd;
 | 
				
			||||||
      color: #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;
 | 
					        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{
 | 
					 | 
				
			||||||
    margin-top: 50px !important;
 | 
					 | 
				
			||||||
    width:75%;
 | 
					 | 
				
			||||||
    height:80%;
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  ::v-deep.el-dialog__body{
 | 
					
 | 
				
			||||||
 | 
					  ::v-deep.dialog-container {
 | 
				
			||||||
 | 
					    margin-top: 50px !important;
 | 
				
			||||||
 | 
					    width: 75%;
 | 
				
			||||||
 | 
					    height: 80%;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ::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,7 +147,6 @@
 | 
				
			||||||
        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,60 +1,39 @@
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <el-form
 | 
					  <el-form ref="subjectStatusForm" v-loading="loading" :model="form" :rules="rules" size="small" label-width="160px">
 | 
				
			||||||
    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">
 | 
					        <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 v-for="item of $d.Subject_Visit_Status" :label="item.value" :key="item.id">
 | 
				
			||||||
 | 
					            {{ 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
 | 
					        <el-date-picker v-model="form.VisitOverTime" type="date" :picker-options="pickerOption"
 | 
				
			||||||
          v-model="form.VisitOverTime"
 | 
					          value-format="yyyy-MM-dd" format="yyyy-MM-dd" />
 | 
				
			||||||
          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')" prop="FinalSubjectVisitId">
 | 
					      <el-form-item v-if="form.Status === 2" :label="$t('trials:subject:table:finalSubjectVisit')"
 | 
				
			||||||
        <el-select
 | 
					        prop="FinalSubjectVisitId">
 | 
				
			||||||
          v-model="form.FinalSubjectVisitId"
 | 
					        <el-select v-model="form.FinalSubjectVisitId" clearable filterable style="width:100%"
 | 
				
			||||||
          clearable
 | 
					          :disabled="originalStatus === 2">
 | 
				
			||||||
          filterable
 | 
					          <el-option v-for="item in subjectVisitOptions" :key="item.Id" :label="item.VisitName" :value="item.Id" />
 | 
				
			||||||
          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
 | 
					        <el-button :disabled="btnLoading" size="small" type="primary" @click="handleCancel">
 | 
				
			||||||
          :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">
 | 
				
			||||||
| 
						 | 
					@ -83,12 +62,14 @@ 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: {
 | 
				
			||||||
| 
						 | 
					@ -108,6 +89,9 @@ 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,7 +356,14 @@ export default {
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                this.searchData.Asc = false
 | 
					                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.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) }}
 | 
					          {{ getBodyPart(scope.row.BodyPartForEdit, scope.row.BodyPartForEditOther) }}
 | 
				
			||||||
        </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: true,
 | 
					              required: studyForm.BodyPartForEditOther ? false : true,
 | 
				
			||||||
              message: $t('common:ruleMessage:specify'),
 | 
					              message: $t('common:ruleMessage:specify'),
 | 
				
			||||||
              trigger: 'blur',
 | 
					              trigger: 'blur',
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
| 
						 | 
					@ -508,6 +508,8 @@
 | 
				
			||||||
              <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>
 | 
				
			||||||
          <!-- 序列数量 -->
 | 
					          <!-- 序列数量 -->
 | 
				
			||||||
| 
						 | 
					@ -604,6 +606,7 @@ export default {
 | 
				
			||||||
        BodyPartForEdit: [],
 | 
					        BodyPartForEdit: [],
 | 
				
			||||||
        SeriesCount: null,
 | 
					        SeriesCount: null,
 | 
				
			||||||
        StudyTime: '',
 | 
					        StudyTime: '',
 | 
				
			||||||
 | 
					        BodyPartForEditOther: ''
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      uploadQueues: dicomStore.studyList, // 上传队列
 | 
					      uploadQueues: dicomStore.studyList, // 上传队列
 | 
				
			||||||
      selectArr: [], // 已勾选待上传文件
 | 
					      selectArr: [], // 已勾选待上传文件
 | 
				
			||||||
| 
						 | 
					@ -709,6 +712,7 @@ 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) => {
 | 
				
			||||||
| 
						 | 
					@ -1441,7 +1445,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,
 | 
				
			||||||
| 
						 | 
					@ -1530,7 +1534,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,
 | 
				
			||||||
| 
						 | 
					@ -1867,8 +1871,8 @@ export default {
 | 
				
			||||||
        return ''
 | 
					        return ''
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    getBodyPart(bodyPart) {
 | 
					    getBodyPart(bodyPart, other) {
 | 
				
			||||||
      if (!bodyPart) return ''
 | 
					      if (!bodyPart && !other) return ''
 | 
				
			||||||
      var separator = ','
 | 
					      var separator = ','
 | 
				
			||||||
      if (bodyPart.indexOf('|') > -1) {
 | 
					      if (bodyPart.indexOf('|') > -1) {
 | 
				
			||||||
        separator = '|'
 | 
					        separator = '|'
 | 
				
			||||||
| 
						 | 
					@ -1881,6 +1885,10 @@ 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) }}
 | 
					          {{ getBodyPart(scope.row.BodyPart, scope.row.BodyPartForEditOther) }}
 | 
				
			||||||
        </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: true,
 | 
					              required: form.BodyPartForEditOther ? false : true,
 | 
				
			||||||
              message: $t('common:ruleMessage:specify'),
 | 
					              message: $t('common:ruleMessage:specify'),
 | 
				
			||||||
              trigger: 'blur',
 | 
					              trigger: 'blur',
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
| 
						 | 
					@ -172,6 +172,8 @@
 | 
				
			||||||
              <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>
 | 
				
			||||||
          <!-- 检查日期 -->
 | 
					          <!-- 检查日期 -->
 | 
				
			||||||
| 
						 | 
					@ -381,6 +383,7 @@ export default {
 | 
				
			||||||
        Modality: '',
 | 
					        Modality: '',
 | 
				
			||||||
        ImageDate: '',
 | 
					        ImageDate: '',
 | 
				
			||||||
        StudyName: '',
 | 
					        StudyName: '',
 | 
				
			||||||
 | 
					        BodyPartForEditOther: ""
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      pickerOption: {
 | 
					      pickerOption: {
 | 
				
			||||||
        disabledDate: (time) => {
 | 
					        disabledDate: (time) => {
 | 
				
			||||||
| 
						 | 
					@ -484,12 +487,13 @@ 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 } = {
 | 
					      const { CodeView, Id, BodyPart, Modality, ImageDate, StudyName, BodyPartForEditOther } = {
 | 
				
			||||||
        ...row,
 | 
					        ...row,
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      this.form.CodeView = CodeView
 | 
					      this.form.CodeView = CodeView
 | 
				
			||||||
| 
						 | 
					@ -499,6 +503,7 @@ 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检查信息
 | 
				
			||||||
| 
						 | 
					@ -1018,8 +1023,8 @@ export default {
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
      window.open(routeData.href, '_blank')
 | 
					      window.open(routeData.href, '_blank')
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    getBodyPart(bodyPart) {
 | 
					    getBodyPart(bodyPart, other) {
 | 
				
			||||||
      if (!bodyPart) return ''
 | 
					      if (!bodyPart && !other) return ''
 | 
				
			||||||
      var separator = ','
 | 
					      var separator = ','
 | 
				
			||||||
      if (bodyPart.indexOf('|') > -1) {
 | 
					      if (bodyPart.indexOf('|') > -1) {
 | 
				
			||||||
        separator = '|'
 | 
					        separator = '|'
 | 
				
			||||||
| 
						 | 
					@ -1032,6 +1037,10 @@ 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)
 | 
					                    getBodyPart(scope.row.BodyPartForEdit, scope.row.BodyPartForEditOther)
 | 
				
			||||||
                  }}</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) }}
 | 
					                  {{ getBodyPart(scope.row.BodyPart, scope.row.BodyPartForEditOther) }}
 | 
				
			||||||
                </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: true,
 | 
					                required: studyForm.BodyPartForEditOther ? false : true,
 | 
				
			||||||
                message: $t('common:ruleMessage:specify'),
 | 
					                message: $t('common:ruleMessage:specify'),
 | 
				
			||||||
                trigger: 'blur',
 | 
					                trigger: 'blur',
 | 
				
			||||||
              },
 | 
					              },
 | 
				
			||||||
| 
						 | 
					@ -644,6 +644,8 @@
 | 
				
			||||||
                <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>
 | 
				
			||||||
            <!-- 序列数量 -->
 | 
					            <!-- 序列数量 -->
 | 
				
			||||||
| 
						 | 
					@ -742,7 +744,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: true,
 | 
					                required: noneDicomForm.BodyPartForEditOther ? false : true,
 | 
				
			||||||
                message: $t('common:ruleMessage:specify'),
 | 
					                message: $t('common:ruleMessage:specify'),
 | 
				
			||||||
                trigger: 'blur',
 | 
					                trigger: 'blur',
 | 
				
			||||||
              },
 | 
					              },
 | 
				
			||||||
| 
						 | 
					@ -751,6 +753,8 @@
 | 
				
			||||||
                <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>
 | 
				
			||||||
            <!-- 检查日期 -->
 | 
					            <!-- 检查日期 -->
 | 
				
			||||||
| 
						 | 
					@ -1018,7 +1022,8 @@ export default {
 | 
				
			||||||
        BodyPartForEdit: [],
 | 
					        BodyPartForEdit: [],
 | 
				
			||||||
        SeriesCount: null,
 | 
					        SeriesCount: null,
 | 
				
			||||||
        StudyTime: '',
 | 
					        StudyTime: '',
 | 
				
			||||||
        ModifyReason: ''
 | 
					        ModifyReason: '',
 | 
				
			||||||
 | 
					        BodyPartForEditOther: ''
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      currentQCRow: {},
 | 
					      currentQCRow: {},
 | 
				
			||||||
      isAudit: false, // 审核过之后功能按钮禁用标识
 | 
					      isAudit: false, // 审核过之后功能按钮禁用标识
 | 
				
			||||||
| 
						 | 
					@ -1037,7 +1042,8 @@ export default {
 | 
				
			||||||
        Modality: '',
 | 
					        Modality: '',
 | 
				
			||||||
        ImageDate: '',
 | 
					        ImageDate: '',
 | 
				
			||||||
        StudyName: '',
 | 
					        StudyName: '',
 | 
				
			||||||
        ModifyReason: ''
 | 
					        ModifyReason: '',
 | 
				
			||||||
 | 
					        BodyPartForEditOther: ''
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      subjectClinicalData: {},
 | 
					      subjectClinicalData: {},
 | 
				
			||||||
      moment,
 | 
					      moment,
 | 
				
			||||||
| 
						 | 
					@ -2155,7 +2161,9 @@ 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() {
 | 
				
			||||||
| 
						 | 
					@ -2171,6 +2179,7 @@ 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
 | 
				
			||||||
| 
						 | 
					@ -2206,6 +2215,7 @@ 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
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -2241,7 +2251,7 @@ export default {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 打开非Dicom信息编辑框
 | 
					    // 打开非Dicom信息编辑框
 | 
				
			||||||
    handleEditNoneDicomInfo(row) {
 | 
					    handleEditNoneDicomInfo(row) {
 | 
				
			||||||
      const { CodeView, Id, BodyPart, Modality, ImageDate, StudyName } = {
 | 
					      const { CodeView, Id, BodyPart, Modality, ImageDate, StudyName, BodyPartForEditOther } = {
 | 
				
			||||||
        ...row,
 | 
					        ...row,
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      this.noneDicomForm.StudyName = StudyName
 | 
					      this.noneDicomForm.StudyName = StudyName
 | 
				
			||||||
| 
						 | 
					@ -2252,6 +2262,7 @@ 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部位/拍片类型信息
 | 
				
			||||||
| 
						 | 
					@ -2434,8 +2445,8 @@ export default {
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
      this.open = window.open(routeData.href, '_blank')
 | 
					      this.open = window.open(routeData.href, '_blank')
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    getBodyPart(bodyPart) {
 | 
					    getBodyPart(bodyPart, other) {
 | 
				
			||||||
      if (!bodyPart) return ''
 | 
					      if (!bodyPart && !other) return ''
 | 
				
			||||||
      var separator = ','
 | 
					      var separator = ','
 | 
				
			||||||
      if (bodyPart.indexOf('|') > -1) {
 | 
					      if (bodyPart.indexOf('|') > -1) {
 | 
				
			||||||
        separator = '|'
 | 
					        separator = '|'
 | 
				
			||||||
| 
						 | 
					@ -2448,6 +2459,10 @@ 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