index.vue 25 KB

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