From cbcfda7acfd892325ae5f1c4c539f619da9aa64f Mon Sep 17 00:00:00 2001 From: lijisanxiong <1518062161@qq.com> Date: Wed, 9 Jul 2025 20:38:40 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E9=87=8D=E5=A4=8D=E5=99=A8?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E6=8B=96=E6=8B=BD=E6=94=AF=E6=8C=81=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E8=87=AA=E5=8A=A8=E4=BF=9D=E5=AD=98=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 ++++ .../repeater-multi-form/repeater-multi-form.tsx | 3 +++ .../mdctrl-container/mdctrl-container.tsx | 17 ++++++++++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15cbff70a..e13df404e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ ## [Unreleased] +### Added + +- 重复器表单拖拽支持表单自动保存配置 + ## [0.7.41-alpha.10] - 2025-07-08 ### Added diff --git a/src/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-multi-form/repeater-multi-form.tsx b/src/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-multi-form/repeater-multi-form.tsx index b2953fddd..475918c07 100644 --- a/src/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-multi-form/repeater-multi-form.tsx +++ b/src/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-multi-form/repeater-multi-form.tsx @@ -58,6 +58,9 @@ export const RepeaterMultiForm = defineComponent({ onRemoveClick={(_item: IData, index: number): void => this.controller.remove(index) } + onDragChange={(draggedIndex: number, targetIndex: number) => { + this.controller.dragChange(draggedIndex, targetIndex); + }} > {{ item: ({ data, index }: { data: IData; index: number }) => { diff --git a/src/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.tsx b/src/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.tsx index 53ae28e7b..5d99ba349 100644 --- a/src/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.tsx +++ b/src/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.tsx @@ -33,6 +33,7 @@ export const MDCtrlContainer = defineComponent({ emits: { addClick: () => true, removeClick: (_data: IData, _index: number) => true, + dragChange: (_draggedIndex: number, _targetIndex: number) => true, }, setup(props, { emit, slots }) { const ns = useNamespace('mdctrl-container'); @@ -45,6 +46,17 @@ export const MDCtrlContainer = defineComponent({ return props.enableCreate || props.enableDelete; }); + /** 拖拽数据集 */ + const dragItems = computed(() => [...props.items]); + + // 拖拽结束 + const handleDragChange = (_params: IParams) => { + const { moved } = _params; + const draggedIndex = moved.oldIndex; + const targetIndex = moved.newIndex; + emit('dragChange', draggedIndex, targetIndex); + }; + // 排序拖拽按钮 const renderDragBtn = (): JSX.Element => { return ( @@ -220,12 +232,14 @@ export const MDCtrlContainer = defineComponent({ ns, showActions, dragClssName, + dragItems, renderDragBtn, renderAddBtn, renderDefaultItem, renderRemoveBtn, renderStyle2AddBtn, renderStyle2RemoveBtn, + handleDragChange, }; }, render() { @@ -278,9 +292,10 @@ export const MDCtrlContainer = defineComponent({ ref='container' class={[this.ns.e('drag')]} chosenClass={this.ns.is('drag-chosen', true)} - list={this.items} + list={this.dragItems} itemKey='id' handle={`.${this.dragClssName}`} + onChange={this.handleDragChange} > {{ item: ({ element, index }: { element: IData; index: number }) => -- Gitee