添加插入图片功能

This commit is contained in:
pipipi-pikachu 2020-12-26 17:53:05 +08:00
parent 8bf5744e03
commit 665e26c833
2 changed files with 21 additions and 1 deletions

View File

@ -39,6 +39,7 @@ export default defineComponent({
return { return {
handleClick, handleClick,
handleChange, handleChange,
inputRef,
} }
}, },
}) })

View File

@ -7,7 +7,9 @@
<div class="add-element-handler"> <div class="add-element-handler">
<IconFont class="handler-item" type="icon-font-size" /> <IconFont class="handler-item" type="icon-font-size" />
<UploadInput @change="files => insertImageElement(files)">
<IconFont class="handler-item" type="icon-image" /> <IconFont class="handler-item" type="icon-image" />
</UploadInput>
<IconFont class="handler-item" type="icon-star" /> <IconFont class="handler-item" type="icon-star" />
<IconFont class="handler-item" type="icon-line" /> <IconFont class="handler-item" type="icon-line" />
<IconFont class="handler-item" type="icon-table" /> <IconFont class="handler-item" type="icon-table" />
@ -26,11 +28,18 @@
import { defineComponent, computed } from 'vue' import { defineComponent, computed } from 'vue'
import { useStore } from 'vuex' import { useStore } from 'vuex'
import { State } from '@/store' import { State } from '@/store'
import { getImageDataURL } from '@/utils/image'
import useScaleCanvas from '@/hooks/useScaleCanvas' import useScaleCanvas from '@/hooks/useScaleCanvas'
import useHistorySnapshot from '@/hooks/useHistorySnapshot' import useHistorySnapshot from '@/hooks/useHistorySnapshot'
import useCreateElement from '@/hooks/useCreateElement'
import UploadInput from '@/components/UploadInput.vue'
export default defineComponent({ export default defineComponent({
name: 'canvas-tool', name: 'canvas-tool',
components: {
UploadInput,
},
setup() { setup() {
const store = useStore<State>() const store = useStore<State>()
const canvasScale = computed(() => store.state.canvasScale) const canvasScale = computed(() => store.state.canvasScale)
@ -42,6 +51,14 @@ export default defineComponent({
const { scaleCanvas } = useScaleCanvas() const { scaleCanvas } = useScaleCanvas()
const { redo, undo } = useHistorySnapshot() const { redo, undo } = useHistorySnapshot()
const { createImageElement } = useCreateElement()
const insertImageElement = (files: File[]) => {
const imageFile = files[0]
if(!imageFile) return
getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))
}
return { return {
scaleCanvas, scaleCanvas,
canvasScalePercentage, canvasScalePercentage,
@ -49,6 +66,7 @@ export default defineComponent({
canRedo, canRedo,
redo, redo,
undo, undo,
insertImageElement,
} }
}, },
}) })
@ -74,6 +92,7 @@ export default defineComponent({
top: 50%; top: 50%;
left: 50%; left: 50%;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
display: flex;
} }
.handler-item { .handler-item {
margin: 0 10px; margin: 0 10px;