index.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952
  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="dateTime"
  58. size="mini"
  59. type="daterange"
  60. range-separator="-"
  61. format="YYYY-MM-DD"
  62. value-format="YYYY-MM-DD"
  63. start-placeholder="开始"
  64. end-placeholder="结束"
  65. popper-class="date-select"
  66. >
  67. </el-date-picker>
  68. </div>
  69. </div>
  70. <div class="but">
  71. <el-button
  72. round
  73. size="mini"
  74. :disabled="displayDetail"
  75. class="buttons"
  76. @click="gerCjdb"
  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>
  104. <div class="economicTable" v-if="!displayDetail">
  105. <el-table
  106. :data="tableData"
  107. ref="multipleTable"
  108. size="mini"
  109. height="calc(100% - 39px)"
  110. :cell-style="{ padding: '6px' }"
  111. :row-style="{ height: '0' }"
  112. stripe
  113. @selection-change="handleCurrentChange"
  114. >
  115. <el-table-column type="selection" width="60" align="center">
  116. </el-table-column>
  117. <el-table-column
  118. show-overflow-tooltip
  119. align="center"
  120. prop="name"
  121. label="名称"
  122. width="100"
  123. sortable
  124. >
  125. <template v-slot="scope">
  126. <span
  127. @click="goDetail(scope.row)"
  128. style="cursor: pointer; color: #67b9ff"
  129. >{{ scope.row.name }}</span
  130. >
  131. </template>
  132. </el-table-column>
  133. <el-table-column
  134. header-align="center"
  135. align="center"
  136. v-for="item in tabIndex == -1 ? tableHeader : tableHeaderG"
  137. :key="item.code"
  138. :prop="item.code"
  139. :label="item.name"
  140. :width="item.name.length == 4 ? 55 : 68"
  141. show-overflow-tooltip
  142. sortable
  143. >
  144. <template #header="scope">
  145. <div v-if="scope.column.label.indexOf('(') > 0">
  146. <div style="font-size: 14px">
  147. {{
  148. scope.column.label.slice(0, scope.column.label.indexOf("("))
  149. }}
  150. </div>
  151. <div style="font-size: 12px">
  152. {{
  153. scope.column.label.slice(scope.column.label.indexOf("("))
  154. }}
  155. </div>
  156. </div>
  157. <div v-else>{{ scope.column.label }}</div>
  158. </template>
  159. </el-table-column>
  160. </el-table>
  161. <div class="pagination-class">
  162. <el-pagination
  163. @current-change="handlePageChange"
  164. :current-page="page.currentPage"
  165. :page-size="page.pagesize"
  166. layout="total, prev, pager, next, jumper"
  167. :total="page.total"
  168. >
  169. </el-pagination>
  170. </div>
  171. </div>
  172. </div>
  173. <div v-if="!displayDetail" class="echarts">
  174. <div class="pie-echarts">
  175. <div class="chart-name">
  176. <div class="point point-left bottom"></div>
  177. <div class="point point-right bottom"></div>
  178. 损失电量分析
  179. </div>
  180. <PieChart
  181. :lossPower="lossPower"
  182. width="100%"
  183. height="calc(100% - 39px)"
  184. :showLable="false"
  185. ></PieChart>
  186. </div>
  187. <div class="bar-echarts">
  188. <div class="chart-name">
  189. <div class="point point-left bottom"></div>
  190. <div class="point point-right bottom"></div>
  191. 五项损失
  192. </div>
  193. <BarCharts
  194. :list="barList"
  195. width="100%"
  196. height="calc(100% - 39px)"
  197. :showLegend="true"
  198. :xdate="false"
  199. :colorIndex="true"
  200. ></BarCharts>
  201. </div>
  202. </div>
  203. <div v-if="displayDetail" style="height: calc(100% - 48px - 35px)">
  204. <el-table
  205. :data="detailTable"
  206. ref="multipleTable"
  207. size="mini"
  208. height="100%"
  209. :cell-style="{ padding: '6px' }"
  210. :row-style="{ height: '4' }"
  211. stripe
  212. @selection-change="handleCurrentChange"
  213. >
  214. <el-table-column type="selection" width="60" align="center">
  215. </el-table-column>
  216. <el-table-column
  217. align="center"
  218. prop="name"
  219. label="风机名称"
  220. show-overflow-tooltip
  221. sortable
  222. >
  223. </el-table-column>
  224. <el-table-column
  225. v-for="item in tabIndex == -1
  226. ? tableHeaderDetail
  227. : tableHeaderGDetail"
  228. :key="item.code"
  229. :prop="item.code"
  230. :label="item.name"
  231. :width="item.name.length == 4 ? 58 : 88"
  232. show-overflow-tooltip
  233. header-align="center"
  234. :align="item.align ? item.align : 'center'"
  235. sortable
  236. />
  237. </el-table>
  238. <div class="pagination-class">
  239. <el-pagination
  240. @current-change="handlePageDChange"
  241. :current-page="pageD.currentPage"
  242. :page-size="pageD.pagesize"
  243. @size-change="handleSizeDChange"
  244. :page-sizes="[19, 50, 100, 500]"
  245. layout="total, sizes, prev, pager, next, jumper"
  246. :total="pageD.total"
  247. >
  248. </el-pagination>
  249. </div>
  250. </div>
  251. <el-dialog
  252. class="dialogs"
  253. width="90%"
  254. top="40px"
  255. v-model="dialogVisible"
  256. :show-close="true"
  257. >
  258. <template #title>
  259. <div class="dialog-title">
  260. <div class="title">对标排名分析</div>
  261. </div>
  262. </template>
  263. <div class="dialog-body">
  264. <!-- <img class="dialog-img" src="@assets/imgs/dialog.png" /> -->
  265. <dayinfo
  266. :radarValue="radarValue"
  267. :title="[windNum, windNum2, windNum3, windNum4, windNum5]"
  268. :windNum="windNum"
  269. :windNum2="windNum2"
  270. :windNum3="windNum3"
  271. :windNum4="windNum4"
  272. :windNum5="windNum5"
  273. :tabs="tabs"
  274. :analyisDialog="analyisDialog"
  275. />
  276. </div>
  277. </el-dialog>
  278. </div>
  279. </template>
  280. <script>
  281. import dayjs from "dayjs";
  282. import {
  283. tableHeader,
  284. tableHeaderG,
  285. tableHeaderDetail,
  286. tableHeaderGDetail,
  287. } from "@/utills//constant.js";
  288. import { companys } from "@/api/curveAnalyse";
  289. import { getStation, cjdb, details } from "@/api/performance";
  290. import PieChart from "../../homePage/components/pieChart.vue";
  291. import BarCharts from "../../homePage/components/barCharts.vue";
  292. import dayinfo from "../compontent/dayinfo.vue";
  293. import dataJson from "./dataJson.json";
  294. export default {
  295. name: "intervalBenchmarking", //场际对标
  296. components: {
  297. PieChart,
  298. BarCharts,
  299. dayinfo,
  300. },
  301. data() {
  302. return {
  303. tableHeader,
  304. tableHeaderG,
  305. tableHeaderDetail,
  306. tableHeaderGDetail,
  307. page: {
  308. pagesize: 10,
  309. currentPage: 1,
  310. total: 0,
  311. },
  312. pageD: {
  313. pagesize: 19,
  314. currentPage: 1,
  315. total: 0,
  316. },
  317. company: "",
  318. companyOptions: [],
  319. stationObj: ["NX_FGS_HA_FDC_STA"],
  320. stationList: [],
  321. dateTime: [],
  322. tabIndex: -1,
  323. tabOptions: [
  324. { id: -1, name: "风电" },
  325. { id: -2, name: "光伏" },
  326. ],
  327. tableData: [],
  328. detailTable: [],
  329. chooseList: [],
  330. lossPower: [],
  331. barList: [],
  332. displayDetail: false,
  333. dialogVisible: false,
  334. radarValue: [],
  335. windNum: "",
  336. windNum2: "",
  337. windNum3: "",
  338. windNum4: "",
  339. windNum5: "",
  340. tabs: [],
  341. analyisDialog: [],
  342. screenHeight: window.innerHeight,
  343. echartsHeight: "55vh",
  344. detailRow: {},
  345. };
  346. },
  347. created() {
  348. this.dateTime = [
  349. `${dayjs().format("YYYY-MM")}-01`,
  350. dayjs().format("YYYY-MM-DD"),
  351. ];
  352. this.initialization();
  353. },
  354. mounted() {
  355. if (this.screenHeight > 1100) {
  356. this.echartsHeight = "58vh";
  357. } else {
  358. this.echartsHeight = "55vh";
  359. }
  360. window.onresize = () => {
  361. return (() => {
  362. window.screenHeight = window.innerHeight;
  363. this.screenHeight = window.screenHeight;
  364. })();
  365. };
  366. },
  367. methods: {
  368. handlePageChange(val) {
  369. this.page.currentPage = val;
  370. this.gerCjdb();
  371. },
  372. handlePageDChange(val) {
  373. this.pageD.currentPage = val;
  374. this.goDetail();
  375. },
  376. handleSizeDChange(val) {
  377. this.pageD.currentPage = 1;
  378. this.pageD.pagesize = val;
  379. this.goDetail();
  380. },
  381. tabClick(val) {
  382. this.tabIndex = val;
  383. if (val == -2) {
  384. this.company = "SXJ_KGDL_GFFD_ZGS";
  385. this.getStation(this.company);
  386. this.stationObj = [];
  387. this.gerCjdb();
  388. } else {
  389. this.company = this.companyOptions[0].id;
  390. this.getStation(this.company);
  391. this.stationObj = [];
  392. this.gerCjdb();
  393. }
  394. // this.initialization()
  395. },
  396. initialization() {
  397. // this.dataChange(dataJson.data);
  398. companys().then(({ data: res }) => {
  399. if (res.data) {
  400. this.company = res.data[0].id;
  401. this.companyOptions = res.data;
  402. this.getStation(res.data[0].id);
  403. }
  404. });
  405. },
  406. getStation(companyids) {
  407. getStation({
  408. companyids: companyids,
  409. type: this.tabIndex,
  410. }).then(({ data: res }) => {
  411. if (res.data.length) {
  412. this.stationList = res.data;
  413. } else {
  414. this.stationList = [];
  415. }
  416. this.gerCjdb();
  417. });
  418. },
  419. gerCjdb() {
  420. cjdb({
  421. companys: this.company,
  422. type: this.tabIndex,
  423. beginDate: this.dateTime[0],
  424. endDate: this.dateTime[1],
  425. wpids: this.stationObj.join(","),
  426. pageSize: this.page.pagesize,
  427. pageNum: this.page.currentPage,
  428. target: "",
  429. sort: "",
  430. }).then(({ data: res }) => {
  431. this.dataChange(res);
  432. });
  433. },
  434. dataChange(res) {
  435. if (res.data) {
  436. let barList = [
  437. {
  438. name: "故障损失电量",
  439. children: [],
  440. date: [],
  441. },
  442. {
  443. name: "检修损失电量",
  444. children: [],
  445. },
  446. {
  447. name: "性能损失电量",
  448. children: [],
  449. },
  450. {
  451. name: "限电损失电量",
  452. children: [],
  453. },
  454. {
  455. name: "受累损失电量",
  456. children: [],
  457. },
  458. ];
  459. this.tableData = res.data.resultList;
  460. this.page.total = res.data.total;
  461. let lossPower = [];
  462. res.data.resultList.forEach((item) => {
  463. let obj = {
  464. name: item.name,
  465. value: item.zssdl,
  466. };
  467. lossPower.push(obj);
  468. barList[0].date.push(item.name);
  469. barList[0].children.push(item.gzssdl);
  470. barList[1].children.push(item.jxssdl);
  471. barList[2].children.push(item.xnssdl);
  472. barList[3].children.push(item.xdssdl);
  473. barList[4].children.push(item.slssdl);
  474. });
  475. this.lossPower = lossPower;
  476. this.barList = barList;
  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.dateTime[0],
  508. endDate: this.dateTime[1],
  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: "发电量(万kWh)",
  539. code: "fdl",
  540. },
  541. {
  542. name: "故障损失电量(万kWh)",
  543. code: "gzssdl",
  544. },
  545. {
  546. name: "检修损失电量(万kWh)",
  547. code: "jxssdl",
  548. },
  549. {
  550. name: "性能未达标损失电量(万kWh)",
  551. code: "xnssdl",
  552. },
  553. {
  554. name: "受累损失电量(万kWh)",
  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: "故障损失电量(万kWh)",
  683. yAxisIndex: 0,
  684. value: gzssdl,
  685. },
  686. {
  687. title: "检修损失电量(万kWh)",
  688. yAxisIndex: 0,
  689. value: jxssdl,
  690. },
  691. {
  692. title: "性能损失电量(万kWh)",
  693. yAxisIndex: 0,
  694. value: xnssdl,
  695. },
  696. {
  697. title: "限电损失电量(万kWh)",
  698. yAxisIndex: 0,
  699. value: xdssdl,
  700. },
  701. {
  702. title: "受累损失电量(万kWh)",
  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 10px;
  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_bg.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>