index.vue 27 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114
  1. <template>
  2. <div class="parcel-box">
  3. <div class="title">
  4. <div class="form-wrapper">
  5. <div class="select-wrapper">
  6. <el-select
  7. size="mini"
  8. :disabled="displayDetail"
  9. v-model="tabIndex"
  10. placeholder="请选择"
  11. @change="tabClick"
  12. >
  13. <el-option
  14. v-for="item in tabOptions"
  15. :key="item.id"
  16. :label="item.name"
  17. :value="item.id"
  18. >
  19. </el-option>
  20. </el-select>
  21. <el-select
  22. size="mini"
  23. :disabled="displayDetail"
  24. v-model="company"
  25. multiple
  26. collapse-tags
  27. placeholder="江苏区域"
  28. @change="handleCompanyChange(company)"
  29. >
  30. <el-option
  31. v-for="item in companyOptions"
  32. :key="item.id"
  33. :label="item.aname"
  34. :value="item.id"
  35. >
  36. </el-option>
  37. </el-select>
  38. </div>
  39. <div class="date-wrapper">
  40. <div class="date-item-wrapper">
  41. 开始日期
  42. <div class="date-item-date">
  43. <el-date-picker
  44. v-model="starTime"
  45. :disabled="displayDetail"
  46. type="date"
  47. value-format="YYYY-MM-DD"
  48. placeholder="选择日期"
  49. size="mini"
  50. >
  51. </el-date-picker>
  52. </div>
  53. </div>
  54. <div class="date-item-wrapper">
  55. 结束日期
  56. <div class="date-item-date">
  57. <el-date-picker
  58. v-model="endTime"
  59. :disabled="displayDetail"
  60. type="date"
  61. value-format="YYYY-MM-DD"
  62. placeholder="选择日期"
  63. size="mini"
  64. >
  65. </el-date-picker>
  66. </div>
  67. </div>
  68. </div>
  69. </div>
  70. <div class="but">
  71. <el-button
  72. round
  73. size="mini"
  74. :disabled="displayDetail"
  75. class="buttons"
  76. @click="gerGsdb"
  77. >搜索</el-button
  78. >
  79. <el-button
  80. round
  81. size="mini"
  82. class="buttons"
  83. @click="dbfx"
  84. :disabled="
  85. chooseList.length <= 5 && chooseList.length > 1 ? false : true
  86. "
  87. >对标分析</el-button
  88. >
  89. <el-button
  90. round
  91. size="mini"
  92. class="buttons"
  93. @click="goBack"
  94. v-if="displayDetail"
  95. >返回</el-button
  96. >
  97. <!-- <el-button round size="mini" class="buttons">导出</el-button> -->
  98. </div>
  99. </div>
  100. <div class="bodys" v-if="!displayDetail">
  101. <div class="line">
  102. <div class="leftContent"><span>公司对标</span></div>
  103. <div class="rightContent"></div>
  104. </div>
  105. <div class="economicTable" v-if="!displayDetail">
  106. <el-table
  107. :data="tableData"
  108. ref="multipleTable"
  109. size="mini"
  110. height="100%"
  111. :cell-style="{ padding: '6px' }"
  112. :header-cell-style="{ 'text-align': 'center' }"
  113. :row-style="{ height: '0' }"
  114. stripe
  115. @selection-change="handleCurrentChange"
  116. >
  117. <el-table-column type="selection" width="55" align="center">
  118. </el-table-column>
  119. <el-table-column
  120. align="left"
  121. prop="name"
  122. label="名称"
  123. width="60"
  124. show-overflow-tooltip
  125. sortable
  126. >
  127. </el-table-column>
  128. <el-table-column
  129. align="center"
  130. prop="zhpm"
  131. label="综合排名"
  132. width="65"
  133. sortable
  134. >
  135. </el-table-column>
  136. <el-table-column
  137. align="center"
  138. prop="fdlpm"
  139. label="发电量排名"
  140. sortable
  141. width="68"
  142. >
  143. </el-table-column>
  144. <el-table-column
  145. align="center"
  146. prop="fdl"
  147. label="发电量"
  148. sortable
  149. width="68"
  150. >
  151. </el-table-column>
  152. <el-table-column
  153. align="center"
  154. prop="gzssdlpm"
  155. label="故障损失排名"
  156. sortable
  157. width="68"
  158. >
  159. </el-table-column>
  160. <el-table-column
  161. align="center"
  162. prop="gzssdl"
  163. label="故障损失"
  164. sortable
  165. width="68"
  166. >
  167. </el-table-column>
  168. <el-table-column
  169. align="center"
  170. prop="jxssdlpm"
  171. label="检修损失排名"
  172. sortable
  173. width="68"
  174. >
  175. </el-table-column>
  176. <el-table-column
  177. align="center"
  178. prop="jxssdl"
  179. label="检修损失"
  180. sortable
  181. width="68"
  182. >
  183. </el-table-column>
  184. <el-table-column
  185. align="center"
  186. prop="xnssdlpm"
  187. label="性能损失排名"
  188. sortable
  189. width="68"
  190. >
  191. </el-table-column>
  192. <el-table-column
  193. align="center"
  194. prop="xnssdl"
  195. label="性能损失"
  196. sortable
  197. width="68"
  198. >
  199. </el-table-column>
  200. <el-table-column
  201. align="center"
  202. prop="xdssdlpm"
  203. label="限电损失排名"
  204. sortable
  205. width="68"
  206. >
  207. </el-table-column>
  208. <el-table-column
  209. align="center"
  210. prop="xdssdl"
  211. label="限电损失"
  212. sortable
  213. width="68"
  214. >
  215. </el-table-column>
  216. <el-table-column
  217. align="center"
  218. prop="slssdlpm"
  219. label="受累损失排名"
  220. sortable
  221. width="68"
  222. >
  223. </el-table-column>
  224. <el-table-column
  225. align="center"
  226. prop="slssdl"
  227. label="受累损失"
  228. sortable
  229. width="68"
  230. >
  231. </el-table-column>
  232. <el-table-column
  233. align="center"
  234. prop="fnlylpm"
  235. :label="(tabIndex === -1 ? '风能' : '光能') + '利用率排名'"
  236. sortable
  237. width="68"
  238. >
  239. </el-table-column>
  240. <el-table-column
  241. align="center"
  242. prop="fnlyl"
  243. :label="(tabIndex === -1 ? '风能' : '光能') + '利用率(%)'"
  244. sortable
  245. width="68"
  246. >
  247. </el-table-column>
  248. <el-table-column
  249. align="center"
  250. prop="gzsslpm"
  251. label="故障损失率排名"
  252. sortable
  253. width="68"
  254. >
  255. </el-table-column>
  256. <el-table-column
  257. align="center"
  258. prop="gzssl"
  259. label="故障损失率(%)"
  260. sortable
  261. width="68"
  262. >
  263. </el-table-column>
  264. <el-table-column
  265. align="center"
  266. prop="jxsslpm"
  267. label="检修损失率排名"
  268. sortable
  269. width="68"
  270. >
  271. </el-table-column>
  272. <el-table-column
  273. align="center"
  274. prop="jxssl"
  275. label="检修损失率(%)"
  276. sortable
  277. width="68"
  278. >
  279. </el-table-column>
  280. <el-table-column
  281. align="center"
  282. prop="qflpm"
  283. :label="'弃' + (tabIndex === -1 ? '风' : '光') + '率排名'"
  284. sortable
  285. width="68"
  286. >
  287. </el-table-column>
  288. <el-table-column
  289. align="center"
  290. prop="qfl"
  291. :label="'弃' + (tabIndex === -1 ? '风' : '光') + '率(%)'"
  292. sortable
  293. width="68"
  294. >
  295. </el-table-column>
  296. <el-table-column
  297. align="center"
  298. prop="xnsslpm"
  299. label="性能损失率排名"
  300. sortable
  301. width="68"
  302. >
  303. </el-table-column>
  304. <el-table-column
  305. align="center"
  306. prop="xnssl"
  307. label="性能损失率(%)"
  308. sortable
  309. width="68"
  310. >
  311. </el-table-column>
  312. <el-table-column
  313. align="center"
  314. prop="slsslpm"
  315. label="受累损失率排名"
  316. sortable
  317. width="68"
  318. >
  319. </el-table-column>
  320. <el-table-column
  321. align="center"
  322. prop="slssl"
  323. label="受累损失率(%)"
  324. sortable
  325. width="68"
  326. >
  327. </el-table-column>
  328. <el-table-column align="center" prop="" label="操作" width="68">
  329. <template v-slot="scope">
  330. <span
  331. @click="goDetail(scope.row)"
  332. style="cursor: pointer; color: #1c99ff"
  333. >详情</span
  334. >
  335. </template>
  336. </el-table-column>
  337. </el-table>
  338. </div>
  339. </div>
  340. <div v-if="!displayDetail" class="echarts">
  341. <div class="pie-echarts">
  342. <div class="chart-name">
  343. <div class="point left bottom"></div>
  344. <div class="point right bottom"></div>
  345. 损失电量分析
  346. </div>
  347. <PieChart
  348. :lossPower="lossPower"
  349. width="100%"
  350. height="calc(100% - 49px)"
  351. :showLable="false"
  352. ></PieChart>
  353. </div>
  354. <div class="bar-echarts">
  355. <div class="chart-name">
  356. <div class="point left bottom"></div>
  357. <div class="point right bottom"></div>
  358. 五项损失
  359. </div>
  360. <BarCharts
  361. :list="barList"
  362. :top="25"
  363. width="100%"
  364. height="calc(100% - 49px)"
  365. :showLegend="true"
  366. :xdate="false"
  367. :colorIndex="true"
  368. ></BarCharts>
  369. </div>
  370. </div>
  371. <div v-if="displayDetail" style="height: calc(100% - 80px)">
  372. <el-table
  373. :data="detailTable"
  374. ref="multipleTable"
  375. size="mini"
  376. height="100%"
  377. :cell-style="{ padding: '6px' }"
  378. :row-style="{ height: '4' }"
  379. stripe
  380. @selection-change="handleCurrentChange"
  381. >
  382. <el-table-column type="selection" width="55" align="center">
  383. </el-table-column>
  384. <el-table-column
  385. align="center"
  386. prop="name"
  387. label="场站名称"
  388. width="150"
  389. sortable
  390. >
  391. </el-table-column>
  392. <el-table-column align="center" prop="zhpm" label="综合排名" sortable>
  393. </el-table-column>
  394. <el-table-column align="center" prop="gzssdl" label="故障损失" sortable>
  395. </el-table-column>
  396. <el-table-column
  397. align="center"
  398. prop="jxssdlpm"
  399. label="检修损失排名"
  400. sortable
  401. >
  402. </el-table-column>
  403. <el-table-column align="center" prop="jxssdl" label="检修损失" sortable>
  404. </el-table-column>
  405. <el-table-column
  406. align="center"
  407. prop="xnssdlpm"
  408. label="性能损失排名"
  409. sortable
  410. >
  411. </el-table-column>
  412. <el-table-column align="center" prop="xnssdl" label="性能损失" sortable>
  413. </el-table-column>
  414. <el-table-column
  415. align="center"
  416. prop="xdssdlpm"
  417. label="限电损失排名"
  418. sortable
  419. >
  420. </el-table-column>
  421. <el-table-column align="center" prop="xdssdl" label="限电损失" sortable>
  422. </el-table-column>
  423. <el-table-column
  424. align="center"
  425. prop="slssdlpm"
  426. label="受累损失排名"
  427. sortable
  428. >
  429. </el-table-column>
  430. <el-table-column align="center" prop="slssdl" label="受累损失" sortable>
  431. </el-table-column>
  432. <el-table-column
  433. align="center"
  434. prop="gzsslpm"
  435. label="故障损失率排名"
  436. sortable
  437. >
  438. </el-table-column>
  439. <el-table-column
  440. align="center"
  441. prop="gzssl"
  442. label="故障损失率(%)"
  443. sortable
  444. >
  445. </el-table-column>
  446. <el-table-column
  447. align="center"
  448. prop="jxsslpm"
  449. label="检修损失率排名"
  450. sortable
  451. >
  452. </el-table-column>
  453. <el-table-column
  454. align="center"
  455. prop="jxssl"
  456. label="检修损失率(%)"
  457. sortable
  458. >
  459. </el-table-column>
  460. <el-table-column
  461. align="center"
  462. prop="qflpm"
  463. :label="'弃' + (tabIndex === -1 ? '风' : '光') + '率排名'"
  464. sortable
  465. >
  466. </el-table-column>
  467. <el-table-column
  468. align="center"
  469. prop="qfl"
  470. :label="'弃' + (tabIndex === -1 ? '风' : '光') + '率(%)'"
  471. sortable
  472. >
  473. </el-table-column>
  474. <el-table-column
  475. align="center"
  476. prop="xnsslpm"
  477. label="性能损失率排名"
  478. sortable
  479. >
  480. </el-table-column>
  481. <el-table-column
  482. align="center"
  483. prop="xnssl"
  484. label="性能损失率(%)"
  485. sortable
  486. >
  487. </el-table-column>
  488. <el-table-column
  489. align="center"
  490. prop="slsslpm"
  491. label="受累损失率排名"
  492. sortable
  493. >
  494. </el-table-column>
  495. <el-table-column
  496. align="center"
  497. prop="slssl"
  498. label="受累损失率(%)"
  499. sortable
  500. >
  501. </el-table-column>
  502. </el-table>
  503. </div>
  504. <el-dialog
  505. class="dialogs"
  506. width="90%"
  507. top="40px"
  508. v-model="dialogVisible"
  509. :show-close="true"
  510. destroy-on-close
  511. >
  512. <template #title>
  513. <div class="dialog-title">
  514. <img
  515. class="dialog-title-img"
  516. src="@assets/img/images/dialog-title.png"
  517. />
  518. <div class="title">对标排名分析</div>
  519. </div>
  520. </template>
  521. <div class="dialog-body">
  522. <img class="dialog-img" src="@assets/img/images/dialog.png" />
  523. <dayinfo
  524. :radarValue="radarValue"
  525. :title="[windNum, windNum2, windNum3, windNum4, windNum5]"
  526. :windNum="windNum"
  527. :windNum2="windNum2"
  528. :windNum3="windNum3"
  529. :windNum4="windNum4"
  530. :windNum5="windNum5"
  531. :tabs="tabs"
  532. :analyisDialog="analyisDialog"
  533. />
  534. </div>
  535. </el-dialog>
  536. </div>
  537. </template>
  538. <script>
  539. import dayjs from "dayjs";
  540. import { companys } from "@/api/curveAnalyse";
  541. import { GetOrganization } from "@/api/headerNav.js";
  542. import { getStation, gsdb, details } from "@/api/performance";
  543. import PieChart from "../../homePage/components/pieChart.vue";
  544. import BarCharts from "../../homePage/components/barCharts.vue";
  545. import dayinfo from "../compontent/dayinfo.vue";
  546. export default {
  547. name: "companyBenchmarking", //公司对标
  548. components: {
  549. PieChart,
  550. BarCharts,
  551. dayinfo,
  552. },
  553. data() {
  554. return {
  555. company: [],
  556. companyOptions: [],
  557. stationObj: [],
  558. stationList: [],
  559. projectObj: [],
  560. projectList: [],
  561. lineObj: [],
  562. lineList: [],
  563. squareObj: [],
  564. squareList: [],
  565. starTime: "",
  566. endTime: "",
  567. tabIndex: -2,
  568. tabOptions: [
  569. { id: -1, name: "风电" },
  570. { id: -2, name: "光伏" },
  571. ],
  572. tableData: [],
  573. detailTable: [],
  574. chooseList: [],
  575. lossPower: [],
  576. barList: [],
  577. displayDetail: false,
  578. dialogVisible: false,
  579. radarValue: [],
  580. windNum: "",
  581. windNum2: "",
  582. windNum3: "",
  583. windNum4: "",
  584. windNum5: "",
  585. tabs: [],
  586. analyisDialog: [],
  587. screenHeight: window.innerHeight,
  588. echartsHeight: "55vh",
  589. };
  590. },
  591. created() {
  592. let date = new Date();
  593. date.setDate(1);
  594. let month = parseInt(date.getMonth() + 1);
  595. let day = date.getDate();
  596. if (month < 10) {
  597. month = "0" + month;
  598. }
  599. if (day < 10) {
  600. day = "0" + day;
  601. }
  602. this.starTime = date.getFullYear() + "-" + month + "-" + day;
  603. this.endTime = dayjs(new Date().getTime()).format("YYYY-MM-DD");
  604. this.initialization();
  605. },
  606. mounted() {
  607. if (this.screenHeight > 1100) {
  608. this.echartsHeight = "58vh";
  609. } else {
  610. this.echartsHeight = "55vh";
  611. }
  612. window.onresize = () => {
  613. return (() => {
  614. window.screenHeight = window.innerHeight;
  615. this.screenHeight = window.screenHeight;
  616. })();
  617. };
  618. },
  619. methods: {
  620. tabClick(val) {
  621. this.tabIndex = val;
  622. this.initialization();
  623. },
  624. initialization() {
  625. GetOrganization({ type: this.tabIndex }).then((res) => {
  626. if (res.data) {
  627. this.company = [];
  628. this.companyOptions = res.data;
  629. this.gerGsdb();
  630. }
  631. });
  632. },
  633. gerGsdb() {
  634. gsdb({
  635. companys: this.company.length ? this.company.join(",") : "JS_RGN",
  636. type: this.tabIndex,
  637. beginDate: this.starTime,
  638. endDate: this.endTime,
  639. target: "",
  640. sort: "",
  641. }).then((res) => {
  642. if (res.data) {
  643. let barList = [
  644. {
  645. name: "故障损失电量",
  646. children: [],
  647. date: [],
  648. },
  649. {
  650. name: "检修损失电量",
  651. children: [],
  652. },
  653. {
  654. name: "性能损失电量",
  655. children: [],
  656. },
  657. {
  658. name: "限电损失电量",
  659. children: [],
  660. },
  661. {
  662. name: "受累损失电量",
  663. children: [],
  664. },
  665. ];
  666. this.tableData = res.data;
  667. let lossPower = [];
  668. res.data.forEach((item) => {
  669. let obj = {
  670. name: item.name,
  671. value: item.zssdl,
  672. };
  673. lossPower.push(obj);
  674. barList[0].date.push(item.name);
  675. barList[0].children.push(item.gzssdl);
  676. barList[1].children.push(item.jxssdl);
  677. barList[2].children.push(item.xnssdl);
  678. barList[3].children.push(item.xdssdl);
  679. barList[4].children.push(item.slssdl);
  680. });
  681. this.lossPower = lossPower;
  682. this.barList = barList;
  683. }
  684. });
  685. },
  686. handleCompanyChange(val) {
  687. let comp = val.indexOf("JS_RGN");
  688. if (comp == -1) {
  689. this.company = val;
  690. this.gerGsdb();
  691. } else {
  692. this.company = [];
  693. this.gerGsdb();
  694. }
  695. },
  696. handleCurrentChange(val) {
  697. if (val.length > 5) {
  698. let del_row = val.shift();
  699. this.$refs.multipleTable.toggleRowSelection(del_row, false);
  700. }
  701. let arr = [];
  702. val.forEach((item, index) => {
  703. if (index < 5) {
  704. arr.push(item);
  705. }
  706. });
  707. this.chooseList = arr;
  708. },
  709. goDetail(row) {
  710. this.displayDetail = true;
  711. details({
  712. id: row.id,
  713. beginDate: this.starTime,
  714. endDate: this.endTime,
  715. target: "",
  716. sort: "",
  717. }).then((res) => {
  718. if (res.data) {
  719. this.detailTable = res.data;
  720. }
  721. });
  722. },
  723. goBack() {
  724. this.displayDetail = false;
  725. },
  726. dbfx() {
  727. if (this.chooseList.length <= 5) {
  728. this.dialogVisible = true;
  729. this.AjaxDbfx();
  730. }
  731. },
  732. AjaxDbfx() {
  733. var data = this.chooseList;
  734. this.windNum = data[0]?.date || data[0]?.name;
  735. this.windNum2 = data[1]?.date || data[1]?.name;
  736. this.windNum3 = data[2]?.date || data[2]?.name;
  737. this.windNum4 = data[3]?.date || data[3]?.name;
  738. this.windNum5 = data[4]?.date || data[4]?.name;
  739. let tabs = [
  740. {
  741. name: "发电量",
  742. code: "fdl",
  743. },
  744. {
  745. name: "故障损失电量",
  746. code: "gzssdl",
  747. },
  748. {
  749. name: "检修损失电量",
  750. code: "jxssdl",
  751. },
  752. {
  753. name: "性能未达标损失电量",
  754. code: "xnssdl",
  755. },
  756. {
  757. name: "受累损失电量",
  758. code: "slssdl",
  759. },
  760. {
  761. name: "风能利用率",
  762. code: "fnlyl",
  763. },
  764. {
  765. name: "故障损失率",
  766. code: "gzssl",
  767. },
  768. {
  769. name: "检修损失率",
  770. code: "jxssl",
  771. },
  772. {
  773. name: "弃风率",
  774. code: "qfl",
  775. },
  776. {
  777. name: "性能损失率",
  778. code: "xnssl",
  779. },
  780. {
  781. name: "受累损失率",
  782. code: "slssl",
  783. },
  784. ];
  785. tabs = tabs.map((item) => {
  786. if (item.code == "fnlyl") {
  787. if (this.tabIndex == -1) {
  788. item.name = "风能利用率";
  789. } else {
  790. item.name = "光能利用率";
  791. }
  792. }
  793. if (item.code == "qfl") {
  794. if (this.tabIndex == -1) {
  795. item.name = "弃风率";
  796. } else {
  797. item.name = "弃光率";
  798. }
  799. }
  800. return item;
  801. });
  802. tabs.forEach((val) => {
  803. data.forEach((item, index) => {
  804. val["windData" + (index + 1)] = item[val.code];
  805. });
  806. });
  807. this.tabs = tabs;
  808. let radarValue = [];
  809. data.forEach((item, index) => {
  810. let data = {
  811. indicator: [
  812. "风能利用率排名",
  813. "故障损失率排名",
  814. "检修损失率排名",
  815. "弃风率排名",
  816. "性能损失率排名",
  817. "受累损失率排名",
  818. ],
  819. data: [
  820. {
  821. value: [
  822. item.fnlylpm,
  823. item.gzsslpm,
  824. item.jxsslpm,
  825. item.qflpm,
  826. item.xnsslpm,
  827. item.slsslpm,
  828. ],
  829. name: item.name,
  830. },
  831. ],
  832. };
  833. if (this.tabIndex == -1) {
  834. data.indicator = [
  835. "风能利用率排名",
  836. "故障损失率排名",
  837. "检修损失率排名",
  838. "弃风率排名",
  839. "性能损失率排名",
  840. "受累损失率排名",
  841. ];
  842. } else {
  843. data.indicator = [
  844. "光能利用率排名",
  845. "故障损失率排名",
  846. "检修损失率排名",
  847. "弃光率排名",
  848. "性能损失率排名",
  849. "受累损失率排名",
  850. ];
  851. }
  852. radarValue.push(data);
  853. });
  854. this.radarValue = radarValue;
  855. var analyis = [],
  856. gzssdl = [],
  857. jxssdl = [],
  858. xnssdl = [],
  859. xdssdl = [],
  860. slssdl = [];
  861. data.forEach((item, index) => {
  862. gzssdl.push({
  863. text: item.name,
  864. value: item.gzssdl,
  865. });
  866. jxssdl.push({
  867. text: item.name,
  868. value: item.jxssdl,
  869. });
  870. xnssdl.push({
  871. text: item.name,
  872. value: item.xnssdl,
  873. });
  874. xdssdl.push({
  875. text: item.name,
  876. value: item.xdssdl,
  877. });
  878. slssdl.push({
  879. text: item.name,
  880. value: item.slssdl,
  881. });
  882. });
  883. analyis.push(
  884. {
  885. title: "故障损失电量",
  886. yAxisIndex: 0,
  887. value: gzssdl,
  888. },
  889. {
  890. title: "检修损失电量",
  891. yAxisIndex: 0,
  892. value: jxssdl,
  893. },
  894. {
  895. title: "性能损失电量",
  896. yAxisIndex: 0,
  897. value: xnssdl,
  898. },
  899. {
  900. title: "限电损失电量",
  901. yAxisIndex: 0,
  902. value: xdssdl,
  903. },
  904. {
  905. title: "受累损失电量",
  906. yAxisIndex: 0,
  907. value: slssdl,
  908. }
  909. );
  910. this.analyisDialog = analyis;
  911. },
  912. },
  913. watch: {
  914. screenHeight(val) {
  915. this.screenHeight = val;
  916. if (val > 1100) {
  917. this.echartsHeight = "58vh";
  918. } else {
  919. this.echartsHeight = "55vh";
  920. }
  921. },
  922. },
  923. };
  924. </script>
  925. <style lang="less" scoped>
  926. .parcel-box {
  927. padding: 0 15px;
  928. height: 100%;
  929. }
  930. .title ::v-deep {
  931. display: flex;
  932. flex-direction: row;
  933. align-items: center;
  934. margin-top: 10px;
  935. margin-bottom: 10px;
  936. padding-left: 10px;
  937. .form-wrapper {
  938. display: flex;
  939. align-items: center;
  940. .select-wrapper {
  941. display: flex;
  942. align-items: center;
  943. .el-select {
  944. width: 155px;
  945. margin-right: 10px;
  946. .el-input .el-input__inner {
  947. width: 150px;
  948. }
  949. }
  950. }
  951. .date-wrapper {
  952. display: flex;
  953. align-items: center;
  954. font-size: 14px;
  955. font-family: Microsoft YaHei;
  956. font-weight: 400;
  957. color: #b3b3b3;
  958. .date-item-wrapper {
  959. white-space: nowrap;
  960. display: flex;
  961. align-items: center;
  962. margin-right: 15px;
  963. .date-item-date {
  964. margin-left: 10px;
  965. .el-input {
  966. width: 155px;
  967. }
  968. .el-input .el-input__inner {
  969. width: 150px;
  970. font-size: 13px;
  971. color: #b3b3b3;
  972. }
  973. }
  974. }
  975. }
  976. }
  977. .but {
  978. display: flex;
  979. flex-direction: row;
  980. align-content: center;
  981. }
  982. .el-button + .el-button {
  983. margin-left: 0;
  984. }
  985. .buttons {
  986. background-color: rgba(0, 70, 199, 0.2);
  987. border: 1px solid #3b4c6c;
  988. color: #b3b3b3;
  989. font-size: 14px;
  990. margin-right: 10px;
  991. &:hover {
  992. background-color: rgba(0, 70, 199, 0.5);
  993. color: #ffffff;
  994. }
  995. }
  996. }
  997. .bodys {
  998. width: 100%;
  999. height: calc(100% - 260px - 50px - 30px);
  1000. background-color: rgba(0, 0, 0, 0.45);
  1001. padding: 5px;
  1002. margin-bottom: 19px;
  1003. border-radius: 5px;
  1004. }
  1005. .line {
  1006. display: flex;
  1007. flex-direction: row;
  1008. align-items: center;
  1009. justify-content: space-between;
  1010. width: 100%;
  1011. padding-bottom: 5px;
  1012. .leftContent {
  1013. width: 242px;
  1014. height: 41px;
  1015. display: flex;
  1016. align-items: center;
  1017. background: url("../../../../../assets/imgs/title_left_bg.png");
  1018. span {
  1019. font-size: 16px;
  1020. font-family: Microsoft YaHei;
  1021. font-weight: 400;
  1022. color: #ffffff;
  1023. margin-left: 25px;
  1024. }
  1025. }
  1026. .rightContent {
  1027. width: 212px;
  1028. height: 28px;
  1029. margin-top: 13px;
  1030. background: url("../../../../../assets/imgs/title_right_bg.png");
  1031. }
  1032. }
  1033. .economicTable {
  1034. width: 100%;
  1035. height: calc(100% - 46px);
  1036. }
  1037. .echarts {
  1038. width: 100%;
  1039. height: 260px;
  1040. display: flex;
  1041. flex-direction: row;
  1042. align-items: center;
  1043. .chart-name {
  1044. display: flex;
  1045. align-items: center;
  1046. padding-left: 20px;
  1047. position: relative;
  1048. height: 39px;
  1049. width: 98%;
  1050. margin-left: 1%;
  1051. border-bottom: 1px solid rgba(153, 153, 153, 0.5);
  1052. font-size: 16px;
  1053. font-family: Microsoft YaHei;
  1054. font-weight: 400;
  1055. color: #ffffff;
  1056. }
  1057. .pie-echarts {
  1058. width: 30%;
  1059. height: 100%;
  1060. background: rgba(0, 0, 0, 0.45);
  1061. border-radius: 5px;
  1062. }
  1063. .bar-echarts {
  1064. width: 69%;
  1065. margin-left: 1%;
  1066. height: 100%;
  1067. background: rgba(0, 0, 0, 0.45);
  1068. border-radius: 5px;
  1069. }
  1070. }
  1071. .point {
  1072. width: 6px;
  1073. height: 1px;
  1074. background-color: #ffffff;
  1075. position: absolute;
  1076. &.left {
  1077. left: 0;
  1078. }
  1079. &.right {
  1080. right: 0;
  1081. }
  1082. &.top {
  1083. top: -1px;
  1084. }
  1085. &.bottom {
  1086. bottom: -1px;
  1087. }
  1088. }
  1089. /*去除表头全选框*/
  1090. ::v-deep .el-table__header-wrapper .el-checkbox {
  1091. display: none;
  1092. }
  1093. </style>