Decision2Xmdb.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116
  1. <template>
  2. <div class="decision-page-2">
  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. multiple
  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-date-picker
  49. v-model="value4"
  50. @change="BeginChange(value4)"
  51. type="date"
  52. value-format="YYYY-MM-DD"
  53. placeholder="选择日期"
  54. popper-class="date-select"
  55. >
  56. </el-date-picker>
  57. </div>
  58. </div>
  59. <div class="query-item">
  60. <div class="lable">结束日期:</div>
  61. <div class="search-input">
  62. <el-date-picker
  63. v-model="value5"
  64. @change="EndChange(value5)"
  65. type="date"
  66. value-format="YYYY-MM-DD"
  67. placeholder="选择日期"
  68. popper-class="date-select"
  69. >
  70. </el-date-picker>
  71. <div class="unit svg-icon svg-icon-gray">
  72. <svg-icon :svgid="''" />
  73. </div>
  74. </div>
  75. </div>
  76. </div>
  77. <div class="query-actions">
  78. <button class="btn green">搜索</button>
  79. <button class="btn" @click="dbfx">对标分析</button>
  80. <button class="btn">导出</button>
  81. <button class="btn" v-show="detailShow == 2" @click="back">返回</button>
  82. </div>
  83. </div>
  84. <div v-show="detailShow == 1">
  85. <toolbar-panel title="项目对标" :showLine="false"></toolbar-panel>
  86. <div class="mg-b-16">
  87. <div class="project-table">
  88. <Table :data="tableData" :canScroll="false" ref="curRef"></Table>
  89. </div>
  90. </div>
  91. <el-row class="mg-b-16">
  92. <el-col :span="12">
  93. <panel title="发电量占比">
  94. <dual-pie-chart
  95. height="21.296vh"
  96. :innerData="innerFdl"
  97. :outerData="outerFdl"
  98. />
  99. </panel>
  100. </el-col>
  101. <el-col :span="12">
  102. <panel title="各场站损失电量占比">
  103. <dual-pie-chart
  104. height="21.296vh"
  105. :innerData="innerCz"
  106. :outerData="outerCz"
  107. />
  108. </panel>
  109. </el-col>
  110. </el-row>
  111. <div>
  112. <panel title="损失电量分析">
  113. <multiple-bar-chart
  114. :height="'calc(100vh - 21.3vh - 550px)'"
  115. :list="analyis"
  116. :customerTooltip="true"
  117. @tooltip="tooltip"
  118. :units="['(万KWh)']"
  119. />
  120. </panel>
  121. </div>
  122. </div>
  123. <el-row :type="'flex'" class="content" v-show="detailShow == 2">
  124. <el-col :span="24" class="pd-l-8">
  125. <panel :title="'风机对标列表明细'" :showLine="false">
  126. <div class="project-table">
  127. <Table :data="tableDataDetail" ref="curRef"></Table>
  128. </div>
  129. </panel>
  130. </el-col>
  131. </el-row>
  132. <el-dialog
  133. title="对标排名分析"
  134. v-model="dialogVisible"
  135. width="70%"
  136. top="10vh"
  137. custom-class="modal"
  138. :close-on-click-modal="false"
  139. >
  140. <dayinfo
  141. :radarValue="radarValue"
  142. :title="[windNum,windNum2]"
  143. :windNum="windNum"
  144. :windNum2="windNum2"
  145. :tabs="tabs"
  146. :analyisDialog="analyisDialog"
  147. />
  148. </el-dialog>
  149. </div>
  150. </template>
  151. <script>
  152. import MultipleBarChart from "../../components/chart/bar/multiple-bar-chart.vue";
  153. import DualPieChart from "./dual-pie-chart.vue";
  154. import SvgIcon from "../../components/coms/icon/svg-icon.vue";
  155. import Panel from "../../components/coms/panel/panel.vue";
  156. import Table from "../../components/coms/table/table.vue";
  157. import ToolbarPanel from "../../components/coms/panel/toolbar-panel.vue";
  158. import Dayinfo from "./dayinfo.vue";
  159. export default {
  160. components: {
  161. Panel,
  162. Table,
  163. SvgIcon,
  164. DualPieChart,
  165. MultipleBarChart,
  166. ToolbarPanel,
  167. Dayinfo,
  168. },
  169. data() {
  170. let that = this;
  171. return {
  172. tableIdArr: [], //放checkbox的id数组
  173. tableId: [],
  174. checkLength: 0, //对标分析只能选择2个
  175. tableData: {
  176. column: [
  177. {
  178. name: "",
  179. field: "index",
  180. is_num: false,
  181. is_light: false,
  182. },
  183. {
  184. name: "",
  185. field: "check",
  186. is_num: false,
  187. is_light: false,
  188. template: function () {
  189. return "<input class='check curCheckBox' type='CheckBox'/>";
  190. },
  191. click: function (event, data) {
  192. // checkbox 事件
  193. // event.target checkbox or td 需进行判断
  194. // event.target.checked 判断 checkbox 是否选中
  195. // data 当前数据
  196. var dataId = that.tableIdArr[data.index - 1];
  197. if (event.target.checked == false && that.checkLength <= 2) {
  198. that.tableId.forEach((item, i) => {
  199. if (item == dataId) {
  200. that.tableId.splice(i, 1);
  201. that.dbData.splice(i, 1);
  202. }
  203. });
  204. that.checkLength--;
  205. } else if (event.target.checked && that.checkLength < 2) {
  206. that.tableId.push(dataId);
  207. that.dbData.push(data);
  208. that.checkLength++;
  209. } else if (that.checkLength == 2) {
  210. event.target.checked = false;
  211. }
  212. },
  213. },
  214. {
  215. name: "名称",
  216. field: "name",
  217. is_num: false,
  218. is_light: false,
  219. },
  220. {
  221. name: "综合排名",
  222. field: "zhpm",
  223. is_num: false,
  224. is_light: false,
  225. sortable: true,
  226. },
  227. {
  228. name: "发电量排名",
  229. field: "fdlpm",
  230. is_num: false,
  231. is_light: false,
  232. sortable: true,
  233. },
  234. {
  235. name: "发电量",
  236. field: "fdl",
  237. is_num: false,
  238. is_light: false,
  239. sortable: true,
  240. },
  241. {
  242. name: "故障损失排名",
  243. field: "gzssdlpm",
  244. is_num: false,
  245. is_light: false,
  246. sortable: true,
  247. },
  248. {
  249. name: "故障损失",
  250. field: "gzssdl",
  251. is_num: false,
  252. is_light: false,
  253. sortable: true,
  254. },
  255. {
  256. name: "检修损失排名",
  257. field: "jxssdlpm",
  258. is_num: false,
  259. is_light: false,
  260. sortable: true,
  261. },
  262. {
  263. name: "检修损失",
  264. field: "jxssdl",
  265. is_num: false,
  266. is_light: false,
  267. sortable: true,
  268. },
  269. {
  270. name: "性能损失排名",
  271. field: "xnssdlpm",
  272. is_num: false,
  273. is_light: false,
  274. sortable: true,
  275. },
  276. {
  277. name: "性能损失",
  278. field: "xnssdl",
  279. is_num: false,
  280. is_light: false,
  281. sortable: true,
  282. },
  283. {
  284. name: "限电损失排名",
  285. field: "xdssdlpm",
  286. is_num: false,
  287. is_light: false,
  288. sortable: true,
  289. },
  290. {
  291. name: "限电损失",
  292. field: "xdssdl",
  293. is_num: false,
  294. is_light: false,
  295. sortable: true,
  296. },
  297. {
  298. name: "受累损失排名",
  299. field: "slssdlpm",
  300. is_num: false,
  301. is_light: false,
  302. sortable: true,
  303. },
  304. {
  305. name: "受累损失",
  306. field: "slssdl",
  307. is_num: false,
  308. is_light: false,
  309. sortable: true,
  310. },
  311. {
  312. name: "风能利用率排名",
  313. field: "fnlylpm",
  314. is_num: false,
  315. is_light: false,
  316. sortable: true,
  317. },
  318. {
  319. name: "风能利用率(%)",
  320. field: "fnlyl",
  321. is_num: false,
  322. is_light: false,
  323. sortable: true,
  324. },
  325. {
  326. name: "故障损失率排名",
  327. field: "gzsslpm",
  328. is_num: false,
  329. is_light: false,
  330. sortable: true,
  331. },
  332. {
  333. name: "故障损失率(%)",
  334. field: "gzssl",
  335. is_num: false,
  336. is_light: false,
  337. sortable: true,
  338. },
  339. {
  340. name: "检修损失率排名",
  341. field: "jxsslpm",
  342. is_num: false,
  343. is_light: false,
  344. sortable: true,
  345. },
  346. {
  347. name: "检修损失率(%)",
  348. field: "jxssl",
  349. is_num: false,
  350. is_light: false,
  351. sortable: true,
  352. },
  353. {
  354. name: "弃风率排名",
  355. field: "qflpm",
  356. is_num: false,
  357. is_light: false,
  358. sortable: true,
  359. },
  360. {
  361. name: "弃风率(%)",
  362. field: "qfl",
  363. is_num: false,
  364. is_light: false,
  365. sortable: true,
  366. },
  367. {
  368. name: "性能损失率排名",
  369. field: "xnsslpm",
  370. is_num: false,
  371. is_light: false,
  372. sortable: true,
  373. },
  374. {
  375. name: "性能损失率(%)",
  376. field: "xnssl",
  377. is_num: false,
  378. is_light: false,
  379. sortable: true,
  380. },
  381. {
  382. name: "受累损失率排名",
  383. field: "slsslpm",
  384. is_num: false,
  385. is_light: false,
  386. sortable: true,
  387. },
  388. {
  389. name: "受累损失率(%)",
  390. field: "slssl",
  391. is_num: false,
  392. is_light: false,
  393. sortable: true,
  394. },
  395. {
  396. name: "操作",
  397. field: "cz",
  398. is_num: false,
  399. is_light: false,
  400. template: function () {
  401. return "<a class='action'>详情</a>";
  402. },
  403. click: function (event, data) {
  404. var dataId = that.tableIdArr[data.index - 1];
  405. that.clearDb();
  406. that.detailShow = 2;
  407. // var that = this;
  408. that.API.requestData({
  409. method: "GET",
  410. baseURL: "http://10.155.32.4:9001/",
  411. subUrl: "benchmarking/details",
  412. data: {
  413. id: dataId,
  414. beginDate: that.value4,
  415. endDate: that.value5,
  416. target: "",
  417. sort: "",
  418. },
  419. success(res) {
  420. var dataTab = [];
  421. res.data.forEach((item, index) => {
  422. that.tableIdArr.push(item.id);
  423. dataTab.push({
  424. //表格
  425. index: index + 1,
  426. name: item.name,
  427. zhpm: item.zhpm,
  428. gzssdl: item.gzssdl,
  429. jxssdlpm: item.jxssdlpm,
  430. jxssdl: item.jxssdl,
  431. xnssdlpm: item.xnssdlpm,
  432. xnssdl: item.xnssdl,
  433. xdssdlpm: item.xdssdlpm,
  434. xdssdl: item.xdssdl,
  435. slssdlpm: item.slssdlpm,
  436. slssdl: item.slssdl,
  437. fnlylpm: item.fnlylpm,
  438. fnlyl: item.fnlyl,
  439. gzsslpm: item.gzsslpm,
  440. gzssl: item.gzssl,
  441. jxsslpm: item.jxsslpm,
  442. jxssl: item.jxssl,
  443. qflpm: item.qflpm,
  444. qfl: item.qfl,
  445. xnsslpm: item.xnsslpm,
  446. xnssl: item.xnssl,
  447. slsslpm: item.slsslpm,
  448. slssl: item.slssl,
  449. is_light: false,
  450. });
  451. });
  452. that.tableDataDetail.data = dataTab;
  453. },
  454. });
  455. },
  456. },
  457. ],
  458. data: [],
  459. },
  460. tableDataDetail: {
  461. column: [
  462. {
  463. name: "",
  464. field: "index",
  465. is_num: false,
  466. is_light: false,
  467. },
  468. {
  469. name: "",
  470. field: "check",
  471. is_num: false,
  472. is_light: false,
  473. template: function () {
  474. return "<input class='check curCheckBox checkItem' type='CheckBox'/>";
  475. },
  476. click: function (event, data) {
  477. var dataId = that.tableIdArr[data.index - 1];
  478. if (event.target.checked == false && that.checkLength <= 2) {
  479. that.tableId.forEach((item, i) => {
  480. if (item == dataId) {
  481. that.tableId.splice(i, 1);
  482. that.dbData.splice(i, 1);
  483. }
  484. });
  485. that.checkLength--;
  486. } else if (event.target.checked && that.checkLength < 2) {
  487. that.tableId.push(dataId);
  488. that.dbData.push(data);
  489. that.checkLength++;
  490. } else if (that.checkLength == 2) {
  491. event.target.checked = false;
  492. }
  493. },
  494. },
  495. {
  496. name: "风机名称",
  497. field: "name",
  498. is_num: false,
  499. is_light: false,
  500. },
  501. {
  502. name: "综合排名",
  503. field: "zhpm",
  504. is_num: false,
  505. is_light: false,
  506. sortable: true,
  507. },
  508. {
  509. name: "故障损失",
  510. field: "gzssdl",
  511. is_num: false,
  512. is_light: false,
  513. sortable: true,
  514. },
  515. {
  516. name: "检修损失排名",
  517. field: "jxssdlpm",
  518. is_num: false,
  519. is_light: false,
  520. sortable: true,
  521. },
  522. {
  523. name: "检修损失",
  524. field: "jxssdl",
  525. is_num: false,
  526. is_light: false,
  527. sortable: true,
  528. },
  529. {
  530. name: "性能损失排名",
  531. field: "xnssdlpm",
  532. is_num: false,
  533. is_light: false,
  534. sortable: true,
  535. },
  536. {
  537. name: "性能损失",
  538. field: "xnssdl",
  539. is_num: false,
  540. is_light: false,
  541. sortable: true,
  542. },
  543. {
  544. name: "限电损失排名",
  545. field: "xdssdlpm",
  546. is_num: false,
  547. is_light: false,
  548. sortable: true,
  549. },
  550. {
  551. name: "限电损失",
  552. field: "xdssdl",
  553. is_num: false,
  554. is_light: false,
  555. sortable: true,
  556. },
  557. {
  558. name: "受累损失排名",
  559. field: "slssdlpm",
  560. is_num: false,
  561. is_light: false,
  562. sortable: true,
  563. },
  564. {
  565. name: "受累损失",
  566. field: "slssdl",
  567. is_num: false,
  568. is_light: false,
  569. sortable: true,
  570. },
  571. {
  572. name: "故障损失率排名",
  573. field: "gzsslpm",
  574. is_num: false,
  575. is_light: false,
  576. sortable: true,
  577. },
  578. {
  579. name: "故障损失率(%)",
  580. field: "gzssl",
  581. is_num: false,
  582. is_light: false,
  583. sortable: true,
  584. },
  585. {
  586. name: "检修损失率排名",
  587. field: "jxsslpm",
  588. is_num: false,
  589. is_light: false,
  590. sortable: true,
  591. },
  592. {
  593. name: "检修损失率(%)",
  594. field: "jxssl",
  595. is_num: false,
  596. is_light: false,
  597. sortable: true,
  598. },
  599. {
  600. name: "弃风率排名",
  601. field: "qflpm",
  602. is_num: false,
  603. is_light: false,
  604. sortable: true,
  605. },
  606. {
  607. name: "弃风率(%)",
  608. field: "qfl",
  609. is_num: false,
  610. is_light: false,
  611. sortable: true,
  612. },
  613. {
  614. name: "性能损失率排名",
  615. field: "xnsslpm",
  616. is_num: false,
  617. is_light: false,
  618. sortable: true,
  619. },
  620. {
  621. name: "性能损失率(%)",
  622. field: "xnssl",
  623. is_num: false,
  624. is_light: false,
  625. sortable: true,
  626. },
  627. {
  628. name: "受累损失率排名",
  629. field: "slsslpm",
  630. is_num: false,
  631. is_light: false,
  632. sortable: true,
  633. },
  634. {
  635. name: "受累损失率(%)",
  636. field: "slssl",
  637. is_num: false,
  638. is_light: false,
  639. sortable: true,
  640. },
  641. ],
  642. data: [],
  643. },
  644. options: [],
  645. ChangZhan: [], //场站
  646. XiangMu: [], //项目
  647. value1: [],
  648. value2: [],
  649. value4: "",
  650. value5: "",
  651. innerFdl: [], //发电量占比
  652. outerFdl: [],
  653. innerCz: [], //各场站损失电量占比
  654. outerCz: [],
  655. innerLl: [], //理论发电量占比
  656. outerLl: [],
  657. analyis: [], //损失电量分析
  658. dialogVisible: false,
  659. radarValue: [],
  660. windNum: "dd",
  661. windNum2: "dd",
  662. tabs: [],
  663. analyisDialog: [],
  664. detailShow: 1,
  665. ajaxData: [],
  666. dbData: [],
  667. };
  668. },
  669. created() {
  670. this.ChangZhanVal();
  671. this.value4 = this.getTime(1);
  672. this.value5 = this.getTime(2);
  673. // this.AjaxCommon();
  674. },
  675. methods: {
  676. ChangZhanVal() {
  677. var that = this;
  678. that.API.requestData({
  679. method: "GET",
  680. baseURL: "http://10.155.32.4:9001/",
  681. subUrl: "benchmarking/wplist",
  682. success(res) {
  683. that.ChangZhan = res.data;
  684. that.AjaxCommon();
  685. },
  686. });
  687. },
  688. ChangZhanChange(val) {
  689. this.value1 = val;
  690. this.value2 = [];
  691. this.AjaxCommon();
  692. this.XiangMuVal(val);
  693. this.clearDb();
  694. },
  695. XiangMuVal(val) {
  696. var that = this;
  697. that.API.requestData({
  698. method: "GET",
  699. baseURL: "http://10.155.32.4:9001/",
  700. subUrl: "benchmarking/projectList",
  701. data: {
  702. wpids: val,
  703. },
  704. success(res) {
  705. that.XiangMu = res.data;
  706. },
  707. });
  708. },
  709. XiangMuChange(val) {
  710. this.value2 = val;
  711. this.AjaxCommon();
  712. this.clearDb();
  713. },
  714. BeginChange(val) {
  715. this.value4 = val;
  716. this.AjaxCommon();
  717. this.clearDb();
  718. },
  719. EndChange(val) {
  720. this.value5 = val;
  721. this.AjaxCommon();
  722. this.clearDb();
  723. },
  724. getTime(val) {
  725. //时间戳处理,val=1是默认开始时间(当前月第一天),val=2是默认结束时间(今天)
  726. var date = new Date();
  727. var year = date.getFullYear(),
  728. month = date.getMonth() + 1,
  729. day = date.getDate();
  730. month >= 1 && month <= 9 ? (month = "0" + month) : "";
  731. day >= 0 && day <= 9 ? (day = "0" + day) : "";
  732. var begin = year + "-" + month + "-01";
  733. var end = year + "-" + month + "-" + day;
  734. if (val == 1) {
  735. return begin;
  736. } else if (val == 2) {
  737. return end;
  738. }
  739. },
  740. AjaxCommon() {
  741. var that = this;
  742. that.API.requestData({
  743. //五项损失率
  744. method: "GET",
  745. baseURL: "http://10.155.32.4:9001/",
  746. subUrl: "benchmarking/xmdb",
  747. data: {
  748. wpids: that.value1,
  749. projectids: that.value2,
  750. beginDate: that.value4,
  751. endDate: that.value5,
  752. target: "",
  753. sort: "",
  754. },
  755. success(res) {
  756. that.ajaxData = res.data;
  757. var dataTab = [], //表格
  758. fdl = [],
  759. cz = [],
  760. ll = [],
  761. analyis = [],
  762. gzssdl = [],
  763. jxssdl = [],
  764. xnssdl = [],
  765. xdssdl = [],
  766. slssdl = [];
  767. res.data.forEach((item, index) => {
  768. that.tableIdArr.push(item.id);
  769. dataTab.push({
  770. //表格
  771. index: index + 1,
  772. name: item.name,
  773. zhpm: item.zhpm,
  774. fdlpm: item.fdlpm,
  775. fdl: item.fdl,
  776. gzssdlpm: item.gzssdlpm,
  777. gzssdl: item.gzssdl,
  778. jxssdlpm: item.jxssdlpm,
  779. jxssdl: item.jxssdl,
  780. xnssdlpm: item.xnssdlpm,
  781. xnssdl: item.xnssdl,
  782. xdssdlpm: item.xdssdlpm,
  783. xdssdl: item.xdssdl,
  784. slssdlpm: item.slssdlpm,
  785. slssdl: item.slssdl,
  786. fnlylpm: item.fnlylpm,
  787. fnlyl: item.fnlyl,
  788. gzsslpm: item.gzsslpm,
  789. gzssl: item.gzssl,
  790. jxsslpm: item.jxsslpm,
  791. jxssl: item.jxssl,
  792. qflpm: item.qflpm,
  793. qfl: item.qfl,
  794. xnsslpm: item.xnsslpm,
  795. xnssl: item.xnssl,
  796. slsslpm: item.slsslpm,
  797. slssl: item.slssl,
  798. is_light: false,
  799. });
  800. fdl.push({
  801. value: item.fdl,
  802. name: item.name,
  803. });
  804. cz.push({
  805. value: (
  806. item.gzssdl +
  807. item.jxssdl +
  808. item.xnssdl +
  809. item.xdssdl +
  810. item.slssdl
  811. ).toFixed(2),
  812. name: item.name,
  813. });
  814. ll.push({
  815. value: item.llfdl,
  816. name: item.name,
  817. });
  818. gzssdl.push({
  819. text: item.name,
  820. value: item.gzssdl,
  821. });
  822. jxssdl.push({
  823. text: item.name,
  824. value: item.jxssdl,
  825. });
  826. xnssdl.push({
  827. text: item.name,
  828. value: item.xnssdl,
  829. });
  830. xdssdl.push({
  831. text: item.name,
  832. value: item.xdssdl,
  833. });
  834. slssdl.push({
  835. text: item.name,
  836. value: item.slssdl,
  837. });
  838. });
  839. analyis.push(
  840. {
  841. title: "故障损失电量",
  842. yAxisIndex: 0,
  843. value: gzssdl,
  844. },
  845. {
  846. title: "检修损失电量",
  847. yAxisIndex: 0,
  848. value: jxssdl,
  849. },
  850. {
  851. title: "性能损失电量",
  852. yAxisIndex: 0,
  853. value: xnssdl,
  854. },
  855. {
  856. title: "限电损失电量",
  857. yAxisIndex: 0,
  858. value: xdssdl,
  859. },
  860. {
  861. title: "受累损失电量",
  862. yAxisIndex: 0,
  863. value: slssdl,
  864. }
  865. );
  866. that.tableData.data = dataTab;
  867. that.innerFdl = fdl;
  868. that.outerFdl = fdl;
  869. that.innerCz = cz;
  870. that.outerCz = cz;
  871. that.innerLl = ll;
  872. that.outerLl = ll;
  873. that.analyis = analyis;
  874. },
  875. });
  876. },
  877. AjaxDbfx() {
  878. var that = this;
  879. var data = that.dbData;
  880. that.windNum = data[0].name;
  881. that.windNum2 = data[1].name;
  882. that.tabs = [
  883. {
  884. name: "发电量",
  885. windData1: data[0].fdl,
  886. windData2: data[1].fdl,
  887. },
  888. {
  889. name: "故障损失电量",
  890. windData1: data[0].gzssdl,
  891. windData2: data[1].gzssdl,
  892. },
  893. {
  894. name: "检修损失电量",
  895. windData1: data[0].jxssdl,
  896. windData2: data[1].jxssdl,
  897. },
  898. {
  899. name: "性能未达标损失电量",
  900. windData1: data[0].xnssdl,
  901. windData2: data[1].xnssdl,
  902. },
  903. {
  904. name: "受累损失电量",
  905. windData1: data[0].slssdl,
  906. windData2: data[1].slssdl,
  907. },
  908. {
  909. name: "风能利用率",
  910. windData1: data[0].fnlyl,
  911. windData2: data[1].fnlyl,
  912. },
  913. {
  914. name: "故障损失率",
  915. windData1: data[0].gzssl,
  916. windData2: data[1].gzssl,
  917. },
  918. {
  919. name: "检修损失率",
  920. windData1: data[0].jxssl,
  921. windData2: data[1].jxssl,
  922. },
  923. {
  924. name: "弃风率",
  925. windData1: data[0].qfl,
  926. windData2: data[1].qfl,
  927. },
  928. {
  929. name: "性能损失率",
  930. windData1: data[0].xnssl,
  931. windData2: data[1].xnssl,
  932. },
  933. {
  934. name: "受累损失率",
  935. windData1: data[0].slssl,
  936. windData2: data[1].slssl,
  937. },
  938. ];
  939. that.radarValue = [
  940. {
  941. indicator: [
  942. "风能利用率",
  943. "故障损失率",
  944. "检修损失率",
  945. "弃风率",
  946. "性能损失率",
  947. "受累损失率",
  948. ],
  949. data: [
  950. {
  951. value: [
  952. data[0].fnlylpm,
  953. data[0].gzsslpm,
  954. data[0].jxsslpm,
  955. data[0].qflpm,
  956. data[0].xnsslpm,
  957. data[0].slsslpm,
  958. ],
  959. },
  960. {
  961. value: [
  962. data[1].fnlylpm,
  963. data[1].gzsslpm,
  964. data[1].jxsslpm,
  965. data[1].qflpm,
  966. data[1].xnsslpm,
  967. data[1].slsslpm,
  968. ],
  969. },
  970. ],
  971. },
  972. ];
  973. var analyis = [],
  974. gzssdl = [],
  975. jxssdl = [],
  976. xnssdl = [],
  977. xdssdl = [],
  978. slssdl = [];
  979. data.forEach((item, index) => {
  980. gzssdl.push({
  981. text: item.name,
  982. value: item.gzssdl,
  983. });
  984. jxssdl.push({
  985. text: item.name,
  986. value: item.jxssdl,
  987. });
  988. xnssdl.push({
  989. text: item.name,
  990. value: item.xnssdl,
  991. });
  992. xdssdl.push({
  993. text: item.name,
  994. value: item.xdssdl,
  995. });
  996. slssdl.push({
  997. text: item.name,
  998. value: item.slssdl,
  999. });
  1000. });
  1001. analyis.push(
  1002. {
  1003. title: "故障损失电量",
  1004. yAxisIndex: 0,
  1005. value: gzssdl,
  1006. },
  1007. {
  1008. title: "检修损失电量",
  1009. yAxisIndex: 0,
  1010. value: jxssdl,
  1011. },
  1012. {
  1013. title: "性能损失电量",
  1014. yAxisIndex: 0,
  1015. value: xnssdl,
  1016. },
  1017. {
  1018. title: "限电损失电量",
  1019. yAxisIndex: 0,
  1020. value: xdssdl,
  1021. },
  1022. {
  1023. title: "受累损失电量",
  1024. yAxisIndex: 0,
  1025. value: slssdl,
  1026. }
  1027. );
  1028. that.analyisDialog = analyis;
  1029. },
  1030. tooltip(param, callback) {
  1031. var color = ["#05bb4c", "#4b55ae", "#fa8c16", "#f8de5b"];
  1032. var result = param[0].axisValue;
  1033. param.forEach((value, index) => {
  1034. result +=
  1035. "<br />" +
  1036. `<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:${color[index]};"></span>` +
  1037. value.seriesName +
  1038. ":" +
  1039. value.value;
  1040. });
  1041. callback(result);
  1042. return true;
  1043. },
  1044. dbfx() {
  1045. var that = this;
  1046. if (that.tableId.length == 2) {
  1047. that.dialogVisible = true;
  1048. this.AjaxDbfx();
  1049. this.clearDb();
  1050. }
  1051. },
  1052. clearDb() {
  1053. //清空对标状态
  1054. this.$refs.curRef.clearCheckBox();
  1055. this.tableId = [];
  1056. this.dbData = [];
  1057. this.checkLength = 0;
  1058. },
  1059. back() {
  1060. this.detailShow = 1;
  1061. this.clearDb();
  1062. },
  1063. },
  1064. };
  1065. </script>
  1066. <style lang="less">
  1067. .decision-page-2 {
  1068. .content .project-table {
  1069. tbody {
  1070. height: calc(100vh - 24.5vh);
  1071. }
  1072. }
  1073. .project-table {
  1074. overflow: auto;
  1075. tbody {
  1076. height: 200px;
  1077. }
  1078. th,
  1079. td {
  1080. color: #b2bdc0;
  1081. &:nth-child(1) {
  1082. width: 50px;
  1083. }
  1084. &:nth-child(2) {
  1085. width: 50px;
  1086. }
  1087. }
  1088. }
  1089. .action {
  1090. text-decoration: underline;
  1091. color: @green;
  1092. cursor: pointer;
  1093. }
  1094. }
  1095. </style>