From 35f495b4fa62733b983f226d091c2fffa9cfc94b Mon Sep 17 00:00:00 2001 From: lizw-2015 <1183409807@qq.com> Date: Tue, 10 Jun 2025 13:51:23 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(editor):=20=E4=BC=98=E5=8C=96=E4=BB=93?= =?UTF-8?q?=E5=BA=93=E5=B8=83=E5=B1=80=E7=BC=96=E8=BE=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增列数、层数、列宽、层高等设置功能 - 实现复制、删除列的功能 - 优化列和层高的编辑界面 - 改进样式,增加滚动条和背景色等细节 --- src/editor/propEditors/BayEditor.vue | 99 +++++++++++++++++++++++++--- src/editor/propEditors/InOutCenterEditor.vue | 6 +- 2 files changed, 92 insertions(+), 13 deletions(-) diff --git a/src/editor/propEditors/BayEditor.vue b/src/editor/propEditors/BayEditor.vue index c84b50a..09cd98f 100644 --- a/src/editor/propEditors/BayEditor.vue +++ b/src/editor/propEditors/BayEditor.vue @@ -1,4 +1,5 @@ + + + + diff --git a/src/editor/Model2DEditor.vue b/src/editor/Model2DEditor.vue index 1c7e8e0..60d277d 100644 --- a/src/editor/Model2DEditor.vue +++ b/src/editor/Model2DEditor.vue @@ -17,6 +17,9 @@ :type="state?.view3DMode===Constract.Mode3D?'primary':''" @click="state.view3DMode = Constract.Mode3D">3D + + 批量复制 +
@@ -92,13 +95,14 @@ diff --git a/src/editor/widgets/property/PropertyPanel.vue b/src/editor/widgets/property/PropertyPanel.vue index 1cf6e7b..a8182ca 100644 --- a/src/editor/widgets/property/PropertyPanel.vue +++ b/src/editor/widgets/property/PropertyPanel.vue @@ -9,23 +9,23 @@ import { defDataFormProps } from '@/editor/widgets/property/PropertyPanelConstan import Viewport, { type ViewportState } from '@/core/engine/Viewport.ts' defineOptions({ - name: 'PropertyPanel' + name: 'PropertyPanel' }) // 定义 Props 类型 interface PropertyPanelProps { - /** 待编辑数据 */ - data?: any; - /** Viewport */ - viewport: Viewport; - /** ViewportState */ - viewportState: ViewportState; - /** 默认的DataFormProps */ - defDataFormProps?: DataFormProps; - /** 最上面平铺的设置器 */ - flatten?: PropertyFlattenSetter; - /** 设置器分组集合 */ - groups?: Array; + /** 待编辑数据 */ + data?: any; + /** Viewport */ + viewport: Viewport; + /** ViewportState */ + viewportState: ViewportState; + /** 默认的DataFormProps */ + defDataFormProps?: DataFormProps; + /** 最上面平铺的设置器 */ + flatten?: PropertyFlattenSetter; + /** 设置器分组集合 */ + groups?: Array; } // 读取组件 props 属性 @@ -33,16 +33,16 @@ const props = withDefaults(defineProps(), {}) // 定义 State 类型 interface PropertyPanelState { - /** 待编辑数据 */ - data?: any; - /** 已展开的分组 */ - expandGroups: Array; + /** 待编辑数据 */ + data?: any; + /** 已展开的分组 */ + expandGroups: Array; } // state 属性 const state = reactive({ - data: lodash.cloneDeep(props.data), - expandGroups: [] + data: lodash.cloneDeep(props.data), + expandGroups: [] }) // 定义 Data 类型 @@ -54,84 +54,84 @@ const data: PropertyPanelData = {} const flattenFormProps = computed(() => getDefFormProps(props.flatten)) function getDefFormProps(setter?: PropertyFlattenSetter) { - const formProps: DataFormProps = { - ...defDataFormProps, - ...props.defDataFormProps - } - fillFormProps(setter) - return formProps + const formProps: DataFormProps = { + ...defDataFormProps, + ...props.defDataFormProps + } + fillFormProps(setter) + return formProps } function fillFormProps(formProps: DataFormProps, setter?: PropertyFlattenSetter) { - if (!setter) return - if (setter.size) formProps.size = setter.size - if (setter.labelWidth) formProps.labelWidth = setter.labelWidth + if (!setter) return + if (setter.size) formProps.size = setter.size + if (setter.labelWidth) formProps.labelWidth = setter.labelWidth } function getCollapseItemId(group: PropertySetterGroup, idx: number) { - return `_${idx}_${group.title}` + return `_${idx}_${group.title}` } function onDataChange(newData: any) { - const viewport = props.viewport - if (!viewport) return - viewport.stateManager.update(({ getEntity, putEntity }) => { - const data = getEntity(props.data.id) - lodash.assign(data, newData) - // console.log('onDataChange@1', JSON.stringify(data.dt)) - putEntity(data) - }) + const viewport = props.viewport + if (!viewport) return + viewport.stateManager.update(({ getEntity, putEntity }) => { + const data = getEntity(props.data.id); + lodash.assign(data, newData); + // console.log('onDataChange@1', JSON.stringify(data.dt)) + putEntity(data); + }); } interface PropertyPanelExpose { - state: PropertyPanelState; - data: PropertyPanelData; + state: PropertyPanelState; + data: PropertyPanelData; } const expose: PropertyPanelExpose = { - state, - data + state, + data } // 定义组件公开内容 defineExpose(expose) export type { - PropertyPanelProps, - PropertyPanelState + PropertyPanelProps, + PropertyPanelState }