Map1.vue 29 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024
  1. <template>
  2. <div class="map-1">
  3. <div class="btn-group-tabs">
  4. <BtnGroup2
  5. :btnGroups="btnGroups"
  6. :rowIndex="0"
  7. :index="1"
  8. @select="select"
  9. ></BtnGroup2>
  10. </div>
  11. <div class="panel-title">
  12. <div class="panel-title-name">
  13. <span class="svg-icon svg-icon-green svg-icon-sm">
  14. <SvgIcon svgid="svg-wind-site"></SvgIcon>
  15. </span>
  16. <span class="green">某某某风电场</span>
  17. <div class="sub-title-item">
  18. <img src="../../../assets/map/fan/black.png" />
  19. <span class="sub-title gray">接入台数</span>
  20. <span class="sub-count font-num white">256</span>
  21. </div>
  22. <div class="sub-title-item">
  23. <img src="../../../assets/map/fan/green.png" />
  24. <span class="sub-title green">待机台数</span>
  25. <span class="sub-count font-num green">56</span>
  26. </div>
  27. <div class="sub-title-item">
  28. <img src="../../../assets/map/fan/blue.png" />
  29. <span class="sub-title blue">并网台数</span>
  30. <span class="sub-count font-num blue">256</span>
  31. </div>
  32. <div class="sub-title-item">
  33. <img src="../../../assets/map/fan/purple.png" />
  34. <span class="sub-title pink">限电台数</span>
  35. <span class="sub-count font-num pink">3</span>
  36. </div>
  37. <div class="sub-title-item">
  38. <img src="../../../assets/map/fan/red.png" />
  39. <span class="sub-title red">故障台数</span>
  40. <span class="sub-count font-num red">5</span>
  41. </div>
  42. <div class="sub-title-item">
  43. <img src="../../../assets/map/fan/orange.png" />
  44. <span class="sub-title orange">检修台数</span>
  45. <span class="sub-count font-num orange">20</span>
  46. </div>
  47. <div class="sub-title-item">
  48. <img src="../../../assets/map/fan/white.png" />
  49. <span class="sub-title white">受累台数</span>
  50. <span class="sub-count font-num white">256</span>
  51. </div>
  52. <div class="sub-title-item">
  53. <img src="../../../assets/map/fan/black.png" />
  54. <span class="sub-title gray">离线台数</span>
  55. <span class="sub-count font-num gray">2</span>
  56. </div>
  57. </div>
  58. </div>
  59. <div class="panel-body">
  60. <arcgis @when="when" ref="arcgis" :data="arcgisData" @clickMap="clickMap">
  61. <template v-slot:content>
  62. <div class="panel-box">
  63. <div
  64. class="panel-item"
  65. :class="panel.line"
  66. v-for="(panel, index) of panels"
  67. :key="index"
  68. >
  69. <svg
  70. v-show="panel.type != 'none' && panel.type != 'syz'"
  71. viewBox="0 0 800 800"
  72. version="1.1"
  73. xmlns="http://www.w3.org/2000/svg"
  74. xmlns:xlink="http://www.w3.org/1999/xlink"
  75. xml:space="preserve"
  76. >
  77. <defs>
  78. <rect
  79. id="fill-rect"
  80. x="5"
  81. y="5"
  82. rx="8"
  83. ry="8"
  84. width="90"
  85. height="340"
  86. fill="#303B6F"
  87. />
  88. <rect
  89. id="none-rect"
  90. x="5"
  91. y="5"
  92. rx="8"
  93. ry="8"
  94. width="90"
  95. height="120"
  96. fill="#303B6F"
  97. />
  98. <g id="panel-deepblue">
  99. <polygon
  100. fill="#FFFFFF"
  101. points="300 13.73 60.07 13.73 60.07 13.73 22.48 13.73 0 109.84 0 109.84 0 109.84 0 109.84 0 109.84 22.48 205.95 272.88 205.95 272.88 205.61 300 205.61 300 13.73"
  102. />
  103. <polygon
  104. fill="#5C9BAF"
  105. points="250.4 109.84 3.26 109.84 29 0 276.14 0 250.4 109.84"
  106. />
  107. <polygon
  108. fill="#00486B"
  109. points="29 219.68 276.14 219.68 250.4 109.84 3.26 109.84 29 219.68"
  110. />
  111. </g>
  112. <g id="panel-blue">
  113. <polygon
  114. fill="#FFFFFF"
  115. points="300 13.73 60.07 13.73 60.07 13.73 22.48 13.73 0 109.84 0 109.84 0 109.84 0 109.84 0 109.84 22.48 205.95 272.88 205.95 272.88 205.61 300 205.61 300 13.73"
  116. />
  117. <polygon
  118. fill="#23ABFF"
  119. points="250.4 109.84 3.26 109.84 29 0 276.14 0 250.4 109.84"
  120. />
  121. <polygon
  122. fill="#0E6BBB"
  123. points="29 219.68 276.14 219.68 250.4 109.84 3.26 109.84 29 219.68"
  124. />
  125. </g>
  126. <g id="panel-red">
  127. <polygon
  128. fill="#FFFFFF"
  129. points="290 13.27 58.07 13.27 58.07 13.27 21.73 13.27 0 106.18 0 106.18 0 106.18 0 106.18 0 106.18 21.73 199.09 263.79 199.09 263.79 198.75 290 198.75 290 13.27"
  130. />
  131. <polygon
  132. fill="#EC1208"
  133. points="242.05 106.18 3.15 106.18 28.04 0 266.94 0 242.05 106.18"
  134. />
  135. <polygon
  136. fill="#AA0607"
  137. points="28.04 212.36 266.94 212.36 242.05 106.18 3.15 106.18 28.04 212.36"
  138. />
  139. </g>
  140. </defs>
  141. <!-- 底图 左右两列矩形 -->
  142. <g>
  143. <use xlink:href="#fill-rect" x="50" y="50" />
  144. <use xlink:href="#fill-rect" x="150" y="50" />
  145. <use xlink:href="#fill-rect" x="550" y="50" />
  146. <use xlink:href="#fill-rect" x="650" y="50" />
  147. <use xlink:href="#fill-rect" x="50" y="400" />
  148. <use xlink:href="#fill-rect" x="150" y="400" />
  149. <use xlink:href="#fill-rect" x="550" y="400" />
  150. <use xlink:href="#fill-rect" x="650" y="400" />
  151. </g>
  152. <!-- 中间上矩形 全部 -->
  153. <g
  154. :style="
  155. 'display: ' +
  156. (panel.type == 'fill' || panel.type == 'bottom'
  157. ? 'block'
  158. : 'none')
  159. "
  160. >
  161. <use xlink:href="#fill-rect" x="250" y="50" />
  162. <use xlink:href="#fill-rect" x="350" y="50" />
  163. <use xlink:href="#fill-rect" x="450" y="50" />
  164. </g>
  165. <!-- 中间上矩形 一半 -->
  166. <g
  167. :style="
  168. 'display: ' + (panel.type == 'top' ? 'block' : 'none')
  169. "
  170. >
  171. <use xlink:href="#none-rect" x="250" y="270" />
  172. <use xlink:href="#none-rect" x="350" y="270" />
  173. <use xlink:href="#none-rect" x="450" y="270" />
  174. </g>
  175. <!-- 中间上逆变器 深蓝色 -->
  176. <g
  177. :style="
  178. 'display: ' +
  179. (panel.type == 'top' && panel.state == 'deepblue'
  180. ? 'block'
  181. : 'none')
  182. "
  183. class="can-click esri-component"
  184. @click.prevent="clickEl(panel)"
  185. >
  186. <use xlink:href="#panel-deepblue" x="250" y="50" />
  187. </g>
  188. <!-- 中间上逆变器 蓝色 -->
  189. <g
  190. :style="
  191. 'display: ' +
  192. (panel.type == 'top' && panel.state == 'blue'
  193. ? 'block'
  194. : 'none')
  195. "
  196. class="can-click esri-component"
  197. @click.prevent="clickEl(panel)"
  198. >
  199. <use xlink:href="#panel-blue" x="250" y="50" />
  200. </g>
  201. <!-- 中间上逆变器 红色 -->
  202. <g
  203. :style="
  204. 'display: ' +
  205. (panel.type == 'top' && panel.state == 'red'
  206. ? 'block'
  207. : 'none')
  208. "
  209. class="can-click esri-component"
  210. @click.prevent="clickEl(panel)"
  211. >
  212. <use xlink:href="#panel-red" x="250" y="50" />
  213. </g>
  214. <!-- 中间上文字 -->
  215. <g
  216. :style="
  217. 'display: ' + (panel.type == 'top' ? 'block' : 'none')
  218. "
  219. class="can-click esri-component"
  220. @click.prevent="clickEl(panel)"
  221. >
  222. <text
  223. x="420"
  224. y="220"
  225. fill="#ffffff"
  226. font-size="150"
  227. text-anchor="middle"
  228. transform="rotate(-90 400 180)"
  229. >
  230. {{ panel.code }}
  231. </text>
  232. </g>
  233. <!-- 中间下矩形 全部 -->
  234. <g
  235. :style="
  236. 'display: ' +
  237. (panel.type == 'fill' || panel.type == 'top'
  238. ? 'block'
  239. : 'none')
  240. "
  241. >
  242. <use xlink:href="#fill-rect" x="250" y="400" />
  243. <use xlink:href="#fill-rect" x="350" y="400" />
  244. <use xlink:href="#fill-rect" x="450" y="400" />
  245. </g>
  246. <!-- 中间下矩形 一半 -->
  247. <g
  248. :style="
  249. 'display: ' + (panel.type == 'bottom' ? 'block' : 'none')
  250. "
  251. >
  252. <use xlink:href="#none-rect" x="250" y="400" />
  253. <use xlink:href="#none-rect" x="350" y="400" />
  254. <use xlink:href="#none-rect" x="450" y="400" />
  255. </g>
  256. <!-- 中间下逆变器 深蓝色 -->
  257. <g
  258. :style="
  259. 'display: ' +
  260. (panel.type == 'bottom' && panel.state == 'deepblue'
  261. ? 'block'
  262. : 'none')
  263. "
  264. class="can-click esri-component"
  265. @click.prevent="clickEl(panel)"
  266. >
  267. <use xlink:href="#panel-deepblue" x="250" y="530" />
  268. </g>
  269. <!-- 中间下逆变器 蓝色 -->
  270. <g
  271. :style="
  272. 'display: ' +
  273. (panel.type == 'bottom' && panel.state == 'blue'
  274. ? 'block'
  275. : 'none')
  276. "
  277. class="can-click esri-component"
  278. @click.prevent="clickEl(panel)"
  279. >
  280. <use xlink:href="#panel-blue" x="250" y="530" />
  281. </g>
  282. <!-- 中间下逆变器 红色 -->
  283. <g
  284. :style="
  285. 'display: ' +
  286. (panel.type == 'bottom' && panel.state == 'red'
  287. ? 'block'
  288. : 'none')
  289. "
  290. class="can-click esri-component"
  291. @click.prevent="clickEl(panel)"
  292. >
  293. <use xlink:href="#panel-red" x="250" y="530" />
  294. </g>
  295. <!-- 中间下文字 -->
  296. <g
  297. :style="
  298. 'display: ' + (panel.type == 'bottom' ? 'block' : 'none')
  299. "
  300. class="can-click"
  301. @click.prevent="clickEl(panel)"
  302. >
  303. <text
  304. x="460"
  305. y="740"
  306. fill="#ffffff"
  307. font-size="150"
  308. text-anchor="middle"
  309. transform="rotate(-90 400 700)"
  310. >
  311. {{ panel.code }}
  312. </text>
  313. </g>
  314. </svg>
  315. <div v-show="panel.type == 'syz'" class="panel-syz">
  316. <img :src="syzImg" class="syz-img" />
  317. <div class="syz-text">升压站</div>
  318. </div>
  319. </div>
  320. <!-- <img :src="tempImg" style="width: 800px; height: 700px;"> -->
  321. </div>
  322. </template>
  323. </arcgis>
  324. <div class="map-popup-panel" v-show="showPopup">
  325. <div class="map-popup-panel-header">
  326. <div class="map-popup-panel-title green">
  327. 某某风电场总貌<span></span>
  328. </div>
  329. <div class="map-popup-panel-date gray">2020年5月10日</div>
  330. <div class="map-popup-panel-back" @click="popupBack">
  331. <span class="svg-icon svg-icon-white svg-icon-sm">
  332. <SvgIcon svgid="svg-arrow-dpwn-1"></SvgIcon>
  333. </span>
  334. </div>
  335. </div>
  336. <div class="map-popup-panel-body"></div>
  337. </div>
  338. </div>
  339. </div>
  340. </template>
  341. <script>
  342. import BtnGroup2 from "@com/coms/btn/btn-group-double.vue";
  343. import SvgIcon from "@com/coms/icon/svg-icon.vue";
  344. import arcgis from "@com/arcgis/arcgis.vue";
  345. export default {
  346. // 名称
  347. name: "Map1",
  348. // 使用组件
  349. components: {
  350. BtnGroup2,
  351. SvgIcon,
  352. arcgis,
  353. },
  354. // 数据
  355. data() {
  356. return {
  357. btnGroups: [
  358. {
  359. icon: "svg-wind-site",
  360. btns: [
  361. {
  362. text: "某某风场",
  363. code: "mmfdc1",
  364. },
  365. {
  366. text: "某某风场",
  367. code: "mhsfc",
  368. },
  369. {
  370. text: "某某风场",
  371. code: "mmfdc2",
  372. },
  373. {
  374. text: "某某风场",
  375. code: "mmfdc3",
  376. },
  377. {
  378. text: "某某风场",
  379. code: "mmfdc4",
  380. },
  381. ],
  382. },
  383. {
  384. icon: "svg-photovoltaic",
  385. btns: [
  386. {
  387. text: "某某风场",
  388. code: "mmgf1",
  389. },
  390. {
  391. text: "某某风场",
  392. code: "mmgf2",
  393. },
  394. {
  395. text: "某某风场",
  396. code: "mmgf3",
  397. },
  398. {
  399. text: "某某风场",
  400. code: "mmgf4",
  401. },
  402. ],
  403. },
  404. ],
  405. arcgisData: {
  406. mode: "2D", // 模式 2D 3D
  407. title: "宁夏地图", // 标题
  408. center: [106.48638888888888, 38.924166666666665], // 初始中心点
  409. height: 654, // 3D地图初始相机高度
  410. tilt: 65, // 俯视角
  411. scale: 15000,
  412. rotation: 180,
  413. ox: 0,
  414. oy: 0,
  415. },
  416. tempImg: require("@assets/temp1.png"),
  417. syzImg: require("@assets/png/booster-station.png"),
  418. showPopup: true,
  419. panels: [
  420. // fill top bottom none syz // red blue deepblue
  421. { id: "00", type: "fill", code: "", state: "", line: "" },
  422. { id: "01", type: "fill", code: "", state: "", line: "" },
  423. { id: "02", type: "fill", code: "", state: "", line: "" },
  424. { id: "03", type: "fill", code: "", state: "", line: "" },
  425. { id: "04", type: "fill", code: "", state: "", line: "" },
  426. { id: "05", type: "fill", code: "", state: "", line: "" },
  427. {
  428. id: "06",
  429. type: "bottom",
  430. code: "12",
  431. state: "deepblue",
  432. line: "bottom",
  433. },
  434. { id: "07", type: "none", code: "", state: "", line: "bottom" },
  435. { id: "08", type: "fill", code: "", state: "", line: "" },
  436. { id: "09", type: "fill", code: "", state: "", line: "" },
  437. {
  438. id: "10",
  439. type: "top",
  440. code: "36",
  441. state: "deepblue",
  442. line: "top left",
  443. },
  444. {
  445. id: "11",
  446. type: "top",
  447. code: "32",
  448. state: "deepblue",
  449. line: "top left",
  450. },
  451. { id: "12", type: "top", code: "28", state: "deepblue", line: "top" },
  452. { id: "13", type: "top", code: "24", state: "deepblue", line: "top" },
  453. { id: "14", type: "top", code: "20", state: "deepblue", line: "top" },
  454. {
  455. id: "15",
  456. type: "top",
  457. code: "16",
  458. state: "deepblue",
  459. line: "top right",
  460. },
  461. { id: "16", type: "fill", code: "", state: "", line: "bottom right" },
  462. { id: "17", type: "syz", code: "", state: "", line: "bottom right" },
  463. { id: "18", type: "top", code: "5", state: "deepblue", line: "top" },
  464. {
  465. id: "19",
  466. type: "top",
  467. code: "4",
  468. state: "deepblue",
  469. line: "top right",
  470. },
  471. {
  472. id: "20",
  473. type: "bottom",
  474. code: "37",
  475. state: "deepblue",
  476. line: "bottom left",
  477. },
  478. { id: "21", type: "fill", code: "", state: "deepblue", line: "left" },
  479. { id: "22", type: "fill", code: "", state: "deepblue", line: "" },
  480. { id: "23", type: "fill", code: "", state: "deepblue", line: "" },
  481. { id: "24", type: "fill", code: "", state: "deepblue", line: "" },
  482. { id: "25", type: "fill", code: "", state: "deepblue", line: "" },
  483. {
  484. id: "26",
  485. type: "bottom",
  486. code: "13",
  487. state: "deepblue",
  488. line: "bottom",
  489. },
  490. { id: "27", type: "fill", code: "", state: "", line: "" },
  491. { id: "28", type: "fill", code: "", state: "deepblue", line: "" },
  492. { id: "29", type: "fill", code: "", state: "deepblue", line: "right" },
  493. { id: "30", type: "none", code: "", state: "", line: "" },
  494. { id: "31", type: "top", code: "33", state: "deepblue", line: "top" },
  495. { id: "32", type: "top", code: "29", state: "deepblue", line: "top" },
  496. { id: "33", type: "top", code: "25", state: "deepblue", line: "top" },
  497. { id: "34", type: "top", code: "21", state: "deepblue", line: "top" },
  498. {
  499. id: "35",
  500. type: "top",
  501. code: "17",
  502. state: "deepblue",
  503. line: "top right",
  504. },
  505. { id: "36", type: "fill", code: "", state: "deepblue", line: "" },
  506. { id: "37", type: "top", code: "1", state: "deepblue", line: "top" },
  507. { id: "38", type: "top", code: "2", state: "deepblue", line: "top" },
  508. { id: "39", type: "top", code: "3", state: "deepblue", line: "top" },
  509. { id: "40", type: "none", code: "", state: "", line: "" },
  510. { id: "41", type: "fill", code: "", state: "", line: "" },
  511. { id: "42", type: "fill", code: "", state: "", line: "" },
  512. { id: "43", type: "fill", code: "", state: "", line: "" },
  513. { id: "44", type: "fill", code: "", state: "", line: "" },
  514. { id: "45", type: "fill", code: "", state: "", line: "" },
  515. {
  516. id: "46",
  517. type: "bottom",
  518. code: "14",
  519. state: "deepblue",
  520. line: "bottom left",
  521. },
  522. {
  523. id: "47",
  524. type: "bottom",
  525. code: "10",
  526. state: "deepblue",
  527. line: "bottom",
  528. },
  529. {
  530. id: "48",
  531. type: "bottom",
  532. code: "8",
  533. state: "deepblue",
  534. line: "bottom",
  535. },
  536. {
  537. id: "49",
  538. type: "bottom",
  539. code: "6",
  540. state: "deepblue",
  541. line: "bottom",
  542. },
  543. { id: "50", type: "none", code: "", state: "", line: "" },
  544. { id: "51", type: "top", code: "34", state: "red", line: "top left" },
  545. { id: "52", type: "top", code: "30", state: "deepblue", line: "top" },
  546. { id: "53", type: "top", code: "26", state: "deepblue", line: "top" },
  547. { id: "54", type: "top", code: "22", state: "deepblue", line: "top" },
  548. { id: "55", type: "top", code: "18", state: "deepblue", line: "top" },
  549. { id: "56", type: "fill", code: "", state: "", line: "" },
  550. { id: "57", type: "fill", code: "", state: "", line: "" },
  551. { id: "58", type: "fill", code: "", state: "", line: "" },
  552. { id: "59", type: "fill", code: "", state: "", line: "right" },
  553. { id: "60", type: "none", code: "", state: "", line: "" },
  554. { id: "61", type: "fill", code: "", state: "", line: "left" },
  555. { id: "62", type: "fill", code: "", state: "", line: "" },
  556. { id: "63", type: "fill", code: "", state: "", line: "" },
  557. { id: "64", type: "fill", code: "", state: "", line: "" },
  558. { id: "65", type: "fill", code: "", state: "", line: "" },
  559. {
  560. id: "66",
  561. type: "bottom",
  562. code: "15",
  563. state: "deepblue",
  564. line: "bottom",
  565. },
  566. {
  567. id: "67",
  568. type: "bottom",
  569. code: "11",
  570. state: "deepblue",
  571. line: "bottom",
  572. },
  573. {
  574. id: "68",
  575. type: "bottom",
  576. code: "9",
  577. state: "deepblue",
  578. line: "bottom",
  579. },
  580. {
  581. id: "69",
  582. type: "bottom",
  583. code: "7",
  584. state: "deepblue",
  585. line: "bottom right",
  586. },
  587. { id: "70", type: "none", code: "", state: "", line: "" },
  588. { id: "71", type: "top", code: "35", state: "blue", line: "top" },
  589. { id: "72", type: "top", code: "31", state: "deepblue", line: "top" },
  590. { id: "73", type: "top", code: "27", state: "deepblue", line: "top" },
  591. { id: "74", type: "top", code: "23", state: "deepblue", line: "top" },
  592. { id: "75", type: "top", code: "19", state: "deepblue", line: "top" },
  593. { id: "76", type: "fill", code: "", state: "", line: "" },
  594. { id: "77", type: "fill", code: "", state: "", line: "" },
  595. { id: "78", type: "fill", code: "", state: "", line: "" },
  596. { id: "79", type: "fill", code: "", state: "", line: "" },
  597. ],
  598. };
  599. },
  600. // 函数
  601. methods: {
  602. when: function () {
  603. // this.$refs.arcgis.addImagePoint([106.60768412800003, 37.806672373000006], "@assets/temp1.png", "160px", "140px");
  604. this.$refs.arcgis.addHtmlPoint(
  605. [106.48638888888888, 38.924166666666665],
  606. "content",
  607. 400,
  608. 350
  609. );
  610. },
  611. clickMap: function (info) {
  612. console.log(info);
  613. },
  614. popupBack: function () {
  615. this.showPopup = false;
  616. },
  617. clickEl: function (item) {
  618. console.log(item);
  619. this.showPopup = true;
  620. },
  621. },
  622. // 生命周期钩子
  623. beforeCreate() {
  624. // 创建前
  625. },
  626. created() {
  627. // 创建后
  628. },
  629. beforeMount() {
  630. // 渲染前
  631. },
  632. mounted() {
  633. // 渲染后
  634. },
  635. beforeUpdate() {
  636. // 数据更新前
  637. },
  638. updated() {
  639. // 数据更新后
  640. },
  641. };
  642. </script>
  643. <style lang="less">
  644. @titleHeight: 3.704vh;
  645. .map-1 {
  646. width: 100%;
  647. height: calc(100vh - 90px);
  648. display: flex;
  649. flex-direction: column;
  650. .btn-group-tabs {
  651. display: flex;
  652. flex-direction: row;
  653. }
  654. .panel-title {
  655. width: 100%;
  656. background-color: fade(@darkgray, 40%);
  657. margin-top: 1.481vh;
  658. padding: 6px;
  659. display: flex;
  660. align-items: center;
  661. .panel-title-name {
  662. color: @green;
  663. display: flex;
  664. align-items: center;
  665. line-height: 0;
  666. font-size: 0;
  667. i,
  668. span {
  669. margin: 0 0 0 1.481vh;
  670. line-height: 0;
  671. font-size: 13px;
  672. }
  673. }
  674. .sub-title-item {
  675. display: flex;
  676. align-items: center;
  677. margin-left: 16px;
  678. .sub-title {
  679. font-size: 13px;
  680. margin-left: 6px;
  681. }
  682. .sub-count {
  683. font-size: 13px;
  684. font-weight: 500;
  685. }
  686. img {
  687. height: 31px;
  688. }
  689. }
  690. }
  691. .panel-body {
  692. flex-grow: 1;
  693. background-color: fade(@darkgray, 20%);
  694. padding: 0.741vh;
  695. overflow: auto;
  696. position: relative;
  697. .map-popup-panel {
  698. width: 679px;
  699. position: absolute;
  700. left: 71px;
  701. top: 22px;
  702. .map-popup-panel-header {
  703. width: 100%;
  704. background: fade(#152221, 90%);
  705. display: flex;
  706. .map-popup-panel-title {
  707. padding: 17px 24px;
  708. font-size: @fontsize-s;
  709. position: relative;
  710. &::before,
  711. &::after {
  712. position: absolute;
  713. width: calc(50% - 6px);
  714. bottom: 0;
  715. border-bottom: 2px solid @green;
  716. }
  717. &::before {
  718. content: "";
  719. left: 0;
  720. }
  721. &::after {
  722. content: "";
  723. right: 0;
  724. }
  725. span {
  726. position: absolute;
  727. width: 11.3px;
  728. height: 11.3px;
  729. border-left: 2px solid @green;
  730. border-top: 2px solid @green;
  731. left: calc(50% - 5.65px);
  732. bottom: -3px;
  733. transform: rotate(45deg);
  734. }
  735. }
  736. .map-popup-panel-date {
  737. flex-grow: 1;
  738. padding: 17px 24px;
  739. font-size: @fontsize-s;
  740. text-align: right;
  741. border-bottom: 2px solid @green;
  742. }
  743. .map-popup-panel-back {
  744. margin-left: auto;
  745. width: 54px;
  746. display: flex;
  747. align-items: center;
  748. justify-content: center;
  749. position: relative;
  750. cursor: pointer;
  751. &::after {
  752. content: "";
  753. position: absolute;
  754. left: 0;
  755. height: 50%;
  756. border-left: 1px solid @gray;
  757. top: 25%;
  758. }
  759. }
  760. }
  761. .map-popup-panel-body {
  762. background: fade(#152221, 75%);
  763. border: 1px solid fade(@darkgray, 40);
  764. border-top: 0px;
  765. .table-form {
  766. .text,
  767. .unit {
  768. font-weight: 400;
  769. }
  770. .unit {
  771. min-width: auto;
  772. }
  773. .value,
  774. .unit {
  775. text-align: left;
  776. }
  777. }
  778. }
  779. }
  780. }
  781. .panel-box {
  782. width: 840px;
  783. padding: 20px;
  784. display: flex;
  785. flex-wrap: wrap;
  786. background: #536268b8;
  787. .panel-item {
  788. width: 80px;
  789. height: 80px;
  790. position: relative;
  791. // margin-top: -20px;
  792. // margin-left: -20px;
  793. &.top {
  794. &::after {
  795. top: -3px;
  796. opacity: 1;
  797. }
  798. }
  799. &.bottom {
  800. &::after {
  801. bottom: -3px;
  802. opacity: 1;
  803. }
  804. }
  805. &.left {
  806. &::before {
  807. left: -3px;
  808. opacity: 1;
  809. }
  810. }
  811. &.right {
  812. &::before {
  813. right: -3px;
  814. opacity: 1;
  815. }
  816. }
  817. &::after {
  818. content: "";
  819. width: 100%;
  820. height: 6px;
  821. position: absolute;
  822. left: 0;
  823. background: @green;
  824. opacity: 0;
  825. }
  826. &::before {
  827. content: "";
  828. width: 6px;
  829. height: 100%;
  830. position: absolute;
  831. top: 0;
  832. background: @green;
  833. opacity: 0;
  834. }
  835. svg {
  836. width: 80px;
  837. height: 80px;
  838. }
  839. .panel-syz {
  840. width: 100%;
  841. height: 100%;
  842. position: relative;
  843. .syz-img {
  844. position: absolute;
  845. height: 70px;
  846. top: -35px;
  847. left: -10px;
  848. }
  849. .syz-text {
  850. position: absolute;
  851. color: @green;
  852. font-size: @fontsize-l;
  853. width: 100%;
  854. text-align: center;
  855. left: 0;
  856. top: -55px;
  857. font-weight: bold;
  858. }
  859. }
  860. }
  861. }
  862. .can-click {
  863. cursor: pointer;
  864. }
  865. .map-popup-panel {
  866. width: 760px;
  867. position: absolute;
  868. left: 71px;
  869. top: 22px;
  870. z-index: 2;
  871. .map-popup-panel-header {
  872. width: 100%;
  873. background: fade(#152221, 90%);
  874. display: flex;
  875. .map-popup-panel-title {
  876. padding: 17px 24px;
  877. font-size: @fontsize-s;
  878. position: relative;
  879. &::before,
  880. &::after {
  881. position: absolute;
  882. width: calc(50% - 6px);
  883. bottom: 0;
  884. border-bottom: 2px solid @green;
  885. }
  886. &::before {
  887. content: "";
  888. left: 0;
  889. }
  890. &::after {
  891. content: "";
  892. right: 0;
  893. }
  894. span {
  895. position: absolute;
  896. width: 11.3px;
  897. height: 11.3px;
  898. border-left: 2px solid @green;
  899. border-top: 2px solid @green;
  900. left: calc(50% - 5.65px);
  901. bottom: -3px;
  902. transform: rotate(45deg);
  903. }
  904. }
  905. .map-popup-panel-date {
  906. flex-grow: 1;
  907. padding: 17px 24px;
  908. font-size: @fontsize-s;
  909. text-align: right;
  910. border-bottom: 2px solid @green;
  911. }
  912. .map-popup-panel-back {
  913. margin-left: auto;
  914. width: 54px;
  915. display: flex;
  916. align-items: center;
  917. justify-content: center;
  918. position: relative;
  919. cursor: pointer;
  920. &::after {
  921. content: "";
  922. position: absolute;
  923. left: 0;
  924. height: 50%;
  925. border-left: 1px solid @gray;
  926. top: 25%;
  927. }
  928. }
  929. }
  930. .map-popup-panel-body {
  931. background: fade(#152221, 75%);
  932. border: 1px solid fade(@darkgray, 40);
  933. border-top: 0px;
  934. .table-form {
  935. .text,
  936. .unit {
  937. font-weight: 400;
  938. }
  939. .unit {
  940. min-width: auto;
  941. }
  942. .value,
  943. .unit {
  944. text-align: left;
  945. }
  946. }
  947. }
  948. }
  949. }
  950. </style>