record.vue 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. <template>
  2. <el-dialog width="70%" @open="opened" @closed="closed" :fullscreen="true" :show-close="true" class="dialogs">
  3. <template #title>
  4. <div class="showTitles currentShowTitles">
  5. <div class="titles">推荐记录查询</div>
  6. </div>
  7. </template>
  8. <div class="body">
  9. <div class="searchTitle">
  10. <div class="search">
  11. <div class="date">风场:</div>
  12. <el-select @change="listedChange(selectValue)" class="inputs" v-model="selectValue" placeholder="请选择">
  13. <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
  14. </el-option>
  15. </el-select>
  16. </div>
  17. <div class="search">
  18. <div class="date">风机名称:</div>
  19. <el-select class="inputs" v-model="selectWind" @change="handleChange" placeholder="请选择" clearable>
  20. <el-option v-for="item in windturbinelist" :key="item.id" :label="item.id" :value="item.id">
  21. </el-option>
  22. </el-select>
  23. </div>
  24. <div class="buttons" @click="getData()">查询</div>
  25. </div>
  26. <div class="tables">
  27. <el-table
  28. :data="recordList"
  29. class="table"
  30. style="width: 100%"
  31. height="80vh"
  32. :header-cell-style="{
  33. background: 'rgb(30,30,30)',
  34. color: 'rgb(220,220,220)',
  35. padding: '4px',
  36. fontSize: '14px',
  37. 'border-bottom': 'solid 1px rgba(77, 77, 77, 1)',
  38. }"
  39. :cell-style="{
  40. height: '40px',
  41. background: 'rgb(30,30,30)',
  42. color: 'rgb(220,220,220)',
  43. padding: '3px',
  44. fontSize: '12px',
  45. 'border-bottom': '1px solid #000000',
  46. }"
  47. >
  48. <el-table-column
  49. prop="recommendedDate"
  50. label="推荐时间"
  51. width="150"
  52. align="center"
  53. >
  54. </el-table-column>
  55. <el-table-column prop="stationId" label="场站" align="center">
  56. </el-table-column>
  57. <el-table-column prop="windturbineId" label="风机" align="center">
  58. </el-table-column>
  59. <el-table-column prop="windSpeed" label="推荐时风速" align="center">
  60. </el-table-column>
  61. <el-table-column prop="averageWindSpeed5" label="推荐时五分钟平均风速" align="center">
  62. </el-table-column>
  63. <el-table-column label="推荐操作" align="center">
  64. <template #default="scope">
  65. <span>
  66. {{ controlType[scope.row?.controlType] }}
  67. </span>
  68. </template>
  69. </el-table-column>
  70. <el-table-column prop="rollSpeed" label="推荐时发电机转速" align="center">
  71. </el-table-column>
  72. <el-table-column prop="power" label="推荐时功率" align="center">
  73. </el-table-column>
  74. <el-table-column prop="theoreticalPower" label="推荐时理论功率" align="center">
  75. </el-table-column>
  76. <el-table-column prop="healthIndex" label="推荐时健康指数" align="center">
  77. </el-table-column>
  78. <el-table-column prop="cause" label="推荐原因" align="center">
  79. </el-table-column>
  80. </el-table>
  81. </div>
  82. <div class="paginations">
  83. <el-pagination :hide-on-single-page="true" :page-size="1" background layout="prev, pager, next"
  84. :total="total" @current-change="handleCurrentChange">
  85. </el-pagination>
  86. </div>
  87. </div>
  88. </el-dialog>
  89. </template>
  90. <script>
  91. import api from "api/index";
  92. import dayjs from "dayjs";
  93. export default {
  94. components: {
  95. },
  96. data() {
  97. return {
  98. selectValue: "",
  99. stationList: [],
  100. selectWind: "",
  101. windturbinelist: [],
  102. pagesize: 20,
  103. pagenum: 1,
  104. total: "",
  105. recordList: [],
  106. controlType:{
  107. Nothing: '不推荐 ',
  108. Start: '推荐启动 ',
  109. Stop: '推荐停机',
  110. Maintain: '推荐维护',
  111. UnMaintain: '取消维护',
  112. Lock: '挂牌',
  113. UnLock: '取消挂牌 ',
  114. }
  115. };
  116. },
  117. created() {
  118. },
  119. mounted() { },
  120. methods: {
  121. opened() {
  122. // let stationList = this.$store.state.stationList;
  123. let stationArr = [
  124. {
  125. name: '全部',
  126. id: ''
  127. }
  128. ]
  129. this.$store.state.stationList.forEach(item =>{
  130. if (item.name.indexOf('全部') === -1) {
  131. stationArr.push(item)
  132. }
  133. })
  134. let stationList = stationArr;
  135. this.selectValue = stationList[0].id;
  136. this.stationList = stationList;
  137. this.listedChange(this.selectValue);
  138. this.getData()
  139. },
  140. closed() {
  141. this.pagenum = 1;
  142. },
  143. listedChange(value) {
  144. this.windturbinelist = [];
  145. let windturbinelist = this.$store.state.windturbinelist;
  146. let arr = Object.keys(windturbinelist).sort();
  147. let windturbine = [];
  148. for (const key of arr) {
  149. let wind = windturbinelist[key];
  150. if (wind.stationId === value) {
  151. windturbine.push(wind);
  152. }
  153. }
  154. this.selectWind = windturbine[0]?.id || "";
  155. this.windturbineId = windturbine[0]?.windturbineId
  156. this.windturbinelist = windturbine;
  157. },
  158. getData() {
  159. api.recommended({
  160. pagesize: this.pagesize,
  161. pagenum: this.pagenum,
  162. stationid: this.selectValue === 'WIND_ALL' ? '' : this.selectValue,
  163. windturbineid: this.selectWind,
  164. }).then(res => {
  165. if (res.data) {
  166. this.total = Number(res.data.totalPages)
  167. res.data.content.forEach(item => {
  168. item.recommendedDate = dayjs(item.recommendedDate ).format("YYYY-MM-DD HH:mm:ss")
  169. item.power = item.power.toFixed(2)
  170. item.rollSpeed = item.rollSpeed.toFixed(2)
  171. item.theoreticalPower = item.theoreticalPower.toFixed(2)
  172. item.windSpeed = item.windSpeed.toFixed(2)
  173. item.averageWindSpeed5 = item.averageWindSpeed5.toFixed(2)
  174. });
  175. this.recordList = res.data.content
  176. }
  177. })
  178. },
  179. handleCurrentChange(val) {
  180. this.pagenum = val;
  181. this.getData();
  182. },
  183. },
  184. };
  185. </script>
  186. <style lang="less" scoped>
  187. .body {
  188. display: flex;
  189. flex-direction: column;
  190. background-color: #000000;
  191. height: 90vh;
  192. width: 102%;
  193. margin-left: -1%;
  194. margin-top: -40px;
  195. overflow-y: auto;
  196. }
  197. .body::-webkit-scrollbar {
  198. /*隐藏滚轮*/
  199. display: none;
  200. }
  201. .searchTitle {
  202. display: flex;
  203. flex-direction: row;
  204. align-items: center;
  205. margin-left: 3vw;
  206. padding-top: 10px;
  207. color: #ffffff;
  208. }
  209. .search {
  210. display: flex;
  211. flex-direction: row;
  212. align-items: center;
  213. margin-right: 50px;
  214. }
  215. .date {
  216. margin-right: 10px;
  217. font-size: 16px;
  218. }
  219. .tables {
  220. margin-left: 3vw;
  221. padding-top: 10px;
  222. }
  223. .lable {
  224. display: flex;
  225. flex-direction: row;
  226. align-items: center;
  227. flex-wrap: wrap;
  228. width: 100%;
  229. margin-left: 75px;
  230. padding-top: 10px;
  231. }
  232. .lable-item {
  233. font-size: 16px;
  234. display: flex;
  235. flex-direction: row;
  236. align-items: center;
  237. width: 16%;
  238. color: #ffffff;
  239. margin-bottom: 10px;
  240. }
  241. .el-table {
  242. position: static;
  243. background-color: #141414;
  244. }
  245. .inputs {
  246. border: none;
  247. width: 174px !important;
  248. background-color: #292929;
  249. height: 40px;
  250. color: #ffffff;
  251. }
  252. .paginations {
  253. display: flex;
  254. flex-direction: row-reverse;
  255. }
  256. </style>