Decision2.vue 25 KB

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