<template>
  <el-form v-if="isRender" ref="measurementForm" v-loading="loading" :model="questionForm" size="mini"
    class="measurement-form">
    <div class="base-dialog-body">
      <div style="display: flex;justify-content: space-between;">
        <h3 v-if="lesionName" style="color: #ddd;padding: 5px 0px;margin: 0;">
          <!-- {{ `${questionName} (${orderMark}${String(rowIndex).padStart(2, '0')})` }} -->
          {{ lesionName }}
        </h3>
        <!-- 关闭 -->
        <div>
          <i class="el-icon-circle-close" style="font-size: 25px;cursor: pointer;" @click="handleClose" />
        </div>
      </div>
      <div ref="scrollPanel" style="height: 420px;overflow-y: auto;overflow-x: hidden;" @scroll.stop="scrollHandle">
        <el-form-item :label="$t('trials:reading:title:lesionType')" prop="LesionType" :rules="[
          { required: true, message: $t('common:ruleMessage:select'), trigger: ['blur'] },
        ]">
          <!-- 下拉框 -->
          <el-select :ref="`select_LesionType`" v-model="questionForm.LesionType" filterable
            :disabled="!isCurrentTask || readingTaskState >= 2 || !isBaseLineTask || answers.SplitOrMergeType === '1'"
            @change="((val) => { lesionTypeChange(val) })">

            <el-option v-for="item of $d.LesionType" v-show="!(isBaseLineTask && item.value === 2)" :key="item.id"
              :value="item.value" :label="item.label" />

          </el-select>
        </el-form-item>
        <el-form-item v-for="qs in questions" v-show="qs.ShowQuestion !== 2" :key="qs.Id" :label="`${qs.QuestionName}`"
          :prop="qs.Id" :rules="[
            {
              required: (qs.IsRequired === 0 || (qs.IsRequired === 1 && qs.RelevanceId && (qs.RelevanceValue.includes(questionForm[qs.RelevanceId]))) || (qs.QuestionMark === 6 && questionForm.IsCanEditPosition === true) || (questionForm.IsCanEditPosition && qs.QuestionMark === 10)) && qs.Type !== 'group' && qs.Type !== 'summary',
              message: ['radio', 'select', 'checkbox'].includes(qs.Type) ? $t('common:ruleMessage:select') : $t('common:ruleMessage:specify'), trigger: ['blur', 'change']
            },
          ]">

          <!-- 输入框 -->
          <template v-if="qs.Type === 'input' || qs.Type === 'number'">
            <div style="display: flex;justify-content: space-between;">
              <el-input v-if="qs.Type === 'input' || qs.Type === 'number'" v-model="questionForm[qs.Id]"
                :disabled="!isCurrentTask || readingTaskState >= 2 || qs.QuestionMark === 0 || qs.QuestionMark === 1 || qs.QuestionMark === 2 || qs.QuestionMark === 5 || (qs.QuestionMark === 6 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answers.SplitOrMergeLesionName)) || (qs.QuestionMark === 8 && (isCurrentTaskAdd === 'False' || !!answers.SplitOrMergeLesionName) && lesionType !== 2) || (qs.QuestionMark === 10 && (isCurrentTaskAdd === 'False' || !!answers.SplitOrMergeLesionName)) || answers.SplitOrMergeType === '1'"
                @change="((val) => { formItemChange(val, qs) })">
                <template v-if="(qs.QuestionMark === 0 || qs.QuestionMark === 1) && qs.Unit" slot="append">
                  {{ $fd('ValueUnit', parseInt(qs.Unit)) }}
                </template>
              </el-input>
              <svg-icon v-if="qs.ShowChartTypeEnum > 0" icon-class="readingChart" class="svg-icon svg-readingChart"
                @click.stop="(e) => handleReadingChart({
                  e,
                  data: {
                    TableQuestionId: qs.Id,
                    RowIndex: questionForm.RowIndex,
                    QuestionName: qs.QuestionName
                  }
                })" />
            </div>
            <!-- {{ ((qs.QuestionMark === 6 && isCurrentTaskAdd === 'False') || (qs.QuestionMark === 6 && isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition)) }} -->

          </template>
          <!-- 多行文本输入框 -->
          <el-input v-if="qs.Type === 'textarea'" v-model="questionForm[qs.Id]" type="textarea"
            :autosize="{ minRows: 2, maxRows: 4 }" maxlength="500"
            :disabled="!isCurrentTask || readingTaskState >= 2 || answers.SplitOrMergeType === '1'"
            @change="((val) => { formItemChange(val, qs) })" />
          <!-- 下拉框 -->
          <!-- :disabled="!isCurrentTask || readingTaskState>=2 || (!isBaseLineTask && qs.QuestionMark === 5 && isCurrentTaskAdd === 'False') || qs.QuestionMark === 2 || (qs.QuestionMark === 8 && !isBaseLineTask && isCurrentTaskAdd === 'False')" -->

          <el-select v-if="qs.Type === 'select'" :ref="`select_${qs.Id}`" v-model="questionForm[qs.Id]" filterable
            :placeholder="qs.QuestionMark === 8 ? $t('common:placeholder:selectorsearch') : $t('common:placeholder:select')"
            :disabled="!isCurrentTask || readingTaskState >= 2 || qs.QuestionMark === 0 || qs.QuestionMark === 1 || qs.QuestionMark === 2 || qs.QuestionMark === 5 || (qs.QuestionMark === 6 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answers.SplitOrMergeLesionName)) || (qs.QuestionMark === 8 && (isCurrentTaskAdd === 'False' || !!answers.SplitOrMergeLesionName)) || (qs.QuestionMark === 10 && (isCurrentTaskAdd === 'False' || (isCurrentTaskAdd === 'True' && !questionForm.IsCanEditPosition) || !!answers.SplitOrMergeLesionName)) || (qs.QuestionMark === 7 && stateDisabled) || answers.SplitOrMergeType === '1' || (qs.QuestionMark === 7 && answers.SplitOrMergeType === '3')"
            @change="((val) => { formItemChange(val, qs) })">
            <template v-if="qs.QuestionMark === 8" #prefix>
              <span style="padding-left: 5px;">
                <i class="el-icon-search" />
              </span>
            </template>
            <template v-if="qs.TableQuestionType === 1">
              <el-option v-for="item in organList" :key="item.Id" :label="item[qs.DataTableColumn]"
                :value="item[qs.DataTableColumn]" />
            </template>
            <template v-else-if="qs.DictionaryCode && qs.QuestionMark === 7 && isBaseLineTask">
              <el-option v-for="item of $d[qs.DictionaryCode]"
                v-show="(lesionType === 0 && item.value === 0) || (lesionType === 1 && (item.value === 0))"
                :key="item.id" :value="item.value" :label="item.label" />
            </template>
            <template v-else-if="qs.DictionaryCode && qs.QuestionMark === 7 && !isBaseLineTask">
              <el-option-group
                :label="!isNaN(parseFloat(answers.LastTaskState)) ? `${$t('trials:dicomReading:tip:lastVisitStatus')} ${$fd(qs.DictionaryCode, parseFloat(answers.LastTaskState))}` : ''">
                <!-- 首次分裂的病灶只能选择存在 -->
                <template v-if="answers.IsFristAdd === 'True' && answers.SplitOrMergeType === '0'">
                  <el-option v-for="item of $d[qs.DictionaryCode]" v-show="item.value === 0" :key="item.id"
                    :value="item.value" :label="item.label" />
                </template>
                <!-- 首次添加的新病灶不能为无法评估和消失 -->
                <template v-else-if="isCurrentTaskAdd === 'True' && lesionType === 2">
                  <el-option v-for="item of $d[qs.DictionaryCode]" v-show="item.value === 0 || item.value === 1"
                    :key="item.id" :value="item.value" :label="item.label" />
                </template>
                <template v-else>
                  <el-option v-for="item of filterState($d[qs.DictionaryCode])" :key="item.id" :value="item.value"
                    :label="item.label" />
                </template>
              </el-option-group>
            </template>
            <template v-else-if="qs.DictionaryCode && qs.QuestionMark !== 7">
              <el-option v-for="item of $d[qs.DictionaryCode]" :key="item.id" :value="item.value" :label="item.label" />
            </template>
            <template v-else>
              <el-option v-for="val in qs.TypeValue.split('|')" :key="val" :label="val" :value="val" />
            </template>

          </el-select>
          <!-- 单选 -->
          <el-radio-group v-if="qs.Type === 'radio'" v-model="questionForm[qs.id]"
            :disabled="!isCurrentTask || readingTaskState >= 2 || answers.SplitOrMergeType === '1'">
            <el-radio v-for="val in qs.options.split('|')" :key="val" :label="val"
              @change="((val) => { formItemChange(val, qs) })">
              {{ val }}
            </el-radio>
          </el-radio-group>
          <template v-if="qs.QuestionMark === 20">
            <div style="display: flex;flex-direction: row;justify-content: flex-start;">
              <div style="display: flex;justify-content: space-between;" v-if="qs.Type === 'calculation'">
                <el-input v-if="qs.Type === 'calculation'" v-model="questionForm[qs.Id]" disabled style="width:120px;"
                  @change="((val) => { formItemChange(val, qs) })">
                  <template v-if="qs.Unit" slot="append">
                    {{ $fd('ValueUnit', parseInt(qs.Unit)) }}
                  </template>
                </el-input>
                <svg-icon v-if="qs.ShowChartTypeEnum > 0" icon-class="readingChart" class="svg-icon svg-readingChart"
                  @click.stop="(e) => handleReadingChart({
                    e,
                    data: {
                      TableQuestionId: qs.Id,
                      RowIndex: questionForm.RowIndex,
                      QuestionName: qs.QuestionName
                    }
                  })" />
              </div>
              <viewer v-if="answers.OtherPicturePath" ref="viewer" style="margin:0 10px;"
                :images="[`${OSSclientConfig.basePath}${answers.OtherPicturePath}`]">
                <span style="color:#409eff;cursor: pointer" @click="previewImage()">
                  {{ $t('trials:lugano:button:suvscreenshot1') }}
                </span>
                <img v-show="false" crossorigin="anonymous"
                  :src="`${OSSclientConfig.basePath}${answers.OtherPicturePath}`" alt="Image">
              </viewer>
              <!-- <img
                v-if="answers.OtherPicturePath"
                v-viewer
                :options="{ toolbar: false }"
                style="width: 25px; height: 25px; cursor: pointer;margin-left:10px;"
                crossorigin="anonymous"
                :src="answers.OtherPicturePath"
                alt="Image"
                class="suv_viewer"
              > -->
              <!-- <el-link v-if="answers.OtherPicturePath" type="primary" style="margin-left:10px;" @click="previewImage(answers.OtherPicturePath)">截图</el-link> -->
            </div>
          </template>
          <template v-else>
            <div style="display: flex;justify-content: space-between;" v-if="qs.Type === 'calculation'">
              <el-input v-if="qs.Type === 'calculation'" v-model="questionForm[qs.Id]" disabled
                @change="((val) => { formItemChange(val, qs) })">
                <template v-if="qs.Unit" slot="append">
                  {{ $fd('ValueUnit', parseInt(qs.Unit)) }}
                </template>
              </el-input>
              <svg-icon v-if="qs.ShowChartTypeEnum > 0" icon-class="readingChart" class="svg-icon svg-readingChart"
                @click.stop="(e) => handleReadingChart({
                  e,
                  data: {
                    TableQuestionId: qs.Id,
                    RowIndex: questionForm.RowIndex,
                    QuestionName: qs.QuestionName
                  }
                })" />
            </div>

          </template>
        </el-form-item>
      </div>
      <div
        v-if="isCurrentTask && readingTaskState < 2 && (answers.SplitOrMergeType !== '1' && answers.SplitOrMergeType !== '3')"
        class="base-dialog-footer" style="text-align:right;margin-top:10px;">
        <!-- 清除标记 -->
        <el-button v-if="questionForm.MeasureData" size="mini" @click="handleDeleteMeasureData">
          {{ $t('trials:reading:button:removeMark') }}
        </el-button>
        <!-- 删除 -->
        <el-button v-if="isCurrentTaskAdd !== 'False'" size="mini" @click="handleDelete">
          {{ $t('common:button:delete') }}
        </el-button>
        <!-- 保存 -->
        <el-button size="mini" :loading="saveLoading" :disabled="saveLoading" @click="handleSave">
          {{ $t('common:button:save') }}
        </el-button>
      </div>
    </div>
  </el-form>
