widget.vue 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <div v-way="wayFun('mainDiv')" style="width: 100%; height: 100%">
  3. <el-tabs v-model="activeName">
  4. <el-tab-pane v-for="item of tabs" :key="item.index" :label="item.label" :name="item.index"></el-tab-pane>
  5. </el-tabs>
  6. <el-table class="mapTable" style="width:100%;" height="calc(100% - 47px)" tooltip-effect="dark" stripe :data="data" ref="table" row-class-name="selectRowC">
  7. <el-table-column v-for="item of column" :key="item.value" :prop="item.value" :label="item.name">
  8. </el-table-column>
  9. </el-table>
  10. </div>
  11. </template>
  12. <script>
  13. import TableItem from '@/components/Table'
  14. export default {
  15. name: 'AnalysisResult',
  16. components: { TableItem },
  17. directives: {
  18. way(el, bind) {
  19. if (typeof bind.value === 'function') bind.value(el)
  20. }
  21. },
  22. props: { param: Object },
  23. data() {
  24. return {
  25. activeName: '',
  26. tabs: [],
  27. column: [],
  28. data: [],
  29. elements: {}
  30. }
  31. },
  32. watch: { activeName(e) { if(e != '') this.getData() } },
  33. mounted: function() {
  34. var map = this.$store.state.map
  35. if(map.analysisResult) {
  36. map.analysisResult.table = this
  37. } else {
  38. map.analysisResult = { table: this }
  39. }
  40. this.elements['mainDiv'].parentElement.style.height = '100%'
  41. this.elements['mainDiv'].parentElement.parentElement.style.height = 'calc(100% - 56px)'
  42. this.elements['mainDiv'].parentElement.parentElement.parentElement.style.height = '100%'
  43. // this.elements['table'].style.height = '100%'
  44. // this.elements['table'].children[0].style.height = 'calc(100% - 36px)'
  45. var tables = []
  46. for(let i=0,il=this.param.tables,ii=il.length;i<ii;i++) {
  47. tables.push({ label:il[i].name, index: i.toString(), columns: il[i].columns, rows: il[i].rows, })
  48. }
  49. this.tabs = tables
  50. this.$nextTick(() => this.activeName = '0')
  51. },
  52. methods: {
  53. getData() {
  54. var dataTable = this.tabs[this.activeName]
  55. this.column = dataTable.columns
  56. this.data = dataTable.rows
  57. },
  58. clear() {
  59. this.activeName = ''
  60. this.tabs = []
  61. },
  62. wayFun: function(flag) {
  63. return (el) => {
  64. this.elements[flag] = el
  65. }
  66. }
  67. },
  68. destroyed() {
  69. delete this.$store.state.map.analysisResult.table
  70. }
  71. }
  72. </script>
  73. <style lang="scss" scoped>
  74. </style>