index.vue 22 KB

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