edbDetailData.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <template>
  2. <div class="edb-detail-data-wrap">
  3. <el-table
  4. :data="tableData"
  5. class="firstColumTable" border>
  6. <el-table-column
  7. v-for="item in tableColumsOne"
  8. :key="item.label"
  9. :width="item.widthsty"
  10. :min-width="item.minwidthsty"
  11. align="center">
  12. <template slot="header" slot-scope="scope">
  13. <!-- <div class="chartEn-mark" style="top: -10px;" v-show="scope.$index ==0 && tableData[0] && tableData[0].IsEnEdb" >En</div> -->
  14. <span>{{item.label}}</span>
  15. </template>
  16. <template slot-scope="scope">
  17. <span v-if="item.key === 'Unit'">{{ currentLang === 'en'?scope.row.UnitEn||getUnitTrans(scope.row.Unit):getUnitTrans(scope.row.Unit) }}</span>
  18. <span v-else-if="item.key === 'Frequency'">{{ currentLang === 'en' ? scope.row.FrequencyEn||getFrequencyTrans(scope.row.Frequency):getFrequencyTrans(scope.row.Frequency) }}</span>
  19. <span v-else-if="item.key === 'EdbName'">{{ currentLang==='en' ? (scope.row.EdbNameEn||scope.row.EdbName) : scope.row.EdbName }}</span>
  20. <span v-else>{{ scope.row[item.key] }}</span>
  21. </template>
  22. </el-table-column>
  23. </el-table>
  24. <el-table
  25. :data="tableData"
  26. style="box-shadow: 0px 3px 6px rgba(155, 170, 219, 0.2);"
  27. border>
  28. <el-table-column
  29. v-for="item in tableColumsTwo"
  30. :key="item.label"
  31. :label="item.label"
  32. :width="item.widthsty"
  33. :min-width="item.minwidthsty"
  34. align="center"
  35. >
  36. <template #header>
  37. <span>{{ item.label }}</span>
  38. </template>
  39. <template slot-scope="scope">
  40. <span v-if="item.key==='NoUpdate'">{{scope.row[item.key]?'暂停':'启用'}}</span>
  41. <span v-else>{{ scope.row[item.key] }}</span>
  42. </template>
  43. </el-table-column>
  44. <div slot="empty" style="padding: 50px 0 320px;">
  45. <tableNoData :text="defaultWarn"/>
  46. </div>
  47. </el-table>
  48. <ul
  49. class="value-ul"
  50. ref="valueUl"
  51. @scroll="scrollHandle"
  52. v-show="dataList.length">
  53. <li
  54. class="value-item"
  55. v-for="item in dataList"
  56. :key="item.EdbDataId"
  57. >
  58. <span class="value-label">
  59. <span style="position: relative;">
  60. <i class="new-tag" v-if="tableData[0].LatestDate===item.DataTime"></i>
  61. {{item.DataTime}}
  62. </span>
  63. </span>
  64. <span :class="['value-label',{'predict-act': tableData[0].DataInsertConfig.Date===item.DataTime}]" style="min-width:200px;text-align:center;">
  65. <span :class="['value-style',{'predict-act': tableData[0].DataInsertConfig.Date===item.DataTime}]">{{item.Value}}</span>
  66. </span>
  67. </li>
  68. <li class="nodata value-item" v-if="!dataList.length">{{$t('Table.prompt_slogan')}}</li>
  69. </ul>
  70. </div>
  71. </template>
  72. <script>
  73. export default {
  74. props:{
  75. currentLang:{
  76. type:String,
  77. default:'zh'
  78. },
  79. tableData:{
  80. type:Array,
  81. default:()=>{return []}
  82. },
  83. tableColumsOne:{
  84. type:Array,
  85. default:()=>{return []}
  86. },
  87. tableColumsTwo:{
  88. type:Array,
  89. default:()=>{return []}
  90. },
  91. defaultWarn:{
  92. type:String,
  93. default:'暂无数据'
  94. },
  95. dataList:{
  96. type:Array,
  97. default:()=>{return []}
  98. },
  99. haveMore:{
  100. type:Boolean,
  101. default:false
  102. }
  103. },
  104. data() {
  105. return {
  106. };
  107. },
  108. methods: {
  109. /* 数值滚动加载 */
  110. scrollHandle: _.throttle(function() {
  111. let scrollTop = this.$refs.valueUl.scrollTop;
  112. let clientHeight = this.$refs.valueUl.clientHeight;
  113. let scrollHeight = this.$refs.valueUl.scrollHeight;
  114. if(scrollTop===0) return
  115. if(scrollTop + clientHeight >= scrollHeight-10 && this.haveMore){
  116. this.$emit('getNextData')
  117. }
  118. },200),
  119. },
  120. };
  121. </script>
  122. <style lang="scss">
  123. .edb-detail-data-wrap{
  124. .el-table--enable-row-transition .el-table__body td{
  125. background: #fff !important;
  126. }
  127. .el-table td, .el-table th.is-leaf {
  128. background: #F2F6FA !important;
  129. }
  130. }
  131. </style>
  132. <style scoped lang="scss">
  133. .edb-detail-data-wrap{
  134. display: flex;
  135. flex-direction: column;
  136. height: 100%;
  137. .firstColumTable{
  138. box-shadow: 0px 3px 6px rgba(155, 170, 219, 0.2);
  139. }
  140. .el-table{
  141. flex: none;
  142. }
  143. .value-ul{
  144. /* flex: 1;
  145. overflow-y: auto; */
  146. overflow-y: auto;
  147. }
  148. }
  149. </style>