Decision2.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017
  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" @onSort="onSort"></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" @onSort="onSort"></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 "./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. fdl:item.fdl,
  364. name: item.name,
  365. zhpm: item.zhpm,
  366. gzssdl: item.gzssdl,
  367. jxssdlpm: item.jxssdlpm,
  368. jxssdl: item.jxssdl,
  369. xnssdlpm: item.xnssdlpm,
  370. xnssdl: item.xnssdl,
  371. xdssdlpm: item.xdssdlpm,
  372. xdssdl: item.xdssdl,
  373. slssdlpm: item.slssdlpm,
  374. slssdl: item.slssdl,
  375. fnlylpm: item.fnlylpm,
  376. fnlyl: item.fnlyl,
  377. gzsslpm: item.gzsslpm,
  378. gzssl: item.gzssl,
  379. jxsslpm: item.jxsslpm,
  380. jxssl: item.jxssl,
  381. qflpm: item.qflpm,
  382. qfl: item.qfl,
  383. xnsslpm: item.xnsslpm,
  384. xnssl: item.xnssl,
  385. slsslpm: item.slsslpm,
  386. slssl: item.slssl,
  387. is_light: false
  388. })
  389. })
  390. that.tableDataDetail.data = dataTab;
  391. }
  392. });
  393. }
  394. }
  395. ],
  396. data: [],
  397. },
  398. tableDataDetail: {
  399. column: [{
  400. name: "",
  401. field: "index",
  402. is_num: false,
  403. is_light: false,
  404. },
  405. {
  406. name: "",
  407. field: "fdl",
  408. is_num: false,
  409. is_light: false,
  410. display:"none",
  411. },
  412. {
  413. name: "",
  414. field: "check",
  415. is_num: false,
  416. is_light: false,
  417. template: function() {
  418. return "<input class='check curCheckBox checkItem' type='CheckBox'/>";
  419. },
  420. click: function(event, data) {
  421. var dataId = that.tableIdArr[data.index - 1];
  422. if (event.target.checked == false && that.checkLength <= 2) {
  423. that.tableId.forEach((item, i) => {
  424. if (item == dataId) {
  425. that.tableId.splice(i, 1);
  426. that.dbData.splice(i, 1);
  427. }
  428. })
  429. that.checkLength--;
  430. } else if (event.target.checked && that.checkLength < 2) {
  431. that.tableId.push(dataId);
  432. that.dbData.push(data);
  433. that.checkLength++;
  434. } else if (that.checkLength == 2) {
  435. event.target.checked = false;
  436. }
  437. },
  438. },
  439. {
  440. name: "风机名称",
  441. field: "name",
  442. is_num: false,
  443. is_light: false,
  444. },
  445. {
  446. name: "综合排名",
  447. field: "zhpm",
  448. is_num: false,
  449. is_light: false,
  450. sortable: true,
  451. },
  452. {
  453. name: "故障损失",
  454. field: "gzssdl",
  455. is_num: false,
  456. is_light: false,
  457. sortable: true,
  458. },
  459. {
  460. name: "检修损失排名",
  461. field: "jxssdlpm",
  462. is_num: false,
  463. is_light: false,
  464. sortable: true,
  465. },
  466. {
  467. name: "检修损失",
  468. field: "jxssdl",
  469. is_num: false,
  470. is_light: false,
  471. sortable: true,
  472. },
  473. {
  474. name: "性能损失排名",
  475. field: "xnssdlpm",
  476. is_num: false,
  477. is_light: false,
  478. sortable: true,
  479. },
  480. {
  481. name: "性能损失",
  482. field: "xnssdl",
  483. is_num: false,
  484. is_light: false,
  485. sortable: true,
  486. },
  487. {
  488. name: "限电损失排名",
  489. field: "xdssdlpm",
  490. is_num: false,
  491. is_light: false,
  492. sortable: true,
  493. },
  494. {
  495. name: "限电损失",
  496. field: "xdssdl",
  497. is_num: false,
  498. is_light: false,
  499. sortable: true,
  500. }, {
  501. name: "受累损失排名",
  502. field: "slssdlpm",
  503. is_num: false,
  504. is_light: false,
  505. sortable: true,
  506. }, {
  507. name: "受累损失",
  508. field: "slssdl",
  509. is_num: false,
  510. is_light: false,
  511. sortable: true,
  512. }, {
  513. name: "故障损失率排名",
  514. field: "gzsslpm",
  515. is_num: false,
  516. is_light: false,
  517. sortable: true,
  518. }, {
  519. name: "故障损失率(%)",
  520. field: "gzssl",
  521. is_num: false,
  522. is_light: false,
  523. sortable: true,
  524. }, {
  525. name: "检修损失率排名",
  526. field: "jxsslpm",
  527. is_num: false,
  528. is_light: false,
  529. sortable: true,
  530. }, {
  531. name: "检修损失率(%)",
  532. field: "jxssl",
  533. is_num: false,
  534. is_light: false,
  535. sortable: true,
  536. }, {
  537. name: "弃风率排名",
  538. field: "qflpm",
  539. is_num: false,
  540. is_light: false,
  541. sortable: true,
  542. }, {
  543. name: "弃风率(%)",
  544. field: "qfl",
  545. is_num: false,
  546. is_light: false,
  547. sortable: true,
  548. }, {
  549. name: "性能损失率排名",
  550. field: "xnsslpm",
  551. is_num: false,
  552. is_light: false,
  553. sortable: true,
  554. }, {
  555. name: "性能损失率(%)",
  556. field: "xnssl",
  557. is_num: false,
  558. is_light: false,
  559. sortable: true,
  560. }, {
  561. name: "受累损失率排名",
  562. field: "slsslpm",
  563. is_num: false,
  564. is_light: false,
  565. sortable: true,
  566. }, {
  567. name: "受累损失率(%)",
  568. field: "slssl",
  569. is_num: false,
  570. is_light: false,
  571. sortable: true,
  572. }
  573. ],
  574. data: [],
  575. },
  576. options: [],
  577. ChangZhan: [], //场站
  578. XiangMu: [], //项目
  579. XianLu: [], //线路
  580. value1: [],
  581. value2: [],
  582. value3: [],
  583. value4: "",
  584. value5: "",
  585. innerFdl: [], //发电量占比
  586. outerFdl: [],
  587. innerCz: [], //各场站损失电量占比
  588. outerCz: [],
  589. innerLl: [], //理论发电量占比
  590. outerLl: [],
  591. analyis: [], //损失电量分析
  592. dialogVisible: false,
  593. radarValue: [],
  594. windNum: 'dd',
  595. windNum2: 'dd',
  596. tabs: [],
  597. analyisDialog: [],
  598. detailShow: 1,
  599. ajaxData:[],
  600. dbData:[]
  601. };
  602. },
  603. created() {
  604. this.ChangZhanVal();
  605. this.value4 = this.getTime(1);
  606. this.value5 = this.getTime(2);
  607. this.AjaxCommon();
  608. },
  609. methods: {
  610. ChangZhanVal() {
  611. var that = this;
  612. that.API.requestData({
  613. method: "GET",
  614. baseURL : "http://10.155.32.4:9001/",
  615. subUrl: "benchmarking/wplist",
  616. success(res) {
  617. that.ChangZhan = res.data;
  618. }
  619. });
  620. },
  621. ChangZhanChange(val) {
  622. this.value1 = val;
  623. this.value2 = [];
  624. this.value3 = [];
  625. this.AjaxCommon();
  626. this.XiangMuVal(val);
  627. this.clearDb();
  628. },
  629. XiangMuVal(val) {
  630. var that = this;
  631. that.API.requestData({
  632. method: "GET",
  633. baseURL : "http://10.155.32.4:9001/",
  634. subUrl: "benchmarking/projectList",
  635. data: {
  636. wpids: val
  637. },
  638. success(res) {
  639. that.XiangMu = res.data;
  640. }
  641. });
  642. },
  643. XiangMuChange(val) {
  644. this.value2 = val;
  645. this.value3 = [];
  646. this.AjaxCommon();
  647. this.XianLuVal(val);
  648. this.clearDb();
  649. },
  650. XianLuVal(val) {
  651. var that = this;
  652. that.API.requestData({
  653. method: "GET",
  654. baseURL : "http://10.155.32.4:9001/",
  655. subUrl: "benchmarking/lineList",
  656. data: {
  657. projects: val
  658. },
  659. success(res) {
  660. that.XianLu = res.data;
  661. }
  662. });
  663. },
  664. XianLuChange(val) {
  665. this.value3 = val;
  666. this.AjaxCommon();
  667. this.clearDb();
  668. },
  669. BeginChange(val) {
  670. this.value4 = val;
  671. this.AjaxCommon();
  672. this.clearDb();
  673. },
  674. EndChange(val) {
  675. this.value5 = val;
  676. this.AjaxCommon();
  677. this.clearDb();
  678. },
  679. getTime(val) { //时间戳处理,val=1是默认开始时间(当前月第一天),val=2是默认结束时间(今天)
  680. var date = new Date();
  681. var year = date.getFullYear(),
  682. month = date.getMonth() + 1,
  683. day = date.getDate();
  684. month >= 1 && month <= 9 ? (month = '0' + month) : '';
  685. day >= 0 && day <= 9 ? (day = '0' + day) : '';
  686. var begin = year + '-' + month + '-01';
  687. var end = year + '-' + month + '-' + day;
  688. if (val == 1) {
  689. return begin;
  690. } else if (val == 2) {
  691. return end;
  692. }
  693. },
  694. AjaxCommon() {
  695. var that = this;
  696. that.API.requestData({ //五项损失率
  697. method: "GET",
  698. baseURL : "http://10.155.32.4:9001/",
  699. subUrl: "benchmarking/wxssl",
  700. data: {
  701. wpids: that.value1,
  702. projectids: that.value2,
  703. lineids: that.value3,
  704. beginDate: that.value4,
  705. endDate: that.value5,
  706. target: '',
  707. sort: ''
  708. },
  709. success(res) {
  710. that.ajaxData = res.data;
  711. var dataTab = [], //表格
  712. fdl = [],
  713. cz = [],
  714. ll = [],
  715. analyis = [],
  716. gzssdl = [],
  717. jxssdl = [],
  718. xnssdl = [],
  719. xdssdl = [],
  720. slssdl = [];
  721. res.data.forEach((item, index) => {
  722. that.tableIdArr.push(item.id);
  723. dataTab.push({ //表格
  724. index: index + 1,
  725. name: item.name,
  726. zhpm: item.zhpm,
  727. fdlpm: item.fdlpm,
  728. fdl: item.fdl,
  729. gzssdlpm: item.gzssdlpm,
  730. gzssdl: item.gzssdl,
  731. jxssdlpm: item.jxssdlpm,
  732. jxssdl: item.jxssdl,
  733. xnssdlpm: item.xnssdlpm,
  734. xnssdl: item.xnssdl,
  735. xdssdlpm: item.xdssdlpm,
  736. xdssdl: item.xdssdl,
  737. slssdlpm: item.slssdlpm,
  738. slssdl: item.slssdl,
  739. fnlylpm: item.fnlylpm,
  740. fnlyl: item.fnlyl,
  741. gzsslpm: item.gzsslpm,
  742. gzssl: item.gzssl,
  743. jxsslpm: item.jxsslpm,
  744. jxssl: item.jxssl,
  745. qflpm: item.qflpm,
  746. qfl: item.qfl,
  747. xnsslpm: item.xnsslpm,
  748. xnssl: item.xnssl,
  749. slsslpm: item.slsslpm,
  750. slssl: item.slssl,
  751. is_light: false
  752. })
  753. fdl.push({
  754. value: item.fdl,
  755. name: item.name
  756. })
  757. cz.push({
  758. value: (item.gzssdl + item.jxssdl + item.xnssdl + item.xdssdl +
  759. item.slssdl).toFixed(2),
  760. name: item.name
  761. })
  762. ll.push({
  763. value: item.llfdl,
  764. name: item.name
  765. })
  766. gzssdl.push({
  767. text: item.name,
  768. value: item.gzssdl
  769. });
  770. jxssdl.push({
  771. text: item.name,
  772. value: item.jxssdl
  773. });
  774. xnssdl.push({
  775. text: item.name,
  776. value: item.xnssdl
  777. });
  778. xdssdl.push({
  779. text: item.name,
  780. value: item.xdssdl
  781. });
  782. slssdl.push({
  783. text: item.name,
  784. value: item.slssdl
  785. });
  786. })
  787. analyis.push({
  788. title: "故障损失电量",
  789. yAxisIndex: 0,
  790. value: gzssdl
  791. }, {
  792. title: "检修损失电量",
  793. yAxisIndex: 0,
  794. value: jxssdl
  795. }, {
  796. title: "性能损失电量",
  797. yAxisIndex: 0,
  798. value: xnssdl
  799. }, {
  800. title: "限电损失电量",
  801. yAxisIndex: 0,
  802. value: xdssdl
  803. }, {
  804. title: "受累损失电量",
  805. yAxisIndex: 0,
  806. value: slssdl
  807. })
  808. that.tableData.data = dataTab;
  809. that.innerFdl = fdl;
  810. that.outerFdl = fdl;
  811. that.innerCz = cz;
  812. that.outerCz = cz;
  813. that.innerLl = ll;
  814. that.outerLl = ll;
  815. that.analyis = analyis;
  816. }
  817. });
  818. },
  819. AjaxDbfx() {
  820. var that = this;
  821. var data = that.dbData;
  822. that.windNum = data[0].name;
  823. that.windNum2 = data[1].name;
  824. that.tabs = [{
  825. name: "发电量",
  826. windData1: data[0].fdl,
  827. windData2: data[1].fdl
  828. }, {
  829. name: "故障损失电量",
  830. windData1: data[0].gzssdl,
  831. windData2: data[1].gzssdl
  832. }, {
  833. name: "检修损失电量",
  834. windData1: data[0].jxssdl,
  835. windData2: data[1].jxssdl
  836. }, {
  837. name: "性能未达标损失电量",
  838. windData1: data[0].xnssdl,
  839. windData2: data[1].xnssdl
  840. }, {
  841. name: "受累损失电量",
  842. windData1: data[0].slssdl,
  843. windData2: data[1].slssdl
  844. }, {
  845. name: "风能利用率",
  846. windData1: data[0].fnlyl,
  847. windData2: data[1].fnlyl
  848. }, {
  849. name: "故障损失率",
  850. windData1: data[0].gzssl,
  851. windData2: data[1].gzssl
  852. }, {
  853. name: "检修损失率",
  854. windData1: data[0].jxssl,
  855. windData2: data[1].jxssl
  856. }, {
  857. name: "弃风率",
  858. windData1: data[0].qfl,
  859. windData2: data[1].qfl
  860. }, {
  861. name: "性能损失率",
  862. windData1: data[0].xnssl,
  863. windData2: data[1].xnssl
  864. }, {
  865. name: "受累损失率",
  866. windData1: data[0].slssl,
  867. windData2: data[1].slssl
  868. }];
  869. that.radarValue = [{
  870. indicator: ["风能利用率", "故障损失率", "检修损失率", "弃风率", "性能损失率", "受累损失率"],
  871. data: [{
  872. value: [data[0].fnlylpm, data[0].gzsslpm, data[0].jxsslpm, data[0].qflpm,
  873. data[0].xnsslpm, data[0].slsslpm
  874. ]
  875. }, {
  876. value: [data[1].fnlylpm, data[1].gzsslpm, data[1].jxsslpm, data[1].qflpm,
  877. data[1].xnsslpm, data[1].slsslpm
  878. ]
  879. }]
  880. }];
  881. var analyis = [],
  882. gzssdl = [],
  883. jxssdl = [],
  884. xnssdl = [],
  885. xdssdl = [],
  886. slssdl = [];
  887. data.forEach((item, index) => {
  888. gzssdl.push({
  889. text: item.name,
  890. value: item.gzssdl
  891. });
  892. jxssdl.push({
  893. text: item.name,
  894. value: item.jxssdl
  895. });
  896. xnssdl.push({
  897. text: item.name,
  898. value: item.xnssdl
  899. });
  900. xdssdl.push({
  901. text: item.name,
  902. value: item.xdssdl
  903. });
  904. slssdl.push({
  905. text: item.name,
  906. value: item.slssdl
  907. });
  908. })
  909. analyis.push({
  910. title: "故障损失电量",
  911. yAxisIndex: 0,
  912. value: gzssdl
  913. }, {
  914. title: "检修损失电量",
  915. yAxisIndex: 0,
  916. value: jxssdl
  917. }, {
  918. title: "性能损失电量",
  919. yAxisIndex: 0,
  920. value: xnssdl
  921. }, {
  922. title: "限电损失电量",
  923. yAxisIndex: 0,
  924. value: xdssdl
  925. }, {
  926. title: "受累损失电量",
  927. yAxisIndex: 0,
  928. value: slssdl
  929. })
  930. that.analyisDialog = analyis;
  931. },
  932. tooltip(param, callback) {
  933. var color = ["#05bb4c", "#4b55ae", "#fa8c16", "#f8de5b"];
  934. var result = param[0].axisValue;
  935. param.forEach((value, index) => {
  936. result += "<br />" +
  937. `<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:${color[index]};"></span>` +
  938. value.seriesName + ":" + value.value;
  939. });
  940. callback(result);
  941. return true;
  942. },
  943. dbfx() {
  944. var that = this;
  945. if (that.tableId.length == 2) {
  946. that.dialogVisible = true;
  947. this.AjaxDbfx();
  948. this.clearDb();
  949. }
  950. },
  951. clearDb(){//清空对标状态
  952. this.$refs.curRef.clearCheckBox();
  953. this.tableId = [];
  954. this.dbData = [];
  955. this.checkLength = 0;
  956. },
  957. back(){
  958. this.detailShow = 1;
  959. this.clearDb();
  960. },
  961. onSort(){
  962. this.clearDb();
  963. }
  964. }
  965. };
  966. </script>
  967. <style lang="less">
  968. .decision-page-2 {
  969. .content .project-table {
  970. tbody {
  971. height: calc(100vh - 24.5vh);
  972. }
  973. }
  974. .project-table {
  975. overflow: auto;
  976. tbody {
  977. height: 239px;
  978. }
  979. th,
  980. td {
  981. color: #b2bdc0;
  982. &:nth-child(1) {
  983. width: 50px;
  984. }
  985. &:nth-child(2) {
  986. width: 50px;
  987. }
  988. }
  989. }
  990. .action {
  991. text-decoration: underline;
  992. color: @green;
  993. cursor: pointer;
  994. }
  995. }
  996. </style>