feat: 优化部分问题,完善选区功能
This commit is contained in:
@@ -11,7 +11,7 @@ import LayersList from "./LayersList.vue"; // 引入 LayersList 组件
|
||||
// GroupLayersCommand,
|
||||
// UngroupLayersCommand,
|
||||
// } from "../../commands/LayerCommands";
|
||||
import { generateId } from "../../utils/helper";
|
||||
import { findObjectById, generateId } from "../../utils/helper";
|
||||
|
||||
const props = defineProps({
|
||||
// layers: Array,
|
||||
@@ -26,6 +26,7 @@ const props = defineProps({
|
||||
|
||||
const emit = defineEmits([
|
||||
"add-layer",
|
||||
"add-top-layer",
|
||||
"add-group-layer",
|
||||
"set-active-layer",
|
||||
"toggle-layer-visibility",
|
||||
@@ -92,6 +93,13 @@ const selectedLayers = computed(() => {
|
||||
);
|
||||
});
|
||||
|
||||
// 计算属性:获取当前是否激活子图层
|
||||
const isChildLayerActive = computed(() => {
|
||||
const { parent } = findLayerRecursively(layers.value, props.activeLayerId);
|
||||
if (parent) return true; // 如果有父图层,则表示是子图层
|
||||
return false; // 否则是根图层
|
||||
});
|
||||
|
||||
// 计算属性:检查是否有选中的图层可以分组
|
||||
const canGroupLayers = computed(() => {
|
||||
// 直接基于 selectedLayerIds 和 sortableRootLayers 计算,确保响应式
|
||||
@@ -142,6 +150,9 @@ const canToggleLock = computed(() => {
|
||||
function addLayer() {
|
||||
emit("add-layer");
|
||||
}
|
||||
function addTopLayer() {
|
||||
emit("add-top-layer");
|
||||
}
|
||||
|
||||
function addGroupLayer() {
|
||||
emit("add-group-layer");
|
||||
@@ -590,6 +601,7 @@ function handleLayerClick(layer, event) {
|
||||
) {
|
||||
// 如果是组图层,设置第一个子图层为活动图层
|
||||
setActiveLayer(layer.children[0].id, { parentId: layer.id });
|
||||
layerManager?.setAllActiveGroupLayerCanvasObject?.(layer);
|
||||
} else {
|
||||
// 否则直接设置当前图层为活动图层
|
||||
setActiveLayer(layer.id);
|
||||
@@ -1252,6 +1264,14 @@ const forwardEvent = (eventName, ...args) => {
|
||||
|
||||
<!-- 常规操作按钮 -->
|
||||
<div v-else class="normal-actions">
|
||||
<div
|
||||
v-if="isChildLayerActive"
|
||||
class="add-layer-btn action-btn"
|
||||
@click="addTopLayer"
|
||||
:title="$t('添加顶级图层')"
|
||||
>
|
||||
<SvgIcon name="CPlusTop" size="16"></SvgIcon>
|
||||
</div>
|
||||
<div
|
||||
class="add-layer-btn action-btn"
|
||||
@click="addLayer"
|
||||
|
||||
Reference in New Issue
Block a user