</template>
<script>
import { submitTableQuestion, deleteReadingRowAnswer, getIsSuvMaxLesion } from '@/api/trials'
// import { uploadPrintscreen } from '@/api/reading'
import DicomEvent from './../DicomEvent'
import store from '@/store'
export default {
  name: 'MeasurementForm',
  props: {
    questions: {
      type: Array,
      default() { return [] }
    },
    answers: {
      type: Object,
      default() { return {} }
    },
    lesionType: {
      type: Number,
      required: true
    },
    visitTaskId: {
      type: String,
      required: true
    },
    parentQsId: {
      type: String,
      required: true
    },
    isCurrentTask: {
      type: Boolean,
      required: true
    },
    readingTaskState: {
      type: Number,
      required: true
    },
    isBaseLineTask: {
      type: Boolean,
      required: true
    },
    orderMark: {
      type: String,
      default: ''
    },
    questionName: {
      type: String,
      required: true
    },
    rowIndex: {
      type: String,
      required: true
    },
    tableQuestions: {
      type: Array,
      default() { return [] }
    }
  },
  data() {
    return {
      questionForm: {},
      loading: false,
      trialId: '',
      organList: [],
      originalQuestionForm: {},
      isRender: false,
      toolType: '',
      lesionName: '',
      isCurrentTaskAdd: 'False',
      splitOrMergeLesionName: '',
      lesionMark: '',
      deleteInfo: null,
      pictureBaseStr: '',
      currentMarkTool: '',
      digitPlaces: 2,
      stateDisabled: false,
      splitLesionTargetPPD: null,
      splitLesionTargetLDi: null,
      splitLesionTargetSDi: null,
      saveLoading: false,
      validationDialogVisible: false
    }
  },
  mounted() {
    this.trialId = this.$route.query.trialId
    this.initForm()
    DicomEvent.$on('handleImageQualityAbnormal', () => {
      this.setState()
    })
    var digitPlaces = Number(localStorage.getItem('digitPlaces'))
    this.digitPlaces = digitPlaces === -1 ? this.digitPlaces : digitPlaces
    // var container = document.getElementById('qs_container')
    // container.addEventListener('scroll', this.scrollHandle , true)
  },
  beforeDestroy() {
    DicomEvent.$off('handleImageQualityAbnormal')
    // var container = document.getElementById('qs_container')
    // container.removeEventListener('scroll', this.scrollHandle , true)
  },
  methods: {
    handleReadingChart(e) {
      this.$emit('handleReadingChart', e)
    },
    async showValidationDialog(msg) {
      if (this.validationDialogVisible) {
        return false
      }
      this.validationDialogVisible = true
      try {
        await this.$confirm(msg, {
          type: 'warning',
          showCancelButton: false,
          closeOnClickModal: false,
          closeOnPressEscape: false
        })
      } catch (e) {
      } finally {
        this.validationDialogVisible = false
      }
      return false
    },    scrollHandle() {
      for (const k in this.$refs) {
        if (k.indexOf('select_') === -1) continue
        if (this.$refs[k] instanceof Array) {
          this.$refs[k][0].blur()
        } else {
          this.$refs[k].blur()
        }
      }
    },
    previewImage() {
      this.$refs.viewer[0].$viewer.show()
    },
    async initForm(params) {
      const loading = this.$loading({ fullscreen: true })
      this.questions.forEach(item => {
        var val = this.answers[item.Id]
        if (item.DictionaryCode) {
          val = isNaN(parseInt(this.answers[item.Id])) ? this.answers[item.Id] : parseInt(this.answers[item.Id])
        }
        if (this.isBaseLineTask && item.QuestionMark === 7 && this.lesionType === 0) {
          val = 0
        }
        if (this.isBaseLineTask && item.QuestionMark === 7 && this.lesionType === 1) {
          val = 0
        }
        // 最低点PPD（13）、PPD最低点所在访视（14）、PPD最低点LDi（15）、PPD最低点SDi（16）
        if (this.isBaseLineTask && (item.QuestionMark === 13 || item.QuestionMark === 14 || item.QuestionMark === 15 || item.QuestionMark === 16)) {
          val = 'NA'
        }
        // PPD（12）、相比最低点PPD增加百分比（17）、相比PPD最低点LDi增加值（18）、相比PPD最低点SDi增加值（19）为空是，默认值为NA
        if (!val && (item.QuestionMark === 12 || item.QuestionMark === 17 || item.QuestionMark === 18 || item.QuestionMark === 19)) {
          val = 'NA'
        }

        this.$set(this.questionForm, item.Id, val)
      })
      this.$set(this.questionForm, 'MeasureData', this.answers.MeasureData ? JSON.parse(this.answers.MeasureData) : '')
      this.$set(this.questionForm, 'RowIndex', this.answers.RowIndex ? this.answers.RowIndex : '')
      this.$set(this.questionForm, 'RowId', this.answers.RowId ? this.answers.RowId : '')
      this.$set(this.questionForm, 'OrganInfoId', this.answers.OrganInfoId ? this.answers.OrganInfoId : '')
      this.$set(this.questionForm, 'SplitOrMergeType', this.answers.SplitOrMergeType ? this.answers.SplitOrMergeType : '')
      // saveTypeEnum 0：未保存过（新建病灶）；1：已保存，信息不完整（随访初始化病灶/分裂病灶，通过状态判断）；2：已保存，信息完整
      var lesionState = this.getQuestionVal(7)
      if (this.questionForm.RowId) {
        this.$set(this.questionForm, 'saveTypeEnum', isNaN(parseInt(lesionState)) ? 1 : 2)
      } else {
        this.$set(this.questionForm, 'saveTypeEnum', 0)
      }
      this.$set(this.questionForm, 'IsCanEditPosition', this.answers.IsCanEditPosition === 'True')
      this.$set(this.questionForm, 'IsDicomReading', this.answers.IsDicomReading !== 'False')

      this.toolType = this.questionForm.MeasureData ? this.questionForm.MeasureData.type : ''
      this.currentMarkTool = this.questionForm.MeasureData ? this.questionForm.MeasureData.type : this.answers.MarkTool
      if (!this.questionForm.LesionType) {
        this.$set(this.questionForm, 'LesionType', this.lesionType)
      }
      this.lesionName = this.getLesionInfo(this.orderMark, this.rowIndex)
      this.isCurrentTaskAdd = this.answers.IsCurrentTaskAdd ? this.answers.IsCurrentTaskAdd : 'True'
      this.lesionMark = this.getLesionName(this.orderMark, this.questionForm.RowIndex)
      this.originalQuestionForm = { ...this.questionForm }
      // this.lesionType === 0 && this.questionForm.MeasureData
      if (this.answers.measureObj) {
        await this.setMeasureData(this.answers.measureObj, true)
      } else {
        this.organList = []
        await this.getOrganInfoList()
      }

      // 首次分裂的病灶默认状态为空时，设置默认值为存在
      if (this.answers.IsFristAdd === 'True' && this.answers.SplitOrMergeType === '0' && lesionState === '') {
        const stateId = this.getQuestionId(7)
        this.$set(this.questionForm, stateId, 0)
        var isLymphLesion = this.getQuestionVal(2)
        const lesionPart = this.getQuestionVal(8)
        const lesionOrgan = this.getQuestionVal(6)
        const lesionLength = this.getQuestionVal(0)
        const lesionShort = this.getQuestionVal(1)
        const lesionState = this.getQuestionVal(7)
        this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
      }
      if (this.lesionType === 0 && params) {
        // ppd

        var ppd = this.getQuestionVal(12)
        ppd = isNaN(parseFloat(ppd)) ? 0 : parseFloat(ppd)

        this.splitLesionTargetPPD = ppd + params.splitLesionTargetPPD
        this.splitLesionTargetLDi = params.splitLesionTargetLDi
        this.splitLesionTargetSDi = params.splitLesionTargetSDi
      }

      // 如果当前病灶状态为“疾病进展”，且满足疾病进展的条件，则状态不允许更改
      var state = this.getQuestionVal(7)// 长径
      var ldi = this.getQuestionVal(0)// 长径
      ldi = isNaN(parseFloat(ldi)) ? 0 : ldi
      var pddIncrease = this.getQuestionVal(17) // 相比最低点PPD增加百分比
      pddIncrease = isNaN(parseFloat(pddIncrease)) ? 0 : parseFloat(pddIncrease)
      var ldiIncrease = this.getQuestionVal(18)// 相比PPD最低点LDi增加值
      ldiIncrease = isNaN(parseFloat(ldiIncrease)) ? 0 : parseFloat(ldiIncrease)
      var sdiIncrease = this.getQuestionVal(19)// 相比PPD最低点SDi增加值
      sdiIncrease = isNaN(parseFloat(sdiIncrease)) ? 0 : parseFloat(sdiIncrease)

      if (!this.isBaseLineTask && state === 4 && this.lesionType === 0 && ldi && pddIncrease && ldiIncrease && sdiIncrease) {
        /** 融合主病灶疾病进展
         * 当前融合靶病灶LDi>15
         * 相比最低点PPD增加百分比 ≥50％
        **/
        if (this.answers.SplitOrMergeType === '4' || this.answers.SplitOrMergeType === '5') {
          if (ldi > 15 && pddIncrease >= 50) {
            this.stateDisabled = true
          } else {
            this.stateDisabled = false
          }
        } else {
          if (this.lesionType === 0 && this.answers.SplitOrMergeType === '2' && this.splitLesionTargetPPD) {
            var minPPD = this.getQuestionVal(13)
            minPPD = parseFloat(minPPD)
            pddIncrease = ((((this.splitLesionTargetPPD - minPPD) / minPPD)) * 100).toFixed(this.digitPlaces)
            ldi = this.splitLesionTargetLDi + ldi
            var minLDi = this.getQuestionVal(15)
            ldiIncrease = ldi - minLDi
            var sdi = this.getQuestionVal(1)// 短径
            sdi = isNaN(parseFloat(sdi)) ? 0 : sdi
            sdi = this.splitLesionTargetSDi + sdi
            var minSDi = this.getQuestionVal(16)
            sdiIncrease = sdi - minSDi
          }

          /** 疾病进展
         * 15mm<当前靶病灶LDi≤20mm
         * 相比最低点PPD增加百分比 ≥50％
         * 相比PPD最低点LDi增加值 ≥5 mm 或者 相比PPD最低点SDi增加值≥5 mm
        **/
          if ((ldi > 15 && ldi <= 20) && (pddIncrease >= 50) && (ldiIncrease >= 5 || sdiIncrease >= 5)) {
            this.stateDisabled = true
          } else if ((ldi > 20) && (pddIncrease >= 50) && (ldiIncrease >= 10 || sdiIncrease >= 10)) {
            /** 疾病进展
             * 当前靶病灶LDi>20 mm
             * 相比最低点PPD增加百分比 ≥50％
             * 相比PPD最低点LDi增加值 ≥10 mm 或者 相比PPD最低点SDi增加值Sdi ≥10 mm
            **/
            this.stateDisabled = true
          } else {
            this.stateDisabled = false
          }
        }
      } else {
        this.stateDisabled = false
      }
      this.isRender = true
      loading.close()
    },
    getLesionName(orderMark, rowIndex) {
      var lessionName = ''
      var rowIndexArr = rowIndex.split('.')
      var x = parseInt(rowIndexArr[0])
      var y = parseInt(rowIndexArr[1])
      if (y > 0) {
        y = String.fromCharCode(parseInt(rowIndexArr[1]) - 1 + 65 + 32)
        lessionName = `${orderMark}${String(x).padStart(2, '0')}${y}`
      } else {
        lessionName = `${orderMark}${String(x).padStart(2, '0')}`
      }

      return lessionName
    },
    getLesionInfo(orderMark, rowIndex) {
      var arr = []
      var lessionName = ''
      var rowIndexArr = rowIndex.split('.')
      var x = parseInt(rowIndexArr[0])
      var y = parseInt(rowIndexArr[1])
      if (y > 0) {
        y = String.fromCharCode(parseInt(rowIndexArr[1]) - 1 + 65 + 32)
        lessionName = `${orderMark}${String(x).padStart(2, '0')}${y}`
        arr.push(lessionName)
      } else {
        lessionName = `${orderMark}${String(x).padStart(2, '0')}`
        arr.push(lessionName)
      }
      if (this.answers.SplitOrMergeLesionName && parseInt(this.answers.SplitOrMergeType) === 0) {
        arr.push(`(Split from ${this.answers.SplitOrMergeLesionName})`)
      } else if (this.answers.SplitOrMergeLesionName && parseInt(this.answers.SplitOrMergeType) === 1) {
        arr.push(`(Merge to ${this.answers.SplitOrMergeLesionName})`)
      }
      return arr.join(' ')
    },
    getQuestionId(questionMark) {
      var idx = this.questions.findIndex(i => i.QuestionMark === questionMark)
      if (idx > -1) {
        return this.questions[idx].Id
      } else {
        return ''
      }
    },
    getOrganInfoList(isLymphNodes = null) {
      return new Promise(async resolve => {
        // var param = {
        //   trialId: this.trialId,
        //   visitTaskId: this.visitTaskId,
        //   lesionType: this.lesionType,
        //   isEnable: true
        // }
        // if (isLymphNodes !== undefined && isLymphNodes !== null) {
        //   param.isLymphNodes = isLymphNodes
        // }
        // getTrialOrganList(param).then(res => {
        //   this.organList = res.Result
        //   resolve()
        // })
        if (!sessionStorage.getItem('organList')) {
          await store.dispatch('reading/getOrganInfo', this.visitTaskId)
        }
        var organList = sessionStorage.getItem('organList') ? JSON.parse(sessionStorage.getItem('organList')) : []
        var idx = organList.findIndex(i => i.LesionType === this.lesionType)
        if (idx > -1) {
          organList = organList[idx].OrganList

          if (!isNaN(parseInt(isLymphNodes))) {
            this.organList = organList.filter((item) => item.IsLymphNodes === parseInt(isLymphNodes))
          } else {
            this.organList = organList
          }
        }
        resolve()
      })
    },
    async lesionTypeChange(v) {
      this.$emit('determineExistsUnsavedLession', async val => {
        if (val) {
          // 基线时，靶病灶只能用直径和长短径标注，非dicom文件的标注不能作为靶病灶
          //
          if ((this.isBaseLineTask || this.questionForm.IsDicomReading === false) && this.questionForm.MeasureData && this.questionForm.MeasureData.type === 'ArrowAnnotate' && v === 0) {
            // 当前病灶不允许设置为靶病灶
            this.$confirm(this.$t(' trials:reading:warnning:msg15'), {
              type: 'warning',
              distinguishCancelAndClose: true
            })
              .then(() => { })
              .catch(() => { })
            this.$set(this.questionForm, 'LesionType', this.originalQuestionForm.LesionType)
            return
          }
          // 判断是否超过该病灶类型个数的最大值
          var idx = this.tableQuestions.findIndex(item => item.LesionType === v)
          if (idx > -1 && !!this.tableQuestions[idx].MaxQuestionCount && this.tableQuestions[idx].MaxQuestionCount <= this.tableQuestions[idx].TableQuestions.Answers.length) {
            let msg = this.$t('trials:reading:warnning:msg14')
            // msg = msg.replace('xxx', this.tableQuestions[idx].QuestionName)
            msg = msg.replace('xxx', this.tableQuestions[idx].MaxQuestionCount)
            this.$confirm(msg, {
              type: 'warning',
              showCancelButton: false,
              callback: action => { }
            })
            this.$set(this.questionForm, 'LesionType', this.originalQuestionForm.LesionType)
            return
          }

          var arr = []
          this.questionForm[this.getQuestionId(8)] = ''
          this.questionForm[this.getQuestionId(5)] = ''
          this.questionForm[this.getQuestionId(10)] = ''// 部位描述
          this.questionForm[this.getQuestionId(4)] = ''
          this.questionForm[this.getQuestionId(6)] = ''
          this.questionForm[this.getQuestionId(2)] = ''
          this.questions.forEach(item => {
            item.Answer = this.questionForm[item.Id] ? this.questionForm[item.Id] : ''
            arr.push(item)
          })
          var obj = { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType }
          DicomEvent.$emit('imageLocation', obj)
          var type = null
          if (this.questionForm.RowId) {
            type = 1
          } else {
            type = 0
          }
          DicomEvent.$emit('changeLesionType', { questionForm: arr, oldLesionType: this.lesionType, newLesionType: v, rowIndex: this.questionForm.RowIndex, questionId: this.parentQsId, measureData: this.questionForm.MeasureData, type, rowId: this.questionForm.RowId })
        } else {
          this.$set(this.questionForm, 'LesionType', this.originalQuestionForm.LesionType)
        }
      })
    },
    deleteLesionInfo() {
      return new Promise(async (resolve, reject) => {
        const loading = this.$loading({ fullscreen: true })
        var param = {
          visitTaskId: this.visitTaskId,
          questionId: this.parentQsId,
          rowId: this.questionForm.RowId
        }
        try {
          const res = await deleteReadingRowAnswer(param)
          if (res.IsSuccess) {
            DicomEvent.$emit('getReportInfo', true)
          }
          loading.close()
          resolve()
        } catch (e) {
          loading.close()
          reject()
        }
      })
    },
    async formItemChange(v, question) {
      if (question.QuestionMark === 8 && question.RelationQuestions.length > 0) {
        // 当选择部位时，联动器官、位置、是否淋巴结问题答案
        var index = this.organList.findIndex(item => item[question.DataTableColumn] === v)
        if (index > -1) {
          var selected = this.organList[index]
          question.RelationQuestions.map(qs => {
            var val = selected[qs.DataTableColumn]
            this.$set(this.questionForm, qs.Id, val)
          })
          this.$set(this.questionForm, 'OrganInfoId', selected.OrganInfoId)
          this.$set(this.questionForm, 'IsCanEditPosition', selected['IsCanEditPosition'])
        } else {
          question.RelationQuestions.map(qs => {
            this.$set(this.questionForm, qs.Id, '')
          })
        }
      }

      // saveTypeEnum 0：未保存过（新建病灶）；1：已保存，信息不完整（随访初始化病灶/分裂病灶，通过状态判断）；2：已保存，信息完整
      if (this.questionForm.RowId) {
        this.$set(this.questionForm, 'saveTypeEnum', 1)
      } else {
        this.$set(this.questionForm, 'saveTypeEnum', 0)
      }
      var isLymphLesion = this.getQuestionVal(2)
      const lesionPart = this.getQuestionVal(8)
      const lesionOrgan = this.getQuestionVal(6)
      const lesionLength = this.getQuestionVal(0)
      const lesionShort = this.getQuestionVal(1)
      const lesionState = this.getQuestionVal(7)
      this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })

      if (question.QuestionMark === 7) {
        var status = ''
        if (this.lesionType === 0 && lesionState === 1) {
          status = 'T'
        }
        if ((this.lesionType === 0 && lesionState === 3) || (this.lesionType === 1 && lesionState === 3) || (this.lesionType === 2 && lesionState === 3)) {
          status = 'D'
        }
        if (this.questionForm.MeasureData) {
          this.questionForm.MeasureData.status = status
        }
        await store.dispatch('reading/updateMeasureDataStatus', { visitTaskId: this.visitTaskId, rowIndex: this.rowIndex, questionId: this.parentQsId, status })
        DicomEvent.$emit('getMeasureData')
      }
    },
    setMeasureData(measureData, isInit = false) {
      console.log('setMeasureData')
      return new Promise(resolve => {
        if (measureData) {
          if (measureData.pictureBaseStr) {
            this.pictureBaseStr = measureData.pictureBaseStr
            measureData.pictureBaseStr = ''
          }
          // 获取长径(0)
          // const loading = this.$loading({ fullscreen: true })
          var lengthObj = this.questions.find(i => i.QuestionMark === 0)
          var shortObj = this.questions.find(i => i.QuestionMark === 1)

          if (measureData.type === 'Length' || measureData.type === 'Bidirectional') {
            var length = ''
            if (measureData.type === 'Length') {
              length = measureData.data.length
            } else if (measureData.type === 'Bidirectional') {
              length = measureData.data.longestDiameter
            }
            this.$set(this.questionForm, lengthObj.Id, length)
            // 获取短径(1)

            var short = ''
            if (measureData.type === 'Bidirectional') {
              short = measureData.data.shortestDiameter
            }
            this.$set(this.questionForm, shortObj.Id, short)
          } else if (measureData.type === 'ArrowAnnotate') {
            this.$set(this.questionForm, lengthObj.Id, '0')
            this.$set(this.questionForm, shortObj.Id, '0')
          }
          var isLymphLesion = this.getQuestionVal(2)
          this.organList = []
          this.getOrganInfoList()

          var data = {}
          if (measureData.isDicomReading === false) {
            this.$set(this.questionForm, 'IsDicomReading', false)
            data = {
              Id: '',
              IsDicomReading: false,
              StudyId: measureData.studyId,
              InstanceId: measureData.instanceId,
              SeriesId: measureData.seriesId,
              MeasureData: measureData,
              QuestionId: this.parentQsId,
              RowIndex: this.questionForm.RowIndex,
              RowId: this.questionForm.RowId,
              VisitTaskId: this.visitTaskId
            }
            measureData.data.uuid = `${measureData.instanceId}-${measureData.data.remark}`
          } else {
            this.$set(this.questionForm, 'IsDicomReading', true)
            const lesionState = this.getQuestionVal(7)
            // 基线时，默认状态都为存在
            if (this.isBaseLineTask && !lesionState) {
              const stateId = this.getQuestionId(7)
              this.$set(this.questionForm, stateId, 0)
            }
            var lesionLength = this.getQuestionVal(0)
            // 当前添加的新病灶不做处理 && this.lesionType === 0
            if (!(this.isCurrentTaskAdd === 'True') && !this.isBaseLineTask && measureData.type === 'Bidirectional') {
              if (isLymphLesion) {
                // 淋巴结靶病灶
                if (lesionLength > 15) {
                  // 长径大于15mm,自动给“存在”状态
                  const stateId = this.getQuestionId(7)
                  this.$set(this.questionForm, stateId, 0)
                } else {
                  // 长径小于或等于15mm,自动给“消失”状态
                  const stateId = this.getQuestionId(7)
                  this.$set(this.questionForm, stateId, 3)
                }
              } else {
                // 非淋巴结靶病灶
                if (lesionLength > 0) {
                  // 长径大于0,自动给“存在”状态
                  const stateId = this.getQuestionId(7)
                  this.$set(this.questionForm, stateId, 0)
                }
              }
            } else if (this.isCurrentTaskAdd === 'True' && !lesionState && measureData.type === 'Bidirectional') {
              const stateId = this.getQuestionId(7)
              this.$set(this.questionForm, stateId, 0)
            }
            if (this.lesionType === 0) {
              this.calculatePPD()
            }

            var status = ''
            if (lesionState) {
              if (this.lesionType === 0 && lesionState === 1) {
                status = 'T'
              }
              if ((this.lesionType === 0 && lesionState === 3) || (this.lesionType === 1 && lesionState === 3) || (this.lesionType === 2 && lesionState === 3)) {
                status = 'D'
              }
            }
            measureData.data.status = status

            measureData.data.remark = this.getLesionName(this.orderMark, this.questionForm.RowIndex)
            data = {
              Id: '',
              IsDicomReading: true,
              StudyId: measureData.studyId,
              InstanceId: measureData.instanceId,
              SeriesId: measureData.seriesId,
              MeasureData: measureData,
              QuestionId: this.parentQsId,
              RowIndex: this.questionForm.RowIndex,
              RowId: this.questionForm.RowId,
              VisitTaskId: this.visitTaskId,
              OrderMarkName: measureData.data.remark,
              frame: isNaN(parseInt(measureData.frame)) ? 0 : measureData.frame
            }
          }
          // Store.$emit('addTemporaryMeasuredData', data)
          store.dispatch('reading/addMeasuredData', { visitTaskId: this.visitTaskId, data: data })
          if (!this.questionForm.IsDicomReading) {
            DicomEvent.$emit('addNoneDicomMeasureData', measureData)
          }
          DicomEvent.$emit('getMeasureData')
        }
        if (!isInit) {
          // saveTypeEnum 0：未保存过（新建病灶）；1：已保存，信息不完整（随访初始化病灶/分裂病灶，通过状态判断）
          if (this.questionForm.RowId) {
            this.$set(this.questionForm, 'saveTypeEnum', 1)
          } else {
            this.$set(this.questionForm, 'saveTypeEnum', 0)
          }
        }
        this.$set(this.questionForm, 'MeasureData', measureData)
        var isLymph = this.getQuestionVal(2)
        const lesionPart = this.getQuestionVal(8)
        const lesionOrgan = this.getQuestionVal(6)
        const lesionL = this.getQuestionVal(0)
        const lesionS = this.getQuestionVal(1)
        var lesionState = this.getQuestionVal(7)
        // // 状态为空时，非淋巴结靶病灶长径>0mm，自动给“存在”状态，如果淋巴结靶病灶短径>=10mm，自动给“存在”状态。淋巴结靶病灶在短径小于10mm时，用十字线标记测量时标记为消失
        // if (!this.isBaseLineTask && this.lesionType === 0 && ((isLymphLesion === 0 && lesionLength > 0) || (isLymphLesion === 1 && lesionShort >= 10))) {
        //   const stateId = this.getQuestionId(7)
        //   this.$set(this.questionForm, stateId, 0)
        //   lesionState = 0
        // }

        // if (!this.isBaseLineTask && this.lesionType === 0 && (isLymphLesion === 1 && measureData.type === 'Bidirectional' && lesionShort < 10)) {
        //   const stateId = this.getQuestionId(7)
        //   this.$set(this.questionForm, stateId, 3)
        //   lesionState = 3
        // }
        // // 基线时，默认状态都为存在
        // if (this.isBaseLineTask && !lesionState) {
        //   const stateId = this.getQuestionId(7)
        //   this.$set(this.questionForm, stateId, 0)
        //   lesionState = 0
        // }

        this.$emit('resetQuestions', { isLymphLesion: isLymph, lesionPart, lesionOrgan, lesionShort: lesionS, lesionLength: lesionL, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
        this.toolType = measureData.type
        DicomEvent.$emit('refreshStudyListMeasureData')
        resolve()
      })

      // loading.close()
      // this.handleSave()
    },
    calculatePPD() {
      // 最低点PPD（13）、PPD最低点LDi（15）、	PPD最低点SDi（16）
      // 长径(0)/短径(1)发生改变，计算PPD（12）、相比最低点PPD增加百分比（17）、相比PPD最低点LDi增加值（18）、相比PPD最低点SDi增加值（19）
      var ldi = this.getQuestionVal(0)
      var sdi = this.getQuestionVal(1)
      var ppd = null
      if (!isNaN(parseFloat(ldi)) && !isNaN(parseFloat(sdi))) {
        ldi = parseFloat(ldi)
        sdi = parseFloat(sdi)
        ppd = (ldi * sdi).toFixed(this.digitPlaces)
      } else {
        ppd = 'NA'
      }
      var ppdObj = this.questions.find(i => i.QuestionMark === 12)
      this.$set(this.questionForm, ppdObj.Id, ppd)
      // if(isNaN(parseFloat(ppd))){

      // }
      var minPPD = this.getQuestionVal(13)
      var pddIncrease = null
      // 相比最低点PPD增加百分比
      var ppdIncreaseObj = this.questions.find(i => i.QuestionMark === 17)
      if (!isNaN(parseFloat(minPPD)) && !isNaN(parseFloat(ppd))) {
        minPPD = parseFloat(minPPD)
        pddIncrease = ((((ppd - minPPD) / minPPD)) * 100).toFixed(this.digitPlaces)
        this.$set(this.questionForm, ppdIncreaseObj.Id, pddIncrease)
      } else {
        this.$set(this.questionForm, ppdIncreaseObj.Id, 'NA')
      }
      var minLDi = this.getQuestionVal(15)
      var ldiIncrease = null
      // 相比PPD最低点LDi增加值
      var ldiIncreaseObj = this.questions.find(i => i.QuestionMark === 18)
      if (!isNaN(parseFloat(minLDi)) && !isNaN(parseFloat(ldi))) {
        minLDi = parseFloat(minLDi)
        ldiIncrease = ldi - minLDi
        this.$set(this.questionForm, ldiIncreaseObj.Id, ldiIncrease.toFixed(this.digitPlaces))
      } else {
        this.$set(this.questionForm, ldiIncreaseObj.Id, 'NA')
      }
      var minSDi = this.getQuestionVal(16)
      var sdiIncrease = null
      // 相比PPD最低点SDi增加值
      var sdiIncreaseObj = this.questions.find(i => i.QuestionMark === 19)
      if (!isNaN(parseFloat(minSDi)) && !isNaN(parseFloat(sdi))) {
        minSDi = parseFloat(minSDi)
        sdiIncrease = sdi - minSDi
        this.$set(this.questionForm, sdiIncreaseObj.Id, sdiIncrease.toFixed(this.digitPlaces))
      } else {
        this.$set(this.questionForm, sdiIncreaseObj.Id, 'NA')
      }
      var pddIncreaseNum = null
      if (this.lesionType === 0 && this.answers.SplitOrMergeType === '2' && this.splitLesionTargetPPD) {
        pddIncreaseNum = ((((this.splitLesionTargetPPD - minPPD) / minPPD)) * 100).toFixed(this.digitPlaces)
        ldi = this.splitLesionTargetLDi + ldi
        ldiIncrease = ldi - minLDi
        sdi = this.splitLesionTargetSDi + sdi
        sdiIncrease = sdi - minSDi
      } else {
        pddIncreaseNum = ((((ppd - minPPD) / minPPD)) * 100).toFixed(this.digitPlaces)
      }
      /** 疾病进展* **/
      if (!this.isBaseLineTask && ldi && pddIncreaseNum && ldiIncrease && sdiIncrease && this.lesionType === 0 && this.isCurrentTaskAdd === 'False') {
        if (this.answers.SplitOrMergeType === '4' || this.answers.SplitOrMergeType === '5') {
          /** 融合主病灶疾病进展
           * 当前融合靶病灶LDi>15
           * 相比最低点PPD增加百分比 ≥50％
          **/
          if (ldi > 15 && pddIncreaseNum >= 50) {
            const stateId = this.getQuestionId(7)
            this.$set(this.questionForm, stateId, 4)
            this.stateDisabled = true
          } else {
            // 不符合疾病进展是否需要清空修改前疾病进展的状态
            this.stateDisabled = false
          }
        } else {
          /** 疾病进展
           * 15mm<当前靶病灶LDi≤20mm
           * 相比最低点PPD增加百分比 ≥50％
           * 相比PPD最低点LDi增加值 ≥5 mm 或者 相比PPD最低点SDi增加值≥5 mm
          **/
          if ((ldi > 15 && ldi <= 20) && (pddIncreaseNum >= 50) && (ldiIncrease >= 5 || sdiIncrease >= 5)) {
            const stateId = this.getQuestionId(7)
            this.$set(this.questionForm, stateId, 4)
            this.stateDisabled = true
          } else if ((ldi > 20) && (pddIncreaseNum >= 50) && (ldiIncrease >= 10 || sdiIncrease >= 10)) {
            /** 疾病进展
             * 当前靶病灶LDi>20 mm
             * 相比最低点PPD增加百分比 ≥50％
             * 相比PPD最低点LDi增加值 ≥10 mm 或者 相比PPD最低点SDi增加值Sdi ≥10 mm
            **/
            const stateId = this.getQuestionId(7)
            this.$set(this.questionForm, stateId, 4)
            this.stateDisabled = true
          } else {
            // 不符合疾病进展是否需要清空修改前疾病进展的状态
            // const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : ''
            // if (lesionState === 4) {
            //   const stateId = this.getQuestionId(7)
            //   this.$set(this.questionForm, stateId, null)
            // }
            this.stateDisabled = false
          }
        }
      } else {
        // 不符合疾病进展是否需要清空修改前疾病进展的状态
        // const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : ''
        // if (lesionState === 4) {
        //   const stateId = this.getQuestionId(7)
        //   this.$set(this.questionForm, stateId, null)
        // }
        this.stateDisabled = false
      }
    },
    returnFloat(num) {
      if (num) return
      var value = Math.round(parseFloat(num) * 100) / 100
      var s = value.toString().split('.')
      if (s.length === 1) {
        value = value.toString() + '.00'
        return value
      }
      if (s.length > 1) {
        if (s[1].length < 2) {
          value = value.toString() + '0'
        }
        return value
      }
    },
    getQuestionVal(questionMark) {
      const idx = this.questions.findIndex(i => i.QuestionMark === questionMark)
      if (idx > -1) {
        const questionId = this.questions[idx].Id
        const answer = this.questionForm[questionId]
        if (isNaN(parseFloat(answer))) {
          return answer
        } else {
          return parseFloat(answer)
        }
      } else {
        return ''
      }
    },
    filterState(arr) {
      if (!this.isBaseLineTask) {
        const isLymphLesion = this.getQuestionVal(2)
        const lesionLength = this.getQuestionVal(0)
        const lesionShort = this.getQuestionVal(1)
        const bLesionL = !isNaN(parseInt(this.answers.LastTaskMajorAxis)) ? parseInt(this.answers.LastTaskMajorAxis) : 0
        const bLesionS = !isNaN(parseInt(this.answers.LastTaskShortAxis)) ? parseInt(this.answers.LastTaskShortAxis) : 0
        if (this.lesionType === 1 && isLymphLesion === 1 && this.questionForm.MeasureData && this.questionForm.MeasureData.type === 'Bidirectional' && lesionShort < bLesionS) {
          arr = arr.filter(i => i.value !== 1)
        } else if (this.lesionType === 1 && isLymphLesion === 1 && this.questionForm.MeasureData && this.questionForm.MeasureData.type === 'Bidirectional' && lesionShort >= 10 && lesionShort > bLesionS) {
          arr = arr.filter(i => i.value === 0 || i.value === 1)
        } else if (this.lesionType === 1 && isLymphLesion === 0 && this.questionForm.MeasureData && (this.questionForm.MeasureData.type === 'Length' || this.questionForm.MeasureData.type === 'Bidirectional') && lesionLength < bLesionL) {
          arr = arr.filter(i => i.value !== 1)
        }
        return arr
      } else {
        return arr
      }
    },
    setDeleteInfo(deleteInfo) {
      this.deleteInfo = deleteInfo
    },
    // async uploadScreenshots(fileName, file) {
    //   try {
    //     file = this.convertBase64ToBlob(file)
    //     const formData = new FormData()
    //     formData.append('file', file)
    //     const result = await uploadPrintscreen(formData, this.$route.query.subjectId)
    //     result.url = result.Result.Path
    //     // const result = await this.OSSclient.put(`${fileName}.png`, file)
    //     return { isSuccess: true, result: result }
    //   } catch (e) {
    //     console.log(e)
    //     return { isSuccess: false, result: e }
    //   }
    // },
    async uploadScreenshots(fileName, file) {
      try {
        file = this.convertBase64ToBlob(file)
        var trialId = this.$route.query.trialId
        var subjectId = this.$route.query.trialId
        const result = await this.OSSclient.put(`/${trialId}/Read/${subjectId}/${this.visitTaskId}/${fileName}.png`, file)
        return { isSuccess: true, result: result }
      } catch (e) {
        console.log(e)
        return { isSuccess: false, result: e }
      }
    },
    convertBase64ToBlob(imageEditorBase64) {
      var base64Arr = imageEditorBase64.split(',')
      var imgtype = ''
      var base64String = ''
      if (base64Arr.length > 1) {
        // 如果是图片base64，去掉头信息
        base64String = base64Arr[1]
        imgtype = base64Arr[0].substring(
          base64Arr[0].indexOf(':') + 1,
          base64Arr[0].indexOf(';')
        )
      }
      // 将base64解码
      var bytes = atob(base64String)
      // var bytes = base64;
      var bytesCode = new ArrayBuffer(bytes.length)
      // 转换为类型化数组
      var byteArray = new Uint8Array(bytesCode)

      // 将base64转换为ascii码
      for (var i = 0; i < bytes.length; i++) {
        byteArray[i] = bytes.charCodeAt(i)
      }

      // 生成Blob对象（文件对象）
      return new Blob([bytesCode], { type: imgtype })
    },
    async handleSave() {
      if (this.saveLoading) return
      this.saveLoading = true
      let loading = null
      try {
        const valid = await this.$refs.measurementForm.validate()
        if (!valid) {
          if (this.lesionType === 0) {
            this.$refs['scrollPanel'].scrollTo({ top: 0, behavior: 'smooth' })
          }
          return
        }
        loading = this.$loading({ fullscreen: true })
        var measureData = this.questionForm.MeasureData
        var lesionState = this.getQuestionVal(7)
        var lesionLength = this.getQuestionVal(0)
        var lesionShort = this.getQuestionVal(1)
        var lymphNodes = this.getQuestionVal(2)
        lymphNodes = (lymphNodes !== null && lymphNodes !== undefined) ? parseInt(lymphNodes) : null
        if (this.isBaseLineTask) {
        // 基线
        // 靶病灶且状态为存在（0）
        if (this.lesionType === 0 && lesionState === 0) {
          if (lymphNodes === 1) {
            //  评估状态为“存在”的淋巴结靶病灶，长径应大于15 mm，请使用长短径测量工具添加标记。
            if (!(measureData && measureData.type === 'Bidirectional' && lesionLength > 15 && lesionLength >= 2 * measureData.thick)) {
              await this.showValidationDialog(this.$t('trials:lugano:message:validState1'))

              loading.close()
              return
            }
          } else {
            // 评估状态为“存在”的非淋巴结靶病灶，长径应大于10 mm，请使用长短径测量工具添加标记。
            if (!(measureData && measureData.type === 'Bidirectional' && lesionLength > 10 && lesionLength >= 2 * measureData.thick)) {
              await this.showValidationDialog(this.$t('trials:lugano:message:validState2'))

              loading.close()
              return
            }
          }
        }

        // 非靶病灶且状态为存在（0）
        if (this.lesionType === 1 && lesionState === 0) {
          if (lymphNodes === 1) {
            if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
              // 评估状态为存在的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记
              await this.showValidationDialog(this.$t('trials:reading:warnning:msg21'))

              loading.close()
              return
            }
          } else {
            if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
              // 评估状态为存在的非淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记
              await this.showValidationDialog(this.$t('trials:lugano:message:validState12'))

              loading.close()
              return
            }
          }
        }
      } else {
        // 非基线
        // 靶病灶且状态为存在（0）
        if (this.lesionType === 0 && lesionState === 0) {
          if (lymphNodes === 1) {
            if (!(measureData && measureData.type === 'Bidirectional' && lesionLength > 15)) {
              // 状态为“存在”的淋巴结靶病灶，长径应大于15 mm，请使用长短径测量工具添加标记。
              await this.showValidationDialog(this.$t('trials:lugano:message:validState3'))

              loading.close()
              return
            }
          } else {
            // 非淋巴结靶病灶 长短径测量工具
            if (!(measureData && measureData.type === 'Bidirectional')) {
              // 状态为“存在”的非淋巴结靶病灶，长径应大于10 mm，请使用长短径测量工具添加标记。
              await this.showValidationDialog(this.$t('trials:lugano:message:validState4'))

              loading.close()
              return
            }
          }
        }
        // 靶病灶且状态为太小（1）
        if (this.lesionType === 0 && lesionState === 1) {
          if (lymphNodes === 1) {
            // 淋巴结靶病灶 必须使用箭头工具，长径、短径记录为5mm
            if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
              // 评估状态为太小的淋巴结靶病灶需使用箭头工具添加标记！
              await this.showValidationDialog(this.$t('trials:reading:warnning:msg25'))

              loading.close()
              return
            } else if (measureData && measureData.type === 'ArrowAnnotate') {
              const shortId = this.getQuestionId(1)
              this.$set(this.questionForm, shortId, 5)
              lesionShort = 5
              const lengthId = this.getQuestionId(0)
              this.$set(this.questionForm, lengthId, 5)
              lesionLength = 5
            }
          } else {
            // 非淋巴结靶病灶 箭头工具，长径记录为5mm
            if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
              // 评估状态为太小的非淋巴结靶病灶需使用箭头工具添加标记！
              await this.showValidationDialog(this.$t('trials:reading:warnning:msg26'))

              loading.close()
              return
            } else if (measureData && measureData.type === 'ArrowAnnotate') {
              const shortId = this.getQuestionId(1)
              this.$set(this.questionForm, shortId, 5)
              lesionShort = 5
              const lengthId = this.getQuestionId(0)
              this.$set(this.questionForm, lengthId, 5)
              lesionLength = 5
            }
          }
        }

        // 靶病灶且状态为无法评估（2）
        if (this.lesionType === 0 && lesionState === 2) {
          if (lymphNodes === 1) {
            // 淋巴结靶病灶 不需要添加标记
            if (measureData) {
              // 评估状态为无法评估的淋巴结靶病灶不需要添加标记！
              await this.showValidationDialog(this.$t('trials:reading:warnning:msg27'))

              loading.close()
              return
            }
          } else {
            // 非淋巴结靶病灶 不需要添加标记
            if (measureData) {
              // 状态为无法评估的非淋巴结靶病灶不需要添加标记！
              await this.showValidationDialog(this.$t('trials:reading:warnning:msg28'))

              loading.close()
              return
            }
          }
        }

        // 靶病灶且状态为消失（3）
        if (this.lesionType === 0 && lesionState === 3) {
          if (lymphNodes === 1) {
            // 淋巴结靶病灶 使用箭头工具 measureData.type === 'ArrowAnnotate' ||
            if (!(measureData && (measureData.type === 'Bidirectional'))) {
              // 评估状态为消失的淋巴结靶病灶需使用箭头工具或长短径工具添加标记！
              await this.showValidationDialog(this.$t('trials:lugano:message:validState5'))

              loading.close()
              return
            } else if (measureData && measureData.type === 'Bidirectional' && lesionLength > 15) {
              // 评估状态为消失的淋巴结靶病灶,短径应不大于15mm！
              await this.showValidationDialog(this.$t('trials:lugano:message:validState6'))

              loading.close()
              return
            }
            // if (!(measureData && (measureData.type === 'Bidirectional' && lesionShort < 10))) {
            //   // `评估状态为消失的淋巴结靶病灶需使用长短径工具添加标记,且短径需小于10mm！`
            //   this.$confirm(this.$t('trials:reading:warnning:msg29'), {
            //     type: 'warning',
            //     showCancelButton: false,
            //     callback: action => {}
            //   })
            //   loading.close()
            //   return
            // }
          } else {
            // 非淋巴结靶病灶 箭头工具
            if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
              // 评估状态为消失的非淋巴结靶病灶只能使用箭头工具添加标记！
              await this.showValidationDialog(this.$t('trials:lugano:warnning:validState7'))

              loading.close()
              return
            }
            //  else if (measureData && measureData.type === 'ArrowAnnotate') {
            //   const lId = this.getQuestionId(0)
            //   this.$set(this.questionForm, lId, 0)
            //   lesionLength = 0
            // }
          }
          if (measureData && measureData.type === 'ArrowAnnotate') {
            const shortId = this.getQuestionId(1)
            this.$set(this.questionForm, shortId, null)
            lesionShort = null
            const lengthId = this.getQuestionId(0)
            this.$set(this.questionForm, lengthId, null)
            lesionLength = null
          }
        }

        // 靶病灶且状态为疾病进展 （4）
        if (this.lesionType === 0 && lesionState === 4) {
          if (lymphNodes === 1) {
            if (!(measureData && measureData.type === 'Bidirectional' && lesionLength > 15)) {
              // 状态为“疾病进展”的淋巴结靶病灶，长径应大于15 mm，请使用长短径测量工具添加标记。
              await this.showValidationDialog(this.$t('trials:lugano:message:validState7'))

              loading.close()
              return
            }
          } else {
            // 非淋巴结靶病灶 直径测量工具
            if (!(measureData && measureData.type === 'Bidirectional' && lesionLength > 10)) {
              // 状态为“疾病进展”的非淋巴结靶病灶，长径应大于10 mm，请使用长短径测量工具添加标记。
              await this.showValidationDialog(this.$t('trials:lugano:message:validState8'))

              loading.close()
              return
            }
          }
        }

        // 非靶病灶且状态为存在（0）
        if (this.lesionType === 1 && lesionState === 0) {
          if (lymphNodes === 1) {
            // 淋巴结非靶病灶 必须使用长短径测量工具、箭头工具
            if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
              // 评估状态为存在的淋巴结非靶病灶需使用长短径测量工具或箭头工具添加标记！
              await this.showValidationDialog(this.$t('trials:reading:warnning:msg31'))

              loading.close()
              return
            }
          } else {
            // 非淋巴结非靶病灶 直径测量工具、箭头工具
            if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
              // 评估状态为存在的非淋巴结非靶病灶需使用长短径测量工具或箭头工具添加标记！
              await this.showValidationDialog(this.$t('trials:lugano:message:validState9'))

              loading.close()
              return
            }
          }
        }

        // 非靶病灶且状态为显著增大（1）
        if (this.lesionType === 1 && lesionState === 1) {
          if (lymphNodes === 1) {
            // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
            if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
              // `评估状态为显著增大的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记！`
              await this.showValidationDialog(this.$t('trials:reading:warnning:msg33'))

              loading.close()
              return
            }
          } else {
            // 非淋巴结非靶病灶 矩形工具
            if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'RectangleRoi'))) {
              // 评估状态为显著增大的非淋巴结非靶病灶需使用矩形工具添加标记！
              await this.showValidationDialog(this.$t('trials:lugano:message:validState10'))

              loading.close()
              return
            }
          }
        }

        // 非靶病灶且状态为无法评估（2）
        if (this.lesionType === 1 && lesionState === 2) {
          if (lymphNodes === 1) {
            // 淋巴结靶病灶 无标记
            if (measureData) {
              // 评估状态为无法评估的淋巴结非靶病灶不需要添加标记！
              await this.showValidationDialog(this.$t('trials:reading:warnning:msg35'))

              loading.close()
              return
            }
          } else {
            // 非淋巴结非靶病灶 无标记
            if (measureData) {
              // 评估状态为无法评估的非淋巴结非靶病灶不需要添加标记！
              await this.showValidationDialog(this.$t('trials:reading:warnning:msg36'))

              loading.close()
              return
            }
          }
        }

        // 非靶病灶且状态为消失（3）
        if (this.lesionType === 1 && lesionState === 3) {
          if (lymphNodes === 1) {
            // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
            if (!(measureData && (measureData.type === 'ArrowAnnotate' || (measureData.type === 'Bidirectional' && lesionLength < 15)))) {
              // 评估状态为消失的淋巴结非靶病灶需使用箭头工具添加标记！
              await this.showValidationDialog(this.$t('trials:reading:warnning:lgmsg37'))

              loading.close()
              return
            }
          } else {
            // 非淋巴结非靶病灶 箭头工具
            if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
              // 评估状态为消失的非淋巴结非靶病灶需使用箭头工具添加标记！
              await this.showValidationDialog(this.$t('trials:reading:warnning:msg38'))

              loading.close()
              return
            }
          }
        }

        // 新病灶且状态为存在（0）
        if (this.lesionType === 2 && lesionState === 0) {
          if (lymphNodes === 1) {
            // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
            if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
              // 评估状态为存在的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记！
              await this.showValidationDialog(this.$t('trials:reading:warnning:msg39'))

              loading.close()
              return
            }
          } else {
            // 非淋巴结非靶病灶 直径测量工具、箭头工具
            if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
              // 评估状态为存在的非淋巴结新病灶需使用长短径测量工具或箭头工具添加标记！
              await this.showValidationDialog(this.$t('trials:lugano:message:validState11'))

              loading.close()
              return
            }
          }
        }

        // 新病灶且状态为疑似  不限制（1）
        // if (this.lesionType === 2 && lesionState === 1) {
        //   if (lymphNodes === 1) {
        //     // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
        //     if (!(measureData && (measureData.type === 'Bidirectional' || measureData.type === 'ArrowAnnotate'))) {
        //       // 评估状态为疑似的淋巴结新病灶需使用长短径测量工具或箭头工具添加标记！
        //       this.$confirm(this.$t('trials:reading:warnning:msg41'), {
        //         type: 'warning',
        //         showCancelButton: false,
        //         callback: action => {}
        //       })
        //       loading.close()
        //       return
        //     }
        //   } else {
        //     // 非淋巴结非靶病灶 直径测量工具、箭头工具
        //     if (!(measureData && (measureData.type === 'Length' || measureData.type === 'ArrowAnnotate'))) {
        //       // `评估状态为疑似的非淋巴结新病灶需使用直径测量工具或箭头工具添加标记！`
        //       this.$confirm(this.$t('trials:reading:warnning:msg42'), {
        //         type: 'warning',
        //         showCancelButton: false,
        //         callback: action => {}
        //       })
        //       loading.close()
        //       return
        //     }
        //   }
        // }

        // 新病灶且状态为无法评估（2）
        if (this.lesionType === 2 && lesionState === 2) {
          if (lymphNodes === 1) {
            // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
            if (measureData) {
              // `评估状态为无法评估的淋巴结新病灶不需要添加标记！`
              await this.showValidationDialog(this.$t('trials:reading:warnning:msg43'))

              loading.close()
              return
            }
          } else {
            // 非淋巴结非靶病灶 直径测量工具、箭头工具
            if (measureData) {
              // 评估状态为无法评估的非淋巴结新病灶不需要添加标记！
              await this.showValidationDialog(this.$t('trials:reading:warnning:msg44'))

              loading.close()
              return
            }
          }
        }

        // 新病灶且状态为消失（3）
        if (this.lesionType === 2 && lesionState === 3) {
          if (lymphNodes === 1) {
            // 淋巴结靶病灶 必须使用长短径测量工具、箭头工具
            if (!(measureData && (measureData.type === 'ArrowAnnotate' || (measureData.type === 'Bidirectional' && lesionLength < 15)))) {
              // 评估状态为消失的淋巴结新病灶需使用箭头工具添加标记！
              await this.showValidationDialog(this.$t('trials:reading:warnning:lgmsg45'))

              loading.close()
              return
            }
          } else {
            // 箭头工具
            if (!(measureData && (measureData.type === 'ArrowAnnotate'))) {
              // 评估状态为消失的非淋巴结新病灶需使用箭头工具添加标记！
              await this.showValidationDialog(this.$t('trials:reading:warnning:msg46'))

              loading.close()
              return
            }
          }
        }
        }
      } finally {
        if (loading) loading.close()
        this.saveLoading = false
      }
      DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType, isMarked: !!measureData }, async val => {
        // 靶病灶状态为0（存在）时，一定存在长径或者长短径（长径、十字线 ）
        // 普通靶病灶：长径大于10mm且不小于2倍层厚（基线校验）
        // 淋巴结靶病灶：短径大于15mm且不小于2倍层厚（基线校验）
        var picturePath = ''
        if (val && measureData && this.questionForm.IsDicomReading) {
          var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, val)
          picturePath = pictureObj.isSuccess ? this.$getObjectName(pictureObj.result.url) : ''
        }
        var answers = []
        var reg = new RegExp(/^[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}$/)
        for (const k in this.questionForm) {
          if (reg.test(k)) {
            if (answers.findIndex(i => i.tableQuestionId === k) === -1) {
              answers.push({ tableQuestionId: k, answer: this.questionForm[k] })
            }
          }
        }

        var params = {
          computationTrigger: -2,
          questionId: this.parentQsId,
          rowId: this.questionForm.RowId,
          rowIndex: this.answers.RowIndex,
          visitTaskId: this.visitTaskId,
          trialId: this.trialId,
          measureData: measureData ? JSON.stringify(measureData) : '',
          answerList: answers,
          isCanEditPosition: this.questionForm.IsCanEditPosition,
          studyId: measureData ? this.questionForm.MeasureData.studyId : '',
          seriesId: measureData ? this.questionForm.MeasureData.seriesId : '',
          instanceId: measureData ? this.questionForm.MeasureData.instanceId : '',
          numberOfFrames: measureData && !isNaN(parseInt(this.questionForm.MeasureData.frame)) ? parseInt(this.questionForm.MeasureData.frame) : 0,
          picturePath: picturePath,
          organInfoId: this.questionForm.OrganInfoId,
          markTool: measureData ? measureData.type : ''
        }
        if (this.questionForm.IsDicomReading === false) {
          params.isDicomReading = false
        }
        if (this.deleteInfo) {
          var param = {
            visitTaskId: this.visitTaskId,
            questionId: this.deleteInfo.questionId,
            rowId: this.deleteInfo.rowId
          }
          await deleteReadingRowAnswer(param)
          this.deleteInfo = null
          params.rowId = ''
        }
        try {
          const res = await submitTableQuestion(params)
          if (res.IsSuccess) {
            // 保存成功！
            this.$message.success(this.$t('common:message:savedSuccessfully'))

            this.currentMarkTool = measureData ? measureData.type : ''
            this.$set(this.questionForm, 'saveTypeEnum', 2)
            this.originalQuestionForm = { ...this.questionForm }
            var isLymphLesion = this.getQuestionVal(2)
            var lesionOrgan = this.getQuestionVal(6)
            this.$set(this.questionForm, 'RowId', res.Result.RowId)
            const lesionPart = this.getQuestionVal(8)
            const lesionState = this.getQuestionVal(7)
            this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, lesionState, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
            this.$emit('close')
            DicomEvent.$emit('readingPageUpdate', {})
            DicomEvent.$emit('getReportInfo', true)
            DicomEvent.$emit('setMeasuredToolsPassive')
            if (parseInt(this.answers.SplitOrMergeType) === 0) {
              this.$emit('getReadingQuestionAndAnswer')
            }
          }
          loading.close()
        } catch (e) {
          loading.close()
        }
      })
    },
    async handleDeleteMeasureData() {
      // 是否确认清除标记？
      const confirm = await this.$confirm(
        this.$t('trials:reading:warnning:msg47'),
        {
          type: 'warning',
          distinguishCancelAndClose: true
        }
      )
      if (confirm !== 'confirm') return
      this.stateDisabled = false
      this.organList = []
      await this.getOrganInfoList()
      // 重置长短径 和 状态
      var lengId = this.getQuestionId(0)
      this.$set(this.questionForm, lengId, '')
      var shortId = this.getQuestionId(1)
      this.$set(this.questionForm, shortId, '')
      var stateId = this.getQuestionId(7)
      this.$set(this.questionForm, stateId, '')
      // saveTypeEnum 0：未保存过（新建病灶）；1：已保存，信息不完整（随访初始化病灶/分裂病灶，通过状态判断）
      if (this.questionForm.RowId) {
        this.$set(this.questionForm, 'saveTypeEnum', 1)
      } else {
        this.$set(this.questionForm, 'saveTypeEnum', 0)
      }
      await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
      DicomEvent.$emit('getMeasureData')
      // Store.$emit('updateImage', this.questionForm.MeasureData.instanceId)
      const isLymphLesion = this.getQuestionVal(2)
      const lesionPart = this.getQuestionVal(8)
      const lesionOrgan = this.getQuestionVal(6)
      const lesionLength = ''
      const lesionShort = ''
      const lesionState = this.getQuestionVal(7)

      if (!this.questionForm.IsDicomReading) {
        DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
      }
      this.$set(this.questionForm, 'IsDicomReading', true)

      this.$set(this.questionForm, 'MeasureData', '')
      let anwsers = null
      if (this.answers.measureObj) {
        anwsers = Object.assign({ measureObj: '' }, this.questionForm)
      } else {
        anwsers = Object.assign({}, this.questionForm)
      }
      this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: anwsers })
      if (this.lesionType === 0) {
        this.calculatePPD()
      }
      DicomEvent.$emit('refreshStudyListMeasureData')
    },
    async handleDelete() {
      let message = this.$t('trials:reading:warnning:msg48')
      // 判断该病灶的suvmax是否是最大的
      const suvMax = this.getQuestionVal(20)
      if (this.questionForm.RowId && !!suvMax) {
        const res = await getIsSuvMaxLesion({ visitTaskId: this.visitTaskId, rowId: this.questionForm.RowId })
        if (res.IsSuccess && res.Result.IsSuvMaxLesion) {
          message = this.$t('trials:reading:warnning:msg58')
        }
      }
      const confirm = await this.$confirm(
        message,
        {
          type: 'warning',
          distinguishCancelAndClose: true
        }
      )
      if (confirm !== 'confirm') return
      if (this.questionForm.RowId) {
        const loading = this.$loading({ fullscreen: true })
        var param = {
          visitTaskId: this.visitTaskId,
          questionId: this.parentQsId,
          rowId: this.questionForm.RowId
        }
        try {
          const res = await deleteReadingRowAnswer(param)
          if (res.IsSuccess) {
            if (this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
              await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
            }
            if (!this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
              DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
            }
            this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
            DicomEvent.$emit('getReportInfo', true)
            DicomEvent.$emit('readingPageUpdate', {})
            // '删除成功！'
            this.$message.success(this.$t('common:message:deletedSuccessfully'))
          }
          loading.close()
        } catch (e) {
          console.log(e)
          loading.close()
        }
      } else {
        // 移除新建病灶并关闭窗口
        if (this.questionForm.MeasureData && this.questionForm.IsDicomReading) {
          await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
        }
        if (!this.questionForm.IsDicomReading && this.questionForm.MeasureData) {
          DicomEvent.$emit('removeNoneDicomMeasureData', this.questionForm.MeasureData)
        }
        this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
      }
      DicomEvent.$emit('refreshStudyListMeasureData')
    },
    async handleClose() {
      if (!this.questionForm.RowId) {
        // '当前病灶为新建病灶，未保存。如果关闭窗口，将会删除病灶信息，是否继续？'
        const confirm = await this.$confirm(
          this.$t('trials:reading:warnning:msg49'),
          {
            type: 'warning',
            distinguishCancelAndClose: true
          }
        )
        if (confirm !== 'confirm') return
        if (this.questionForm.MeasureData) {
          await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex })
        }
        DicomEvent.$emit('getMeasureData')
        this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
      } else {
        if (this.questionForm.saveTypeEnum === 1) {
          this.$emit('close')
        } else {
          this.$emit('close')
        }
      }
    },
    setState() {
      this.$nextTick(() => {
        if (this.isCurrentTask && this.readingTaskState < 2) {
          var lesionState = this.getQuestionVal(7)
          if (isNaN(parseInt(lesionState)) && this.answers.IsFristAdd === 'False') {
            if (this.answers.SplitOrMergeType !== '3') {
              const stateId = this.getQuestionId(7)
              this.$set(this.questionForm, stateId, 2)
            }
            const isLymphLesion = this.getQuestionVal(2)
            const lesionPart = this.getQuestionVal(8)
            const lesionOrgan = this.getQuestionVal(6)
            const lesionLength = this.getQuestionVal(0)
            const lesionShort = this.getQuestionVal(1)
            const lesionState = this.getQuestionVal(7)
            this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
          }
        }
      })
    }
  }
}
</script>
<style lang="scss" scoped>
.measurement-form {
  ::v-deep .el-form-item__label {
    color: #c3c3c3;
  }

  ::v-deep .el-input .el-input__inner {
    background-color: transparent;
    color: #ddd;
    border: 1px solid #5e5e5e;
  }

  ::v-deep .el-form-item {
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    flex-wrap: wrap;
  }

  ::v-deep .el-form-item__content {
    flex: 1;
  }

  ::v-deep .el-input.is-disabled .el-input__inner {
    background-color: #646464a1;
  }

  ::v-deep .el-input-group__append,
  .el-input-group__prepend {
    padding: 0 10px;
  }

  ::v-deep .el-select.is-disabled .el-input__inner {
    background-color: #646464a1;
  }

  ::v-deep .el-radio__input.is-disabled.is-checked .el-radio__inner {
    background-color: #428bca;
    border-color: #428bca;
  }

  ::v-deep .el-button--mini,
  .el-button--mini.is-round {
    padding: 7px 10px;
  }

  .el-form-item__content .el-select {
    width: 100%;
  }

  .input-width1 {
    width: calc(100% - 60px) !important;
  }

  .input-width2 {
    width: 100% !important;
  }

  .suv_viewer {
    ::v-deep .viewer-play {
      display: none;
    }
  }
}
</style>
