index.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  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. loading.value=true
  167. console.log('dateTime.value')
  168. console.log(dateTime.value)
  169. if (!dateTime.value) {
  170. ElNotification({
  171. title: '提示',
  172. message: '请选择开始和结束时间',
  173. type: 'warning',
  174. })
  175. loading.value=false
  176. return
  177. }
  178. store.commit('TimeAll_function', dateTime.value)
  179. const time = store.state.Time_Data
  180. api
  181. .rtRealScore({
  182. deviceCode: deviceCode.value,
  183. startTime: time[0],
  184. endTime: time[1],
  185. })
  186. .then((requset) => {
  187. setTimeout(()=>{
  188. loading.value=false
  189. },200)
  190. if (requset.status === 'SUCCESS') {
  191. echartsData.value = requset.data
  192. if(!echartsData.value[0]){
  193. ElMessage.warning('暂无数据')
  194. return
  195. }
  196. } else {
  197. ElMessage.error(requset.msg)
  198. }
  199. })
  200. }
  201. onMounted(() => {
  202. dateTime.value=store.state.se_defaultTime
  203. deviceSelect()
  204. })
  205. return {
  206. store,
  207. rtRealScore,
  208. value4,
  209. region,
  210. deviceSelect,
  211. deviceCode,
  212. deviceList,
  213. echartsData,
  214. voltageChartData,
  215. dateTime,
  216. linkDevice,
  217. loading
  218. }
  219. },
  220. })
  221. </script>
  222. <style lang="scss" scoped>
  223. .el-row {
  224. margin-bottom: 20px;
  225. &:last-child {
  226. margin-bottom: 0;
  227. }
  228. }
  229. .el-col {
  230. border-radius: 4px;
  231. }
  232. .bg-purple-dark {
  233. border: 1px solid #99a9bf;
  234. }
  235. .bg-purple {
  236. border: 1px solid #d3dce6;
  237. }
  238. .bg-purple-light {
  239. border: 1px solid #e5e9f2;
  240. }
  241. .grid-content {
  242. border-radius: 4px;
  243. min-height: 36px;
  244. }
  245. .row-bg {
  246. padding: 10px 0;
  247. border: 1px solid #f9fafc;
  248. }
  249. </style>