analysisEvent.vue 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083
  1. <!--
  2. * @Author: your name
  3. * @Date: 2024-05-29 09:13:51
  4. * @LastEditTime: 2024-07-09 09:37:35
  5. * @LastEditors: bogon
  6. * @Description: In User Settings Edit
  7. * @FilePath: /performance-test/src/views/performance/components/analysisEvent.vue
  8. -->
  9. <template>
  10. <div v-loading="loading">
  11. <el-form ref="form" :model="form" label-position="right">
  12. <el-row type="flex" justify="end">
  13. <el-col :span="5">
  14. <el-form-item class="searchFrom">
  15. <el-button type="primary" @click="onSubmit" size="small"
  16. >分析</el-button
  17. >
  18. <el-button size="small" @click="resetForm">重置</el-button>
  19. <!-- <el-button
  20. type="info"
  21. size="small"
  22. @click="drawer = true"
  23. icon="el-icon-setting"
  24. ></el-button> -->
  25. <i @click="drawer = true" class="el-icon-setting setting"></i>
  26. </el-form-item>
  27. </el-col>
  28. </el-row>
  29. <el-collapse v-model="activeNames">
  30. <el-collapse-item title="基础筛选:" name="1">
  31. <el-row class="flex-wrap-row" :gutter="5">
  32. <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="5">
  33. <el-form-item
  34. label="分析类型"
  35. v-if="checkedCities.find((item) => item === '分析类型')"
  36. prop=""
  37. >
  38. <el-select
  39. v-model="form.configAnalysis"
  40. placeholder="请选择分析类型"
  41. size="small"
  42. collapse-tags
  43. multiple
  44. clearable
  45. >
  46. <el-checkbox v-model="checked" @change="selectAll"
  47. >全选</el-checkbox
  48. >
  49. <el-option
  50. v-for="item in analysisTypeList"
  51. :key="item.typeCode"
  52. :label="item.typeName"
  53. :value="item.typeCode"
  54. ></el-option>
  55. </el-select> </el-form-item
  56. ></el-col>
  57. <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="5">
  58. <el-form-item
  59. label="机组名称"
  60. v-if="checkedCities.find((item) => item === '机组名称')"
  61. >
  62. <el-select
  63. multiple
  64. collapse-tags
  65. v-model="form.turbines"
  66. placeholder="请选择机组名称"
  67. size="small"
  68. clearable
  69. >
  70. <el-checkbox
  71. v-model="checkedTurbines"
  72. @change="selectAllTurbines"
  73. >全选</el-checkbox
  74. >
  75. <el-option
  76. v-for="item in windEngineGroupList"
  77. :key="item.engineCode"
  78. :label="item.engineName"
  79. :value="item.engineCode"
  80. ></el-option>
  81. </el-select>
  82. </el-form-item>
  83. </el-col>
  84. <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="5">
  85. <el-form-item
  86. label="SCADA数据"
  87. v-if="checkedCities.find((item) => item === 'SCADA数据')"
  88. >
  89. <el-select
  90. v-model="form.scada"
  91. placeholder="请选择SCADA数据"
  92. size="small"
  93. clearable
  94. >
  95. <el-option
  96. :key="'minute'"
  97. :label="'分钟级'"
  98. :value="'minute'"
  99. ></el-option>
  100. <el-option
  101. :key="'second'"
  102. :label="'秒级'"
  103. :value="'second'"
  104. ></el-option>
  105. </el-select>
  106. </el-form-item>
  107. </el-col>
  108. <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="5">
  109. <el-form-item
  110. label="滤除月份"
  111. v-if="checkedCities.find((item) => item === '滤除月份')"
  112. >
  113. <el-date-picker
  114. value-format="yyyy-MM"
  115. width="200"
  116. size="small"
  117. type="months"
  118. v-model="form.excludingMonths"
  119. placeholder="选择一个或多个月"
  120. >
  121. </el-date-picker>
  122. </el-form-item>
  123. </el-col>
  124. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="9">
  125. <el-form-item
  126. label="分析时间"
  127. v-if="checkedCities.find((item) => item === '分析时间')"
  128. >
  129. <el-date-picker
  130. value-format="yyyy-MM-dd HH:mm:ss"
  131. v-model="picker"
  132. type="datetimerange"
  133. size="small"
  134. range-separator="至"
  135. start-placeholder="开始日期"
  136. end-placeholder="结束日期"
  137. >
  138. </el-date-picker> </el-form-item
  139. ></el-col>
  140. </el-row>
  141. </el-collapse-item>
  142. <el-collapse-item
  143. title="SACAD数据测点过滤设置:"
  144. name="2"
  145. v-if="checkedCities.find((item) => item === 'SCADA数据过滤')"
  146. >
  147. <el-row :gutter="5">
  148. <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
  149. <el-form-item label="风速过滤">
  150. <div class="demo-input-suffix">
  151. <el-input
  152. type="number"
  153. :min="1"
  154. size="small"
  155. placeholder="最小值"
  156. v-model="form.valueWindSpeed[0]"
  157. @input="ensureMinValue(form.valueWindSpeed, 0)"
  158. >
  159. </el-input>
  160. <el-input
  161. type="number"
  162. :min="1"
  163. size="small"
  164. placeholder="最大值"
  165. v-model="form.valueWindSpeed[1]"
  166. @input="ensureMinValue(form.valueWindSpeed, 1)"
  167. >
  168. </el-input>
  169. </div>
  170. </el-form-item>
  171. </el-col>
  172. <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
  173. <el-form-item label="桨距角过滤">
  174. <div class="demo-input-suffix">
  175. <el-input
  176. type="number"
  177. :min="1"
  178. size="small"
  179. placeholder="最小值"
  180. v-model="form.valuePitchAngle[0]"
  181. @input="ensureMinValue(form.valuePitchAngle, 0)"
  182. >
  183. </el-input>
  184. <el-input
  185. type="number"
  186. :min="1"
  187. size="small"
  188. placeholder="最大值"
  189. v-model="form.valuePitchAngle[1]"
  190. @input="ensureMinValue(form.valuePitchAngle, 1)"
  191. >
  192. </el-input>
  193. </div>
  194. </el-form-item>
  195. </el-col>
  196. <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
  197. <el-form-item label="有功功率过滤">
  198. <div class="demo-input-suffix">
  199. <el-input
  200. type="number"
  201. :min="1"
  202. size="small"
  203. placeholder="最小值"
  204. v-model="form.valueActivePower[0]"
  205. @input="ensureMinValue(form.valueActivePower, 0)"
  206. >
  207. </el-input>
  208. <el-input
  209. type="number"
  210. :min="1"
  211. size="small"
  212. placeholder="最大值"
  213. v-model="form.valueActivePower[1]"
  214. @input="ensureMinValue(form.valueActivePower, 1)"
  215. >
  216. </el-input>
  217. </div>
  218. </el-form-item>
  219. </el-col>
  220. <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
  221. <el-form-item label="发电机转速过滤">
  222. <div class="demo-input-suffix">
  223. <el-input
  224. type="number"
  225. :min="1"
  226. size="small"
  227. placeholder="最小值"
  228. v-model="form.valueGeneratorSpeed[0]"
  229. @input="ensureMinValue(form.valueGeneratorSpeed, 0)"
  230. >
  231. </el-input>
  232. <el-input
  233. type="number"
  234. :min="1"
  235. size="small"
  236. placeholder="最大值"
  237. v-model="form.valueGeneratorSpeed[1]"
  238. @input="ensureMinValue(form.valueGeneratorSpeed, 1)"
  239. >
  240. </el-input>
  241. </div>
  242. </el-form-item>
  243. </el-col>
  244. </el-row>
  245. </el-collapse-item>
  246. <el-collapse-item
  247. title="图像轴系设置:"
  248. name="3"
  249. v-if="checkedCities.find((item) => item === '图像设置')"
  250. >
  251. <el-row :gutter="5">
  252. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
  253. <el-form-item label="直驱发电机转速轴系">
  254. <div class="demo-input-suffix">
  255. <el-input
  256. type="number"
  257. :min="1"
  258. size="small"
  259. placeholder="步长"
  260. v-model="form.dGeneratorSpeed[0]"
  261. @input="ensureMinValue(form.dGeneratorSpeed, 0)"
  262. >
  263. </el-input>
  264. <el-input
  265. type="number"
  266. :min="1"
  267. size="small"
  268. placeholder="最小值"
  269. v-model="form.dGeneratorSpeed[1]"
  270. @input="ensureMinValue(form.dGeneratorSpeed, 1)"
  271. >
  272. </el-input>
  273. <el-input
  274. type="number"
  275. :min="1"
  276. size="small"
  277. placeholder="最大值"
  278. v-model="form.dGeneratorSpeed[2]"
  279. @input="ensureMinValue(form.dGeneratorSpeed, 2)"
  280. >
  281. </el-input>
  282. </div>
  283. </el-form-item>
  284. </el-col>
  285. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
  286. <el-form-item label="非直驱发电机转速轴系设置">
  287. <div class="demo-input-suffix">
  288. <el-input
  289. type="number"
  290. :min="1"
  291. size="small"
  292. placeholder="步长"
  293. v-model="form.iGeneratorSpeed[0]"
  294. @input="ensureMinValue(form.iGeneratorSpeed, 0)"
  295. >
  296. </el-input>
  297. <el-input
  298. type="number"
  299. :min="1"
  300. size="small"
  301. placeholder="最小值"
  302. v-model="form.iGeneratorSpeed[1]"
  303. @input="ensureMinValue(form.iGeneratorSpeed, 1)"
  304. >
  305. </el-input>
  306. <el-input
  307. type="number"
  308. :min="1"
  309. size="small"
  310. placeholder="最大值"
  311. v-model="form.iGeneratorSpeed[2]"
  312. @input="ensureMinValue(form.iGeneratorSpeed, 2)"
  313. >
  314. </el-input>
  315. </div>
  316. </el-form-item>
  317. </el-col>
  318. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
  319. <el-form-item label="直驱发电机转矩轴系">
  320. <div class="demo-input-suffix">
  321. <el-input
  322. type="number"
  323. :min="1"
  324. size="small"
  325. placeholder="步长"
  326. v-model="form.dGeneratorTorque[0]"
  327. @input="ensureMinValue(form.dGeneratorTorque, 0)"
  328. >
  329. </el-input>
  330. <el-input
  331. type="number"
  332. :min="1"
  333. size="small"
  334. placeholder="最小值"
  335. v-model="form.dGeneratorTorque[1]"
  336. @input="ensureMinValue(form.dGeneratorTorque, 1)"
  337. >
  338. </el-input>
  339. <el-input
  340. type="number"
  341. :min="1"
  342. size="small"
  343. placeholder="最大值"
  344. v-model="form.dGeneratorTorque[2]"
  345. @input="ensureMinValue(form.dGeneratorTorque, 2)"
  346. >
  347. </el-input>
  348. </div>
  349. </el-form-item>
  350. </el-col>
  351. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
  352. <el-form-item label="非直驱发电机转矩轴系">
  353. <div class="demo-input-suffix">
  354. <el-input
  355. type="number"
  356. :min="1"
  357. size="small"
  358. placeholder="步长"
  359. v-model="form.iGeneratorTorque[0]"
  360. @input="ensureMinValue(form.iGeneratorTorque, 0)"
  361. >
  362. </el-input>
  363. <el-input
  364. type="number"
  365. :min="1"
  366. size="small"
  367. placeholder="最小值"
  368. v-model="form.iGeneratorTorque[1]"
  369. @input="ensureMinValue(form.iGeneratorTorque, 1)"
  370. >
  371. </el-input>
  372. <el-input
  373. type="number"
  374. :min="1"
  375. size="small"
  376. placeholder="最大值"
  377. v-model="form.iGeneratorTorque[2]"
  378. @input="ensureMinValue(form.iGeneratorTorque, 2)"
  379. >
  380. </el-input>
  381. </div>
  382. </el-form-item>
  383. </el-col>
  384. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
  385. <el-form-item label="风能利用系数">
  386. <div class="demo-input-suffix">
  387. <el-input
  388. type="number"
  389. :min="1"
  390. size="small"
  391. placeholder="步长"
  392. v-model="form.cp[0]"
  393. @input="ensureMinValue(form.cp, 0)"
  394. >
  395. </el-input>
  396. <el-input
  397. type="number"
  398. :min="1"
  399. size="small"
  400. placeholder="最小值"
  401. v-model="form.cp[1]"
  402. @input="ensureMinValue(form.cp, 1)"
  403. >
  404. </el-input>
  405. <el-input
  406. type="number"
  407. :min="1"
  408. size="small"
  409. placeholder="最大值"
  410. v-model="form.cp[2]"
  411. @input="ensureMinValue(form.cp, 2)"
  412. >
  413. </el-input>
  414. </div>
  415. </el-form-item>
  416. </el-col>
  417. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
  418. <el-form-item label="叶尖转速比">
  419. <div class="demo-input-suffix">
  420. <el-input
  421. type="number"
  422. :min="1"
  423. size="small"
  424. placeholder="步长"
  425. v-model="form.tsr[0]"
  426. @input="ensureMinValue(form.tsr, 0)"
  427. >
  428. </el-input>
  429. <el-input
  430. type="number"
  431. :min="1"
  432. size="small"
  433. placeholder="最小值"
  434. v-model="form.tsr[1]"
  435. @input="ensureMinValue(form.tsr, 1)"
  436. >
  437. </el-input>
  438. <el-input
  439. type="number"
  440. :min="1"
  441. size="small"
  442. placeholder="最大值"
  443. v-model="form.tsr[2]"
  444. @input="ensureMinValue(form.tsr, 2)"
  445. >
  446. </el-input>
  447. </div>
  448. </el-form-item>
  449. </el-col>
  450. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
  451. <el-form-item label="有功功率">
  452. <div class="demo-input-suffix">
  453. <el-input
  454. type="number"
  455. :min="1"
  456. size="small"
  457. placeholder="步长"
  458. v-model="form.activePower[0]"
  459. @input="ensureMinValue(form.activePower, 0)"
  460. >
  461. </el-input>
  462. <el-input
  463. type="number"
  464. :min="1"
  465. size="small"
  466. placeholder="最小值"
  467. v-model="form.activePower[1]"
  468. @input="ensureMinValue(form.activePower, 1)"
  469. >
  470. </el-input>
  471. <el-input
  472. type="number"
  473. :min="1"
  474. size="small"
  475. placeholder="最大值"
  476. v-model="form.activePower[2]"
  477. @input="ensureMinValue(form.activePower, 2)"
  478. >
  479. </el-input>
  480. </div>
  481. </el-form-item>
  482. </el-col>
  483. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
  484. <el-form-item label="桨距角">
  485. <div class="demo-input-suffix">
  486. <el-input
  487. type="number"
  488. :min="1"
  489. size="small"
  490. placeholder="步长"
  491. v-model="form.pitchAngle[0]"
  492. @input="ensureMinValue(form.pitchAngle, 0)"
  493. >
  494. </el-input>
  495. <el-input
  496. type="number"
  497. :min="1"
  498. size="small"
  499. placeholder="最小值"
  500. v-model="form.pitchAngle[1]"
  501. @input="ensureMinValue(form.pitchAngle, 1)"
  502. >
  503. </el-input>
  504. <el-input
  505. type="number"
  506. :min="1"
  507. size="small"
  508. placeholder="最大值"
  509. v-model="form.pitchAngle[2]"
  510. @input="ensureMinValue(form.pitchAngle, 2)"
  511. >
  512. </el-input>
  513. </div>
  514. </el-form-item>
  515. </el-col>
  516. </el-row>
  517. </el-collapse-item>
  518. </el-collapse>
  519. </el-form>
  520. <el-card shadow="always" class="box-card">
  521. <el-row>
  522. <el-col :span="12"
  523. ><div class="left">
  524. <div>
  525. <span>机组名称:</span>
  526. <el-select
  527. v-model="engineCode"
  528. placeholder="请选择机组名称"
  529. size="small"
  530. clearable
  531. @change="handleEngineCode"
  532. >
  533. <el-option
  534. v-for="item in windEngineGroupList"
  535. :key="item.engineCode"
  536. :label="item.engineName"
  537. :value="item.engineCode"
  538. ></el-option>
  539. </el-select>
  540. </div>
  541. <div>
  542. 1.额定容量:{{
  543. windDetail.ratedCapacity ? windDetail.ratedCapacity : 0
  544. }}
  545. <span> (kW)</span>
  546. </div>
  547. <!-- <div>2.发电机类型(Generator Type):{{}}</div> -->
  548. <div>2.风机编号:{{ windDetail.engineCode }}</div>
  549. <div>3.经度(Longitude):{{ windDetail.longitude }}</div>
  550. <div>4.维度(Dimensionality):{{ windDetail.latitude }}</div>
  551. <div>
  552. 5.海拔高度(Altitude):{{
  553. windDetail.elevationHeight ? windDetail.elevationHeight : 0
  554. }}
  555. <span>(米)</span>
  556. </div>
  557. <div>6.风机名称:{{ windDetail.engineName }}</div>
  558. <div>
  559. 7.是否标杆(Benchmarking or not):{{
  560. windDetail.sightcing == 1 ? "是" : "否"
  561. }}
  562. </div>
  563. <div>8.风场编号:{{ windDetail.fieldCode }}</div>
  564. <div>
  565. 9.轮毂高度:{{ windDetail.hubHeight ? windDetail.hubHeight : 0 }}
  566. <span> (米)</span>
  567. </div>
  568. <div>10.机型编号:{{ windDetail.millTypeCode }}</div>
  569. <div>
  570. 11.切入风速:{{
  571. windDetail.ratedCutInWindspeed
  572. ? windDetail.ratedCutInWindspeed
  573. : 0
  574. }}<span> (m/s)</span>
  575. </div>
  576. <div>
  577. 12.切出风速:{{
  578. windDetail.ratedCutOutWindspeed
  579. ? windDetail.ratedCutOutWindspeed
  580. : 0
  581. }}<span> (m/s)</span>
  582. </div>
  583. <!-- <div>8.地理位置(Location):不同地理位置的气候条件{{}}</div>
  584. <div>
  585. 9.供应商信息(Manufacturer
  586. Information):制造商的信誉、技术水平和售后
  587. </div>
  588. <div>
  589. 10.维护需求(Maintenance Requirements):风力发电机组需要定期
  590. </div>
  591. <div>11.预期寿命(Expected Lifetime):风力发电机组的设计寿命</div> -->
  592. </div>
  593. </el-col>
  594. <el-col :span="12" v-loading="htmlLoading">
  595. <div class="right">
  596. <iframe
  597. v-if="htmlLoading"
  598. :src="windDetail.elevationHeight"
  599. frameborder="0"
  600. @load="iframeLoad"
  601. width="100%"
  602. height="100%"
  603. ></iframe>
  604. <img
  605. v-else
  606. style="width: 100%"
  607. src="../../../assets/img/loadingError.webp"
  608. alt=""
  609. />
  610. </div>
  611. </el-col>
  612. </el-row>
  613. </el-card>
  614. <el-drawer
  615. title="偏好设置"
  616. :visible.sync="drawer"
  617. :direction="direction"
  618. :before-close="handleClose"
  619. class="drawerOption"
  620. >
  621. <el-row>
  622. <el-col :span="12"
  623. ><div class="drawerLeft">
  624. <div style="text-align: center; font-size: 16px">常用功能设置</div>
  625. <el-checkbox
  626. :indeterminate="isIndeterminate"
  627. v-model="checkAll"
  628. @change="handleCheckAllChange"
  629. >全选</el-checkbox
  630. >
  631. <div style="margin: 15px 0"></div>
  632. <el-checkbox-group
  633. v-model="checkedCities"
  634. @change="handleCheckedCitiesChange"
  635. >
  636. <el-checkbox v-for="city in cities" :label="city" :key="city">{{
  637. city
  638. }}</el-checkbox>
  639. <el-checkbox
  640. label="SCADA数据过滤"
  641. key="SCADA数据过滤"
  642. ></el-checkbox>
  643. <div class="checkFromRow">
  644. <el-row>
  645. <el-col :span="12">发电机转速测点</el-col>
  646. <el-col :span="12">桨距角值测点</el-col>
  647. <el-col :span="12">有功功率测点</el-col>
  648. <el-col :span="12">风速速度测点</el-col>
  649. </el-row>
  650. </div>
  651. <el-checkbox label="图像设置" key="图像设置"></el-checkbox>
  652. <div class="checkFromRow">
  653. <el-row>
  654. <el-col :span="12">发电机转矩轴系</el-col>
  655. <el-col :span="12">桨距角轴系</el-col>
  656. <el-col :span="12">叶尖速比轴系</el-col>
  657. <el-col :span="12">有功功率轴系</el-col>
  658. <el-col :span="12">发电机转矩轴系</el-col>
  659. </el-row>
  660. </div>
  661. </el-checkbox-group>
  662. </div></el-col
  663. >
  664. <el-col :span="12">
  665. <div class="drawerRight">
  666. <div style="text-align: center; font-size: 16px">已选中功能</div>
  667. <ul>
  668. <li v-for="func in checkedCities" :key="func">
  669. {{ func }}
  670. <el-button
  671. type="text"
  672. icon="el-icon-delete"
  673. @click="removeFunction(func)"
  674. ></el-button>
  675. </li>
  676. </ul></div
  677. ></el-col>
  678. </el-row>
  679. <div class="demo-drawer__footer">
  680. <el-button @click="handleClose">取 消</el-button>
  681. <el-button type="primary" @click="handleClose">{{ "确 定" }}</el-button>
  682. </div>
  683. </el-drawer>
  684. </div>
  685. </template>
  686. <script>
  687. import { analysisEditQuery, analysis } from "@/api/performance";
  688. import { getWindEngineGroup } from "@/api/ledger";
  689. export default {
  690. data() {
  691. return {
  692. checkedTurbines: false,
  693. checked: false,
  694. htmlLoading: true,
  695. engineCode: null, //台账机组编号
  696. picker: [],
  697. loading: false,
  698. form: {
  699. configAnalysis: null, //分析类型
  700. powerFarmID: null, //风场编号//通过路由获取的默认传递的
  701. dataBatchNum: null, //批次号
  702. scada: "minute", //scada数类型
  703. turbines: [], //机组编号
  704. beginTime: null, //开始时间
  705. endTime: null, //结束时间
  706. excludingMonths: null, //过滤月份
  707. valueWindSpeed: [], //风速值最大最小 数组第一值为min 第二个 max
  708. valuePitchAngle: [], //桨距角最大最小
  709. valueActivePower: [], //有功功率
  710. valueGeneratorSpeed: [], //发电机转速
  711. //图像
  712. dGeneratorSpeed: [], //直驱发电机转速轴系 第一个值为步长 第二个min 第三个 max
  713. iGeneratorSpeed: [], //非直驱发电机转速轴系设置
  714. dGeneratorTorque: [], //直驱发电机转矩轴系
  715. iGeneratorTorque: [], //非直驱发电机转矩轴系
  716. cp: [], //风能利用系数轴系
  717. tsr: [], //叶尖速比轴系
  718. pitchAngle: [], //桨距角轴系
  719. activePower: [], //有功功率轴系
  720. },
  721. activeNames: ["1", "2", "3"],
  722. checkAll: false,
  723. checkedCities: [
  724. "分析类型",
  725. "SCADA数据",
  726. "分析时间",
  727. "滤除月份",
  728. "机组名称",
  729. ],
  730. cities: ["分析类型", "SCADA数据", "分析时间", "滤除月份", "机组名称"],
  731. isIndeterminate: true,
  732. drawer: false,
  733. direction: "rtl",
  734. value: "",
  735. options: [],
  736. tabIndex: 2,
  737. analysisTypeList: [],
  738. windEngineGroupList: [],
  739. windDetail: {},
  740. };
  741. },
  742. created() {
  743. //获取分析 分析类型、机组编号 列表
  744. this.getWindCodeList();
  745. },
  746. methods: {
  747. selectAllTurbines() {
  748. this.form.turbines = [];
  749. if (this.checkedTurbines) {
  750. this.windEngineGroupList.map((item) => {
  751. this.form.turbines.push(item.engineCode);
  752. });
  753. } else {
  754. this.form.turbines = [];
  755. }
  756. },
  757. selectAll() {
  758. this.form.configAnalysis = [];
  759. if (this.checked) {
  760. this.analysisTypeList.map((item) => {
  761. this.form.configAnalysis.push(item.typeCode);
  762. });
  763. } else {
  764. this.form.configAnalysis = [];
  765. }
  766. },
  767. iframeLoad() {
  768. this.htmlLoading = false;
  769. },
  770. ensureMinValue(field, index) {
  771. if (field[index] < 1) {
  772. field[index] = 1;
  773. }
  774. },
  775. handleEngineCode(e) {
  776. this.engineCode = e;
  777. this.getWindEngList();
  778. },
  779. async getWindEngList() {
  780. this.loading = true;
  781. try {
  782. const res = await getWindEngineGroup({
  783. engineCode: this.engineCode,
  784. });
  785. this.loading = false;
  786. this.windDetail = res.data;
  787. } catch (error) {
  788. this.loading = false;
  789. console.error(error);
  790. }
  791. },
  792. async getAnalysis() {
  793. this.loading = true;
  794. try {
  795. await analysis({
  796. // ...this.form,
  797. configAnalysis:
  798. this.form.configAnalysis !== null
  799. ? this.form.configAnalysis
  800. : undefined, //分析类型
  801. powerFarmID: this.$route.query.fieldEngineCode, //风场编号//通过路由获取的默认传递的
  802. dataBatchNum: this.$route.query.batchCode, //批次号
  803. scada: this.form.scada !== null ? this.form.scada : undefined, //scada数类型
  804. turbines:
  805. this.form.turbines.length > 0 ? this.form.turbines : undefined, //机组编号
  806. excludingMonths:
  807. this.form.excludingMonths === null
  808. ? undefined
  809. : this.form.excludingMonths, //过滤月份
  810. valueWindSpeed:
  811. this.form.valueWindSpeed.length > 0
  812. ? this.form.valueWindSpeed
  813. : undefined, //风速值最大最小 数组第一值为min 第二个 max
  814. valuePitchAngle:
  815. this.form.valuePitchAngle.length > 0
  816. ? this.form.valuePitchAngle
  817. : undefined, //桨距角最大最小
  818. valueActivePower:
  819. this.form.valueActivePower.length > 0
  820. ? this.form.valueActivePower
  821. : undefined, //有功功率
  822. valueGeneratorSpeed:
  823. this.form.valueGeneratorSpeed.length > 0
  824. ? this.form.valueGeneratorSpeed
  825. : undefined, //发电机转速
  826. //图像
  827. dGeneratorSpeed:
  828. this.form.dGeneratorSpeed.length > 0
  829. ? this.form.dGeneratorSpeed
  830. : undefined, //直驱发电机转速轴系 第一个值为步长 第二个min 第三个 max
  831. iGeneratorSpeed:
  832. this.form.iGeneratorSpeed.length > 0
  833. ? this.form.iGeneratorSpeed
  834. : undefined, //非直驱发电机转速轴系设置
  835. dGeneratorTorque:
  836. this.form.dGeneratorTorque.length > 0
  837. ? this.form.dGeneratorTorque
  838. : undefined, //直驱发电机转矩轴系
  839. iGeneratorTorque:
  840. this.form.iGeneratorTorque.length > 0
  841. ? this.form.iGeneratorTorque
  842. : undefined, //非直驱发电机转矩轴系
  843. cp: this.form.cp.length > 0 ? this.form.cp : undefined, //风能利用系数轴系
  844. tsr: this.form.tsr.length > 0 ? this.form.tsr : undefined, //叶尖速比轴系
  845. pitchAngle:
  846. this.form.pitchAngle.length > 0 ? this.form.pitchAngle : undefined, //桨距角轴系
  847. activePower:
  848. this.form.activePower.length > 0
  849. ? this.form.activePower
  850. : undefined, //有功功率轴系
  851. beginTime: this.picker[0], //开始时间
  852. endTime: this.picker[1], //结束时间
  853. });
  854. this.$message({
  855. type: "success",
  856. message: "已分析请前往分析详情中查看结果",
  857. });
  858. this.loading = false;
  859. } catch (error) {
  860. console.error(error);
  861. this.loading = false;
  862. }
  863. },
  864. async getWindCodeList() {
  865. this.loading = true;
  866. try {
  867. const response = await analysisEditQuery({
  868. batchCode: this.$route.query.batchCode,
  869. });
  870. if (
  871. response.data.windEngineGroupList === null ||
  872. response.data.windEngineGroupList.length === 0
  873. ) {
  874. this.$message({
  875. type: "warning",
  876. message: "当前风场没有风机,无法进行分析",
  877. });
  878. this.$router.go(-1);
  879. }
  880. this.form.powerFarmID = this.$route.query.fieldEngineCode;
  881. this.form.dataBatchNum = this.$route.query.batchCode;
  882. this.analysisTypeList = response.data.analysisTypeList;
  883. this.windEngineGroupList = response.data.windEngineGroupList;
  884. this.engineCode =
  885. response.data.windEngineGroupList !== null &&
  886. response.data.windEngineGroupList.length > 0
  887. ? response.data.windEngineGroupList[0].engineCode
  888. : null;
  889. if (response.data.windEngineGroupList.length > 0) {
  890. //获取台账机组编号
  891. this.getWindEngList();
  892. }
  893. this.loading = false;
  894. } catch (error) {
  895. this.$message({
  896. type: "error",
  897. message: error,
  898. });
  899. this.loading = false;
  900. this.$router.go(-1);
  901. }
  902. },
  903. handleCheckAllChange(val) {
  904. this.checkedCities = val
  905. ? [...this.cities, "SCADA数据过滤", "图像设置"]
  906. : [];
  907. this.isIndeterminate = false;
  908. },
  909. handleCheckedCitiesChange(value) {
  910. let checkedCount = value.length;
  911. this.checkAll = checkedCount === this.cities.length + 2;
  912. this.isIndeterminate =
  913. checkedCount > 0 && checkedCount < this.cities.length + 2;
  914. },
  915. removeFunction(item) {
  916. this.checkedCities = this.checkedCities.filter((fuc) => fuc !== item);
  917. },
  918. handleClose(done) {
  919. this.$confirm("确认关闭?")
  920. .then((_) => {
  921. // done();
  922. this.drawer = false;
  923. })
  924. .catch((_) => {});
  925. },
  926. onSubmit() {
  927. this.getAnalysis();
  928. },
  929. resetForm() {
  930. this.picker = [];
  931. this.form = {
  932. configAnalysis: null, //分析类型
  933. powerFarmID: this.$route.query.fieldEngineCode, //风场编号//通过路由获取的默认传递的
  934. dataBatchNum: this.$route.query.batchCode, //批次号
  935. scada: "minute", //scada数类型
  936. turbines: [], //机组编号
  937. beginTime: null, //开始时间
  938. endTime: null, //结束时间
  939. excludingMonths: null, //过滤月份
  940. valueWindSpeed: [], //风速值最大最小 数组第一值为min 第二个 max
  941. valuePitchAngle: [], //桨距角最大最小
  942. valueActivePower: [], //有功功率
  943. valueGeneratorSpeed: [], //发电机转速
  944. //图像
  945. dGeneratorSpeed: [], //直驱发电机转速轴系 第一个值为步长 第二个min 第三个 max
  946. iGeneratorSpeed: [], //非直驱发电机转速轴系设置
  947. dGeneratorTorque: [], //直驱发电机转矩轴系
  948. iGeneratorTorque: [], //非直驱发电机转矩轴系
  949. cp: [], //风能利用系数轴系
  950. tsr: [], //叶尖速比轴系
  951. pitchAngle: [], //桨距角轴系
  952. activePower: [], //有功功率轴系
  953. };
  954. },
  955. // 清空内容
  956. clear() {
  957. this.$refs.editor.clear();
  958. },
  959. },
  960. };
  961. </script>
  962. <style scoped lang="scss">
  963. .box-card {
  964. margin: 10px 0;
  965. width: 100%;
  966. font-size: 14px;
  967. .el-card__body {
  968. width: 100%;
  969. .left {
  970. > div {
  971. line-height: 3;
  972. }
  973. }
  974. .right {
  975. height: 450px;
  976. width: 100%;
  977. iframe {
  978. width: 100%;
  979. height: 100%;
  980. }
  981. }
  982. }
  983. }
  984. .el-select-dropdown__wrap {
  985. .el-select-dropdown__list {
  986. .el-checkbox {
  987. display: flex;
  988. justify-content: end;
  989. margin: 0px 20px;
  990. }
  991. }
  992. }
  993. // .setting {
  994. // font-size: 20px;
  995. // font-weight: 900;
  996. // }
  997. ::v-deep.el-select--small,
  998. ::v-deep.el-select__tags {
  999. width: 220px !important;
  1000. // min-width: 180px !important;
  1001. .el-tag--light {
  1002. display: flex;
  1003. justify-content: space-between;
  1004. }
  1005. .el-tag--light:nth-child(1) {
  1006. width: 125px;
  1007. }
  1008. }
  1009. ::v-deep .searchFrom {
  1010. .el-form-item__content {
  1011. display: flex !important;
  1012. justify-content: end !important;
  1013. align-items: center !important;
  1014. i {
  1015. margin-left: 10px;
  1016. font-size: 24px;
  1017. font-weight: 800;
  1018. }
  1019. }
  1020. }
  1021. ::v-deep.drawerOption {
  1022. .el-drawer {
  1023. width: 33% !important;
  1024. }
  1025. .el-checkbox-group {
  1026. line-height: 40px !important;
  1027. }
  1028. .drawerLeft {
  1029. margin-left: 20px;
  1030. color: #606266 !important;
  1031. }
  1032. .checkFromRow {
  1033. .el-col-12 {
  1034. color: #606266 !important;
  1035. font-size: 14px;
  1036. }
  1037. .el-col-12:nth-child(even) {
  1038. text-align: end !important;
  1039. }
  1040. }
  1041. .drawerRight {
  1042. margin-right: 20px;
  1043. color: #606266 !important;
  1044. font-size: 14px;
  1045. ul {
  1046. list-style-type: none;
  1047. padding: 0;
  1048. color: #606266 !important;
  1049. li {
  1050. display: flex;
  1051. align-items: center;
  1052. justify-content: space-between;
  1053. padding: 0px 10px;
  1054. line-height: 40px !important;
  1055. }
  1056. }
  1057. }
  1058. .demo-drawer__footer {
  1059. display: flex;
  1060. margin-top: 50px;
  1061. justify-content: center;
  1062. }
  1063. }
  1064. ::v-deep.el-input--small .el-input__inner {
  1065. width: 220px !important;
  1066. }
  1067. .demo-input-suffix {
  1068. display: flex !important;
  1069. }
  1070. ::v-deep.demo-input-suffix .el-input--small {
  1071. width: 100px !important;
  1072. }
  1073. ::v-deep.demo-input-suffix .el-input--small .el-input__inner {
  1074. width: 90px !important;
  1075. }
  1076. .abalysisType {
  1077. margin-top: 30px;
  1078. }
  1079. </style>