diff --git a/packages/editor/src/components/CodeDraftEditor.vue b/packages/editor/src/components/CodeDraftEditor.vue
index 15dce1a1..72cff041 100644
--- a/packages/editor/src/components/CodeDraftEditor.vue
+++ b/packages/editor/src/components/CodeDraftEditor.vue
@@ -12,7 +12,7 @@
{{ isFullScreen ? '退出全屏' : '全屏' }}
- 保存
+ 确认
关闭
@@ -54,7 +54,7 @@ const props = withDefaults(
autoSaveDraft: true,
},
);
-const emit = defineEmits(['save', 'close', 'saveAndClose']);
+const emit = defineEmits(['close', 'saveAndClose']);
const services = inject('services');
@@ -95,14 +95,6 @@ const saveCodeDraft = async (codeValue: string) => {
tMagicMessage.success(`代码草稿保存成功 ${datetimeFormatter(new Date())}`);
};
-// 保存代码
-const saveCode = (): void => {
- if (!codeEditor.value || !props.editable) return;
- // 代码内容
- editorContent.value = (codeEditor.value.getEditor() as monaco.editor.IStandaloneCodeEditor)?.getValue();
- emit('save', editorContent.value);
-};
-
// 保存并关闭
const saveAndClose = (): void => {
if (!codeEditor.value || !props.editable) return;
diff --git a/packages/editor/src/components/FunctionEditor.vue b/packages/editor/src/components/FunctionEditor.vue
index be39b21b..503830b3 100644
--- a/packages/editor/src/components/FunctionEditor.vue
+++ b/packages/editor/src/components/FunctionEditor.vue
@@ -6,9 +6,9 @@
-
参数定义
+
参数
@@ -34,36 +33,56 @@
diff --git a/packages/editor/src/layouts/sidebar/code-block/CodeBlockEditor.vue b/packages/editor/src/layouts/sidebar/code-block/CodeBlockEditor.vue
index 0ba19f41..02884ffe 100644
--- a/packages/editor/src/layouts/sidebar/code-block/CodeBlockEditor.vue
+++ b/packages/editor/src/layouts/sidebar/code-block/CodeBlockEditor.vue
@@ -9,45 +9,18 @@
:show-close="false"
>
-
-
-
-
-
-
-
{{ data.name }}({{ data.id }})
-
-
-
-
-
-
+
@@ -60,18 +33,22 @@
import { computed, inject, reactive, ref, watchEffect } from 'vue';
import { cloneDeep, forIn, isEmpty } from 'lodash-es';
-import { TMagicDialog, TMagicTree } from '@tmagic/design';
+import { TMagicDialog } from '@tmagic/design';
+import { ColumnConfig } from '@tmagic/form';
import { CodeBlockContent } from '@tmagic/schema';
import FunctionEditor from '../../../components/FunctionEditor.vue';
import Layout from '../../../components/Layout.vue';
-import type { CodeDslItem, ListState, Services } from '../../../type';
-import { CodeEditorMode } from '../../../type';
+import type { ListState, Services } from '../../../type';
import { serializeConfig } from '../../../utils/editor';
const services = inject
('services');
const codeOptions = inject('codeOptions', {});
+defineProps<{
+ paramsColConfig?: ColumnConfig;
+}>();
+
const left = ref(200);
const currentTitle = ref('');
// 编辑器当前需展示的代码块内容
@@ -81,7 +58,6 @@ const state = reactive({
codeList: [],
});
-const mode = computed(() => services?.codeBlockService.getMode());
const id = computed(() => services?.codeBlockService.getId() || '');
const editable = computed(() => services?.codeBlockService.getEditStatus());
// 当前选中组件绑定的代码块id数组
@@ -105,9 +81,4 @@ watchEffect(async () => {
});
currentTitle.value = state.codeList[0]?.name || '';
});
-
-const selectHandler = (data: CodeDslItem) => {
- services?.codeBlockService.setId(data.id);
- currentTitle.value = data.name;
-};
diff --git a/packages/editor/src/layouts/sidebar/code-block/CodeBlockList.vue b/packages/editor/src/layouts/sidebar/code-block/CodeBlockList.vue
index f70698da..f81aad5d 100644
--- a/packages/editor/src/layouts/sidebar/code-block/CodeBlockList.vue
+++ b/packages/editor/src/layouts/sidebar/code-block/CodeBlockList.vue
@@ -78,7 +78,7 @@
-
+
@@ -92,16 +92,18 @@ import { Close, Edit, Link, View } from '@element-plus/icons-vue';
import { cloneDeep, forIn, isEmpty } from 'lodash-es';
import { TMagicButton, TMagicInput, tMagicMessage, TMagicScrollbar, TMagicTooltip, TMagicTree } from '@tmagic/design';
+import { ColumnConfig } from '@tmagic/form';
import { CodeBlockContent, Id } from '@tmagic/schema';
import Icon from '../../../components/Icon.vue';
import type { CodeRelation, Services } from '../../../type';
-import { CodeDeleteErrorType, CodeDslItem, CodeEditorMode, ListState } from '../../../type';
+import { CodeDeleteErrorType, CodeDslItem, ListState } from '../../../type';
import codeBlockEditor from './CodeBlockEditor.vue';
const props = defineProps<{
customError?: (id: Id, errorType: CodeDeleteErrorType) => any;
+ paramsColConfig?: ColumnConfig;
}>();
const services = inject('services');
@@ -168,7 +170,6 @@ const createCodeBlock = async () => {
content: `({app, params}) => {\n // place your code here\n}`,
params: [],
};
- await codeBlockService.setMode(CodeEditorMode.EDITOR);
const id = await codeBlockService.getUniqueId();
await codeBlockService.setCodeDslById(id, codeConfig);
codeBlockService.setCodeEditorContent(true, id);
@@ -176,7 +177,6 @@ const createCodeBlock = async () => {
// 编辑代码块
const editCode = async (key: Id) => {
- await services?.codeBlockService.setMode(CodeEditorMode.EDITOR);
services?.codeBlockService.setCodeEditorContent(true, key);
};
diff --git a/packages/editor/src/services/codeBlock.ts b/packages/editor/src/services/codeBlock.ts
index 02fe6447..e07a12ee 100644
--- a/packages/editor/src/services/codeBlock.ts
+++ b/packages/editor/src/services/codeBlock.ts
@@ -23,7 +23,7 @@ import { CodeBlockContent, CodeBlockDSL, HookType, Id, MNode } from '@tmagic/sch
import editorService from '../services/editor';
import type { CodeRelation, CodeState, HookData } from '../type';
-import { CODE_DRAFT_STORAGE_KEY, CodeEditorMode } from '../type';
+import { CODE_DRAFT_STORAGE_KEY } from '../type';
import { info } from '../utils/logger';
import BaseService from './BaseService';
@@ -34,7 +34,6 @@ class CodeBlock extends BaseService {
codeDsl: null,
id: '',
editable: true,
- mode: CodeEditorMode.EDITOR,
combineIds: [],
undeletableList: [],
relations: {},
@@ -50,7 +49,6 @@ class CodeBlock extends BaseService {
'setCodeDslById',
'setCodeEditorShowStatus',
'setEditStatus',
- 'setMode',
'setCombineIds',
'setUndeleteableList',
'deleteCodeDslByIds',
@@ -214,23 +212,6 @@ class CodeBlock extends BaseService {
return this.state.id;
}
- /**
- * 获取当前模式
- * @returns {CodeEditorMode}
- */
- public getMode(): CodeEditorMode {
- return this.state.mode;
- }
-
- /**
- * 设置当前模式
- * @param {CodeEditorMode} mode 模式
- * @returns {void}
- */
- public async setMode(mode: CodeEditorMode): Promise {
- this.state.mode = mode;
- }
-
/**
* 设置当前选中组件已关联绑定的代码块id数组
* @param {string[]} ids 代码块id数组
@@ -349,7 +330,6 @@ class CodeBlock extends BaseService {
this.state.codeDsl = null;
this.state.id = '';
this.state.editable = true;
- this.state.mode = CodeEditorMode.EDITOR;
this.state.combineIds = [];
this.state.undeletableList = [];
}
@@ -386,6 +366,7 @@ class CodeBlock extends BaseService {
*/
private recurseMNode(node: MNode, relations: CodeRelation): void {
forIn(node, (value, key) => {
+ let unConfirmedValue: MNode = { id: node.id };
if (value?.hookType === HookType.CODE && !isEmpty(value.hookData)) {
value.hookData.forEach((relationItem: HookData) => {
// continue
@@ -399,6 +380,16 @@ class CodeBlock extends BaseService {
}
codeItem[node.id].push(key);
});
+ // continue
+ return;
+ }
+ if (typeof value === 'object') {
+ // 检查value内部是否有嵌套
+ unConfirmedValue = {
+ ...unConfirmedValue,
+ ...value,
+ };
+ this.recurseMNode(unConfirmedValue, relations);
}
});
if (!isEmpty(node.items)) {
diff --git a/packages/editor/src/theme/code-block.scss b/packages/editor/src/theme/code-block.scss
index 2d9d66d7..64d10f94 100644
--- a/packages/editor/src/theme/code-block.scss
+++ b/packages/editor/src/theme/code-block.scss
@@ -78,6 +78,10 @@
.m-fields-code-select {
width: 100%;
+ .edit-icon {
+ cursor: pointer;
+ margin-right: 5px;
+ }
}
.el-dialog.is-fullscreen.code-editor-dialog {
diff --git a/packages/editor/src/type.ts b/packages/editor/src/type.ts
index e82634f5..1a29d356 100644
--- a/packages/editor/src/type.ts
+++ b/packages/editor/src/type.ts
@@ -335,8 +335,6 @@ export type CodeState = {
id: Id;
/** 代码块是否可编辑 */
editable: boolean;
- /** 代码编辑面板的展示模式 */
- mode: CodeEditorMode;
/** list模式下左侧展示的代码列表 */
combineIds: string[];
/** 为业务逻辑预留的不可删除的代码块列表,由业务逻辑维护(如代码块上线后不可删除) */
@@ -359,13 +357,6 @@ export type CodeRelation = {
};
};
-export enum CodeEditorMode {
- /** 左侧菜单,右侧代码 */
- LIST = 'list',
- /** 全屏代码 */
- EDITOR = 'editor',
-}
-
export interface CodeDslItem {
/** 代码块id */
id: Id;
@@ -406,6 +397,7 @@ export interface CodeParamStatement {
name: string;
/** 参数类型 */
type?: string;
+ [key: string]: any;
}
export interface StepValue {
diff --git a/packages/form/src/containers/Table.vue b/packages/form/src/containers/Table.vue
index edf87a44..08238c0b 100644
--- a/packages/form/src/containers/Table.vue
+++ b/packages/form/src/containers/Table.vue
@@ -24,11 +24,12 @@
+