Skip to content

Commit 4b679e0

Browse files
feat: 新增隐藏元素功能 (#388)
1 parent 92ca197 commit 4b679e0

File tree

3 files changed

+48
-2
lines changed

3 files changed

+48
-2
lines changed

src/components/hide.vue

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<!--
2+
* @Author: wuchenguang1998
3+
* @Date: 2024-05-13 22:34:03
4+
* @LastEditors: wuchenguang1998
5+
* @LastEditTime: 2024-05-13 23:40:48
6+
* @Description: 隐藏或显示元素
7+
-->
8+
9+
<template>
10+
<Tooltip :content="$t('quick.hide')" v-if="mixinState.mSelectMode === 'one'">
11+
<Button v-if="isHide" @click="doHide(false)" icon="md-eye-off" type="text"></Button>
12+
<Button v-else @click="doHide(true)" icon="md-eye" type="text"></Button>
13+
</Tooltip>
14+
</template>
15+
16+
<script setup name="Hide">
17+
import useSelect from '@/hooks/select';
18+
import { onBeforeUnmount, onMounted } from 'vue';
19+
20+
const { mixinState, canvasEditor } = useSelect();
21+
const isHide = ref(false);
22+
23+
const doHide = (hide) => {
24+
// 修改visible属性
25+
const activeObject = canvasEditor.canvas.getActiveObject();
26+
activeObject.set('visible', !hide);
27+
canvasEditor.canvas.requestRenderAll();
28+
isHide.value = hide;
29+
};
30+
31+
const handleSelected = () => {
32+
const activeObject = canvasEditor.canvas.getActiveObject();
33+
isHide.value = !activeObject.visible;
34+
};
35+
36+
onMounted(() => {
37+
canvasEditor.on('selectOne', handleSelected);
38+
});
39+
40+
onBeforeUnmount(() => {
41+
canvasEditor.off('selectOne', handleSelected);
42+
});
43+
</script>

src/language/zh.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,8 @@
105105
"quick": {
106106
"del": "删除",
107107
"copy": "复制",
108-
"lock": "锁定"
108+
"lock": "锁定",
109+
"hide": "隐藏"
109110
},
110111
"flip": {
111112
"x": "水平翻转",
@@ -214,4 +215,4 @@
214215
"myMaterial": {
215216
"uploadBtn": "上传素材"
216217
}
217-
}
218+
}

src/views/home/index.vue

+2
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@
118118
<imgStroke />
119119
<div class="attr-item">
120120
<lock></lock>
121+
<hide></hide>
121122
<dele></dele>
122123
<clone></clone>
123124
</div>
@@ -159,6 +160,7 @@ import group from '@/components/group.vue';
159160
import zoom from '@/components/zoom.vue';
160161
import dragMode from '@/components/dragMode.vue';
161162
import lock from '@/components/lock.vue';
163+
import hide from '@/components/hide.vue';
162164
import dele from '@/components/del.vue';
163165
import waterMark from '@/components/waterMark.vue';
164166
import login from '@/components/login';

0 commit comments

Comments
 (0)