znzhfx.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530
  1. <template>
  2. <div class="znzhfx">
  3. <el-scrollbar height="910px">
  4. <el-row :gutter="20" class="table-panel">
  5. <el-col :span="24">
  6. <div class="back">
  7. <button class="btn" type="button" @click="back">
  8. <span>返回</span>
  9. </button>
  10. </div>
  11. <div class="table-title">
  12. {{ wtId }}号风机{{ year }}年{{ month }}月运行指标性能分析
  13. </div>
  14. <Table :data="tableData2" :canScroll="false" />
  15. </el-col>
  16. </el-row>
  17. <div class="mg-b-16 anliz-des">
  18. <div>
  19. 本月{{ wtId }}号风机风机设备利用小时数{{ tableVal.byzb && tableVal.byzb.lyxs }}小时、
  20. 同比{{ tableVal.tqzb && tableVal.tqzb.lyxs }}小时,
  21. 设备可利用率{{ tableVal.byzb && tableVal.byzb.sbklyl }}%、
  22. 同比{{ tableVal.tqzb && tableVal.tqzb.sbklyl }}%;
  23. 等效可用系数{{ tableVal.byzb && tableVal.byzb.dxklyxs }}%、
  24. 同比{{ tableVal.tqzb && tableVal.tqzb.dxklyxs }}%;
  25. 静风频率达到{{ tableVal.byzb && tableVal.byzb.jfpl }}%、
  26. 同比{{ tableVal.tqzb && tableVal.tqzb.jfpl }}%;
  27. 机组功率特性一致性系数达到{{ tableVal.byzb && tableVal.byzb.glyzxxs }}%、
  28. 同比{{ tableVal.tqzb && tableVal.tqzb.glyzxxs }}%。 <br />
  29. {{ wtId }}风机{{ year }}年{{ month }}
  30. 月平均风速{{ tableVal.byzb && tableVal.byzb.fs }}m/s、
  31. 同比{{ tableVal.tqzb && tableVal.tqzb.fs }}m/s;
  32. 小风平均切入风速{{ tableVal.byzb && tableVal.byzb.xfqr }}m/s、
  33. 同比{{ tableVal.tqzb && tableVal.tqzb.xfqr }}m/s;
  34. 有效风时数{{ tableVal.byzb && tableVal.byzb.yxfss }}小时、
  35. 同比{{ tableVal.tqzb && tableVal.tqzb.yxfss }}小时;
  36. 实际发电电量{{ tableVal.byzb && tableVal.byzb.fdl }}万kwh、
  37. 同比{{ tableVal.tqzb && tableVal.tqzb.fdl }}万kwh,
  38. 同比增长率{{ tableVal.tbzb && (tableVal.tbzb.fdl).toFixed(2) }}%;
  39. 各项损失电量累计{{ tableVal.byzb && (tableVal.byzb.llfdl - tableVal.byzb.fdl).toFixed(2) }}万kwh、
  40. 同比{{ tableVal.tqzb && tableVal.tqzb.llfdl - tableVal.tqzb.fdl }}万kwh,
  41. 同比增长率{{ tableVal.tbzb && (tableVal.byzb.llfdl - tableVal.tbzb.fdl).toFixed(2) }}%;
  42. 理论发电量{{ tableVal.byzb && tableVal.byzb.llfdl }}万kwh,
  43. 实际发电量与理论发电量相差{{ tableVal.tbzb && tableVal.tbzb.llfdl }}万kwh。 <br />
  44. 本月静风频率{{ tableVal.byzb && tableVal.byzb.jfpl }}%,
  45. <!-- 月累计静风时长0.00小时, -->
  46. 月累计待机小时{{ tableVal.byzb && tableVal.byzb.tjxs }}小时,待机占比{{ tableVal.byzb && tableVal.tqzb.tjxs }}%。
  47. </div>
  48. </div>
  49. <div class="mg-b-16">
  50. <panel :title="'损失电量分析'" :showLine="true">
  51. <multiple-bar-line-chart
  52. :height="'21.296vh'"
  53. :barData="bar1Data"
  54. :lineData="lineData"
  55. />
  56. </panel>
  57. </div>
  58. <div class="mg-b-16">
  59. <panel :title="'损失电量分析'" :showLine="true">
  60. <vertival-bar-line-chart :height="'21.296vh'" :bardata="bar2data" />
  61. </panel>
  62. </div>
  63. <div class="mg-b-16">
  64. <panel :title="'损失电量分析'" :showLine="true">
  65. <double-line-chart :height="'21.296vh'" :list="list" />
  66. </panel>
  67. </div>
  68. </el-scrollbar>
  69. </div>
  70. </template>
  71. <script>
  72. import Panel from "../../components/coms/panel/panel.vue";
  73. import Table from "../../components/coms/table/table.vue";
  74. import VertivalBarLineChart from "../../components/chart/combination/vertival-bar-line-chart.vue";
  75. import MultipleBarLineChart from "../../components/chart/combination/multiple-bar-line-chart.vue";
  76. import DoubleLineChart from "../../components/chart/line/double-line-chart.vue";
  77. export default {
  78. setup() {},
  79. components: {
  80. Panel,
  81. Table,
  82. VertivalBarLineChart,
  83. MultipleBarLineChart,
  84. DoubleLineChart,
  85. },
  86. data() {
  87. return {
  88. wtId: "",
  89. year: "",
  90. month: "",
  91. tableVal: "",
  92. tabrow: {
  93. fdl: "实际发电量(万千瓦时)",
  94. fs: "平均风速(m/s)",
  95. gzss: "故障损失电量(万千瓦时)",
  96. jxss: "计划检修损失电量(万千瓦时)",
  97. xdss: "调度限电损失电量(万千瓦时)",
  98. xnss: "性能未达标损失电量(万千瓦时)",
  99. slss: "受累损失电量(万千瓦时)",
  100. llfdl: "理论发电量(万千瓦时)",
  101. gzxs: "故障停运时间(小时)",
  102. jxxs: "检修停运时间(小时)",
  103. tjxs: "待机时间(小时)",
  104. zdxs: "通讯中断时间(小时)",
  105. yxxs: "并网时间(小时)",
  106. lyxs: "设备利用小时(小时)",
  107. sbklyl: "设备利用率(%)",
  108. dxklyxs: "等效可用系数(%)",
  109. xfqr: "小风切入风速(m/s)",
  110. glyzxxs: "功率特性一致性系数(%)",
  111. yxfss: "有效风时数(小时)",
  112. xfqrhgl: "小风切入合格率(%)",
  113. jfpl: "静风频率(%)",
  114. },
  115. tableData2: {
  116. column: [
  117. {
  118. name: "指标名称",
  119. field: "name",
  120. },
  121. {
  122. name: "本月值",
  123. field: "byzb",
  124. },
  125. {
  126. name: "去年同期",
  127. field: "hqzb",
  128. },
  129. {
  130. name: "同比增长率(%)",
  131. field: "hbzb",
  132. },
  133. {
  134. name: "环比",
  135. field: "tqzb",
  136. },
  137. {
  138. name: "环比端值(%)",
  139. field: "tbzb",
  140. },
  141. ],
  142. data: [
  143. {
  144. name: "实际发电量(万kWh)",
  145. v1: "174785",
  146. v2: "317885",
  147. v3: "-45",
  148. v4: "22322",
  149. v5: "-36",
  150. },
  151. ],
  152. },
  153. bar1Data: [
  154. {
  155. title: "日发电量",
  156. yAxisIndex: 0,
  157. value: [
  158. {
  159. text: "05-01",
  160. value: 1,
  161. },
  162. {
  163. text: "05-01",
  164. value: 2,
  165. },
  166. {
  167. text: "05-01",
  168. value: 1,
  169. },
  170. {
  171. text: "05-01",
  172. value: 3,
  173. },
  174. {
  175. text: "05-01",
  176. value: 3,
  177. },
  178. {
  179. text: "05-01",
  180. value: 3,
  181. },
  182. {
  183. text: "05-01",
  184. value: 3,
  185. },
  186. ],
  187. },
  188. {
  189. title: "风速",
  190. yAxisIndex: 0,
  191. value: [
  192. {
  193. text: "05-01",
  194. value: 1,
  195. },
  196. {
  197. text: "05-01",
  198. value: 2,
  199. },
  200. {
  201. text: "05-01",
  202. value: 1,
  203. },
  204. {
  205. text: "05-01",
  206. value: 3,
  207. },
  208. {
  209. text: "05-01",
  210. value: 3,
  211. },
  212. {
  213. text: "05-01",
  214. value: 3,
  215. },
  216. {
  217. text: "05-01",
  218. value: 3,
  219. },
  220. ],
  221. },
  222. ],
  223. lineData: {
  224. name: "风速",
  225. unit: "km",
  226. data: [200, 800, 400, 500, 800, 700, 800, 900, 200],
  227. },
  228. bar2data: {
  229. area: [
  230. "05-01",
  231. "05-01",
  232. "05-01",
  233. "05-01",
  234. "05-01",
  235. "05-01",
  236. "05-01",
  237. "05-01",
  238. "05-01",
  239. ],
  240. legend: [
  241. "限电损失电量",
  242. "性能未达标损失电量",
  243. "检修损失电量",
  244. "故障损失电量",
  245. "受累损失电量",
  246. "性能损失",
  247. ],
  248. data: [
  249. [1320, 1302, 901, 634, 1390, 1330, 1320, 1000, 500],
  250. [320, 302, 301, 334, 390, 330, 320, 100, 50],
  251. [320, 302, 301, 334, 390, 330, 320, 100, 50],
  252. [1320, 1302, 901, 634, 1390, 1330, 1320, 1000, 500],
  253. [320, 302, 301, 334, 390, 330, 320, 100, 50],
  254. [320, 302, 301, 334, 390, 330, 320, 100, 50],
  255. [1320, 1302, 901, 634, 1390, 1330, 1320, 1000, 500],
  256. [320, 302, 301, 334, 390, 330, 320, 100, 50],
  257. ],
  258. },
  259. list: [
  260. {
  261. title: "绿123线",
  262. smooth: false,
  263. value: [
  264. {
  265. text: "",
  266. value: 0,
  267. },
  268. {
  269. text: "0:00",
  270. value: 20,
  271. },
  272. {
  273. text: "10:00",
  274. value: 1,
  275. },
  276. {
  277. text: "11:00",
  278. value: 40,
  279. },
  280. {
  281. text: "12:00",
  282. value: 10,
  283. },
  284. {
  285. text: "13:00",
  286. value: 15,
  287. },
  288. {
  289. text: "14:00",
  290. value: 30,
  291. },
  292. {
  293. text: "15:00",
  294. value: 40,
  295. },
  296. {
  297. text: "",
  298. value: 10,
  299. },
  300. ],
  301. },
  302. {
  303. title: "黄线",
  304. smooth: false,
  305. value: [
  306. {
  307. text: "",
  308. value: 0,
  309. },
  310. {
  311. text: "0:00",
  312. value: 40,
  313. },
  314. {
  315. text: "10:00",
  316. value: 20,
  317. },
  318. {
  319. text: "11:00",
  320. value: 20,
  321. },
  322. {
  323. text: "12:00",
  324. value: 10,
  325. },
  326. {
  327. text: "13:00",
  328. value: 40,
  329. },
  330. {
  331. text: "14:00",
  332. value: 50,
  333. },
  334. {
  335. text: "15:00",
  336. value: 40,
  337. },
  338. {
  339. text: "",
  340. value: 10,
  341. },
  342. ],
  343. },
  344. ],
  345. };
  346. },
  347. created() {
  348. this.wtId = this.$route.params.wtId;
  349. this.year = this.$route.params.year;
  350. this.month = this.$route.params.month;
  351. this.search();
  352. this.searchChart();
  353. },
  354. filters: {
  355. tabrowfil(val) {
  356. return this.tabrow[val];
  357. },
  358. },
  359. methods: {
  360. async search() {
  361. const { data } = await this.API.requestData({
  362. subUrl: "/singleanalysis/singleanalysisSub",
  363. method: "POST",
  364. data: {
  365. wtId: this.wtId,
  366. year: this.year,
  367. month: this.month,
  368. },
  369. });
  370. console.log(data.data);
  371. const res = data.data;
  372. this.tableVal = data.data;
  373. console.warn(this.tableVal);
  374. let arr = [];
  375. let keyarr = Object.keys(res.byzb);
  376. console.warn(keyarr);
  377. let jarr = Object.keys(res);
  378. for (let k of keyarr) {
  379. let obj = {
  380. name: k,
  381. byzb: null,
  382. hbzb: null,
  383. hqzb: null,
  384. tbzb: null,
  385. tqzb: null,
  386. };
  387. for (let i in res) {
  388. for (let j of jarr) {
  389. if (i == j) {
  390. obj[j] = res[i][k];
  391. }
  392. }
  393. }
  394. arr.push(obj);
  395. }
  396. arr = arr.filter((e) => {
  397. return (
  398. e.name != "id" &&
  399. e.name != "windturbineid" &&
  400. e.name != "windturbineName" &&
  401. e.name != "windPowerStationId" &&
  402. e.name != "windPowerStationName" &&
  403. e.name != "recorddate" &&
  404. e.name != "swdl" &&
  405. e.name != "gwdl" &&
  406. e.name != "rlxs" &&
  407. e.name != "fjrl"
  408. );
  409. });
  410. arr.forEach((e) => {
  411. e.name = this.tabrow[e.name];
  412. });
  413. this.tableData2.data = arr;
  414. console.warn(arr);
  415. },
  416. async searchChart() {
  417. const { data } = await this.API.requestData({
  418. subUrl: "/singleanalysis/singleanalysisChart",
  419. method: "POST",
  420. data: {
  421. wtId: this.wtId,
  422. year: this.year,
  423. month: this.month,
  424. },
  425. });
  426. console.warn(data.data);
  427. const res = data.data;
  428. let arrfffdl = [];
  429. let arrfffs = [];
  430. res.ff.forEach((e) => {
  431. let obj = {
  432. text: new Date(e.recorddate).formatDate("MM-dd"),
  433. value: e.fdl,
  434. };
  435. let obj1 = {
  436. text: new Date(e.recorddate).formatDate("MM-dd"),
  437. value: e.fs,
  438. };
  439. arrfffdl.push(obj);
  440. arrfffs.push(obj1);
  441. });
  442. this.bar1Data[0].value = arrfffdl;
  443. this.lineData.data = arrfffs;
  444. ////
  445. let arrjdjf = [];
  446. let arrjddj = [];
  447. res.jd.forEach((e) => {
  448. let obj = {
  449. text: new Date(e.recorddate).formatDate("MM-dd"),
  450. value: e.jfpl,
  451. };
  452. let obj1 = {
  453. text: new Date(e.recorddate).formatDate("MM-dd"),
  454. value: e.tjxs,
  455. };
  456. arrjdjf.push(obj);
  457. arrjddj.push(obj1);
  458. });
  459. let obj = {
  460. title: "静风时长(小时)",
  461. smooth: false,
  462. value: arrjdjf,
  463. };
  464. let obj1 = {
  465. title: "待机时长(小时)",
  466. smooth: false,
  467. value: arrjddj,
  468. };
  469. this.list = [];
  470. this.list.push(obj);
  471. this.list.push(obj1);
  472. console.warn(this.list);
  473. /////
  474. let arrwsarea = [];
  475. let arrwslegend = [
  476. "限电损失电量",
  477. "性能未达标损失电量",
  478. "检修损失电量",
  479. "故障损失电量",
  480. "受累损失电量",
  481. ];
  482. let arrwsdata = [];
  483. res.ws.forEach((e) => {
  484. let arr = [];
  485. for (let k of ["xdss", "xnss", "jxss", "gzss", "slss"]) {
  486. arr.push(e[k]);
  487. }
  488. arrwsdata.push(arr);
  489. arrwsarea.push(new Date(e.recorddate).formatDate("MM-dd"));
  490. });
  491. this.bar2data.area = arrwsarea;
  492. this.bar2data.legend = arrwslegend;
  493. this.bar2data.data = arrwsdata;
  494. console.warn(this.bar2data);
  495. },
  496. back() {
  497. this.$router.go(-1);
  498. },
  499. },
  500. };
  501. </script>
  502. <style lang="less">
  503. .znzhfx {
  504. font-size: 12px;
  505. .anliz-des {
  506. font-size: 16px;
  507. color: #b3bdc0;
  508. margin-top: 1.4993vh;
  509. margin-bottom: 44px;
  510. }
  511. .table-panel {
  512. .table-title {
  513. font-size: 16px;
  514. text-align: center;
  515. color: #fefefe;
  516. height: 4.6972vh;
  517. line-height: 4.6972vh;
  518. }
  519. .back {
  520. margin: 2.3988vh 0px 0px 0px;
  521. }
  522. }
  523. .com-table {
  524. border: 1px solid #6067697d;
  525. }
  526. }
  527. </style>