|
@@ -1,33 +1,34 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <div
|
|
|
|
|
- ref="wrapperRef"
|
|
|
|
|
- @mousedown="addDrawAreaFocus"
|
|
|
|
|
- v-contextmenu="contextMenus"
|
|
|
|
|
- v-click-outside="remDrawAreaFocus"
|
|
|
|
|
|
|
+ <div
|
|
|
|
|
+ ref="wrapperRef"
|
|
|
|
|
+ @mousedown="addDrawAreaFocus"
|
|
|
|
|
+ v-contextmenu="contextMenus"
|
|
|
|
|
+ v-click-outside="remDrawAreaFocus"
|
|
|
>
|
|
>
|
|
|
<canvas ref="canvasRef" class="background-grid"></canvas>
|
|
<canvas ref="canvasRef" class="background-grid"></canvas>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
|
-import { storeToRefs } from 'pinia'
|
|
|
|
|
-import { onMounted, onUnmounted } from 'vue'
|
|
|
|
|
-import { useFabricStore, useMainStore, useTemplatesStore } from '@/store'
|
|
|
|
|
-import { useRouter } from 'vue-router'
|
|
|
|
|
-import { unzip } from "@/utils/crypto"
|
|
|
|
|
-import { getTemplateData } from '@/api/template'
|
|
|
|
|
-import { contextMenus } from '@/configs/contextMenu'
|
|
|
|
|
-import { initEditor } from '@/views/Canvas/useCanvas'
|
|
|
|
|
-import { initPixi } from '@/views/Canvas/usePixi'
|
|
|
|
|
-import { ElMessage, ElLoading } from 'element-plus'
|
|
|
|
|
|
|
+import {storeToRefs} from 'pinia'
|
|
|
|
|
+import {onMounted, onUnmounted} from 'vue'
|
|
|
|
|
+import {useFabricStore, useMainStore, useTemplatesStore} from '@/store'
|
|
|
|
|
+import {useRouter} from 'vue-router'
|
|
|
|
|
+import {unzip} from "@/utils/crypto"
|
|
|
|
|
+import {getTemplateData} from '@/api/template'
|
|
|
|
|
+import {contextMenus} from '@/configs/contextMenu'
|
|
|
|
|
+import {initEditor} from '@/views/Canvas/useCanvas'
|
|
|
|
|
+import {initPixi} from '@/views/Canvas/usePixi'
|
|
|
|
|
+import {ElMessage, ElLoading} from 'element-plus'
|
|
|
import useCanvasHotkey from '@/hooks/useCanvasHotkey'
|
|
import useCanvasHotkey from '@/hooks/useCanvasHotkey'
|
|
|
|
|
+
|
|
|
const fabricStore = useFabricStore()
|
|
const fabricStore = useFabricStore()
|
|
|
const mainStore = useMainStore()
|
|
const mainStore = useMainStore()
|
|
|
const router = useRouter()
|
|
const router = useRouter()
|
|
|
const templatesStore = useTemplatesStore()
|
|
const templatesStore = useTemplatesStore()
|
|
|
-const { wrapperRef, canvasRef } = storeToRefs(fabricStore)
|
|
|
|
|
-const { drawAreaFocus } = storeToRefs(mainStore)
|
|
|
|
|
-const { keydownListener, keyupListener, pasteListener } = useCanvasHotkey()
|
|
|
|
|
|
|
+const {wrapperRef, canvasRef} = storeToRefs(fabricStore)
|
|
|
|
|
+const {drawAreaFocus} = storeToRefs(mainStore)
|
|
|
|
|
+const {keydownListener, keyupListener, pasteListener} = useCanvasHotkey()
|
|
|
|
|
|
|
|
|
|
|
|
|
const addDrawAreaFocus = () => {
|
|
const addDrawAreaFocus = () => {
|
|
@@ -46,8 +47,7 @@ const getTemplateDetail = async (pk: number) => {
|
|
|
console.log('result.data.data.id:', result.data.data.id)
|
|
console.log('result.data.data.id:', result.data.data.id)
|
|
|
const data = unzip(result.data.data.data)
|
|
const data = unzip(result.data.data.data)
|
|
|
await templatesStore.changeTemplate(data)
|
|
await templatesStore.changeTemplate(data)
|
|
|
- }
|
|
|
|
|
- catch (error) {
|
|
|
|
|
|
|
+ } catch (error) {
|
|
|
ElMessage({
|
|
ElMessage({
|
|
|
type: 'error',
|
|
type: 'error',
|
|
|
message: '模板加载失败,请联系管理员修改bug了',
|
|
message: '模板加载失败,请联系管理员修改bug了',
|
|
@@ -59,7 +59,7 @@ const getTemplateDetail = async (pk: number) => {
|
|
|
const initRouter = async (templateId?: number) => {
|
|
const initRouter = async (templateId?: number) => {
|
|
|
if (templateId) {
|
|
if (templateId) {
|
|
|
templatesStore.setTemplateId(templateId)
|
|
templatesStore.setTemplateId(templateId)
|
|
|
- const loadingInstance = ElLoading.service({ fullscreen: true, background: 'rgba(122, 122, 122, 0.5)' })
|
|
|
|
|
|
|
+ const loadingInstance = ElLoading.service({fullscreen: true, background: 'rgba(122, 122, 122, 0.5)'})
|
|
|
await getTemplateDetail(templateId)
|
|
await getTemplateDetail(templateId)
|
|
|
nextTick(() => loadingInstance.close())
|
|
nextTick(() => loadingInstance.close())
|
|
|
}
|
|
}
|
|
@@ -90,14 +90,14 @@ onUnmounted(() => {
|
|
|
height: 100%;
|
|
height: 100%;
|
|
|
width: 100%;
|
|
width: 100%;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.background-grid {
|
|
.background-grid {
|
|
|
--offsetX: 0px;
|
|
--offsetX: 0px;
|
|
|
--offsetY: 0px;
|
|
--offsetY: 0px;
|
|
|
--size: 8px;
|
|
--size: 8px;
|
|
|
--color: #dedcdc;
|
|
--color: #dedcdc;
|
|
|
- background-image:
|
|
|
|
|
- linear-gradient(45deg, var(--color) 25%, transparent 0, transparent 75%, var(--color) 0),
|
|
|
|
|
- linear-gradient(45deg, var(--color) 25%, transparent 0, transparent 75%, var(--color) 0);
|
|
|
|
|
|
|
+ background-image: linear-gradient(45deg, var(--color) 25%, transparent 0, transparent 75%, var(--color) 0),
|
|
|
|
|
+ linear-gradient(45deg, var(--color) 25%, transparent 0, transparent 75%, var(--color) 0);
|
|
|
background-position: var(--offsetX) var(--offsetY), calc(var(--size) + var(--offsetX)) calc(var(--size) + var(--offsetY));
|
|
background-position: var(--offsetX) var(--offsetY), calc(var(--size) + var(--offsetX)) calc(var(--size) + var(--offsetY));
|
|
|
background-size: calc(var(--size) * 2) calc(var(--size) * 2);
|
|
background-size: calc(var(--size) * 2) calc(var(--size) * 2);
|
|
|
}
|
|
}
|