1
0

Decision1.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979
  1. <template>
  2. <div class="decision-page-1">
  3. <div class="query-form">
  4. <!-- mg-b-8-->
  5. <div class="station">
  6. 场站:
  7. <el-select
  8. size="mini"
  9. v-model="value1"
  10. @change="ChangZhanChange(value1)"
  11. clearable
  12. placeholder="请选择"
  13. popper-class="select"
  14. >
  15. <el-option
  16. v-for="item in ChangZhan"
  17. :key="item.id"
  18. :value="item.id"
  19. :label="item.name"
  20. >
  21. </el-option>
  22. </el-select>
  23. </div>
  24. <div class="station">
  25. 项目:
  26. <el-select
  27. size="mini"
  28. v-model="value2"
  29. @change="XiangMuChange(value2)"
  30. multiple
  31. collapse-tags
  32. placeholder="请选择"
  33. popper-class="select"
  34. >
  35. <el-option
  36. v-for="item in XiangMu"
  37. :key="item.id"
  38. :value="item.id"
  39. :label="item.name"
  40. >
  41. </el-option>
  42. </el-select>
  43. </div>
  44. <div class="station">
  45. 线路:
  46. <el-select
  47. size="mini"
  48. v-model="value3"
  49. @change="XianLuChange(value3)"
  50. multiple
  51. collapse-tags
  52. placeholder="请选择"
  53. popper-class="select"
  54. >
  55. <el-option
  56. v-for="item in XianLu"
  57. :key="item.id"
  58. :label="item.name"
  59. :value="item.id"
  60. >
  61. </el-option>
  62. </el-select>
  63. </div>
  64. <div class="dates">
  65. 开始日期:
  66. <div class="search-input">
  67. <el-date-picker
  68. size="mini"
  69. v-model="value4"
  70. @change="BeginChange(value4)"
  71. type="date"
  72. value-format="YYYY-MM-DD"
  73. placeholder="选择日期"
  74. popper-class="date-select"
  75. >
  76. </el-date-picker>
  77. </div>
  78. </div>
  79. <div class="dates">
  80. 结束日期:
  81. <div class="search-input">
  82. <el-date-picker
  83. size="mini"
  84. v-model="value5"
  85. @change="EndChange(value5)"
  86. type="date"
  87. value-format="YYYY-MM-DD"
  88. placeholder="选择日期"
  89. popper-class="date-select"
  90. >
  91. </el-date-picker>
  92. <!-- <div class="unit svg-icon svg-icon-gray">
  93. <svg-icon :svgid="''" />
  94. </div> -->
  95. </div>
  96. </div>
  97. <div class="query-actions">
  98. <el-button round size="mini" class="btn green" @click="AjaxCommon()"
  99. >搜索</el-button
  100. >
  101. <el-button round size="mini" class="btn" @click="mxClick()"
  102. >明细信息</el-button
  103. >
  104. <el-button round size="mini" class="btn" @click="exportExcel()"
  105. >导出</el-button
  106. >
  107. </div>
  108. </div>
  109. <!-- <div class="actions">
  110. <el-button
  111. class="btn"
  112. :class="TypeClass == 1 ? 'green' : ''"
  113. @click="TypeClick(1)"
  114. >
  115. 风场
  116. </el-button>
  117. <el-button
  118. class="btn"
  119. :class="TypeClass == 2 ? 'green' : ''"
  120. @click="TypeClick(2)"
  121. >
  122. 项目
  123. </el-button>
  124. <el-button
  125. class="btn"
  126. :class="TypeClass == 3 ? 'green' : ''"
  127. @click="TypeClick(3)"
  128. >
  129. 集电线路
  130. </el-button>
  131. </div> -->
  132. <div class="tabCut1">
  133. <div
  134. class="tabCut-item"
  135. @click="TypeClick(val.id)"
  136. :class="TypeClass === val.id ? 'green1' : ''"
  137. v-for="val in typeOptions"
  138. :key="val.id"
  139. >
  140. <span>{{ val.name }}</span>
  141. </div>
  142. </div>
  143. <!-- <div class="performance-title">
  144. <div class="left-title">风机绩效榜</div>
  145. <div class="right-title">项目列表</div>
  146. </div> -->
  147. <div class="performance" style="height: 90vh">
  148. <div class="economicTable" style="height: 86vh">
  149. <el-table
  150. :data="tableData.data"
  151. size="mini"
  152. :cell-style="{ padding: '6px' }"
  153. :row-style="{ height: '0px' }"
  154. cell-class-name="table_cell"
  155. stripe
  156. @header-click="onHeaderClick"
  157. >
  158. <el-table-column align="center" prop="" label="" width="900">
  159. </el-table-column>
  160. <el-table-column align="center" type="index"> </el-table-column>
  161. <el-table-column
  162. align="center"
  163. prop="name"
  164. show-overflow-tooltip
  165. label="名称"
  166. >
  167. </el-table-column>
  168. <el-table-column align="center" prop="llfdl" label="理论发电量">
  169. </el-table-column>
  170. <el-table-column align="center" prop="sjfdl" label="实际发电量">
  171. </el-table-column>
  172. <el-table-column
  173. align="center"
  174. prop="fnlly"
  175. label="风能利用率%"
  176. width="120"
  177. >
  178. </el-table-column>
  179. <el-table-column
  180. show-overflow-tooltip
  181. align="center"
  182. prop="speed"
  183. label="风速"
  184. >
  185. </el-table-column>
  186. <el-table-column align="center" prop="fjhjx" label="故障">
  187. </el-table-column>
  188. <el-table-column align="center" prop="jhjx" label="检修">
  189. </el-table-column>
  190. <el-table-column align="center" prop="sl" label="受累">
  191. </el-table-column>
  192. <el-table-column align="center" prop="xd" label="限电">
  193. </el-table-column>
  194. <el-table-column align="center" prop="xn" label="性能">
  195. </el-table-column>
  196. </el-table>
  197. </div>
  198. <div class="left">
  199. <bar-line-chart
  200. v-if="showDisplay"
  201. :height="height"
  202. :bardata="bardata"
  203. :lineData="lineData"
  204. :color="barColor"
  205. lineName="理论发电量"
  206. />
  207. <div class="lyl" :style="{ height: tableData.data.length * 35 + 'px' }">
  208. <div
  209. class="lyl-item"
  210. v-for="(item, index) in tableData.data"
  211. :key="index"
  212. >
  213. {{ item.fnlly }}%
  214. <img class="lyl-item-img" src="@assets/images/fnlyl.png" />
  215. </div>
  216. </div>
  217. <div class="dashed" :style="{ height: height }"></div>
  218. </div>
  219. </div>
  220. <!-- <el-row :type="'flex'" class="content">
  221. <el-col :span="12" class="pd-r-8">
  222. <toolbar-panel title="风机绩效榜 (万kWh)" :showLine="false">
  223. <bar-line-chart
  224. :height="'calc(100vh - 180px)'"
  225. :bardata="bardata"
  226. :lineData="lineData"
  227. :color="barColor"
  228. lineName="理论发电量"
  229. />
  230. </toolbar-panel>
  231. </el-col>
  232. <el-col :span="12" class="pd-l-8">
  233. <panel :title="'项目列表'" :showLine="false">
  234. <div class="project-table">
  235. <Table :data="tableData" :height="'calc(80vh - 50px)'">
  236. <template v-slot:tr v-if="tableData.data.length > 0">
  237. <tr>
  238. <td style="width: 50px">
  239. {{ tableDataEnd.index }}
  240. </td>
  241. <td style="width: 150px">
  242. {{ tableDataEnd.name }}
  243. </td>
  244. <td>
  245. {{ tableDataEnd.llfdl }}
  246. </td>
  247. <td>
  248. {{ tableDataEnd.sjfdl }}
  249. </td>
  250. <td>
  251. {{ tableDataEnd.speed }}
  252. </td>
  253. <td>
  254. {{ tableDataEnd.fjhjx }}
  255. </td>
  256. <td>
  257. {{ tableDataEnd.jhjx }}
  258. </td>
  259. <td style="width: 80px">
  260. {{ tableDataEnd.sl }}
  261. </td>
  262. <td>
  263. {{ tableDataEnd.xd }}
  264. </td>
  265. <td>
  266. {{ tableDataEnd.xn }}
  267. </td>
  268. <td>
  269. {{ tableDataEnd.fnlly }}
  270. </td>
  271. </tr>
  272. </template>
  273. </Table>
  274. </div>
  275. </panel>
  276. </el-col>
  277. </el-row> -->
  278. </div>
  279. </template>
  280. <script>
  281. import BarLineChart from "../../components/chart/combination/bar-line-chart.vue";
  282. import Panel from "../../components/coms/panel/panel.vue";
  283. import SvgIcon from "../../components/coms/icon/svg-icon.vue";
  284. import ToolbarPanel from "../../components/coms/panel/toolbar-panel.vue";
  285. import Table from "./table.vue";
  286. import partten from "@/helper/partten.js";
  287. import api from "@api/economic/index.js";
  288. export default {
  289. components: {
  290. ToolbarPanel,
  291. BarLineChart,
  292. Panel,
  293. Table,
  294. partten,
  295. SvgIcon,
  296. },
  297. data() {
  298. return {
  299. tableData: {
  300. column: [
  301. {
  302. name: "",
  303. field: "index",
  304. is_num: false,
  305. is_light: false,
  306. width: "50px",
  307. },
  308. {
  309. name: "名称",
  310. field: "name",
  311. width: "150px",
  312. is_num: false,
  313. is_light: false,
  314. },
  315. {
  316. name: "理论发电量(万kWh)",
  317. field: "llfdl",
  318. is_num: false,
  319. is_light: false,
  320. sortable: true,
  321. },
  322. {
  323. name: "SCADA发电量(万kWh)",
  324. field: "sjfdl",
  325. is_num: false,
  326. is_light: false,
  327. sortable: true,
  328. },
  329. {
  330. name: "风速(m/s)",
  331. field: "speed",
  332. is_num: false,
  333. is_light: false,
  334. sortable: true,
  335. },
  336. {
  337. name: "非计划检修(万kWh)",
  338. field: "fjhjx",
  339. is_num: false,
  340. is_light: false,
  341. sortable: true,
  342. },
  343. {
  344. name: "计划检修(万kWh)",
  345. field: "jhjx",
  346. is_num: false,
  347. is_light: false,
  348. sortable: true,
  349. },
  350. {
  351. name: "受累(万kWh)",
  352. field: "sl",
  353. width: "80px",
  354. is_num: false,
  355. is_light: false,
  356. sortable: true,
  357. },
  358. {
  359. name: "限电(万kWh)",
  360. field: "xd",
  361. is_num: false,
  362. is_light: false,
  363. sortable: true,
  364. },
  365. {
  366. name: "性能(万kWh)",
  367. field: "xn",
  368. is_num: false,
  369. is_light: false,
  370. sortable: true,
  371. },
  372. {
  373. name: "风能利用率(%)",
  374. field: "fnlly",
  375. is_num: false,
  376. is_light: false,
  377. sortable: true,
  378. },
  379. ],
  380. data: [],
  381. },
  382. tableDataEnd: [], //合计
  383. ChangZhan: [], //场站
  384. XiangMu: [], //项目
  385. XianLu: [], //线路
  386. value1: [],
  387. value2: [],
  388. value3: [],
  389. value4: "",
  390. value5: "",
  391. barColor: [
  392. "#05bb4c",
  393. "#e17e23",
  394. "#ba3237",
  395. "#c531c7",
  396. "#ccf0d3",
  397. "#4b55ae",
  398. ],
  399. actionClass: "1",
  400. TypeClass: "1", //风场,项目,集电线路 的按钮颜色,默认第一个
  401. typeOptions: [
  402. { id: "1", name: "风场" },
  403. { id: "2", name: "项目" },
  404. { id: "3", name: "集电线路" },
  405. ],
  406. bardata: [],
  407. lineData: [],
  408. showDisplay: true,
  409. height: "880px",
  410. sort: "",
  411. target: "",
  412. sortList: [
  413. {
  414. id: "name",
  415. sort: false,
  416. },
  417. {
  418. id: "llfdl",
  419. sort: false,
  420. },
  421. {
  422. id: "sjfdl",
  423. sort: false,
  424. },
  425. {
  426. id: "speed",
  427. sort: false,
  428. },
  429. {
  430. id: "fjhjx",
  431. sort: false,
  432. },
  433. {
  434. id: "jhjx",
  435. sort: false,
  436. },
  437. {
  438. id: "sl",
  439. sort: false,
  440. },
  441. {
  442. id: "xd",
  443. sort: false,
  444. },
  445. {
  446. id: "xn",
  447. sort: false,
  448. },
  449. {
  450. id: "fnlly",
  451. sort: false,
  452. },
  453. ],
  454. };
  455. },
  456. created() {
  457. this.ChangZhanVal();
  458. this.value4 = this.getTime(1);
  459. this.value5 = this.getTime(2);
  460. this.AjaxCommon();
  461. },
  462. methods: {
  463. ChangZhanVal() {
  464. api.benchmarkingWplist({}).then((res) => {
  465. this.ChangZhan = res.data;
  466. });
  467. // var that = this;
  468. // that.API.requestData({
  469. // method: "GET",
  470. // baseURL: "http://10.83.66.220:8020/",
  471. // subUrl: "/consumer/benchmarking/wplist",
  472. // success(res) {
  473. // that.ChangZhan = res.data;
  474. // },
  475. // });
  476. },
  477. ChangZhanChange(val) {
  478. this.TypeClass = "";
  479. this.value1 = val;
  480. this.value2 = [];
  481. this.value3 = [];
  482. this.AjaxCommon();
  483. this.XiangMuVal(val);
  484. },
  485. XiangMuVal(val) {
  486. api
  487. .benchmarkingProjectList({
  488. wpids: val,
  489. })
  490. .then((res) => {
  491. this.XiangMu = res.data;
  492. });
  493. // var that = this;
  494. // that.API.requestData({
  495. // method: "GET",
  496. // baseURL: "http://10.83.66.220:8020/",
  497. // subUrl: "/consumer/benchmarking/projectList",
  498. // data: {
  499. // wpids: val,
  500. // },
  501. // success(res) {
  502. // that.XiangMu = res.data;
  503. // },
  504. // });
  505. },
  506. XiangMuChange(val) {
  507. this.TypeClass = "";
  508. this.value2 = val;
  509. this.value3 = [];
  510. this.AjaxCommon();
  511. this.XianLuVal(val);
  512. },
  513. XianLuVal(val) {
  514. api
  515. .benchmarkingLineList({
  516. projects: val,
  517. })
  518. .then((res) => {
  519. this.XianLu = res.data;
  520. });
  521. // var that = this;
  522. // that.API.requestData({
  523. // method: "GET",
  524. // baseURL: "http://10.83.66.220:8020/",
  525. // subUrl: "/consumer/benchmarking/lineList",
  526. // data: {
  527. // projects: val,
  528. // },
  529. // success(res) {
  530. // that.XianLu = res.data;
  531. // },
  532. // });
  533. },
  534. XianLuChange(val) {
  535. this.TypeClass = "";
  536. this.value3 = val;
  537. this.AjaxCommon();
  538. },
  539. BeginChange(val) {
  540. this.value4 = val;
  541. this.AjaxCommon();
  542. },
  543. EndChange(val) {
  544. this.value5 = val;
  545. this.AjaxCommon();
  546. },
  547. TypeClick(val) {
  548. this.TypeClass = val;
  549. // 重置状态start
  550. this.value1 = "";
  551. this.value2 = [];
  552. this.value3 = [];
  553. // this.value4 = this.getTime(1);
  554. // this.value5 = this.getTime(2);
  555. this.AjaxCommon();
  556. // 重置状态end
  557. },
  558. getTime(val) {
  559. //时间戳处理,val=1是默认开始时间(当前月第一天),val=2是默认结束时间(今天)
  560. var date = new Date();
  561. var year = date.getFullYear(),
  562. month = date.getMonth() + 1,
  563. day = date.getDate();
  564. month >= 1 && month <= 9 ? (month = "0" + month) : "";
  565. day >= 0 && day <= 9 ? (day = "0" + day) : "";
  566. var begin = year + "-" + month + "-01";
  567. var end = year + "-" + month + "-" + day;
  568. if (val == 1) {
  569. return begin;
  570. } else if (val == 2) {
  571. return end;
  572. }
  573. },
  574. onHeaderClick(column) {
  575. console.log(column);
  576. this.target = column.property;
  577. this.sortList.forEach((item) => {
  578. if (item.id === column.property) {
  579. item.sort = !item.sort;
  580. this.sort = item.sort ? 1 : 2;
  581. } else {
  582. item.sort = false;
  583. }
  584. });
  585. this.AjaxCommon();
  586. },
  587. AjaxCommon() {
  588. this.actionClass = 1;
  589. api
  590. .benchmarking({
  591. wpids: this.value1,
  592. projectids: this.value2,
  593. lineids: this.value3,
  594. beginDate: this.value4,
  595. endDate: this.value5,
  596. type: this.TypeClass,
  597. target: this.target,
  598. sort: this.sort,
  599. })
  600. .then((res) => {
  601. if (res) {
  602. var name = [],
  603. data = [],
  604. llfdl = [],
  605. legend = [
  606. "实际电量",
  607. "计划检修损失",
  608. "非计划检修损失",
  609. "限电损失",
  610. "受累损失",
  611. "性能损失",
  612. ],
  613. data2 = []; //项目列表
  614. res.data.forEach((item, index) => {
  615. name.push(item.name);
  616. data.push([
  617. item.sjfdl,
  618. item.jhjx,
  619. item.fjhjx,
  620. item.xd,
  621. item.sl,
  622. item.xn,
  623. ]);
  624. llfdl.push(item.llfdl);
  625. data2.push({
  626. index: index + 1,
  627. name: item.name,
  628. llfdl: item.llfdl,
  629. sjfdl: item.sjfdl,
  630. speed: item.speed,
  631. fjhjx: item.fjhjx,
  632. jhjx: item.jhjx,
  633. sl: item.sl,
  634. xd: item.xd,
  635. xn: item.xn,
  636. fnlly: item.fnlly,
  637. is_light: false,
  638. });
  639. });
  640. name.pop();
  641. data.pop();
  642. llfdl.pop();
  643. if (data.length > 0) {
  644. let arr1 = [];
  645. const length = data[0].length;
  646. for (var i = 0; i < length; i++) {
  647. let arr2 = [];
  648. data.forEach((ele) => {
  649. arr2.push(ele[i]);
  650. });
  651. arr1.push(arr2);
  652. }
  653. this.lineData = llfdl;
  654. this.bardata = {
  655. area: name,
  656. legend: legend,
  657. data: arr1,
  658. };
  659. }
  660. // if (this.lineData.length > 22) {
  661. // this.height = this.lineData.length * 35 + 148 + "px";
  662. // } else if (this.lineData.length == 14) {
  663. // this.height = 23 * 35 + 36 + "px";
  664. // } else {
  665. // this.height = 23 * 35 + "px";
  666. // }
  667. if (this.lineData.length > 22) {
  668. this.height = this.lineData.length * 35 + 85 + "px";
  669. } else if (this.lineData.length == 14) {
  670. this.height = 22 * 35 + 46 + "px";
  671. } else {
  672. this.height = 21 * 35 + 46 + "px";
  673. }
  674. this.showDisplay = false;
  675. setTimeout(() => {
  676. this.showDisplay = true;
  677. }, 10);
  678. this.tableDataEnd = data2[data2.length - 1];
  679. data2.pop();
  680. this.tableData.data = data2;
  681. }
  682. });
  683. // var that = this;
  684. // that.API.requestData({
  685. // method: "GET",
  686. // baseURL: process.env.VUE_APP_API,
  687. // subUrl: "consumer/benchmarking/fjjxb",
  688. // data: {
  689. // wpids: that.value1,
  690. // projectids: that.value2,
  691. // lineids: that.value3,
  692. // beginDate: that.value4,
  693. // endDate: that.value5,
  694. // type: that.TypeClass,
  695. // target: "",
  696. // sort: "",
  697. // },
  698. // success(res) {
  699. // var name = [],
  700. // data = [],
  701. // llfdl = [],
  702. // legend = [
  703. // "实际电量",
  704. // "计划检修损失",
  705. // "非计划检修损失",
  706. // "限电损失",
  707. // "受累损失",
  708. // "性能损失",
  709. // ],
  710. // data2 = []; //项目列表
  711. // res.data.forEach((item, index) => {
  712. // name.push(item.name);
  713. // data.push([
  714. // item.sjfdl,
  715. // item.jhjx,
  716. // item.fjhjx,
  717. // item.xd,
  718. // item.sl,
  719. // item.xn,
  720. // ]);
  721. // llfdl.push(item.llfdl);
  722. // data2.push({
  723. // index: index + 1,
  724. // name: item.name,
  725. // llfdl: item.llfdl,
  726. // sjfdl: item.sjfdl,
  727. // speed: item.speed,
  728. // fjhjx: item.fjhjx,
  729. // jhjx: item.jhjx,
  730. // sl: item.sl,
  731. // xd: item.xd,
  732. // xn: item.xn,
  733. // fnlly: item.fnlly,
  734. // is_light: false,
  735. // });
  736. // });
  737. // name.pop();
  738. // data.pop();
  739. // llfdl.pop();
  740. // if (data.length > 0) {
  741. // let arr1 = [];
  742. // const length = data[0].length;
  743. // for (var i = 0; i < length; i++) {
  744. // let arr2 = [];
  745. // data.forEach((ele) => {
  746. // arr2.push(ele[i]);
  747. // });
  748. // arr1.push(arr2);
  749. // }
  750. // that.lineData = llfdl;
  751. // that.bardata = {
  752. // area: name,
  753. // legend: legend,
  754. // data: arr1,
  755. // };
  756. // }
  757. // that.tableDataEnd = data2[data2.length - 1];
  758. // data2.pop();
  759. // that.tableData.data = data2;
  760. // },
  761. // });
  762. },
  763. mxClick() {
  764. this.$router.push("/decision/decision1Mx");
  765. },
  766. formatJson(filterVal, jsonData) {
  767. return jsonData.map((v) => filterVal.map((j) => v[j]));
  768. },
  769. exportExcel() {
  770. let that = this;
  771. const { export_json_to_excel } = require("@tools/excel/Export2Excel.js"); // 注意这个Export2Excel路径
  772. let tHeader = []; // 上面设置Excel的表格第一行的标题
  773. let filterVal = []; // 上面的index、nickName、name是tableData里对象的属性key值
  774. that.tableData.column.forEach((ele) => {
  775. tHeader.push(ele.name);
  776. filterVal.push(ele.field);
  777. });
  778. var list = [];
  779. that.tableData.data.forEach((i, index) => {
  780. list.push(i);
  781. });
  782. list.push(that.tableDataEnd);
  783. const data = that.formatJson(filterVal, list);
  784. export_json_to_excel(tHeader, data, "风机绩效榜"); // 最后一个是表名字
  785. },
  786. },
  787. };
  788. </script>
  789. <style lang="less" scoped>
  790. .decision-page-1 {
  791. height: 93vh;
  792. display: flex;
  793. flex-direction: column;
  794. .performance-title {
  795. display: flex;
  796. height: 41px;
  797. align-items: center;
  798. .left-title,
  799. .right-title {
  800. width: 46.8%;
  801. padding-left: 30px;
  802. }
  803. }
  804. .performance {
  805. // display: flex;
  806. // flex-direction: row;
  807. width: 99.5%;
  808. background-color: rgba(0, 0, 0, 0.4);
  809. border-radius: 5px;
  810. overflow-y: auto;
  811. position: relative;
  812. .economicTable {
  813. .el-table td.el-table__cell,
  814. .el-table th.el-table__cell.is-leaf {
  815. border-bottom: 0;
  816. }
  817. }
  818. .left {
  819. width: 45%;
  820. height: 100%;
  821. position: absolute;
  822. left: 0;
  823. top: 0;
  824. display: flex;
  825. flex-direction: row;
  826. .dashed {
  827. position: absolute;
  828. width: 1px;
  829. background-image: linear-gradient(
  830. #3a4043 0%,
  831. #3a4043 40%,
  832. transparent 50%
  833. );
  834. background-size: 1px 9px;
  835. margin-top: 45px;
  836. height: 100%;
  837. right: -50px;
  838. }
  839. }
  840. .lyl {
  841. display: flex;
  842. flex-direction: column;
  843. align-items: center;
  844. width: 70px;
  845. font-size: 14px;
  846. font-family: Arial;
  847. font-weight: 400;
  848. color: #1c98fe;
  849. margin-top: 27px;
  850. margin-left: 10px;
  851. }
  852. .lyl-item {
  853. display: flex;
  854. align-items: center;
  855. justify-content: center;
  856. height: 36px;
  857. position: relative;
  858. width: 120px;
  859. }
  860. .lyl-item-img {
  861. position: absolute;
  862. left: 0;
  863. bottom: 0;
  864. // height: 33px;
  865. }
  866. // .center {
  867. // width: 3%;
  868. // height: 90%;
  869. // position: relative;
  870. // margin-top: 50px;
  871. // .using {
  872. // width: 100%;
  873. // height: 100%;
  874. // z-index: 99;
  875. // position: absolute;
  876. // right: 0px;
  877. // top: 0px;
  878. // }
  879. // }
  880. .dashed {
  881. width: 1px;
  882. background-image: linear-gradient(
  883. #3a4043 0%,
  884. #3a4043 40%,
  885. transparent 50%
  886. );
  887. background-size: 1px 9px;
  888. margin-top: 45px;
  889. }
  890. .dashed1 {
  891. width: 1px;
  892. background-image: linear-gradient(
  893. #3a4043 0%,
  894. #3a4043 40%,
  895. transparent 50%
  896. );
  897. background-size: 1px 9px;
  898. margin-top: 45px;
  899. margin-left: 20px;
  900. }
  901. .table {
  902. width: 48%;
  903. // background-color: yellowgreen;
  904. }
  905. }
  906. .table_cell .cell {
  907. white-space: nowrap;
  908. }
  909. .com-panel .panel-title {
  910. line-height: 3.4259vh;
  911. }
  912. .tools {
  913. display: flex;
  914. line-height: 3.4259vh;
  915. .tool-block {
  916. display: flex;
  917. align-items: center;
  918. margin-left: 0.741vh;
  919. .legend {
  920. flex: auto;
  921. width: 0.741vh;
  922. height: 0.741vh;
  923. margin-right: 0.741vh;
  924. &.long {
  925. width: 2.963vh;
  926. height: 0.37vh;
  927. }
  928. }
  929. .legend-text {
  930. color: @gray-l;
  931. font-size: @fontsize-s;
  932. }
  933. }
  934. }
  935. .project-table {
  936. overflow: auto;
  937. tbody {
  938. height: calc(100vh - 24.5vh);
  939. }
  940. td {
  941. color: #b2bdc0;
  942. }
  943. }
  944. .contentMx {
  945. width: 100%;
  946. overflow-x: auto;
  947. }
  948. .activeMx {
  949. width: 150%;
  950. }
  951. }
  952. </style>