RankingUtilization.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. <template>
  2. <div class="box">
  3. <div class="searchBar">
  4. <el-card class="box-card">
  5. <!-- <div slot="header" class="clearfix" style="font-size:15px">
  6. <span>查询条件</span>
  7. </div> -->
  8. <el-form :inline="true" :model="formInline" class="demo-form-inline">
  9. <el-row :gutter="1">
  10. <el-form-item label="查询条件">
  11. </el-form-item>
  12. <el-form-item label="类型">
  13. <el-select v-model="value" placeholder="请选择">
  14. <el-option
  15. v-for="item in options"
  16. :key="item.label"
  17. :label="item.label"
  18. :value="item.value">
  19. </el-option>
  20. </el-select>
  21. </el-form-item>
  22. <el-form-item label="风场">
  23. <el-select v-model="value2"
  24. placeholder="请选择">
  25. <el-option
  26. v-for="item in options2"
  27. :key="item.name"
  28. :label="item.name"
  29. :value="item.id"
  30. >
  31. </el-option>
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item label="选择时间:">
  35. <el-date-picker
  36. v-model="timedate"
  37. value-format="yyyy-MM-dd"
  38. type="daterange"
  39. range-separator="至"
  40. start-placeholder="开始日期"
  41. end-placeholder="结束日期"
  42. format="yyyy-MM-dd"
  43. >
  44. </el-date-picker>
  45. </el-form-item>
  46. <el-form-item>
  47. <el-button type="primary" @click="queryApData" :plain="true"
  48. >查询</el-button
  49. >
  50. </el-form-item>
  51. <el-form-item>
  52. <el-button type="primary" @click="toExcel()">导出</el-button>
  53. </el-form-item>
  54. </el-row>
  55. </el-form>
  56. </el-card>
  57. <el-table
  58. id="loadratetable"
  59. :data="gridData"
  60. :row-style="{ height: '10px' }"
  61. :cell-style="{ textAlign: 'center',padding:'1px' }"
  62. :header-cell-style="headStyle"
  63. @sort-change="changeTableSort"
  64. style="font-size: 10px;margin-top:1%">
  65. <el-table-column label="利用率排行榜">
  66. <el-table-column
  67. type="index"
  68. width="40">
  69. </el-table-column>
  70. <el-table-column
  71. prop="windturbineid"
  72. label="名称"
  73. width="460">
  74. </el-table-column>
  75. <el-table-column
  76. :sortable="'custom'"
  77. prop="daydl2"
  78. label="实际发电量(万KW)"
  79. width="460">
  80. </el-table-column>
  81. <el-table-column
  82. :sortable="'custom'"
  83. prop="daylldl"
  84. label="理论发电量(万KW)"
  85. width="460">
  86. </el-table-column>
  87. <el-table-column
  88. :sortable="'custom'"
  89. prop="dayspeed"
  90. label="风能利用率(%)"
  91. width="460">
  92. </el-table-column>
  93. </el-table-column>
  94. </el-table>
  95. </div>
  96. </div>
  97. </template>
  98. <script>
  99. import {formatDate} from '../../utils/fomatDate';
  100. import excelHelper from "@/utils/excelHelper";
  101. export default {
  102. data() {
  103. return {
  104. formInline: {
  105. windfarm: "",
  106. project: "",
  107. line: "",
  108. },
  109. timedate: [
  110. // {beginDate:'2021-01-01'},
  111. // {endDate:'2021-01-04'}
  112. ],
  113. currentPage2: 1,
  114. pagesize: 10,
  115. gridData:[],
  116. options: [{
  117. value: '0',
  118. label: '风场'
  119. }, {
  120. value: '1',
  121. label: '项目'
  122. },{
  123. value: '2',
  124. label: '线路'
  125. },{
  126. value: '3',
  127. label: '风机'
  128. }],
  129. options2: [],
  130. orderByColumn:'',
  131. isAsc: '',
  132. value: '0',
  133. value2: ''
  134. }
  135. },
  136. filters: { 
  137.     //方法一: yyyy-MM-dd hh:mm
  138. formatDate(time) {
  139. let date = new Date(time)
  140. // console.log(new Date(time))
  141. return formatDate(date, 'yyyy-MM-dd')
  142. },
  143. rounding (value) {
  144. return value.toFixed(2)
  145. }
  146. },
  147. created(){
  148. this.UtilizationRateData();
  149. },
  150. methods:{
  151. queryApData() {
  152. this.UtilizationRateData();
  153. },
  154. headStyle() {
  155. return "text-align:center"
  156. },
  157. changeTableSort(column){
  158. this.orderByColumn = column.prop;
  159. if(column.order == "descending"){
  160. this.isAsc = 'desc';
  161. }else if(column.order == "ascending"){
  162. this.isAsc = "asc";
  163. }
  164. this.UtilizationRateData();
  165. },
  166. UtilizationRateData(){
  167. let that = this;
  168. this.$http.get('/powercompare/windfarmAjax').then((res) => {
  169. that.options2 = res.data.data;
  170. })
  171. const nowDate = new Date();
  172. const date = {
  173. year: nowDate.getFullYear(),
  174. month: nowDate.getMonth() + 1,
  175. date: nowDate.getDate(),
  176. }
  177. const newmonth = date.month>10?date.month:'0'+date.month
  178. const day = date.date>10?date.date:'0'+date.date
  179. const day1 = date.date>10?date.date - 1:'0'+date.date
  180. this.updateTime = date.year + '-' + newmonth + '-' + day
  181. this.updateTime1 = date.year + '-' + newmonth + '-' + day1
  182. if(this.timedate == ''){
  183. this.timedate[0] = this.updateTime1;
  184. this.timedate[1] = this.updateTime;
  185. this.beginDate = this.timedate[0];
  186. this.endDate = this.timedate[1];
  187. }else{
  188. this.beginDate = this.timedate[0];
  189. this.endDate = this.timedate[1];
  190. }
  191. var utilizationRateData = new URLSearchParams();
  192. utilizationRateData.append('pageNum',this.currentPage2);
  193. utilizationRateData.append('pageSize',this.pagesize);
  194. utilizationRateData.append('orderByColumn',this.orderByColumn);
  195. utilizationRateData.append('isAsc',this.isAsc);
  196. utilizationRateData.append('wpId',this.value2);
  197. utilizationRateData.append('beginDate',this.beginDate);
  198. utilizationRateData.append('endDate',this.endDate);
  199. utilizationRateData.append('type',this.value);
  200. this.$http.post('/leaderboard/utilizationList',utilizationRateData).then((res) => {
  201. this.gridData = res.data.data
  202. })
  203. },
  204. toExcel(){
  205. excelHelper.exportExcel("loadratetable","曲线偏差率排行榜",".xls",true);
  206. }
  207. }
  208. }
  209. </script>
  210. <style lang="scss" scoped>
  211. .box{
  212. width: 100%;
  213. display: flex;
  214. justify-content: space-around;
  215. align-items: center;
  216. overflow: hidden;
  217. }
  218. .searchBar{
  219. margin-top: 1%;
  220. }
  221. .box-card{
  222. width: 100%;
  223. }
  224. </style>