<template>
  <div class="clinical-data_content">
    <el-tabs
      type="card"
      v-model="clinicalType"
      v-if="!(data.IsVisit || data.IsBaseLine)"
    >
      <div v-if="type === 'readingPeriod'">
        <!--style="margin:0"-->
        <h4>
          <!-- 提示： -->
          {{ $t('trials:readingPeriod:cd:title:tips') }}
        </h4>
        <h5>
          <!-- 当前访视/阅片期需要采集“临床数据名称”。请采集临床数据后，按照模板上传，并签名确认。 -->
          {{ tips1 }}
        </h5>
        <h5>
          {{ $t('trials:readingPeriod:cd:title:tips2') }}
        </h5>
      </div>
      <div class="top">
        <!-- 预览 -->
        <el-button
          type="primary"
          icon="el-icon-view"
          size="small"
          :disabled="list.length === 0"
          @click="handlePreview()"
        >
          {{ $t('trials:readingPeriod:cd:title:preview') }}
        </el-button>
        <!-- 添加 -->
        <el-button
          v-if="
            otherInfo.IsCanAddClinicalData &&
            hasPermi(['trials:trials-panel:subject:readingPeriod:edit']) &&
            clinicalType === '1' &&
            type !== 'consistencyAnalysis'
          "
          type="primary"
          icon="el-icon-plus"
          size="small"
          @click="handleAdd"
        >
          {{ $t('common:button:add') }}
        </el-button>
        <!--下载模板-->
        <el-button
          v-if="
            otherInfo.IsCanAddClinicalData &&
            hasPermi(['trials:trials-panel:subject:readingPeriod:edit']) &&
            clinicalType === '1' &&
            type !== 'consistencyAnalysis'
          "
          type="primary"
          icon="el-icon-download"
          size="small"
          @click="downLoadTemplate"
        >
          {{ $t('trials:readingPeriod:cd:title:downLoadTemplate') }}
        </el-button>
        <el-button
          v-if="
            hasPermi(['trials:trials-panel:subject:readingPeriod:edit']) &&
            clinicalType === '2' &&
            list.length > 0 &&
            list[0].ReadingClinicalDataState !== 3 &&
            list[0].IsCRCApplicationRevoke &&
            type !== 'consistencyAnalysis'
          "
          type="primary"
          icon="el-icon-plus"
          size="small"
          :disabled="list.length === 0"
          @click="handleVerification(list[0], 'unconfirm')"
        >
          撤回审批
        </el-button>
      </div>
      <div class="main">
        <el-table
          v-loading="loading"
          :data="list"
          stripe
          style="width: 100%"
          height="500"
        >
          <el-table-column type="index" width="40" />
          <!-- 临床数据名称 -->
          <el-table-column
            prop="ClinicalDataSetName"
            :label="$t('trials:readingPeriod:cd:table:clinicalDataName')"
            min-width="100"
          />
          <el-table-column
            prop="UploadRole"
            :label="$t('trials:studyList:table:uploader')"
            show-overflow-tooltip
            min-width="100"
          >
            <template slot-scope="scope">
              {{ $fd('ClinicalDataUploadRole', scope.row.UploadRole) }}
            </template>
          </el-table-column>
          <!-- 数据级别 -->
          <el-table-column
            prop="ClinicalDataLevel"
            :label="$t('trials:readingPeriod:cd:table:dataLevel')"
            min-width="100"
          >
            <template slot-scope="scope">
              {{ $fd('ClinicalLevel', scope.row.ClinicalDataLevel) }}
            </template>
          </el-table-column>
          <!-- 传输方式 -->
          <el-table-column
            prop="ClinicalUploadType"
            :label="$t('trials:readingPeriod:cd:table:transferType')"
            min-width="120"
          >
            <template slot-scope="scope">
              {{ $fd('ClinicalUploadType', scope.row.ClinicalUploadType) }}
            </template>
          </el-table-column>
          <!-- 文件数量 -->
          <el-table-column
            prop="FileCount"
            :label="$t('trials:readingPeriod:cd:table:fileCount')"
            min-width="120"
          >
            <template slot-scope="scope">
              {{
                scope.row.ClinicalUploadType === 0 ? 'NA' : scope.row.FileCount
              }}
            </template>
          </el-table-column>
          <!-- 阅片临床数据状态 -->
          <el-table-column
            prop="ReadingClinicalDataState"
            :label="$t('trials:readingPeriod:cd:title:cdStatus')"
            width="150"
          >
            <template slot-scope="scope">
              <el-tag
                v-if="scope.row.ReadingClinicalDataState === 0"
                type="info"
                >{{
                  $fd(
                    'ReadingClinicalDataState',
                    scope.row.ReadingClinicalDataState
                  )
                }}</el-tag
              >
              <el-tag
                v-if="scope.row.ReadingClinicalDataState === 1"
                type="danger"
                >{{
                  $fd(
                    'ReadingClinicalDataState',
                    scope.row.ReadingClinicalDataState
                  )
                }}</el-tag
              >
              <el-tag
                v-if="scope.row.ReadingClinicalDataState === 2"
                type="primary"
                >{{
                  $fd(
                    'ReadingClinicalDataState',
                    scope.row.ReadingClinicalDataState
                  )
                }}</el-tag
              >
              <el-tag
                v-if="scope.row.ReadingClinicalDataState === 3"
                type="warning"
                >{{
                  $fd(
                    'ReadingClinicalDataState',
                    scope.row.ReadingClinicalDataState
                  )
                }}</el-tag
              >
            </template>
          </el-table-column>
          <el-table-column :label="$t('common:action:action')" width="260">
            <template slot-scope="scope">
              <!-- 查看 -->
              <el-button
                circle
                :disabled="
                  scope.row.ClinicalUploadType === 1 &&
                  scope.row.FileCount === 0
                "
                :title="$t('trials:readingPeriod:cd:action:view')"
                icon="el-icon-view"
                @click="handlePreview(scope.row.Id, scope.row)"
              />
              <!-- 编辑 -->
              <el-button
                v-if="clinicalType === '1'"
                v-hasPermi="['trials:trials-panel:subject:readingPeriod:edit']"
                circle
                :title="$t('trials:readingPeriod:cd:action:edit')"
                icon="el-icon-edit-outline"
                :disabled="
                  scope.row.IsCRCUpload ||
                  scope.row.IsSign ||
                  scope.row.UploadRole === 0
                "
                @click="handleEdit(scope.row)"
              />
              <!-- 编辑 -->
              <el-button
                v-hasPermi="['trials:trials-panel:subject:readingPeriod:edit']"
                v-if="clinicalType === '1'"
                circle
                :title="$t('trials:readingPeriod:cd:title:cdCheck')"
                icon="el-icon-s-claim"
                :disabled="
                  (scope.row.IsCRCUpload ||
                    scope.row.IsSign ||
                    scope.row.UploadRole === 0) &&
                  scope.row.ReadingClinicalDataState !== 2
                "
                @click="handleVerification(scope.row, 'confirm')"
              />
              <!-- 删除 -->
              <el-button
                v-if="clinicalType === '1' && type !== 'consistencyAnalysis'"
                v-hasPermi="['trials:trials-panel:subject:readingPeriod:edit']"
                circle
                :title="$t('trials:readingPeriod:cd:action:delete')"
                icon="el-icon-delete"
                :disabled="
                  scope.row.IsCRCUpload ||
                  scope.row.IsSign ||
                  scope.row.UploadRole === 0
                "
                @click="handleDelete(scope.row)"
              />
            </template>
          </el-table-column>
        </el-table>

        <!-- 添加或编辑 -->
        <el-dialog
          v-if="addOrUpdateCD.visible"
          :visible.sync="addOrUpdateCD.visible"
          :close-on-click-modal="false"
          :title="addOrUpdateCD.title"
          width="600px"
          append-to-body
          custom-class="base-dialog-wrapper"
        >
          <AddOrEditCD
            :trial-reading-criterion-id="trialReadingCriterionId"
            :data="currentData"
            :option="currentOption"
            :type="type"
            @close="addOrUpdateCD.visible = false"
            @getList="getList"
          />
        </el-dialog>

        <!-- 核查 -->
        <el-dialog
          v-if="verification.visible"
          :visible.sync="verification.visible"
          :close-on-click-modal="false"
          :title="verification.title"
          width="600px"
          append-to-body
          custom-class="base-dialog-wrapper"
        >
          <Verification
            :data="currentData"
            @close="verification.visible = false"
            @getList="getList"
            @handlePreview="handlePreview"
            @sign="handleSign"
          />
        </el-dialog>

        <!-- 签名 -->
        <el-dialog
          v-if="signVisible"
          :visible.sync="signVisible"
          :close-on-click-modal="false"
          width="600px"
          custom-class="base-dialog-wrapper"
          append-to-body
        >
          <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 v-for="item in $d.GetClinicalType">
      <el-tab-pane :key="item.Id" :label="item.label" :name="item.value.toString()" v-if="item.value===1">
 
      </el-tab-pane>
      </template> -->
    </el-tabs>
    <div v-else>
      <div class="top">
        <!-- 预览 -->
        <el-button
          type="primary"
          icon="el-icon-view"
          size="small"
          :disabled="list.length === 0"
          @click="handlePreview()"
        >
          {{ $t('trials:readingPeriod:cd:title:preview') }}
        </el-button>
        <!-- 添加 -->
        <el-button
          v-if="
            otherInfo.IsCanAddClinicalData &&
            hasPermi(['trials:trials-panel:subject:readingPeriod:edit'])
          "
          type="primary"
          icon="el-icon-plus"
          size="small"
          @click="handleAdd"
        >
          {{ $t('common:button:add') }}
        </el-button>
      </div>
      <div class="main">
        <el-table
          v-loading="loading"
          :data="list"
          stripe
          style="width: 100%"
          height="500"
        >
          <el-table-column type="index" width="40" />
          <!-- 临床数据名称 -->
          <el-table-column
            prop="ClinicalDataSetName"
            :label="$t('trials:readingPeriod:cd:table:clinicalDataName')"
          />
          <el-table-column
            prop="UploadRole"
            :label="$t('trials:studyList:table:uploader')"
            show-overflow-tooltip
          >
            <template slot-scope="scope">
              {{ $fd('ClinicalDataUploadRole', scope.row.UploadRole) }}
            </template>
          </el-table-column>
          <!-- 数据级别 -->
          <el-table-column
            prop="ClinicalDataLevel"
            :label="$t('trials:readingPeriod:cd:table:dataLevel')"
          >
            <template slot-scope="scope">
              {{ $fd('ClinicalLevel', scope.row.ClinicalDataLevel) }}
            </template>
          </el-table-column>
          <!-- 传输方式 -->
          <el-table-column
            prop="ClinicalUploadType"
            :label="$t('trials:readingPeriod:cd:table:transferType')"
          >
            <template slot-scope="scope">
              {{ $fd('ClinicalUploadType', scope.row.ClinicalUploadType) }}
            </template>
          </el-table-column>
          <!-- 文件数量 -->
          <el-table-column
            prop="FileCount"
            :label="$t('trials:readingPeriod:cd:table:fileCount')"
          >
            <template slot-scope="scope">
              {{
                scope.row.ClinicalUploadType === 0 ? 'NA' : scope.row.FileCount
              }}
            </template>
          </el-table-column>
          <!-- 阅片临床数据状态 -->
          <el-table-column
            prop="ReadingClinicalDataState"
            :label="$t('trials:readingPeriod:cd:title:cdStatus')"
            width="150"
          >
            <template slot-scope="scope">
              <el-tag
                v-if="scope.row.ReadingClinicalDataState === 0"
                type="info"
                >{{
                  $fd(
                    'ReadingClinicalDataState',
                    scope.row.ReadingClinicalDataState
                  )
                }}</el-tag
              >
              <el-tag
                v-if="scope.row.ReadingClinicalDataState === 1"
                type="danger"
                >{{
                  $fd(
                    'ReadingClinicalDataState',
                    scope.row.ReadingClinicalDataState
                  )
                }}</el-tag
              >
              <el-tag
                v-if="scope.row.ReadingClinicalDataState === 2"
                type="primary"
                >{{
                  $fd(
                    'ReadingClinicalDataState',
                    scope.row.ReadingClinicalDataState
                  )
                }}</el-tag
              >
              <el-tag
                v-if="scope.row.ReadingClinicalDataState === 3"
                type="warning"
                >{{
                  $fd(
                    'ReadingClinicalDataState',
                    scope.row.ReadingClinicalDataState
                  )
                }}</el-tag
              >
            </template>
          </el-table-column>
          <el-table-column :label="$t('common:action:action')" width="260">
            <template slot-scope="scope">
              <!-- 查看 -->
              <el-button
                circle
                :disabled="
                  scope.row.ClinicalUploadType === 1 &&
                  scope.row.FileCount === 0
                "
                :title="$t('trials:readingPeriod:cd:action:view')"
                icon="el-icon-view"
                @click="handlePreview(scope.row.Id, scope.row)"
              />
              <!-- 编辑 -->
              <el-button
                v-hasPermi="['trials:trials-panel:subject:readingPeriod:edit']"
                circle
                :title="$t('trials:readingPeriod:cd:action:edit')"
                icon="el-icon-edit-outline"
                :disabled="
                  scope.row.IsCRCUpload ||
                  scope.row.IsSign ||
                  scope.row.UploadRole === 0 ||
                  (type === 'consistencyAnalysis' &&
                    scope.row.ReadingClinicalDataState === 3)
                "
                @click="handleEdit(scope.row)"
              />
              <!-- 编辑 -->
              <el-button
                v-hasPermi="['trials:trials-panel:subject:readingPeriod:edit']"
                circle
                :title="$t('trials:readingPeriod:cd:title:cdCheck')"
                icon="el-icon-s-claim"
                :disabled="
                  (scope.row.IsCRCUpload ||
                    scope.row.IsSign ||
                    scope.row.UploadRole === 0 ||
                    type === 'consistencyAnalysis') &&
                  scope.row.ReadingClinicalDataState !== 2
                "
                @click="handleVerification(scope.row, 'confirm')"
              />
              <!-- 删除 -->
              <el-button
                v-hasPermi="['trials:trials-panel:subject:readingPeriod:edit']"
                circle
                :title="$t('trials:readingPeriod:cd:action:delete')"
                icon="el-icon-delete"
                :disabled="
                  scope.row.IsCRCUpload ||
                  scope.row.IsSign ||
                  scope.row.UploadRole === 0
                "
                @click="handleDelete(scope.row)"
              />
            </template>
          </el-table-column>
        </el-table>

        <!-- 添加 -->
        <el-dialog
          v-if="addOrUpdateCD.visible"
          :visible.sync="addOrUpdateCD.visible"
          :close-on-click-modal="false"
          :title="addOrUpdateCD.title"
          width="600px"
          append-to-body
          custom-class="base-dialog-wrapper"
        >
          <AddOrEditCD
            :trial-reading-criterion-id="trialReadingCriterionId"
            :data="currentData"
            @close="addOrUpdateCD.visible = false"
            @getList="getList"
          />
        </el-dialog>

        <!-- 核查 -->
        <el-dialog
          v-if="verification.visible"
          :visible.sync="verification.visible"
          :close-on-click-modal="false"
          :title="verification.title"
          width="600px"
          append-to-body
          custom-class="base-dialog-wrapper"
        >
          <Verification
            :data="currentData"
            @close="verification.visible = false"
            @getList="getList"
            @handlePreview="handlePreview"
            @sign="handleSign"
          />
        </el-dialog>

        <!-- 签名 -->
        <el-dialog
          v-if="signVisible"
          :visible.sync="signVisible"
          :close-on-click-modal="false"
          width="600px"
          custom-class="base-dialog-wrapper"
          append-to-body
        >
          <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>
    </div>
  </div>
