1.工具栏的某个工具如果有二级菜单,改为通过点击工具展开和收起;
This commit is contained in:
parent
4827a7da46
commit
ed8b76fe5f
|
@ -11,16 +11,16 @@
|
|||
v-for="tool in options"
|
||||
:key="tool.id"
|
||||
class="tool-wrapper"
|
||||
:class="{'open': isOpen}"
|
||||
:class="{'open': isOpen, 'active': tool.expand}"
|
||||
>
|
||||
<!-- 主工具按钮 -->
|
||||
<div class="tool-button" @click="tool.name && bus.emit(`toolbar_${tool.name}`, params)">
|
||||
<div class="tool-button" @click="mainToolClick(tool)">
|
||||
<el-image class="tool-icon" :src="tool.icon" fit="contain" />
|
||||
</div>
|
||||
<!-- 主工具名称 (右侧淡入淡出) -->
|
||||
<div class="tool-name main-name">{{ tool.label }}</div>
|
||||
<!-- 二级工具菜单 (左侧淡入淡出) -->
|
||||
<div v-if="tool.subtools && tool.subtools?.length > 0" class="toolbar submenu">
|
||||
<div v-if="tool.subtools && tool.subtools?.length > 0" class="toolbar submenu" :class="{'active': tool.expand}">
|
||||
<!-- 遍历二级工具按钮 -->
|
||||
<div
|
||||
v-for="subtool in tool.subtools"
|
||||
|
@ -102,7 +102,6 @@ import toolbarWatersourceIcon from '@/assets/icons/toolbar_watersource.png';
|
|||
import toolbarRoadIcon from '@/assets/icons/toolbar_road.png';
|
||||
import toolbarKeyareaIcon from '@/assets/icons/toolbar_keyarea.png';
|
||||
// 气象效果图标
|
||||
import toolbarSunnyIcon from '@/assets/icons/toolbar_sunny.png';
|
||||
import toolbarRainIcon from '@/assets/icons/toolbar_rain.png';
|
||||
import toolbarSnowIcon from '@/assets/icons/toolbar_snow.png';
|
||||
import toolbarFogIcon from '@/assets/icons/toolbar_fog.png';
|
||||
|
@ -128,6 +127,7 @@ const options = ref([
|
|||
id: 1,
|
||||
icon: baseDrawIcon,
|
||||
label: '基础绘制',
|
||||
expand: false,
|
||||
subtools: [
|
||||
{
|
||||
id: 11,
|
||||
|
@ -186,6 +186,7 @@ const options = ref([
|
|||
id: 2,
|
||||
icon: forestDrawIcon,
|
||||
label: '森防绘制',
|
||||
expand: false,
|
||||
subtools: [
|
||||
{
|
||||
id: 21,
|
||||
|
@ -249,30 +250,28 @@ const options = ref([
|
|||
id: 3,
|
||||
icon: weatherIcon,
|
||||
label: '气象效果',
|
||||
expand: false,
|
||||
subtools: [
|
||||
{
|
||||
id: 31,
|
||||
name: 'sunny',
|
||||
label: '晴天',
|
||||
icon: toolbarSunnyIcon
|
||||
name: 'rain',
|
||||
label: '下雨',
|
||||
icon: toolbarRainIcon,
|
||||
active: false
|
||||
},
|
||||
{
|
||||
id: 32,
|
||||
name: 'rain',
|
||||
label: '下雨',
|
||||
icon: toolbarRainIcon
|
||||
name: 'snow',
|
||||
label: '下雪',
|
||||
icon: toolbarSnowIcon,
|
||||
active: false
|
||||
},
|
||||
{
|
||||
id: 33,
|
||||
name: 'snow',
|
||||
label: '下雪',
|
||||
icon: toolbarSnowIcon
|
||||
},
|
||||
{
|
||||
id: 34,
|
||||
name: 'fog',
|
||||
label: '起雾',
|
||||
icon: toolbarFogIcon
|
||||
icon: toolbarFogIcon,
|
||||
active: false
|
||||
},
|
||||
]
|
||||
},
|
||||
|
@ -311,6 +310,25 @@ const toolbarClear = () => {
|
|||
}
|
||||
};
|
||||
|
||||
const mainToolClick = (tool) => {
|
||||
// 触发工具事件
|
||||
tool.name && bus.emit(`toolbar_${tool.name}`, params)
|
||||
|
||||
// 修改子工具栏的展开状态
|
||||
if(tool.expand) {
|
||||
tool.expand = false;
|
||||
} else {
|
||||
tool.expand = true;
|
||||
options.value.forEach(item => {
|
||||
if(item.id !== tool.id) {
|
||||
item.expand = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
watch(() => props.viewer, (v) => {
|
||||
if (v) {
|
||||
viewer = v;
|
||||
|
@ -445,7 +463,8 @@ watch(() => props.viewer, (v) => {
|
|||
border-radius: 0 0 16px 16px;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
&:hover {
|
||||
&:hover,
|
||||
&.active {
|
||||
background-color: rgba($color: #FFD700, $alpha: .5);
|
||||
}
|
||||
}
|
||||
|
@ -466,14 +485,8 @@ watch(() => props.viewer, (v) => {
|
|||
right: 100%;
|
||||
pointer-events: none;
|
||||
transition: opacity 0.3s ease, transform 0.3s ease; /* 动画持续时间和缓动函数 */
|
||||
}
|
||||
/* 二级工具名称的定位 (左侧) */
|
||||
.sub-name {
|
||||
right: 100%;
|
||||
transform: translateX(0); /* 初始位置 */
|
||||
}
|
||||
/* 当主 tool-wrapper 被 hover 且包含二级菜单时,显示二级菜单 */
|
||||
.tool-wrapper:hover > .submenu {
|
||||
|
||||
&.active {
|
||||
pointer-events: all;
|
||||
transition-delay: 0.1s; /* 延迟 */
|
||||
|
||||
|
@ -482,6 +495,22 @@ watch(() => props.viewer, (v) => {
|
|||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* 二级工具名称的定位 (左侧) */
|
||||
.sub-name {
|
||||
right: 100%;
|
||||
transform: translateX(0); /* 初始位置 */
|
||||
}
|
||||
/* 当主 tool-wrapper 被 hover 且包含二级菜单时,显示二级菜单 */
|
||||
// .tool-wrapper:hover > .submenu {
|
||||
// pointer-events: all;
|
||||
// transition-delay: 0.1s; /* 延迟 */
|
||||
|
||||
// & > .tool-wrapper {
|
||||
// height: 40px;
|
||||
// opacity: 1;
|
||||
// }
|
||||
// }
|
||||
|
||||
/* 当二级 tool-wrapper 被 hover 时,显示二级工具名称 */
|
||||
/* 注意这里的选择器,因为二级名称在二级 tool-wrapper 内部 */
|
||||
|
|
Loading…
Reference in New Issue