Decision2Cndb.vue 27 KB

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