From 5b220a0e061e2a54ff87703eccb33954276844a4 Mon Sep 17 00:00:00 2001 From: parisma Date: Tue, 13 Sep 2022 15:32:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(editor):=20codeBlockService=E6=9A=B4?= =?UTF-8?q?=E9=9C=B2=E4=B8=80=E4=BA=9B=E6=96=B9=E6=B3=95=E6=94=AF=E6=8C=81?= =?UTF-8?q?hook,=E9=BB=98=E8=AE=A4=E8=AE=BE=E7=BD=AE=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=9D=97=E5=88=B0dsl=E7=9A=84method=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/editor/src/fields/CodeSelect.vue | 10 +-- .../sidebar/code-block/CodeBlockEditor.vue | 24 ++++--- .../sidebar/code-block/CodeBlockList.vue | 24 ++++--- packages/editor/src/services/codeBlock.ts | 69 ++++++++++++------- packages/editor/src/services/editor.ts | 24 ++++++- packages/editor/src/utils/props.ts | 4 +- packages/schema/src/index.ts | 12 ++++ playground/src/configs/dsl.ts | 8 +++ 8 files changed, 122 insertions(+), 53 deletions(-) diff --git a/packages/editor/src/fields/CodeSelect.vue b/packages/editor/src/fields/CodeSelect.vue index b1b9c774..8c89196e 100644 --- a/packages/editor/src/fields/CodeSelect.vue +++ b/packages/editor/src/fields/CodeSelect.vue @@ -41,16 +41,16 @@ const props = defineProps<{ size: string; }>(); -const changeHandler = (value: any) => { +const changeHandler = async (value: any) => { // 记录组件与代码块的绑定关系 const { id = '' } = services?.editorService.get('node') || {}; - services?.codeBlockService.setCompRelation(id, value); + await services?.codeBlockService.setCompRelation(id, value); emit('change', value); }; -const viewHandler = () => { - services?.codeBlockService.setMode(EditorMode.LIST); - services?.codeBlockService.setCombineIds(props.model[props.name]); +const viewHandler = async () => { + await services?.codeBlockService.setMode(EditorMode.LIST); + await services?.codeBlockService.setCombineIds(props.model[props.name]); services?.codeBlockService.setCodeEditorContent(true, props.model[props.name][0]); }; diff --git a/packages/editor/src/layouts/sidebar/code-block/CodeBlockEditor.vue b/packages/editor/src/layouts/sidebar/code-block/CodeBlockEditor.vue index 591cc99a..308e7b02 100644 --- a/packages/editor/src/layouts/sidebar/code-block/CodeBlockEditor.vue +++ b/packages/editor/src/layouts/sidebar/code-block/CodeBlockEditor.vue @@ -58,7 +58,7 @@ import { computed, inject, ref, watchEffect } from 'vue'; import { ElMessage } from 'element-plus'; import { isEmpty } from 'lodash-es'; -import type { CodeBlockContent, Services } from '../../../type'; +import type { CodeBlockContent, CodeBlockDSL, Services } from '../../../type'; import { EditorMode } from '../../../type'; const services = inject('services'); @@ -66,6 +66,8 @@ const services = inject('services'); const codeEditor = ref(null); // 编辑器当前需展示的代码块内容 const codeConfig = ref(null); +// select选择的内容(CodeBlockDSL) +const selectedValue = ref(null); // 是否展示代码编辑区 const isShowCodeBlockEditor = computed(() => codeConfig.value && services?.codeBlockService.getCodeEditorShowStatus()); @@ -74,15 +76,17 @@ const id = computed(() => services?.codeBlockService.getId() || ''); const editable = computed(() => services?.codeBlockService.getEditStatus()); // 当前选中组件绑定的代码块id数组 const selectedIds = computed(() => services?.codeBlockService.getCombineIds() || []); -// select选择的内容(CodeBlockDSL) -const selectedValue = computed(() => services?.codeBlockService.getCodeDslByIds(selectedIds.value)); -watchEffect(() => { - codeConfig.value = services?.codeBlockService.getCodeContentById(id.value) ?? null; +watchEffect(async () => { + codeConfig.value = (await services?.codeBlockService.getCodeContentById(id.value)) ?? null; +}); + +watchEffect(async () => { + selectedValue.value = (await services?.codeBlockService.getCodeDslByIds(selectedIds.value)) || null; }); // 保存代码 -const saveCode = () => { +const saveCode = async () => { if (!codeEditor.value || !codeConfig.value || !editable.value) return; try { @@ -95,7 +99,7 @@ const saveCode = () => { return; } // 存入dsl - services?.codeBlockService.setCodeDslById(id.value, { + await services?.codeBlockService.setCodeDslById(id.value, { name: codeConfig.value.name, content: codeConfig.value.content, }); @@ -103,9 +107,9 @@ const saveCode = () => { }; // 保存并关闭 -const saveAndClose = () => { - saveCode(); - services?.codeBlockService.setCodeEditorShowStatus(false); +const saveAndClose = async () => { + await saveCode(); + await services?.codeBlockService.setCodeEditorShowStatus(false); }; const menuSelectHandler = (item: any) => { diff --git a/packages/editor/src/layouts/sidebar/code-block/CodeBlockList.vue b/packages/editor/src/layouts/sidebar/code-block/CodeBlockList.vue index 27faf375..5dd31bc3 100644 --- a/packages/editor/src/layouts/sidebar/code-block/CodeBlockList.vue +++ b/packages/editor/src/layouts/sidebar/code-block/CodeBlockList.vue @@ -35,24 +35,28 @@