lookEdbDataDia.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <template>
  2. <el-dialog
  3. :visible.sync="isShow"
  4. :close-on-click-modal="false"
  5. :modal-append-to-body='false'
  6. :title="$t('Edb.detail_lookdata_btn')"
  7. @close="cancelHandle"
  8. custom-class="look-edb-data-dialog"
  9. center
  10. width="1200px"
  11. v-dialogDrag
  12. >
  13. <div class="main">
  14. <el-table
  15. :data="tableData"
  16. style="box-shadow: 0px 3px 6px rgba(155, 170, 219, 0.2);"
  17. border
  18. >
  19. <el-table-column
  20. v-for="item in tableColums"
  21. :key="item.label"
  22. :label="item.label"
  23. :width="item.widthsty"
  24. :min-width="item.minwidthsty"
  25. align="center"
  26. >
  27. <template slot-scope="scope">
  28. <span>{{ scope.row[item.key] }}</span>
  29. </template>
  30. </el-table-column>
  31. <div slot="empty">
  32. <tableNoData :text="$t('Table.prompt_slogan')" size="mini"/>
  33. </div>
  34. </el-table>
  35. <ul
  36. class="value-ul"
  37. ref="valueUl"
  38. @scroll="scrollHandle"
  39. v-show="dataList.length"
  40. >
  41. <li
  42. class="value-item"
  43. v-for="(item,index) in dataList"
  44. :key="item.ID"
  45. >
  46. <span class="value-label">
  47. <span style="position: relative;">
  48. <i class="new-tag" v-if="index===0"></i>
  49. {{item.DataTime}}
  50. </span>
  51. </span>
  52. <span class="value-label" style="min-width:200px;text-align:center;">
  53. <span class="value-style">{{item.Value}}</span>
  54. </span>
  55. </li>
  56. <li class="nodata value-item" v-if="!dataList.length">{{$t('Table.prompt_slogan')}}</li>
  57. </ul>
  58. </div>
  59. </el-dialog>
  60. </template>
  61. <script>
  62. import { selfDataInterface } from '@/api/modules/dataSource';
  63. export default {
  64. props: {
  65. isShow: {
  66. type: Boolean
  67. },
  68. edbInfo: {
  69. type: Object
  70. }
  71. },
  72. computed: {
  73. tableColums() {
  74. return [
  75. {
  76. label: this.$t('Edb.Detail.e_id'),
  77. key: 'IndexCode',
  78. },
  79. {
  80. label: this.$t('Edb.Detail.e_name'),
  81. key: 'IndexName',
  82. },
  83. {
  84. label: /* '指标开始时间' */this.$t('SelftDataPage.col_start_time'),
  85. key: 'StartDate',
  86. },
  87. {
  88. label: /* '指标最新时间' */this.$t('SelftDataPage.col_newest_time'),
  89. key: 'DataUpdateTime',
  90. },
  91. ]
  92. }
  93. },
  94. watch: {
  95. isShow(nval) {
  96. if(!nval) return
  97. console.log(this.edbInfo)
  98. this.tableData = [this.edbInfo]
  99. this.getData();
  100. }
  101. },
  102. data() {
  103. return {
  104. tableData: [],
  105. dataList: [],
  106. page_no: 1
  107. }
  108. },
  109. mounted(){
  110. },
  111. methods:{
  112. cancelHandle() {
  113. this.page_no = 1;
  114. this.$refs.valueUl.scrollTop=0
  115. this.$emit('update:isShow',false)
  116. },
  117. async getData() {
  118. const res = await selfDataInterface.getDataList({
  119. CurrentIndex: this.page_no,
  120. PageSize: 10,
  121. IndexCode: this.edbInfo.IndexCode
  122. })
  123. if(res.Ret!==200) return
  124. this.haveMore = this.page_no < res.Data.Paging.Pages ? true : false;
  125. let data = res.Data.List||[];
  126. this.dataList = this.page_no===1 ? data : this.dataList.concat(data)
  127. },
  128. scrollHandle(e) {
  129. const dom = e.target
  130. let scrollTop = dom.scrollTop; //滑入屏幕上方的高度
  131. let windowHeitht = dom.clientHeight; //页面的高度
  132. let scrollHeight = dom.scrollHeight; //整个div的高度
  133. let total = scrollTop + windowHeitht
  134. if(total >= scrollHeight && this.haveMore){
  135. this.page_no ++;
  136. this.getData();
  137. }
  138. }
  139. },
  140. }
  141. </script>
  142. <style scoped lang='scss'>
  143. .look-edb-data-dialog{
  144. display: flex;
  145. flex-direction: column;
  146. height: 100%;
  147. .main {
  148. padding: 20px 0;
  149. }
  150. .value-ul {
  151. height: 300px;
  152. margin-top: 10px;
  153. border-bottom: 1px solid #EBEFF6;
  154. overflow-y: auto;
  155. .value-item {
  156. padding: 10px 0;
  157. border: 1px solid #dcdfe6;
  158. border-bottom: none;
  159. display: flex;
  160. justify-content: space-around;
  161. >span{
  162. padding:0 16px;
  163. box-sizing: border-box;
  164. }
  165. .value-label {
  166. position: relative;
  167. color: #666;
  168. }
  169. .new-tag {
  170. width: 6px;
  171. height: 6px;
  172. display: inline-block;
  173. position: absolute;
  174. left: -12px;
  175. top: 50%;
  176. transform: translateY(-50%);
  177. border-radius: 50%;
  178. background: #f00;
  179. }
  180. }
  181. .nodata {
  182. text-align: center;
  183. padding: 40px 0;
  184. color: #999;
  185. }
  186. }
  187. }
  188. </style>