Decision1Mx.vue 27 KB

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