Skip to content

Commit 86404b9

Browse files
committed
修复图层的显示隐藏
1 parent d24a38d commit 86404b9

File tree

4 files changed

+41
-44
lines changed

4 files changed

+41
-44
lines changed

src/components/FileUpload/index.vue

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,20 @@
1717
</template>
1818

1919
<script lang="ts" setup>
20-
import { computed, ref, watch } from 'vue'
21-
import { UploadFilled } from '@element-plus/icons-vue'
22-
import { getImageDataURL, getImageText } from '@/utils/image'
23-
import { ElMessage, genFileId, UploadInstance, UploadProps, UploadRawFile } from "element-plus"
2420
import { uploadFile } from '@/api/file'
25-
import { useTemplatesStore } from '@/store'
26-
import { loadSVGFromString } from 'fabric'
27-
import { ElementNames } from '@/types/elements'
28-
import { WorkSpaceDrawData, propertiesToInclude } from '@/configs/canvas'
29-
import { Image, Object as FabricObject } from 'fabric'
30-
import { Template } from "@/types/canvas"
31-
import { nanoid } from 'nanoid'
21+
import { propertiesToInclude, WorkSpaceDrawData } from '@/configs/canvas'
3222
import useCanvasScale from '@/hooks/useCanvasScale'
3323
import useHandleCreate from '@/hooks/useHandleCreate'
3424
import useHandleTemplate from '@/hooks/useHandleTemplate'
25+
import { useTemplatesStore } from '@/store'
26+
import { Template } from "@/types/canvas"
27+
import { getImageDataURL, getImageText } from '@/utils/image'
3528
import useCanvas from '@/views/Canvas/useCanvas'
29+
import { UploadFilled } from '@element-plus/icons-vue'
30+
import { genFileId, UploadInstance, UploadProps, UploadRawFile } from "element-plus"
31+
import { Object as FabricObject, Image, loadSVGFromString } from 'fabric'
32+
import { nanoid } from 'nanoid'
33+
import { ref, watch } from 'vue'
3634
3735
3836
const templatesStore = useTemplatesStore()
@@ -153,15 +151,15 @@ const uploadHandle = async (option: any) => {
153151
154152
const setImageMask = (image: Image) => {
155153
if (!image.mask) return
156-
const [ pixi ] = usePixi()
157-
pixi.postMessage({
158-
id: image.id,
159-
type: "mask",
160-
src: image.getSrc(),
161-
mask: JSON.stringify(image.mask),
162-
width: image.width,
163-
height: image.height
164-
});
154+
// const [ pixi ] = usePixi()
155+
// pixi.postMessage({
156+
// id: image.id,
157+
// type: "mask",
158+
// src: image.getSrc(),
159+
// mask: JSON.stringify(image.mask),
160+
// width: image.width,
161+
// height: image.height
162+
// });
165163
}
166164
167165
const handleExceed: UploadProps['onExceed'] = (files: File[]) => {

src/hooks/useHandleElement.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1-
import { Object as FabricObject, Group, Path } from 'fabric'
2-
import { nanoid } from "nanoid"
3-
import { storeToRefs } from "pinia"
4-
import { KEYS } from '@/configs/hotkey'
5-
import { ElementNames } from "@/types/elements"
61
import { propertiesToInclude, WorkSpaceCommonType } from "@/configs/canvas"
2+
import { KEYS } from '@/configs/hotkey'
73
import { useFabricStore, useMainStore, useTemplatesStore } from "@/store"
8-
import { TextboxElement, CanvasElement, GroupElement } from "@/types/canvas"
4+
import { CanvasElement, GroupElement, TextboxElement } from "@/types/canvas"
5+
import { ElementNames } from "@/types/elements"
96
import { clipperPath } from '@/utils/clipper'
7+
import useCanvas from "@/views/Canvas/useCanvas"
108
import { useActiveElement } from '@vueuse/core'
119
import { ElMessageBox } from "element-plus"
12-
import useCanvas from "@/views/Canvas/useCanvas"
10+
import { FabricObject, Group, Path } from 'fabric'
11+
import { nanoid } from "nanoid"
12+
import { storeToRefs } from "pinia"
1313
import useCanvasZindex from "./useCanvasZindex"
14-
import { copyText } from '@/utils/clipboard'
1514

1615
export default () => {
1716
const templatesStore = useTemplatesStore()
@@ -292,13 +291,13 @@ export default () => {
292291
canvas.renderAll()
293292
}
294293

295-
const visibleElement = (eid: string, visible: boolean) => {
294+
const visibleElement = (eid: string) => {
296295
const [ canvas ] = useCanvas()
297296
const element = queryElement(eid)
298297
if (!element) return
299298
canvas.discardActiveObject()
300-
canvas.renderAll()
301-
templatesStore.modifedElement(element, {visible})
299+
canvas.requestRenderAll()
300+
templatesStore.modifedElement(element, {visible: !element.visible})
302301
}
303302

304303
const showElement = (eid: string) => {
@@ -365,9 +364,9 @@ export default () => {
365364
const checkElement = (eid: string) => {
366365
const [ canvas ] = useCanvas()
367366
const element = queryElement(eid) as FabricObject
368-
element.isSelected = true
367+
// element.isSelected = true
369368
canvas.renderAll()
370-
templatesStore.modifedElement()
369+
// templatesStore.modifedElement()
371370
// const elements = canvas.getObjects().filter(item => !WorkSpaceCommonType.includes((item as CanvasElement).id)) as FabricObject[]
372371
// isChecked.value = queryTextboxChecked(elements)
373372
}

src/types/auto-imports.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,6 @@ declare global {
6565
// for type re-export
6666
declare global {
6767
// @ts-ignore
68-
export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
68+
export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
6969
import('vue')
7070
}

src/views/Editor/CanvasRight/LayerStylePanel/components/LayerDraggableCom.vue

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,18 @@
99
>
1010
<div class="element-info">
1111

12-
<IconPreviewOpen class="common-icon" v-if="element.visible" @click.stop="visibleElement(element.id, false)"/>
13-
<IconPreviewClose class="common-icon" v-else @click.stop="visibleElement(element.id, true)"/>
12+
<IconPreviewOpen class="common-icon" v-if="element.visible" @click.stop="visibleElement(element.id)"/>
13+
<IconPreviewClose class="common-icon" v-else @click.stop="visibleElement(element.id)"/>
1414
<span class="common-span" v-if="props.index"/>
1515
<div v-if="element.type.toLowerCase() === ElementNames.GROUP">
1616
<IconDownOne v-if="(element as Group).isShow" class="common-icon text-[20px]" @click.stop="showElement(element.id)"/>
1717
<IconRightOne v-else class="common-icon text-[20px]" @click.stop="showElement(element.id)"/>
1818
</div>
1919
<div class="element-type">{{ element.type }}</div>
20-
<i class="icon-font iconfont icon-mask" v-if="(element as Image).mask" @click.stop="maskElement(element.id)"/>
20+
<i class="icon-font iconfont icon-mask" v-if="(element as FabricImage).mask" @click.stop="maskElement(element.id)"/>
2121
<span class="icon-span" v-else/>
22-
<div class="mask-image" v-if="(element as Image).mask">
23-
<img :src="(element as Image).mask?.src" alt="">
22+
<div class="mask-image" v-if="(element as FabricImage).mask">
23+
<img :src="(element as FabricImage).mask?.src" alt="">
2424
</div>
2525
<div class="element-text" v-if="element.type === ElementNames.TEXTBOX || element.type === ElementNames.TEXT">{{ (element as TextboxElement).text }}</div>
2626
<div class="element-layer">
@@ -40,13 +40,13 @@
4040
</template>
4141

4242
<script lang="ts" setup>
43-
import { computed, PropType } from 'vue'
44-
import { CanvasElement, TextboxElement, ImageElement } from '@/types/canvas'
45-
import { ElementNames } from '@/types/elements'
43+
import useHandleElement from "@/hooks/useHandleElement"
4644
import { useMainStore, useTemplatesStore } from '@/store'
45+
import { TextboxElement } from '@/types/canvas'
46+
import { ElementNames } from '@/types/elements'
47+
import { FabricImage, FabricObject, Group } from 'fabric'
4748
import { storeToRefs } from 'pinia'
48-
import { Group, Object as FabricObject, Image } from 'fabric'
49-
import useHandleElement from "@/hooks/useHandleElement"
49+
import { computed, PropType } from 'vue'
5050
5151
const {
5252
selectElement,

0 commit comments

Comments
 (0)