EDBInfoChangeTable.vue 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. <template>
  2. <div class="edbinfo-table-wrap">
  3. <div class="top-wrap">
  4. <div class="filter-box">
  5. <el-select
  6. v-model="filterState.changeType"
  7. placeholder="请选择变更类型"
  8. clearable
  9. style="width:250px"
  10. @change="handleRefreshList"
  11. >
  12. <el-option
  13. v-for="item in changeTypeOpt"
  14. :key="item.value"
  15. :label="item.label"
  16. :value="item.value"
  17. />
  18. </el-select>
  19. </div>
  20. <img src="~@/assets/img/data_m/set_icon.png" alt="" style="cursor: pointer;float:right" @click="showSetTableCols=true">
  21. </div>
  22. <el-table
  23. v-loading="tableLoading"
  24. ref="tableIns"
  25. :data="tableData"
  26. border
  27. @sort-change="handleTableSortChange"
  28. >
  29. <el-table-column
  30. v-for="col in tableColOpts"
  31. :key="col.ColumnKey"
  32. :column-key="col.ColumnKey"
  33. :label="col.ColumnName"
  34. :prop="col.ColumnKey"
  35. :sortable="col.IsSort===1?'custom':false"
  36. align="center"
  37. :width="getColWidth(col.ColumnKey)"
  38. >
  39. <template slot="header" slot-scope="scope">
  40. <span>{{col.ColumnName}}</span>
  41. <el-tooltip
  42. effect="dark"
  43. :content="getTableHeadTips(col.ColumnKey)"
  44. placement="top-start"
  45. >
  46. <i class="el-icon-info" v-if="tipsKeysArr.includes(col.ColumnKey)"></i>
  47. </el-tooltip>
  48. </template>
  49. </el-table-column>
  50. <div slot="empty">
  51. <tableNoData text="暂无数据"/>
  52. </div>
  53. </el-table>
  54. <el-pagination
  55. layout="total,prev,pager,next,jumper"
  56. background
  57. @current-change="handleCurrentChange"
  58. :page-size="pageSize"
  59. @size-change="handleSizeChange"
  60. :total="total"
  61. style="float: right;margin-top:20px"
  62. />
  63. <!-- 自定义列表 -->
  64. <SetTableCols v-model="showSetTableCols" :ColumnType="4" @change="handleTableColChange"/>
  65. </div>
  66. </template>
  67. <script>
  68. import {apiDataSource} from '@/api/modules/dataSource'
  69. import SetTableCols from './SetTableCols.vue'
  70. export default {
  71. components:{SetTableCols},
  72. data() {
  73. return {
  74. tipsKeysArr:['EdbNameSource','EdbName','ErDataUpdateDate'],
  75. tableLoading:false,
  76. tableColOpts:[],
  77. tableData:[],
  78. pageSize:15,
  79. page:1,
  80. total:0,
  81. tableLoading:false,
  82. filterState:{
  83. dateVal:this.$moment().format('YYYY-MM-DD')||'',
  84. sortKey:'',
  85. sortType:'',
  86. changeType:''
  87. },
  88. changeTypeOpt:[
  89. {
  90. label:'基础信息变更',
  91. value:1
  92. },
  93. {
  94. label:'数据明细变更',
  95. value:0
  96. },
  97. {
  98. label:'新增指标',
  99. value:2
  100. }
  101. ],
  102. showSetTableCols:false,
  103. }
  104. },
  105. created() {
  106. this.getTableColOpts()
  107. },
  108. methods: {
  109. //获取表格数据
  110. getTableList(){
  111. this.tableLoading=true
  112. apiDataSource.GLEdbInfoTableList({
  113. CurrentIndex:this.page,
  114. PageSize:this.pageSize,
  115. SortParam:this.filterState.sortKey,
  116. SortType:this.filterState.sortType,
  117. CreateTime:this.filterState.dateVal,
  118. UpdateType:this.filterState.changeType===''?-1:this.filterState.changeType
  119. }).then(res=>{
  120. this.tableLoading=false
  121. if(res.Ret===200){
  122. const arr=res.Data.List||[]
  123. this.tableData=arr
  124. this.total=res.Data.Paging.Totals
  125. }
  126. })
  127. },
  128. handleCurrentChange(e){
  129. this.page=e
  130. this.getTableList()
  131. },
  132. // 筛选项刷新列表
  133. handleRefreshList(){
  134. this.page=1
  135. this.getTableList()
  136. },
  137. // 获取表格列配置项
  138. getTableColOpts(){
  139. this.tableColOpts=[]
  140. this.tableLoading=true
  141. apiDataSource.GLTableColOpts({ColumnType:4}).then(res=>{
  142. if(res.Ret===200){
  143. const arr=res.Data.List||[]
  144. this.tableColOpts=arr.filter(item=>item.IsShow===1)
  145. this.$nextTick(()=>{
  146. // this.$refs.tableIns.doLayout()
  147. this.tableLoading=false
  148. })
  149. this.getTableList()
  150. }
  151. })
  152. },
  153. handleTableColChange(){
  154. this.getTableColOpts()
  155. },
  156. handleShowSetTableCol(){
  157. this.showSetTableCols=true
  158. },
  159. // 排序
  160. handleTableSortChange({column, prop, order}){
  161. console.log(column, prop, order);
  162. this.filterState.sortKey=prop
  163. this.filterState.sortType=order==='descending'?'desc':order==='ascending'?'asc':''
  164. this.handleRefreshList()
  165. },
  166. // table说明文案
  167. getTableHeadTips(key){
  168. const tipsMap={
  169. EdbNameSource:'指标在数据源的全称',
  170. EdbName:'指标在ETA指标库保存的指标名称',
  171. ErDataUpdateDate:'指标数据发生变化的最早日期',
  172. }
  173. return tipsMap[key]
  174. },
  175. // 设置列的宽度
  176. getColWidth(key){
  177. const widthMap={
  178. EdbCode:'150px',
  179. CreateTime:'150px',
  180. StartDate:'150px',
  181. LatestDate:'150px',
  182. DataUpdateTime:'150px',
  183. ErDataUpdateDate:'200px',
  184. }
  185. return widthMap[key]
  186. }
  187. },
  188. }
  189. </script>
  190. <style lang="scss" scoped>
  191. .edbinfo-table-wrap{
  192. .top-wrap{
  193. display: flex;
  194. justify-content: space-between;
  195. align-items: flex-start;
  196. margin-bottom: 30px;
  197. .filter-box{
  198. margin-right: 100px;
  199. display: flex;
  200. flex-wrap: wrap;
  201. align-items: center;
  202. gap: 10px 20px;
  203. }
  204. .right-opt-box{
  205. display: flex;
  206. align-items: center;
  207. gap: 20px;
  208. .set-icon{
  209. width: 40px;
  210. cursor: pointer;
  211. }
  212. }
  213. }
  214. }
  215. </style>