From 79e016fbd72cc791c8759a284093da8f5ce198a0 Mon Sep 17 00:00:00 2001 From: juetan Date: Mon, 9 Oct 2023 22:41:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/components/ColorPicker.vue | 40 +- .../editor/components/DragResizer.vue | 907 ++++++++++++++++++ src/components/editor/config/index.ts | 1 + src/components/editor/index.vue | 16 +- src/components/editor/interface.ts | 17 + src/components/editor/items/text/index.ts | 89 +- src/components/editor/items/text/interface.ts | 87 ++ src/components/editor/items/text/render.vue | 5 +- src/components/editor/panel-header/index.vue | 16 +- src/components/editor/panel-left/index.vue | 27 +- src/components/editor/panel-main/index.vue | 61 +- .../editor/panel-right/block-attr.vue | 4 +- src/components/editor/panel-right/index.vue | 4 +- .../editor/panel-right/text-attr.vue | 10 +- src/pages/post/media/components/upload.vue | 58 ++ src/pages/post/media/components/use-modal.ts | 4 + src/types/auto-component.d.ts | 25 +- 17 files changed, 1227 insertions(+), 144 deletions(-) create mode 100644 src/components/editor/components/DragResizer.vue create mode 100644 src/components/editor/config/index.ts create mode 100644 src/components/editor/items/text/interface.ts create mode 100644 src/pages/post/media/components/upload.vue create mode 100644 src/pages/post/media/components/use-modal.ts diff --git a/src/components/editor/components/ColorPicker.vue b/src/components/editor/components/ColorPicker.vue index 14c5dc1..ad24b29 100644 --- a/src/components/editor/components/ColorPicker.vue +++ b/src/components/editor/components/ColorPicker.vue @@ -1,22 +1,22 @@ + + diff --git a/src/components/editor/config/index.ts b/src/components/editor/config/index.ts new file mode 100644 index 0000000..4c2558a --- /dev/null +++ b/src/components/editor/config/index.ts @@ -0,0 +1 @@ +export const ContextKey = Symbol('ContextKey'); \ No newline at end of file diff --git a/src/components/editor/index.vue b/src/components/editor/index.vue index f37348d..751e933 100644 --- a/src/components/editor/index.vue +++ b/src/components/editor/index.vue @@ -20,10 +20,20 @@ diff --git a/src/components/editor/interface.ts b/src/components/editor/interface.ts index 7855c97..156815e 100644 --- a/src/components/editor/interface.ts +++ b/src/components/editor/interface.ts @@ -5,12 +5,29 @@ export interface Block { y: number; w: number; h: number; + xFixed: boolean; + yFixed: boolean; bgImage?: string; bgColor?: string; data: T; meta: Record; } +export const DefaultBlock: Block = { + id: "", + type: "", + x: 0, + y: 0, + w: 50, + h: 50, + xFixed: false, + yFixed: false, + bgImage: "", + bgColor: "", + data: {}, + meta: {}, +} + export interface Container { id: string; type: string; diff --git a/src/components/editor/items/text/index.ts b/src/components/editor/items/text/index.ts index bfcd27f..a0142a3 100644 --- a/src/components/editor/items/text/index.ts +++ b/src/components/editor/items/text/index.ts @@ -1,87 +1,6 @@ -export interface Text { - /** - * 文字内容 - */ - text: string; - /** - * 字体 - */ - family: string; - /** - * 字号(px) - */ - size: number; - /** - * 颜色(16进制) - */ - color: string; - /** - * 是否加粗 - */ - bold: boolean; - /** - * 是否斜体 - */ - italic: boolean; - /** - * 是否下划线 - */ - underline: boolean; - /** - * 对齐方式 - */ - align: number; -} +import Option from './option.vue' +import Render from './render.vue' +export * from './interface' -export const DefaultText = { - text: "双击编辑文字", - family: "microsoft yahei", - size: 14, - color: "#000000", - bold: false, - italic: false, - underline: false, - align: 3, -} +export { Option, Render } -export const TextAlignOptions = [ - { - label: "居上", - value: 1, - }, - { - label: "居下", - value: 2, - }, - { - label: "居中", - value: 3, - }, - { - label: "居左", - value: 4, - }, - { - label: "居右", - value: 5, - }, -]; - -export const TextFamilyOptions = [ - { - label: "微软雅黑111111111", - value: "microsoft yahei", - }, - { - label: "黑体", - value: "gothic", - }, - { - label: "宋体", - value: "simsun", - }, - { - label: "Arial", - value: "arial", - }, -]; diff --git a/src/components/editor/items/text/interface.ts b/src/components/editor/items/text/interface.ts new file mode 100644 index 0000000..80de743 --- /dev/null +++ b/src/components/editor/items/text/interface.ts @@ -0,0 +1,87 @@ +export interface Text { + /** + * 文字内容 + */ + text: string; + /** + * 字体 + */ + family: string; + /** + * 字号(px) + */ + size: number; + /** + * 颜色(16进制) + */ + color: string; + /** + * 是否加粗 + */ + bold: boolean; + /** + * 是否斜体 + */ + italic: boolean; + /** + * 是否下划线 + */ + underline: boolean; + /** + * 对齐方式 + */ + align: number; +} + +export const DefaultText: Text = { + text: "双击编辑文字", + family: "microsoft yahei", + size: 14, + color: "#000000", + bold: false, + italic: false, + underline: false, + align: 3, +} + +export const TextAlignOptions = [ + { + label: "居上", + value: 1, + }, + { + label: "居下", + value: 2, + }, + { + label: "居中", + value: 3, + }, + { + label: "居左", + value: 4, + }, + { + label: "居右", + value: 5, + }, +]; + +export const TextFamilyOptions = [ + { + label: "微软雅黑111111111", + value: "microsoft yahei", + }, + { + label: "黑体", + value: "gothic", + }, + { + label: "宋体", + value: "simsun", + }, + { + label: "Arial", + value: "arial", + }, +]; diff --git a/src/components/editor/items/text/render.vue b/src/components/editor/items/text/render.vue index 3e397b9..cbcf4e5 100644 --- a/src/components/editor/items/text/render.vue +++ b/src/components/editor/items/text/render.vue @@ -9,7 +9,8 @@ diff --git a/src/components/editor/panel-header/index.vue b/src/components/editor/panel-header/index.vue index bfda836..9ed33bf 100644 --- a/src/components/editor/panel-header/index.vue +++ b/src/components/editor/panel-header/index.vue @@ -1,10 +1,20 @@ diff --git a/src/components/editor/panel-left/index.vue b/src/components/editor/panel-left/index.vue index 64b3647..a9664a5 100644 --- a/src/components/editor/panel-left/index.vue +++ b/src/components/editor/panel-left/index.vue @@ -1,6 +1,6 @@