screenDlts.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <template>
  2. <div class="dlts-wrap">
  3. <div class="o-item">远动调试</div>
  4. <div class="o-item">电力受电线路</div>
  5. <div class="o-item">电力变配电所</div>
  6. <div class="o-item">
  7. <v-chart autoresize :option="options[0]"/>
  8. </div>
  9. <div class="o-item">
  10. <v-chart autoresize :option="options[1]"/>
  11. </div>
  12. <div class="o-item">
  13. <v-chart autoresize :option="options[2]"/>
  14. </div>
  15. <div class="o-item a-scrool">
  16. <Zydbsx v-if="dataListReady" :fetchData="false" :data="dataList[0]"/>
  17. </div>
  18. <div class="o-item a-scrool">
  19. <Zydbsx v-if="dataListReady" :fetchData="false" :data="dataList[1]"/>
  20. </div>
  21. <div class="o-item a-scrool">
  22. <Zydbsx v-if="dataListReady" :fetchData="false" :data="dataList[2]"/>
  23. </div>
  24. </div>
  25. </template>
  26. <script>
  27. import Zydbsx from '@/views/dashboard-screen/zydbsx/index.vue'
  28. import {
  29. chartDlbpdsby,
  30. chartDlbpdsbyDetail,
  31. chartDlsdxlBy,
  32. chartDlsdxlbyDetail,
  33. chartDlydtsby,
  34. chartDlydtsbyDetail
  35. } from '@/api/dashboard-json'
  36. import _ from 'lodash'
  37. export default {
  38. name: 'ScreenDlts',
  39. components: {Zydbsx},
  40. data() {
  41. return {
  42. basicOption: {
  43. xAxis: {
  44. type: 'category',
  45. data: ['本月计划', '本月完成']
  46. },
  47. yAxis: {
  48. type: 'value'
  49. },
  50. series: [
  51. {
  52. data: [10, 20],
  53. type: 'bar',
  54. itemStyle: {
  55. normal: {
  56. color: (params) => {
  57. const color = ['rgb(96, 150, 230)', 'rgb(4,245,69)']
  58. return color[params.dataIndex]
  59. }
  60. }
  61. }
  62. }
  63. ]
  64. },
  65. options: {
  66. 0: {},
  67. 1: {},
  68. 2: {}
  69. },
  70. dataList: [
  71. [
  72. {name: '本月已完成数', value: 0},
  73. {name: '本月未完成数', value: 0},
  74. {
  75. name: '未完成明细',
  76. value: null,
  77. children: [{name: '-'}]
  78. },
  79. {name: '年度剩余数', value: 0},
  80. {name: '下月计划完成数', value: 0}
  81. ],
  82. [
  83. {name: '本月已完成数', value: 0},
  84. {name: '本月未完成数', value: 0},
  85. {
  86. name: '未完成明细',
  87. value: null,
  88. children: [{name: '-'}]
  89. },
  90. {name: '年度剩余数', value: 0},
  91. {name: '下月计划完成数', value: 0}
  92. ],
  93. [
  94. {name: '本月已完成数', value: 0},
  95. {name: '本月未完成数', value: 0},
  96. {
  97. name: '未完成明细',
  98. value: null,
  99. children: [{name: '-'}]
  100. },
  101. {name: '年度剩余数', value: 0},
  102. {name: '下月计划完成数', value: 0}
  103. ]
  104. ],
  105. dataListReady: false
  106. }
  107. },
  108. created() {
  109. this.getOption()
  110. this.getData()
  111. },
  112. methods: {
  113. getOption() {
  114. this.options[0] = _.cloneDeep(this.basicOption)
  115. this.options[1] = _.cloneDeep(this.basicOption)
  116. this.options[2] = _.cloneDeep(this.basicOption)
  117. const r1 = chartDlydtsby()
  118. const r2 = chartDlsdxlBy()
  119. const r3 = chartDlbpdsby()
  120. Promise.all([r1, r2, r3]).then(res => {
  121. const res1 = res[0]
  122. const res2 = res[1]
  123. const res3 = res[2]
  124. this.options[0].series[0].data = [res1.info.series[0].data[0], res1.info.series[1].data[0]]
  125. this.options[1].series[0].data = [res2.info.series[0].data[0], res2.info.series[1].data[0]]
  126. this.options[2].series[0].data = [res3.info.series[0].data[0], res3.info.series[1].data[0]]
  127. })
  128. window['tis'] = this
  129. },
  130. getData() {
  131. const arrMap = [
  132. 'byywc', 'bywwc', 'wwcmx', 'ndsys', 'xyjhwc'
  133. ]
  134. const r1 = chartDlydtsbyDetail()
  135. const r2 = chartDlsdxlbyDetail()
  136. const r3 = chartDlbpdsbyDetail()
  137. Promise.all([r1, r2, r3]).then(res => {
  138. const resArr = [res[0].info, res[1].info, res[2].info]
  139. resArr.forEach((item, index) => {
  140. this.dataList[index].forEach((dIitem, dIndex) => {
  141. const mapKey = arrMap[dIndex]
  142. dIitem.value = item?.[mapKey]
  143. if (mapKey === 'wwcmx') {
  144. dIitem.children = item?.[mapKey].map(nameValue => {
  145. return {name: nameValue}
  146. }) || []
  147. dIitem.value = ''
  148. }
  149. })
  150. })
  151. })
  152. this.dataList = _.cloneDeep(this.dataList)
  153. this.dataListReady = true
  154. }
  155. }
  156. }
  157. </script>
  158. <style scoped lang="scss">
  159. .dlts-wrap {
  160. width: 100%;
  161. height: calc(100% - 170px);
  162. display: grid;
  163. grid-auto-flow: row;
  164. grid-template-columns: 1fr 1fr 1fr;
  165. grid-template-rows: 1fr 5fr 5fr;
  166. grid-row-gap: 1fr;
  167. grid-column-gap: 200px;
  168. color: #ffffff;
  169. padding-bottom: 4vh;
  170. .o-item {
  171. position: relative;
  172. height: 100%;
  173. width: 100%;
  174. overflow: hidden;
  175. display: flex;
  176. align-items: center;
  177. justify-content: center;
  178. &.a-scrool{
  179. overflow-y: auto;
  180. }
  181. ::v-deep {
  182. .row-item {
  183. font-size: 1.0vw;
  184. }
  185. }
  186. }
  187. * {
  188. color: #ffffff;
  189. }
  190. }
  191. </style>