Decision2.vue 24 KB

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