index.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614
  1. <template>
  2. <div class="app-container">
  3. <div class="aerial-container">
  4. <!-- 裂解区域1 -->
  5. <div class="cracking-box-1"
  6. id="cracking-box-1"
  7. @mouseover="handleCrackingMouseover"
  8. @mouseleave="handleCrackingMouseleave"
  9. @click="handleAreaClick('裂解区域', 'cracking1')">
  10. <!--<div class="cracking-box-text-1"-->
  11. <!--id="cracking-box-text-1">裂 解 区 域</div>-->
  12. </div>
  13. <!-- 裂解区域3 -->
  14. <div class="cracking-box-3"
  15. id="cracking-box-3"
  16. @mouseover="handleCrackingMouseover"
  17. @mouseleave="handleCrackingMouseleave"
  18. @click="handleAreaClick('裂解区域', 'cracking3')">
  19. </div>
  20. <!-- 裂解区域2 -->
  21. <div class="cracking-box-2"
  22. id="cracking-box-2"
  23. @mouseover="handleCrackingMouseover"
  24. @mouseleave="handleCrackingMouseleave"
  25. @click="handleAreaClick('裂解区域', 'cracking2')">
  26. <!--<div class="cracking-box-text-2"-->
  27. <!--id="cracking-box-text-2">裂 解 区 域</div>-->
  28. </div>
  29. <!-- 压缩区域1 -->
  30. <div class="compression-box-1"
  31. id="compression-box-1"
  32. @mouseover="handleCompressionMouseover"
  33. @mouseleave="handleCompressionMouseleave"
  34. @click="handleAreaClick('压缩区域')">
  35. <!--<div class="compression-box-text-1"-->
  36. <!--id="compression-box-text-1">压 缩 区 域</div>-->
  37. </div>
  38. <!-- 压缩区域2 -->
  39. <div class="compression-box-2"
  40. id="compression-box-2"
  41. @mouseover="handleCompressionMouseover"
  42. @mouseleave="handleCompressionMouseleave"
  43. @click="handleAreaClick('压缩区域')"></div>
  44. <!-- 压缩区域3 -->
  45. <div class="compression-box-3"
  46. id="compression-box-3"
  47. @mouseover="handleCompressionMouseover"
  48. @mouseleave="handleCompressionMouseleave"
  49. @click="handleAreaClick('压缩区域')">
  50. <!--<div class="compression-box-text-3"-->
  51. <!--id="compression-box-text-3">压 缩 区 域</div>-->
  52. </div>
  53. <!-- 压缩区域4 -->
  54. <div class="compression-box-4"
  55. id="compression-box-4"
  56. @mouseover="handleCompressionMouseover"
  57. @mouseleave="handleCompressionMouseleave"
  58. @click="handleAreaClick('压缩区域')"></div>
  59. <!-- 压缩区域5 -->
  60. <div class="compression-box-5"
  61. id="compression-box-5"
  62. @mouseover="handleCompressionMouseover"
  63. @mouseleave="handleCompressionMouseleave"
  64. @click="handleAreaClick('压缩区域')"></div>
  65. <!-- D201区域 -->
  66. <div class="d201-box"
  67. id="d201-box"
  68. @mouseover="handleD201Mouseover"
  69. @mouseleave="handleD201Mouseleave"
  70. @click="handleAreaClick('D201', 'd201')">
  71. <!--<div class="d201-box-text"-->
  72. <!--id="d201-box-text">D 2 0 1</div>-->
  73. </div>
  74. <!-- 分离区域1 -->
  75. <div class="separation-box-1"
  76. id="separation-box-1"
  77. @mouseover="handleSeparationMouseover"
  78. @mouseleave="handleSeparationMouseleave"
  79. @click="handleAreaClick('分离区域')">
  80. <!--<div class="separation-box-text-1"-->
  81. <!--id="separation-box-text-1">分 离 区 域</div>-->
  82. </div>
  83. <!-- 分离区域2 -->
  84. <div class="separation-box-2"
  85. id="separation-box-2"
  86. @mouseover="handleSeparationMouseover"
  87. @mouseleave="handleSeparationMouseleave"
  88. @click="handleAreaClick('分离区域')"></div>
  89. <!-- 分离区域3 -->
  90. <div class="separation-box-3"
  91. id="separation-box-3"
  92. @mouseover="handleSeparationMouseover"
  93. @mouseleave="handleSeparationMouseleave"
  94. @click="handleAreaClick('分离区域')">
  95. <!--<div class="separation-box-text-3"-->
  96. <!--id="separation-box-text-3">分 离 区 域</div>-->
  97. </div>
  98. <!-- 分离区域4 -->
  99. <div class="separation-box-4"
  100. id="separation-box-4"
  101. @mouseover="handleSeparationMouseover"
  102. @mouseleave="handleSeparationMouseleave"
  103. @click="handleAreaClick('分离区域')"></div>
  104. <!-- 办公楼区域 -->
  105. <div class="office-box"
  106. id="office-box"
  107. @mouseover="handleOfficeMouseover"
  108. @mouseleave="handleOfficeMouseleave"
  109. @click="handleAreaClick('办公楼', 'office')">
  110. <!--<div class="office-box-text"-->
  111. <!--id="office-box-text">办 公 楼</div>-->
  112. </div>
  113. <!-- PGU区域 -->
  114. <div class="pgu-box"
  115. id="pgu-box"
  116. @mouseover="handlePguMouseover"
  117. @mouseleave="handlePguMouseleave"
  118. @click="handleAreaClick('PGU区域', 'pgu')">
  119. <!--<div class="pgu-box-text"-->
  120. <!--id="pgu-box-text">P G U 区 域</div>-->
  121. </div>
  122. <!-- AEU区域1 -->
  123. <div class="aeu-box-1"
  124. id="aeu-box-1"
  125. @mouseover="handleAeuMouseover"
  126. @mouseleave="handleAeuMouseleave"
  127. @click="handleAreaClick('AEU区域', 'aeu1')"></div>
  128. <!-- AEU区域2 -->
  129. <div class="aeu-box-2"
  130. id="aeu-box-2"
  131. @mouseover="handleAeuMouseover"
  132. @mouseleave="handleAeuMouseleave"
  133. @click="handleAreaClick('AEU区域', 'aeu2')">
  134. <!--<div class="aeu-box-text"-->
  135. <!--id="aeu-box-text">A E U 区 域</div>-->
  136. </div>
  137. <!-- 阴影区域(左下角) -->
  138. <div class="shadow-box-bottom-left"></div>
  139. <!-- 阴影区域(右下角) -->
  140. <div class="shadow-box-bottom-right"></div>
  141. </div>
  142. </div>
  143. </template>
  144. <script>
  145. export default {
  146. data() {
  147. return {}
  148. },
  149. methods: {
  150. /* 裂解区域mouseover事件 */
  151. handleCrackingMouseover() {
  152. let box1 = document.getElementById("cracking-box-1");
  153. let box2 = document.getElementById("cracking-box-2");
  154. let box3 = document.getElementById("cracking-box-3");
  155. box1.style.backgroundColor = "rgba(64,158,255,0.3)";//蓝色
  156. box2.style.backgroundColor = "rgba(64,158,255,0.3)";
  157. box3.style.backgroundColor = "rgba(64,158,255,0.3)";
  158. box1.style.cursor = "pointer";
  159. box2.style.cursor = "pointer";
  160. box3.style.cursor = "pointer";
  161. },
  162. /* 裂解区域mouseleave事件 */
  163. handleCrackingMouseleave() {
  164. let box1 = document.getElementById("cracking-box-1");
  165. let box2 = document.getElementById("cracking-box-2");
  166. let box3 = document.getElementById("cracking-box-3");
  167. box1.style.backgroundColor = "transparent";
  168. box2.style.backgroundColor = "transparent";
  169. box3.style.backgroundColor = "transparent";
  170. },
  171. /* 压缩区域mouseover事件 */
  172. handleCompressionMouseover() {
  173. let box1 = document.getElementById("compression-box-1");
  174. let box2 = document.getElementById("compression-box-2");
  175. let box3 = document.getElementById("compression-box-3");
  176. let box4 = document.getElementById("compression-box-4");
  177. let box5 = document.getElementById("compression-box-5");
  178. box1.style.backgroundColor = "rgba(103,194,58,0.3)";//绿色
  179. box2.style.backgroundColor = "rgba(103,194,58,0.3)";
  180. box3.style.backgroundColor = "rgba(103,194,58,0.3)";
  181. box4.style.backgroundColor = "rgba(103,194,58,0.3)";
  182. box5.style.backgroundColor = "rgba(103,194,58,0.3)";
  183. box1.style.cursor = "pointer";
  184. box2.style.cursor = "pointer";
  185. box3.style.cursor = "pointer";
  186. box4.style.cursor = "pointer";
  187. box5.style.cursor = "pointer";
  188. },
  189. /* 压缩区域mouseleave事件 */
  190. handleCompressionMouseleave() {
  191. let box1 = document.getElementById("compression-box-1");
  192. let box2 = document.getElementById("compression-box-2");
  193. let box3 = document.getElementById("compression-box-3");
  194. let box4 = document.getElementById("compression-box-4");
  195. let box5 = document.getElementById("compression-box-5");
  196. box1.style.backgroundColor = "transparent";
  197. box2.style.backgroundColor = "transparent";
  198. box3.style.backgroundColor = "transparent";
  199. box4.style.backgroundColor = "transparent";
  200. box5.style.backgroundColor = "transparent";
  201. },
  202. /* D201区域mouseover事件 */
  203. handleD201Mouseover() {
  204. let box = document.getElementById("d201-box");
  205. box.style.backgroundColor = "rgba(72,209,204,0.3)";//蓝绿色
  206. box.style.cursor = "pointer";
  207. },
  208. /* D201区域mouseleave事件 */
  209. handleD201Mouseleave() {
  210. let box = document.getElementById("d201-box");
  211. box.style.backgroundColor = "transparent";
  212. },
  213. /* 分离区域mouseover事件 */
  214. handleSeparationMouseover() {
  215. let box1 = document.getElementById("separation-box-1");
  216. let box2 = document.getElementById("separation-box-2");
  217. let box3 = document.getElementById("separation-box-3");
  218. let box4 = document.getElementById("separation-box-4");
  219. box1.style.backgroundColor = "rgba(218,112,214,0.3)";//紫色
  220. box2.style.backgroundColor = "rgba(218,112,214,0.3)";
  221. box3.style.backgroundColor = "rgba(218,112,214,0.3)";
  222. box4.style.backgroundColor = "rgba(218,112,214,0.3)";
  223. box1.style.cursor = "pointer";
  224. box2.style.cursor = "pointer";
  225. box3.style.cursor = "pointer";
  226. box4.style.cursor = "pointer";
  227. },
  228. /* 分离区域mouseleave事件 */
  229. handleSeparationMouseleave() {
  230. let box1 = document.getElementById("separation-box-1");
  231. let box2 = document.getElementById("separation-box-2");
  232. let box3 = document.getElementById("separation-box-3");
  233. let box4 = document.getElementById("separation-box-4");
  234. box1.style.backgroundColor = "transparent";
  235. box2.style.backgroundColor = "transparent";
  236. box3.style.backgroundColor = "transparent";
  237. box4.style.backgroundColor = "transparent";
  238. },
  239. /* 办公楼区域mouseover事件 */
  240. handleOfficeMouseover() {
  241. let box = document.getElementById("office-box");
  242. box.style.backgroundColor = "rgba(255,105,180,0.3)";//粉色
  243. box.style.cursor = "pointer";
  244. },
  245. /* 办公楼区域mouseleave事件 */
  246. handleOfficeMouseleave() {
  247. let box = document.getElementById("office-box");
  248. box.style.backgroundColor = "transparent";
  249. },
  250. /* PGU区域mouseover事件 */
  251. handlePguMouseover() {
  252. let box = document.getElementById("pgu-box");
  253. box.style.backgroundColor = "rgba(255,255,0,0.3)";//黄色
  254. box.style.cursor = "pointer";
  255. },
  256. /* PGU区域mouseleave事件 */
  257. handlePguMouseleave() {
  258. let box = document.getElementById("pgu-box");
  259. box.style.backgroundColor = "transparent";
  260. },
  261. /* AEU区域mouseover事件 */
  262. handleAeuMouseover() {
  263. let box1 = document.getElementById("aeu-box-1");
  264. let box2 = document.getElementById("aeu-box-2");
  265. box1.style.backgroundColor = "rgba(255,160,0,0.3)";//橙色
  266. box2.style.backgroundColor = "rgba(255,160,0,0.3)";
  267. box1.style.cursor = "pointer";
  268. box2.style.cursor = "pointer";
  269. },
  270. /* AEU区域mouseleave事件 */
  271. handleAeuMouseleave() {
  272. let box1 = document.getElementById("aeu-box-1");
  273. let box2 = document.getElementById("aeu-box-2");
  274. box1.style.backgroundColor = "transparent";
  275. box2.style.backgroundColor = "transparent";
  276. },
  277. /* 区域click事件 */
  278. handleAreaClick(areaName, area) {
  279. this.$router.push({ path: '/aerial/detail', query: { areaName: areaName, area: area }});
  280. },
  281. }
  282. }
  283. </script>
  284. <style scoped>
  285. .app-container {
  286. padding: 20px;
  287. }
  288. .aerial-container {
  289. position: relative;
  290. width: 1200px;
  291. height: 800px;
  292. padding: 0px;
  293. margin: 0px auto;
  294. overflow: hidden;
  295. background: url('../../../assets/images/aerial.jpg') center/cover; /* 替换为实际背景图路径 */
  296. background-size: cover;
  297. background-repeat: no-repeat;
  298. }
  299. .cracking-box-1 {
  300. position:absolute;
  301. top: 50px;
  302. left: 70px;
  303. padding: 0px;
  304. margin: 0px;
  305. width: 480px;
  306. height: 130px;
  307. }
  308. .cracking-box-3 {
  309. position:absolute;
  310. top: 50px;
  311. left: 570px;
  312. padding: 0px;
  313. margin: 0px;
  314. width: 140px;
  315. height: 130px;
  316. }
  317. .cracking-box-text-1{
  318. position:absolute;
  319. padding: 0px;
  320. margin: 0px;
  321. width: 640px;
  322. height: 150px;
  323. line-height: 150px;
  324. text-align: center;
  325. font-size: 28px;
  326. color: #fff;
  327. }
  328. .cracking-box-2 {
  329. position:absolute;
  330. top: 210px;
  331. left: 70px;
  332. padding: 0px;
  333. margin: 0px;
  334. width: 230px;
  335. height: 160px;
  336. }
  337. .cracking-box-text-2 {
  338. position:absolute;
  339. padding: 0px;
  340. margin: 0px;
  341. width: 230px;
  342. height: 170px;
  343. line-height: 170px;
  344. text-align: center;
  345. font-size: 28px;
  346. color: #fff;
  347. }
  348. .compression-box-1 {
  349. position:absolute;
  350. top: 240px;
  351. left: 330px;
  352. padding: 0px;
  353. margin: 0px;
  354. width: 270px;
  355. height: 130px;
  356. }
  357. .compression-box-text-1 {
  358. position:absolute;
  359. padding: 0px;
  360. margin: 0px;
  361. width: 270px;
  362. height: 130px;
  363. line-height: 130px;
  364. text-align: center;
  365. font-size: 28px;
  366. color: #fff;
  367. }
  368. .compression-box-2 {
  369. position:absolute;
  370. top: 530px;
  371. left: 720px;
  372. padding: 0px;
  373. margin: 0px;
  374. width: 80px;
  375. height: 50px;
  376. }
  377. .compression-box-3 {
  378. position:absolute;
  379. top: 600px;
  380. left: 530px;
  381. padding: 0px;
  382. margin: 0px;
  383. width: 230px;
  384. height: 160px;
  385. }
  386. .compression-box-text-3 {
  387. position:absolute;
  388. padding: 0px;
  389. margin: 0px;
  390. width: 230px;
  391. height: 160px;
  392. line-height: 160px;
  393. text-align: center;
  394. font-size: 28px;
  395. color: #fff;
  396. }
  397. .compression-box-4 {
  398. position:absolute;
  399. top: 380px;
  400. left: 250px;
  401. padding: 0px;
  402. margin: 0px;
  403. width: 50px;
  404. height: 80px;
  405. }
  406. .compression-box-5 {
  407. position:absolute;
  408. top: 400px;
  409. left: 340px;
  410. padding: 0px;
  411. margin: 0px;
  412. width: 120px;
  413. height: 60px;
  414. }
  415. .d201-box {
  416. position:absolute;
  417. top: 220px;
  418. left: 630px;
  419. padding: 0px;
  420. margin: 0px;
  421. width: 80px;
  422. height: 150px;
  423. }
  424. .d201-box-text {
  425. position:absolute;
  426. padding: 0px;
  427. margin: 0px;
  428. width: 80px;
  429. height: 150px;
  430. line-height: 150px;
  431. text-align: center;
  432. font-weight: bold;
  433. color: #fff;
  434. }
  435. .separation-box-1 {
  436. position:absolute;
  437. top: 400px;
  438. left: 70px;
  439. padding: 0px;
  440. margin: 0px;
  441. width: 180px;
  442. height: 140px;
  443. }
  444. .separation-box-text-1 {
  445. position:absolute;
  446. padding: 0px;
  447. margin: 0px;
  448. width: 180px;
  449. height: 140px;
  450. line-height: 140px;
  451. font-size: 28px;
  452. text-align: center;
  453. color: #fff;
  454. }
  455. .separation-box-2 {
  456. position:absolute;
  457. top: 380px;
  458. left: 450px;
  459. padding: 0px;
  460. margin: 0px;
  461. width: 250px;
  462. height: 80px;
  463. }
  464. .separation-box-3 {
  465. position:absolute;
  466. top: 460px;
  467. left: 250px;
  468. padding: 0px;
  469. margin: 0px;
  470. width: 450px;
  471. height: 80px;
  472. }
  473. .separation-box-text-3 {
  474. position:absolute;
  475. padding: 0px;
  476. margin: 0px;
  477. width: 450px;
  478. height: 80px;
  479. line-height: 80px;
  480. font-size: 28px;
  481. text-align: center;
  482. color: #fff;
  483. }
  484. .separation-box-4 {
  485. position:absolute;
  486. top: 540px;
  487. left: 360px;
  488. padding: 0px;
  489. margin: 0px;
  490. width: 170px;
  491. height: 50px;
  492. }
  493. .office-box {
  494. position:absolute;
  495. top: 70px;
  496. left: 800px;
  497. padding: 0px;
  498. margin: 0px;
  499. width: 360px;
  500. height: 140px;
  501. }
  502. .office-box-text {
  503. position:absolute;
  504. padding: 0px;
  505. margin: 0px;
  506. width: 360px;
  507. height: 140px;
  508. line-height: 140px;
  509. font-size: 28px;
  510. text-align: center;
  511. color: #fff;
  512. }
  513. .pgu-box {
  514. position:absolute;
  515. top: 220px;
  516. left: 790px;
  517. padding: 0px;
  518. margin: 0px;
  519. width: 270px;
  520. height: 140px;
  521. }
  522. .pgu-box-text {
  523. position:absolute;
  524. padding: 0px;
  525. margin: 0px;
  526. width: 270px;
  527. height: 140px;
  528. line-height: 140px;
  529. font-size: 28px;
  530. text-align: center;
  531. color: #fff;
  532. }
  533. .aeu-box-1 {
  534. position:absolute;
  535. top: 380px;
  536. left: 790px;
  537. padding: 0px;
  538. margin: 0px;
  539. width: 190px;
  540. height: 120px;
  541. }
  542. .aeu-box-2 {
  543. position:absolute;
  544. top: 420px;
  545. left: 980px;
  546. padding: 0px;
  547. margin: 0px;
  548. width: 110px;
  549. height: 80px;
  550. }
  551. .aeu-box-text {
  552. position:absolute;
  553. padding: 0px;
  554. margin: 0px;
  555. width: 300px;
  556. height: 80px;
  557. line-height: 80px;
  558. font-size: 28px;
  559. text-align: center;
  560. color: #fff;
  561. }
  562. .shadow-box-bottom-left{
  563. position:absolute;
  564. top: 590px;
  565. left: 0px;
  566. padding: 0px;
  567. margin: 0px;
  568. width: 520px;
  569. height: 210px;
  570. background-color: rgba(0,0,0,0.5);
  571. }
  572. .shadow-box-bottom-right{
  573. position:absolute;
  574. top: 540px;
  575. left: 800px;
  576. padding: 0px;
  577. margin: 0px;
  578. width: 520px;
  579. height: 260px;
  580. background-color: rgba(0,0,0,0.5);
  581. }
  582. </style>