provincialEnergyStations.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447
  1. <template>
  2. <div class="ppage">
  3. <div class="page provincialEnergyStationsPage">
  4. <div class="timeBox">{{ time }}</div>
  5. <div class="kaiguanBox"><img src="../../../../public/largeScreenImg/kaiguan.png" style="width: 30px;height: 30px"/></div>
  6. <div class="topTiltle">
  7. <span class="title">全省新能源场站概况</span>
  8. </div>
  9. <div class="btuGroup">
  10. <div class="topBtu topRightBtu" @click="pushPreProject()">
  11. <span class="btuText">前期项目</span>
  12. </div>
  13. <div class="topBtu topRightBtu" @click="pushStationResource()">
  14. <span class="btuText">在运场站</span>
  15. </div>
  16. <div class="topBtu topLeftBtu" @click="back()">
  17. <span class="btuText">某省风光资源概况&nbsp;</span>
  18. </div>
  19. <div class="topBtu topRightBtu" @click="push()">
  20. <span class="btuText">后台管理</span>
  21. </div>
  22. </div>
  23. <div class="myMain-container">
  24. <div class="rightTextBg">
  25. <div class="rightBg topBox">
  26. <div class="rightTiltleTextBg">
  27. <div class="rightMainTitle">
  28. <span class="mainTitle">全省新能源信息</span>
  29. </div>
  30. </div>
  31. <div class="rightTopContent">
  32. <div class="contentBox">
  33. <span class="numberBox">{{ provinceInfo.fnum }}</span>
  34. <span class="textBox">风电场个数</span>
  35. </div>
  36. <div class="contentBox">
  37. <span class="numberBox">{{ provinceInfo.fhours }}</span>
  38. <span class="textBox">等效小时数</span>
  39. </div>
  40. <div class="contentBox">
  41. <span class="numberBox">{{ provinceInfo.gnum }}</span>
  42. <span class="textBox">光伏站个数</span>
  43. </div>
  44. <div class="contentBox">
  45. <span class="numberBox">{{ provinceInfo.ghours }}</span>
  46. <span class="textBox">等效小时数</span>
  47. </div>
  48. </div>
  49. </div>
  50. <div class="rightBg bottomBox">
  51. <div class="rightTiltleTextBg">
  52. <div class="rightMainTitle">
  53. <span class="mainTitle">某集团新能源信息</span>
  54. </div>
  55. </div>
  56. <div class="rightTopContent">
  57. <div class="contentBox">
  58. <span class="numberBox">{{ hdInfo.fnum }}</span>
  59. <span class="textBox">风电场个数</span>
  60. </div>
  61. <div class="contentBox">
  62. <span class="numberBox">{{ hdInfo.fhours }}</span>
  63. <span class="textBox">{{ hdInfo.fename }}</span>
  64. </div>
  65. <div class="contentBox">
  66. <span class="numberBox">{{ hdInfo.gnum }}</span>
  67. <span class="textBox">光伏站个数</span>
  68. </div>
  69. <div class="contentBox">
  70. <span class="numberBox">{{ hdInfo.ghours }}</span>
  71. <span class="textBox">{{ hdInfo.gename }}</span>
  72. </div>
  73. </div>
  74. </div>
  75. </div>
  76. <div class="mapBtuBg">
  77. <div id="mapBtuOne" class="mapBtu mapBtuBefore" @click="clickBtu('mapBtuOne')">
  78. <span class="mapBtuText">地形图</span>
  79. </div>
  80. <!-- <div id="mapBtuTwo" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuTwo')">-->
  81. <!-- <span class="mapBtuText">风场气象图</span>-->
  82. <!-- </div>-->
  83. <div id="mapBtuThree" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuThree')">
  84. <span class="mapBtuText">风资源分布图</span>
  85. </div>
  86. <!-- <div id="mapBtuFour" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuFour')">-->
  87. <!-- <span class="mapBtuText">光辐射气象图</span>-->
  88. <!-- </div>-->
  89. <div id="mapBtuFive" class="mapBtu mapBtuAfter" @click="clickBtu('mapBtuFive')">
  90. <span class="mapBtuText">光资源分布图</span>
  91. </div>
  92. </div>
  93. <div v-if="mapMark === 'mapBtuOne'">
  94. <bige-map ref="childMethod" :mapValue="mapValue"/>
  95. </div>
  96. <div v-if="mapMark === 'mapBtuThree'">
  97. <bige-heat-map ref="childMethod" :mapValue="mapValue"/>
  98. </div>
  99. <div v-if="mapMark === 'mapBtuFive'">
  100. <bige-heat-sun-map ref="childMethod" :mapValue="mapValue"/>
  101. </div>
  102. <div v-if="mapMark === 'mapBtu'">
  103. <!-- <zai-xian-bige-map ref="childMethod" :mapValue="mapValue"/>-->
  104. </div>
  105. </div>
  106. </div>
  107. </div>
  108. </template>
  109. <script>
  110. import {getStationSeat, hauFuInfo} from "@/api/biz/dataQuery/largeScreenPage";
  111. import defaultData from "../../../utils/tpMockData/data";
  112. import bigeMap from "@/views/largeScreenPage/components/bigeMap";
  113. import bigeHeatMap from "@/views/largeScreenPage/components/bigeHeatMap";
  114. import bigeHeatSunMap from "@/views/largeScreenPage/components/bigeHeatSunMap";
  115. import zaiXianBigeMap from "@/views/largeScreenPage/components/zaiXianBigeMap";
  116. export default {
  117. name: "provincialEnergyStations",
  118. components: {
  119. bigeMap,bigeHeatMap,bigeHeatSunMap,zaiXianBigeMap
  120. },
  121. data() {
  122. return {
  123. timer: null,
  124. time: '',
  125. mapMark:'mapBtuOne',
  126. provinceInfo: {//全省信息
  127. fnum:'100',
  128. fhours:'2496h',
  129. gnum:'41',
  130. ghours:'1620h'
  131. },
  132. hdInfo: { //华电信息
  133. fnum:'10',
  134. fename:'某风电场',//风场站名称
  135. fhours:'3256h',
  136. gnum:'4',
  137. gename:'某光伏场站',//光伏站名称
  138. ghours:'1636h'
  139. },
  140. //地图传值
  141. mapValue: {
  142. level: null,//地图层级
  143. center: [],//中心坐标
  144. allStationInfo: null,//场站坐标
  145. },
  146. allStationSeat:[],//场站位置
  147. }
  148. },
  149. destroyed() {
  150. clearInterval(this.timer)
  151. this.timer = null
  152. },
  153. mounted() {
  154. this.formatTime()
  155. this.getInfo()
  156. this.timer = setInterval(this.formatTime, 1000 * 60)
  157. },
  158. methods: {
  159. getInfo() {
  160. this.allStationSeat = defaultData.allStationSeat
  161. this.mapValue = {
  162. params:new Date(),
  163. level: null,//地图层级
  164. center: [],//中心坐标
  165. allStationInfo: this.allStationSeat,//场站坐标
  166. }
  167. // getStationSeat().then(res=>{
  168. // // console.log(res.data)
  169. // this.allStationSeat = res.data
  170. // this.mapValue = {
  171. // params:new Date(),
  172. // level: null,//地图层级
  173. // center: [],//中心坐标
  174. // allStationInfo: res.data,//场站坐标
  175. // }
  176. // }).catch(err=>{
  177. // console.log('所有场站位置查询异常' + err)
  178. // })
  179. // hauFuInfo().then(res => {
  180. // this.provinceInfo = res.data.provinceInfo
  181. // this.hdInfo = res.data.hdInfo
  182. // }).catch(err => {
  183. // console.log('华富总体信息查询异常' + err)
  184. // })
  185. },
  186. push() {
  187. this.$router.push({path: "/dataQuery/windTowerStatusInfo"})
  188. },
  189. back() {
  190. this.$router.push({path: "/"})
  191. },
  192. pushPreProject() {
  193. this.$router.push({path: "/homepage/preProjectResources"})
  194. },
  195. pushStationResource() {
  196. this.$router.push({path: "/homepage/stationResources"})
  197. },
  198. pushZaiXian(){
  199. if(this.mapMark === 'mapBtuOne'){
  200. let center = this.$refs.childMethod.center
  201. let level = this.$refs.childMethod.level
  202. this.mapValue = {
  203. params:new Date(),
  204. level: level === ''?null:level,//地图层级
  205. center: center.length === 0?[]:[center.lat,center.lng],//中心坐标
  206. allStationInfo: this.allStationSeat,//场站坐标
  207. }
  208. this.mapMark = 'mapBtu'
  209. }
  210. },
  211. clickBtu(id) {
  212. let center = this.$refs.childMethod.center
  213. let level = this.$refs.childMethod.level
  214. this.mapValue = {
  215. params:new Date(),
  216. level: level === ''?null:level,//地图层级
  217. center: center.length === 0?[]:[center.lat,center.lng],//中心坐标
  218. allStationInfo: this.allStationSeat,//场站坐标
  219. }
  220. this.mapMark = id
  221. let clickItem = document.getElementById(id)
  222. let activeItem = document.querySelector('.mapBtuBefore')
  223. activeItem.classList.remove('mapBtuBefore')
  224. activeItem.classList.add('mapBtuAfter')
  225. clickItem.classList.remove('mapBtuAfter')
  226. clickItem.classList.add('mapBtuBefore')
  227. },
  228. /*时间格式化*/
  229. formatTime() {
  230. this.time = ''
  231. let date = new Date()
  232. let year = date.getFullYear(); // 年
  233. let month = date.getMonth() + 1; // 月
  234. let day = date.getDate();
  235. let hour = date.getHours(); // 获取当前小时数(0-23)
  236. let minutes = date.getMinutes();
  237. if (month < 10) month = "0" + month;
  238. if (day < 10) day = "0" + day;
  239. if (minutes < 10) minutes = "0" + minutes;
  240. this.time = year + "-" + month + "-" + day + " " + hour + ' : ' + minutes;
  241. }
  242. }
  243. }
  244. </script>
  245. <style scoped>
  246. .ppage {
  247. width: 100%;
  248. height: calc(100vh);
  249. background: url(../../../assets/largeScreenImg/backBg.png) no-repeat;
  250. background-size: 100% 100%;
  251. }
  252. .provincialEnergyStationsPage {
  253. width: 100%;
  254. height: calc(100vh);
  255. /*background: url(https://lanhu.oss-cn-beijing.aliyuncs.com/ps6g1swu667otdfgvidaizwk7p5p4on7b9azu9yxgzdr9vygb97c721c8b-8de6-4c17-9b4d-952d26ecb72e) -202px -3px no-repeat;*/
  256. /*background-size: 100% 100%;*/
  257. color: white;
  258. }
  259. .timeBox {
  260. position: absolute;
  261. left: 2%;
  262. top: 0;
  263. font-size: 20px;
  264. line-height: 40px;
  265. font-family: timeFont !important;
  266. }
  267. .page {
  268. position: fixed;
  269. top: 0;
  270. left: 0;
  271. bottom: 0;
  272. right: 0;
  273. overflow: auto;
  274. box-shadow: inset -1px -20px 550px 200px rgb(12 25 69 / 80%);
  275. }
  276. .topTiltle {
  277. width: 100%;
  278. height: 5.5%;
  279. background: url(../../../assets/largeScreenImg/index/topTitleBg.png) -2px -1px no-repeat;
  280. background-size: 100% 100%;
  281. display: flex;
  282. justify-content: center;
  283. }
  284. .title {
  285. width: 17%;
  286. height: 100%;
  287. text-align: center;
  288. margin-top: .2%;
  289. font-size: 30px;
  290. font-weight: 800;
  291. background-image: linear-gradient(
  292. 360deg,
  293. rgba(178, 204, 252, 1) 0,
  294. rgba(178, 204, 252, 1) 0,
  295. rgba(255, 255, 255, 1) 100%,
  296. rgba(255, 255, 255, 1) 100%
  297. );
  298. background-clip: text;
  299. color: transparent;
  300. }
  301. .btuGroup {
  302. position: absolute;
  303. right: 0;
  304. top: .3%;
  305. color: white;
  306. width: 30%;
  307. height: 5.5%;
  308. display: flex;
  309. font-size: 18px;
  310. }
  311. .topBtu {
  312. height: 100%;
  313. margin-top: -1.5%;
  314. display: flex;
  315. justify-content: center;
  316. align-items: center;
  317. cursor: pointer;
  318. }
  319. .topRightBtu {
  320. background: url(../../../assets/largeScreenImg/index/topRightBtuBg.png) 100% no-repeat;
  321. background-size: 100% 100%;
  322. width: 40%;
  323. }
  324. .topLeftBtu {
  325. background: url(../../../assets/largeScreenImg/index/topLeftBtuBg.png) 100% no-repeat;
  326. background-size: 100% 100%;
  327. width: 60%;
  328. }
  329. .rightTextBg {
  330. position: absolute;
  331. right: 2%;
  332. top: 8%;
  333. width: 20%;
  334. display: flex;
  335. flex-direction: column;
  336. z-index: 1000000;
  337. }
  338. .rightBg {
  339. background: url(../../../assets/largeScreenImg/index/leftTextBg.png) 100% no-repeat;
  340. background-size: 100% 100%;
  341. padding: 5%;
  342. }
  343. .bottomBox {
  344. margin-top: 2%;
  345. }
  346. .mapBtuBg {
  347. position: absolute;
  348. right: 22%;
  349. top: 7%;
  350. width: 10%;
  351. z-index: 10000;
  352. }
  353. .rightTiltleTextBg {
  354. height: 32px;
  355. background: url(../../../assets/largeScreenImg/index/rightTiltleTextBg.png) 100% no-repeat;
  356. background-size: 100% 100%;
  357. }
  358. .rightMainTitle {
  359. color: rgba(183, 243, 252, 1);
  360. font-size: 20px;
  361. font-weight: 550;
  362. margin-left: 8%;
  363. position: relative;
  364. top: -25%;
  365. }
  366. .rightTopContent {
  367. display: flex;
  368. justify-content: space-around;
  369. flex-wrap: wrap;
  370. }
  371. .contentBox {
  372. margin-top: 5%;
  373. width: 35%;
  374. height: 125px;
  375. background: url(../../../assets/largeScreenImg/index/liubianxingBorder.png) 100% no-repeat;
  376. background-size: 100% 100%;
  377. display: flex;
  378. flex-direction: column;
  379. justify-content: center;
  380. align-items: center;
  381. }
  382. .numberBox {
  383. font-size: 24px;
  384. font-weight: 700;
  385. background-image: linear-gradient(
  386. rgba(255, 255, 255, 1) 0,
  387. rgba(255, 255, 255, 1) 0,
  388. rgba(70, 255, 222, 1) 98.730469%,
  389. rgba(70, 255, 222, 1) 100%
  390. );
  391. background-clip: text;
  392. color: transparent;
  393. }
  394. .mapBtu {
  395. height: 50px;
  396. width: 200px;
  397. }
  398. .mapBtuAfter {
  399. background: url(../../../assets/largeScreenImg/index/mapBtuClickAfter.png) 100% no-repeat;
  400. background-size: 100% 100%;
  401. }
  402. .mapBtuBefore {
  403. background: url(../../../assets/largeScreenImg/index/mapBtuClickBefore.png) 100% no-repeat;
  404. background-size: 100% 100%;
  405. /*margin-top: 9px;*/
  406. }
  407. .mapBtuText {
  408. line-height: 50px;
  409. font-size: 16px;
  410. display: flex;
  411. align-items: center;
  412. margin-left: 20%;
  413. }
  414. .kaiguanBox{
  415. cursor: pointer;
  416. position: absolute;
  417. left: 22%;
  418. top: .5%;
  419. }
  420. </style>