edbDetailData.vue 3.9 KB

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