StatisticTable.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <template>
  2. <div class="statistic-table-wrap">
  3. <div>
  4. <img src="~@/assets/img/data_m/set_icon.png" alt="" style="cursor: pointer;float:right" @click="showSetTableCols=true">
  5. </div>
  6. <el-table
  7. v-loading="tableLoading"
  8. ref="tableIns"
  9. :data="tableData"
  10. border
  11. >
  12. <el-table-column
  13. v-for="col in tableColOpts"
  14. :key="col.ColumnKey"
  15. :column-key="col.ColumnKey"
  16. :label="col.ColumnName"
  17. :prop="col.ColumnKey"
  18. align="center"
  19. :width="getColWidth(col.ColumnKey)"
  20. >
  21. <template slot="header" slot-scope="scope">
  22. <span>{{col.ColumnName}}</span>
  23. <el-tooltip
  24. effect="dark"
  25. placement="top-start"
  26. >
  27. <i class="el-icon-info" v-if="tipsKeysArr.includes(col.ColumnKey)"></i>
  28. <div slot="content" v-html="getTableHeadTips(col.ColumnKey)"></div>
  29. </el-tooltip>
  30. </template>
  31. <template slot-scope="scope">
  32. <span
  33. v-if="col.ColumnKey==='UpdateFailedNum'"
  34. style="color:#409EFF;cursor: pointer;"
  35. @click="handleShowFail(scope.row)"
  36. >{{scope.row.UpdateFailedNum}}</span>
  37. <span v-else>{{scope.row[col.ColumnKey]}}</span>
  38. </template>
  39. </el-table-column>
  40. <div slot="empty">
  41. <tableNoData :text="$t('Confirm.prompt_slogan')"/>
  42. </div>
  43. </el-table>
  44. <el-pagination
  45. layout="total,prev,pager,next,jumper"
  46. background
  47. @current-change="handleCurrentChange"
  48. :page-size="pageSize"
  49. @size-change="handleSizeChange"
  50. :total="total"
  51. style="float: right;margin-top:20px"
  52. />
  53. <!-- 自定义列表 -->
  54. <SetTableCols v-model="showSetTableCols" :ColumnType="2" @change="handleTableColChange"/>
  55. <!-- 刷新失败详情 -->
  56. <GLRefreshFailDetail v-model="showFail" :TerminalCode="TerminalCode" :date="filterState.dateVal"/>
  57. </div>
  58. </template>
  59. <script>
  60. import {apiDataSource} from '@/api/modules/dataSource'
  61. import SetTableCols from './SetTableCols.vue'
  62. import GLRefreshFailDetail from './GLRefreshFailDetail.vue'
  63. export default {
  64. components:{SetTableCols,GLRefreshFailDetail},
  65. data() {
  66. return {
  67. tipsKeysArr:['NeedRefreshNum','HasRefreshNum','RefreshSuccessNum','RefreshFailedNum','UpdateFailedNum','UpdateSuccessNum'],
  68. tableColOpts:[],
  69. tableData:[],
  70. pageSize:15,
  71. page:1,
  72. total:0,
  73. filterState:{
  74. dateVal:this.$moment().format('YYYY-MM-DD')||''
  75. },
  76. showSetTableCols:false,
  77. tableLoading:false,
  78. showFail:false,
  79. TerminalCode:''
  80. }
  81. },
  82. created() {
  83. this.getTableColOpts()
  84. },
  85. methods: {
  86. //获取表格数据
  87. getTableList(){
  88. this.tableLoading=true
  89. apiDataSource.GLStatisticTableList({
  90. CurrentIndex:this.page,
  91. PageSize:this.pageSize,
  92. CreateTime:this.filterState.dateVal,
  93. }).then(res=>{
  94. this.tableLoading=false
  95. if(res.Ret===200){
  96. const arr=res.Data.List||[]
  97. this.tableData=arr
  98. this.total=res.Data.Paging.Totals
  99. }
  100. })
  101. },
  102. handleCurrentChange(e){
  103. this.page=e
  104. this.getTableList()
  105. },
  106. // 筛选项刷新列表
  107. handleRefreshList(){
  108. this.page=1
  109. this.getTableList()
  110. },
  111. // 获取表格列配置项
  112. getTableColOpts(){
  113. this.tableLoading=true
  114. this.tableColOpts=[]
  115. apiDataSource.GLTableColOpts({ColumnType:2}).then(res=>{
  116. if(res.Ret===200){
  117. this.tableColOpts=res.Data.List||[]
  118. this.$nextTick(()=>{
  119. // this.$refs.tableIns.doLayout()
  120. this.tableLoading=false
  121. })
  122. this.getTableList()
  123. }
  124. })
  125. },
  126. handleTableColChange(){
  127. this.getTableColOpts()
  128. },
  129. handleShowSetTableCol(){
  130. this.showSetTableCols=true
  131. },
  132. handleShowFail(e){
  133. this.TerminalCode=e.TerminalCode
  134. this.showFail=true
  135. },
  136. // table说明文案
  137. getTableHeadTips(key){
  138. const tipsMap={
  139. NeedRefreshNum:this.$t('DataReportManage.GlStatisticTable.table_tips07')||'1、今日该终端需定时刷新的指标数量<br>2、今日需刷新指标数=今日已更新指标数+今日更新失败指标数',
  140. HasRefreshNum:this.$t('DataReportManage.GlStatisticTable.table_tips08')||'1、今日该终端发起刷新任务的指标数量<br>2、今日发起刷新任务指标数=今日已刷新成功指标数+今日刷新失败指标数',
  141. RefreshSuccessNum:this.$t('DataReportManage.GlStatisticTable.table_tips09')||'今日该终端刷新成功的指标数量',
  142. RefreshFailedNum:this.$t('DataReportManage.GlStatisticTable.table_tips10')||'今日该终端刷新失败的指标数量',
  143. UpdateFailedNum:this.$t('DataReportManage.GlStatisticTable.table_tips11')||'今日该终端成功发起刷新任务,但指标数据未变化的指标数量',
  144. UpdateSuccessNum:this.$t('DataReportManage.GlStatisticTable.table_tips12')||' 今日该终端数据发生变化的指标数量'
  145. }
  146. return tipsMap[key]
  147. },
  148. // 设置列的宽度
  149. getColWidth(key){
  150. const widthMap={
  151. NeedUpdateNum:'200px',
  152. HasUpdateNum:'200px',
  153. UpdateSuccessNum:'200px'
  154. }
  155. return widthMap[key]
  156. }
  157. },
  158. }
  159. </script>
  160. <style lang="scss" scoped>
  161. .statistic-table-wrap{
  162. .top-wrap{
  163. display: flex;
  164. justify-content: flex-end;
  165. margin-bottom: 30px;
  166. .set-icon{
  167. width: 40px;
  168. cursor: pointer;
  169. }
  170. }
  171. }
  172. </style>