200 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			200 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
<template>
 | 
						|
  <div ref="workload_list" class="workload_list">
 | 
						|
    <div class="list-title" :style="{fontSize:size}">Latest 10 Reads</div>
 | 
						|
    <div class="list-header">
 | 
						|
      <ul :style="{fontSize:size}">
 | 
						|
        <li style="width:5%">No</li>
 | 
						|
        <li style="width:20%">Reviewer Code</li>
 | 
						|
        <li style="width:20%">Name</li>
 | 
						|
        <li style="width:20%">Trial ID</li>
 | 
						|
        <li style="width:5%">TP</li>
 | 
						|
        <li style="width:5%">AD</li>
 | 
						|
        <li style="width:5%">GL</li>
 | 
						|
        <li style="width:10%">Total</li>
 | 
						|
      </ul>
 | 
						|
    </div>
 | 
						|
    <vue-seamless-scroll
 | 
						|
      v-if="h"
 | 
						|
      :data="dataList"
 | 
						|
      :class-option="optionSetting"
 | 
						|
      class="seamless-warp"
 | 
						|
      :style="{height:h}"
 | 
						|
    >
 | 
						|
      <ul>
 | 
						|
        <li v-for="(item, index) in dataList" :key="index" :style="{fontSize:liSize}">
 | 
						|
          <span style="width:5%" v-text="item.No" />
 | 
						|
          <span style="width:20%" v-text="item.ReviewerCode" />
 | 
						|
          <span style="width:20%" v-text="item.Name" />
 | 
						|
          <span style="width:20%" v-text="item.TrialCode" />
 | 
						|
          <span style="width:5%" v-text="item.Timepoint" />
 | 
						|
          <span style="width:5%" v-text="item.Adjudication" />
 | 
						|
          <span style="width:5%" v-text="item.Global" />
 | 
						|
          <span style="width:10%" v-text="item.TotalReadingCount" />
 | 
						|
        </li>
 | 
						|
      </ul>
 | 
						|
    </vue-seamless-scroll>
 | 
						|
  </div>
 | 
						|
</template>
 | 
						|
 | 
						|
<script>
 | 
						|
import vueSeamlessScroll from 'vue-seamless-scroll'
 | 
						|
import { getLatestWorkLoadList } from '@/api/dashboard'
 | 
						|
import { fontSize } from 'utils/fontsize'
 | 
						|
const Count = 10
 | 
						|
