<!-- * @Description: 工具栏 * @Author: 王晓颖 * @Date: 2022-05-16 18:41:50 --> <template> <div v-if="show"> <!--工具箱--> <div v-if="showBaseMap || showLayer || showTool" class="box-container"> <div v-show="showBaseMap" class="box-btn" @click="clickBox('baseMap')"> <i class="el-icon-map-location" /> 底图 </div> <div v-show="showBaseMap && showLayer" class="vertical-seperate" /> <div v-show="showLayer" class="box-btn" @click="clickBox('layer')"> <i class="el-icon-copy-document" /> 图层 </div> <div v-show="showLayer && showTool" class="vertical-seperate" /> <div v-show="showBaseMap && !showLayer && showTool" class="vertical-seperate" /> <div v-show="showTool" class="box-btn" @click="clickBox('tool')"> <i class="el-icon-suitcase-1" /> 工具箱 </div> </div> <!--底图选择--> <transition enter-active-class="animate__animated animate__slideInRight" leave-active-class="animate__animated animate__slideOutRight" :duration="500" mode="out-in"> <div v-show="baseMapWindowShow" class="base-map-window"> <div class="window-title"> <div>底图</div> <i class="el-icon-close close-icon" @click="baseMapWindowShow=false" /> </div> <div class="window-body"> <div class="base-map-block" @click="changeBaseMap('gaode_vec')"> <el-image :src="require('@/assets/overview/gaode_vec.png')" class="base-map-image" mode="fill" /> <div class="base-map-name"> 矢量地图 </div> </div> <div class="base-map-block" @click="changeBaseMap('gaode_sat')"> <el-image :src="require('@/assets/overview/gaode_sat.png')" class="base-map-image" mode="fill" /> <div class="base-map-name"> 影像地图 </div> </div> </div> </div> </transition> <!--图层选择--> <layer-choose-window :show="layerWindowShow" :layers="layers" :checked="layerChecked" @close="layerWindowShow=false" @checked-change="checkedLayerChange" /> </div> </template> <script> import LayerChooseWindow from './layerChooseWindow' export default { name: 'ToolBox', components: { LayerChooseWindow }, props: { show: { type: Boolean, default: false }, showBaseMap: { type: Boolean, default: true }, // 是否显示底图选项 showLayer: { type: Boolean, default: true }, // 是否显示图层管理 showTool: { type: Boolean, default: true }, // 是否显示工具箱 mapType: { type: String, default: 'gaode_vec' }, layers: { type: Array, default: () => [] }, layerChecked: { type: Array, default: () => [] } }, data() { return { baseMapWindowShow: false, layerWindowShow: true, tollWindowShow: false } }, methods: { // 点击工具箱,更改显示状态 clickBox(type) { this[type + 'WindowShow'] = !this[type + 'WindowShow'] this.$emit('click' + type) }, // 切换底图 changeBaseMap(maptype) { this.$emit('change-base-map', maptype) }, // 更改选中土城 checkedLayerChange(checkedLayer) { this.$emit('layer-change', checkedLayer) } } } </script> <style rel="stylesheet/scss" lang="scss" scoped> .box-container{ position: absolute; right: 10px; top:10px; background-color: #FFFFFF; padding: 8px; border-radius: 5px; box-shadow: 1px 1px 3px #9c9c9c; font-size: 14px; display: flex; align-items: stretch; color: #3b3b3b; .box-btn{ padding: 0px 10px; &:hover{ color: #36a3f7; cursor: pointer; } } .vertical-seperate{ background: -webkit-linear-gradient(#ffffff, #9c9c9c, #ffffff); width: 1px; } } .base-map-window{ position: absolute; right: 10px; top: 50px; width: 200px; background-color: rgba(255,255,255,0.9); .window-body{ display: flex; flex-wrap: wrap; padding: 0px 10px; } .base-map-block{ display: flex; flex-direction: column; align-items: center; margin: 5px; .base-map-image{ width: 60px; height: 60px; border-radius: 5px; } .base-map-name{ font-size: 14px; line-height: 2; } &:hover{ color: #36a3f7; cursor: pointer; .base-map-image{ border: 1px solid #36a3f7; } } } } .window-title{ height: 40px; display: flex; align-items: center; justify-content: space-between; padding: 0px 10px; .close-icon:hover{ cursor: pointer; color: #36a3f7; } } </style>