GoodnessfitRank.vue 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. <template>
  2. <el-container>
  3. <el-header>
  4. <el-card style="margin-top: -10px">
  5. <el-row :gutter="1">
  6. <el-form :inline="true" class="demo-form-inline">
  7. <el-form-item label="风场">
  8. <el-select v-model="fc" clearable placeholder="请选择">
  9. <el-option
  10. v-for="item in FClist"
  11. :key="item.id"
  12. :label="item.name"
  13. :value="item.id"
  14. >
  15. </el-option>
  16. </el-select>
  17. </el-form-item>
  18. <el-form-item label="开始时间">
  19. <el-date-picker
  20. v-model="beginDate"
  21. type="date"
  22. value-format="yyyy-MM-dd"
  23. placeholder="选择日期"
  24. >
  25. </el-date-picker>
  26. </el-form-item>
  27. <el-form-item label="结束时间">
  28. <el-date-picker
  29. v-model="endDate"
  30. type="date"
  31. value-format="yyyy-MM-dd"
  32. placeholder="选择日期"
  33. >
  34. </el-date-picker>
  35. </el-form-item>
  36. <el-form-item>
  37. <el-button type="primary" @click="query_table" :plain="true"
  38. >查询</el-button
  39. >
  40. </el-form-item>
  41. <el-form-item>
  42. <el-button type="primary" @click="toExcel" :plain="true">导出</el-button>
  43. </el-form-item>
  44. <el-form-item>
  45. <el-button type="primary" @click="curveCreation" :plain="true"
  46. >生成曲线</el-button
  47. >
  48. </el-form-item>
  49. </el-form>
  50. </el-row>
  51. </el-card>
  52. </el-header>
  53. <el-main>
  54. <el-card style=" height: 759px">
  55. <el-table
  56. v-loading="loading"
  57. :data="tableData"
  58. id="tableData"
  59. style="width: 100%"
  60. :cell-style="{ textAlign: 'center' }"
  61. :header-cell-style="headStyle"
  62. max-height="739px"
  63. @selection-change="changeFun"
  64. >
  65. >
  66. <el-table-column label="拟合优度排行榜">
  67. <el-table-column type="index" width="80"> </el-table-column>
  68. <el-table-column
  69. type="selection"
  70. class="selection"
  71. @selection-change="changeFun"
  72. width="60"
  73. >
  74. </el-table-column>
  75. <el-table-column sortable prop="windfarm" label="风场" width="300">
  76. </el-table-column>
  77. <el-table-column
  78. sortable
  79. prop="windturbine"
  80. label="风机"
  81. width="300"
  82. >
  83. </el-table-column>
  84. <el-table-column
  85. sortable
  86. prop="beginDate"
  87. :formatter="filter_bdate"
  88. value-format="yyyy-MM-dd"
  89. label="起始时间"
  90. width="300"
  91. >
  92. </el-table-column>
  93. <el-table-column
  94. sortable
  95. prop="engDate"
  96. :formatter="filter_edate"
  97. value-format="yyyy-MM-dd"
  98. label="截至日期"
  99. width="220"
  100. >
  101. </el-table-column>
  102. <el-table-column
  103. :formatter="filter_power"
  104. sortable
  105. prop="speed"
  106. label="平均风速"
  107. width="295"
  108. >
  109. </el-table-column>
  110. <el-table-column
  111. sortable
  112. prop="power"
  113. :formatter="filter_generatingCapacity"
  114. label="拟合优度"
  115. width="295"
  116. >
  117. </el-table-column>
  118. </el-table-column>
  119. </el-table>
  120. </el-card>
  121. <el-dialog
  122. title="对标信息分析"
  123. :visible.sync="dialogTableVisible"
  124. width="65%"
  125. >
  126. <el-row>
  127. <div id="histogram" style="width: 100%; height: 500px"></div>
  128. </el-row>
  129. </el-dialog>
  130. </el-main>
  131. </el-container>
  132. </template>
  133. <script>
  134. import excelHelper from "@/utils/excelHelper";
  135. import formateDate from "@/utils/date";
  136. import formateDate1 from "@/utils/date_1";
  137. import * as echarts from "echarts";
  138. export default {
  139. data() {
  140. return {
  141. FClist: {
  142. name: "",
  143. id: "",
  144. },
  145. loading:true,
  146. tableData: [],
  147. dialogTableVisible: false,
  148. beginDate: "2021-01-01",
  149. endDate: "2021-01-01",
  150. fc: "MHS_FDC",
  151. selectrowdate: {},
  152. histogram_Date: [],
  153. histogram_sers: [],
  154. };
  155. },
  156. methods: {
  157. query_fc() {
  158. var newData = new Date();
  159. this.beginDate = formateDate1(newData.getTime()/1000);
  160. this.endDate = formateDate(newData.getTime()/1000);
  161. this.$http.get("powercompare/windfarmAjax?").then((res) => {
  162. this.FClist = res.data.data;
  163. });
  164. },
  165. query_table() {
  166. this.$http
  167. .get(
  168. "leaderboard/fittingtoplist?wpIps=" +
  169. this.fc +
  170. "&pageNum=" +
  171. 1 +
  172. "&pageSize=" +
  173. 10 +
  174. "&orderByColumn=" +
  175. "" +
  176. "&isAsc=" +
  177. "asc" +
  178. "&beginDate=" +
  179. this.beginDate +
  180. "&endDate=" +
  181. this.endDate
  182. )
  183. .then((res) => {
  184. this.tableData = res.data.data;
  185. this.loading=false;
  186. });
  187. },
  188. headStyle() {
  189. return "text-align:center";
  190. },
  191. changeFun(val) {
  192. let wt = [];
  193. this.histogram_Date = {};
  194. this.histogram_sers = [];
  195. for (let i = 0; i < Object.keys(val).length; i++) {
  196. wt.push(val[i].windturbine);
  197. }
  198. this.$http
  199. .get(
  200. "leaderboard/fittingtopchart?wtIds=" +
  201. wt +
  202. "&beginDate=" +
  203. this.beginDate +
  204. "&endDate=" +
  205. this.endDate
  206. )
  207. .then((res) => {
  208. let that = this;
  209. this.histogram_Date = [];
  210. let design = [];
  211. let h_Date = res.data.data;
  212. this.histogram_sers = res.data.data.sers;
  213. for (let j = 0; j < Object.keys(this.histogram_sers).length; j++) {
  214. let name1 = res.data.data.sers[j];
  215. design = h_Date[name1];
  216. that.histogram_Date.push({
  217. type: "line",
  218. name: name1,
  219. stack: "总量",
  220. data: design,
  221. });
  222. }
  223. });
  224. },
  225. toExcel() {
  226. let that = this;
  227. excelHelper.exportExcel("tableData", "拟合优度排行榜", ".xls", true);
  228. },
  229. filter_bdate(cellValue) {
  230. let date = new Date(cellValue.beginDate);
  231. return formateDate(date / 1000);
  232. },
  233. filter_edate(cellValue) {
  234. let date = new Date(cellValue.endDate);
  235. return formateDate(date / 1000);
  236. },
  237. filter_generatingCapacity(cellValue) {
  238. return parseFloat(cellValue.power).toFixed(2);
  239. },
  240. filter_power(cellValue) {
  241. return parseFloat(cellValue.power).toFixed(2);
  242. },
  243. curveCreation() {
  244. this.dialogTableVisible = true;
  245. this.$nextTick(function () {
  246. this.drawhistogram();
  247. });
  248. },
  249. drawhistogram() {
  250. var myChart;
  251. // if (myChart != null && myChart != "" && myChart != undefined) {
  252. // myChart.dispose();
  253. // }
  254. myChart= this.$echarts.init(document.getElementById('histogram'));
  255. var option;
  256. option = {
  257. title: {
  258. text: "折线图堆叠",
  259. },
  260. tooltip: {
  261. trigger: "axis",
  262. },
  263. legend: {
  264. data: this.histogram_sers
  265. },
  266. grid: {
  267. left: "3%",
  268. right: "4%",
  269. bottom: "3%",
  270. containLabel: true,
  271. },
  272. toolbox: {
  273. feature: {
  274. saveAsImage: {},
  275. },
  276. },
  277. xAxis: {
  278. type: "category",
  279. data: [0.5,1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0],
  280. },
  281. yAxis: {
  282. type: "value",
  283. },
  284. series:this.histogram_Date,
  285. };
  286. myChart.clear();
  287. option && myChart.setOption(option);
  288. },
  289. },
  290. mounted() {
  291. this.query_fc();
  292. this.query_table();
  293. },
  294. };
  295. </script>
  296. <style lang="scss" scoped>
  297. /deep/.el-table__header-wrapper .el-checkbox{
  298. display:none
  299. }
  300. </style>