index.vue 23 KB

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