云链智安数据大屏
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

singlestation.vue 40KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596
  1. <template>
  2. <div class="map">
  3. <div class="left">
  4. <div class="left_logo">
  5. <img class="left_logo1" src="../assets/svg/logo.svg" alt="logo">
  6. </div>
  7. <div class="left_top">
  8. <div class="left_toptitle TiF_font">电站指标</div>
  9. <div class="left_top1">
  10. <div class="left_top21">
  11. <div class="left_top21img">
  12. <div class="custom-font18 left_top21imgfont">{{characteristic.installedCap}}<span class="left_top21img1">kWh</span></div> </div>
  13. <div class="left_top21name TiF_font">装机容量</div>
  14. </div>
  15. <div class="left_top21">
  16. <div class="left_top21img">
  17. <div class="left_top21imgfont custom-font18">{{characteristic.installedPower}}<span class="left_top21img1">kW</span></div> </div>
  18. <div class="left_top21name TiF_font">装机功率</div>
  19. </div>
  20. </div>
  21. <div class="left_top2img">
  22. <div class="left_top21">
  23. <div class="left_top21img">
  24. <div class="left_top21imgfont custom-font18">{{characteristic.dayImportKwh}}<span class="left_top21img1">kWh</span></div> </div>
  25. <div class="left_top21name TiF_font">今日总充电量</div>
  26. </div>
  27. <div class="left_top21">
  28. <div class="left_top21img"> <div class="left_top21imgfont custom-font18">{{formatAmount1000(characteristic.accumulativeImportKwh)}}<span class="left_top21img1">MWh</span></div> </div>
  29. <div class="left_top21name TiF_font">累计总充电量</div>
  30. </div>
  31. <div class="left_top21">
  32. <div class="left_top21img"> <div class="left_top21imgfont custom-font18">{{characteristic.dayExportKwh}}<span class="left_top21img1">kWh</span></div> </div>
  33. <div class="left_top21name TiF_font">今日总放电量</div>
  34. </div>
  35. <div class="left_top21">
  36. <div class="left_top21img"> <div class="left_top21imgfont custom-font18">{{formatAmount1000(characteristic.accumulativeExportKwh)}}<span class="left_top21img1">MWh</span></div> </div>
  37. <div class="left_top21name TiF_font">累计总放电量</div>
  38. </div>
  39. </div>
  40. <!-- -->
  41. </div>
  42. <div class="left_center">
  43. <div class="left_toptitle TiF_font">充放电趋势</div>
  44. <div id="column"></div>
  45. </div>
  46. <div class="left_bottom">
  47. <div class="left_toptitle TiF_font">告警统计</div>
  48. <div class="left_eltable TiF_font">
  49. <div class="left_eltabledivtitle">
  50. <div class="left_eltabledivtitles"></div>
  51. <div class="scrolladdress">站点</div>
  52. <div class="scrollcontent">告警内容</div>
  53. <div class="scrollevent">事件</div>
  54. <div class="left_eltabnormal1">状态</div>
  55. </div>
  56. <div class="execdata">
  57. <div class="execInfo">
  58. <!-- <div class="left_eltablediv" v-for="(item,index) in tableData" :key="index">
  59. <div>{{item.address}}</div>
  60. <div>{{item.content}}</div>
  61. <div>{{item.event}}</div>
  62. <div class="left_eltabnormal">{{item.state}}</div>
  63. </div> -->
  64. <vue3-seamless-scroll
  65. :list="AlarmStatistics"
  66. :step="1"
  67. class="seamless-warp2"
  68. >
  69. <div class="left_eltablediv"
  70. v-for="(item,index) in AlarmStatistics"
  71. :key="index"
  72. >
  73. <div class="scrolladdress">{{item.deviceName}}</div>
  74. <div class="scrollcontent">{{item.title}}</div>
  75. <div class="scrollevent">{{item.alarmname}}</div>
  76. <div class="left_eltabnormal" v-if="item.todayname==1">已恢复</div>
  77. <div class="left_eltabnormal" v-else>未恢复</div>
  78. </div>
  79. </vue3-seamless-scroll>
  80. </div>
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. <div class="center">
  86. <div class="center_top">
  87. <div class="center_top1img11">
  88. <div class="center_top1img1 TiF_font">实时功率</div>
  89. <div class="center_top1img2 custom-font30">{{formatAmount(sysBatterystack.totalActivePower*1)}}<span class="left_top21img2">kW</span></div>
  90. </div>
  91. <div class="center_top1img22">
  92. <div class="center_top1img1 TiF_font">状态</div>
  93. <div class="center_top1img21 TiF_font" v-if="sysBatterystack.batteryStatus==0">空闲</div>
  94. <div class="center_top1img21 TiF_font" v-if="sysBatterystack.batteryStatus==1">充电</div>
  95. <div class="center_top1img21 TiF_font" v-if="sysBatterystack.batteryStatus==2">放电</div>
  96. <div class="center_top1img21 TiF_font" v-if="sysBatterystack.batteryStatus==3">充满</div>
  97. <div class="center_top1img21 TiF_font" v-if="sysBatterystack.batteryStatus==4">放空</div>
  98. <div class="center_top1img21 TiF_font" v-if="sysBatterystack.batteryStatus==5">故障</div>
  99. </div>
  100. <div class="center_top1img33">
  101. <div class="center_top1img1 TiF_font">SOC</div>
  102. <div class="center_top1img2 custom-font30">{{formatAmount(sysBatterystack.soc*1)}}<span class="left_top21img2">%</span></div>
  103. </div>
  104. <div class="center_top1img44">
  105. <div class="center_top1img1 TiF_font">系统功率</div>
  106. <div class="center_top1img2 custom-font30">{{sysBatterystack.systemPower}}<span class="left_top21img2">%</span></div>
  107. </div>
  108. </div>
  109. <div class="left_boxt">
  110. <div></div>
  111. <!-- <div class="left_boxt1">
  112. 浙江临安鹏达
  113. <img class="left_boxopen" src="../assets/open.png" alt="">
  114. <img class="left_boxopen" src="../assets/Putaway.png" alt="">
  115. </div> -->
  116. <div class="left_boxt1">
  117. <el-select
  118. v-model="Singlevalue"
  119. collapse-tags
  120. placeholder="选择电站"
  121. popper-class="custom_header"
  122. :max-collapse-tags="1"
  123. class="Space_content"
  124. size="large"
  125. :popper-append-to-body="false"
  126. @change="postemsDevice"
  127. >
  128. <el-option v-for="(item, index) in cities" :key="index" :label="item.stationName" :value="item.id" />
  129. <template #prefix>
  130. {{ (cities.find(s => s.id === Singlevalue) || {}).stationName }}
  131. </template>
  132. </el-select>
  133. </div>
  134. </div>
  135. <!-- 单站模型 -->
  136. <div id="main"></div>
  137. <div class="center_bottom">
  138. <div class="center_bottomdiv">
  139. <img class="center_bottom1" src="../assets/svg/center_bottom1.svg" alt="">
  140. <div class="center_bottom2" @click="station">总览</div>
  141. <div class="center_bottom2">省级</div>
  142. <div class="center_bottom4">市级</div>
  143. <div class="center_bottom3">单站</div>
  144. <img class="center_bottom6" src="../assets/svg/center_bottom6.svg" alt="">
  145. </div>
  146. </div>
  147. </div>
  148. <div class="right">
  149. <div class="right_jia">
  150. <div></div>
  151. <div class="right_logo">
  152. <i :class="'qi-' + weather.icon" style="color: #30cbeb"></i>
  153. &nbsp;{{ weather.text }}&nbsp; {{ weather.temp }}℃ &nbsp;&nbsp;{{ currentDateyear.year }}-{{ currentDateyear.month }}-{{ currentDateyear.day }} &nbsp;{{ currentTime }}
  154. </div>
  155. </div>
  156. <div class="right_top">
  157. <div class="left_toptitle TiF_font">收益指标</div>
  158. <div class="left_topdiv">
  159. <div class="left_topdivname custom-font30">累计收益</div>
  160. <div class="left_topdivpay custom-font30">{{formatAmount10000(characteristic.totalProfit)}}万元</div>
  161. </div>
  162. <div class="left_Alarm">
  163. <div class="left_topdivname1 custom-fonts">今日收益</div>
  164. <div class="left_topdivpay1 custom-fonts">{{formatAmount(characteristic.todayProfit)}}元</div>
  165. </div>
  166. </div>
  167. <div class="right_center">
  168. <div class="left_toptitle TiF_font">收益趋势</div>
  169. <div id="income"></div>
  170. </div>
  171. <div class="right_bottom">
  172. <div class="left_toptitle TiF_font">设备监控</div>
  173. <div class="right_monitor">
  174. <div class="right_bottomrevenue">
  175. <img class="right_bottomrevenueimg" src="../assets/svg/voltage.svg" alt="">
  176. <div class="right_bottomrevenuediv">
  177. <div class="right_bottomrevenuedivd custom-font">单体最低电压</div>
  178. <div class="right_bottomrevenuev custom-fonts">{{formatAmount(sysBatterystack.maxCellVoltage*1)}}<span class="left_top21img1">V</span></div>
  179. </div>
  180. </div>
  181. <div class="right_bottomrevenue">
  182. <img class="right_bottomrevenueimg" src="../assets/svg/voltage.svg" alt="">
  183. <div class="right_bottomrevenuediv">
  184. <div class="right_bottomrevenuedivd custom-font">单体最高电压</div>
  185. <div class="right_bottomrevenuev custom-fonts">{{formatAmount(sysBatterystack.minCellVoltage*1)}}<span class="left_top21img1">V</span></div>
  186. </div>
  187. </div>
  188. </div>
  189. <div class="right_monitors">
  190. <div class="right_bottomrevenue">
  191. <img class="right_bottomrevenueimg" src="../assets/svg/temperature.svg" alt="">
  192. <div class="right_bottomrevenuediv">
  193. <div class="right_bottomrevenuedivd custom-font">单体最低温度</div>
  194. <div class="right_bottomrevenuev custom-fonts">{{formatAmount(sysBatterystack.minCellTempr*1)}}<span class="left_top21img1">℃</span></div>
  195. </div>
  196. </div>
  197. <div class="right_bottomrevenue">
  198. <img class="right_bottomrevenueimg" src="../assets/svg/temperature.svg" alt="">
  199. <div class="right_bottomrevenuediv">
  200. <div class="right_bottomrevenuedivd custom-font">单体最高温度</div>
  201. <div class="right_bottomrevenuev custom-fonts">{{formatAmount(sysBatterystack.maxCellTempr*1)}}<span class="left_top21img1">℃</span></div>
  202. </div>
  203. </div>
  204. </div>
  205. <div class="right_monitors">
  206. <div class="right_bottomrevenue">
  207. <img class="right_bottomrevenueimg" src="../assets/svg/water.svg" alt="">
  208. <div class="right_bottomrevenuediv">
  209. <div class="right_bottomrevenuedivd custom-font">液冷回水温度</div>
  210. <div class="right_bottomrevenuev custom-fonts">{{formatAmount(sysBatterystack.airInTempr*1)}}<span class="left_top21img1">℃</span></div>
  211. </div>
  212. </div>
  213. <div class="right_bottomrevenue">
  214. <img class="right_bottomrevenueimg" src="../assets/svg/water.svg" alt="">
  215. <div class="right_bottomrevenuediv">
  216. <div class="right_bottomrevenuedivd custom-font">液冷出水温度</div>
  217. <div class="right_bottomrevenuev custom-fonts">{{formatAmount(sysBatterystack.airOutTempr*1)}}<span class="left_top21img1">V</span></div>
  218. </div>
  219. </div>
  220. </div>
  221. </div>
  222. </div>
  223. <!-- <iframe id="geoPage" width=0 height=0 frameborder=0 style="display:none;" scrolling="no"
  224. src="https://apis.map.qq.com/tools/geolocation?key=PZOBZ-EHH6J-DEMFD-DFPL7-UN27S-M5FZT&referer=myposition">
  225. </iframe> -->
  226. </div>
  227. </template>
  228. <script setup>
  229. //---- ----//
  230. import { onMounted, ref,onUnmounted,markRaw } from "vue";
  231. import { Vue3SeamlessScroll } from "vue3-seamless-scroll";
  232. import { useRouter } from 'vue-router'
  233. import axios from "axios";
  234. import { inject } from 'vue';
  235. import * as echarts from "echarts";
  236. const router = useRouter()
  237. const weather = ref(''); // 天气
  238. const currentTime = ref('');
  239. const column = ref(null);// 充放电趋势图
  240. const income = ref(null);// 充放电趋势图
  241. const Singlevalue = ref('浙江临安');// 充放电趋势图
  242. const cities = ref([]);
  243. const currentDateyear = ref({});
  244. function updateTime() {
  245. const now = new Date();
  246. currentTime.value = now.toLocaleTimeString();
  247. }
  248. const showOverlay = inject('showOverlay'); // 通过 inject 访问显示遮罩层方法
  249. const formattedDateTime = async () => {
  250. let datetime= new Date();
  251. const year = datetime.getFullYear();
  252. const month = addLeadingZero(datetime.getMonth() + 1);
  253. const day = addLeadingZero(datetime.getDate());
  254. return { year, month, day };
  255. }
  256. // 方法:在数字前补零
  257. const addLeadingZero = async (number) => {
  258. return number < 10 ? '0' + number : number;
  259. }
  260. // 天气
  261. const gatstationstest = async () => {
  262. const result = await formattedDateTime();
  263. currentDateyear.value.year = result.year
  264. result.month.then(result => {
  265. currentDateyear.value.month = result
  266. }).catch(error => {
  267. console.error('发生了错误:', error);
  268. });
  269. result.day.then(result => {
  270. currentDateyear.value.day = result
  271. }).catch(error => {
  272. console.error('发生了错误:', error);
  273. });
  274. getWeather()
  275. // window.addEventListener('message', function(event) {
  276. // // 接收位置信息
  277. // var loc = event.data;
  278. // getWeather(loc)
  279. // }, false);
  280. };
  281. const getWeather = async () => {
  282. try {
  283. let { data: mapdata } = await axios.get(
  284. `https://devapi.qweather.com/v7/weather/now?location=101010100&key=62b17bd0842e4a21a1c0270750875595`
  285. );
  286. weather.value = mapdata.now;
  287. } catch (error) {
  288. console.error("请求出错:", error);
  289. }
  290. }
  291. const characteristic = ref({}); // 电站指标
  292. const AlarmStatistics = ref([]); // 告警统计
  293. const sysBatterystack = ref([]); // 告警统计
  294. const ChargeDischargeTendency = ref([]); // 告警统计
  295. const scureenpofit = ref([]); // 收益趋势
  296. // 电站列表
  297. const poststationstationName = async () => {
  298. try {
  299. // let { data } = await axios.post(`/api/station/list/stationName`);
  300. let { data } = await axios.post(`/station/list/stationName`);
  301. console.log( data.data[0].id);
  302. if (data.data.length == 0) {
  303. Singlevalue.value = "";
  304. return;
  305. } else {
  306. Singlevalue.value = data.data[0].id;
  307. }
  308. cities.value = data.data;
  309. await gitCitylevel()
  310. } catch (error) {
  311. // convertImageToBase64();
  312. console.error("请求出错:", error);
  313. }
  314. };
  315. //equipmentID 设备id
  316. const equipmentID =ref('');
  317. const postemsDevice = (e) => {
  318. Singlevalue.value = e
  319. gitCitylevel()
  320. };
  321. // 单站接口
  322. const gitCitylevel = async () => {
  323. try {
  324. // let { data: resdata } = await axios.post(`/api/screen/screenpower?powerId=bf91569e-bedd-4609-80ee-1f8d9bb5a5ed`);
  325. let { data: resdata } = await axios.post(`/screen/screenpower?powerId=${Singlevalue.value}`);
  326. console.log(resdata);
  327. characteristic.value = resdata.data.PowerStationIndex;
  328. AlarmStatistics.value = resdata.data.AlarmStatistics
  329. sysBatterystack.value = resdata.data.sysBatterystack
  330. let ymd = resdata.data.ChargeDischargeTendency.map(item => item.ymd.slice(-2));
  331. let chargeTotal = resdata.data.ChargeDischargeTendency.map(item => item.chargeTotal);
  332. let dischargeTotal = resdata.data.ChargeDischargeTendency.map(item => item.dischargeTotal);
  333. ChargeDischargeTendency.value[0]= ymd
  334. ChargeDischargeTendency.value[1]= chargeTotal
  335. ChargeDischargeTendency.value[2]= dischargeTotal
  336. let ymd1 = resdata.data.scureenpofit.map(item => item.ymd.slice(-2));
  337. let profit = resdata.data.scureenpofit.map(item => item.profit);
  338. scureenpofit.value[0]= ymd1
  339. scureenpofit.value[1]= profit
  340. // 充放电趋势图
  341. await population();
  342. // 电站分类统计
  343. await incomechart();
  344. } catch (error) {
  345. // convertImageToBase64();
  346. console.error("请求出错:", error);
  347. }
  348. };
  349. // 充放电趋势图
  350. const population = () => {
  351. column.value = markRaw(echarts.init(document.getElementById("column")));
  352. window.addEventListener(
  353. "resize",
  354. () => {
  355. column.value.resize();
  356. },
  357. false
  358. );
  359. let myoption = {
  360. title: {
  361. subtext: 'kWh',
  362. subtextStyle: {
  363. fontSize:fontSize(14),
  364. color: '#CBF2FA' //
  365. }
  366. },
  367. legend: {
  368. top:fontSize(10),
  369. right:0,
  370. itemHeight:fontSize(8),
  371. itemWidth:fontSize(8),
  372. textStyle:{
  373. fontSize:fontSize(14),
  374. color:"#CBF2FA"
  375. }
  376. },
  377. tooltip: {
  378. trigger: "axis",
  379. axisPointer: {
  380. type: "shadow",
  381. },
  382. },
  383. grid: {
  384. top:"20%",
  385. left: "0%",
  386. right: "4%",
  387. bottom:"0%",
  388. containLabel: true,
  389. },
  390. xAxis: {
  391. type: "category",
  392. // axisLabel: { interval: 0, rotate: -30 },
  393. axisLine: {
  394. lineStyle: {
  395. type: 'solid',//y轴线条类型
  396. color: '#B1D8DF',//y轴线条颜色
  397. opacity: 0.85,
  398. width:fontSize(1)//y轴线条宽度
  399. }
  400. },
  401. axisLabel: {
  402. interval: 0, rotate: 1,
  403. background: '#A1C7CD',
  404. formatter: function (value) {
  405. return `{value|${value}}\n\n\n`;
  406. },
  407. rich: {
  408. value: {
  409. align: 'center',
  410. fontSize:fontSize(14),
  411. padding: [fontSize(60), 0, 0, 0], // 向右偏移20px
  412. }
  413. },
  414. },
  415. data:ChargeDischargeTendency.value[0],
  416. },
  417. yAxis: {
  418. type: "value",
  419. splitLine: {
  420. // 网格线
  421. show: true,
  422. lineStyle: { //分割线
  423. color: "#268C8C",
  424. width: fontSize(0.8),
  425. type: "solid" //dotted:虚线 solid:实线
  426. }
  427. },
  428. axisLabel: {
  429. interval: 1,
  430. textStyle: {
  431. //改变刻度字体样式
  432. color: '#CBF2FA',
  433. fontSize: fontSize(14),
  434. },
  435. }
  436. },
  437. series: [
  438. {
  439. data:ChargeDischargeTendency.value[1],
  440. name: '充电',
  441. type: "bar",
  442. barWidth:fontSize(10), // 设置柱子宽度为30
  443. itemStyle: {
  444. color: {
  445. type: 'linear',
  446. x: 0,
  447. y: 0,
  448. x2: 0,
  449. y2: fontSize(10),
  450. colorStops: [{
  451. offset: 0, color: '#30DCFF' // 渐变起始颜色
  452. }, {
  453. offset: 1, color: '#FFFFFF' // 渐变结束颜色
  454. }],
  455. global: false
  456. }
  457. }
  458. },
  459. {
  460. name: '放电',
  461. type: "bar",
  462. barWidth:fontSize(10), // 设置柱子宽度为30
  463. itemStyle: {
  464. color: {
  465. type: 'linear',
  466. x: 0,
  467. y: 0,
  468. x2: 0,
  469. y2: 1,
  470. colorStops: [{
  471. offset: 0, color: '#CBF2FA' // 渐变起始颜色
  472. }, {
  473. offset: 1, color: '#ffffff' // 渐变结束颜色
  474. }],
  475. global: false
  476. }
  477. },
  478. data: ChargeDischargeTendency.value[2],
  479. },
  480. ],
  481. };
  482. column.value.setOption(myoption);
  483. };
  484. // 收益趋势
  485. function incomechart (){
  486. console.log(scureenpofit.value);
  487. income.value = markRaw(echarts.init(document.getElementById("income")));
  488. window.addEventListener(
  489. "resize",
  490. () => {
  491. income.value.resize();
  492. },
  493. false
  494. );
  495. let option1 = {
  496. title: {
  497. subtext: '收益',
  498. subtextStyle: {
  499. color: '#CBF2FA', // 红色
  500. fontSize: fontSize(14),
  501. }
  502. },
  503. grid: {
  504. top:"20%",
  505. left: "1%",
  506. right: "4%",
  507. bottom: "-10%",
  508. containLabel: true,
  509. },
  510. tooltip: {
  511. trigger: 'axis',
  512. axisPointer: {
  513. type: 'none'
  514. },
  515. formatter: function (params) {
  516. return params[0].name + ': ' + params[0].value;
  517. }
  518. },
  519. xAxis: {
  520. type: "category",
  521. // axisLabel: { interval: 0, rotate: -30 },
  522. axisLine: {
  523. lineStyle: {
  524. type: 'solid',//y轴线条类型
  525. color: '#B1D8DF',//y轴线条颜色
  526. opacity: 0.85,
  527. width: fontSize(0.8)//y轴线条宽度
  528. }
  529. },
  530. axisLabel: {
  531. interval: 0, rotate: 1,
  532. background: '#A1C7CD',
  533. formatter: function (value) {
  534. return `{value|${value}}\n\n\n`;
  535. },
  536. rich: {
  537. value: {
  538. align: 'center',
  539. fontSize:fontSize(14),
  540. padding: [fontSize(60),fontSize(-6), 0, 0] // 向右偏移20px
  541. }
  542. },
  543. textStyle: {
  544. //改变刻度字体样式
  545. color: '#CBF2FA',
  546. fontSize:fontSize(14),
  547. },
  548. },
  549. data: scureenpofit.value[0],
  550. },
  551. yAxis: {
  552. type: "value",
  553. splitLine: {
  554. // 网格线
  555. show: true,
  556. lineStyle: { //分割线
  557. color: "#268C8C",
  558. width: fontSize(0.8),
  559. type: "solid" //dotted:虚线 solid:实线
  560. }
  561. },
  562. axisLabel: {
  563. interval: 1,
  564. textStyle: {
  565. //改变刻度字体样式
  566. color: '#CBF2FA',
  567. fontSize:fontSize(14),
  568. },
  569. }
  570. },
  571. color: ['#CBF2FA'],
  572. series: [
  573. {
  574. name: 'hill',
  575. type: 'pictorialBar',
  576. barWidth: '160%',
  577. // symbol: 'path://M0,10 L10,10 L5,0 L0,10 z',
  578. symbol: 'path://M0,10 L10,10 C5.5,10 5.5,5 5,0 C4.5,5 4.5,10 0,10 z',
  579. itemStyle: {
  580. opacity: 0.5
  581. },
  582. emphasis: {
  583. itemStyle: {
  584. opacity: 1
  585. }
  586. },
  587. data: [{value: scureenpofit.value[1][0]}, // 第一个值表示柱子的宽度,第二个值表示柱子的高度
  588. {value: scureenpofit.value[1][1]},
  589. {value: scureenpofit.value[1][2]},
  590. {value:scureenpofit.value[1][3]},
  591. {value:scureenpofit.value[1][4]},
  592. {value: scureenpofit.value[1][5]},],
  593. }
  594. ]
  595. };
  596. income.value.setOption(option1,true);
  597. }
  598. const station = () => {
  599. // showOverlay(true);
  600. router.push({name:'nationwide'})
  601. }
  602. const fontSize = (res) => {
  603. let clientWidth =
  604. window.innerWidth ||
  605. document.documentElement.clientWidth ||
  606. document.body.clientWidth;
  607. if (!clientWidth) return;
  608. // 此处的3840 为设计稿的宽度,记得修改!
  609. let fontSize = clientWidth / 1920;
  610. return res * fontSize;
  611. };
  612. const formatAmount1000 = (amount) => {
  613. if (amount == undefined||amount == null) {
  614. return "0";
  615. }else{
  616. return (amount/1000).toFixed(1);
  617. // return amount
  618. }
  619. };
  620. const formatAmount10000 = (amount) => {
  621. if (amount == undefined||amount == null) {
  622. return "0";
  623. }else{
  624. return (amount/10000).toFixed(2);
  625. // return amount
  626. }
  627. };
  628. // 省略小数点后1位
  629. const formatAmount = (amount) => {
  630. if (amount == undefined||amount == null) {
  631. return "0";
  632. }else{
  633. // return (amount / 1000).toFixed(2);
  634. return amount.toFixed(1);
  635. }
  636. };
  637. onMounted(() => {
  638. poststationstationName();
  639. showOverlay(true)
  640. // loading.value.close();
  641. updateTime(); // 初始更新时间
  642. const intervalId = setInterval(updateTime, 1000); // 每秒更新一次时间
  643. onUnmounted(() => clearInterval(intervalId)); // 清除定时器
  644. gatstationstest()
  645. showOverlay(false)
  646. });
  647. onUnmounted(() => {
  648. if (column.value) {
  649. column.value.dispose(); // 电站分类统计
  650. }
  651. if (income.value) {
  652. income.value.dispose(); // 安全评价
  653. }
  654. });
  655. </script>
  656. <style scoped lang="scss">
  657. *{
  658. color: #ffffff;
  659. padding: 0px;
  660. margin: 0px;
  661. }
  662. .map {
  663. width: 100vw;
  664. height: 100vh;
  665. display: flex;
  666. justify-content: center;
  667. justify-content: space-between;
  668. padding: 0px 25px;
  669. }
  670. .left {
  671. width: 386px;
  672. display: flex;
  673. flex-direction: column;
  674. box-sizing: border-box;
  675. }
  676. .left_logo {
  677. width: 100%;
  678. height: 38px;
  679. margin-top: 40px;
  680. display: flex;
  681. align-items: center;
  682. justify-content: space-between;
  683. }
  684. .left_logo1{
  685. height: 100%;
  686. }
  687. .left_boxt{
  688. width: 100%;
  689. padding: 0px 120px;
  690. margin-top: 20px;
  691. display: flex;
  692. align-items: center;
  693. justify-content: space-between;
  694. }
  695. .left_boxopen{
  696. width: 30px;
  697. height: 30px;
  698. margin-right: 10px;
  699. }
  700. .left_top {
  701. width: 100%;
  702. height: 280px;
  703. background-image: url(../assets/svg/bjmin.svg);
  704. background-size:100%;
  705. background-repeat: no-repeat;
  706. margin-top: 15px;
  707. overflow: hidden;
  708. box-sizing: border-box;
  709. }
  710. .left_toptitle{
  711. display: flex;
  712. width: 100%;
  713. height: 35px;
  714. background-image: url(../assets/svg/mintitle.svg);
  715. background-size: 100%;
  716. padding-left: 74px;
  717. padding-top: 2px;
  718. font-family: Alimama FangYuanTi VF-SemiBold, Alimama FangYuanTi VF-SemiBold;
  719. font-weight: normal;
  720. font-size: 16px;
  721. font-style: normal;
  722. text-transform: none;
  723. color: #DBF9FF;
  724. box-sizing: border-box;
  725. }
  726. .left_top1{
  727. display: flex;
  728. justify-content: space-around;
  729. }
  730. .left_top1img{
  731. width: 50%;
  732. height: 80px;
  733. background-image: url(../assets/svg/pay.svg);
  734. background-repeat: no-repeat;
  735. margin-left: 6px;
  736. margin-top: 20px;
  737. display: flex;
  738. flex-direction: column;
  739. }
  740. .left_top1img1{
  741. font-family: Alimama FangYuanTi VF, Alimama FangYuanTi VF;
  742. font-weight: 500;
  743. font-size: 14px;
  744. color: #FFFFFF;
  745. text-shadow: 1px 1px 1px rgba(0,0,0,0.25);
  746. text-align: left;
  747. font-style: normal;
  748. text-transform: none;
  749. margin-left: 72px;
  750. margin-top: 14px;
  751. }
  752. .left_top1img2{
  753. font-family: Andada Pro, Andada Pro;
  754. font-weight: normal;
  755. font-size: 24px;
  756. line-height: 30px;
  757. font-style: normal;
  758. text-transform: none;
  759. margin-left: 72px;
  760. }
  761. .left_top2img{
  762. display: flex;
  763. justify-content:space-around;
  764. margin-top: 20px;
  765. box-sizing: border-box;
  766. }
  767. .left_top21{
  768. display: flex;
  769. flex-direction: column;
  770. justify-content: center;
  771. align-items: center;
  772. box-sizing: border-box;
  773. }
  774. .left_top21img{
  775. width: 80px;
  776. height: 80px;
  777. background-image: url(../assets/svg/ICOM.svg);
  778. background-size:100% 100%;
  779. display: flex;
  780. justify-content: center;
  781. padding-top: 10px;
  782. }
  783. .left_top21imgfont{
  784. font-family: Andada Pro, Andada Pro;
  785. font-weight: normal;
  786. font-size: 18px;
  787. font-style: normal;
  788. text-transform: none;
  789. }
  790. .left_top21img1{
  791. font-family: ABeeZee, ABeeZee;
  792. font-weight: normal;
  793. font-size: 12px;
  794. color: #C4F3FE;
  795. font-style: italic;
  796. text-transform: none;
  797. }
  798. .left_top21img2{
  799. font-family: ABeeZee, ABeeZee;
  800. font-weight: normal;
  801. font-size: 14px;
  802. color: #C4F3FE;
  803. font-style: italic;
  804. text-transform: none;
  805. padding-bottom:4px;
  806. }
  807. .left_top21name{
  808. font-weight: 500;
  809. font-size: 14px;
  810. color: #FFFFFF;
  811. letter-spacing: 0px;
  812. text-shadow: 1px 1px 1px rgba(0,0,0,0.25);
  813. text-align: center;
  814. font-style: normal;
  815. text-transform: none;
  816. }
  817. .left_center {
  818. width: 100%;
  819. height: 300px;
  820. background-image: url(../assets/svg/bjmin.svg);
  821. background-size:100%;
  822. background-repeat: no-repeat;
  823. margin-top: 50px;
  824. display: flex;
  825. flex-direction: column;
  826. box-sizing: border-box;
  827. }
  828. .left_bottom {
  829. width: 100%;
  830. height: 280px;
  831. background-image: url(../assets/svg/bjmin.svg);
  832. background-size:100%;
  833. margin-top: 28px;
  834. box-sizing: border-box;
  835. }
  836. .left_eltable{
  837. width: 100%;
  838. height: 200px;
  839. color: #222;
  840. padding: 10px 8px;
  841. font-size: 14px;
  842. box-sizing: border-box;
  843. margin-top: 12px;
  844. }
  845. .left_eltabledivtitle {
  846. width: 100%;
  847. height: 35px;
  848. background: rgba(0,240,255,0.08);
  849. border-radius: 0px 0px 0px 0px;
  850. color: #FFFFFF;
  851. display: flex;
  852. align-items: center;
  853. justify-content: space-around;
  854. position:relative;
  855. overflow: hidden;
  856. }
  857. .left_eltabledivtitles{
  858. width: 372px;
  859. height: 75px;
  860. background: radial-gradient( #84C4FF 0%, rgba(0,209,255,0.5) 37%, rgba(0,0,0,0) 100%);
  861. position: absolute;
  862. top: -40px;
  863. }
  864. .left_eltablediv{
  865. width: 372px;
  866. height: 40px;
  867. font-family: Abhaya Libre, Abhaya Libre;
  868. font-weight: 400;
  869. color: rgba(255,255,255,0.78);
  870. text-shadow: 1px 1px 1px rgba(0,0,0,0.25);
  871. display: flex;
  872. align-items: center;
  873. }
  874. .left_eltabnormal{
  875. font-size: 14px;
  876. color: #30B4FF;
  877. }
  878. .left_eltabnormals{
  879. font-size: 14px;
  880. color: #DD7D4D;
  881. }
  882. .left_eltabledivs{
  883. width: 372px;
  884. height: 40px;
  885. background: rgba(0,240,255,0.08);
  886. font-family: Abhaya Libre, Abhaya Libre;
  887. font-weight: 400;
  888. color: rgba(255,255,255,0.78);
  889. line-height: 14px;
  890. text-shadow: 1px 1px 1px rgba(0,0,0,0.25);
  891. display: flex;
  892. align-items: center;
  893. }
  894. el-table{
  895. color: #222;
  896. }
  897. .right {
  898. width: 386px;
  899. display: flex;
  900. flex-direction: column;
  901. }
  902. .right_jia{
  903. display: flex;
  904. align-items: center;
  905. justify-content: space-between;
  906. }
  907. .right_logo {
  908. width:250px;
  909. height: 40px;
  910. margin-top: 40px;
  911. font-size: 16px;
  912. color: #DBF9FF;
  913. margin-bottom:10px;
  914. }
  915. .right_top {
  916. width: 100%;
  917. height: 280px;
  918. background-image: url(../assets/svg/bjmin.svg);
  919. background-size:100%;
  920. }
  921. .left_topdiv{
  922. width: 100%;
  923. height: 92px;
  924. background-image: url(../assets/svg/01.svg);
  925. background-size: 100%;
  926. background-repeat: no-repeat;
  927. margin-top: 26px;
  928. display: flex;
  929. flex-direction: column;
  930. justify-content: space-around;
  931. align-items: center;
  932. }
  933. .left_topdivname{
  934. font-family: Alimama FangYuanTi VF-SemiBold, Alimama FangYuanTi VF-SemiBold;
  935. font-weight: normal;
  936. font-size: 14px;
  937. font-style: normal;
  938. text-transform: none;
  939. margin-top: 6px;
  940. margin-left: 60px;
  941. color: linear-gradient(89.99999999999996deg, #DBF9FF 36%, #A9F0FF 86%);
  942. }
  943. .left_topdivpay{
  944. font-family: Andada Pro, Andada Pro;
  945. font-weight: normal;
  946. font-size: 24px;
  947. font-style: normal;
  948. text-transform: none;
  949. color: linear-gradient(89.99999997571749deg, #30CBEB 0%, #FFFFFF 100%);
  950. margin-bottom: 10px;
  951. margin-left: 60px;
  952. }
  953. .left_topdivname1{
  954. font-family: Alimama FangYuanTi VF-SemiBold, Alimama FangYuanTi VF-SemiBold;
  955. font-weight: normal;
  956. font-size: 14px;
  957. font-style: normal;
  958. text-transform: none;
  959. margin-top: 6px;
  960. margin-left: 60px;
  961. background-image: linear-gradient(to bottom, #EBE330, #FFFFFF) !important;
  962. -webkit-background-clip: text !important;
  963. background-clip: text !important;
  964. color: transparent !important;
  965. }
  966. .left_topdivpay1{
  967. font-family: Andada Pro, Andada Pro;
  968. font-weight: normal;
  969. font-size: 24px;
  970. font-style: normal;
  971. text-transform: none;
  972. background-image: linear-gradient(to bottom, #EBE330, #FFFFFF) !important;
  973. -webkit-background-clip: text !important;
  974. background-clip: text !important;
  975. color: transparent !important;
  976. margin-bottom: 10px;
  977. margin-left: 60px;
  978. }
  979. .left_topright{
  980. display: flex;
  981. }
  982. .left_cooperative{
  983. display: flex;
  984. }
  985. .left_cooperativeimg{
  986. width: 50px;
  987. height: 58px;
  988. }
  989. .left_cooperativename{
  990. width: 100%;
  991. height: 50px;
  992. display: flex;
  993. flex-direction: column;
  994. align-items: center;
  995. margin-left: 6px;
  996. }
  997. .cooperative_title{
  998. font-family: Alimama FangYuanTi VF, Alimama FangYuanTi VF;
  999. font-weight: 500;
  1000. font-size: 14px;
  1001. color: #FFFFFF;
  1002. margin-top: 2px;
  1003. }
  1004. .cooperative_title1{
  1005. font-size: 24px;
  1006. color: #30CBEB;
  1007. line-height: 36px;
  1008. }
  1009. .left_topleft {
  1010. display: flex;
  1011. }
  1012. .left_Alarm{
  1013. width: 100%;
  1014. height: 92px;
  1015. background-image: url(../assets/svg/02.svg);
  1016. background-size: 100%;
  1017. background-repeat: no-repeat;
  1018. margin-top: 26px;
  1019. display: flex;
  1020. flex-direction: column;
  1021. justify-content: space-around;
  1022. align-items: center;
  1023. letter-spacing: 1.5px;
  1024. }
  1025. .left_Alarmleft{
  1026. width: 50%;
  1027. }
  1028. .left_Alarm1right{
  1029. width: 50%;
  1030. }
  1031. .right_center {
  1032. width: 100%;
  1033. height: 300px;
  1034. background-image: url(../assets/svg/bjmin.svg);
  1035. background-size:100%;
  1036. margin-top: 50px;
  1037. background-repeat: no-repeat;
  1038. box-sizing: border-box;
  1039. display: flex;
  1040. flex-direction: column;
  1041. }
  1042. .right_bottom {
  1043. width: 100%;
  1044. height: 280px;
  1045. border-radius: 8px 8px 8px 8px;
  1046. font-size: 14px;
  1047. background-image: url(../assets/svg/bjmin.svg);
  1048. background-size:100%;
  1049. margin-top: 30px;
  1050. box-sizing: border-box;
  1051. }
  1052. .right_monitor{
  1053. width: 100%;
  1054. display: flex;
  1055. }
  1056. .right_monitors{
  1057. width: 100%;
  1058. display: flex;
  1059. margin-top: 14px;
  1060. }
  1061. .right_bottomrevenue{
  1062. width: 50%;
  1063. display: flex;
  1064. align-items: center;
  1065. padding: 0px 10px;
  1066. margin-top: 20px;
  1067. }
  1068. .right_bottomrevenueimg{
  1069. width: 57px;
  1070. height: 54px;
  1071. }
  1072. .right_bottomrevenuediv{
  1073. margin-left: 10px;
  1074. }
  1075. .right_bottomrevenuedivd{
  1076. font-family: Alimama FangYuanTi VF, Alimama FangYuanTi VF;
  1077. font-weight: 400 !important;
  1078. font-size: 14px;
  1079. color: #CBF2FA;
  1080. font-style: normal;
  1081. text-transform: none;
  1082. }
  1083. .right_bottomrevenuev{
  1084. font-family: Chusung-16;
  1085. font-weight: normal;
  1086. font-size: 24px;
  1087. color: #30DCFF;
  1088. font-style: normal;
  1089. line-height: 26px;
  1090. }
  1091. .right_bottomprogress{
  1092. display: flex;
  1093. flex-direction: column;
  1094. margin-top:15px;
  1095. }
  1096. .bottomprogress{
  1097. display: flex;
  1098. justify-content: space-between;
  1099. margin-bottom: 4px;
  1100. }
  1101. .bottomprogress2{
  1102. display: flex;
  1103. }
  1104. .bottomprogress1{
  1105. width: 40px;
  1106. height: 20px;
  1107. border: 1px solid;
  1108. border-image: linear-gradient(180deg, rgba(0, 255, 255, 0.6), rgba(25, 156, 229, 0.6)) 1 1;
  1109. margin-right: 5px;
  1110. display: flex;
  1111. font-size: 12px;
  1112. line-height: 8px;
  1113. align-items: center;
  1114. justify-content: center;
  1115. }
  1116. ::v-deep .el-progress-bar__innerText {
  1117. display: none !important;
  1118. }
  1119. ::v-deep .destination .el-progress-bar__outer {
  1120. display: flex;
  1121. justify-content: end;
  1122. }
  1123. ::v-deep .el-progress{
  1124. border-radius: 0 !important;
  1125. }
  1126. ::v-deep .el-progress-bar{
  1127. border-radius: 0 !important;
  1128. }
  1129. ::v-deep .el-progress-bar__outer{
  1130. border-radius: 0 !important;
  1131. }
  1132. ::v-deep .el-progress-bar__inner{
  1133. border-radius: 0 !important;
  1134. }
  1135. .el-progress-bar__inner {
  1136. position: static;
  1137. }
  1138. .center {
  1139. flex: 1;
  1140. height: 100vh;
  1141. display: flex;
  1142. flex-direction: column;
  1143. padding-top: 100px;
  1144. }
  1145. .center_top{
  1146. width: 100%;
  1147. height: 110px;
  1148. display: flex;
  1149. justify-content:space-around;
  1150. padding: 0px 100px;
  1151. margin-top:20px;
  1152. }
  1153. .center_top1img11{
  1154. width: 220px;
  1155. height: 110px;
  1156. background-image: url(../assets/svg/gong.svg);
  1157. background-size:100% 100%;
  1158. background-repeat: no-repeat;
  1159. display: flex;
  1160. flex-direction: column;
  1161. justify-content: center;
  1162. align-items: center;
  1163. padding-left:90px;
  1164. padding-top: 10px;
  1165. }
  1166. .center_top1img22{
  1167. width: 220px;
  1168. height: 110px;
  1169. background-image: url(../assets/svg/cdian.svg);
  1170. background-size:100% 100%;
  1171. background-repeat: no-repeat;
  1172. display: flex;
  1173. flex-direction: column;
  1174. justify-content: center;
  1175. align-items: center;
  1176. padding-left:80px;
  1177. padding-top: 10px;
  1178. }
  1179. .center_top1img33{
  1180. width: 220px;
  1181. height: 110px;
  1182. background-image: url(../assets/svg/soc20.svg);
  1183. background-size:100% 100%;
  1184. background-repeat: no-repeat;
  1185. display: flex;
  1186. flex-direction: column;
  1187. justify-content: center;
  1188. align-items: center;
  1189. padding-left:60px;
  1190. padding-top: 10px;
  1191. }
  1192. .center_top1img44{
  1193. width: 220px;
  1194. height: 110px;
  1195. background-image: url(../assets/svg/soc20.svg);
  1196. background-size:100% 100%;
  1197. background-repeat: no-repeat;
  1198. display: flex;
  1199. flex-direction: column;
  1200. justify-content: center;
  1201. align-items: center;
  1202. padding-left:90px;
  1203. padding-top: 10px;
  1204. }
  1205. .center_top1img1{
  1206. font-family: Alimama FangYuanTi VF, Alimama FangYuanTi VF;
  1207. font-weight: 500;
  1208. font-size: 16px;
  1209. color: #FFFFFF;
  1210. text-shadow: 1px 1px 1px rgba(0,0,0,0.25);
  1211. font-style: normal;
  1212. text-transform: none;
  1213. }
  1214. .center_top1img21{
  1215. font-family: Alimama FangYuanTi VF, Alimama FangYuanTi VF;
  1216. font-weight: bold;
  1217. color: #20FEAE;
  1218. font-size: 30px;
  1219. text-shadow: 1px 1px 0px rgba(0,0,0,0.25);
  1220. font-style: normal;
  1221. text-transform: none;
  1222. }
  1223. .center_top1img2{
  1224. font-family: Andada Pro, Andada Pro;
  1225. font-weight: normal;
  1226. font-size: 30px;
  1227. font-style: normal;
  1228. text-transform: none;
  1229. color: #30CBEB;
  1230. display: flex;
  1231. align-items: center;
  1232. align-items: flex-end;
  1233. }
  1234. .center_bottom{
  1235. display: flex;
  1236. justify-content: center;
  1237. }
  1238. .center_bottomdiv{
  1239. display: flex;
  1240. justify-content: space-between;
  1241. position: fixed;
  1242. bottom:20px;
  1243. }
  1244. .center_bottom1{
  1245. margin-right: 8px;
  1246. }
  1247. .center_bottom2{
  1248. width: 90px;
  1249. height: 32px;
  1250. display: flex;
  1251. justify-content: center;
  1252. align-items: center;
  1253. cursor: pointer;
  1254. font-weight: 400;
  1255. font-size: 16px;
  1256. color: #C4F3FE;
  1257. background-image: url(../assets/svg/gliang.svg);
  1258. background-size: 100%;
  1259. background-repeat: no-repeat;
  1260. }
  1261. .center_bottom3{
  1262. width: 90px;
  1263. height: 32px;
  1264. display: flex;
  1265. justify-content: center;
  1266. align-items: center;
  1267. cursor: pointer;
  1268. font-weight: 400;
  1269. font-size: 16px;
  1270. color: #C4F3FE;
  1271. background-image: url(../assets/svg/buliang.svg);
  1272. background-size: 100%;
  1273. background-repeat: no-repeat;
  1274. }
  1275. .center_bottom4{
  1276. width: 90px;
  1277. height: 32px;
  1278. display: flex;
  1279. justify-content: center;
  1280. align-items: center;
  1281. cursor: pointer;
  1282. font-weight: 400;
  1283. font-size: 16px;
  1284. color: #C4F3FE;
  1285. background-image: url(../assets/svg/gliang.svg);
  1286. background-size: 100%;
  1287. background-repeat: no-repeat;
  1288. }
  1289. .center_bottom5{
  1290. width: 90px;
  1291. height: 32px;
  1292. display: flex;
  1293. justify-content: center;
  1294. align-items: center;
  1295. font-weight: 400;
  1296. font-size: 16px;
  1297. color: #C4F3FE;
  1298. background-image: url(../assets/svg/gliang.svg);
  1299. background-size: 100%;
  1300. background-repeat: no-repeat;
  1301. }
  1302. .center_bottom6{
  1303. margin-left: 8px;
  1304. }
  1305. #main {
  1306. width: 100%;
  1307. height: 803px;
  1308. margin-top: 80px;
  1309. display: flex;
  1310. justify-content: center;
  1311. background:url(../assets/svg/base.svg);
  1312. background-size: 100% 90%;
  1313. background-repeat: no-repeat;
  1314. }
  1315. #column {
  1316. flex: 1;
  1317. height: 255px;
  1318. margin-top: 20px;
  1319. padding: 0px 8px;
  1320. box-sizing: border-box;
  1321. }
  1322. #income {
  1323. width: 100%;
  1324. flex: 1;
  1325. margin-top: 20px;
  1326. padding: 0px 8px;
  1327. box-sizing: border-box;
  1328. }
  1329. #safety{
  1330. width: 148px;
  1331. height: 244px;
  1332. }
  1333. .custom-font18 {
  1334. font-family: 'Andada Pro', sans-serif;
  1335. font-weight: bold;
  1336. font-style: italic;
  1337. letter-spacing: 1.5px;
  1338. background-image: linear-gradient(to bottom, #30CBEB 0%, #FFFFFF 40%, #FFFFFF 41%, #FFFFFF 100%); /* 调整颜色渐变位置和数量 */
  1339. -webkit-background-clip: text !important;
  1340. background-clip: text !important;
  1341. color: transparent !important;
  1342. }
  1343. .custom-font30 {
  1344. font-family: 'Andada Pro', sans-serif;
  1345. font-weight: bold;
  1346. font-style: italic;
  1347. letter-spacing: 1.5px;
  1348. background-image: linear-gradient(to bottom, #30CBEB, #FFFFFF); /* 调整颜色渐变位置和数量 */
  1349. -webkit-background-clip: text !important;
  1350. background-clip: text !important;
  1351. color: transparent !important;
  1352. }
  1353. .custom-fonts {
  1354. font-family: 'Andada Pro', sans-serif;
  1355. font-weight: bold;
  1356. font-style: italic;
  1357. letter-spacing: 1.5px;
  1358. }
  1359. .TiF_font {
  1360. font-family: 'AlimamaFangYuanTiF', sans-serif;
  1361. }
  1362. .execdata{
  1363. overflow: hidden;
  1364. }
  1365. .execInfo {
  1366. width: 100%;
  1367. height: 200px;
  1368. overflow: hidden;
  1369. }
  1370. .scrolladdress{
  1371. width: 90px;
  1372. margin-left: 10px;
  1373. margin-right: 10px;
  1374. white-space: nowrap; /* 不换行 */
  1375. overflow: hidden; /* 隐藏超出部分 */
  1376. text-overflow: ellipsis; /* 使用省略号表示超出部分 */
  1377. }
  1378. .scrollcontent{
  1379. width: 160px;
  1380. white-space: nowrap; /* 不换行 */
  1381. overflow: hidden; /* 隐藏超出部分 */
  1382. text-overflow: ellipsis; /* 使用省略号表示超出部分 */
  1383. box-sizing: border-box;
  1384. }
  1385. .scrollevent{
  1386. width: 44px;
  1387. }
  1388. .left_eltabnormal{
  1389. width: 50px;
  1390. white-space: nowrap; /* 不换行 */
  1391. overflow: hidden; /* 隐藏超出部分 */
  1392. text-overflow: ellipsis; /* 使用省略号表示超出部分 */
  1393. }
  1394. .left_eltabnormal1{
  1395. width: 50px;
  1396. white-space: nowrap; /* 不换行 */
  1397. overflow: hidden; /* 隐藏超出部分 */
  1398. text-overflow: ellipsis; /* 使用省略号表示超出部分 */
  1399. }
  1400. .left_boxt1 {
  1401. font-size: 18px;
  1402. display: flex;
  1403. align-items: center;
  1404. :deep(.el-select__wrapper) {
  1405. .el-select__prefix {
  1406. background-image: linear-gradient(to bottom, #30CBEB, #FFFFFF); /* 调整颜色渐变位置和数量 */
  1407. -webkit-background-clip: text !important;
  1408. background-clip: text !important;
  1409. color: transparent !important;
  1410. }
  1411. :deep(.el-select__selected-item) {
  1412. font-size: 22px;
  1413. }
  1414. background-color: rgb(0 0 0 / 0%);
  1415. box-shadow: 0 0 0 0 !important;
  1416. --el-input-transparent-border: 0 0 0 0px;
  1417. --el-input-hover-border: 0px !important;
  1418. --el-input-border: 0px;
  1419. // background-color:
  1420. }
  1421. :deep(.el-select .el-input__wrapper.is-focus) {
  1422. box-shadow: 0 0 0 0 !important;
  1423. }
  1424. :deep(.el-select .el-input.is-focus .el-input__wrapper) {
  1425. box-shadow: 0 0 0 0 !important;
  1426. }
  1427. // 自定义el-select的下拉箭头
  1428. :deep(.el-select__caret) {
  1429. /* 为下拉小箭头留出一点位置,避免被文字覆盖 */
  1430. padding-right: 14px;
  1431. width: 24px;
  1432. height: 24px;
  1433. /* 很关键:将默认的select选择框样式清除 */
  1434. appearance: none;
  1435. /* 自定义图片 */
  1436. background: url("http://ourjs.github.io/static/2015/arrow.png") no-repeat scroll right center transparent;
  1437. /* 自定义图片的大小 */
  1438. background-size: 100% 100%;
  1439. }
  1440. /* 将小箭头的样式去去掉 */
  1441. :deep(.el-select__suffix .el-icon svg) {
  1442. width: 0;
  1443. }
  1444. :deep(.el-icon-arrow-up::before) {
  1445. content: "";
  1446. }
  1447. :deep(.el-select--large .el-select__wrapper) {
  1448. font-size: 24px;
  1449. }
  1450. }
  1451. .el-select-dropdown__item{
  1452. color: #fff;
  1453. font-size: 16px;
  1454. padding-left:20px;
  1455. }
  1456. .is-selected{
  1457. color: #30CBEB;
  1458. font-size: 16px;
  1459. padding-left:20px;
  1460. }
  1461. .el-select-dropdown__item.is-hovering{
  1462. background-color: rgb(0 0 0 / 0%);
  1463. }
  1464. </style>