windView.vue 57 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478
  1. <template>
  2. <div class="windView">
  3. <!-- <aside class="sidebar-left-top">
  4. <div class="stat-block-lefttop" @click="backStations">
  5. <p class="label">返回</p>
  6. </div>
  7. </aside> -->
  8. <!-- Left Sidebar -->
  9. <aside class="sidebar-left panel">
  10. <div class="stat-block">
  11. <p class="label">总装机容量:</p>
  12. <p class="value">2541<span style="font-size: 18px; font-weight: 400; color: #6c757d; margin-left: 4px;">MW</span></p>
  13. <!-- <div class="progress-bar"><div class="progress-bar-inner" style="width: 100%;"></div></div> -->
  14. </div>
  15. <div class="stat-block" style="display: flex;justify-content: space-between;">
  16. <p><span class="labels">风电 </span><span class="values">1245<span style="font-size: 14px; font-weight: 400; color: #6c757d; margin-left: 4px;">MW</span></span></p>
  17. <p><span class="labels">光伏 </span><span class="values">1296<span style="font-size: 14px; font-weight: 400; color: #6c757d; margin-left: 4px;">MW</span></span></p>
  18. </div>
  19. <div class="stat-block" style="margin-bottom: 0;">
  20. <p class="label">安全天数:</p>
  21. <p class="value">1258天</p>
  22. </div>
  23. </aside>
  24. <aside class="sidebar-left2 panel" v-if="showWindStatus">
  25. <div v-if="showWeather">
  26. <span class="labels">覆盖模式 </span>
  27. <div class="stat-block">
  28. <span class="covercheck">
  29. <el-check-tag v-for="(it, index) in coverArr" :key="index" type="primary"
  30. :disabled="it.disabled"
  31. :checked="it.check" @change="coverOnChange(it)">{{it.value}}</el-check-tag>
  32. </span>
  33. </div>
  34. </div>
  35. <div>
  36. <span class="labels" style="">风机状态类型 </span>
  37. <div class="stat-block" style="display: flex">
  38. <div class="windStatus">
  39. <img :src="bw" style="width:60px;height:60px;">
  40. <p class="values windVal">并网</p>
  41. </div>
  42. <div class="windStatus">
  43. <img :src="dj" style="width:60px;height:60px;">
  44. <p class="values windVal">待机</p>
  45. </div>
  46. <div class="windStatus">
  47. <img :src="gz" style="width:60px;height:60px;">
  48. <p class="values windVal">故障</p>
  49. </div>
  50. <div class="windStatus">
  51. <img :src="jx" style="width:60px;height:60px;">
  52. <p class="values windVal">检修</p>
  53. </div>
  54. <div class="windStatus">
  55. <img :src="xd" style="width:60px;height:60px;">
  56. <p class="values windVal">限电</p>
  57. </div>
  58. <div class="windStatus">
  59. <img :src="lx" style="width:60px;height:60px;">
  60. <p class="values windVal">离线</p>
  61. </div>
  62. <div class="windStatus">
  63. <img :src="sl" style="width:60px;height:60px;">
  64. <p class="values windVal">受累</p>
  65. </div>
  66. </div>
  67. </div>
  68. </aside>
  69. <!-- Right Sidebar -->
  70. <aside class="sidebar-right panel">
  71. <div class="info-section">
  72. <h3>风场信息</h3>
  73. <div class="info-item">
  74. <span class="label">场站名称</span><span class="value">某某风场</span>
  75. </div>
  76. <div class="info-item">
  77. <span class="label">场站类型</span><span class="value">风场</span>
  78. </div>
  79. <div class="info-item">
  80. <span class="label">安全运行天数(天)</span><span class="value">27</span>
  81. </div>
  82. <div class="info-item">
  83. <span class="label">接入台数</span><span class="value">29</span>
  84. </div>
  85. <div class="info-item">
  86. <span class="label">装机容量(MW)</span><span class="value">1245</span>
  87. </div>
  88. <div class="info-item">
  89. <span class="label">经纬度</span><span class="value">106.2341, 37.2343</span>
  90. </div>
  91. <div class="info-item">
  92. <span class="label">并网时间</span><span class="value">2025-08-28</span>
  93. </div>
  94. <div class="info-item">
  95. <span class="label">电量详情</span>
  96. <span class="value" @click="showDetail"
  97. style="color: #4b55ae;cursor:pointer">{{showWindDetail ? '关闭详情' : '查看详情'}}</span>
  98. </div>
  99. </div>
  100. <!-- 实时负荷 -->
  101. <div class="info-section">
  102. <h3 >实时负荷</h3>
  103. <PowerReviewHome
  104. :data="powerDataHome"
  105. :id="wpIds"
  106. :type="activeTab"
  107. @chartClick="showPowerChart"
  108. />
  109. </div>
  110. <!-- 清洁能源公司总装机容量 -->
  111. <div class="energy-system-content clearfix">
  112. <div class="title">
  113. <span class="title-name">清洁能源公司</span>
  114. <span class="title-all-title">总装机容量 :</span>
  115. <span class="title-all-content">{{
  116. Number(StationinformationData?.cblpoint?.qjny_zzjrl) || 0
  117. }}</span>
  118. <span class="title-all-unit">MW</span>
  119. </div>
  120. <div style="display: flex">
  121. <div
  122. class="left-content float-left"
  123. :class="activeTab == -1 ? 'piggy-bank' : ''"
  124. >
  125. <div class="img-num clearfix">
  126. <div class="img float-left">
  127. <img src="@/assets/windimgs/fc_b_1.png" alt="" />
  128. </div>
  129. <div class="num float-left">
  130. <span>风电场数量</span> <br />
  131. <span>{{ StationinformationData?.cblpoint?.qjny_fcts }}</span>
  132. <span>个</span>
  133. </div>
  134. </div>
  135. <div class="capacity">
  136. <div class="item">
  137. <el-row align="middle">
  138. <el-col :span="8"><span>装机容量</span></el-col>
  139. <el-col :span="9"
  140. ><span>{{
  141. StationinformationData?.cblpoint?.qjny_fd_zjrl
  142. }}</span></el-col
  143. >
  144. <el-col :span="7"><span>MW</span></el-col>
  145. </el-row>
  146. </div>
  147. </div>
  148. </div>
  149. <div
  150. class="right-content float-left"
  151. :class="activeTab == -2 ? 'piggy-bank' : ''"
  152. >
  153. <div class="img-num clearfix">
  154. <div class="img float-left">
  155. <img src="@/assets/windimgs/gf_b_1.png" alt="" />
  156. </div>
  157. <div class="num float-left">
  158. <span>光伏电站数量</span> <br />
  159. <span>{{ StationinformationData?.cblpoint?.qjny_gfts }}</span>
  160. <span>个</span>
  161. </div>
  162. </div>
  163. <div class="capacity">
  164. <div class="item">
  165. <el-row>
  166. <el-col :span="8"><span>装机容量</span></el-col>
  167. <el-col :span="9"
  168. ><span>{{
  169. StationinformationData?.cblpoint?.qjny_gf_zjrl
  170. }}</span></el-col
  171. >
  172. <el-col :span="7"><span>MW</span></el-col>
  173. </el-row>
  174. </div>
  175. </div>
  176. </div>
  177. </div>
  178. </div>
  179. <!-- 系统接入情况 -->
  180. <div class="energy-system-content clearfix">
  181. <div class="title">
  182. <span class="title-name">系统接入情况</span>
  183. <span class="title-all-title">总装机容量 :</span>
  184. <span class="title-all-content">{{
  185. Number(StationinformationData?.cblpoint?.jr_zzjrl) || 0
  186. }}</span>
  187. <span class="title-all-unit">MW</span>
  188. </div>
  189. <div style="display: flex">
  190. <div
  191. class="left-content float-left"
  192. :class="activeTab == -1 ? 'piggy-bank' : ''"
  193. >
  194. <div class="img-num clearfix">
  195. <div class="img float-left">
  196. <img src="@/assets/windimgs/fc_b_1.png" alt="" />
  197. </div>
  198. <div class="num float-left">
  199. <span>风电场数量</span> <br />
  200. <span>{{ StationinformationData?.cblpoint?.jr_fcts }}</span>
  201. <span>个</span>
  202. </div>
  203. </div>
  204. <div class="capacity">
  205. <div class="item">
  206. <el-row>
  207. <el-col :span="8"><span>装机容量</span></el-col>
  208. <el-col :span="9"
  209. ><span>{{
  210. StationinformationData?.cblpoint?.jr_fd_zjrl
  211. }}</span></el-col
  212. >
  213. <el-col :span="7"><span>MW</span></el-col>
  214. </el-row>
  215. </div>
  216. <div class="item">
  217. <el-row>
  218. <el-col :span="8"><span>风机台数</span></el-col>
  219. <el-col :span="9"
  220. ><span>{{
  221. StationinformationData?.cblpoint?.jr_fj_ts
  222. }}</span></el-col
  223. >
  224. <el-col :span="7"><span>台</span></el-col>
  225. </el-row>
  226. </div>
  227. </div>
  228. </div>
  229. <div
  230. class="right-content float-left"
  231. :class="activeTab == -1 ? 'piggy-bank' : ''"
  232. >
  233. <div class="img-num clearfix">
  234. <div class="img float-left">
  235. <img src="@/assets/windimgs/gf_b_1.png" alt="" />
  236. </div>
  237. <div class="num float-left">
  238. <span>光伏电站数量</span> <br />
  239. <span>{{ StationinformationData?.cblpoint?.jr_gfts }}</span>
  240. <span>个</span>
  241. </div>
  242. </div>
  243. <div class="capacity">
  244. <div class="item">
  245. <el-row>
  246. <el-col :span="8"><span>装机容量</span></el-col>
  247. <el-col :span="9"
  248. ><span>{{
  249. StationinformationData?.cblpoint?.jr_gf_zjrl || 0
  250. }}</span></el-col
  251. >
  252. <el-col :span="7"><span>MW</span></el-col>
  253. </el-row>
  254. </div>
  255. <div class="item">
  256. <el-row>
  257. <el-col :span="8"><span>集中式</span></el-col>
  258. <el-col :span="9"
  259. ><span>{{
  260. StationinformationData?.cblpoint?.jr_gf_jzts || 0
  261. }}</span></el-col
  262. >
  263. <el-col :span="7"><span>台</span></el-col>
  264. </el-row>
  265. </div>
  266. <div class="item">
  267. <el-row>
  268. <el-col :span="8"><span>组串式</span></el-col>
  269. <el-col :span="9"
  270. ><span>{{
  271. StationinformationData?.cblpoint?.jr_gf_zcts || 0
  272. }}</span></el-col
  273. >
  274. <el-col :span="7"><span>台</span></el-col>
  275. </el-row>
  276. </div>
  277. </div>
  278. </div>
  279. </div>
  280. </div>
  281. <!-- 节能减排 -->
  282. <!-- <div class="model-bg">
  283. <div class="titles">
  284. <div class="name">节能减排</div>
  285. <div class="unit">(单位: 万吨)</div>
  286. </div>
  287. <div class="save">
  288. <div class="save-item">
  289. <div
  290. class="jnjp-icon svg-icon svg-icon-green"
  291. style="width:20px,height:20px"
  292. >
  293. <svg height="16px" viewBox="0 0 1024 1024"><path d="M565.49844 517.552322c0-0.348009-0.063274-0.66438-0.063274-1.012389-4.998671 42.172336-23.601322 83.079186-56.187598 115.475639l-0.253097 0.253097c-77.099762 76.372107-202.034912 76.34047-279.0714-0.126549l0 0c-77.099762-76.498656-77.099762-200.547966 0.031637-277.046622-77.131399 76.498656-115.665462 176.788457-115.665462 277.046622 0 50.366361 9.744246 100.732722 29.2011 148.093552 40.653752 20.311058 86.622548 31.478975 135.248865 30.751321 160.811691-2.467699 289.258566-133.825192 286.75923-293.434671z" fill="#4b55ae" p-id="2660"></path><path d="M788.318967 355.095499l0 0c-15.407298-15.280749-31.795347-28.97964-48.942689-41.191584-31.637161-22.588933-65.742021-40.527204-101.365465-52.707511-31.225878-8.795131-60.711713-25.309729-85.325424-49.733618-19.456854-19.298668-33.978311-41.666141-43.596008-65.488924-18.887385-46.728087-18.887385-99.214138-0.031637-145.942225-16.103315 8.731857-31.289153 19.741589-44.924769 33.250657-59.034943 58.560386-72.702197 144.929836-41.34977 216.588006 9.491148 21.703093 23.031853 42.077425 40.811938 59.889146-0.031637 0.063274-0.063274 0.094911-0.094911 0.126549l46.126981 45.81061c3.796459 3.796459 7.24491 7.751105 10.661723 11.800661-0.348009-0.569469-0.66438-1.138938-1.012389-1.67677 53.561714 56.345784 86.907282 131.9586 88.204406 215.512343 2.752433 177.452838-139.994439 323.521612-318.839312 326.242407-22.462385 0.348009-44.418574-1.613495-65.64711-5.631415 2.309513 2.404424 4.555751 4.90376 6.960175 7.24491 77.099762 76.56193 178.117218 114.811258 279.166311 114.811258s202.129824-38.249328 279.197949-114.747984c50.872555-50.461272 84.819229-111.299533 102.156394-175.617882 8.921679-33.187382 13.509068-67.292242 13.509068-101.428739 0-100.289801-38.5657-200.547966-115.665462-277.046622z" fill="#4b55ae" p-id="2661"></path>
  294. </svg>
  295. </div>
  296. <div class="save-value">
  297. {{
  298. Number(Number(StationinformationData?.qt?.jym)).toFixed(2)
  299. }}
  300. </div>
  301. <div class="save-name">煤</div>
  302. </div>
  303. <div class="save-item">
  304. <div class="jnjp-icon svg-icon svg-icon-green">
  305. <svg height="16px" viewBox="0 0 1024 1024"><path d="M512 1024a358.4 358.4 0 0 1-358.4-358.4c0-131.9424 119.4496-353.792 358.4-665.6 238.9504 311.808 358.4 533.6576 358.4 665.6a358.4 358.4 0 0 1-358.4 358.4z m-281.6-358.4A281.6 281.6 0 0 0 512 947.2a25.6 25.6 0 1 0 0-51.2A230.4 230.4 0 0 1 281.6 665.6a25.6 25.6 0 1 0-51.2 0z" fill="#4b55ae" p-id="8243"></path>
  306. </svg>
  307. </div>
  308. <div class="save-value">
  309. {{
  310. Number(Number(StationinformationData?.qt?.jys)).toFixed(2)
  311. }}
  312. </div>
  313. <div class="save-name">水</div>
  314. </div>
  315. <div class="save-item">
  316. <div class="kind">
  317. <div class=" svg-icon svg-icon-green co2">
  318. <svg height="16px" viewBox="0 0 1024 1024"><path d="M707.52 692.48a124.16 124.16 0 0 1 2.88-28.16 104 104 0 0 1 9.28-24.96 133.76 133.76 0 0 1 15.68-23.04 238.72 238.72 0 0 1 22.08-23.04l18.56-17.28c4.48-3.776 8.672-7.968 12.48-12.48 2.944-3.488 5.408-7.36 7.36-11.52a43.52 43.52 0 0 0 3.2-12.48c0.32-5.12 0.32-10.24 0-15.36a22.72 22.72 0 0 0-22.4-28.16 20.8 20.8 0 0 0-21.44 13.12 45.44 45.44 0 0 0-3.52 14.08v16.96h-44.16v-7.68a65.92 65.92 0 0 1 16.96-48.64 72.96 72.96 0 0 1 53.44-16.96 71.68 71.68 0 0 1 51.2 16c11.712 12.256 17.728 28.864 16.64 45.76a101.76 101.76 0 0 1-1.92 20.16 77.12 77.12 0 0 1-6.08 17.92 84.48 84.48 0 0 1-10.88 16.96 160 160 0 0 1-16.32 16.64l-25.6 23.68a96 96 0 0 0-16 17.92 52.48 52.48 0 0 0-7.36 15.36h84.48v35.2h-139.52 0.96z m-197.12-120c0.64 14.24 2.976 28.32 7.04 41.92 2.56 9.312 7.904 17.6 15.36 23.68a50.56 50.56 0 0 0 52.8 0c7.456-6.08 12.8-14.368 15.36-23.68 4.032-13.632 6.4-27.68 7.04-41.92 1.28-17.28 1.92-38.592 1.92-64 0-25.376-0.64-46.72-1.92-64a178.24 178.24 0 0 0-7.04-41.92 46.72 46.72 0 0 0-15.36-23.68 50.56 50.56 0 0 0-52.8 0c-7.456 6.144-12.8 14.4-15.36 23.68a177.28 177.28 0 0 0-7.04 41.92c-1.28 17.088-1.92 38.4-1.92 64s0.64 46.944 1.92 64z m-71.68-139.2a169.28 169.28 0 0 1 16.96-60.16 96 96 0 0 1 37.76-39.04 161.92 161.92 0 0 1 132.16 0 96 96 0 0 1 37.76 39.04 169.28 169.28 0 0 1 16.96 60.16 768 768 0 0 1 0 153.28 168.96 168.96 0 0 1-16.96 59.84 89.92 89.92 0 0 1-37.76 38.4 170.56 170.56 0 0 1-132.16 0 89.92 89.92 0 0 1-37.76-38.4 168.96 168.96 0 0 1-16.96-59.84 768 768 0 0 1 0-153.28z m-124.48-40.96a35.52 35.52 0 0 0-34.56-18.24 34.56 34.56 0 0 0-22.72 7.36 49.28 49.28 0 0 0-14.08 24 205.44 205.44 0 0 0-7.04 43.52c-1.28 17.92-1.92 39.904-1.92 65.92a634.88 634.88 0 0 0 2.88 67.2c1.056 13.568 3.936 26.944 8.64 39.68 2.624 7.808 7.808 14.464 14.72 18.88 6.4 3.36 13.568 5.024 20.8 4.8 6.208 0.128 12.416-0.96 18.24-3.2a32 32 0 0 0 14.72-13.44 86.72 86.72 0 0 0 9.6-28.16 257.92 257.92 0 0 0 3.52-48h73.6a329.28 329.28 0 0 1-4.48 56.32 128 128 0 0 1-17.28 46.72 85.12 85.12 0 0 1-35.2 32 133.76 133.76 0 0 1-59.2 11.2 139.2 139.2 0 0 1-65.92-13.44 89.92 89.92 0 0 1-37.76-38.4 168.96 168.96 0 0 1-16.96-59.84 768 768 0 0 1 0-153.28 169.28 169.28 0 0 1 16.96-60.16 96 96 0 0 1 37.76-39.04 132.8 132.8 0 0 1 65.92-14.08 128 128 0 0 1 62.08 12.8c14.016 7.392 25.728 18.464 33.92 32 7.488 13.12 12.288 27.584 14.08 42.56 1.824 14.24 2.784 28.544 2.88 42.88h-73.6a132.8 132.8 0 0 0-9.6-58.56z" fill="#4b55ae" p-id="9468"></path>
  319. </svg>
  320. </div>
  321. </div>
  322. <div class="save-value">
  323. {{
  324. Number(Number(StationinformationData?.qt?.co2)).toFixed(2)
  325. }}
  326. </div>
  327. <div class="save-name">二氧化碳</div>
  328. </div>
  329. <div class="save-item">
  330. <div class="kind">
  331. <div class=" svg-icon svg-icon-green so2">
  332. <svg height="16px" viewBox="0 0 1024 1024"><path d="M703.904 692.48c0-9.472 1.056-18.88 3.2-28.16a101.44 101.44 0 0 1 9.28-24.96 134.4 134.4 0 0 1 15.68-23.04 244.8 244.8 0 0 1 22.08-23.04l18.56-17.28a102.4 102.4 0 0 0 12.16-12.48c2.848-3.52 5.216-7.36 7.04-11.52a42.56 42.56 0 0 0 3.52-12.48c0.32-5.12 0.32-10.24 0-15.36a22.72 22.72 0 0 0-22.4-28.16 20.8 20.8 0 0 0-21.44 13.12 45.44 45.44 0 0 0-3.52 14.08v16.96h-44.16v-7.68a65.92 65.92 0 0 1 16.96-48.64 72.96 72.96 0 0 1 53.44-16.96 71.68 71.68 0 0 1 51.2 16 60.8 60.8 0 0 1 16.64 45.76 101.76 101.76 0 0 1-1.92 20.16 76.16 76.16 0 0 1-6.08 17.92 84.48 84.48 0 0 1-10.88 16.96 163.52 163.52 0 0 1-16.32 16.64l-25.6 23.68a96 96 0 0 0-16 17.92 53.12 53.12 0 0 0-7.36 15.36h85.44v35.2h-139.52z m-471.04-103.36c-0.096 7.84 0.544 15.68 1.92 23.36 1.12 6.4 3.744 12.448 7.68 17.6 4 4.96 9.184 8.8 15.04 11.2 7.552 2.976 15.584 4.384 23.68 4.16a47.04 47.04 0 0 0 32-10.88 41.28 41.28 0 0 0 13.44-33.92 61.12 61.12 0 0 0-3.2-21.12 41.92 41.92 0 0 0-10.88-16 77.76 77.76 0 0 0-20.16-13.12 288 288 0 0 0-32-12.16 264.64 264.64 0 0 1-42.56-17.92 114.24 114.24 0 0 1-30.08-22.72 81.28 81.28 0 0 1-17.6-30.08 128 128 0 0 1-5.76-39.68 102.08 102.08 0 0 1 30.08-80.96 120.96 120.96 0 0 1 82.88-26.56 180.48 180.48 0 0 1 45.44 5.44 96 96 0 0 1 35.84 17.28c10.4 8.576 18.56 19.552 23.68 32 5.92 14.176 8.768 29.44 8.32 44.8v10.24h-70.72a73.28 73.28 0 0 0-9.28-40.32 33.92 33.92 0 0 0-32-14.08 51.2 51.2 0 0 0-20.48 3.52 34.56 34.56 0 0 0-13.12 9.6 32 32 0 0 0-6.72 13.44 70.08 70.08 0 0 0-1.92 16c-0.384 9.984 2.048 19.84 7.04 28.48a64 64 0 0 0 32 21.12l56.96 24.64c12.096 5.12 23.584 11.552 34.24 19.2 8.16 5.984 15.296 13.216 21.12 21.44 5.248 7.68 8.928 16.256 10.88 25.28 2.272 10.56 3.36 21.28 3.2 32a100.8 100.8 0 0 1-32 84.16 147.84 147.84 0 0 1-93.44 26.24 122.24 122.24 0 0 1-89.28-27.2 105.92 105.92 0 0 1-26.88-77.76v-14.72h73.6v10.88l-0.96-2.88z m202.88-155.84a169.28 169.28 0 0 1 16.96-60.16 96 96 0 0 1 37.76-39.04 161.92 161.92 0 0 1 132.16 0 96 96 0 0 1 37.12 38.4 169.92 169.92 0 0 1 16.96 60.16 768 768 0 0 1 0 153.28 169.6 169.6 0 0 1-16.96 59.84 89.6 89.6 0 0 1-37.76 38.4 170.56 170.56 0 0 1-132.16 0 89.92 89.92 0 0 1-37.76-38.4 168.96 168.96 0 0 1-16.96-59.84 768 768 0 0 1 0.64-152.64z m71.68 139.2c0.64 14.24 3.008 28.288 7.04 41.92 2.56 9.28 7.936 17.6 15.36 23.68a50.56 50.56 0 0 0 52.8 0c7.456-6.08 12.8-14.4 15.36-23.68 4.064-13.6 6.4-27.68 7.04-41.92 1.28-17.28 1.92-38.592 1.92-64 0-25.376-0.64-46.72-1.92-64a176.64 176.64 0 0 0-7.04-41.92 46.72 46.72 0 0 0-15.36-23.68 50.56 50.56 0 0 0-52.8 0c-7.424 6.144-12.8 14.4-15.36 23.68a178.24 178.24 0 0 0-7.04 41.92c-1.28 17.088-1.92 38.4-1.92 64s0.448 46.944 1.28 64h0.64z" fill="#4b55ae" p-id="10598"></path>
  333. </svg>
  334. </div>
  335. </div>
  336. <div class="save-value">
  337. {{
  338. Number(Number(StationinformationData?.qt?.so2)).toFixed(2)
  339. }}
  340. </div>
  341. <div class="save-name">二氧化硫</div>
  342. </div>
  343. </div>
  344. </div> -->
  345. </aside>
  346. <!-- Bottom Bar -->
  347. <div class="bottom-bar" v-if="showWindDetail">
  348. <!-- 损失电量 -->
  349. <div class="panel">
  350. <div class="indicator-title">
  351. <div class="status-title">
  352. <h3>损失电量</h3>
  353. <div class="date">
  354. <div
  355. class="day"
  356. :class="dates === 'D' ? 'active' : ''"
  357. @click="handleChange('D')"
  358. >
  359. </div>
  360. <div
  361. class="mouth"
  362. :class="dates === 'M' ? 'active' : ''"
  363. @click="handleChange('M')"
  364. >
  365. </div>
  366. <div
  367. class="year"
  368. :class="dates === 'Y' ? 'active' : ''"
  369. @click="handleChange('Y')"
  370. >
  371. </div>
  372. </div>
  373. </div>
  374. </div>
  375. <div class="status-concent">
  376. <PieChart
  377. width="100%"
  378. height="100%"
  379. :ratio="10000"
  380. unit="万kWh"
  381. :lossPower="lossPower"
  382. ></PieChart>
  383. </div>
  384. </div>
  385. <!-- 风电场 -->
  386. <div class="panel">
  387. <div class="model-bg-new-right">
  388. <div class="infos">
  389. <div class="titles">
  390. <div class="amount">
  391. <div class="icon fengji-icon svg-icon svg-icon-white"
  392. :class="$store.state.moreSty === 'greenSty' ? 'fengji-icon-box-green' : 'fengji-icon-box-blue'" ></div>
  393. <img
  394. class="amount-image"
  395. src="@/assets/windimgs/wind.png"
  396. alt=""
  397. />
  398. <div class="amount-nums">
  399. <text class="num-item">{{
  400. StationinformationData?.cblpoint?.jr_fj_ts
  401. }}</text>
  402. </div>
  403. </div>
  404. <div
  405. class="info-nums"
  406. >
  407. 风电场<text class="nums">{{
  408. StationinformationData?.cblpoint?.jr_fcts
  409. }}</text>
  410. </div>
  411. </div>
  412. <div class="types">
  413. <div class="type-model">
  414. <div class="type-name" style="color: #1d99ff">待机</div>
  415. <div class="type-num">
  416. {{ StationinformationData?.mxztmap?.fd_djnum || 0 }}
  417. </div>
  418. </div>
  419. <div class="type-model">
  420. <div class="type-name" style="color: #05bb4c">运行</div>
  421. <div class="type-num">
  422. {{ StationinformationData?.mxztmap?.fd_yxnum || 0 }}
  423. </div>
  424. </div>
  425. <div class="type-model">
  426. <div class="type-name" style="color: #ba3237">故障</div>
  427. <div class="type-num">
  428. {{ StationinformationData?.mxztmap?.fd_gznum || 0 }}
  429. </div>
  430. </div>
  431. <div class="type-model">
  432. <div class="type-name" style="color: #e17e23">检修</div>
  433. <div class="type-num">
  434. {{ StationinformationData?.mxztmap?.fd_jxnum || 0 }}
  435. </div>
  436. </div>
  437. <div class="type-model">
  438. <div class="type-name" style="color: #c531c7">限电</div>
  439. <div class="type-num">
  440. {{ StationinformationData?.mxztmap?.fd_xdnum || 0 }}
  441. </div>
  442. </div>
  443. <div class="type-model">
  444. <div class="type-name" style="color: #fff">受累</div>
  445. <div class="type-num">
  446. {{ StationinformationData?.mxztmap?.fd_slnum || 0 }}
  447. </div>
  448. </div>
  449. <div class="type-model">
  450. <div class="type-name" style="color: #606769">离线</div>
  451. <div class="type-num">
  452. {{ StationinformationData?.mxztmap?.fd_lxnum || 0 }}
  453. </div>
  454. </div>
  455. </div>
  456. <div class="tabSwitchover">
  457. <div class="unit"><span>(单位: 万kWh)</span></div>
  458. </div>
  459. <div
  460. v-for="(item, index) in ForecastPowerNewHome_fc"
  461. :key="index"
  462. >
  463. <div class="power-charts">
  464. <div class="power-name">{{ item[0].name }}</div>
  465. <div class="power-item">
  466. <div class="power-value">
  467. <span
  468. :style="
  469. item[0].color === 1
  470. ? 'background-color:#4B55AE'
  471. : 'background-color:#05BB4C'
  472. "
  473. ></span>
  474. <span style="color:#606769">{{ item[0].total }}</span>
  475. </div>
  476. <list-bar-chart-2-home
  477. :list="item"
  478. height="55px"
  479. width="250px"
  480. @click="
  481. handleElectricDetail(item[0].id, item[0].name, 'fc')
  482. "
  483. />
  484. </div>
  485. </div>
  486. </div>
  487. </div>
  488. </div>
  489. </div>
  490. <!-- 光伏电站 -->
  491. <div class="panel">
  492. <div class="model-bg-new-right">
  493. <div class="infos">
  494. <div class="titles">
  495. <div class="amount">
  496. <div class="icon fengji-icon fengji-icon-box-blue" ></div>
  497. <img
  498. class="amount-image"
  499. src="@/assets/windimgs/sy-sun.png"
  500. alt=""
  501. />
  502. <div class="amount-nums">
  503. <text class="num-item">{{
  504. Number(
  505. StationinformationData?.cblpoint?.jr_gf_jzts +
  506. StationinformationData?.cblpoint?.jr_gf_zcts
  507. ) || 0
  508. }}</text>
  509. </div>
  510. </div>
  511. <div class="info-nums">
  512. 电站<text class="nums">{{
  513. StationinformationData?.cblpoint?.jr_gfts
  514. }}</text>
  515. </div>
  516. </div>
  517. <div class="types">
  518. <div class="type-model">
  519. <div class="type-name" style="color: #1d99ff">待机</div>
  520. <div class="type-num">
  521. {{ StationinformationData?.mxztmap?.gf_djnum || 0 }}
  522. </div>
  523. </div>
  524. <div class="type-model">
  525. <div class="type-name" style="color: #05bb4c">运行</div>
  526. <div class="type-num">
  527. {{ StationinformationData?.mxztmap?.gf_yxnum || 0 }}
  528. </div>
  529. </div>
  530. <div class="type-model">
  531. <div class="type-name" style="color: #ba3237">故障</div>
  532. <div class="type-num">
  533. {{ StationinformationData?.mxztmap?.gf_gznum || 0 }}
  534. </div>
  535. </div>
  536. <div class="type-model">
  537. <div class="type-name" style="color: #e17e23">检修</div>
  538. <div class="type-num">
  539. {{ StationinformationData?.mxztmap?.gf_jxnum || 0 }}
  540. </div>
  541. </div>
  542. <div class="type-model">
  543. <div class="type-name" style="color: #c531c7">限电</div>
  544. <div class="type-num">
  545. {{ StationinformationData?.mxztmap?.gf_xdnum || 0 }}
  546. </div>
  547. </div>
  548. <div class="type-model">
  549. <div class="type-name" style="color: #fff">受累</div>
  550. <div class="type-num">
  551. {{ StationinformationData?.mxztmap?.gf_slnum || 0 }}
  552. </div>
  553. </div>
  554. <div class="type-model">
  555. <div class="type-name" style="color: #606769">离线</div>
  556. <div class="type-num">
  557. {{ StationinformationData?.mxztmap?.gf_lxnum || 0 }}
  558. </div>
  559. </div>
  560. </div>
  561. <div class="tabSwitchover">
  562. <div class="unit"><span>(单位: 万kWh)</span></div>
  563. </div>
  564. <div
  565. v-for="(item, index) in ForecastPowerNewHome_gf"
  566. :key="index"
  567. >
  568. <div class="power-charts">
  569. <div class="power-name">{{ item[0].name }}</div>
  570. <div class="power-item">
  571. <div class="power-value">
  572. <span
  573. :style="
  574. index % 2 === 0
  575. ? 'background-color:#4B55AE'
  576. : 'background-color:#05BB4C'
  577. "
  578. ></span>
  579. <span style="color:#606769">{{ item[0].total }}</span>
  580. </div>
  581. <list-bar-chart-2-home
  582. :list="item"
  583. height="55px"
  584. width="250px"
  585. @click="
  586. handleElectricDetail(item[0].id, item[0].name, 'gf')
  587. "
  588. />
  589. </div>
  590. </div>
  591. </div>
  592. </div>
  593. </div>
  594. </div>
  595. </div>
  596. </div>
  597. </template>
  598. <script>
  599. import PowerReviewHome from "@/components/windNeedCharts/power-review-home.vue";
  600. import ListBarChart2Home from "@/components/windNeedCharts/list-bar-chart2-home.vue";
  601. import PieChart from "@/components/windNeedCharts/pieChart.vue";
  602. import dataJson from "./mapdataJson.json"
  603. import dataJson2 from "./dataJson.json"
  604. //并网
  605. import bw from "@/assets/windimgs/fanSvg/bw.svg"
  606. //故障
  607. import gz from "@/assets/windimgs/fanSvg/gz.svg"
  608. //待机
  609. import dj from "@/assets/windimgs/fanSvg/dj.svg"
  610. //检修
  611. import jx from "@/assets/windimgs/fanSvg/jx.svg"
  612. //限电
  613. import xd from "@/assets/windimgs/fanSvg/xd.svg"
  614. //离线
  615. import lx from "@/assets/windimgs/fanSvg/lx.svg"
  616. //受累
  617. import sl from "@/assets/windimgs/fanSvg/sl.svg"
  618. export default {
  619. components: {
  620. PowerReviewHome,
  621. ListBarChart2Home,
  622. PieChart
  623. },
  624. props: {
  625. showWeather: {
  626. type: Boolean,
  627. default: false
  628. },
  629. },
  630. data() {
  631. return {
  632. showWindStatus: true,
  633. bw,
  634. gz,
  635. jx,
  636. dj,
  637. xd,
  638. lx,
  639. sl,
  640. coverArr: [
  641. {
  642. value: "风场",
  643. check: false
  644. },
  645. {
  646. value: "云层",
  647. check: false
  648. },
  649. {
  650. value: "降雨",
  651. check: false
  652. },
  653. {
  654. value: "温度",
  655. check: false
  656. },
  657. {
  658. value: "湿度",
  659. check: false,
  660. disabled: true
  661. },
  662. {
  663. value: "3小时累计降雨量",
  664. check: false,
  665. disabled: true
  666. },
  667. {
  668. value: "水汽含量",
  669. check: false,
  670. disabled: true
  671. },
  672. {
  673. value: "云中总水量",
  674. check: false,
  675. disabled: true
  676. },
  677. {
  678. value: "平均海平面压力",
  679. check: false,
  680. disabled: true
  681. }
  682. ],
  683. activeTab: -1,
  684. wpIds: "KGDL_FGS0",
  685. powerDataHome: {},
  686. StationinformationData: [],
  687. ForecastPowerNewHome_fc: [],
  688. ForecastPowerNewHome_gf: [],
  689. wpInfos: {},
  690. lossPower: {},
  691. dates: "D",
  692. showWindDetail: false
  693. }
  694. },
  695. mounted() {
  696. this.StationinformationData = dataJson.StationinformationData
  697. this.powerDataHome = dataJson.powerDataHome
  698. this.wpInfos = dataJson2.wpInfosdata
  699. this.findProjectPlan();
  700. },
  701. methods: {
  702. backStations() {
  703. this.$emit("backStations")
  704. },
  705. coverOnChange(itv) {
  706. this.coverArr.forEach(it => {
  707. if (itv === it) {
  708. it.check = !it.check
  709. } else {
  710. it.check = false
  711. }
  712. })
  713. this.$emit("coverOnChange", itv)
  714. },
  715. showDetail() {
  716. this.showWindDetail = !this.showWindDetail
  717. this.showWindStatus = !this.showWindStatus
  718. this.findProjectPlan();
  719. this.$emit("showDetail", this.showWindDetail)
  720. },
  721. // 发电量
  722. findProjectPlan() {
  723. let data = dataJson.FindProjectplanData
  724. this.ForecastPowerNewHome_fc = [
  725. [
  726. {
  727. name: "日发电量",
  728. id: "day",
  729. value: data?.proplanmap
  730. ? data?.proplanmap?.fd_r_sjdl < 0
  731. ? 0
  732. : (data?.proplanmap?.fd_r_sjdl / 10000).toFixed(2)
  733. : 0,
  734. color: this.$store.state.moreSty === 'greenSty' ? 0 : 1,
  735. total: data?.proplanmap
  736. ? data?.proplanmap?.fd_r_jhdl < 0
  737. ? 0
  738. : data?.proplanmap?.fd_r_jhdl
  739. : 0,
  740. },
  741. ],
  742. [
  743. {
  744. name: "月发电量",
  745. id: "month",
  746. value: data?.proplanmap
  747. ? data?.proplanmap?.fd_y_sjdl < 0
  748. ? 0
  749. : (data?.proplanmap?.fd_y_sjdl / 10000).toFixed(2)
  750. : 0,
  751. color: this.$store.state.moreSty === 'greenSty' ? 0 : 1,
  752. total: data?.proplanmap
  753. ? data?.proplanmap?.fd_y_jhdl < 0
  754. ? 0
  755. : data?.proplanmap?.fd_y_jhdl
  756. : 0,
  757. },
  758. ],
  759. [
  760. {
  761. name: "年发电量",
  762. id: "year",
  763. value: data?.proplanmap
  764. ? data?.proplanmap?.fd_n_sjdl < 0
  765. ? 0
  766. : (data?.proplanmap?.fd_n_sjdl / 10000).toFixed(2)
  767. : 0,
  768. color: this.$store.state.moreSty === 'greenSty' ? 0 : 1,
  769. total: data?.proplanmap
  770. ? data?.proplanmap?.fd_n_jhdl < 0
  771. ? 0
  772. : data?.proplanmap?.fd_n_jhdl
  773. : 0,
  774. },
  775. ],
  776. ];
  777. this.ForecastPowerNewHome_gf = [
  778. [
  779. {
  780. name: "日发电量",
  781. id: "day",
  782. value: data?.proplanmap
  783. ? data?.proplanmap?.gf_r_sjdl < 0
  784. ? 0
  785. : (data?.proplanmap?.gf_r_sjdl / 10000).toFixed(2)
  786. : 0,
  787. color: this.$store.state.moreSty === 'greenSty' ? 0 : 1,
  788. total: data?.proplanmap
  789. ? data?.proplanmap?.gf_r_jhdl < 0
  790. ? 0
  791. : data?.proplanmap?.gf_r_jhdl
  792. : 0,
  793. },
  794. ],
  795. [
  796. {
  797. name: "月发电量",
  798. id: "month",
  799. value: data?.proplanmap
  800. ? data?.proplanmap?.gf_y_sjdl < 0
  801. ? 0
  802. : (data?.proplanmap?.gf_y_sjdl / 10000).toFixed(2)
  803. : 0,
  804. color: this.$store.state.moreSty === 'greenSty' ? 0 : 1,
  805. total: data?.proplanmap
  806. ? data?.proplanmap?.gf_y_jhdl < 0
  807. ? 0
  808. : data?.proplanmap?.gf_y_jhdl
  809. : 0,
  810. },
  811. ],
  812. [
  813. {
  814. name: "年发电量",
  815. id: "year",
  816. value: data?.proplanmap
  817. ? data?.proplanmap?.gf_n_sjdl < 0
  818. ? 0
  819. : (data?.proplanmap?.gf_n_sjdl / 10000).toFixed(2)
  820. : 0,
  821. color: this.$store.state.moreSty === 'greenSty' ? 0 : 1,
  822. total: data?.proplanmap
  823. ? data?.proplanmap?.gf_n_jhdl < 0
  824. ? 0
  825. : data?.proplanmap?.gf_n_jhdl
  826. : 0,
  827. },
  828. ],
  829. ];
  830. this.lossPower = {
  831. SFDL: this.wpInfos.rfdl,
  832. GZSS: this.wpInfos.rgzssdl,
  833. WHSS: this.wpInfos.rwhssdl,
  834. SLSS: this.wpInfos.rslssdl,
  835. XDSS: this.wpInfos.rxdssdl,
  836. XNSS: this.wpInfos.rxnssdl,
  837. SUM:
  838. this.wpInfos.rfdl +
  839. this.wpInfos.rgzssdl +
  840. this.wpInfos.rwhssdl +
  841. this.wpInfos.rslssdl +
  842. this.wpInfos.rxdssdl +
  843. this.wpInfos.rxnssdl,
  844. };
  845. },
  846. // 损失电量切换
  847. handleChange(val) {
  848. this.dates = val;
  849. this.getLossValuesAnalyse(val);
  850. },
  851. // 改变损失电量数据
  852. getLossValuesAnalyse(date) {
  853. if (Object.values(this.wpInfos).length) {
  854. if (date == "D") {
  855. this.lossPower = {
  856. SFDL: this.wpInfos.rfdl,
  857. GZSS: this.wpInfos.rgzssdl,
  858. WHSS: this.wpInfos.rwhssdl,
  859. SLSS: this.wpInfos.rslssdl,
  860. XDSS: this.wpInfos.rxdssdl,
  861. XNSS: this.wpInfos.rxnssdl,
  862. SUM:
  863. this.wpInfos.rfdl +
  864. this.wpInfos.rgzssdl +
  865. this.wpInfos.rwhssdl +
  866. this.wpInfos.rslssdl +
  867. this.wpInfos.rxdssdl +
  868. this.wpInfos.rxnssdl,
  869. };
  870. } else if (date == "M") {
  871. this.lossPower = {
  872. SFDL: this.wpInfos.yfdl,
  873. GZSS: this.wpInfos.ygzssdl,
  874. WHSS: this.wpInfos.ywhssdl,
  875. SLSS: this.wpInfos.yslssdl,
  876. XDSS: this.wpInfos.yxdssdl,
  877. XNSS: this.wpInfos.yxnssdl,
  878. SUM:
  879. this.wpInfos.yfdl +
  880. this.wpInfos.ygzssdl +
  881. this.wpInfos.ywhssdl +
  882. this.wpInfos.yslssdl +
  883. this.wpInfos.yxdssdl +
  884. this.wpInfos.yxnssdl,
  885. };
  886. } else if (date == "Y") {
  887. this.lossPower = {
  888. SFDL: this.wpInfos.nfdl,
  889. GZSS: this.wpInfos.ngzssdl,
  890. WHSS: this.wpInfos.nwhssdl,
  891. SLSS: this.wpInfos.nslssdl,
  892. XDSS: this.wpInfos.nxdssdl,
  893. XNSS: this.wpInfos.nxnssdl,
  894. SUM:
  895. this.wpInfos.nfdl +
  896. this.wpInfos.ngzssdl +
  897. this.wpInfos.nwhssdl +
  898. this.wpInfos.nslssdl +
  899. this.wpInfos.nxdssdl +
  900. this.wpInfos.nxnssdl,
  901. };
  902. } else {
  903. this.lossPower = {};
  904. }
  905. }
  906. },
  907. }
  908. }
  909. </script>
  910. <style lang="less" scoped>
  911. .panel {
  912. background: rgba(248, 249, 252, 0.85);
  913. backdrop-filter: blur(15px);
  914. -webkit-backdrop-filter: blur(15px);
  915. border: 1px solid rgba(255, 255, 255, 0.2);
  916. border-radius: 12px;
  917. box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.08);
  918. padding: 20px;
  919. }
  920. .sidebar-left2{
  921. position: absolute;
  922. left: 20px;
  923. bottom: 20px;
  924. width: 450px;
  925. .labels{
  926. font-size: 16px;
  927. font-weight: bold;
  928. }
  929. .windStatus{
  930. display: flex;
  931. flex-direction: column;
  932. .windVal{
  933. position:relative;
  934. top: 5px;
  935. left: 10px;
  936. }
  937. }
  938. .covercheck{
  939. display: inline-block;
  940. width: 100%;
  941. .el-check-tag{
  942. margin: 0 5px 3px 0;
  943. padding: 5px 8px;
  944. }
  945. }
  946. }
  947. /* --- Left Sidebar --- */
  948. .sidebar-left, .sidebar-left-top {
  949. position: absolute;
  950. left: 20px;
  951. }
  952. .sidebar-left-top{
  953. top: 100px;
  954. width: 80px;
  955. padding: 5px;
  956. border-radius: 8px;
  957. backdrop-filter: blur(10px);
  958. border: 1px solid rgba(255, 255, 255, 0.2);
  959. background: rgba(255, 255, 255, 0.15);
  960. }
  961. .sidebar-left{
  962. top: 100px;
  963. width: 260px;
  964. }
  965. .stat-block-lefttop{
  966. text-align: center;
  967. cursor: pointer;
  968. .label{
  969. font-size: 20px; color: #fff;
  970. }
  971. }
  972. .stat-block { margin-bottom: 15px; }
  973. .stat-block .label { font-size: 26px; color: #6c757d; margin-bottom: 5px; }
  974. .stat-block .value { font-size: 32px; font-weight: 600; color: #4b55ae; }
  975. .stat-block .labels { font-size: 14px; color: #6c757d; margin-bottom: 5px; }
  976. .stat-block .values { font-size: 16px; font-weight: 600; color: #4b55ae; }
  977. .progress-bar { height: 4px; background: #e9ecef; border-radius: 2px; margin-top: 10px; }
  978. .progress-bar-inner { height: 100%; background: #6c757d; border-radius: 2px; }
  979. /* --- Right Sidebar --- */
  980. .sidebar-right {
  981. position: absolute;
  982. top: 20px;
  983. right: 20px;
  984. width: 380px;
  985. height: calc(100% - 40px);
  986. display: flex;
  987. flex-direction: column;
  988. gap: 20px;
  989. .info-section{
  990. h3 { font-size: 16px; font-weight: 600; text-transform: uppercase; color: #6c757d; margin-bottom: 5px; }
  991. }
  992. .energy-system-content {
  993. padding: 5px 5px 15px 5px;
  994. .title-all {
  995. margin-left: 5px;
  996. margin-bottom: 8px;
  997. }
  998. .title-all-content {
  999. font-weight: bold;
  1000. font-size: 19px;
  1001. color:#4b55ae;
  1002. }
  1003. .title-all-title {
  1004. font-size: 13px;
  1005. }
  1006. .title-all-unit {
  1007. font-size: 12px;
  1008. color: #b1b1b1;
  1009. margin-left: 5px;
  1010. }
  1011. .title {
  1012. color: #6c757d;
  1013. text-align: right;
  1014. .title-name {
  1015. float: left;
  1016. font-size: 16px;
  1017. font-weight: 600;
  1018. text-transform: uppercase;
  1019. }
  1020. }
  1021. .right-content,
  1022. .left-content {
  1023. width: 50%;
  1024. .img-num {
  1025. display: flex;
  1026. justify-content: left;
  1027. align-items: center;
  1028. padding-left: 10px;
  1029. .img {
  1030. margin-right: 10px;
  1031. }
  1032. .num {
  1033. span {
  1034. font-size: 12px;
  1035. font-weight: 400;
  1036. color: #6c757d;
  1037. }
  1038. span:nth-child(3) {
  1039. font-size: 19px;
  1040. font-weight: bold;
  1041. line-height: 27px;
  1042. color: #4b55ae;
  1043. }
  1044. span:nth-child(4) {
  1045. margin-left: 15px;
  1046. }
  1047. }
  1048. }
  1049. .capacity {
  1050. .item {
  1051. margin-top: 9px;
  1052. .el-row {
  1053. text-align: center;
  1054. .el-col:nth-child(1) {
  1055. font-size: 12px;
  1056. font-weight: 400;
  1057. color: #6c757d;
  1058. }
  1059. .el-col:nth-child(2) {
  1060. font-size: 16px;
  1061. font-weight: bold;
  1062. color: #4b55ae;
  1063. }
  1064. .el-col:nth-child(3) {
  1065. font-size: 14px;
  1066. font-weight: 400;
  1067. color: #6c757d;
  1068. }
  1069. }
  1070. }
  1071. }
  1072. }
  1073. .left-content {
  1074. }
  1075. .right-content {
  1076. border-left: 1px dashed #4e4040;
  1077. padding-left: 10px;
  1078. }
  1079. }
  1080. .clearfix::after {
  1081. content: "";
  1082. clear: both;
  1083. height: 0;
  1084. line-height: 0;
  1085. visibility: hidden;
  1086. display: block;
  1087. }
  1088. .clearfix {
  1089. zoom: 1;
  1090. }
  1091. .model-bg {
  1092. width: 100%;
  1093. min-height: 135px;
  1094. // background-color: rgba(3, 5, 9, 0.5);
  1095. border-radius: 6px;
  1096. display: flex;
  1097. flex-direction: column;
  1098. padding: 0 2%;
  1099. .titles {
  1100. height: 45px;
  1101. display: flex;
  1102. flex-direction: row;
  1103. align-items: center;
  1104. justify-content: space-between;
  1105. .name {
  1106. font-size: 16px;
  1107. font-weight: 600;
  1108. text-transform: uppercase;
  1109. color: #6c757d;
  1110. }
  1111. .unit {
  1112. font-size: 12px;
  1113. color: #b1b1b1;
  1114. }
  1115. }
  1116. .save {
  1117. display: flex;
  1118. flex-direction: row;
  1119. align-items: center;
  1120. width: 100%;
  1121. margin: 17px 0;
  1122. .save-item {
  1123. width: 25%;
  1124. display: flex;
  1125. flex-direction: column;
  1126. align-items: center;
  1127. .kind {
  1128. width: 20px;
  1129. height: 22px;
  1130. .co2, .so2{
  1131. svg{
  1132. width: 24px;
  1133. height: 24px;
  1134. }
  1135. }
  1136. .jnjp-icon1 {
  1137. margin-left: -8px;
  1138. }
  1139. .kind-img {
  1140. width: 100%;
  1141. height: 100%;
  1142. }
  1143. }
  1144. .save-value {
  1145. font-size: 16px;
  1146. color: #6c757d;
  1147. margin: 10px 0;
  1148. }
  1149. .save-name {
  1150. font-size: 12px;
  1151. color: #b3b3b3;
  1152. }
  1153. }
  1154. }
  1155. }
  1156. }
  1157. /* --- Bottom Bar --- */
  1158. .bottom-bar {
  1159. position: absolute;
  1160. bottom: 20px;
  1161. left: 20px;
  1162. right: 420px; /* Make space for right sidebar */
  1163. display: grid;
  1164. grid-template-columns: 1.2fr 1.2fr 1.2fr;
  1165. gap: 20px;
  1166. }
  1167. </style>
  1168. <style lang="less">
  1169. .model-bg-new-right {
  1170. width: 100%;
  1171. min-height: 135px;
  1172. border-radius: 6px;
  1173. display: flex;
  1174. flex-direction: column;
  1175. // padding: 1% 5%;
  1176. .power-charts {
  1177. display: flex;
  1178. flex-direction: row;
  1179. align-items: flex-end;
  1180. width: 100%;
  1181. margin-top: 10px;
  1182. .power-name {
  1183. width: 80px;
  1184. margin-bottom: 20px;
  1185. color: #6c757d;
  1186. }
  1187. .power-item {
  1188. display: flex;
  1189. flex-direction: column;
  1190. width: 360px;
  1191. .power-value {
  1192. font-size: 12px;
  1193. margin-bottom: -31px;
  1194. font-family: Bicubik;
  1195. margin-left: 255px;
  1196. span:nth-child(1) {
  1197. width: 5px;
  1198. height: 5px;
  1199. border-radius: 5px;
  1200. display: inline-block;
  1201. background-color: #6c757d;
  1202. margin-right: 5px;
  1203. }
  1204. .green-value {
  1205. color: #05bb4c;
  1206. }
  1207. .purple-value {
  1208. color: #4b55ae;
  1209. }
  1210. }
  1211. }
  1212. }
  1213. .infos {
  1214. display: flex;
  1215. flex-direction: column;
  1216. width: 50%;
  1217. height: 100%;
  1218. width: 100%;
  1219. .titles {
  1220. display: flex;
  1221. flex-direction: row;
  1222. align-items: center;
  1223. justify-content: space-between;
  1224. // padding: 0 15px;
  1225. height: 50%;
  1226. .amount {
  1227. display: flex;
  1228. flex-direction: row;
  1229. align-items: center;
  1230. .amount-image {
  1231. margin-left: -42px;
  1232. }
  1233. .amount-nums {
  1234. font-size: 12px;
  1235. color: #6c757d;
  1236. margin-left: 10px;
  1237. display: flex;
  1238. flex-direction: row;
  1239. align-items: baseline;
  1240. .num-item {
  1241. font-size: 20px;
  1242. color: #6c757d;
  1243. margin-right: 5px;
  1244. }
  1245. }
  1246. }
  1247. .info-nums {
  1248. display: flex;
  1249. align-items: baseline;
  1250. font-size: 14px;
  1251. color: #6c757d;
  1252. .nums {
  1253. font-size: 20px;
  1254. color: #4b55ae;
  1255. margin: 0 5px;
  1256. }
  1257. }
  1258. }
  1259. .tabSwitchover {
  1260. // height: 23px;
  1261. margin-top: 5px;
  1262. .tabSwitchover-item {
  1263. width: 42px;
  1264. line-height: 23px;
  1265. text-align: center;
  1266. color: #b3b3b3;
  1267. float: left;
  1268. cursor: pointer;
  1269. }
  1270. .tab-active {
  1271. border-bottom: 1px solid rgb(39, 219, 54);
  1272. background: linear-gradient(to top,
  1273. rgba(5, 187, 76, 0.5),
  1274. rgba(5, 187, 76, 0));
  1275. }
  1276. .unit {
  1277. text-align: right;
  1278. color: #b1b1b1;
  1279. font-size: 12px;
  1280. // float: right;
  1281. }
  1282. }
  1283. .types {
  1284. display: flex;
  1285. flex-direction: row;
  1286. align-items: center;
  1287. height: 50%;
  1288. width: 100%;
  1289. margin-top: 15px;
  1290. padding-bottom: 10px;
  1291. border-bottom: 1px solid #b5b5b5;
  1292. .type-model {
  1293. display: flex;
  1294. flex-direction: column;
  1295. justify-content: space-between;
  1296. align-items: center;
  1297. width: 16%;
  1298. // height: 75%;
  1299. font-size: 16px;
  1300. .type-name {
  1301. font-size: 14px;
  1302. font-family: Agency FB;
  1303. margin-bottom: 10px;
  1304. }
  1305. .type-num {
  1306. height: 15px;
  1307. color: #6c757d;
  1308. }
  1309. }
  1310. }
  1311. }
  1312. }
  1313. .fengji-icon-box-blue {
  1314. box-shadow: inset 1.5px -1px 1px 0px #4b55ae;
  1315. }
  1316. .fengji-icon {
  1317. border-radius: 50%;
  1318. width: 49px;
  1319. height: 49px;
  1320. animation: fadenum 5s linear infinite;
  1321. @keyframes fadenum {
  1322. 100% {
  1323. transform: rotate(360deg);
  1324. }
  1325. }
  1326. svg {
  1327. width: 25px;
  1328. height: 22px;
  1329. }
  1330. }
  1331. .indicator-title {
  1332. display: flex;
  1333. flex-direction: row;
  1334. align-items: center;
  1335. position: relative;
  1336. width: 100%;
  1337. height: 39px;
  1338. border-bottom: 1px solid rgba(153, 153, 153, 0.5);
  1339. font-size: 14px;
  1340. font-family: Microsoft YaHei;
  1341. font-weight: 400;
  1342. color: #6c757d;
  1343. }
  1344. .status-title {
  1345. width: 100%;
  1346. display: flex;
  1347. flex-direction: row;
  1348. align-items: center;
  1349. justify-content: space-between;
  1350. h3 { font-size: 16px; font-weight: 600; text-transform: uppercase; color: #6c757d; margin-bottom: 5px; }
  1351. }
  1352. .date {
  1353. display: flex;
  1354. flex-direction: row;
  1355. align-items: center;
  1356. font-size: 12px;
  1357. font-family: Microsoft YaHei;
  1358. font-weight: 400;
  1359. color: #b3b3b3;
  1360. cursor: pointer;
  1361. .day {
  1362. display: flex;
  1363. align-items: center;
  1364. justify-content: center;
  1365. width: 30px;
  1366. height: 22px;
  1367. border: 1px solid #4b55ae;
  1368. border-radius: 11px 0px 0px 11px;
  1369. background: rgba(67, 81, 107, 0.2);
  1370. &.active {
  1371. background: rgba(5, 102, 187, 0.4);
  1372. color: #fff;
  1373. }
  1374. }
  1375. .mouth {
  1376. display: flex;
  1377. align-items: center;
  1378. justify-content: center;
  1379. width: 30px;
  1380. height: 22px;
  1381. border-top: 1px solid #4b55ae;
  1382. border-bottom: 1px solid #4b55ae;
  1383. background: rgba(67, 81, 107, 0.2);
  1384. &.active {
  1385. background: rgba(5, 102, 187, 0.4);
  1386. color: #fff;
  1387. }
  1388. }
  1389. .year {
  1390. display: flex;
  1391. align-items: center;
  1392. justify-content: center;
  1393. width: 30px;
  1394. height: 22px;
  1395. border: 1px solid #4b55ae;
  1396. border-radius: 0px 11px 11px 0px;
  1397. background: rgba(67, 81, 107, 0.2);
  1398. &.active {
  1399. background: rgba(5, 102, 187, 0.4);
  1400. color: #fff;
  1401. }
  1402. }
  1403. }
  1404. .status-concent {
  1405. width: 100%;
  1406. height: calc(100% - 20px);
  1407. }
  1408. .info-section { font-size: 13px; }
  1409. .info-section h3 { font-size: 12px; font-weight: 600; text-transform: uppercase; color: #6c757d; margin-bottom: 15px; }
  1410. .info-item { display: flex; justify-content: space-between; margin-bottom: 12px; padding: 0 5px; }
  1411. .info-item .label { color: #6c757d; }
  1412. .info-item .value { color: #6c757d; display: flex; align-items: center; gap: 5px; }
  1413. </style>