252 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			252 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
<template>
 | 
						|
  <div class="report-wrapper">
 | 
						|
    <QuestionsPreview
 | 
						|
    :visitTaskId="visitTaskId"
 | 
						|
    :criterionId="TrialReadingCriterionId">
 | 
						|
    </QuestionsPreview>
 | 
						|
    <!-- 签名框 -->
 | 
						|
    <el-dialog
 | 
						|
      v-if="signVisible"
 | 
						|
      :visible.sync="signVisible"
 | 
						|
      :close-on-click-modal="false"
 | 
						|
      width="600px"
 | 
						|
      custom-class="base-dialog-wrapper"
 | 
						|
    >
 | 
						|
      <div slot="title">
 | 
						|
        <span style="font-size:18px;">{{ $t('common:dialogTitle:sign') }}</span>
 | 
						|
        <span style="font-size:12px;margin-left:5px">{{ `(${$t('common:label:sign')}${ currentUser })` }}</span>
 | 
						|
      </div>
 | 
						|
      <SignForm ref="signForm" :sign-code-enum="signCode" @closeDialog="closeSignDialog" />
 | 
						|
    </el-dialog>
 | 
						|
  </div>
 | 
						|
</template>
 | 
						|
<script>
 | 
						|
import { getReadingReportEvaluation, changeDicomReadingQuestionAnswer, submitDicomVisitTask, verifyVisitTaskQuestions } from '@/api/trials'
 | 
						|
import DicomEvent from './DicomEvent'
 | 
						|
import const_ from '@/const/sign-code'
 | 
						|
import SignForm from '@/views/trials/components/newSignForm'
 | 
						|
import QuestionsPreview from './QuestionsPreview'
 | 
						|
import { getToken } from '@/utils/auth'
 | 
						|
import store from '@/store'
 | 
						|
