index.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712
  1. <template>
  2. <div class="right-menu">
  3. <div class="menu-container">
  4. <div style="position: relative; margin-top: 60px; display: inline-block; vertical-align: top">
  5. <div ref="scrollListRef" :class="!menuState.showMenu ? 'menu-list' : 'menu-list menu-list-right'">
  6. <div
  7. v-for="(item, index) in menuState.menuData"
  8. :key="index"
  9. :class="menuState.activeIndex === index ? 'menu-item menu-active' : 'menu-item'"
  10. style="pointer-events: auto"
  11. @click="clickMenu(index)"
  12. >
  13. <div :class="item.meta?.icon + ' ' + item.meta?.icon + '_checked'"></div>
  14. <div class="gradient-text text">{{ item.name }}</div>
  15. </div>
  16. </div>
  17. <div
  18. v-show="menuState.menuData.length > 0"
  19. :class="menuState.showMenu ? 'right-btn' : 'left-btn'"
  20. style="pointer-events: auto"
  21. @click="clickContractMenu"
  22. ></div>
  23. <div v-show="menuState.menuData.length > 9" class="btn-box" style="pointer-events: auto">
  24. <div class="up-btn" @click="clickBtn('up')"></div>
  25. <div class="down-btn" @click="clickBtn('down')"></div>
  26. </div>
  27. </div>
  28. <div v-show="menuState.showMenu && menuState.menuData.length > 0" style="display: inline-block; pointer-events: auto; position: relative">
  29. <div class="fold-btn" @click="clickContractMenu">
  30. <i class="fold-icon" />
  31. 折叠菜单
  32. </div>
  33. <!--图层分析-->
  34. <LayerAnalysis v-if="handleIf('图层分析')" v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '图层分析'" />
  35. <!--空间分析-->
  36. <SpatialAnalysis
  37. v-if="handleIf('空间分析')"
  38. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '空间分析'"
  39. :update-location="location"
  40. @handle-menu="handleMenu"
  41. />
  42. <!--江湖河库-->
  43. <Reservoir v-if="handleIf('江湖河库')" v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '江湖河库'" />
  44. <!--路网视频-->
  45. <RoadNetworkVideo v-if="handleIf('路网视频')" v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '路网视频'" />
  46. <!--防溺水视频-->
  47. <PreventDrowning v-if="handleIf('防溺水')" v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '防溺水'" />
  48. <!--水库监测-->
  49. <ReservoirMonitor v-if="handleIf('水库监测')" v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '水库监测'" />
  50. <!--河道监测-->
  51. <RiverMonitor v-if="handleIf('河道监测')" v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '河道监测'" />
  52. <!--省政务无人机-->
  53. <UAV
  54. v-if="handleIf('省政务无人机')"
  55. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '省政务无人机'"
  56. @handle-menu="handleMenu"
  57. />
  58. <!--实时标绘-->
  59. <OnlinePlotting v-if="handleIf('实时标绘')" v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '实时标绘'" />
  60. <!--定点分析-->
  61. <FixedPointAnalysis
  62. v-if="handleIf('定点分析')"
  63. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '定点分析'"
  64. :location="location2"
  65. />
  66. <!--雨情监测-->
  67. <RainMonitor v-if="handleIf('雨情监测')" v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '雨情监测'" />
  68. <!--铁塔运行监测-->
  69. <TowerStatus
  70. v-if="handleIf('铁塔运行监测')"
  71. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '铁塔运行监测'"
  72. />
  73. <!--预警信号-->
  74. <WarningInfo
  75. v-if="handleIf('预警信号')"
  76. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '预警信号'"
  77. @handle-menu="handleMenu"
  78. />
  79. <!--森林防火-->
  80. <Fireproofing
  81. v-if="handleIf('森林防火')"
  82. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '森林防火'"
  83. @handle-menu="handleMenu"
  84. />
  85. <!--森防视频-->
  86. <ForestDefenseVideo
  87. v-if="handleIf('森防视频')"
  88. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '森防视频'"
  89. @handle-menu="handleMenu"
  90. />
  91. <!--防灾救援-->
  92. <Mitigation
  93. v-if="handleIf('防灾救援')"
  94. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '防灾救援'"
  95. @handle-menu="handleMenu"
  96. />
  97. <!--交通视频-->
  98. <TrafficVideo
  99. v-if="handleIf('交通视频')"
  100. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '交通视频'"
  101. @handle-menu="handleMenu"
  102. />
  103. <!--交通局视频-->
  104. <tranBureauVideo
  105. v-if="handleIf('交通局视频')"
  106. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '交通局视频'"
  107. @handle-menu="handleMenu"
  108. />
  109. <!--易涝隐患点-->
  110. <PotentialFloodHazard
  111. v-if="handleIf('易涝隐患点')"
  112. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '易涝隐患点'"
  113. @handle-menu="handleMenu"
  114. />
  115. <!--通讯保障-->
  116. <CommunicationSupport
  117. v-if="handleIf('通讯保障')"
  118. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '通讯保障'"
  119. @handle-menu="handleMenu"
  120. />
  121. <!--手机工作平台-->
  122. <MobilePlatform
  123. v-if="handleIf('手机工作台')"
  124. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '手机工作台'"
  125. @handle-menu="handleMenu"
  126. />
  127. <!--重点车辆-->
  128. <KeyVehicles
  129. v-if="handleIf('重点车辆')"
  130. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '重点车辆'"
  131. @handle-menu="handleMenu"
  132. />
  133. <!--卫星电话-->
  134. <SatellitePhone
  135. v-if="handleIf('卫星电话')"
  136. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '卫星电话'"
  137. @handle-menu="handleMenu"
  138. />
  139. <!--机动无人机-->
  140. <MobileUnmannedVehicle
  141. v-if="handleIf('机动无人机')"
  142. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '机动无人机'"
  143. @handle-menu="handleMenu"
  144. />
  145. <!--移动指挥车-->
  146. <MobileCommandVehicle
  147. v-if="handleIf('移动指挥车')"
  148. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '移动指挥车'"
  149. @handle-menu="handleMenu"
  150. />
  151. <!--直升机-->
  152. <Helicopter
  153. v-if="handleIf('直升机')"
  154. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '直升机'"
  155. @handle-menu="handleMenu"
  156. />
  157. <!--台风视频-->
  158. <TyphoonVideo
  159. v-if="handleIf('台风视频')"
  160. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '台风视频'"
  161. @handle-menu="handleMenu"
  162. />
  163. <RescueTeam v-if="handleIf('救援队伍')" v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '救援队伍'" />
  164. <WindMonitor v-if="handleIf('大风监测')" v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '大风监测'" />
  165. <!--图像资源下视频通用组件-->
  166. <CommonVideo
  167. v-if="
  168. !!menuState.menuData[menuState.activeIndex]?.isVideo &&
  169. !['路网视频', '防灾救援', '台风视频', '森防视频', '交通局视频', '江湖河库', '防溺水'].includes(
  170. menuState.menuData[menuState.activeIndex]?.name
  171. )
  172. "
  173. :id="menuState.menuData[menuState.activeIndex]?.component"
  174. :title="menuState.menuData[menuState.activeIndex]?.name"
  175. />
  176. </div>
  177. </div>
  178. </div>
  179. </template>
  180. <script lang="ts" setup name="rightMenu">
  181. import RiverMonitor from './RiverMonitor.vue';
  182. import ReservoirMonitor from './ReservoirMonitor.vue';
  183. import RoadNetworkVideo from './RoadNetworkVideo.vue';
  184. import Reservoir from './Reservoir.vue';
  185. import SpatialAnalysis from './SpatialAnalysis.vue';
  186. import LayerAnalysis from './LayerAnalysis.vue';
  187. import OnlinePlotting from './OnlinePlotting/index.vue';
  188. import FixedPointAnalysis from './FixedPointAnalysis.vue';
  189. import UAV from './UAV/index.vue';
  190. import WarningInfo from './WarningInfo.vue';
  191. import RainMonitor from './RainMonitor/index.vue';
  192. import PreventDrowning from './PreventDrowning.vue';
  193. import Fireproofing from './Fireproofing.vue';
  194. import ForestDefenseVideo from './ForestDefenseVideo/index.vue';
  195. import Mitigation from './Mitigation.vue';
  196. import tranBureauVideo from './tranBureauVideo.vue';
  197. import PotentialFloodHazard from './PotentialFloodHazard.vue';
  198. import TowerStatus from './TowerStatus.vue';
  199. import CommunicationSupport from './CommunicationSupport.vue';
  200. import MobilePlatform from './MobilePlatform.vue';
  201. import KeyVehicles from './KeyVehicles.vue';
  202. import SatellitePhone from './SatellitePhone.vue';
  203. import MobileUnmannedVehicle from './MobileUnmannedVehicle.vue';
  204. import MobileCommandVehicle from './MobileCommandVehicle.vue';
  205. import Helicopter from './Helicopter.vue';
  206. import TyphoonVideo from './TyphoonVideo.vue';
  207. import RescueTeam from './RescueTeam.vue';
  208. import TrafficVideo from './TrafficVideo.vue';
  209. import WindMonitor from './WindMonitor/index.vue';
  210. import CommonVideo from './CommonVideo.vue';
  211. import useMapStore from '@/store/modules/map';
  212. const emits = defineEmits(['update:drawing']);
  213. const scrollListRef = ref();
  214. const mapStore = useMapStore();
  215. const { menuState } = storeToRefs(mapStore);
  216. // 点击收缩展开
  217. const clickContractMenu = () => {
  218. menuState.value.showMenu = !menuState.value.showMenu;
  219. };
  220. // 菜单上下移动
  221. const clickBtn = (direction: string) => {
  222. const len = menuState.value.menuData.length;
  223. if (direction === 'up' && scrollListRef.value.scrollTop - 168 >= 0) {
  224. scrollListRef.value.scrollTop -= 168;
  225. } else if (direction === 'down' && scrollListRef.value.scrollTop + 168 <= 168 * len) {
  226. scrollListRef.value.scrollTop += 168;
  227. }
  228. };
  229. const showIndexMenu = (name) => {
  230. let index = menuState.value.menuData.findIndex((item) => {
  231. return item.name === name;
  232. });
  233. if (index > -1) {
  234. clickMenu(index);
  235. }
  236. };
  237. // 点击菜单
  238. const clickMenu = (index) => {
  239. menuState.value.showMenu = true;
  240. menuState.value.activeIndex = index;
  241. };
  242. let location = ref([]);
  243. let location2 = ref([]);
  244. // 显示菜单
  245. const handleMenu = (name, data) => {
  246. let index = menuState.value.menuData.findIndex((item) => {
  247. return item.name === name;
  248. });
  249. if (name === '空间分析') {
  250. menuState.value.showMenu = true;
  251. menuState.value.activeIndex = index;
  252. nextTick(() => {
  253. location.value = data;
  254. });
  255. } else if (index > -1) {
  256. clickMenu(index);
  257. }
  258. };
  259. // 新增菜单 type 1 新增 2 删除
  260. const updateMenu = (type, menu, newLocation?: any) => {
  261. if (type === '1') {
  262. if (['图层分析', '定点分析'].includes(menu.name)) {
  263. let index = menuState.value.menuData.findIndex((item) => {
  264. return item.name === menu.name;
  265. });
  266. if (index === -1) {
  267. menuState.value.menuData.push(menu);
  268. }
  269. if (menu.name === '定点分析') {
  270. location2.value = newLocation;
  271. }
  272. } else {
  273. menuState.value.menuData.push(menu);
  274. }
  275. clickMenu(menuState.value.menuData.length - 1);
  276. } else if (type === '2') {
  277. let index = menuState.value.menuData.findIndex((item) => item.name === menu.name);
  278. if (index > -1) {
  279. menuState.value.menuData.splice(index, 1);
  280. menuState.value.activeIndex = 0;
  281. }
  282. if (menu.name === '空间分析') {
  283. location.value = [];
  284. }
  285. } else if (type === '4') {
  286. let index = menuState.value.menuData.findIndex((item) => item.name === menu.name);
  287. if (index > -1) {
  288. menuState.value.menuData.splice(index, 1);
  289. menuState.value.activeIndex = 0;
  290. }
  291. location2.value = newLocation;
  292. }
  293. };
  294. const handleIf = (name) => {
  295. let flag = false;
  296. let index = menuState.value.menuData.findIndex((item) => {
  297. return item.name === name;
  298. });
  299. if (index > -1) {
  300. flag = true;
  301. }
  302. return flag;
  303. };
  304. const getMenuState = () => {
  305. return menuState;
  306. };
  307. defineExpose({ handleMenu, showIndexMenu, clickContractMenu, updateMenu, getMenuState });
  308. </script>
  309. <style lang="scss" scoped>
  310. .right-menu {
  311. position: absolute;
  312. top: 100px;
  313. right: 0;
  314. z-index: 20;
  315. pointer-events: none;
  316. }
  317. .expand-btn {
  318. width: 70px;
  319. height: 240px;
  320. font-size: 32px;
  321. background: #d7d7d7;
  322. padding: 10px 18px;
  323. cursor: pointer;
  324. display: flex;
  325. align-items: center;
  326. }
  327. .menu-container {
  328. .menu-list-right {
  329. margin-right: -39px;
  330. }
  331. .menu-list {
  332. position: relative;
  333. max-height: 505px;
  334. overflow: hidden;
  335. .menu-item {
  336. width: 252px;
  337. height: 47px;
  338. font-size: 17px;
  339. padding: 0px 2px 0px 14px;
  340. cursor: pointer;
  341. display: flex;
  342. align-items: center;
  343. background: url('@/assets/images/map/rightMenu/box.png') no-repeat;
  344. margin-top: 10px;
  345. &:first-child {
  346. margin-top: 0;
  347. }
  348. .text {
  349. font-size: 18px;
  350. }
  351. &:hover {
  352. background: url('@/assets/images/map/rightMenu/box_checked.png') no-repeat;
  353. }
  354. }
  355. .menu-active {
  356. background: url('@/assets/images/map/rightMenu/box_checked.png') no-repeat;
  357. }
  358. }
  359. .left-btn,
  360. .right-btn {
  361. position: absolute;
  362. top: 50%;
  363. right: 205px;
  364. transform: translateY(-50%);
  365. z-index: 2;
  366. }
  367. .right-btn {
  368. width: 63px;
  369. height: 55px;
  370. cursor: pointer;
  371. background: url('@/assets/images/map/rightMenu/right.png') no-repeat;
  372. background-size: 100% 100%;
  373. cursor: pointer;
  374. }
  375. .left-btn {
  376. right: 0;
  377. width: 63px;
  378. height: 55px;
  379. background: url('@/assets/images/map/rightMenu/left.png') no-repeat;
  380. background-size: 100% 100%;
  381. cursor: pointer;
  382. }
  383. .btn-box {
  384. width: 100%;
  385. display: flex;
  386. margin-left: 45px;
  387. .up-btn {
  388. width: 38px;
  389. height: 45px;
  390. background: url('@/assets/images/map/rightMenu/up.png') no-repeat;
  391. background-size: 100% 100%;
  392. cursor: pointer;
  393. }
  394. .down-btn {
  395. height: 38px;
  396. width: 45px;
  397. background: url('@/assets/images/map/rightMenu/down.png') no-repeat;
  398. background-size: 100% 100%;
  399. cursor: pointer;
  400. }
  401. }
  402. }
  403. .fold-btn {
  404. position: absolute;
  405. right: 0;
  406. top: 0;
  407. z-index: 10;
  408. width: 103px;
  409. height: 26px;
  410. background: url('@/assets/images/map/rightMenu/btn3.png') no-repeat;
  411. background-size: 100% 100%;
  412. font-size: 15px;
  413. color: #ffffff;
  414. display: flex;
  415. align-items: center;
  416. padding-left: 12px;
  417. cursor: pointer;
  418. .fold-icon {
  419. display: inline-block;
  420. width: 14px;
  421. height: 14px;
  422. background: url('@/assets/images/map/rightMenu/fold.png') no-repeat;
  423. background-size: 100% 100%;
  424. margin-right: 6px;
  425. }
  426. }
  427. .icon1 {
  428. width: 32px;
  429. height: 30px;
  430. background: url('@/assets/images/map/rightMenu/icon2.png') no-repeat;
  431. background-size: 100% 100%;
  432. cursor: pointer;
  433. }
  434. .icon1_checked {
  435. background: url('@/assets/images/map/rightMenu/icon2_checked.png') no-repeat;
  436. background-size: 100% 100%;
  437. }
  438. .icon2 {
  439. width: 30px;
  440. height: 30px;
  441. background: url('@/assets/images/map/rightMenu/icon2.png') no-repeat;
  442. background-size: 100% 100%;
  443. cursor: pointer;
  444. }
  445. .icon2_checked {
  446. background: url('@/assets/images/map/rightMenu/icon2_checked.png') no-repeat;
  447. background-size: 100% 100%;
  448. }
  449. .icon3 {
  450. width: 92px;
  451. height: 92px;
  452. background: url('@/assets/images/map/rightMenu/icon3.png') no-repeat;
  453. cursor: pointer;
  454. }
  455. .icon3_checked {
  456. background: url('@/assets/images/map/rightMenu/icon3_checked.png') no-repeat;
  457. }
  458. .icon4 {
  459. width: 30px;
  460. height: 28px;
  461. background: url('@/assets/images/map/rightMenu/icon4.png') no-repeat;
  462. cursor: pointer;
  463. }
  464. .icon4_checked {
  465. background: url('@/assets/images/map/rightMenu/icon4_checked.png') no-repeat;
  466. }
  467. .icon5 {
  468. width: 30px;
  469. height: 27px;
  470. background: url('@/assets/images/map/rightMenu/icon5.png') no-repeat;
  471. cursor: pointer;
  472. }
  473. .icon5_checked {
  474. background: url('@/assets/images/map/rightMenu/icon5_checked.png') no-repeat;
  475. }
  476. .icon6 {
  477. width: 27px;
  478. height: 26px;
  479. background: url('@/assets/images/map/rightMenu/icon6.png') no-repeat;
  480. background-size: 100% 100%;
  481. cursor: pointer;
  482. }
  483. .icon6_checked {
  484. background: url('@/assets/images/map/rightMenu/icon6_checked.png') no-repeat;
  485. background-size: 100% 100%;
  486. }
  487. //
  488. .icon7 {
  489. width: 32px;
  490. height: 30.5px;
  491. background: url('@/assets/images/map/rightMenu/icon7.png') no-repeat;
  492. background-size: 100% 100%;
  493. cursor: pointer;
  494. }
  495. .icon7_checked {
  496. background: url('@/assets/images/map/rightMenu/icon7_checked.png') no-repeat;
  497. background-size: 100% 100%;
  498. }
  499. .icon8 {
  500. width: 32px;
  501. height: 30px;
  502. background: url('@/assets/images/map/rightMenu/icon8.png') no-repeat;
  503. background-size: 100% 100%;
  504. cursor: pointer;
  505. }
  506. .icon8_checked {
  507. background: url('@/assets/images/map/rightMenu/icon8_checked.png') no-repeat;
  508. background-size: 100% 100%;
  509. }
  510. .icon9 {
  511. width: 29.5px;
  512. height: 28.5px;
  513. background: url('@/assets/images/map/rightMenu/icon9.png') no-repeat;
  514. background-size: 100% 100%;
  515. cursor: pointer;
  516. }
  517. .icon9_checked {
  518. background: url('@/assets/images/map/rightMenu/icon9_checked.png') no-repeat;
  519. background-size: 100% 100%;
  520. }
  521. .icon10 {
  522. width: 28.5px;
  523. height: 28.5px;
  524. background: url('@/assets/images/map/rightMenu/icon10.png') no-repeat;
  525. background-size: 100% 100%;
  526. cursor: pointer;
  527. }
  528. .icon10_checked {
  529. background: url('@/assets/images/map/rightMenu/icon10_checked.png') no-repeat;
  530. background-size: 100% 100%;
  531. }
  532. .icon11 {
  533. width: 30px;
  534. height: 28.5px;
  535. background: url('@/assets/images/map/rightMenu/icon11.png') no-repeat;
  536. background-size: 100% 100%;
  537. cursor: pointer;
  538. }
  539. .icon11_checked {
  540. background: url('@/assets/images/map/rightMenu/icon11_checked.png') no-repeat;
  541. background-size: 100% 100%;
  542. }
  543. .icon12 {
  544. width: 30px;
  545. height: 29px;
  546. background: url('@/assets/images/map/rightMenu/icon12.png') no-repeat;
  547. background-size: 100% 100%;
  548. cursor: pointer;
  549. }
  550. .icon12_checked {
  551. background: url('@/assets/images/map/rightMenu/icon12_checked.png') no-repeat;
  552. background-size: 100% 100%;
  553. }
  554. .icon13 {
  555. width: 30px;
  556. height: 30px;
  557. background: url('@/assets/images/map/rightMenu/icon13.png') no-repeat;
  558. background-size: 100% 100%;
  559. cursor: pointer;
  560. }
  561. .icon13_checked {
  562. background: url('@/assets/images/map/rightMenu/icon13_checked.png') no-repeat;
  563. background-size: 100% 100%;
  564. }
  565. .icon14 {
  566. width: 30px;
  567. height: 30px;
  568. background: url('@/assets/images/map/rightMenu/icon14.png') no-repeat;
  569. background-size: 100% 100%;
  570. cursor: pointer;
  571. }
  572. .icon14_checked {
  573. background: url('@/assets/images/map/rightMenu/icon14_checked.png') no-repeat;
  574. background-size: 100% 100%;
  575. }
  576. .icon15 {
  577. width: 30px;
  578. height: 32px;
  579. background: url('@/assets/images/map/rightMenu/icon15.png') no-repeat;
  580. background-size: 100% 100%;
  581. cursor: pointer;
  582. }
  583. .icon15_checked {
  584. background: url('@/assets/images/map/rightMenu/icon15_checked.png') no-repeat;
  585. background-size: 100% 100%;
  586. }
  587. .icon16 {
  588. width: 30px;
  589. height: 27px;
  590. background: url('@/assets/images/map/rightMenu/icon16.png') no-repeat;
  591. background-size: 100% 100%;
  592. cursor: pointer;
  593. }
  594. .icon16_checked {
  595. background: url('@/assets/images/map/rightMenu/icon16_checked.png') no-repeat;
  596. background-size: 100% 100%;
  597. }
  598. .icon17 {
  599. width: 30px;
  600. height: 28px;
  601. background: url('@/assets/images/map/rightMenu/icon17.png') no-repeat;
  602. background-size: 100% 100%;
  603. cursor: pointer;
  604. }
  605. .icon17_checked {
  606. background: url('@/assets/images/map/rightMenu/icon17_checked.png') no-repeat;
  607. background-size: 100% 100%;
  608. }
  609. .icon18 {
  610. width: 30px;
  611. height: 32px;
  612. background: url('@/assets/images/map/rightMenu/icon18.png') no-repeat;
  613. background-size: 100% 100%;
  614. cursor: pointer;
  615. }
  616. .icon18_checked {
  617. background: url('@/assets/images/map/rightMenu/icon18_checked.png') no-repeat;
  618. background-size: 100% 100%;
  619. }
  620. .icon19 {
  621. width: 30px;
  622. height: 31px;
  623. background: url('@/assets/images/map/rightMenu/icon19.png') no-repeat;
  624. background-size: 100% 100%;
  625. cursor: pointer;
  626. }
  627. .icon19_checked {
  628. background: url('@/assets/images/map/rightMenu/icon19_checked.png') no-repeat;
  629. background-size: 100% 100%;
  630. }
  631. .icon20 {
  632. width: 30px;
  633. height: 30px;
  634. background: url('@/assets/images/map/rightMenu/icon20.png') no-repeat;
  635. background-size: 100% 100%;
  636. cursor: pointer;
  637. }
  638. .icon20_checked {
  639. background: url('@/assets/images/map/rightMenu/icon20_checked.png') no-repeat;
  640. background-size: 100% 100%;
  641. }
  642. .icon21 {
  643. width: 30px;
  644. height: 32px;
  645. background: url('@/assets/images/map/rightMenu/icon21.png') no-repeat;
  646. background-size: 100% 100%;
  647. cursor: pointer;
  648. }
  649. .icon21_checked {
  650. background: url('@/assets/images/map/rightMenu/icon21_checked.png') no-repeat;
  651. background-size: 100% 100%;
  652. }
  653. .icon22 {
  654. width: 30px;
  655. height: 28px;
  656. background: url('@/assets/images/map/rightMenu/icon22.png') no-repeat;
  657. background-size: 100% 100%;
  658. cursor: pointer;
  659. }
  660. .icon22_checked {
  661. background: url('@/assets/images/map/rightMenu/icon22_checked.png') no-repeat;
  662. background-size: 100% 100%;
  663. }
  664. .icon23 {
  665. width: 30px;
  666. height: 30px;
  667. background: url('@/assets/images/map/rightMenu/icon23.png') no-repeat;
  668. background-size: 100% 100%;
  669. cursor: pointer;
  670. }
  671. .icon23_checked {
  672. background: url('@/assets/images/map/rightMenu/icon23_checked.png') no-repeat;
  673. background-size: 100% 100%;
  674. }
  675. .icon24 {
  676. width: 30px;
  677. height: 25px;
  678. background: url('@/assets/images/map/rightMenu/icon24.png') no-repeat;
  679. background-size: 100% 100%;
  680. cursor: pointer;
  681. }
  682. .icon24_checked {
  683. background: url('@/assets/images/map/rightMenu/icon24_checked.png') no-repeat;
  684. background-size: 100% 100%;
  685. }
  686. .icon25 {
  687. width: 30px;
  688. height: 34px;
  689. background: url('@/assets/images/map/rightMenu/icon25.png') no-repeat;
  690. background-size: 100% 100%;
  691. cursor: pointer;
  692. }
  693. .icon25_checked {
  694. background: url('@/assets/images/map/rightMenu/icon25_checked.png') no-repeat;
  695. background-size: 100% 100%;
  696. }
  697. .icon26 {
  698. width: 28px;
  699. height: 29px;
  700. background: url('@/assets/images/map/rightMenu/icon26.png') no-repeat;
  701. background-size: 100% 100%;
  702. cursor: pointer;
  703. }
  704. .icon26_checked {
  705. background: url('@/assets/images/map/rightMenu/icon26_checked.png') no-repeat;
  706. background-size: 100% 100%;
  707. }
  708. </style>