index.vue 24 KB

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