export default {
 | 
						|
  name: 'ReportPage',
 | 
						|
  components: { SignForm, QuestionsPreview },
 | 
						|
  props: {
 | 
						|
    visitTaskId: {
 | 
						|
      type: String,
 | 
						|
      required: true
 | 
						|
    }
 | 
						|
  },
 | 
						|
  data() {
 | 
						|
    return {
 | 
						|
      currentUser: zzSessionStorage.getItem('userName'),
 | 
						|
      signVisible: false,
 | 
						|
      signCode: null,
 | 
						|
      visitTaskList: [],
 | 
						|
      taskQuestions: [],
 | 
						|
      loading: false,
 | 
						|
      answers: [],
 | 
						|
      readingTaskState: 2,
 | 
						|
      tumorEvaluate: null,
 | 
						|
      currentEvaluateResult: null,
 | 
						|
      isExistDisease: null,
 | 
						|
      currentExistDisease: null,
 | 
						|
      currentTaskReason: '',
 | 
						|
      answerArr: [],
 | 
						|
      questions: [],
 | 
						|
      isShowDetail: false,
 | 
						|
      CriterionType: 0,
 | 
						|
      TrialReadingCriterionId: null
 | 
						|
    }
 | 
						|
  },
 | 
						|
  watch: {
 | 
						|
  },
 | 
						|
  mounted() {
 | 
						|
    this.CriterionType = parseInt(localStorage.getItem('CriterionType'))
 | 
						|
    this.TrialReadingCriterionId = this.$router.currentRoute.query.TrialReadingCriterionId
 | 
						|
    window.addEventListener('resize', this.handleResize)
 | 
						|
    DicomEvent.$on('getReportInfo', isRefresh => {
 | 
						|
      if (!isRefresh) return
 | 
						|
    })
 | 
						|
  },
 | 
						|
  beforeDestroy() {
 | 
						|
    DicomEvent.$off('getReportInfo')
 | 
						|
  },
 | 
						|
  methods: {
 | 
						|
    async handleConfirm() {
 | 
						|
      await this.handleSave(false)
 | 
						|
      const { ImageAssessmentReportConfirmation } = const_.processSignature
 | 
						|
      this.signCode = ImageAssessmentReportConfirmation
 | 
						|
      this.signVisible = true
 | 
						|
    },
 | 
						|
    handleResize() {
 | 
						|
      this.$nextTick(() => {
 | 
						|
        this.$refs.reportList.doLayout()
 | 
						|
      })
 | 
						|
    },
 | 
						|
    // 关闭签名框
 | 
						|
    closeSignDialog(isSign, signInfo) {
 | 
						|
      if (isSign) {
 | 
						|
        this.signConfirm(signInfo)
 | 
						|
      } else {
 | 
						|
        this.signVisible = false
 | 
						|
      }
 | 
						|
    },
 | 
						|
    // 签名并确认
 | 
						|
    signConfirm(signInfo) {
 | 
						|
      this.loading = true
 | 
						|
      var params = {
 | 
						|
        data: {
 | 
						|
          visitTaskId: this.visitTaskId
 | 
						|
        },
 | 
						|
        signInfo: signInfo
 | 
						|
      }
 | 
						|
      submitDicomVisitTask(params).then(res => {
 | 
						|
        if (res.IsSuccess) {
 | 
						|
          this.$message.success(this.$t('common:message:savedSuccessfully'))
 | 
						|
          this.signVisible = false
 | 
						|
          // 设置当前任务阅片状态为已读
 | 
						|
          this.readingTaskState = 2
 | 
						|
          store.dispatch('reading/setVisitTaskReadingTaskState', { visitTaskId: this.visitTaskId, readingTaskState: 2 })
 | 
						|
          DicomEvent.$emit('setReadingState', 2)
 | 
						|
          window.opener.postMessage('refreshTaskList', window.location)
 | 
						|
          this.$confirm('当前阅片任务已完成,是否进入下一个阅片任务?', {
 | 
						|
            type: 'warning',
 | 
						|
            distinguishCancelAndClose: true
 | 
						|
          })
 | 
						|
            .then(() => {
 | 
						|
              console.log('我准备进来啦')
 | 
						|
              DicomEvent.$emit('getNextTask')
 | 
						|
            })
 | 
						|
            .catch(action => {
 | 
						|
              console.log(1111)
 | 
						|
            })
 | 
						|
        }
 | 
						|
        this.loading = false
 | 
						|
      }).catch(() => {
 | 
						|
        this.loading = false
 | 
						|
        if (this.$refs['signForm'] && this.$refs['signForm'].btnLoading) {
 | 
						|
          this.$refs['signForm'].btnLoading = false
 | 
						|
        }
 | 
						|
      })
 | 
						|
    },
 | 
						|
    handleSave(isPrompt) {
 | 
						|
      return new Promise((resolve, reject) => {
 | 
						|
        var evaluateResult = ''
 | 
						|
        var evaluateAjustReason = ''
 | 
						|
        this.answers = []
 | 
						|
        var isExistEvaluateResult = false
 | 
						|
        this.answerArr.map(item => {
 | 
						|
          if (item.questionType === 13) {
 | 
						|
            evaluateResult = item.answer
 | 
						|
            isExistEvaluateResult = true
 | 
						|
          }
 | 
						|
          if (item.questionType === 14) {
 | 
						|
            evaluateAjustReason = item.answer
 | 
						|
          }
 | 
						|
          this.answers.push({ id: item.id, answer: item.answer })
 | 
						|
        })
 | 
						|
        if (isExistEvaluateResult && evaluateResult === null) {
 | 
						|
          this.$confirm('请将疗效评估信息填写完整', {
 | 
						|
            type: 'warning',
 | 
						|
            showCancelButton: false,
 | 
						|
            callback: action => {}
 | 
						|
          })
 | 
						|
          reject()
 | 
						|
          return
 | 
						|
        }
 | 
						|
        if (isExistEvaluateResult && (evaluateResult !== this.tumorEvaluate) && !evaluateAjustReason) {
 | 
						|
          this.$confirm('请填写整体评估调整原因', {
 | 
						|
            type: 'warning',
 | 
						|
            showCancelButton: false,
 | 
						|
            callback: action => {}
 | 
						|
          })
 | 
						|
          reject()
 | 
						|
          return
 | 
						|
        }
 | 
						|
        this.loading = true
 | 
						|
        var params = {
 | 
						|
          visitTaskId: this.visitTaskId,
 | 
						|
          answers: this.answers
 | 
						|
        }
 | 
						|
        changeDicomReadingQuestionAnswer(params).then(res => {
 | 
						|
          if (isPrompt) {
 | 
						|
            this.$message.success(this.$t('common:message:savedSuccessfully'))
 | 
						|
          }
 | 
						|
          this.loading = false
 | 
						|
          resolve()
 | 
						|
        }).catch(() => {
 | 
						|
          this.loading = false
 | 
						|
          reject()
 | 
						|
        })
 | 
						|
      })
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
</script>
 | 
						|
<style lang="scss" scoped>
 | 
						|
.report-wrapper{
 | 
						|
 | 
						|
  height: 100%;
 | 
						|
  // background-color: #fff;
 | 
						|
  background-color: #000;
 | 
						|
  ::-webkit-scrollbar {
 | 
						|
    width: 7px;
 | 
						|
    height: 7px;
 | 
						|
  }
 | 
						|
  ::-webkit-scrollbar-thumb {
 | 
						|
    border-radius: 10px;
 | 
						|
    background: #d0d0d0;
 | 
						|
  }
 | 
						|
  .report-header{
 | 
						|
    display: flex;
 | 
						|
  }
 | 
						|
  .el-card{
 | 
						|
    background-color: #000;
 | 
						|
    color: #ffffff;
 | 
						|
    border:none;
 | 
						|
  }
 | 
						|
  // >>>.el-table__cell{
 | 
						|
  //   background-color: #000;
 | 
						|
  //   color: #ffffff;
 | 
						|
  // }
 | 
						|
  // >>>.el-table{
 | 
						|
  //   background-color: #000;
 | 
						|
  //   color: #ffffff;
 | 
						|
  // }
 | 
						|
  // >>>.el-table__cell{
 | 
						|
  //   background-color: #000;
 | 
						|
  //   color: #ffffff;
 | 
						|
  // }
 | 
						|
 | 
						|
  >>>.el-table, .el-table__expanded-cell {
 | 
						|
    background-color: #000;
 | 
						|
    color: #fff;
 | 
						|
    border-color:#444444;
 | 
						|
  }
 | 
						|
 | 
						|
  >>>.el-table th, .el-table tr {
 | 
						|
    background-color: #000;
 | 
						|
    color: #fff;
 | 
						|
    border-color:#444444;
 | 
						|
  }
 | 
						|
  >>>.el-table__body tr > td{
 | 
						|
    background-color:#000 !important;
 | 
						|
    color: #fff;
 | 
						|
    border-color:#444444;
 | 
						|
  }
 | 
						|
  >>>.el-table__body tr:hover > td{
 | 
						|
    background-color:#858282 !important;
 | 
						|
    color: #fff;
 | 
						|
    border-color:#444444;
 | 
						|
  }
 | 
						|
  >>>.el-table--border th.gutter:last-of-type{
 | 
						|
    border: none;
 | 
						|
  }
 | 
						|
  >>>.el-card__header{
 | 
						|
    border: none;
 | 
						|
    padding: 10px;
 | 
						|
  }
 | 
						|
}
 | 
						|
</style>
 |