export default {
 | 
						|
  components: {
 | 
						|
    vueSeamlessScroll
 | 
						|
  },
 | 
						|
  props: {
 | 
						|
    height: { type: String, default: '' }
 | 
						|
  },
 | 
						|
  data() {
 | 
						|
    return {
 | 
						|
      dataList: [],
 | 
						|
      h: '',
 | 
						|
      length: 0,
 | 
						|
      size: '',
 | 
						|
      liSize: ''
 | 
						|
    }
 | 
						|
  },
 | 
						|
  computed: {
 | 
						|
    optionSetting() {
 | 
						|
      return {
 | 
						|
        step: 0.3, // 数值越大速度滚动越快
 | 
						|
 | 
						|
        limitMoveNum: 2, // 开始无缝滚动的数据量 this.dataList.length
 | 
						|
 | 
						|
        hoverStop: true, // 是否开启鼠标悬停stop
 | 
						|
 | 
						|
        direction: 1 // 0向下 1向上 2向左 3向右
 | 
						|
 | 
						|
        // openWatch: true, // 开启数据实时监控刷新dom
 | 
						|
 | 
						|
        // singleHeight: 30 // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
 | 
						|
 | 
						|
        // singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
 | 
						|
 | 
						|
        // waitTime: 1000 // 单步运动停止的时间(默认值1000ms)
 | 
						|
      }
 | 
						|
    }
 | 
						|
  },
 | 
						|
  watch: {
 | 
						|
    height() {
 | 
						|
      this.setHeight()
 | 
						|
    }
 | 
						|
  },
 | 
						|
  created() {
 | 
						|
    this.$nextTick(() => {
 | 
						|
      this.getData()
 | 
						|
    })
 | 
						|
  },
 | 
						|
 | 
						|
  mounted() {
 | 
						|
    this.size = fontSize(0.17) + 'px'
 | 
						|
    this.liSize = fontSize(0.16) + 'px'
 | 
						|
    this.$nextTick(() => {
 | 
						|
      setTimeout(() => {
 | 
						|
        this.getData() // 保证在dom加载前获取数据再渲染
 | 
						|
      }, 500)
 | 
						|
    })
 | 
						|
  },
 | 
						|
  methods: {
 | 
						|
    setHeight() {
 | 
						|
      const wrapperH = this.height
 | 
						|
      this.h = wrapperH.substring(0, wrapperH.indexOf('px')) - (document.body.clientWidth / 20) * 0.65 - 30 + 'px'
 | 
						|
    },
 | 
						|
    getData() {
 | 
						|
      getLatestWorkLoadList(Count).then(res => {
 | 
						|
        if (res.IsSuccess) {
 | 
						|
          const data = res.Result
 | 
						|
          this.length = res.Result.length
 | 
						|
          data.forEach((element, index) => {
 | 
						|
            element.No = index + 1
 | 
						|
            element.Name = `${element.FirstName} ${element.LastName}`
 | 
						|
            this.dataList.push(element)
 | 
						|
            this.setHeight()
 | 
						|
          })
 | 
						|
        } else {
 | 
						|
          this.$message({ message: res.ErrorMessage, type: 'error' })
 | 
						|
        }
 | 
						|
      })
 | 
						|
      // .catch(error => {
 | 
						|
      //   this.$message({ message: error, type: 'error' })
 | 
						|
      // })
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
</script>
 | 
						|
<style scoped>
 | 
						|
.workload_list {
 | 
						|
  overflow: hidden;
 | 
						|
  box-sizing: border-box;
 | 
						|
}
 | 
						|
.workload_list .list-title {
 | 
						|
  color: #fff;
 | 
						|
  height: 2rem;
 | 
						|
  line-height: 2rem;
 | 
						|
  /* font-size: 1rem; */
 | 
						|
  font-weight: bold;
 | 
						|
  padding-left: 4%;
 | 
						|
  text-align: center;
 | 
						|
}
 | 
						|
.workload_list .list-header {
 | 
						|
  padding: 0px 4%;
 | 
						|
}
 | 
						|
.workload_list .list-header ul {
 | 
						|
  list-style: none;
 | 
						|
  display: flex;
 | 
						|
  justify-content: space-between;
 | 
						|
  align-items: center;
 | 
						|
  margin: 0px;
 | 
						|
  padding: 0px;
 | 
						|
  border-bottom: 1px solid #155fe3;
 | 
						|
}
 | 
						|
.workload_list .list-header li {
 | 
						|
  display: inline-block;
 | 
						|
  line-height: 0.9rem;
 | 
						|
  /* float: left; */
 | 
						|
  /* font-size: 0.9rem; */
 | 
						|
  color: #fce630;
 | 
						|
  font-weight: bold;
 | 
						|
  text-align: center;
 | 
						|
  word-wrap: break-word !important;
 | 
						|
  word-break: keep-all;
 | 
						|
}
 | 
						|
 | 
						|
.list-main {
 | 
						|
  width: 100%;
 | 
						|
}
 | 
						|
.seamless-warp {
 | 
						|
  height: 50%;
 | 
						|
  overflow: hidden;
 | 
						|
  padding: 0 4%;
 | 
						|
}
 | 
						|
 | 
						|
.seamless-warp ul {
 | 
						|
  list-style: none;
 | 
						|
 | 
						|
  padding: 0;
 | 
						|
 | 
						|
  margin: 0 auto;
 | 
						|
}
 | 
						|
 | 
						|
.seamless-warp li {
 | 
						|
  height: 1.5rem;
 | 
						|
  line-height: 1.5rem;
 | 
						|
  display: flex;
 | 
						|
  justify-content: space-between;
 | 
						|
  align-items: left;
 | 
						|
  /* font-size: 0.8rem; */
 | 
						|
  color: #fff;
 | 
						|
}
 | 
						|
.seamless-warp li span {
 | 
						|
  display: inline-block;
 | 
						|
  /* width: 8%; */
 | 
						|
  text-align: center;
 | 
						|
  word-wrap: break-word !important;
 | 
						|
  word-break: keep-all;
 | 
						|
}
 | 
						|
</style>
 |