Decision2Xmdb.vue 35 KB

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