index.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. <template>
  2. <div class="app-container harmonicReport">
  3. <!-- 筛选start -->
  4. <div class="filter-container mb-10">
  5. <div class="left">
  6. <div>
  7. <div class="filter-item">
  8. 选择站点:
  9. <el-select
  10. v-model="store.state.siteId"
  11. placeholder="请选择"
  12. style="width: 220px"
  13. clearable
  14. filterable
  15. @change="linkDevice()"
  16. >
  17. <el-option
  18. v-for="site in store.state.siteList"
  19. :key="site"
  20. :label="site.siteName"
  21. :value="site.id"
  22. ></el-option>
  23. </el-select>
  24. </div>
  25. <div class="filter-item">
  26. 设备:
  27. <el-select
  28. v-model="deviceCode"
  29. placeholder="请选择"
  30. style="width: 150px"
  31. >
  32. <el-option
  33. v-for="device in deviceList"
  34. :key="device"
  35. :label="device.deviceName"
  36. :value="device.deviceCode"
  37. ></el-option>
  38. </el-select>
  39. </div>
  40. <div class="filter-item">
  41. 日期:
  42. <el-date-picker
  43. v-model="dateTime"
  44. type="datetimerange"
  45. range-separator="至"
  46. start-placeholder="开始日期"
  47. end-placeholder="结束日期"
  48. style="width: auto"
  49. ></el-date-picker>
  50. </div>
  51. <el-button
  52. type="primary"
  53. class="search-button"
  54. @click="rtRealScore()"
  55. >
  56. 搜索
  57. </el-button>
  58. </div>
  59. </div>
  60. </div>
  61. <!-- 筛选end -->
  62. <el-row :gutter="20">
  63. <el-col :md="24" :lg="12">
  64. <div class="grid-content bg-purple">
  65. <div class="blanceChartTit">电压不平衡度</div>
  66. <voltage-chart
  67. :echartsData="echartsData"
  68. v-loading="loading"
  69. ></voltage-chart>
  70. <el-divider></el-divider>
  71. <voltage-chart2
  72. :echartsData="echartsData"
  73. v-loading="loading"
  74. ></voltage-chart2>
  75. </div>
  76. </el-col>
  77. <el-col :md="24" :lg="12">
  78. <div class="grid-content bg-purple">
  79. <div class="blanceChartTit">电流不平衡度</div>
  80. <electric-chart
  81. :echartsData="echartsData"
  82. v-loading="loading"
  83. ></electric-chart>
  84. <el-divider></el-divider>
  85. <electric-chart2
  86. :echartsData="echartsData"
  87. v-loading="loading"
  88. ></electric-chart2>
  89. </div>
  90. </el-col>
  91. </el-row>
  92. </div>
  93. </template>
  94. <script>
  95. import { useStore } from 'vuex'
  96. import voltageChart from './voltageChart'
  97. import voltageChart2 from './voltageChart2'
  98. import electricChart from './electricChart'
  99. import electricChart2 from './electricChart2'
  100. import { defineComponent, onMounted, ref } from 'vue'
  101. import * as api from '@/api/powerQuality/unbalanceAnalysis.js'
  102. import { ElMessage } from 'element-plus'
  103. import { ElNotification } from 'element-plus'
  104. export default defineComponent({
  105. name: 'VariableList',
  106. components: {
  107. voltageChart,
  108. voltageChart2,
  109. electricChart,
  110. electricChart2,
  111. },
  112. setup() {
  113. const store = useStore()
  114. const loading=ref(false)
  115. const value4 = ref('请选择')
  116. const region = ref('')
  117. // const deviceCode = ref('')
  118. const deviceCode = ref('DA00021026')
  119. const deviceList = ref([])
  120. const echartsData = ref([
  121. // {
  122. // cos: 1,
  123. // dataTime: '2021-11-10 10:10:00',
  124. // elBalun: 1,
  125. // ia: 6.24,
  126. // ib: 0,
  127. // ic: 6.11,
  128. // score: 0,
  129. // ua: 10174,
  130. // ub: 0,
  131. // uc: 10172.5,
  132. // vtBalun: 1,
  133. // },
  134. // {
  135. // cos: 1,
  136. // dataTime: '2021-11-10 10:10:00',
  137. // elBalun: 1,
  138. // ia: 6.24,
  139. // ib: 0,
  140. // ic: 6.11,
  141. // score: 0,
  142. // ua: 10174,
  143. // ub: 0,
  144. // uc: 10172.5,
  145. // vtBalun: 1,
  146. // },
  147. ])
  148. const voltageChartData = ref({})
  149. const dateTime = ref('')
  150. function linkDevice(){
  151. deviceSelect()
  152. }
  153. async function deviceSelect() {
  154. await api
  155. .deviceListOne({ siteId: store.state.siteId })
  156. .then((requset) => {
  157. if (requset.status === 'SUCCESS') {
  158. deviceList.value = requset.data
  159. deviceCode.value = requset.data[0]?requset.data[0].deviceCode:''
  160. } else {
  161. ElMessage.error(requset.msg)
  162. }
  163. })
  164. }
  165. function rtRealScore() {
  166. console.log('dateTime.value')
  167. console.log(dateTime.value)
  168. if (!dateTime.value) {
  169. ElNotification({
  170. title: '提示',
  171. message: '请选择开始和结束时间',
  172. type: 'warning',
  173. })
  174. return
  175. }
  176. if(!deviceCode.value){
  177. ElNotification({
  178. title: '提示',
  179. message: '请选择左侧设备信息',
  180. type: 'warning',
  181. })
  182. return
  183. }
  184. loading.value=true
  185. store.commit('TimeAll_function', dateTime.value)
  186. const time = store.state.Time_Data
  187. api
  188. .rtRealScore({
  189. deviceCode: deviceCode.value,
  190. startTime: time[0],
  191. endTime: time[1],
  192. })
  193. .then((requset) => {
  194. loading.value=false
  195. if (requset.status === 'SUCCESS') {
  196. echartsData.value = requset.data
  197. if(!echartsData.value[0]){
  198. ElMessage.warning('暂无数据')
  199. return
  200. }
  201. } else {
  202. ElMessage.error(requset.msg)
  203. }
  204. })
  205. }
  206. onMounted(() => {
  207. dateTime.value=store.state.se_defaultTime
  208. deviceSelect()
  209. })
  210. return {
  211. store,
  212. rtRealScore,
  213. value4,
  214. region,
  215. deviceSelect,
  216. deviceCode,
  217. deviceList,
  218. echartsData,
  219. voltageChartData,
  220. dateTime,
  221. linkDevice,
  222. loading
  223. }
  224. },
  225. })
  226. </script>
  227. <style lang="scss" scoped>
  228. .el-row {
  229. margin-bottom: 20px;
  230. &:last-child {
  231. margin-bottom: 0;
  232. }
  233. }
  234. .el-col {
  235. border-radius: 4px;
  236. }
  237. .bg-purple-dark {
  238. border: 1px solid #99a9bf;
  239. }
  240. .bg-purple {
  241. border: 1px solid #d3dce6;
  242. }
  243. .bg-purple-light {
  244. border: 1px solid #e5e9f2;
  245. }
  246. .grid-content {
  247. border-radius: 4px;
  248. min-height: 36px;
  249. }
  250. .row-bg {
  251. padding: 10px 0;
  252. border: 1px solid #f9fafc;
  253. }
  254. </style>