diff --git a/packages/core/client-v2/src/flow/models/blocks/form/QuickEditFormModel.tsx b/packages/core/client-v2/src/flow/models/blocks/form/QuickEditFormModel.tsx index 0d5b86eaa07..a2ec7d3606a 100644 --- a/packages/core/client-v2/src/flow/models/blocks/form/QuickEditFormModel.tsx +++ b/packages/core/client-v2/src/flow/models/blocks/form/QuickEditFormModel.tsx @@ -22,7 +22,6 @@ import { createRecordResolveOnServerWithLocal, } from '@nocobase/flow-engine'; import { Button, Form, Skeleton, Space } from 'antd'; -import _ from 'lodash'; import React from 'react'; import { FieldModel } from '../../base/FieldModel'; import { FormComponent } from './FormBlockModel'; @@ -46,8 +45,6 @@ export class QuickEditFormModel extends FlowModel { declare resource: SingleRecordResource; declare collection: Collection; - now: number = Date.now(); - viewContainer: any; __onSubmitSuccess; _fieldProps: any; @@ -89,21 +86,22 @@ export class QuickEditFormModel extends FlowModel { onOk, sourceFieldModelUid, } = options; - const model = flowEngine.createModel({ - use: 'QuickEditFormModel', - stepParams: { - quickEditFormSettings: { - init: { - dataSourceKey, - collectionName, - fieldPath, + const sourceFieldModel = sourceFieldModelUid ? flowEngine.getModel(sourceFieldModelUid) : undefined; + const model = flowEngine.createModel( + { + use: 'QuickEditFormModel', + stepParams: { + quickEditFormSettings: { + init: { + dataSourceKey, + collectionName, + fieldPath, + }, }, }, }, - }) as QuickEditFormModel; - - console.log('QuickEditFormModel.open2', Date.now() - model.now); - model.now = Date.now(); + sourceFieldModel ? { delegate: sourceFieldModel.context } : undefined, + ) as QuickEditFormModel; await flowEngine.context.viewer.open({ type: 'popover', @@ -122,7 +120,6 @@ export class QuickEditFormModel extends FlowModel { model.__onSubmitSuccess = onSuccess; model._fieldProps = fieldProps; model._onOk = onOk; - console.log('QuickEditFormModel.open3', Date.now() - model.now); return ( } @@ -171,8 +168,6 @@ export class QuickEditFormModel extends FlowModel { } render() { - console.log('QuickEditFormModel.open4', Date.now() - this.now); - return (
{ @@ -18,6 +18,35 @@ describe('QuickEditFormModel - quick edit save triggers API (regression)', () => engine = new FlowEngine(); }); + it('uses source field context when opening quick edit', async () => { + engine.registerModels({ QuickEditFormModel }); + engine.context.defineProperty('pageActive', { value: { value: false } }); + engine.context.defineProperty('viewer', { value: { open: vi.fn(async () => undefined) } }); + + const page = engine.createModel({ use: 'FlowModel', uid: 'page' }); + page.context.defineProperty('pageActive', { value: { value: true } }); + const source = engine.createModel({ use: 'FlowModel', uid: 'source-field', parentId: page.uid }); + + await QuickEditFormModel.open({ + flowEngine: engine, + target: document.createElement('div'), + dataSourceKey: 'main', + collectionName: 'users', + fieldPath: 'name', + record: {}, + sourceFieldModelUid: source.uid, + }); + + let quickEditModel: QuickEditFormModel | undefined; + engine.forEachModel((model) => { + if (model instanceof QuickEditFormModel) { + quickEditModel = model; + } + }); + + expect(quickEditModel?.context.pageActive.value).toBe(true); + }); + it('calls update with filterByTk and merges primary key from ctx.collection/record', async () => { // 1) 准备数据源与集合(含主键字段) const dsm = engine.context.dataSourceManager; diff --git a/packages/core/client-v2/src/flow/models/fields/AssociationFieldModel/PopupSubTableFieldModel/PopupSubTableFieldModel.tsx b/packages/core/client-v2/src/flow/models/fields/AssociationFieldModel/PopupSubTableFieldModel/PopupSubTableFieldModel.tsx index adb0eb7878a..7c475050c52 100644 --- a/packages/core/client-v2/src/flow/models/fields/AssociationFieldModel/PopupSubTableFieldModel/PopupSubTableFieldModel.tsx +++ b/packages/core/client-v2/src/flow/models/fields/AssociationFieldModel/PopupSubTableFieldModel/PopupSubTableFieldModel.tsx @@ -126,6 +126,7 @@ const RenderCell = observer((props) => { fieldPath: dataIndex, record: record, fieldProps: { ...columnModel.props, ...columnModel.subModels.field.props }, + sourceFieldModelUid: columnModel.subModels.field.uid, onOk: (values) => { record[dataIndex] = values[dataIndex]; // 仅重渲染单元格