index.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717
  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. <DisasterInfoOfficer
  177. v-if="handleIf('灾害信息员')"
  178. v-show="menuState.showMenu && menuState.menuData[menuState.activeIndex]?.name === '灾害信息员'"
  179. />
  180. </div>
  181. </div>
  182. </div>
  183. </template>
  184. <script lang="ts" setup name="rightMenu">
  185. import RiverMonitor from './RiverMonitor.vue';
  186. import ReservoirMonitor from './ReservoirMonitor.vue';
  187. import RoadNetworkVideo from './RoadNetworkVideo.vue';
  188. import Reservoir from './Reservoir.vue';
  189. import SpatialAnalysis from './SpatialAnalysis.vue';
  190. import LayerAnalysis from './LayerAnalysis.vue';
  191. import OnlinePlotting from './OnlinePlotting/index.vue';
  192. import FixedPointAnalysis from './FixedPointAnalysis.vue';
  193. import UAV from './UAV/index.vue';
  194. import WarningInfo from './WarningInfo.vue';
  195. import RainMonitor from './RainMonitor/index.vue';
  196. import PreventDrowning from './PreventDrowning.vue';
  197. import Fireproofing from './Fireproofing.vue';
  198. import ForestDefenseVideo from './ForestDefenseVideo/index.vue';
  199. import Mitigation from './Mitigation.vue';
  200. import tranBureauVideo from './tranBureauVideo.vue';
  201. import PotentialFloodHazard from './PotentialFloodHazard.vue';
  202. import TowerStatus from './TowerStatus.vue';
  203. import CommunicationSupport from './CommunicationSupport.vue';
  204. import MobilePlatform from './MobilePlatform.vue';
  205. import KeyVehicles from './KeyVehicles.vue';
  206. import SatellitePhone from './SatellitePhone.vue';
  207. import MobileUnmannedVehicle from './MobileUnmannedVehicle.vue';
  208. import MobileCommandVehicle from './MobileCommandVehicle.vue';
  209. import Helicopter from './Helicopter.vue';
  210. import TyphoonVideo from './TyphoonVideo.vue';
  211. import RescueTeam from './RescueTeam.vue';
  212. import TrafficVideo from './TrafficVideo.vue';
  213. import WindMonitor from './WindMonitor/index.vue';
  214. import CommonVideo from './CommonVideo.vue';
  215. import DisasterInfoOfficer from './DisasterInfoOfficer.vue';
  216. import useMapStore from '@/store/modules/map';
  217. const emits = defineEmits(['update:drawing']);
  218. const scrollListRef = ref();
  219. const mapStore = useMapStore();
  220. const { menuState } = storeToRefs(mapStore);
  221. // 点击收缩展开
  222. const clickContractMenu = () => {
  223. menuState.value.showMenu = !menuState.value.showMenu;
  224. };
  225. // 菜单上下移动
  226. const clickBtn = (direction: string) => {
  227. const len = menuState.value.menuData.length;
  228. if (direction === 'up' && scrollListRef.value.scrollTop - 168 >= 0) {
  229. scrollListRef.value.scrollTop -= 168;
  230. } else if (direction === 'down' && scrollListRef.value.scrollTop + 168 <= 168 * len) {
  231. scrollListRef.value.scrollTop += 168;
  232. }
  233. };
  234. const showIndexMenu = (name) => {
  235. let index = menuState.value.menuData.findIndex((item) => {
  236. return item.name === name;
  237. });
  238. if (index > -1) {
  239. clickMenu(index);
  240. }
  241. };
  242. // 点击菜单
  243. const clickMenu = (index) => {
  244. menuState.value.showMenu = true;
  245. menuState.value.activeIndex = index;
  246. };
  247. let location = ref([]);
  248. let location2 = ref([]);
  249. // 显示菜单
  250. const handleMenu = (name, data) => {
  251. let index = menuState.value.menuData.findIndex((item) => {
  252. return item.name === name;
  253. });
  254. if (name === '空间分析') {
  255. menuState.value.showMenu = true;
  256. menuState.value.activeIndex = index;
  257. nextTick(() => {
  258. location.value = data;
  259. });
  260. } else if (index > -1) {
  261. clickMenu(index);
  262. }
  263. };
  264. // 新增菜单 type 1 新增 2 删除
  265. const updateMenu = (type, menu, newLocation?: any) => {
  266. if (type === '1') {
  267. if (['图层分析', '定点分析'].includes(menu.name)) {
  268. let index = menuState.value.menuData.findIndex((item) => {
  269. return item.name === menu.name;
  270. });
  271. if (index === -1) {
  272. menuState.value.menuData.push(menu);
  273. }
  274. if (menu.name === '定点分析') {
  275. location2.value = newLocation;
  276. }
  277. } else {
  278. menuState.value.menuData.push(menu);
  279. }
  280. clickMenu(menuState.value.menuData.length - 1);
  281. } else if (type === '2') {
  282. let index = menuState.value.menuData.findIndex((item) => item.name === menu.name);
  283. if (index > -1) {
  284. menuState.value.menuData.splice(index, 1);
  285. menuState.value.activeIndex = 0;
  286. }
  287. if (menu.name === '空间分析') {
  288. location.value = [];
  289. }
  290. } else if (type === '4') {
  291. let index = menuState.value.menuData.findIndex((item) => item.name === menu.name);
  292. if (index > -1) {
  293. menuState.value.menuData.splice(index, 1);
  294. menuState.value.activeIndex = 0;
  295. }
  296. location2.value = newLocation;
  297. }
  298. };
  299. const handleIf = (name) => {
  300. let flag = false;
  301. let index = menuState.value.menuData.findIndex((item) => {
  302. return item.name === name;
  303. });
  304. if (index > -1) {
  305. flag = true;
  306. }
  307. return flag;
  308. };
  309. const getMenuState = () => {
  310. return menuState;
  311. };
  312. defineExpose({ handleMenu, showIndexMenu, clickContractMenu, updateMenu, getMenuState });
  313. </script>
  314. <style lang="scss" scoped>
  315. .right-menu {
  316. position: absolute;
  317. top: 100px;
  318. right: 0;
  319. z-index: 20;
  320. pointer-events: none;
  321. }
  322. .expand-btn {
  323. width: 70px;
  324. height: 240px;
  325. font-size: 32px;
  326. background: #d7d7d7;
  327. padding: 10px 18px;
  328. cursor: pointer;
  329. display: flex;
  330. align-items: center;
  331. }
  332. .menu-container {
  333. .menu-list-right {
  334. margin-right: -39px;
  335. }
  336. .menu-list {
  337. position: relative;
  338. max-height: 505px;
  339. overflow: hidden;
  340. .menu-item {
  341. width: 252px;
  342. height: 47px;
  343. font-size: 17px;
  344. padding: 0px 2px 0px 14px;
  345. cursor: pointer;
  346. display: flex;
  347. align-items: center;
  348. background: url('@/assets/images/map/rightMenu/box.png') no-repeat;
  349. margin-top: 10px;
  350. &:first-child {
  351. margin-top: 0;
  352. }
  353. .text {
  354. font-size: 18px;
  355. }
  356. &:hover {
  357. background: url('@/assets/images/map/rightMenu/box_checked.png') no-repeat;
  358. }
  359. }
  360. .menu-active {
  361. background: url('@/assets/images/map/rightMenu/box_checked.png') no-repeat;
  362. }
  363. }
  364. .left-btn,
  365. .right-btn {
  366. position: absolute;
  367. top: 50%;
  368. right: 205px;
  369. transform: translateY(-50%);
  370. z-index: 2;
  371. }
  372. .right-btn {
  373. width: 63px;
  374. height: 55px;
  375. cursor: pointer;
  376. background: url('@/assets/images/map/rightMenu/right.png') no-repeat;
  377. background-size: 100% 100%;
  378. cursor: pointer;
  379. }
  380. .left-btn {
  381. right: 0;
  382. width: 63px;
  383. height: 55px;
  384. background: url('@/assets/images/map/rightMenu/left.png') no-repeat;
  385. background-size: 100% 100%;
  386. cursor: pointer;
  387. }
  388. .btn-box {
  389. width: 100%;
  390. display: flex;
  391. margin-left: 45px;
  392. .up-btn {
  393. width: 38px;
  394. height: 45px;
  395. background: url('@/assets/images/map/rightMenu/up.png') no-repeat;
  396. background-size: 100% 100%;
  397. cursor: pointer;
  398. }
  399. .down-btn {
  400. height: 38px;
  401. width: 45px;
  402. background: url('@/assets/images/map/rightMenu/down.png') no-repeat;
  403. background-size: 100% 100%;
  404. cursor: pointer;
  405. }
  406. }
  407. }
  408. .fold-btn {
  409. position: absolute;
  410. right: 0;
  411. top: 0;
  412. z-index: 10;
  413. width: 103px;
  414. height: 26px;
  415. background: url('@/assets/images/map/rightMenu/btn3.png') no-repeat;
  416. background-size: 100% 100%;
  417. font-size: 15px;
  418. color: #ffffff;
  419. display: flex;
  420. align-items: center;
  421. padding-left: 12px;
  422. cursor: pointer;
  423. .fold-icon {
  424. display: inline-block;
  425. width: 14px;
  426. height: 14px;
  427. background: url('@/assets/images/map/rightMenu/fold.png') no-repeat;
  428. background-size: 100% 100%;
  429. margin-right: 6px;
  430. }
  431. }
  432. .icon1 {
  433. width: 32px;
  434. height: 30px;
  435. background: url('@/assets/images/map/rightMenu/icon2.png') no-repeat;
  436. background-size: 100% 100%;
  437. cursor: pointer;
  438. }
  439. .icon1_checked {
  440. background: url('@/assets/images/map/rightMenu/icon2_checked.png') no-repeat;
  441. background-size: 100% 100%;
  442. }
  443. .icon2 {
  444. width: 30px;
  445. height: 30px;
  446. background: url('@/assets/images/map/rightMenu/icon2.png') no-repeat;
  447. background-size: 100% 100%;
  448. cursor: pointer;
  449. }
  450. .icon2_checked {
  451. background: url('@/assets/images/map/rightMenu/icon2_checked.png') no-repeat;
  452. background-size: 100% 100%;
  453. }
  454. .icon3 {
  455. width: 92px;
  456. height: 92px;
  457. background: url('@/assets/images/map/rightMenu/icon3.png') no-repeat;
  458. cursor: pointer;
  459. }
  460. .icon3_checked {
  461. background: url('@/assets/images/map/rightMenu/icon3_checked.png') no-repeat;
  462. }
  463. .icon4 {
  464. width: 30px;
  465. height: 28px;
  466. background: url('@/assets/images/map/rightMenu/icon4.png') no-repeat;
  467. cursor: pointer;
  468. }
  469. .icon4_checked {
  470. background: url('@/assets/images/map/rightMenu/icon4_checked.png') no-repeat;
  471. }
  472. .icon5 {
  473. width: 30px;
  474. height: 27px;
  475. background: url('@/assets/images/map/rightMenu/icon5.png') no-repeat;
  476. cursor: pointer;
  477. }
  478. .icon5_checked {
  479. background: url('@/assets/images/map/rightMenu/icon5_checked.png') no-repeat;
  480. }
  481. .icon6 {
  482. width: 27px;
  483. height: 26px;
  484. background: url('@/assets/images/map/rightMenu/icon6.png') no-repeat;
  485. background-size: 100% 100%;
  486. cursor: pointer;
  487. }
  488. .icon6_checked {
  489. background: url('@/assets/images/map/rightMenu/icon6_checked.png') no-repeat;
  490. background-size: 100% 100%;
  491. }
  492. //
  493. .icon7 {
  494. width: 32px;
  495. height: 30.5px;
  496. background: url('@/assets/images/map/rightMenu/icon7.png') no-repeat;
  497. background-size: 100% 100%;
  498. cursor: pointer;
  499. }
  500. .icon7_checked {
  501. background: url('@/assets/images/map/rightMenu/icon7_checked.png') no-repeat;
  502. background-size: 100% 100%;
  503. }
  504. .icon8 {
  505. width: 32px;
  506. height: 30px;
  507. background: url('@/assets/images/map/rightMenu/icon8.png') no-repeat;
  508. background-size: 100% 100%;
  509. cursor: pointer;
  510. }
  511. .icon8_checked {
  512. background: url('@/assets/images/map/rightMenu/icon8_checked.png') no-repeat;
  513. background-size: 100% 100%;
  514. }
  515. .icon9 {
  516. width: 29.5px;
  517. height: 28.5px;
  518. background: url('@/assets/images/map/rightMenu/icon9.png') no-repeat;
  519. background-size: 100% 100%;
  520. cursor: pointer;
  521. }
  522. .icon9_checked {
  523. background: url('@/assets/images/map/rightMenu/icon9_checked.png') no-repeat;
  524. background-size: 100% 100%;
  525. }
  526. .icon10 {
  527. width: 28.5px;
  528. height: 28.5px;
  529. background: url('@/assets/images/map/rightMenu/icon10.png') no-repeat;
  530. background-size: 100% 100%;
  531. cursor: pointer;
  532. }
  533. .icon10_checked {
  534. background: url('@/assets/images/map/rightMenu/icon10_checked.png') no-repeat;
  535. background-size: 100% 100%;
  536. }
  537. .icon11 {
  538. width: 30px;
  539. height: 28.5px;
  540. background: url('@/assets/images/map/rightMenu/icon11.png') no-repeat;
  541. background-size: 100% 100%;
  542. cursor: pointer;
  543. }
  544. .icon11_checked {
  545. background: url('@/assets/images/map/rightMenu/icon11_checked.png') no-repeat;
  546. background-size: 100% 100%;
  547. }
  548. .icon12 {
  549. width: 30px;
  550. height: 29px;
  551. background: url('@/assets/images/map/rightMenu/icon12.png') no-repeat;
  552. background-size: 100% 100%;
  553. cursor: pointer;
  554. }
  555. .icon12_checked {
  556. background: url('@/assets/images/map/rightMenu/icon12_checked.png') no-repeat;
  557. background-size: 100% 100%;
  558. }
  559. .icon13 {
  560. width: 30px;
  561. height: 30px;
  562. background: url('@/assets/images/map/rightMenu/icon13.png') no-repeat;
  563. background-size: 100% 100%;
  564. cursor: pointer;
  565. }
  566. .icon13_checked {
  567. background: url('@/assets/images/map/rightMenu/icon13_checked.png') no-repeat;
  568. background-size: 100% 100%;
  569. }
  570. .icon14 {
  571. width: 30px;
  572. height: 30px;
  573. background: url('@/assets/images/map/rightMenu/icon14.png') no-repeat;
  574. background-size: 100% 100%;
  575. cursor: pointer;
  576. }
  577. .icon14_checked {
  578. background: url('@/assets/images/map/rightMenu/icon14_checked.png') no-repeat;
  579. background-size: 100% 100%;
  580. }
  581. .icon15 {
  582. width: 30px;
  583. height: 32px;
  584. background: url('@/assets/images/map/rightMenu/icon15.png') no-repeat;
  585. background-size: 100% 100%;
  586. cursor: pointer;
  587. }
  588. .icon15_checked {
  589. background: url('@/assets/images/map/rightMenu/icon15_checked.png') no-repeat;
  590. background-size: 100% 100%;
  591. }
  592. .icon16 {
  593. width: 30px;
  594. height: 27px;
  595. background: url('@/assets/images/map/rightMenu/icon16.png') no-repeat;
  596. background-size: 100% 100%;
  597. cursor: pointer;
  598. }
  599. .icon16_checked {
  600. background: url('@/assets/images/map/rightMenu/icon16_checked.png') no-repeat;
  601. background-size: 100% 100%;
  602. }
  603. .icon17 {
  604. width: 30px;
  605. height: 28px;
  606. background: url('@/assets/images/map/rightMenu/icon17.png') no-repeat;
  607. background-size: 100% 100%;
  608. cursor: pointer;
  609. }
  610. .icon17_checked {
  611. background: url('@/assets/images/map/rightMenu/icon17_checked.png') no-repeat;
  612. background-size: 100% 100%;
  613. }
  614. .icon18 {
  615. width: 30px;
  616. height: 32px;
  617. background: url('@/assets/images/map/rightMenu/icon18.png') no-repeat;
  618. background-size: 100% 100%;
  619. cursor: pointer;
  620. }
  621. .icon18_checked {
  622. background: url('@/assets/images/map/rightMenu/icon18_checked.png') no-repeat;
  623. background-size: 100% 100%;
  624. }
  625. .icon19 {
  626. width: 30px;
  627. height: 31px;
  628. background: url('@/assets/images/map/rightMenu/icon19.png') no-repeat;
  629. background-size: 100% 100%;
  630. cursor: pointer;
  631. }
  632. .icon19_checked {
  633. background: url('@/assets/images/map/rightMenu/icon19_checked.png') no-repeat;
  634. background-size: 100% 100%;
  635. }
  636. .icon20 {
  637. width: 30px;
  638. height: 30px;
  639. background: url('@/assets/images/map/rightMenu/icon20.png') no-repeat;
  640. background-size: 100% 100%;
  641. cursor: pointer;
  642. }
  643. .icon20_checked {
  644. background: url('@/assets/images/map/rightMenu/icon20_checked.png') no-repeat;
  645. background-size: 100% 100%;
  646. }
  647. .icon21 {
  648. width: 30px;
  649. height: 32px;
  650. background: url('@/assets/images/map/rightMenu/icon21.png') no-repeat;
  651. background-size: 100% 100%;
  652. cursor: pointer;
  653. }
  654. .icon21_checked {
  655. background: url('@/assets/images/map/rightMenu/icon21_checked.png') no-repeat;
  656. background-size: 100% 100%;
  657. }
  658. .icon22 {
  659. width: 30px;
  660. height: 28px;
  661. background: url('@/assets/images/map/rightMenu/icon22.png') no-repeat;
  662. background-size: 100% 100%;
  663. cursor: pointer;
  664. }
  665. .icon22_checked {
  666. background: url('@/assets/images/map/rightMenu/icon22_checked.png') no-repeat;
  667. background-size: 100% 100%;
  668. }
  669. .icon23 {
  670. width: 30px;
  671. height: 30px;
  672. background: url('@/assets/images/map/rightMenu/icon23.png') no-repeat;
  673. background-size: 100% 100%;
  674. cursor: pointer;
  675. }
  676. .icon23_checked {
  677. background: url('@/assets/images/map/rightMenu/icon23_checked.png') no-repeat;
  678. background-size: 100% 100%;
  679. }
  680. .icon24 {
  681. width: 30px;
  682. height: 25px;
  683. background: url('@/assets/images/map/rightMenu/icon24.png') no-repeat;
  684. background-size: 100% 100%;
  685. cursor: pointer;
  686. }
  687. .icon24_checked {
  688. background: url('@/assets/images/map/rightMenu/icon24_checked.png') no-repeat;
  689. background-size: 100% 100%;
  690. }
  691. .icon25 {
  692. width: 30px;
  693. height: 34px;
  694. background: url('@/assets/images/map/rightMenu/icon25.png') no-repeat;
  695. background-size: 100% 100%;
  696. cursor: pointer;
  697. }
  698. .icon25_checked {
  699. background: url('@/assets/images/map/rightMenu/icon25_checked.png') no-repeat;
  700. background-size: 100% 100%;
  701. }
  702. .icon26 {
  703. width: 28px;
  704. height: 29px;
  705. background: url('@/assets/images/map/rightMenu/icon26.png') no-repeat;
  706. background-size: 100% 100%;
  707. cursor: pointer;
  708. }
  709. .icon26_checked {
  710. background: url('@/assets/images/map/rightMenu/icon26_checked.png') no-repeat;
  711. background-size: 100% 100%;
  712. }
  713. </style>