AlarmHandling.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <template>
  2. <div class="content-main">
  3. <div class="content-body-wrap">
  4. <div class="content-body">
  5. <Tabs :value="currentTabs" @on-click="tabsClick" class="common-tabs">
  6. <TabPane v-for="tab in tabsData" :key="tab.label" :label="tab.label" :name="tab.label"></TabPane>
  7. </Tabs>
  8. <Row :gutter="8" style="width:100%;height: calc(100% - 50px)">
  9. <i-col span="4" style="height:100%">
  10. <div class="station-tree">
  11. <div class="station-tree-body">
  12. <tree-filter :defaultData="stationData" v-if="stationData && stationData.length>0" @treeChange="treeChange" ref="tree"></tree-filter>
  13. </div>
  14. </div>
  15. </i-col>
  16. <i-col span="20" style="height:100%">
  17. <div class="right-main">
  18. <unable-deter-alarm ref="unableDeter" class="content-body-manage" v-if="currentTabs == '告警信息-无法判定等级'"></unable-deter-alarm>
  19. <to-confirmed-alarm ref="toConfirmed" class="content-body-manage" v-if="currentTabs == '告警信息-待确认'"></to-confirmed-alarm>
  20. <confirmed-alarm ref="confirmed" class="content-body-manage" v-if="currentTabs == '告警信息-已确认'"></confirmed-alarm>
  21. <cleared-alarm ref="cleared" class="content-body-manage" v-if="currentTabs == '告警信息-已清除'"></cleared-alarm>
  22. <filtered-alarm ref="filtered" class="content-body-manage" v-if="currentTabs == '告警信息-已过滤'"></filtered-alarm>
  23. <comprehensive-infor ref="comprehensive" class="content-body-manage" v-if="currentTabs == '综合处理告警信息'"></comprehensive-infor>
  24. </div>
  25. </i-col>
  26. </Row>
  27. </div>
  28. </div>
  29. </div>
  30. </template>
  31. <script>
  32. import UnableDeterAlarm from './UnableDeterAlarm.vue'
  33. import ToConfirmedAlarm from './ToConfirmedAlarm.vue'
  34. import ConfirmedAlarm from './ConfirmedAlarm.vue'
  35. import ClearedAlarm from './ClearedAlarm.vue'
  36. import FilteredAlarm from './FilteredAlarm.vue'
  37. import ComprehensiveInfor from './ComprehensiveInfor.vue'
  38. export default {
  39. name: "AlarmHandling",
  40. components:{
  41. UnableDeterAlarm,ToConfirmedAlarm,ConfirmedAlarm,ClearedAlarm,FilteredAlarm,ComprehensiveInfor
  42. },
  43. data() {
  44. return {
  45. stationData: [],
  46. tabsData: [{label:'告警信息-无法判定等级'},{label:'告警信息-待确认'},{label:'告警信息-已确认'},{label:'告警信息-已清除'},{label:'告警信息-已过滤'},{label:'综合处理告警信息'}],
  47. currentTabs: '告警信息-无法判定等级',
  48. };
  49. },
  50. mounted() {
  51. this.getCurrentTab (sessionStorage.getItem('currentTabs'))
  52. this.getMetroLevel()
  53. },
  54. // 离开当前路由之前的钩子函数
  55. beforeRouteLeave(to, form, next) {
  56. sessionStorage.removeItem('currentTabs')
  57. next()
  58. },
  59. methods: {
  60. // 获取树形数据
  61. getMetroLevel () {
  62. this.$get('metroapi/lineStation/lineStationTree').then(res => {
  63. if (res.httpCode == 1) {
  64. this.stationData = res.data
  65. }
  66. })
  67. },
  68. // 递归函数 每层数组的第一个对象里的属性expand 全展开(true)
  69. getTree(arr) {
  70. return arr.map((v,index) => {
  71. v.selected = false
  72. v.disabled = false
  73. if (index==0) {
  74. v.expand = true
  75. } else {
  76. v.expand = false
  77. }
  78. if (v.children) v.children = this.getTree(v.children);
  79. return v;
  80. });
  81. },
  82. treeChange(arr,level) {
  83. this.getCurrentTab(this.currentTabs,arr,level)
  84. },
  85. tabsClick (name) {
  86. this.stationData = this.getTree(this.stationData) // 切换tab页时,清除tree选中情况
  87. sessionStorage.setItem("currentTabs",name)
  88. this.getCurrentTab (name)
  89. if (document.querySelector(".station-tree-left")) {
  90. document.querySelector(".station-tree-left").scrollTo(0, 0)
  91. }
  92. },
  93. getCurrentTab (currentTabs,arr,level) {
  94. this.currentTabs = currentTabs || '告警信息-无法判定等级'
  95. if (currentTabs == '告警信息-无法判定等级' || !currentTabs) {
  96. this.$nextTick(()=> {
  97. this.getParams('unableDeter',arr,level)
  98. this.$refs.unableDeter.tableParams.pageNum = 1
  99. this.$refs.unableDeter.getTableData()
  100. })
  101. } else if(currentTabs == '告警信息-待确认'){
  102. this.$nextTick(()=> {
  103. this.getParams('toConfirmed',arr,level)
  104. this.$refs.toConfirmed.tableParams.pageNum = 1
  105. this.$refs.toConfirmed.getTableData()
  106. })
  107. } else if(currentTabs == '告警信息-已确认'){
  108. this.$nextTick(()=> {
  109. this.getParams('confirmed',arr,level)
  110. this.$refs.confirmed.tableParams.pageNum = 1
  111. this.$refs.confirmed.getTableData()
  112. })
  113. } else if(currentTabs == '告警信息-已清除'){
  114. this.$nextTick(()=> {
  115. this.getParams('cleared',arr,level)
  116. this.$refs.cleared.tableParams.pageNum = 1
  117. this.$refs.cleared.getTableData()
  118. })
  119. } else if(currentTabs == '告警信息-已过滤'){
  120. this.$nextTick(()=> {
  121. this.getParams('filtered',arr,level)
  122. this.$refs.filtered.tableParams.pageNum = 1
  123. this.$refs.filtered.getTableData()
  124. })
  125. } else {
  126. this.$nextTick(()=> {
  127. this.getParams('comprehensive',arr,level)
  128. this.$refs.comprehensive.tableParams.pageNum = 1
  129. this.$refs.comprehensive.getTableData()
  130. })
  131. }
  132. },
  133. getParams (name,arr,level) {
  134. if (level == 2) {
  135. this.$refs[name].tableParams.lineId = arr[arr.length-1]
  136. this.$refs[name].tableParams.stationId = ''
  137. } else if (level == 3) {
  138. this.$refs[name].tableParams.lineId = arr[arr.length-2]
  139. this.$refs[name].tableParams.stationId = arr[arr.length-1]
  140. } else {
  141. this.$refs[name].tableParams.lineId = ''
  142. this.$refs[name].tableParams.stationId = ''
  143. }
  144. },
  145. }
  146. };
  147. </script>
  148. <style scoped lang="stylus">
  149. .content-main {
  150. width: 100%;
  151. height: calc(100% - 50px);
  152. overflow: hidden;
  153. }
  154. .content-body-wrap {
  155. width: 100%;
  156. height: 100%;
  157. background: #06214D;
  158. }
  159. .content-body {
  160. width: 100%;
  161. height: 100%;
  162. background: #06214D;
  163. padding: 10px;
  164. }
  165. .common-search {
  166. width: 100%;
  167. }
  168. >>> .common-search .ivu-input {
  169. background-color: #06214D;
  170. border: 1px solid #2355A6;
  171. border-radius: 15px;
  172. color: #fff;
  173. height: 32px;
  174. }
  175. >>> .common-search .ivu-input:focus {
  176. border-color: #0185ea;
  177. }
  178. .station-tree {
  179. height: 100%;
  180. padding: 10px;
  181. }
  182. .station-tree-body {
  183. border: 1px solid #204384;
  184. height: 100%;
  185. padding: 10px;
  186. }
  187. .right-main {
  188. height: 100%;
  189. padding: 10px 0;
  190. }
  191. </style>