znzhfx.vue 14 KB

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