znzhfx.vue 15 KB

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