stationInfo.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763
  1. <template>
  2. <div class="page stationInfoPage">
  3. <div class="timeBox">{{ time }}</div>
  4. <div class="kaiguanBox"><img src="../../../../public/largeScreenImg/kaiguan.png" style="width: 30px;height: 30px"
  5. @click="pushZaiXian()"/></div>
  6. <div class="topTiltle">
  7. <span class="title">在运风光场站信息</span>
  8. </div>
  9. <div class="btuGroup">
  10. <div class="topBtu topLeftBtu" @click="back()">
  11. <span class="btuText">返回&nbsp;</span>
  12. </div>
  13. <div class="topBtu topRightBtu" @click="push()">
  14. <span class="btuText">后台管理</span>
  15. </div>
  16. </div>
  17. <div class="myMain-container">
  18. <div class="rightTextBg">
  19. <div class="rightBg topBox">
  20. <div class="rightTiltleTextBg">
  21. <div class="rightMainTitle" style="display: flex;justify-content: space-between;width: 100%">
  22. <span class="mainTitle" @click="pushInfo()">{{ station.stationName }}</span>
  23. <div style="display: flex;margin-right: 8%;color: #f9ff00;font-size: 16px">
  24. <span v-if="station.type === '风'">主风向:</span>
  25. <span v-else>天气:</span>{{ wdSum }}
  26. </div>
  27. </div>
  28. </div>
  29. <div class="rightTopContent" v-for="item in dataInfo">
  30. <div class="branckTitleBg">
  31. <span class="fjModel">{{ item.modelType }}
  32. <span class="number" style="margin-left: 4%">{{ item.modelTotal }}</span>台</span>
  33. </div>
  34. <div>
  35. <div class="rightMain" v-if="station.type === '风'">
  36. <div class="contentBox">
  37. <span class="numberBox">{{ item.wsAve.replace(/\.?0+$/, "") }}</span>
  38. <span class="textBox">平均风速<div class="numberBox" style="font-size: 14px">(m/s)</div></span>
  39. </div>
  40. <div class="tabelTextbg">
  41. <div class="tabelText">
  42. <div>最小风速:</div>
  43. <span>{{ item.wsMax.replace(/\.?0+$/, "") }} (m/s)</span>
  44. </div>
  45. <div class="tabelText">
  46. <div>最大风速:</div>
  47. <span>{{ item.wsMin.replace(/\.?0+$/, "") }}(m/s)</span>
  48. </div>
  49. </div>
  50. </div>
  51. <div class="rightMain" v-else>
  52. <div class="contentBox">
  53. <span class="numberBox">{{ item.wsAve.replace(/\.?0+$/, "") }}</span>
  54. <span class="textBox">平均日照<div class="numberBox" style="font-size: 14px">(W/m²)</div></span>
  55. </div>
  56. <div class="tabelTextbg">
  57. <div class="tabelText">
  58. <div>最小日照:</div>
  59. <span>{{ item.wsMax.replace(/\.?0+$/, "") }} (W/m²)</span>
  60. </div>
  61. <div class="tabelText">
  62. <div>最大日照:</div>
  63. <span>{{ item.wsMin.replace(/\.?0+$/, "") }}(W/m²)</span>
  64. </div>
  65. </div>
  66. </div>
  67. <div style="width: 100%;display: flex;justify-content: center">
  68. <dv-decoration-10 style="width:80%;height:5px;" />
  69. </div>
  70. <div class="rightMain">
  71. <div class="contentBox">
  72. <span class="numberBox">{{ item.generatingCapacityr.replace(/\.?0+$/, "") }}</span>
  73. <span class="textBox">发电量<div class="numberBox" style="font-size: 14px">(MWh)</div></span>
  74. </div>
  75. <div class="tabelTextbg">
  76. <div class="tabelText">
  77. <div>月发电量:</div>
  78. <span>{{ item.generatingCapacityy.replace(/\.?0+$/, "") }} (MWh)</span>
  79. </div>
  80. <div class="tabelText">
  81. <div>年发电量:</div>
  82. <span>{{ item.generatingCapacityr.replace(/\.?0+$/, "") }}(MWh)</span>
  83. </div>
  84. </div>
  85. </div>
  86. <div style="width: 100%;display: flex;justify-content: center">
  87. <dv-decoration-10 style="width:80%;height:5px;" />
  88. </div>
  89. <div class="rightMain">
  90. <div class="contentBox">
  91. <span class="numberBox">{{ item.realTimeTotalr.replace(/\.?0+$/, "") }}</span>
  92. <span class="textBox">满发小时数<div class="numberBox" style="font-size: 14px">(h)</div></span>
  93. </div>
  94. <div class="tabelTextbg">
  95. <div class="tabelText">
  96. <div>月累计:</div>
  97. <span>{{ item.realTimeTotaly.replace(/\.?0+$/, "") }} (h)</span>
  98. </div>
  99. <div class="tabelText">
  100. <div>年累计:</div>
  101. <span>{{ item.realTimeTotal.replace(/\.?0+$/, "") }}(h)</span>
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. <!-- -->
  107. <!-- <div class="mainContent" v-if="station.type === '风'">-->
  108. <!-- <div class="contentBox">-->
  109. <!-- <span class="numberBox">{{ item.wsAve.replace(/\.?0+$/, "") }}</span>-->
  110. <!-- <span class="textBox">平均风速<div class="numberBox" style="font-size: 14px">(m/s)</div></span>-->
  111. <!-- </div>-->
  112. <!-- <div class="contentBox">-->
  113. <!-- <span class="numberBox">{{ item.wsMax.replace(/\.?0+$/, "") }}</span>-->
  114. <!-- <span class="textBox">最大风速<div class="numberBox" style="font-size: 14px">(m/s)</div></span>-->
  115. <!-- </div>-->
  116. <!-- <div class="contentBox">-->
  117. <!-- <span class="numberBox">{{ item.wsMin }}</span>-->
  118. <!-- <span class="textBox">最小风速<div class="numberBox" style="font-size: 14px">(m/s)</div></span>-->
  119. <!-- </div>-->
  120. <!-- </div>-->
  121. <!-- <div class="mainContent" v-else>-->
  122. <!-- <div class="contentBox">-->
  123. <!-- <span class="numberBox">{{ item.wsAve.replace(/\.?0+$/, "") }}</span>-->
  124. <!-- <span class="textBox">平均日照<div class="numberBox" style="font-size: 14px">(W/m²)</div></span>-->
  125. <!-- </div>-->
  126. <!-- <div class="contentBox">-->
  127. <!-- <span class="numberBox">{{ item.wsMax.replace(/\.?0+$/, "") }}</span>-->
  128. <!-- <span class="textBox">最大日照<div class="numberBox" style="font-size: 14px">(W/m²)</div></span>-->
  129. <!-- </div>-->
  130. <!-- <div class="contentBox">-->
  131. <!-- <span class="numberBox">{{ item.wsMin }}</span>-->
  132. <!-- <span class="textBox">最小日照<div class="numberBox" style="font-size: 14px">(W/m²)</div></span>-->
  133. <!-- </div>-->
  134. <!-- </div>-->
  135. <!-- <div style="display: flex;flex-wrap: wrap;justify-content: space-around;">-->
  136. <!-- <div class="tabelTextbg">-->
  137. <!-- <div style="width: 100%;text-align: center;margin-bottom: 1%">发电量 (MWh)</div>-->
  138. <!-- <div class="split-line"></div>-->
  139. <!-- &lt;!&ndash; <el-divider></el-divider>&ndash;&gt;-->
  140. <!-- <div class="tabelText" style="padding-top: 2%;">-->
  141. <!-- <div>日累计:</div>-->
  142. <!-- <div>{{ item.generatingCapacityr.replace(/\.?0+$/, "") }}</div>-->
  143. <!-- </div>-->
  144. <!-- <div class="tabelText">-->
  145. <!-- <div>月累计:</div>-->
  146. <!-- <div>{{ item.generatingCapacityy.replace(/\.?0+$/, "") }}</div>-->
  147. <!-- </div>-->
  148. <!-- <div class="tabelText">-->
  149. <!-- <div>年累计:</div>-->
  150. <!-- <div>{{ item.generatingCapacity.replace(/\.?0+$/, "") }}</div>-->
  151. <!-- </div>-->
  152. <!-- </div>-->
  153. <!-- <div class="tabelTextbg">-->
  154. <!-- <div style="width: 100%;text-align: center;margin-bottom: 1%">等效小时数 (h)</div>-->
  155. <!-- <div class="split-line"></div>-->
  156. <!-- &lt;!&ndash; <el-divider></el-divider>&ndash;&gt;-->
  157. <!-- <div class="tabelText" style="padding-top: 2%;">-->
  158. <!-- <div>日累计:</div>-->
  159. <!-- <div>{{ item.realTimeTotalr.replace(/\.?0+$/, "") }}</div>-->
  160. <!-- </div>-->
  161. <!-- <div class="tabelText">-->
  162. <!-- <div>月累计:</div>-->
  163. <!-- <div>{{ item.realTimeTotaly.replace(/\.?0+$/, "") }}</div>-->
  164. <!-- </div>-->
  165. <!-- <div class="tabelText">-->
  166. <!-- <div>年累计:</div>-->
  167. <!-- <div>{{ item.realTimeTotal.replace(/\.?0+$/, "") }}</div>-->
  168. <!-- </div>-->
  169. <!-- </div>-->
  170. <!-- </div>-->
  171. </div>
  172. </div>
  173. </div>
  174. <div class="mapBtuBg">
  175. <div id="mapBtuOne" class="mapBtu mapBtuBefore" @click="clickBtu('mapBtuOne')">
  176. <span class="mapBtuText">地形图</span>
  177. </div>
  178. <!-- <div id="mapBtuTwo" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuTwo')">-->
  179. <!-- <span class="mapBtuText">风场气象图</span>-->
  180. <!-- </div>-->
  181. <div id="mapBtuThree" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuThree')">
  182. <span class="mapBtuText">风资源分布图</span>
  183. </div>
  184. <!-- <div id="mapBtuFour" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuFour')">-->
  185. <!-- <span class="mapBtuText">光辐射气象图</span>-->
  186. <!-- </div>-->
  187. <div id="mapBtuFive" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuFive')">
  188. <span class="mapBtuText">光资源分布图</span>
  189. </div>
  190. <div id="mapBtu3D" class="mapBtu mapBtuAfter" @click="dialog3DMap()">
  191. <span class="mapBtuText">3D地形图</span>
  192. </div>
  193. </div>
  194. </div>
  195. <div v-if="mapMark === 'mapBtuOne'">
  196. <bige-map ref="childMethod" :mapValue="mapValue"/>
  197. </div>
  198. <div v-if="mapMark === 'mapBtuThree'">
  199. <bige-heat-map ref="childMethod" :mapValue="mapValue"/>
  200. </div>
  201. <div v-if="mapMark === 'mapBtuFive'">
  202. <bige-heat-sun-map ref="childMethod" :mapValue="mapValue"/>
  203. </div>
  204. <div v-if="mapMark === 'mapBtu'">
  205. <zai-xian-bige-map ref="childMethod" :mapValue="mapValue"/>
  206. </div>
  207. <!--3D弹窗-->
  208. <div class="map3D">
  209. <el-dialog
  210. :visible.sync="dialogVisible" :modal-append-to-body="false"
  211. width="80%"
  212. :before-close="handleClose">
  213. <bige-map3-d :mapValue="mapValue" v-if="dialogVisible"/>
  214. </el-dialog>
  215. </div>
  216. <div class="bottomPushBtu" @click="pushStationResource()">
  217. <span>在运风光场站资源管理</span>
  218. </div>
  219. </div>
  220. </template>
  221. <script>
  222. import {getPointMap, stationInfo} from "@/api/biz/dataQuery/largeScreenPage";
  223. import bigeMap from "@/views/largeScreenPage/components/bigeMap";
  224. import bigeHeatMap from "@/views/largeScreenPage/components/bigeHeatMap";
  225. import bigeHeatSunMap from "@/views/largeScreenPage/components/bigeHeatSunMap";
  226. import zaiXianBigeMap from "@/views/largeScreenPage/components/zaiXianBigeMap";
  227. import bigeMap3D from "@/views/largeScreenPage/components/3DbigeMap";
  228. export default {
  229. name: "stationInfo",
  230. components: {
  231. bigeMap, bigeHeatMap, bigeHeatSunMap, zaiXianBigeMap, bigeMap3D
  232. },
  233. data() {
  234. return {
  235. timer: null,
  236. time: '',
  237. station: {stationName: "XXX风电场", type: "风"},
  238. dataInfo: [
  239. // {category:'一期',fjNum:'20',model:'恩德1.3MW机型',avgWs:'4.5',power:'39650',wd:'西南',hour:'1525'},
  240. // {category:'二期',fjNum:'30',model:'华锐1.5MW机型',avgWs:'4.7',power:'73125',wd:'西',hour:'1625'},
  241. ],
  242. modelT: [],
  243. coordinates: [],
  244. mapMark: 'mapBtuOne',
  245. //地图传值
  246. mapValue: {
  247. level: null,//地图层级
  248. center: [],//中心坐标
  249. allStationInfo: null,//场站坐标
  250. projectInfo: null,//项目坐标
  251. allPointInfo: null,//所有点位信息
  252. },
  253. allPointInfo: [],
  254. dialogVisible: false,
  255. wdSum: ''
  256. }
  257. },
  258. destroyed() {
  259. clearInterval(this.timer)
  260. this.timer = null
  261. },
  262. mounted() {
  263. this.station = JSON.parse(this.$store.getters.stationInfo)
  264. // console.log(this.station)
  265. this.formatTime()
  266. this.getPointMap()
  267. this.timer = setInterval(this.formatTime, 1000 * 60)
  268. },
  269. methods: {
  270. /*所有风机、塔、拐点坐标信息*/
  271. getPointMap() {
  272. if (this.$store.getters.allPointInfo.length > 0) {
  273. this.allPointInfo = JSON.parse(this.$store.getters.allPointInfo).info
  274. this.getInfo()
  275. } else {
  276. getPointMap().then(res => {
  277. // console.log(res.data)
  278. this.allPointInfo = res.data
  279. this.getInfo()
  280. sessionStorage.setItem("allPointInfo", JSON.stringify({info: this.allPointInfo}))
  281. this.$store.dispatch('equipmentInfo/allPointInfo', JSON.stringify({info: this.allPointInfo}))
  282. }).catch(err => {
  283. console.log('所有点位坐标:' + err)
  284. })
  285. }
  286. },
  287. getInfo() {
  288. stationInfo({stationId: this.station.id}).then(res => {
  289. console.log(res.data)
  290. let data = res.data
  291. this.dataInfo = data.modelT
  292. if (this.dataInfo) {
  293. if (this.dataInfo[0] === undefined) {
  294. this.wdSum = ''
  295. } else {
  296. this.wdSum = this.dataInfo[0].wdSum
  297. }
  298. }
  299. if (data.latitude === undefined) {
  300. this.coordinates = []
  301. } else {
  302. this.coordinates = [Number(data.latitude), Number(data.longitude)]
  303. }
  304. this.mapValue = {
  305. params: new Date(),
  306. level: 12,//地图层级
  307. center: this.coordinates,//中心坐标
  308. allStationInfo: null,//场站坐标
  309. projectInfo: null,//项目坐标
  310. id: this.station.id,
  311. allPointInfo: this.allPointInfo,//所有点位信息
  312. }
  313. }).catch(err => {
  314. this.mapValue = {
  315. params: new Date(),
  316. level: 6,//地图层级
  317. center: [],//中心坐标
  318. allStationInfo: null,//场站坐标
  319. projectInfo: null,//项目坐标
  320. id: this.station.id,
  321. allPointInfo: null,//所有点位信息
  322. }
  323. if (err.msg === 'Index: 0, Size: 0') {
  324. console.log('此场站没有风机与测风塔')
  325. } else {
  326. console.log('场站信息获取异常:', err)
  327. }
  328. })
  329. },
  330. push() {
  331. this.$router.push({path: "/dataQuery/windTowerStatusInfo"})
  332. },
  333. pushInfo() {
  334. let station = {stationId: this.station.id, equipmentNo: null}
  335. if (this.station.type === '风') {
  336. sessionStorage.setItem("realWindTowerInfo", JSON.stringify(station))
  337. this.$store.dispatch('equipmentInfo/realWindTowerInfo', JSON.stringify(station))
  338. this.$router.push({path: "/homepage/realResourcesInfo"})
  339. } else {
  340. sessionStorage.setItem("realPvWindTowerInfo", JSON.stringify(station))
  341. this.$store.dispatch('equipmentInfo/realPvWindTowerInfo', JSON.stringify(station))
  342. this.$router.push({path: "/homepage/realPvResourcesInfo"})
  343. }
  344. },
  345. back() {
  346. this.$router.push({path: "/homepage/stationResources"})
  347. },
  348. pushStationResource() {
  349. this.$router.push({path: "/homepage/stationResources"})
  350. },
  351. pushZaiXian() {
  352. if (this.mapMark === 'mapBtuOne') {
  353. let center = this.$refs.childMethod.center
  354. let level = this.$refs.childMethod.level
  355. this.mapValue = {
  356. params: new Date(),
  357. level: level === '' ? null : level,//地图层级
  358. center: center.length === 0 ? [] : [center.lat, center.lng],//中心坐标
  359. allStationInfo: null,//场站坐标
  360. projectInfo: null,//项目坐标
  361. id: this.station.id,
  362. allPointInfo: this.allPointInfo,//所有点位信息
  363. }
  364. this.mapMark = 'mapBtu'
  365. }
  366. },
  367. dialog3DMap() {
  368. let center = this.$refs.childMethod.center
  369. let level = this.$refs.childMethod.level
  370. this.mapValue = {
  371. params: new Date(),
  372. level: level === '' ? null : level,//地图层级
  373. center: center.length === 0 ? [] : [center.lat, center.lng],//中心坐标
  374. allStationInfo: null,//场站坐标
  375. projectInfo: null,//项目坐标
  376. id: this.station.id,
  377. allPointInfo: this.allPointInfo,//所有点位信息
  378. }
  379. this.dialogVisible = true
  380. },
  381. handleClose() {
  382. this.dialogVisible = false
  383. },
  384. clickBtu(id) {
  385. let center = this.$refs.childMethod.center
  386. let level = this.$refs.childMethod.level
  387. this.mapValue = {
  388. params: new Date(),
  389. level: level === '' ? null : level,//地图层级
  390. center: center.length === 0 ? [] : [center.lat, center.lng],//中心坐标
  391. allStationInfo: null,//场站坐标
  392. projectInfo: null,//项目坐标
  393. id: this.station.id,
  394. allPointInfo: this.allPointInfo,//所有点位信息
  395. }
  396. this.mapMark = id
  397. let clickItem = document.getElementById(id)
  398. let activeItem = document.querySelector('.mapBtuBefore')
  399. activeItem.classList.remove('mapBtuBefore')
  400. activeItem.classList.add('mapBtuAfter')
  401. clickItem.classList.remove('mapBtuAfter')
  402. clickItem.classList.add('mapBtuBefore')
  403. },
  404. /*时间格式化*/
  405. formatTime() {
  406. this.time = ''
  407. let date = new Date()
  408. let year = date.getFullYear(); // 年
  409. let month = date.getMonth() + 1; // 月
  410. let day = date.getDate();
  411. let hour = date.getHours(); // 获取当前小时数(0-23)
  412. let minutes = date.getMinutes();
  413. if (month < 10) month = "0" + month;
  414. if (day < 10) day = "0" + day;
  415. if (minutes < 10) minutes = "0" + minutes;
  416. this.time = year + "-" + month + "-" + day + " " + hour + ' : ' + minutes;
  417. }
  418. }
  419. }
  420. </script>
  421. <style scoped>
  422. .stationInfoPage {
  423. width: 100%;
  424. height: calc(100vh);
  425. background: url(../../../assets/largeScreenImg/backBg.png) no-repeat;
  426. background-size: 100% 100%;
  427. color: white;
  428. }
  429. .timeBox {
  430. position: absolute;
  431. left: 2%;
  432. top: 0;
  433. font-size: 20px;
  434. line-height: 40px;
  435. font-family: timeFont !important;
  436. }
  437. .page {
  438. position: fixed;
  439. top: 0;
  440. left: 0;
  441. bottom: 0;
  442. right: 0;
  443. overflow: auto;
  444. box-shadow: inset -1px -20px 550px 200px rgb(12 25 69 / 80%);
  445. }
  446. .topTiltle {
  447. width: 100%;
  448. height: 5.5%;
  449. background: url(../../../assets/largeScreenImg/index/topTitleBg.png) -2px -1px no-repeat;
  450. background-size: 100% 100%;
  451. display: flex;
  452. justify-content: center;
  453. }
  454. .title {
  455. width: 17%;
  456. height: 100%;
  457. text-align: center;
  458. margin-top: .2%;
  459. font-size: 30px;
  460. font-weight: 800;
  461. background-image: linear-gradient(
  462. 360deg,
  463. rgba(178, 204, 252, 1) 0,
  464. rgba(178, 204, 252, 1) 0,
  465. rgba(255, 255, 255, 1) 100%,
  466. rgba(255, 255, 255, 1) 100%
  467. );
  468. background-clip: text;
  469. color: transparent;
  470. }
  471. .btuGroup {
  472. position: absolute;
  473. right: 0;
  474. top: 0;
  475. color: white;
  476. width: 15%;
  477. height: 5.5%;
  478. display: flex;
  479. justify-content: flex-end;
  480. font-size: 18px;
  481. }
  482. .topBtu {
  483. height: 100%;
  484. margin-top: -1.5%;
  485. display: flex;
  486. justify-content: center;
  487. align-items: center;
  488. cursor: pointer;
  489. }
  490. .topRightBtu {
  491. background: url(../../../assets/largeScreenImg/index/topRightBtuBg.png) 100% no-repeat;
  492. background-size: 100% 100%;
  493. width: 50%;
  494. }
  495. .topLeftBtu {
  496. background: url(../../../assets/largeScreenImg/index/topLeftBtuBg.png) 100% no-repeat;
  497. background-size: 100% 100%;
  498. width: 35%;
  499. }
  500. .rightTextBg {
  501. height: calc(90vh);
  502. position: absolute;
  503. right: 2%;
  504. top: 5%;
  505. width: 20%;
  506. display: flex;
  507. flex-direction: column;
  508. z-index: 1000;
  509. }
  510. .rightBg {
  511. background: url(../../../assets/largeScreenImg/index/leftTextBg.png) 100% no-repeat;
  512. background-size: 100% 100%;
  513. padding: 5%;
  514. }
  515. .tabelTextbg {
  516. width: 80%;
  517. height: 80px;
  518. background: url(../../../assets/largeScreenImg/resourcesInfo/heightBg.png) 100% no-repeat;
  519. background-size: 100% 100%;
  520. padding: 5%;
  521. }
  522. .tabelText {
  523. width: 100%;
  524. display: flex;
  525. align-items: center;
  526. justify-content: space-between;
  527. }
  528. .mapBtuBg {
  529. position: absolute;
  530. right: 22%;
  531. top: 7%;
  532. width: 10%;
  533. z-index: 1000;
  534. }
  535. .rightTiltleTextBg {
  536. height: 32px;
  537. background: url(../../../assets/largeScreenImg/zaiyunAndqianqi/rightTitleBg.png) 100% no-repeat;
  538. background-size: 100% 100%;
  539. }
  540. .rightMainTitle {
  541. color: rgba(183, 243, 252, 1);
  542. font-size: 20px;
  543. font-weight: 550;
  544. margin-left: 8%;
  545. position: relative;
  546. top: -25%;
  547. }
  548. .rightTopContent {
  549. margin-top: 4%;
  550. }
  551. .branckTitleBg {
  552. background: url(../../../assets/largeScreenImg/zaiyunAndqianqi/branckTitleBg.png) 100% no-repeat;
  553. background-size: 100% 100%;
  554. height: 32px;
  555. display: flex;
  556. align-items: center;
  557. }
  558. .textBox {
  559. display: flex;
  560. flex-direction: column;
  561. align-items: center
  562. }
  563. .fjModel {
  564. width: 100%;
  565. margin-left: 2%;
  566. }
  567. .mainContent {
  568. display: flex;
  569. flex-wrap: wrap;
  570. justify-content: center;
  571. }
  572. .rightMain{
  573. display: flex;
  574. align-items: center;
  575. }
  576. .contentBox {
  577. margin-top: 2%;
  578. width: 40%;
  579. height: 100px;
  580. background: url(../../../assets/largeScreenImg/index/liubianxingBorder.png) 100% no-repeat;
  581. background-size: 100% 100%;
  582. display: flex;
  583. flex-direction: column;
  584. justify-content: center;
  585. align-items: center;
  586. }
  587. .number {
  588. font-weight: 700;
  589. background-image: linear-gradient(
  590. rgba(255, 255, 255, 1) 0,
  591. rgba(255, 255, 255, 1) 0,
  592. rgba(70, 255, 222, 1) 98.730469%,
  593. rgba(70, 255, 222, 1) 100%
  594. );
  595. background-clip: text;
  596. color: transparent;
  597. }
  598. .numberBox {
  599. font-size: 24px;
  600. font-weight: 700;
  601. background-image: linear-gradient(
  602. rgba(255, 255, 255, 1) 0,
  603. rgba(255, 255, 255, 1) 0,
  604. rgba(70, 255, 222, 1) 98.730469%,
  605. rgba(70, 255, 222, 1) 100%
  606. );
  607. background-clip: text;
  608. color: transparent;
  609. }
  610. .mapBtu {
  611. height: 50px;
  612. width: 200px;
  613. }
  614. .mapBtuAfter {
  615. background: url(../../../assets/largeScreenImg/index/mapBtuClickAfter.png) 100% no-repeat;
  616. background-size: 100% 100%;
  617. }
  618. .mapBtuBefore {
  619. background: url(../../../assets/largeScreenImg/index/mapBtuClickBefore.png) 100% no-repeat;
  620. background-size: 100% 100%;
  621. /*margin-top: 9px;*/
  622. }
  623. .mapBtuText {
  624. line-height: 50px;
  625. font-size: 16px;
  626. display: flex;
  627. align-items: center;
  628. margin-left: 20%;
  629. }
  630. .bottomPushBtu {
  631. background: url(../../../assets/largeScreenImg/index/topLeftBtuBg.png) 100% no-repeat;
  632. background-size: 100% 100%;
  633. line-height: 60px;
  634. width: 12%;
  635. cursor: pointer;
  636. text-align: center;
  637. position: absolute;
  638. right: 0;
  639. bottom: 0;
  640. }
  641. .kaiguanBox {
  642. cursor: pointer;
  643. position: absolute;
  644. left: 22%;
  645. top: .5%;
  646. }
  647. .map3D /deep/ .el-dialog__header, .map3D /deep/ .el-dialog__body {
  648. padding: 0;
  649. }
  650. .map3D /deep/ .el-dialog__headerbtn {
  651. z-index: 100;
  652. top: 10px;
  653. right: 10px;
  654. }
  655. .map3D /deep/ .el-dialog__headerbtn .el-dialog__close {
  656. color: #ffffff;
  657. }
  658. </style>
  659. <style scoped>
  660. .split-line {
  661. position: relative;
  662. height: 2px; /* 分割线的高度 */
  663. background-color: #f0f0f0; /* 分割线的背景色 */
  664. overflow: hidden; /* 避免伪元素溢出容器 */
  665. border-radius: 10%;
  666. }
  667. .split-line::before {
  668. content: '';
  669. position: absolute;
  670. left: 0;
  671. top: 0;
  672. width: 100%;
  673. height: 100%;
  674. background: linear-gradient(45deg, #5ffffa, #7bfafe, #5fcfff); /* 创建渐变效果 */
  675. background-size: 300%; /* 渐变区域比容器大,以便创造重复的效果 */
  676. animation: slide 5s linear infinite; /* 使用关键帧动画 */
  677. }
  678. @keyframes slide {
  679. 0% {
  680. background-position: 0 0;
  681. }
  682. 100% {
  683. background-position: 300% 0;
  684. }
  685. }
  686. /* 设置滚动条样式 */
  687. /* 设置scrollbar-thumb之前要设置scrollbar的width和height */
  688. ::-webkit-scrollbar-track {
  689. border-radius: 0;
  690. background-color: #f2f3f8;
  691. }
  692. ::-webkit-scrollbar-thumb {
  693. border-radius: 0;
  694. border-radius: 5px;
  695. background-image: -webkit-linear-gradient(0deg, rgba(202, 214, 220, 0.5) 0, #737179 100%);
  696. -webkit-transition: all .2s;
  697. transition: all .2s;
  698. }
  699. ::-webkit-scrollbar-corner {
  700. background-color: #f2f3f8;
  701. }
  702. ::-webkit-scrollbar {
  703. width: 8px;
  704. height: 8px;
  705. }
  706. </style>