From 2076a87f19d662324f85a4558147f9ae5d1d75c2 Mon Sep 17 00:00:00 2001 From: juetan Date: Tue, 10 Oct 2023 22:48:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/{items => blocks}/index.ts | 0 .../editor/{items => blocks}/text/index.ts | 0 .../{items => blocks}/text/interface.ts | 0 .../editor/{items => blocks}/text/option.vue | 17 +- .../editor/{items => blocks}/text/render.vue | 0 .../editor/components/ImagePicker.vue | 187 +++++++++++++++++- .../editor/components/InputColor.vue | 26 +++ .../editor/components/InputImage.vue | 29 +++ src/components/editor/components/mock.ts | 29 +++ src/components/editor/config/block.ts | 2 +- src/components/editor/config/container.ts | 10 +- src/components/editor/config/context.ts | 7 +- src/components/editor/index.vue | 20 +- src/components/editor/panel-left/index.vue | 4 +- .../editor/panel-main/components/block.vue | 12 +- .../editor/panel-main/components/header.vue | 95 ++++----- .../editor/panel-main/components/texter.vue | 47 +++++ src/components/editor/panel-main/index.vue | 36 ++-- src/components/editor/panel-right/index.vue | 7 +- src/components/editor/preview/index.vue | 13 ++ src/types/auto-component.d.ts | 23 ++- vite.config.ts | 8 +- 22 files changed, 444 insertions(+), 128 deletions(-) rename src/components/editor/{items => blocks}/index.ts (100%) rename src/components/editor/{items => blocks}/text/index.ts (100%) rename src/components/editor/{items => blocks}/text/interface.ts (100%) rename src/components/editor/{items => blocks}/text/option.vue (76%) rename src/components/editor/{items => blocks}/text/render.vue (100%) create mode 100644 src/components/editor/components/InputColor.vue create mode 100644 src/components/editor/components/InputImage.vue create mode 100644 src/components/editor/components/mock.ts create mode 100644 src/components/editor/panel-main/components/texter.vue create mode 100644 src/components/editor/preview/index.vue diff --git a/src/components/editor/items/index.ts b/src/components/editor/blocks/index.ts similarity index 100% rename from src/components/editor/items/index.ts rename to src/components/editor/blocks/index.ts diff --git a/src/components/editor/items/text/index.ts b/src/components/editor/blocks/text/index.ts similarity index 100% rename from src/components/editor/items/text/index.ts rename to src/components/editor/blocks/text/index.ts diff --git a/src/components/editor/items/text/interface.ts b/src/components/editor/blocks/text/interface.ts similarity index 100% rename from src/components/editor/items/text/interface.ts rename to src/components/editor/blocks/text/interface.ts diff --git a/src/components/editor/items/text/option.vue b/src/components/editor/blocks/text/option.vue similarity index 76% rename from src/components/editor/items/text/option.vue rename to src/components/editor/blocks/text/option.vue index 9d45710..ef4205b 100644 --- a/src/components/editor/items/text/option.vue +++ b/src/components/editor/blocks/text/option.vue @@ -7,9 +7,7 @@ @@ -22,9 +20,7 @@ @@ -43,11 +39,7 @@ - - - + @@ -62,6 +54,7 @@ - - diff --git a/src/components/editor/items/text/render.vue b/src/components/editor/blocks/text/render.vue similarity index 100% rename from src/components/editor/items/text/render.vue rename to src/components/editor/blocks/text/render.vue diff --git a/src/components/editor/components/ImagePicker.vue b/src/components/editor/components/ImagePicker.vue index 8079942..185bdcc 100644 --- a/src/components/editor/components/ImagePicker.vue +++ b/src/components/editor/components/ImagePicker.vue @@ -1,16 +1,189 @@ - + diff --git a/src/components/editor/components/InputColor.vue b/src/components/editor/components/InputColor.vue new file mode 100644 index 0000000..a72e62f --- /dev/null +++ b/src/components/editor/components/InputColor.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/src/components/editor/components/InputImage.vue b/src/components/editor/components/InputImage.vue new file mode 100644 index 0000000..687cb42 --- /dev/null +++ b/src/components/editor/components/InputImage.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/src/components/editor/components/mock.ts b/src/components/editor/components/mock.ts new file mode 100644 index 0000000..b291da2 --- /dev/null +++ b/src/components/editor/components/mock.ts @@ -0,0 +1,29 @@ +const sleep = (time: number) => { + return new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, time); + }); +}; + +interface MockParams { + page: number; + size: number; +} + +export const mockLoad = async (params: MockParams) => { + const { page, size } = params; + await sleep(1000); + const counts = Array(15).fill(9); + const data = counts.map((v, i) => { + return { + id: (page - 1) * size + i, + title: "图片1", + url: `https://source.unsplash.com/random?sig=${(page - 1) * size + i}`, + }; + }); + return { + data, + total: 100, + }; +}; diff --git a/src/components/editor/config/block.ts b/src/components/editor/config/block.ts index 4123ef4..25838e6 100644 --- a/src/components/editor/config/block.ts +++ b/src/components/editor/config/block.ts @@ -11,7 +11,7 @@ export interface Block { bgColor?: string; data: T; meta: Record; - actived: false, + actived: boolean, resizable: boolean, draggable: boolean, } diff --git a/src/components/editor/config/container.ts b/src/components/editor/config/container.ts index e4722f3..ee69fdd 100644 --- a/src/components/editor/config/container.ts +++ b/src/components/editor/config/container.ts @@ -1,11 +1,13 @@ export interface Container { id: number | string; + x: number; + y: number; + zoom: number; title: string; - description?: string; + description: string; width: number; height: number; - bgImage?: string; - bgColor?: string; - zoom: number; + bgImage: string; + bgColor: string; } diff --git a/src/components/editor/config/context.ts b/src/components/editor/config/context.ts index 1a3f228..ff06b35 100644 --- a/src/components/editor/config/context.ts +++ b/src/components/editor/config/context.ts @@ -3,12 +3,13 @@ import { Block } from "./block"; import { Container } from "./container"; export interface Context { - current: { - block: Block; - }; + current: Ref<{ + block: Block | null; + }>; blocks: Ref; container: Ref; setCurrentBlock: (block: Block) => void; + setContainerOrigin: () => void; } export const ContextKey = Symbol('ContextKey') as InjectionKey; diff --git a/src/components/editor/index.vue b/src/components/editor/index.vue index 941940b..42f412b 100644 --- a/src/components/editor/index.vue +++ b/src/components/editor/index.vue @@ -20,13 +20,13 @@ diff --git a/src/components/editor/panel-left/index.vue b/src/components/editor/panel-left/index.vue index 97bce3a..9192dc2 100644 --- a/src/components/editor/panel-left/index.vue +++ b/src/components/editor/panel-left/index.vue @@ -1,7 +1,7 @@