You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

184 lines
3.7 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
工具栏组件
add by RYG
-->
<template>
<div class="flex-container">
<div v-if="!isInside" class="flex-container">
<img src="~/assets/img/KEP001.svg" class="align-item" />
<span class="text-item">KE Platform</span>
</div>
<ImageButton
v-for="btn in buttons"
:key="btn.key"
:imageUrl="btn.imageUrl"
:text="btn.text"
@click="handleButtonClick(btn)"
class="imgBtn"
:class="{ active: activeIndex === btn.index }"
/>
</div>
</template>
<script setup>
import { ref } from "vue";
import ImageButton from "./ImageButton.vue";
import { emitter } from "~/utils/eventBus";
const activeIndex = ref(-1);
// import { useBtnClickStore } from "~/stores/btnClickStore";
// const store = useBtnClickStore();
// const emit = defineEmits(["btnClick"]);
// const imageUrl = ref('/assets/img/mornejiantou.svg'); // 确保路径正确
const isInside = ref(true);
const buttons = [
{
imageUrl: "_nuxt/assets/img/default.svg",
text: "默认",
key: "default",
index: 0,
},
{
imageUrl: "_nuxt/assets/img/zoom_in.svg",
text: "放大",
key: "zoom_in",
index: 1,
},
{
imageUrl: "_nuxt/assets/img/zoom_out.svg",
text: "缩小",
key: "zoom_out",
index: 2,
},
{
imageUrl: "_nuxt/assets/img/refresh.svg",
text: "刷新",
key: "refresh",
index: 3,
},
{
imageUrl: "_nuxt/assets/img/center.svg",
text: "居中",
key: "center",
index: 4,
},
{
imageUrl: "_nuxt/assets/img/part.svg",
text: "局部",
key: "part",
index: 5,
},
{
imageUrl: "_nuxt/assets/img/all.svg",
text: "全部",
key: "all",
index: 6,
},
{
imageUrl: "_nuxt/assets/img/move.svg",
text: "移动",
key: "move",
index: 7,
},
{
imageUrl: "_nuxt/assets/img/choose_arrow.svg",
text: "选择",
key: "choose",
index: 8,
},
{
imageUrl: "_nuxt/assets/img/save.svg",
text: "保存",
key: "save",
index: 9,
},
{
imageUrl: "_nuxt/assets/img/image_layer_tree.svg",
text: "图层",
key: "layer",
index: 10,
},
];
const handleButtonClick = (btn) => {
activeIndex.value = btn.index;
emitter.emit("btnClick", { key: btn.key, index: btn.index });
// emit("btnClick", btn.key); // 触发事件将按钮的key传递出去
// store.newBtnClicked(btn.key);
// switch (btn.key) {
// case "default":
// // 处理默认按钮点击
// break;
// case "zoom_in":
// // 处理放大按钮点击
// break;
// case "zoom_out":
// // 处理缩小按钮点击
// break;
// case "refresh":
// // 处理刷新按钮点击
// break;
// case "center":
// // 处理居中按钮点击
// break;
// case "part":
// // 处理局部按钮点击
// break;
// case "all":
// // 处理全部按钮点击
// break;
// case "move":
// // 处理移动按钮点击
// break;
// case "choose":
// // 处理选择按钮点击
// break;
// case "save":
// // 处理保存按钮点击
// break;
// case "layer":
// // 处理图层按钮点击
// break;
// default:
// console.warn(`未定义的按钮:${btn.key}`);
// }
};
</script>
<style scoped>
.flex-container {
display: flex;
flex-direction: row;
align-items: center;
/* 元素间距 */
gap: 12px;
padding-left:15px;
}
.align-item {
width: 30px;
height: 35px;
}
.text-item {
font-size: 20px;
}
.active {
background-color: #fff;
color: rgb(24, 144, 255);
}
.imgBtn {
height: 35px;
width: 30px;
}
.imgBtn :hover {
color: rgb(24, 144, 255);
}
</style>