SandTable.vue 60 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306
  1. <template>
  2. <!-- padding: 0 10px; -->
  3. <div style="width: 100%; height: 100%">
  4. <div
  5. class="sand-table"
  6. id="sandTable"
  7. v-if="$route.path === '/integratedAlarm'"
  8. >
  9. <!-- <img :src="require('@assets/png/3dcloud.png')" class="i3dcloud" /> -->
  10. <StBack></StBack>
  11. <ThreeModel1
  12. class="three-model-layer"
  13. :data="mapSource"
  14. @when="when"
  15. @clickMapItem="clickMapItem"
  16. >
  17. </ThreeModel1>
  18. <!-- <img :src="require('@/assets/png/3dback.png')" class="i3dback" /> -->
  19. <!-- v-if="showPanel" -->
  20. <!-- 第一机组 -->
  21. <div class="sand-table-left">
  22. <PanelSand
  23. class="left-panel"
  24. :style="isFullScreen ? 'height: 26vh' : 'height: 27vh'"
  25. title="停机信息-中车"
  26. >
  27. <template v-slot:tools>
  28. <div class="exchange" @click="changeBjSwitch('left')">
  29. <span :class="bjSwitch ? 'gray' : 'white'">故障</span>
  30. <i class="blue fa fa-exchange mg-l-8 mg-r-8"></i>
  31. <span :class="bjSwitch ? 'white' : 'gray'">检修</span>
  32. </div>
  33. </template>
  34. <RankTable
  35. :data="selsZC"
  36. @rowClick="clickStopRow('left')"
  37. height="20vh"
  38. ></RankTable>
  39. </PanelSand>
  40. <PanelSandToolbar
  41. class="right-panel mg-t-16"
  42. :style="isFullScreen ? 'height: 19vh' : 'height: 22vh'"
  43. title="预警情况"
  44. >
  45. <template v-slot:tools>
  46. <div class="exchange">
  47. <span
  48. :class="warnSwitch === 'z' ? 'white' : 'gray'"
  49. @click="changeWarnSwitch('z')"
  50. >周</span
  51. >
  52. <i class="blue fa fa-exchange mg-l-8 mg-r-8"></i>
  53. <span
  54. :class="warnSwitch === 'y' ? 'white' : 'gray'"
  55. @click="changeWarnSwitch('y')"
  56. >月</span
  57. >
  58. <i class="blue fa fa-exchange mg-l-8 mg-r-8"></i>
  59. <span
  60. :class="warnSwitch === 'n' ? 'white' : 'gray'"
  61. @click="changeWarnSwitch('n')"
  62. >年</span
  63. >
  64. </div>
  65. </template>
  66. <template v-slot:toolsL>
  67. <div class="exchange">
  68. <span
  69. :class="warnPC ? 'white' : 'gray'"
  70. @click="changeWarnPC('left')"
  71. >频次</span
  72. >
  73. <i class="blue fa fa-exchange mg-l-8 mg-r-8"></i>
  74. <span
  75. :class="warnPC ? 'gray' : 'white'"
  76. @click="changeWarnPC('left')"
  77. >时长</span
  78. >
  79. </div>
  80. </template>
  81. <template v-slot:default>
  82. <RadarPieChart
  83. height="18vh"
  84. :list="warnChartDataZC"
  85. :title="warnPC ? '预警频次情况' : '预警时长情况'"
  86. :unit="warnPC ? '次' : '秒'"
  87. />
  88. </template>
  89. </PanelSandToolbar>
  90. <PanelSandToolbar
  91. class="right-panel mg-t-16"
  92. :style="isFullScreen ? 'height: 19vh' : 'height: 22vh'"
  93. title="故障情况"
  94. style="cursor: pointer"
  95. >
  96. <template v-slot:tools>
  97. <div
  98. style="
  99. position: absolute;
  100. left: -115px;
  101. top: -5px;
  102. width: 100px;
  103. height: 30px;
  104. "
  105. @click.stop="clickTime('WT2000D121H85')"
  106. ></div>
  107. <div class="exchange">
  108. <span
  109. :class="probSwitch === 'z' ? 'white' : 'gray'"
  110. @click.stop="changeProbSwitch('z')"
  111. >周</span
  112. >
  113. <i class="blue fa fa-exchange mg-l-8 mg-r-8"></i>
  114. <span
  115. :class="probSwitch === 'y' ? 'white' : 'gray'"
  116. @click.stop="changeProbSwitch('y')"
  117. >月</span
  118. >
  119. <i class="blue fa fa-exchange mg-l-8 mg-r-8"></i>
  120. <span
  121. :class="probSwitch === 'n' ? 'white' : 'gray'"
  122. @click.stop="changeProbSwitch('n')"
  123. >年</span
  124. >
  125. </div>
  126. </template>
  127. <template v-slot:toolsL>
  128. <div class="exchange">
  129. <span
  130. :class="probPC ? 'white' : 'gray'"
  131. @click.stop="changeProbPC('left')"
  132. >频次</span
  133. >
  134. <i class="blue fa fa-exchange mg-l-8 mg-r-8"></i>
  135. <span
  136. :class="probPC ? 'gray' : 'white'"
  137. @click.stop="changeProbPC('left')"
  138. >时长</span
  139. >
  140. </div>
  141. </template>
  142. <template v-slot:default>
  143. <!-- <RadarPieChartCom height="18vh" :list="probChartData" title="故障情况" /> -->
  144. <RadarPieChart
  145. height="18vh"
  146. :list="probChartDataZC"
  147. :title="probPC ? '故障频次情况' : '故障时长情况'"
  148. :unit="probPC ? '次' : '秒'"
  149. />
  150. </template>
  151. </PanelSandToolbar>
  152. </div>
  153. <!-- <div></div>
  154. v-if="showPanel" -->
  155. <!-- 第二机组 -->
  156. <div class="sand-table-right">
  157. <PanelSand class="left-panel" title="停机信息-联合动力">
  158. <template v-slot:tools>
  159. <div class="exchange" @click="changeBjSwitch('right')">
  160. <span :class="bjSwitch2 ? 'gray' : 'white'">故障</span>
  161. <i class="blue fa fa-exchange mg-l-8 mg-r-8"></i>
  162. <span :class="bjSwitch2 ? 'white' : 'gray'">检修</span>
  163. </div>
  164. </template>
  165. <RankTable
  166. :data="selsLH"
  167. @rowClick="clickStopRow('right')"
  168. height="20vh"
  169. ></RankTable>
  170. </PanelSand>
  171. <PanelSandToolbar
  172. class="right-panel mg-t-16"
  173. :style="isFullScreen ? 'height: 19vh' : 'height: 22vh'"
  174. title="预警情况"
  175. >
  176. <template v-slot:tools>
  177. <div class="exchange">
  178. <span
  179. :class="warnSwitch2 === 'z' ? 'white' : 'gray'"
  180. @click="changeWarnSwitch2('z')"
  181. >周</span
  182. >
  183. <i class="blue fa fa-exchange mg-l-8 mg-r-8"></i>
  184. <span
  185. :class="warnSwitch2 === 'y' ? 'white' : 'gray'"
  186. @click="changeWarnSwitch2('y')"
  187. >月</span
  188. >
  189. <i class="blue fa fa-exchange mg-l-8 mg-r-8"></i>
  190. <span
  191. :class="warnSwitch2 === 'n' ? 'white' : 'gray'"
  192. @click="changeWarnSwitch2('n')"
  193. >年</span
  194. >
  195. </div>
  196. </template>
  197. <template v-slot:toolsL>
  198. <div class="exchange">
  199. <span
  200. :class="warnPC2 ? 'white' : 'gray'"
  201. @click="changeWarnPC('right')"
  202. >频次</span
  203. >
  204. <i class="blue fa fa-exchange mg-l-8 mg-r-8"></i>
  205. <span
  206. :class="warnPC2 ? 'gray' : 'white'"
  207. @click="changeWarnPC('right')"
  208. >时长</span
  209. >
  210. </div>
  211. </template>
  212. <template v-slot:default>
  213. <RadarPieChart
  214. height="18vh"
  215. :list="warnChartDataLH"
  216. :title="warnPC2 ? '预警频次情况' : '预警时长情况'"
  217. :unit="warnPC2 ? '次' : '秒'"
  218. />
  219. </template>
  220. </PanelSandToolbar>
  221. <PanelSandToolbar
  222. class="right-panel mg-t-16"
  223. :style="isFullScreen ? 'height: 19vh' : 'height: 22vh'"
  224. title="故障情况"
  225. >
  226. <template v-slot:tools>
  227. <div
  228. style="
  229. position: absolute;
  230. left: -115px;
  231. top: -5px;
  232. width: 100px;
  233. height: 30px;
  234. cursor: pointer;
  235. "
  236. @click.stop="clickTime('UP2000-130')"
  237. ></div>
  238. <div class="exchange">
  239. <span
  240. :class="probSwitch2 === 'z' ? 'white' : 'gray'"
  241. @click.stop="changeProbSwitch2('z')"
  242. >周</span
  243. >
  244. <i class="blue fa fa-exchange mg-l-8 mg-r-8"></i>
  245. <span
  246. :class="probSwitch2 === 'y' ? 'white' : 'gray'"
  247. @click.stop="changeProbSwitch2('y')"
  248. >月</span
  249. >
  250. <i class="blue fa fa-exchange mg-l-8 mg-r-8"></i>
  251. <span
  252. :class="probSwitch2 === 'n' ? 'white' : 'gray'"
  253. @click.stop="changeProbSwitch2('n')"
  254. >年</span
  255. >
  256. </div>
  257. </template>
  258. <template v-slot:toolsL>
  259. <div class="exchange">
  260. <span
  261. :class="probPC2 ? 'white' : 'gray'"
  262. @click.stop="changeProbPC('right')"
  263. >频次</span
  264. >
  265. <i class="blue fa fa-exchange mg-l-8 mg-r-8"></i>
  266. <span
  267. :class="probPC2 ? 'gray' : 'white'"
  268. @click.stop="changeProbPC('right')"
  269. >时长</span
  270. >
  271. </div>
  272. </template>
  273. <template v-slot:default>
  274. <!-- <RadarPieChartCom height="18vh" :list="probChartData" title="故障情况" style="cursor: pointer" /> -->
  275. <RadarPieChart
  276. height="18vh"
  277. :list="probChartDataLH"
  278. :title="probPC2 ? '故障频次情况' : '故障时长情况'"
  279. :unit="probPC2 ? '次' : '秒'"
  280. />
  281. </template>
  282. </PanelSandToolbar>
  283. </div>
  284. <div class="footer" :style="isFullScreen ? 'bottom: 1%' : 'bottom: 2%'">
  285. <div class="hover72Power">
  286. <div
  287. id="problem1"
  288. class="cur"
  289. style="width: 100%; height: 100%"
  290. ></div>
  291. <div class="hidBtn" @click="clickTime('WT2000D121H85')"></div>
  292. </div>
  293. <div class="monthPower">
  294. <div
  295. id="problem2"
  296. class="cur"
  297. style="width: 100%; height: 100%"
  298. ></div>
  299. <div class="hidBtn" @click="clickTime('UP2000-130')"></div>
  300. </div>
  301. </div>
  302. <el-dialog
  303. v-model="noTimeDialog"
  304. :custom-class="noTimeDialogsc"
  305. width="80%"
  306. >
  307. <template #title>
  308. <div class="dialogTitle">
  309. <span style="margin-left: 10px">非停时长占比与故障次数</span>
  310. </div>
  311. </template>
  312. <div class="allStyle">
  313. <div class="radioGroupTime">
  314. <el-date-picker
  315. v-model="radioTime"
  316. type="datetimerange"
  317. range-separator="至"
  318. start-placeholder="开始日期"
  319. end-placeholder="结束日期"
  320. format="YYYY-MM-DD HH:mm:ss"
  321. >
  322. </el-date-picker>
  323. <el-radio-group v-model="radioGroup" @change="changeRadio">
  324. <el-radio :label="1">按日</el-radio>
  325. <el-radio :label="2">按月</el-radio>
  326. </el-radio-group>
  327. </div>
  328. <div class="allMain">
  329. <!-- <span class="mainTit">2025-01-{{it}}</span> -->
  330. <div class="allMsg">
  331. <div class="warnLine">
  332. <RadarLineChartCom
  333. width="45vw"
  334. height="50vh"
  335. :xAxis="problem3.xAxis"
  336. :series="problem3.series"
  337. />
  338. </div>
  339. <div class="warnPie">
  340. <RadarPieChartCom
  341. width="30vw"
  342. height="50vh"
  343. :list="probChartData"
  344. title="非停时长占比"
  345. style="cursor: pointer"
  346. />
  347. </div>
  348. </div>
  349. </div>
  350. </div>
  351. <!-- <template #footer>
  352. <div class="dialog-footer">
  353. <el-button @click="dialogVisible = false">Cancel</el-button>
  354. <el-button type="primary" @click="dialogVisible = false">
  355. Confirm
  356. </el-button>
  357. </div>
  358. </template> -->
  359. </el-dialog>
  360. <el-dialog
  361. v-model="showTableDialog"
  362. :custom-class="noTimeDialogsc"
  363. width="80%"
  364. >
  365. <template #title>
  366. <div class="dialogTitle">
  367. <span style="margin-left: 10px">停机信息</span>
  368. </div>
  369. </template>
  370. <div class="warnTable">
  371. <el-table
  372. size="mini"
  373. :data="tableData"
  374. style="width: 100%; height: calc(100% - 310px)"
  375. max-height="520px"
  376. stripe
  377. >
  378. <el-table-column
  379. v-for="item in tableHeader"
  380. :label="item.name"
  381. :prop="item.code"
  382. :key="item.code"
  383. :width="item.width || ''"
  384. show-overflow-tooltip
  385. header-align="center"
  386. align="center"
  387. >
  388. <template #default="scope">
  389. <span v-if="item.code == 'status'">
  390. <span :style="scope.row.status === 0 ? 'color: red' : ''">{{
  391. scope.row.status === 0 ? "异常" : "正常"
  392. }}</span>
  393. </span>
  394. <span v-else>
  395. {{
  396. scope.row[item.code] != "NULL" ? scope.row[item.code] : ""
  397. }}
  398. </span>
  399. </template>
  400. </el-table-column>
  401. </el-table>
  402. </div>
  403. </el-dialog>
  404. </div>
  405. <router-view v-else />
  406. </div>
  407. </template>
  408. <script>
  409. import ThreeModel1 from "./component/ThreeModel1.vue";
  410. import PanelSand from "@com/coms/panel/panel-sand.vue";
  411. import PanelSandToolbar from "@com/coms/panel/panel-sand-toolbar.vue";
  412. import StBack from "./component/st-back.vue";
  413. import RankTable from "./component/rank-table.vue";
  414. import RadarPieChart from "@com/chart/pie/radar-pie-chart.vue";
  415. import RadarPieChartCom from "./component/radar-pie-chart.vue";
  416. import RadarLineChartCom from "./component/radar-line-chart.vue";
  417. import dataJson from "./component/dataBJJson.json";
  418. import dayjs from "dayjs";
  419. import { onBeforeRouteLeave } from "vue-router";
  420. import { alarm_history } from "@/api/zhbj/index.js";
  421. import {
  422. apiGetqueryshutdowneventlist,
  423. apiGetfindCtFeatureStat,
  424. apiGetqueryShutdownEvent2ByType,
  425. apiGetqueryShutdownEvent2ByDay,
  426. apiGetqueryShutdownEvent2ByMonth,
  427. apiGetqueryShutdownEvent2ByMap,
  428. } from "@/api/sandtable/index.js";
  429. import jsonData from "./component/data.json";
  430. import jsonDataHT from "./component/dataHTjson.json";
  431. export default {
  432. // 名称
  433. name: "SandTable",
  434. // 使用组件
  435. components: {
  436. ThreeModel1,
  437. PanelSand,
  438. PanelSandToolbar,
  439. RadarPieChart,
  440. StBack,
  441. RankTable,
  442. RadarPieChartCom,
  443. RadarLineChartCom,
  444. },
  445. // 数据
  446. data() {
  447. const that = this;
  448. return {
  449. radioGroup: 1,
  450. radioTime: [],
  451. problem1: null,
  452. problem2: null,
  453. problem3: {},
  454. videoShow: true,
  455. showPanel: false,
  456. bjSwitch: false,
  457. bjSwitch2: false,
  458. warnSwitch: "y",
  459. warnSwitch2: "y",
  460. probSwitch: "y",
  461. probSwitch2: "y",
  462. warnPC: true,
  463. warnPC2: true,
  464. probPC: true,
  465. probPC2: true,
  466. timmer1: null,
  467. showWeatherDialog: false,
  468. showTableDialog: false,
  469. showHealthDialog: false,
  470. showMainInfoDialog: false,
  471. noTimeDialog: false,
  472. noTimeType: "",
  473. weathercollapse: "",
  474. weatherChart: [
  475. {
  476. title: "温度",
  477. smooth: true,
  478. value: [],
  479. },
  480. {
  481. title: "湿度",
  482. smooth: true,
  483. value: [],
  484. },
  485. ],
  486. videoDialogClass: "modal animated a1 bounceIn",
  487. tableDialogClass: "modal animated a1 fadeInLeftBig",
  488. mainInfoDialogClass: "modal curModal animated a0 fadeInDownBig",
  489. mainInfo: [],
  490. peopleClass: "",
  491. timeStr: "",
  492. wpId: "0",
  493. tqmap1: {},
  494. tqmap5: [],
  495. gxkmap: {},
  496. tableItem: {},
  497. mapSource: {},
  498. videoArray1: [
  499. // [
  500. // { code: "NSS_FDC_ZK", class: "", switch: true },
  501. // { code: "NSS_FDC_ZK", class: "", switch: true },
  502. // ],
  503. // [
  504. // { code: "NSS_FDC_ZK", class: "", switch: true },
  505. // { code: "QS_FDC_ZK", class: "", switch: true },
  506. // ],
  507. // [
  508. // { code: "QS_FDC_ZK", class: "", switch: true },
  509. // { code: "QS_FDC_ZK", class: "", switch: true },
  510. // ],
  511. [
  512. {
  513. code: "SBQ_FDC_SC",
  514. class: "",
  515. switch: true,
  516. },
  517. {
  518. code: "NSS_FDC_SC",
  519. class: "",
  520. switch: true,
  521. },
  522. ],
  523. [
  524. {
  525. code: "QS_FDC_SC",
  526. class: "",
  527. switch: true,
  528. },
  529. {
  530. code: "MHS_FDC_SC",
  531. class: "",
  532. switch: true,
  533. },
  534. ],
  535. [
  536. {
  537. code: "XS_FDC_SC",
  538. class: "",
  539. switch: true,
  540. },
  541. {
  542. code: "PL_GDC_SC",
  543. class: "",
  544. switch: true,
  545. },
  546. ],
  547. ],
  548. videoArray: [
  549. [
  550. {
  551. url: "http://192.168.10.10:9984/ws.html",
  552. token: "?token=SBQ_FDC_SC&autoplay=true",
  553. class: "",
  554. switch: true,
  555. },
  556. {
  557. url: "http://192.168.10.10:9984/ws.html",
  558. token: "?token=NSS_FDC_SC&autoplay=true",
  559. class: "",
  560. switch: true,
  561. },
  562. ],
  563. [
  564. {
  565. url: "http://192.168.10.10:9984/ws.html",
  566. token: "?token=QS_FDC_SC&autoplay=true",
  567. class: "",
  568. switch: true,
  569. },
  570. {
  571. url: "http://192.168.10.10:9984/ws.html",
  572. token: "?token=MHS_FDC_SC&autoplay=true",
  573. class: "",
  574. switch: true,
  575. },
  576. ],
  577. [
  578. {
  579. url: "http://192.168.10.10:9984/ws.html",
  580. token: "?token=XS_FDC_SC&autoplay=true",
  581. class: "",
  582. switch: true,
  583. },
  584. {
  585. url: "http://192.168.10.10:9984/ws.html",
  586. token: "?token=PL_GDC_SC&autoplay=true",
  587. class: "",
  588. switch: true,
  589. },
  590. ],
  591. ],
  592. showVideoDialog: false,
  593. dialogVideoUrl: "",
  594. warnChartDataZC: dataJson.data.warnChartData,
  595. warnChartDataLH: dataJson.data.warnChartData,
  596. probChartDataZC: dataJson.data.probChartData,
  597. probChartDataLH: dataJson.data.probChartData,
  598. probChartData: dataJson.data.probChartData,
  599. bjChartData: [],
  600. ForecastPower: [
  601. {
  602. name: "今日预测电量",
  603. value: 103.62,
  604. total: 150,
  605. },
  606. {
  607. name: "月预测发电量",
  608. value: 98.62,
  609. total: 100,
  610. },
  611. ],
  612. workDataIndex: 0,
  613. workData: {
  614. column: [
  615. {
  616. name: "人员",
  617. field: "laborname",
  618. is_num: false,
  619. is_light: false,
  620. click(e, row) {
  621. that.changePeople(row.index);
  622. },
  623. },
  624. {
  625. name: "职务",
  626. field: "jobcode",
  627. is_num: false,
  628. is_light: false,
  629. click(e, row) {
  630. that.changePeople(row.index);
  631. },
  632. },
  633. {
  634. name: "开始时间",
  635. field: "starttime",
  636. width: "150px",
  637. is_num: false,
  638. is_light: false,
  639. click(e, row) {
  640. that.changePeople(row.index);
  641. },
  642. },
  643. {
  644. name: "原因",
  645. field: "problem",
  646. is_num: false,
  647. is_light: false,
  648. click(e, row) {
  649. that.changePeople(row.index);
  650. },
  651. },
  652. ],
  653. data: [],
  654. },
  655. selsZC: {
  656. column: [
  657. {
  658. name: "机组",
  659. field: "code",
  660. width: "60px",
  661. },
  662. {
  663. name: "停机时长(h)",
  664. field: "selsTime",
  665. },
  666. {
  667. name: "状态",
  668. field: "isCloseName",
  669. width: "60px",
  670. },
  671. ],
  672. data: dataJson.data.sels.data,
  673. },
  674. selsLH: {
  675. column: [
  676. {
  677. name: "机组",
  678. field: "code",
  679. width: "60px",
  680. },
  681. {
  682. name: "停机时长(h)",
  683. field: "selsTime",
  684. },
  685. {
  686. name: "状态",
  687. field: "isCloseName",
  688. width: "60px",
  689. },
  690. ],
  691. data: dataJson.data.sels.data,
  692. },
  693. rmls: {
  694. column: [
  695. {
  696. // name: "风机编号",
  697. name: "机组",
  698. field: "code",
  699. width: "60px",
  700. },
  701. {
  702. // name: "推荐时间",
  703. name: "报警时间",
  704. field: "rmlsTime",
  705. },
  706. {
  707. // name: "类型",
  708. name: "状态",
  709. // field: "operation",
  710. field: "isCloseName",
  711. width: "60px",
  712. },
  713. ],
  714. data: [],
  715. },
  716. tableHeader: [
  717. {
  718. name: "机组",
  719. code: "code",
  720. },
  721. {
  722. name: "停机开始时间",
  723. code: "stopTime",
  724. },
  725. {
  726. name: "停机恢复时间",
  727. code: "startTime",
  728. },
  729. {
  730. name: "停机时长",
  731. code: "stopHours",
  732. },
  733. {
  734. name: "故障信息",
  735. code: "faultView",
  736. },
  737. // {
  738. // name: "当前状态",
  739. // code: "status"
  740. // }
  741. ],
  742. tableData: [
  743. {
  744. code: "1001",
  745. startTime: "2024-12-31 09:00",
  746. endTime: "2024-12-31 18:00",
  747. selsTime: "8.0",
  748. message: "电气故障,机械故障",
  749. status: "正常",
  750. },
  751. ],
  752. timmer: null, // 定时器开关
  753. isFullScreen: false,
  754. };
  755. },
  756. // 函数
  757. methods: {
  758. init(res) {
  759. let that = this;
  760. // 72小时功率曲线
  761. if (res.dataL) {
  762. let xAxis = [];
  763. let seriesSpeed = [];
  764. let seriesGl = [];
  765. res.dataL.forEach((it) => {
  766. xAxis.push(dayjs(it.stoptime).format("MM-DD HH:mm"));
  767. seriesSpeed.push(it.times);
  768. seriesGl.push(it.hours);
  769. });
  770. const powerMin = Math.min(...seriesSpeed);
  771. const powerMax =
  772. Math.max(...seriesSpeed) < 5 ? 5 : Math.max(...seriesSpeed);
  773. const windSpeedMin = Math.min(...seriesGl);
  774. const windSpeedMax = this.getHourSetp(Math.max(...seriesGl));
  775. const splitNumber = 5;
  776. let series = [
  777. {
  778. name: "故障次数",
  779. data: seriesSpeed,
  780. type: "line",
  781. symbol: "none",
  782. },
  783. {
  784. name: "故障时长",
  785. data: seriesGl,
  786. yAxisIndex: 1,
  787. type: "line",
  788. symbol: "none",
  789. },
  790. ];
  791. that.getPowerLine(
  792. xAxis,
  793. series,
  794. "problem1",
  795. powerMin,
  796. powerMax,
  797. windSpeedMin,
  798. windSpeedMax,
  799. splitNumber
  800. );
  801. }
  802. if (res.dataR) {
  803. let xAxis = [];
  804. let seriesSpeed = [];
  805. let seriesGl = [];
  806. res.dataR.forEach((it) => {
  807. xAxis.push(dayjs(it.stoptime).format("MM-DD HH:mm"));
  808. seriesSpeed.push(it.times);
  809. seriesGl.push(it.hours);
  810. });
  811. const powerMin = Math.min(...seriesSpeed);
  812. const powerMax =
  813. Math.max(...seriesSpeed) < 5 ? 5 : Math.max(...seriesSpeed);
  814. const windSpeedMin = Math.min(...seriesGl);
  815. const windSpeedMax =
  816. Math.max(...seriesGl) < 0.5 ? 0.5 : Math.max(...seriesGl);
  817. const splitNumber = 5;
  818. let series = [
  819. {
  820. name: "故障次数",
  821. data: seriesSpeed,
  822. type: "line",
  823. symbol: "none",
  824. },
  825. {
  826. name: "故障时长",
  827. data: seriesGl,
  828. yAxisIndex: 1,
  829. type: "line",
  830. symbol: "none",
  831. },
  832. ];
  833. that.getPowerLine2(
  834. xAxis,
  835. series,
  836. "problem2",
  837. powerMin,
  838. powerMax,
  839. windSpeedMin,
  840. windSpeedMax,
  841. splitNumber
  842. );
  843. }
  844. },
  845. getDataInfo() {
  846. let that = this;
  847. that.radioTime = [
  848. dayjs().startOf("month").format("YYYY-MM-DD HH:mm:ss"),
  849. dayjs().format("YYYY-MM-DD HH:mm:ss"),
  850. ];
  851. that.getShutDownevenList(
  852. !this.bjSwitch ? "gz" : "wh",
  853. "WT2000D121H85",
  854. 5
  855. );
  856. that.getShutDownevenList(!this.bjSwitch2 ? "gz" : "wh", "UP2000-130", 5);
  857. that.getFindCtFeature("WT2000D121H85", this.warnSwitch);
  858. that.getFindCtFeature("UP2000-130", this.warnSwitch2);
  859. that.getShutDownEvent("WT2000D121H85", this.probSwitch);
  860. that.getShutDownEvent("UP2000-130", this.probSwitch2);
  861. that.getShutdownEventByDay("WT2000D121H85", that.radioTime);
  862. that.getShutdownEventByDay("UP2000-130", that.radioTime);
  863. },
  864. changeRadio(val) {
  865. if (val === 1) {
  866. if (this.noTimeType === "WT2000D121H85") {
  867. this.getShutdownEventByDay("WT2000D121H85", this.radioTime, "Dia");
  868. this.getShutdownEventByMap("WT2000D121H85", this.radioTime);
  869. } else {
  870. this.getShutdownEventByDay("UP2000-130", this.radioTime, "Dia");
  871. this.getShutdownEventByMap("UP2000-130", this.radioTime);
  872. }
  873. } else {
  874. if (this.noTimeType === "WT2000D121H85") {
  875. this.getShutdownEventByMonth("WT2000D121H85", this.radioTime);
  876. this.getShutdownEventByMap("WT2000D121H85", this.radioTime);
  877. } else {
  878. this.getShutdownEventByMonth("UP2000-130", this.radioTime);
  879. this.getShutdownEventByMap("UP2000-130", this.radioTime);
  880. }
  881. }
  882. },
  883. //获取停机表格信息
  884. getShutDownevenList(types, modelIds, size) {
  885. let that = this;
  886. let params = {
  887. wpId: "NX_FGS_HA_FDC_STA",
  888. modelId: modelIds,
  889. begin: dayjs().subtract(1, "month").format("YYYY-MM-DD HH:mm:ss"),
  890. end: dayjs().format("YYYY-MM-DD HH:mm:ss"),
  891. pageNum: 1,
  892. pageSize: size,
  893. type: types,
  894. };
  895. apiGetqueryshutdowneventlist(params).then((res) => {
  896. if (res && res.data) {
  897. if (size === 5) {
  898. let result = [];
  899. res.data.result.forEach((it) => {
  900. let obj = {
  901. code: it.code,
  902. selsTime: it.stopHours,
  903. isCloseName: types === "gz" ? "故障" : "检修",
  904. };
  905. result.push(obj);
  906. });
  907. if (modelIds === "WT2000D121H85") {
  908. that.selsZC.data = result;
  909. } else {
  910. that.selsLH.data = result;
  911. }
  912. } else {
  913. res.data.result.forEach((it) => {
  914. it.status = types === "gz" ? "故障" : "检修";
  915. it.startTime = dayjs(it.startTime).format("YYYY-MM-DD HH:mm:ss");
  916. it.stopTime = dayjs(it.stopTime).format("YYYY-MM-DD HH:mm:ss");
  917. });
  918. res.data.result.sort((a, b) => {
  919. return (
  920. new Date(b.startTime).getTime() -
  921. new Date(a.startTime).getTime()
  922. );
  923. });
  924. that.tableData = res.data.result;
  925. }
  926. }
  927. });
  928. },
  929. //获取预警统计
  930. getFindCtFeature(modelIds, dateType) {
  931. let that = this;
  932. let date = "";
  933. if (dateType === "z") {
  934. date = dayjs().subtract(1, "week").format("YYYY-MM-DD HH:mm:ss");
  935. } else if (dateType === "y") {
  936. // date = dayjs().subtract(1, "month").format("YYYY-MM-DD HH:mm:ss");
  937. date = dayjs().startOf("month").format("YYYY-MM-DD HH:mm:ss");
  938. } else if (dateType === "n") {
  939. date = dayjs().subtract(1, "year").format("YYYY-MM-DD HH:mm:ss");
  940. } else {
  941. // date = dayjs().subtract(1, "month").format("YYYY-MM-DD HH:mm:ss");
  942. date = dayjs().startOf("month").format("YYYY-MM-DD HH:mm:ss");
  943. }
  944. let params = {
  945. stationid: "NX_FGS_HA_FDC_STA",
  946. modelId: modelIds,
  947. begin: date,
  948. end: dayjs().format("YYYY-MM-DD HH:mm:ss"),
  949. deviceType: "windturbine",
  950. };
  951. apiGetfindCtFeatureStat(params).then((res) => {
  952. if (res) {
  953. let result = [];
  954. res.forEach((it) => {
  955. let value =
  956. modelIds === "WT2000D121H85"
  957. ? that.warnPC
  958. ? it.total
  959. : it.totalSeconds
  960. : that.warnPC2
  961. ? it.total
  962. : it.totalSeconds;
  963. let obj = {
  964. name: "",
  965. value: "",
  966. };
  967. if (value !== 0) {
  968. obj = {
  969. name: it.typeName,
  970. value: value,
  971. };
  972. result.push(obj);
  973. }
  974. });
  975. if (modelIds === "WT2000D121H85") {
  976. that.warnChartDataZC = result;
  977. } else {
  978. that.warnChartDataLH = result;
  979. }
  980. }
  981. });
  982. },
  983. //获取故障统计
  984. getShutDownEvent(modelIds, dateType) {
  985. let that = this;
  986. let date = "";
  987. if (dateType === "z") {
  988. date = dayjs().subtract(1, "week").format("YYYY-MM-DD HH:mm:ss");
  989. } else if (dateType === "y") {
  990. date = dayjs().startOf("month").format("YYYY-MM-DD HH:mm:ss");
  991. } else if (dateType === "n") {
  992. date = dayjs().subtract(1, "year").format("YYYY-MM-DD HH:mm:ss");
  993. } else {
  994. date = dayjs().startOf("month").format("YYYY-MM-DD HH:mm:ss");
  995. }
  996. let params = {
  997. wpId: "NX_FGS_HA_FDC_STA",
  998. modelId: modelIds,
  999. begin: date,
  1000. end: dayjs().format("YYYY-MM-DD HH:mm:ss"),
  1001. };
  1002. apiGetqueryShutdownEvent2ByType(params).then((res) => {
  1003. if (res && res.data) {
  1004. let result = [];
  1005. res.data.forEach((it) => {
  1006. let value =
  1007. modelIds === "WT2000D121H85"
  1008. ? that.probPC
  1009. ? it.times
  1010. : it.hours
  1011. ? it.hours
  1012. : 0
  1013. : that.probPC2
  1014. ? it.times
  1015. : it.hours
  1016. ? it.hours
  1017. : 0;
  1018. let obj = {
  1019. name: "",
  1020. value: "",
  1021. };
  1022. if (value !== 0) {
  1023. obj = {
  1024. name: it.name,
  1025. value: value,
  1026. };
  1027. result.push(obj);
  1028. }
  1029. // let obj = {
  1030. // name: it.name,
  1031. // value:
  1032. // modelIds === "WT2000D121H85"
  1033. // ? that.probPC
  1034. // ? it.times
  1035. // : it.hours
  1036. // ? it.hours
  1037. // : 0
  1038. // : that.probPC2
  1039. // ? it.times
  1040. // : it.hours
  1041. // ? it.hours
  1042. // : 0,
  1043. // };
  1044. // result.push(obj);
  1045. });
  1046. if (modelIds === "WT2000D121H85") {
  1047. that.probChartDataZC = result;
  1048. } else {
  1049. that.probChartDataLH = result;
  1050. }
  1051. }
  1052. });
  1053. },
  1054. //获取故障次数时长----日
  1055. getShutdownEventByDay(modelIds, dates, type) {
  1056. let that = this;
  1057. let params = {
  1058. wpId: "NX_FGS_HA_FDC_STA",
  1059. modelId: modelIds,
  1060. begin: dates[0],
  1061. end: dates[1],
  1062. };
  1063. apiGetqueryShutdownEvent2ByDay(params).then((res) => {
  1064. if (res && res.data) {
  1065. let xAxis = [];
  1066. let seriesSpeed = [];
  1067. let seriesGl = [];
  1068. res.data.forEach((it) => {
  1069. xAxis.push(it.stoptime);
  1070. seriesSpeed.push(it.times);
  1071. seriesGl.push(it.hours);
  1072. });
  1073. let series = [
  1074. {
  1075. name: "故障次数",
  1076. data: seriesSpeed,
  1077. type: "line",
  1078. symbol: "none",
  1079. },
  1080. {
  1081. name: "故障时长",
  1082. data: seriesGl,
  1083. yAxisIndex: 1,
  1084. type: "line",
  1085. symbol: "none",
  1086. },
  1087. ];
  1088. const powerMin = Math.min(...seriesSpeed);
  1089. const powerMax =
  1090. Math.max(...seriesSpeed) < 5 ? 5 : Math.max(...seriesSpeed);
  1091. const windSpeedMin = Math.min(...seriesGl);
  1092. const windSpeedMax = this.getHourSetp(Math.max(...seriesGl));
  1093. const splitNumber = 5;
  1094. if (modelIds === "WT2000D121H85") {
  1095. if (type === "Dia") {
  1096. that.problem3 = {
  1097. xAxis: xAxis,
  1098. series: series,
  1099. };
  1100. } else {
  1101. that.getPowerLine(
  1102. xAxis,
  1103. series,
  1104. "problem1",
  1105. powerMin,
  1106. powerMax,
  1107. windSpeedMin,
  1108. windSpeedMax,
  1109. splitNumber
  1110. );
  1111. }
  1112. } else {
  1113. if (type === "Dia") {
  1114. that.problem3 = {
  1115. xAxis: xAxis,
  1116. series: series,
  1117. };
  1118. } else {
  1119. that.getPowerLine2(
  1120. xAxis,
  1121. series,
  1122. "problem2",
  1123. powerMin,
  1124. powerMax,
  1125. windSpeedMin,
  1126. windSpeedMax,
  1127. splitNumber
  1128. );
  1129. }
  1130. }
  1131. }
  1132. });
  1133. },
  1134. getHourSetp(value) {
  1135. if (value < 1) {
  1136. return 1;
  1137. } else if (value < 5) {
  1138. return 5;
  1139. } else if (value < 10) {
  1140. return value;
  1141. } else {
  1142. return parseInt(value);
  1143. }
  1144. },
  1145. getShutdownEventByMonth(modelIds, dates) {
  1146. let that = this;
  1147. let params = {
  1148. wpId: "NX_FGS_HA_FDC_STA",
  1149. modelId: modelIds,
  1150. begin: dates[0],
  1151. end: dates[1],
  1152. };
  1153. apiGetqueryShutdownEvent2ByMonth(params).then((res) => {
  1154. if (res && res.data) {
  1155. let xAxis = [];
  1156. let seriesSpeed = [];
  1157. let seriesGl = [];
  1158. res.data.forEach((it) => {
  1159. xAxis.push(it.stoptime);
  1160. seriesSpeed.push(it.times);
  1161. seriesGl.push(it.hours);
  1162. });
  1163. let series = [
  1164. {
  1165. name: "故障次数",
  1166. data: seriesSpeed,
  1167. type: "line",
  1168. symbol: "none",
  1169. },
  1170. {
  1171. name: "故障时长",
  1172. data: seriesGl,
  1173. yAxisIndex: 1,
  1174. type: "line",
  1175. symbol: "none",
  1176. },
  1177. ];
  1178. if (modelIds === "WT2000D121H85") {
  1179. that.problem3 = {
  1180. xAxis: xAxis,
  1181. series: series,
  1182. };
  1183. } else {
  1184. that.problem3 = {
  1185. xAxis: xAxis,
  1186. series: series,
  1187. };
  1188. }
  1189. }
  1190. });
  1191. },
  1192. getShutdownEventByMap(modelIds, dates) {
  1193. let that = this;
  1194. let params = {
  1195. wpId: "NX_FGS_HA_FDC_STA",
  1196. modelId: modelIds,
  1197. begin: dates[0],
  1198. end: dates[1],
  1199. };
  1200. apiGetqueryShutdownEvent2ByMap(params).then((res) => {
  1201. if (res && res.data) {
  1202. let result = [];
  1203. for (let i in res.data) {
  1204. res.data[i].forEach((it) => {
  1205. let obj = {
  1206. name: it.name,
  1207. value: it.times,
  1208. };
  1209. result.push(obj);
  1210. });
  1211. }
  1212. if (modelIds === "WT2000D121H85") {
  1213. that.probChartData = result;
  1214. } else {
  1215. that.probChartData = result;
  1216. }
  1217. }
  1218. });
  1219. },
  1220. getPowerLine(
  1221. xAxis,
  1222. series,
  1223. name,
  1224. powerMin,
  1225. powerMax,
  1226. windSpeedMin,
  1227. windSpeedMax,
  1228. splitNumber
  1229. ) {
  1230. let myChart;
  1231. let legendState = {};
  1232. if (this.problem1?.getOption) {
  1233. legendState = this.problem1.getOption().legend[0].selected;
  1234. }
  1235. let option = {
  1236. title: {
  1237. text: "故障次数时长(中车)",
  1238. left: "5px",
  1239. top: "5px",
  1240. textStyle: {
  1241. fontSize: "16",
  1242. fontWeight: 400,
  1243. color: "#fff",
  1244. },
  1245. },
  1246. tooltip: {
  1247. trigger: "axis",
  1248. },
  1249. color: ["#7981AF", "#1C99FF", "#E57F25", "#f25656"],
  1250. legend: {
  1251. right: "25",
  1252. top: "5",
  1253. itemWidth: 5,
  1254. itemHeight: 5,
  1255. data: ["故障次数", "故障时长"],
  1256. textStyle: {
  1257. color: "#fff",
  1258. },
  1259. selected: legendState,
  1260. },
  1261. grid: {
  1262. left: "3%",
  1263. right: "5%",
  1264. bottom: "5%",
  1265. height: "110px",
  1266. containLabel: true,
  1267. },
  1268. xAxis: {
  1269. type: "category",
  1270. boundaryGap: false,
  1271. data: xAxis,
  1272. axisLine: {
  1273. lineStyle: {
  1274. color: "#fff", // 修改为需要的颜色
  1275. },
  1276. },
  1277. },
  1278. yAxis: [
  1279. {
  1280. type: "value",
  1281. min: powerMin,
  1282. max: powerMax, // 动态设置最大值
  1283. interval: parseFloat(
  1284. ((powerMax - powerMin) / splitNumber).toFixed(4)
  1285. ),
  1286. splitNumber,
  1287. splitLine: {
  1288. lineStyle: {
  1289. color: "#ccc",
  1290. type: "dashed", // 修改为虚线
  1291. opacity: 0.2,
  1292. },
  1293. },
  1294. name: "单位:次",
  1295. nameLocation: "end",
  1296. axisLine: {
  1297. lineStyle: {
  1298. color: "#fff",
  1299. },
  1300. },
  1301. axisLabel: {
  1302. formatter(value) {
  1303. return parseInt(value);
  1304. },
  1305. },
  1306. },
  1307. {
  1308. type: "value",
  1309. min: windSpeedMin,
  1310. max: windSpeedMax,
  1311. interval: parseFloat(
  1312. ((windSpeedMax - windSpeedMin) / splitNumber).toFixed(4)
  1313. ),
  1314. splitNumber,
  1315. splitLine: {
  1316. lineStyle: {
  1317. color: "#ccc",
  1318. type: "dashed", // 修改为虚线
  1319. opacity: 0.2,
  1320. },
  1321. },
  1322. name: "单位:h",
  1323. axisLine: {
  1324. lineStyle: {
  1325. color: "#fff",
  1326. },
  1327. },
  1328. axisLabel: {
  1329. formatter(value) {
  1330. return parseFloat(value.toFixed(1));
  1331. },
  1332. },
  1333. },
  1334. ],
  1335. series: series,
  1336. };
  1337. // 基于准备好的dom,初始化echarts实例
  1338. let dom = document.getElementById(name);
  1339. dom && dom.removeAttribute("_echarts_instance_");
  1340. myChart = this.$echarts.init(dom);
  1341. this.problem1 = myChart;
  1342. myChart.setOption(option);
  1343. window.addEventListener("resize", () => {
  1344. myChart.resize();
  1345. });
  1346. },
  1347. getPowerLine2(
  1348. xAxis,
  1349. series,
  1350. name,
  1351. powerMin,
  1352. powerMax,
  1353. windSpeedMin,
  1354. windSpeedMax,
  1355. splitNumber
  1356. ) {
  1357. let myChart;
  1358. let legendState = {};
  1359. if (this.problem2?.getOption) {
  1360. legendState = this.problem2.getOption().legend[0].selected;
  1361. }
  1362. let option = {
  1363. title: {
  1364. text: "故障次数时长(联合动力)",
  1365. left: "5px",
  1366. top: "5px",
  1367. textStyle: {
  1368. fontSize: "16",
  1369. fontWeight: 400,
  1370. color: "#fff",
  1371. },
  1372. },
  1373. tooltip: {
  1374. trigger: "axis",
  1375. },
  1376. color: ["#7981AF", "#1C99FF", "#E57F25", "#f25656"],
  1377. legend: {
  1378. right: "25",
  1379. top: "5",
  1380. itemWidth: 5,
  1381. itemHeight: 5,
  1382. data: ["故障次数", "故障时长"],
  1383. textStyle: {
  1384. color: "#fff",
  1385. },
  1386. selected: legendState,
  1387. },
  1388. grid: {
  1389. left: "3%",
  1390. right: "5%",
  1391. bottom: "5%",
  1392. height: "110px",
  1393. containLabel: true,
  1394. },
  1395. xAxis: {
  1396. type: "category",
  1397. boundaryGap: false,
  1398. data: xAxis,
  1399. axisLine: {
  1400. lineStyle: {
  1401. color: "#fff", // 修改为需要的颜色
  1402. },
  1403. },
  1404. },
  1405. yAxis: [
  1406. {
  1407. type: "value",
  1408. min: powerMin,
  1409. max: powerMax, // 动态设置最大值
  1410. interval: parseFloat(
  1411. ((powerMax - powerMin) / splitNumber).toFixed(4)
  1412. ),
  1413. splitNumber,
  1414. splitLine: {
  1415. lineStyle: {
  1416. color: "#ccc",
  1417. type: "dashed", // 修改为虚线
  1418. opacity: 0.2,
  1419. },
  1420. },
  1421. name: "单位:次",
  1422. axisLine: {
  1423. lineStyle: {
  1424. color: "#fff",
  1425. },
  1426. },
  1427. axisLabel: {
  1428. formatter(value) {
  1429. return parseInt(value);
  1430. },
  1431. },
  1432. },
  1433. {
  1434. type: "value",
  1435. min: windSpeedMin,
  1436. max: windSpeedMax,
  1437. interval: parseFloat(
  1438. ((windSpeedMax - windSpeedMin) / splitNumber).toFixed(4)
  1439. ),
  1440. splitNumber,
  1441. splitLine: {
  1442. lineStyle: {
  1443. color: "#ccc",
  1444. type: "dashed", // 修改为虚线
  1445. opacity: 0.2,
  1446. },
  1447. },
  1448. name: "单位:h",
  1449. axisLine: {
  1450. lineStyle: {
  1451. color: "#fff",
  1452. },
  1453. },
  1454. axisLabel: {
  1455. formatter(value) {
  1456. return parseFloat(value.toFixed(1));
  1457. },
  1458. },
  1459. },
  1460. ],
  1461. series: series,
  1462. };
  1463. // 基于准备好的dom,初始化echarts实例
  1464. let dom = document.getElementById(name);
  1465. dom && dom.removeAttribute("_echarts_instance_");
  1466. myChart = this.$echarts.init(dom);
  1467. this.problem2 = myChart;
  1468. myChart.setOption(option);
  1469. window.addEventListener("resize", () => {
  1470. myChart.resize();
  1471. });
  1472. },
  1473. clickStopRow(type) {
  1474. this.showTableDialog = true;
  1475. if (type === "left") {
  1476. if (!this.bjSwitch) {
  1477. this.getShutDownevenList("gz", "WT2000D121H85", 100);
  1478. } else {
  1479. this.getShutDownevenList("wh", "WT2000D121H85", 100);
  1480. }
  1481. } else {
  1482. if (!this.bjSwitch2) {
  1483. this.getShutDownevenList("gz", "UP2000-130", 100);
  1484. } else {
  1485. this.getShutDownevenList("wh", "UP2000-130", 100);
  1486. }
  1487. }
  1488. },
  1489. changeBjSwitch(type) {
  1490. if (type === "left") {
  1491. this.bjSwitch = !this.bjSwitch;
  1492. if (!this.bjSwitch) {
  1493. this.getShutDownevenList("gz", "WT2000D121H85", 5);
  1494. } else {
  1495. this.getShutDownevenList("wh", "WT2000D121H85", 5);
  1496. }
  1497. } else {
  1498. this.bjSwitch2 = !this.bjSwitch2;
  1499. if (!this.bjSwitch2) {
  1500. this.getShutDownevenList("gz", "UP2000-130", 5);
  1501. } else {
  1502. this.getShutDownevenList("wh", "UP2000-130", 5);
  1503. }
  1504. }
  1505. },
  1506. changeWarnSwitch(val) {
  1507. this.warnSwitch = val;
  1508. this.getFindCtFeature("WT2000D121H85", val);
  1509. },
  1510. changeWarnSwitch2(val) {
  1511. this.warnSwitch2 = val;
  1512. this.getFindCtFeature("UP2000-130", val);
  1513. },
  1514. changeProbSwitch(val) {
  1515. this.probSwitch = val;
  1516. this.getShutDownEvent("WT2000D121H85", val);
  1517. },
  1518. changeProbSwitch2(val) {
  1519. this.probSwitch2 = val;
  1520. this.getShutDownEvent("UP2000-130", val);
  1521. },
  1522. changeProbPC(type) {
  1523. if (type === "left") {
  1524. this.probPC = !this.probPC;
  1525. this.getShutDownEvent("WT2000D121H85", this.probSwitch);
  1526. } else {
  1527. this.probPC2 = !this.probPC2;
  1528. this.getShutDownEvent("UP2000-130", this.probSwitch2);
  1529. }
  1530. },
  1531. changeWarnPC(type) {
  1532. if (type === "left") {
  1533. this.warnPC = !this.warnPC;
  1534. this.getFindCtFeature("WT2000D121H85", this.warnSwitch);
  1535. } else {
  1536. this.warnPC2 = !this.warnPC2;
  1537. this.getFindCtFeature("UP2000-130", this.warnSwitch2);
  1538. }
  1539. },
  1540. clickTime(type) {
  1541. let res = jsonData;
  1542. this.noTimeDialog = true;
  1543. this.noTimeType = type;
  1544. let that = this;
  1545. // 72小时功率曲线
  1546. if (res.data["72time"] && res.data["72time"].length > 0) {
  1547. let xAxis = [];
  1548. let seriesSpeed = [];
  1549. let seriesGl = [];
  1550. res.data["72time"].forEach((it) => {
  1551. xAxis.push(dayjs(it.time).format("MM-DD HH:mm"));
  1552. seriesSpeed.push(it.speed);
  1553. seriesGl.push(it.expectedpower);
  1554. });
  1555. let series = [
  1556. {
  1557. name: "故障次数",
  1558. data: seriesSpeed,
  1559. type: "line",
  1560. symbol: "none",
  1561. },
  1562. {
  1563. name: "故障时长",
  1564. data: seriesGl,
  1565. yAxisIndex: 1,
  1566. type: "line",
  1567. symbol: "none",
  1568. },
  1569. ];
  1570. this.problem3 = {
  1571. xAxis: xAxis,
  1572. series: series,
  1573. };
  1574. }
  1575. if (type === "left") {
  1576. that.getShutdownEventByDay("WT2000D121H85", that.radioTime, "Dia");
  1577. that.getShutdownEventByMap("WT2000D121H85", that.radioTime);
  1578. } else {
  1579. that.getShutdownEventByDay("UP2000-130", that.radioTime, "Dia");
  1580. that.getShutdownEventByMap("UP2000-130", that.radioTime);
  1581. }
  1582. },
  1583. // 获取历史记录表
  1584. async getAlarmHistoryt(params, type) {
  1585. if (type === "history") {
  1586. (params.alarmType = "windturbine"),
  1587. (params.stationid = "NX_FGS_HA_FDC_STA"),
  1588. (params.deviceid = "");
  1589. } else {
  1590. (params.alarmType = "custom"),
  1591. (params.stationid = "NX_FGS_HA_FDC_STA"),
  1592. (params.deviceid = ""),
  1593. (params.deviceType = "windturbine");
  1594. }
  1595. const { data } = await alarm_history(params);
  1596. if (data) {
  1597. if (type === "history") {
  1598. data?.ls?.forEach((ele) => {
  1599. ele.isCloseName = ele.endts ? "已解除" : "未解除";
  1600. ele.rmlsTime = ele.ts > 0 ? this.formatTime(ele.ts) : "--";
  1601. });
  1602. this.rmls.data = data?.ls;
  1603. } else {
  1604. data?.ls?.forEach((ele) => {
  1605. ele.isCloseName = ele.endts ? "已解除" : "未解除";
  1606. ele.selsTime = ele.ts > 0 ? this.formatTime(ele.ts) : "--";
  1607. });
  1608. this.sels.data = data?.ls;
  1609. }
  1610. } else {
  1611. this.sels.data = dataJson.data.sels.data;
  1612. this.warnChartData = dataJson.data.warnChartData;
  1613. this.probChartData = dataJson.data.probChartData;
  1614. }
  1615. },
  1616. // 时间格式化
  1617. formatTime(val) {
  1618. return dayjs(val).format("YYYY-MM-DD HH:mm:ss");
  1619. },
  1620. // 获取中部地图数据
  1621. getWpHealthInfo() {
  1622. let that = this;
  1623. that.API.requestData({
  1624. method: "POST",
  1625. subUrl: "sandtable/judgeWpHealth",
  1626. data: {
  1627. wpId: that.wpId,
  1628. },
  1629. success(res) {
  1630. that.mapSource = res.data;
  1631. },
  1632. });
  1633. },
  1634. // 获取报警玫瑰图
  1635. getWarnMGT() {
  1636. let that = this;
  1637. that.API.requestData({
  1638. method: "GET",
  1639. baseURL: "http://192.168.1.82:8075/",
  1640. subUrl: "alarm/count/query/alltotal",
  1641. data: {
  1642. stationid: that.wpId,
  1643. },
  1644. success(res) {
  1645. let warnChartData = [];
  1646. for (let key in res.data) {
  1647. const ele = res.data[key];
  1648. warnChartData.push({
  1649. value: ele.count,
  1650. name: ele.relatePartsText,
  1651. });
  1652. }
  1653. that.warnChartData = warnChartData;
  1654. },
  1655. });
  1656. },
  1657. // 获取故障玫瑰图
  1658. getStopMGT() {
  1659. let that = this;
  1660. that.API.requestData({
  1661. method: "GET",
  1662. baseURL: "http://192.168.1.82:8075/",
  1663. subUrl: "shutdown/count/alltotal",
  1664. data: {
  1665. stId: that.wpId,
  1666. },
  1667. success(res) {
  1668. let warnChartData = [];
  1669. for (let key in res.data) {
  1670. const ele = res.data[key];
  1671. warnChartData.push({
  1672. value: ele.count,
  1673. name: ele.type,
  1674. });
  1675. }
  1676. that.warnChartData = warnChartData;
  1677. },
  1678. });
  1679. },
  1680. // 获取库存玫瑰图
  1681. getRepertoryMGT() {
  1682. let that = this;
  1683. that.API.requestData({
  1684. method: "GET",
  1685. baseURL: "http://10.155.32.4:9988/",
  1686. subUrl: "inventory/groupcount",
  1687. data: {
  1688. stId: that.wpId,
  1689. },
  1690. success(res) {
  1691. let bjChartData = [];
  1692. for (let key in res.data) {
  1693. const ele = res.data[key];
  1694. bjChartData.push({
  1695. value: ele.curbal,
  1696. name: ele.description,
  1697. });
  1698. }
  1699. that.bjChartData = bjChartData;
  1700. },
  1701. });
  1702. },
  1703. // 获取记录玫瑰图
  1704. getRecordMGT() {
  1705. let that = this;
  1706. that.API.requestData({
  1707. method: "GET",
  1708. baseURL: "http://10.155.32.4:9988/",
  1709. subUrl: "equoperationrecord/equupdatecount",
  1710. data: {
  1711. stId: that.wpId,
  1712. },
  1713. success(res) {
  1714. let bjChartData = [];
  1715. for (let key in res.data) {
  1716. const ele = res.data[key];
  1717. bjChartData.push({
  1718. value: ele.count,
  1719. name: ele.description,
  1720. });
  1721. }
  1722. that.bjChartData = bjChartData;
  1723. },
  1724. });
  1725. },
  1726. // 获取中部地图数据
  1727. getTop4Info() {
  1728. let that = this;
  1729. that.API.requestData({
  1730. method: "GET",
  1731. baseURL: "http://10.155.32.4:9988/",
  1732. subUrl: "equoperationrecord/top4",
  1733. data: {
  1734. stId: that.wpId,
  1735. },
  1736. success(res) {
  1737. res.data.forEach((ele, index) => {
  1738. ele.index = index;
  1739. ele.jobcode = ele.jobcode || "------";
  1740. });
  1741. that.workData.data = res.data;
  1742. },
  1743. });
  1744. },
  1745. // 获取主要指标
  1746. getWpMainInfo() {
  1747. let that = this;
  1748. that.API.requestData({
  1749. method: "GET",
  1750. baseURL: "http://10.155.32.4:8034/",
  1751. subUrl: "benchmark/zyzb",
  1752. data: {
  1753. windPowerStation: that.wpId,
  1754. },
  1755. success(res) {
  1756. that.mainInfo = res.data;
  1757. that.showMainInfoDialog = true;
  1758. },
  1759. });
  1760. },
  1761. // 切换人员展示
  1762. changePeople(index) {
  1763. if (!this.peopleAnmLock && this.workDataIndex !== index) {
  1764. this.peopleAnmLock = true;
  1765. this.peopleClass = "fadeOutRight";
  1766. setTimeout(() => {
  1767. this.workDataIndex = index;
  1768. this.peopleClass = "fadeInRight";
  1769. this.peopleAnmLock = false;
  1770. }, 150);
  1771. }
  1772. },
  1773. // 点击风场或者光伏
  1774. clickMapItem(videoArray, wpId) {
  1775. this.wpId = wpId;
  1776. // this.videoArray.forEach((pEle, pIndex) => {
  1777. // pEle.forEach((cEle, cIndex) => {
  1778. // setTimeout(() => {
  1779. // // 设置隐藏动画
  1780. // cEle.class = "animated a1 flipOutX";
  1781. // setTimeout(() => {
  1782. // // 修改 token
  1783. // cEle.token =
  1784. // "?token=" + videoArray[pIndex + cIndex] + "&autoplay=true";
  1785. // setTimeout(() => {
  1786. // // 设置显示动画
  1787. // cEle.class = "animated a1 flipInX";
  1788. // }, 150);
  1789. // }, 350);
  1790. // }, (pIndex + cIndex + pIndex) * 150);
  1791. // });
  1792. // });
  1793. this.videoArray1.forEach((pEle, pIndex) => {
  1794. pEle.forEach((cEle, cIndex) => {
  1795. setTimeout(() => {
  1796. // 设置隐藏动画
  1797. cEle.class = "animated a1 flipOutX";
  1798. setTimeout(() => {
  1799. // 修改 token
  1800. cEle.code = videoArray[pIndex + cIndex];
  1801. setTimeout(() => {
  1802. // 设置显示动画
  1803. cEle.class = "animated a1 flipInX";
  1804. }, 150);
  1805. }, 350);
  1806. }, (pIndex + cIndex + pIndex) * 150);
  1807. });
  1808. });
  1809. this.getWtInfo();
  1810. this.getWpHealthInfo();
  1811. this.getTop4Info();
  1812. this.getWarnMGT();
  1813. this.getRepertoryMGT();
  1814. this.getWpMainInfo();
  1815. },
  1816. when() {
  1817. this.showPanel = true;
  1818. },
  1819. },
  1820. // 生命周期钩子
  1821. beforeCreate() {
  1822. // 创建前
  1823. },
  1824. created() {
  1825. const clientHeight =
  1826. document.documentElement.clientHeight || document.body.clientHeight;
  1827. if (clientHeight === 1080) {
  1828. this.isFullScreen = true;
  1829. } else {
  1830. this.isFullScreen = false;
  1831. }
  1832. // this.getWpHealthInfo();
  1833. // this.getTop4Info();
  1834. // this.getWarnMGT();
  1835. // this.getRepertoryMGT();
  1836. this.timeStr = new Date().formatDate("MM-dd hh:mm");
  1837. this.timmer1 = setInterval(() => {
  1838. this.timeStr = new Date().formatDate("MM-dd hh:mm");
  1839. });
  1840. },
  1841. beforeMount() {
  1842. // 渲染前
  1843. },
  1844. mounted() {
  1845. window.onresize = () => {
  1846. const clientHeight =
  1847. document.documentElement.clientHeight || document.body.clientHeight;
  1848. this.isFullScreen = window.screen.height == clientHeight;
  1849. };
  1850. // 渲染后
  1851. this.$nextTick(() => {
  1852. // this.init(jsonDataHT);
  1853. this.getDataInfo();
  1854. this.timmer = setInterval(() => {
  1855. this.getDataInfo();
  1856. }, 10000);
  1857. });
  1858. },
  1859. unmounted() {
  1860. clearInterval(this.timmer);
  1861. this.timmer = null;
  1862. clearInterval(this.timmer1);
  1863. this.timmer1 = null;
  1864. },
  1865. watch: {
  1866. $route: {
  1867. handler(val) {
  1868. if (val.path !== "/integratedAlarm") {
  1869. clearInterval(this.timmer);
  1870. this.timmer = null;
  1871. } else {
  1872. this.timmer = setInterval(() => {
  1873. this.getDataInfo();
  1874. }, 10000);
  1875. }
  1876. },
  1877. },
  1878. },
  1879. beforeUpdate() {
  1880. // 数据更新前
  1881. },
  1882. updated() {
  1883. // 数据更新后
  1884. },
  1885. };
  1886. </script>
  1887. <style lang="less">
  1888. .sand-table {
  1889. width: 100%;
  1890. // height: 91.667vh;
  1891. height: 100%;
  1892. position: relative;
  1893. background-image: url("../../assets/png/3dback_1.png");
  1894. background-repeat: no-repeat;
  1895. background-size: cover;
  1896. .i3dback {
  1897. position: fixed;
  1898. // z-index: -1;
  1899. width: 100vw;
  1900. height: 100%;
  1901. top: 0;
  1902. left: 0;
  1903. }
  1904. .i3dcloud {
  1905. position: absolute;
  1906. z-index: 2;
  1907. width: 100vw;
  1908. height: 100vh;
  1909. top: 0;
  1910. left: 0;
  1911. }
  1912. .left-panel {
  1913. width: 360px;
  1914. margin-top: 20px;
  1915. }
  1916. .right-panel {
  1917. width: 36.852vh;
  1918. .mask {
  1919. width: 100%;
  1920. height: 28vh;
  1921. background: url("~@assets/nxfImg/ship.png");
  1922. background-size: 100% 100%;
  1923. }
  1924. }
  1925. .three-model-layer {
  1926. position: absolute;
  1927. width: 100%;
  1928. height: 100%;
  1929. z-index: 1;
  1930. }
  1931. .sand-table-left {
  1932. height: 79vh;
  1933. position: absolute;
  1934. left: 0;
  1935. top: 0;
  1936. z-index: 2;
  1937. }
  1938. .sand-table-right {
  1939. height: 79vh;
  1940. position: absolute;
  1941. right: 0;
  1942. top: 0;
  1943. z-index: 2;
  1944. }
  1945. .sand-table-bottom {
  1946. position: absolute;
  1947. bottom: 20px;
  1948. z-index: 2;
  1949. display: flex;
  1950. transform: 0.2s;
  1951. .stb-p {
  1952. margin-left: 0.926vh;
  1953. }
  1954. }
  1955. .pre-img-box {
  1956. display: flex;
  1957. align-items: center;
  1958. justify-content: center;
  1959. margin-top: 0.556vh;
  1960. padding: 0;
  1961. position: relative;
  1962. cursor: pointer;
  1963. .sand-table-bottom {
  1964. position: absolute;
  1965. bottom: 0;
  1966. z-index: 2;
  1967. display: flex;
  1968. transition: 0.2s;
  1969. }
  1970. .mask {
  1971. width: 100%;
  1972. height: 8.657vh;
  1973. background: url("~@assets/nxfImg/ship.png");
  1974. background-size: 100% 100%;
  1975. // img {
  1976. // width: 100%;
  1977. // height: 100px;
  1978. // }
  1979. }
  1980. .pre-img {
  1981. position: relative;
  1982. width: 95%;
  1983. height: 8.657vh;
  1984. z-index: 4;
  1985. }
  1986. }
  1987. .person-info-box {
  1988. display: flex;
  1989. .header {
  1990. width: 75px;
  1991. }
  1992. }
  1993. .table {
  1994. width: calc(100% + 2.963vh);
  1995. margin-left: -1.481vh;
  1996. margin-bottom: -1.481vh;
  1997. tr {
  1998. cursor: pointer;
  1999. }
  2000. .com-table thead tr th,
  2001. .com-table tr td {
  2002. padding: 0.556vh 0;
  2003. color: #fff;
  2004. }
  2005. }
  2006. .animated.a0 {
  2007. animation-duration: 0.35s;
  2008. }
  2009. .animated.a1 {
  2010. animation-duration: 0.5s;
  2011. }
  2012. .el-overlay {
  2013. overflow: hidden;
  2014. }
  2015. .footer {
  2016. display: flex;
  2017. justify-content: space-between;
  2018. width: 100%;
  2019. height: 19vh;
  2020. position: absolute;
  2021. z-index: 111;
  2022. .hover72Power,
  2023. .monthPower {
  2024. width: calc(50% - 10px);
  2025. background: rgba(41, 45, 53, 0.4);
  2026. border-radius: 6px;
  2027. position: relative;
  2028. .hidBtn {
  2029. position: absolute;
  2030. left: 5px;
  2031. top: 5px;
  2032. width: 0;
  2033. height: 24px;
  2034. cursor: pointer;
  2035. }
  2036. }
  2037. .hover72Power {
  2038. .hidBtn {
  2039. width: 125px;
  2040. }
  2041. }
  2042. .monthPower {
  2043. .hidBtn {
  2044. width: 75px;
  2045. }
  2046. }
  2047. }
  2048. }
  2049. #sandTable.sand-table .curModal .el-dialog__body {
  2050. max-height: 600px;
  2051. overflow-y: scroll;
  2052. }
  2053. .exchange {
  2054. cursor: pointer;
  2055. }
  2056. .weatherBox {
  2057. width: 100%;
  2058. display: flex;
  2059. justify-content: space-around;
  2060. align-items: center;
  2061. .l,
  2062. .r {
  2063. width: 48%;
  2064. height: 500px;
  2065. padding: 50px 0;
  2066. }
  2067. .el-collapse {
  2068. border-top: 1px solid #999;
  2069. }
  2070. .el-collapse-item .el-collapse-item__wrap {
  2071. border-bottom: 1px solid #999;
  2072. }
  2073. .el-collapse-item__content {
  2074. background: rgba(18, 29, 28, 1);
  2075. color: rgba(255, 255, 255, 0.75);
  2076. padding: 20px;
  2077. }
  2078. .el-collapse-item__header {
  2079. background: rgb(18, 29, 28);
  2080. border-bottom: 1px solid #999;
  2081. color: rgba(255, 255, 255, 0.75);
  2082. }
  2083. .el-card__header,
  2084. .el-collapse,
  2085. .el-collapse-item__header {
  2086. border-bottom: 1px solid #999;
  2087. }
  2088. .collapseItemTitle {
  2089. display: flex;
  2090. justify-content: space-between;
  2091. align-items: center;
  2092. width: 100%;
  2093. .svg {
  2094. width: 20px;
  2095. height: 20px;
  2096. }
  2097. .info {
  2098. margin-left: 4px;
  2099. }
  2100. .otherWea {
  2101. margin-right: 10px;
  2102. }
  2103. }
  2104. .other-info {
  2105. text-align: center;
  2106. font-size: @fontsize-s;
  2107. .text {
  2108. color: @font-color;
  2109. font-size: 12px;
  2110. }
  2111. .value {
  2112. margin: 0.741vh 0 0 0;
  2113. }
  2114. .other-icon {
  2115. margin: 0 auto;
  2116. }
  2117. }
  2118. }
  2119. .videoBoxiframe {
  2120. border: none;
  2121. overflow: hidden;
  2122. cursor: pointer;
  2123. }
  2124. .modal {
  2125. .dialogTitle {
  2126. position: relative;
  2127. left: 10px;
  2128. }
  2129. .jumpBtn {
  2130. position: absolute;
  2131. right: 30px;
  2132. top: 8px;
  2133. cursor: pointer;
  2134. font-size: 20px;
  2135. }
  2136. .el-divider__text {
  2137. background: rgb(17, 28, 27);
  2138. color: #b3bdc0;
  2139. }
  2140. .el-divider {
  2141. background: #b3bdc0;
  2142. }
  2143. animation-duration: 0;
  2144. @keyframes dialog-fade-in {
  2145. 0% {
  2146. transform: translate3d(-1000%, -1000%, 0);
  2147. opacity: 0;
  2148. }
  2149. 100% {
  2150. transform: translate3d(-1000%, -1000%, 0);
  2151. opacity: 1;
  2152. }
  2153. }
  2154. @keyframes dialog-fade-out {
  2155. 0% {
  2156. // transform: translate3d(0, 0, 0);
  2157. transform: translate3d(-1000%, -1000%, 0);
  2158. opacity: 1;
  2159. }
  2160. 100% {
  2161. // transform: translate3d(0, -100%, 0);
  2162. transform: translate3d(-1000%, -1000%, 0);
  2163. opacity: 0;
  2164. }
  2165. }
  2166. }
  2167. .el-overlay {
  2168. .el-overlay-dialog {
  2169. .el-dialog {
  2170. .el-dialog__body {
  2171. padding-top: 0 !important;
  2172. .allStyle {
  2173. // max-height: 55vh;
  2174. // overflow: auto;
  2175. .radioGroupTime {
  2176. display: flex;
  2177. margin-bottom: 10px;
  2178. .el-date-editor {
  2179. margin-right: 10px;
  2180. }
  2181. }
  2182. .allMain {
  2183. .mainTit {
  2184. display: inline-block;
  2185. margin-left: 10px;
  2186. font-size: 20px;
  2187. color: #fff;
  2188. margin-bottom: 10px;
  2189. }
  2190. .allMsg {
  2191. width: 100%;
  2192. height: 500px;
  2193. display: flex;
  2194. .warnLine {
  2195. width: 60%;
  2196. height: 100%;
  2197. }
  2198. .warnPie {
  2199. width: 40%;
  2200. height: 100%;
  2201. }
  2202. }
  2203. }
  2204. }
  2205. }
  2206. }
  2207. }
  2208. }
  2209. </style>