169 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
<template>
 | 
						|
  <div v-loading="loading" class="preview-wrapper">
 | 
						|
    <div class="left-wrapper">
 | 
						|
      <div class="basic-info">
 | 
						|
        <span v-if="srInfo.SubjectCode">{{ `${srInfo.SubjectCode}` }}</span>
 | 
						|
        <span v-if="srInfo.TaskBlindName">({{ `${srInfo.TaskBlindName}` }})</span>
 | 
						|
      </div>
 | 
						|
      <div class="basic-content">
 | 
						|
        <div v-for="(item,index) in srInfo.SrList" :key="index" class="sr-wrapper">
 | 
						|
 | 
						|
          <div class="sr-item" :class="{activeBtn:index === selectedIdx}" @click.prevent="preview(item,index)">
 | 
						|
            {{ index+1 }}
 | 
						|
          </div>
 | 
						|
        </div>
 | 
						|
      </div>
 | 
						|
      <!-- <div v-else class="basic-content-empty">
 | 
						|
        <span>{{ $t('trials:clinicaldara:title:nodata') }}</span>
 | 
						|
      </div> -->
 | 
						|
    </div>
 | 
						|
    <div class="right-wrapper">
 | 
						|
      <template v-for="item in srhtmls">
 | 
						|
        <div v-if="item.index === selectedIdx" :key="item.index" class="right-content" v-html="item.htmlData" />
 | 
						|
      </template>
 | 
						|
    </div>
 | 
						|
  </div>
 | 
						|
</template>
 | 
						|
<script>
 | 
						|
import axios from 'axios'
 | 
						|
export default {
 | 
						|
  name: 'SrList',
 | 
						|
  props: {
 | 
						|
    srInfo: {
 | 
						|
      type: Object,
 | 
						|
      default() {
 | 
						|
        return {}
 | 
						|
      }
 | 
						|
    }
 | 
						|
  },
 | 
						|
  data() {
 | 
						|
    return {
 | 
						|
      isShow: false,
 | 
						|
      selectedIdx: -1,
 | 
						|
      loading: false,
 | 
						|
      srhtmls: [],
 | 
						|
      seletedHtml: ''
 | 
						|
    }
 | 
						|
  },
 | 
						|
  mounted() {
 | 
						|
    this.initList()
 | 
						|
  },
 | 
						|
  methods: {
 | 
						|
    async initList() {
 | 
						|
      if (this.srInfo.SrList.length > 0) {
 | 
						|
        this.loading = true
 | 
						|
        for (let i = 0; i < this.srInfo.SrList.length; i++) {
 | 
						|
          var htmlUrl = this.OSSclientConfig.basePath + this.srInfo.SrList[i]
 | 
						|
          var res = await axios.get(htmlUrl)
 | 
						|
          this.srhtmls.push({ index: i, htmlData: res.data })
 | 
						|
        }
 | 
						|
        this.loading = false
 | 
						|
 | 
						|
        this.selectedIdx = 0
 | 
						|
        // this.getHtml(this.srInfo.SrList[0], 0)
 | 
						|
      }
 | 
						|
    },
 | 
						|
    getHtml(url, index) {
 | 
						|
      this.loading = true
 | 
						|
      var htmlUrl = this.OSSclientConfig.basePath + url
 | 
						|
      axios.get(htmlUrl).then(response => {
 | 
						|
        this.seletedHtml = response.data
 | 
						|
        this.srhtmls.push({ index: index, htmlData: response.data })
 | 
						|
 | 
						|
        this.loading = false
 | 
						|
        return
 | 
						|
      }).catch(() => {
 | 
						|
        this.loading = false
 | 
						|
      })
 | 
						|
    },
 | 
						|
 | 
						|
    preview(url, index) {
 | 
						|
      // var i = this.srhtmls.findIndex(i => i.index === index)
 | 
						|
      // if (i === -1) {
 | 
						|
      //   this.getHtml(url, index)
 | 
						|
      // } else {
 | 
						|
      //   this.seletedHtml = this.srhtmls[i].htmlData
 | 
						|
      // }
 | 
						|
      this.selectedIdx = index
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
</script>
 | 
						|
<style lang="scss">
 | 
						|
.preview-wrapper{
 | 
						|
  display: flex;
 | 
						|
  flex-direction: row !important;
 | 
						|
  width: 100%;
 | 
						|
  height: 100%;
 | 
						|
  padding: 5px;
 | 
						|
  overflow: hidden;
 | 
						|
  ::-webkit-scrollbar {
 | 
						|
    width: 7px;
 | 
						|
    height: 7px;
 | 
						|
  }
 | 
						|
  ::-webkit-scrollbar-thumb {
 | 
						|
    border-radius: 10px;
 | 
						|
    background: #d0d0d0;
 | 
						|
  }
 | 
						|
  .left-wrapper{
 | 
						|
    box-sizing: border-box;
 | 
						|
    margin-right: 10px;
 | 
						|
    height: 100%;
 | 
						|
    width: 150px;
 | 
						|
    border: 1px solid #ddd;
 | 
						|
 | 
						|
    .basic-info{
 | 
						|
      height: 30px;
 | 
						|
      line-height: 30px;
 | 
						|
      padding: 5px 10px;
 | 
						|
      font-size: 20px;
 | 
						|
      font-weight: bold;
 | 
						|
      background-color: #fff;
 | 
						|
      color: #fbfbfb;
 | 
						|
    }
 | 
						|
    .activeBtn{
 | 
						|
      color: #428bca;
 | 
						|
      border-color: #428bca;
 | 
						|
    }
 | 
						|
    .basic-content{
 | 
						|
      height: 100%;
 | 
						|
      overflow: auto;
 | 
						|
    }
 | 
						|
    .basic-content-empty{
 | 
						|
      padding: 5px;
 | 
						|
      font-size: 16px;
 | 
						|
    }
 | 
						|
    .sr-wrapper{
 | 
						|
      padding: 5px;
 | 
						|
 | 
						|
    }
 | 
						|
    .sr-item{
 | 
						|
      box-sizing: border-box;
 | 
						|
      border-bottom: 2px solid #f3f3f3;
 | 
						|
      height: 30px;
 | 
						|
      line-height: 30px;
 | 
						|
      cursor: pointer;
 | 
						|
      padding-left: 5px;
 | 
						|
      overflow: hidden;
 | 
						|
      white-space: nowrap;
 | 
						|
      text-overflow: ellipsis;
 | 
						|
    }
 | 
						|
  }
 | 
						|
  .right-wrapper{
 | 
						|
    flex: 1;
 | 
						|
    height: 100%;
 | 
						|
    border: 1px solid #ddd;
 | 
						|
  }
 | 
						|
  .right-content{
 | 
						|
    height:100%;
 | 
						|
    overflow-y: auto;
 | 
						|
    padding: 0 10px;
 | 
						|
    // color: #ddd;
 | 
						|
    .footnote{
 | 
						|
      display: none;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
}
 | 
						|
</style>
 |