Decision2Xldb.vue 24 KB

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