</template>
<script>
import {
  getReadingClinicalDataList,
  deleteReadingClinicalData,
  ReadClinicalDataSign,
  getTrialClinicalDataSelect,
  getConsistencyAnalysisReadingClinicalDataList,
  signConsistencyAnalysisReadingClinicalData,
} from '@/api/trials'
import AddOrEditCD from './AddOrEditCD'
import Verification from './Verification'
import SignForm from '@/views/trials/components/newSignForm'
import const_ from '@/const/sign-code'
import { getToken } from '@/utils/auth'
import { downLoadFile } from '@/utils/stream.js'
export default {
  name: 'ClinicalData',
  components: { AddOrEditCD, SignForm, Verification },
  props: {
    trialReadingCriterionId: {
      type: String,
      default() {
        return ''
      },
    },
    data: {
      type: Object,
      default() {
        return {}
      },
    },
    type: {
      default: 'readingPeriod',
    },
  },
  watch: {
    clinicalType() {
      this.getList()
    },
  },
  data() {
    return {
      clinicalType: null,
      loading: false,
      searchData: {},
      list: [],
      total: 0,
      dialogVisible: false,
      addOrUpdateCD: { title: '', visible: false },
      verification: { title: '', visible: false },
      currentData: {},
      currentOption: [],
      signCode: '',
      currentUser: zzSessionStorage.getItem('userName'),
      signVisible: false,
      otherInfo: {},
      spanArr: [],
      pos: 0,
      tips1: null,
      clinicalDatas: [],
    }
  },
  mounted() {
    if (!(this.data.IsVisit || this.data.IsBaseLine)) {
      // this.clinicalType = this.$d.GetClinicalType[0].value.toString();
      this.clinicalType = '1'
    } else {
      this.getList(true)
    }
    window.addEventListener('message', (res) => {
      if (res.data.type === 'pmConfirmClinical') {
        this.getList()
      }
    })
  },
  methods: {
    //  下载模板
    async downLoadTemplate() {
      try {
        let { files, name } = this.formatDownloadFile()
        let res = await downLoadFile(files, name, 'zip')
      } catch (err) {
        console.log(err)
      }
    },
    // 格式化下载文件路径
    formatDownloadFile() {
      let files = [],
        name = `${this.$route.query.trialId}_${
          this.data.CriterionName
        }_template_${new Date().getTime()}.zip`
      this.clinicalDatas.forEach((item) => {
        if (item.Path) {
          let obj = {
            name: item.FileName,
            url: this.OSSclientConfig.basePath + item.Path,
          }
          files.push(obj)
        }
      })
      return { files, name }
    },
    getClinicalDatas() {
      return new Promise((resolve, reject) => {
        let message = ''
        let currentData = Object.assign(
          {},
          {
            TrialId: this.data.TrialId,
            ReadingId: this.data.Id,
            IsVisit: this.data.IsVisit,
            SubjectId: this.data.SubjectId,
            IsBaseLine: this.data.IsBaseLine,
          }
        )
        var param = {
          trialId: currentData.TrialId,
          IsVisit: currentData.IsVisit,
          ReadingId: currentData.ReadingId,
          SubjectId: currentData.SubjectId,
          ReadingClinicalDataId: currentData.Id ? currentData.Id : '',
          IsBaseLine: currentData.IsBaseLine,
          TrialReadingCriterionId: this.trialReadingCriterionId,
        }
        getTrialClinicalDataSelect(param)
          .then((res) => {
            this.clinicalDatas = res.Result
            res.Result.forEach((item, index) => {
              if (index < 1) {
                message += item.ClinicalDataSetName
              } else {
                message = message + '、' + item.ClinicalDataSetName
              }
            })
            resolve(message)
          })
          .catch(() => {
            reject()
          })
      })
    },
    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
      if (columnIndex === 6 && row.IsNeedMerge) {
        const _row = this.spanArr[rowIndex]
        const _col = _row > 0 ? 1 : 0
        return {
          rowspan: _row,
          colspan: _col,
        }
      }
    },
    getSpanArr(data) {
      for (var i = 0; i < data.length; i++) {
        if (i === 0) {
          this.spanArr.push(1)
          this.pos = 0
        } else {
          // 判断当前元素与上一个元素是否相同
          if (data[i].IsNeedMerge === data[i - 1].IsNeedMerge) {
            this.spanArr[this.pos] += 1
            this.spanArr.push(0)
          } else {
            this.spanArr.push(1)
            this.pos = i
          }
        }
      }
    },
    getList(is) {
      this.loading = true
      if (this.type === 'consistencyAnalysis') {
        let data = {
          SubjectId: this.data.SubjectId,
          VisitTaskId: this.data.Id,
          TrialId: this.$route.query.trialId,
        }
        return getConsistencyAnalysisReadingClinicalDataList(data)
          .then((res) => {
            this.list = res.Result
            this.otherInfo = res.OtherInfo
            this.loading = false
          })
          .catch(() => {
            this.loading = false
          })
      }
      this.searchData.ReadingId = this.data.Id
      this.searchData.SubjectId = this.data.SubjectId
      this.searchData.IsVisit = this.data.IsVisit
      this.searchData.TrialId = this.data.TrialId
      this.searchData.IsBaseLine = this.data.IsBaseLine
      this.searchData.TrialReadingCriterionId = this.trialReadingCriterionId
      if (!is) {
        this.searchData.GetClinicalType = this.clinicalType
      }
      getReadingClinicalDataList(this.searchData)
        .then(async (res) => {
          this.list = res.Result
          let message = ''
          this.list.forEach((item, index) => {
            if (index < 1) {
              message += item.ClinicalDataSetName
            } else {
              message = message + '、' + item.ClinicalDataSetName
            }
          })
          if (message === '' || !message) {
            message = await this.getClinicalDatas()
          }
          this.tips1 = this.$t('trials:readingPeriod:cd:title:tips1').replace(
            '临床数据名称',
            message
          )
          this.tips1 = this.tips1.replace('xxx', message)
          this.pos = 0
          this.getSpanArr(this.list)
          this.otherInfo = res.OtherInfo
          this.loading = false
        })
        .catch(() => {
          this.loading = false
        })
    },
    handleAdd() {
      this.currentData = Object.assign(
        {},
        {
          TrialId: this.data.TrialId,
          ReadingId: this.data.Id,
          IsVisit: this.data.IsVisit,
          SubjectId: this.data.SubjectId,
          IsBaseLine: this.data.IsBaseLine,
        }
      )
      this.addOrUpdateCD.title = this.$t('common:button:new')
      this.addOrUpdateCD.visible = true
    },
    handleEdit(row) {
      this.currentData = { ...row }
      this.currentData.TrialId = this.data.TrialId
      this.currentData.SubjectId = this.data.SubjectId
      if (this.type === 'readingPeriod') {
        this.currentData.ReadingId = this.data.Id
      }
      this.currentData.IsVisit = this.data.IsVisit
      this.currentData.IsBaseLine = this.data.IsBaseLine
      this.addOrUpdateCD.title = this.$t('common:button:edit')
      this.currentOption = [
        {
          ClinicalDataSetName:
            this.$i18n.locale === 'zh'
              ? row.ClinicalDataSetName
              : row.ClinicalDataSetEnName,
          Id: row.ClinicalDataTrialSetId,
        },
      ]
      this.addOrUpdateCD.visible = true
    },
    handleVerification(row, type) {
      if (type === 'unconfirm') {
        var token = getToken()
        let routeData = this.$router.resolve({
          path: `/clinicalData?type=unconfirm&ClinicalDataTrialSetId=${
            row.ClinicalDataTrialSetId
          }&subjectId=${this.data.SubjectId}&trialId=${
            this.data.TrialId
          }&readingId=${this.data.Id}&readingClinicalDataId=${
            row.readingClinicalDataId || ''
          }&readModuleId=${row.ReadModuleId}&getClinicalType=${
            this.clinicalType
          }&isConfirm=1&IsOnlyGetCRCReadModule=1&TokenKey=${token}`,
        })
        if (this.type === 'consistencyAnalysis') {
          routeData = this.$router.resolve({
            path: `/clinicalData?type=unconfirm&ClinicalDataTrialSetId=${
              row.ClinicalDataTrialSetId
            }&subjectId=${this.data.SubjectId}&trialId=${
              this.data.TrialId
            }&visitTaskId=${this.data.Id}&readingClinicalDataId=${
              row.readingClinicalDataId || ''
            }&readModuleId=${row.ReadModuleId}&getClinicalType=${
              this.clinicalType
            }&isConfirm=1&IsOnlyGetCRCReadModule=1&TokenKey=${token}&&isGetAllConsistencyAnalysis=${0}`,
          })
        }
        window.open(routeData.href, '_blank')
        return
      }
      if (row.IsNeedMerge) {
        var token = getToken()
        let routeData = this.$router.resolve({
          path: `/clinicalData?ClinicalDataTrialSetId=${
            row.ClinicalDataTrialSetId
          }&subjectId=${this.data.SubjectId}&trialId=${
            this.data.TrialId
          }&readingId=${this.data.Id}&readingClinicalDataId=${
            row.readingClinicalDataId || ''
          }&readModuleId=${row.ReadModuleId}&getClinicalType=${
            this.clinicalType
          }&isConfirm=1&IsOnlyGetCRCReadModule=1&TokenKey=${token}`,
        })
        if (this.type === 'consistencyAnalysis') {
          routeData = this.$router.resolve({
            path: `/clinicalData?ClinicalDataTrialSetId=${
              row.ClinicalDataTrialSetId
            }&subjectId=${this.data.SubjectId}&trialId=${
              this.data.TrialId
            }&visitTaskId=${this.data.Id}&readingClinicalDataId=${
              row.readingClinicalDataId || ''
            }&readModuleId=${row.ReadModuleId}&getClinicalType=${
              this.clinicalType
            }&isConfirm=1&IsOnlyGetCRCReadModule=1&TokenKey=${token}&&isGetAllConsistencyAnalysis=${0}`,
          })
        }
        window.open(routeData.href, '_blank')
      } else {
        this.currentData = { ...row }
        this.currentData.TrialId = this.data.TrialId
        this.currentData.SubjectId = this.data.SubjectId
        if (this.type === 'readingPeriod') {
          this.currentData.ReadingId = this.data.Id
        }
        this.currentData.IsVisit = this.data.IsVisit
        this.currentData.IsBaseLine = this.data.IsBaseLine
        this.verification.title = this.$t(
          'trials:readingPeriod:cd:title:cdCheck'
        ) // '核查'
        this.verification.visible = true
      }
    },
    handleDelete(row) {
      this.$confirm(this.$t('trials:readingPeriod:cd:message:delete'), {
        type: 'warning',
        distinguishCancelAndClose: true,
      })
        .then(() => {
          this.loading = true
          deleteReadingClinicalData(row.Id)
            .then((res) => {
              this.loading = false
              if (res.IsSuccess) {
                this.getList()
                this.$message.success(
                  this.$t('common:message:deletedSuccessfully')
                )
              }
            })
            .catch(() => {
              this.loading = false
            })
        })
        .catch(() => {})
    },
    handleSign(from) {
      // this.currentData = { ...row }
      this.currentData.IsBlind = from.IsBlind
      this.currentData.IsComplete = from.IsComplete
      const { CDQualityConfirmation } = const_.processSignature
      this.signCode = CDQualityConfirmation
      this.signVisible = true
    },
    signConfirm(signInfo) {
      this.loading = true
      let params = {
        data: {
          readingClinicalDataId: this.currentData.Id,
          IsBlind: this.currentData.IsBlind,
          IsComplete: this.currentData.IsComplete,
          TrialReadingCriterionId: this.trialReadingCriterionId,
        },
        signInfo: signInfo,
      }
      if (this.type === 'consistencyAnalysis') {
        params = {
          data: {
            consistentClinicalDataId: this.currentData.Id,
            IsBlind: this.currentData.IsBlind,
            IsComplete: this.currentData.IsComplete,
          },
          signInfo: signInfo,
        }
        signConsistencyAnalysisReadingClinicalData(params)
          .then((res) => {
            this.loading = false
            if (res.IsSuccess) {
              this.$message.success(this.$t('common:message:savedSuccessfully'))
              this.$refs['signForm'].btnLoading = false

              this.signVisible = false

              this.getList()
              this.$emit('getList')
              this.$nextTick(() => {
                this.verification.visible = false
              })
            }
          })
          .catch((_) => {
            this.loading = false
            this.$refs['signForm'].btnLoading = false
          })
      } else {
        ReadClinicalDataSign(params)
          .then((res) => {
            this.loading = false
            if (res.IsSuccess) {
              this.$message.success(this.$t('common:message:savedSuccessfully'))
              this.$refs['signForm'].btnLoading = false

              this.signVisible = false

              this.getList()
              this.$emit('getList')
              this.$nextTick(() => {
                this.verification.visible = false
              })
            }
          })
          .catch((_) => {
            this.loading = false
            this.$refs['signForm'].btnLoading = false
          })
      }
    },
    // 关闭签名框并设置确认状态
    closeSignDialog(isSign, signInfo) {
      if (isSign) {
        this.signConfirm(signInfo)
      } else {
        this.signVisible = false
        this.loading = false
      }
    },
    handlePreview(readingClinicalDataId, row) {
      if (row && row.IsNeedMerge) {
        var token = getToken()
        let routeData = this.$router.resolve({
          path: `/clinicalData?ClinicalDataTrialSetId=${
            row.ClinicalDataTrialSetId
          }&subjectId=${this.data.SubjectId}&trialId=${
            this.data.TrialId
          }&readingId=${this.data.Id}&readingClinicalDataId=${
            row.readingClinicalDataId || ''
          }&getClinicalType=${this.clinicalType}&readModuleId=${
            row.ReadModuleId
          }&IsOnlyGetCRCReadModule=1&TokenKey=${token}`,
        })
        if (this.type === 'consistencyAnalysis') {
          routeData = this.$router.resolve({
            path: `/clinicalData?ClinicalDataTrialSetId=${
              row.ClinicalDataTrialSetId
            }&subjectId=${this.data.SubjectId}&trialId=${
              this.data.TrialId
            }&visitTaskId=${this.data.Id}&readingClinicalDataId=${
              row.readingClinicalDataId || ''
            }&getClinicalType=${this.clinicalType}&readModuleId=${
              row.ReadModuleId
            }&IsOnlyGetCRCReadModule=1&TokenKey=${token}&&isGetAllConsistencyAnalysis=${0}`,
          })
        }
        window.open(routeData.href, '_blank')
      } else {
        var token = getToken()
        var routeData
        if (row) {
          routeData = this.$router.resolve({
            path: `/clinicalData?ClinicalDataTrialSetId=${
              row.ClinicalDataTrialSetId
            }&subjectId=${this.data.SubjectId}&trialId=${
              this.data.TrialId
            }&readingId=${this.data.Id}&readingClinicalDataId=${
              readingClinicalDataId || ''
            }&getClinicalType=${this.clinicalType}&TokenKey=${token}`,
          })
          if (this.type === 'consistencyAnalysis') {
            routeData = this.$router.resolve({
              path: `/clinicalData?ClinicalDataTrialSetId=${
                row.ClinicalDataTrialSetId
              }&subjectId=${this.data.SubjectId}&trialId=${
                this.data.TrialId
              }&visitTaskId=${this.data.Id}&readingClinicalDataId=${
                readingClinicalDataId || ''
              }&getClinicalType=${
                this.clinicalType
              }&TokenKey=${token}&&isGetAllConsistencyAnalysis=${0}`,
            })
          }
        } else {
          routeData = this.$router.resolve({
            path: `/clinicalData?subjectId=${this.data.SubjectId}&trialId=${
              this.data.TrialId
            }&readingId=${this.data.Id}&readingClinicalDataId=${
              readingClinicalDataId || ''
            }&getClinicalType=${this.clinicalType}&TokenKey=${token}`,
          })
          if (this.type === 'consistencyAnalysis') {
            routeData = this.$router.resolve({
              path: `/clinicalData?subjectId=${this.data.SubjectId}&trialId=${
                this.data.TrialId
              }&visitTaskId=${this.data.Id}&readingClinicalDataId=${
                readingClinicalDataId || ''
              }&getClinicalType=${
                this.clinicalType
              }&TokenKey=${token}&&isGetAllConsistencyAnalysis=${0}`,
            })
          }
        }
        window.open(routeData.href, '_blank')
      }
    },
  },
}
</script>
<style lang="scss" scoped>
.clinical-data_content {
  .top {
    text-align: right;
  }
  ::v-deep .el-divider--horizontal {
    margin: 10px;
  }
}
</style>
