mirror of
https://github.com/nocobase/nocobase
synced 2024-11-15 05:46:00 +00:00
fix: correct foreign key value errors (#5027)
Some checks are pending
auto-merge / push-commit (push) Waiting to run
Build Docker Image / build-and-push (push) Waiting to run
Build Pro Image / build-and-push (push) Waiting to run
deploy client docs / Build (push) Waiting to run
E2E / Build (push) Waiting to run
E2E / Core and plugins (push) Blocked by required conditions
E2E / plugin-workflow (push) Blocked by required conditions
E2E / plugin-workflow-approval (push) Blocked by required conditions
E2E / plugin-data-source-main (push) Blocked by required conditions
E2E / Comment on PR (push) Blocked by required conditions
NocoBase FrontEnd Test / frontend-test (18) (push) Waiting to run
Some checks are pending
auto-merge / push-commit (push) Waiting to run
Build Docker Image / build-and-push (push) Waiting to run
Build Pro Image / build-and-push (push) Waiting to run
deploy client docs / Build (push) Waiting to run
E2E / Build (push) Waiting to run
E2E / Core and plugins (push) Blocked by required conditions
E2E / plugin-workflow (push) Blocked by required conditions
E2E / plugin-workflow-approval (push) Blocked by required conditions
E2E / plugin-data-source-main (push) Blocked by required conditions
E2E / Comment on PR (push) Blocked by required conditions
NocoBase FrontEnd Test / frontend-test (18) (push) Waiting to run
This commit is contained in:
parent
cd5d48eb80
commit
789dc49867
@ -13,7 +13,7 @@ import { isEqual } from 'lodash';
|
|||||||
import { useCallback, useEffect, useMemo } from 'react';
|
import { useCallback, useEffect, useMemo } from 'react';
|
||||||
import { useTableBlockContext } from '../../../../../block-provider/TableBlockProvider';
|
import { useTableBlockContext } from '../../../../../block-provider/TableBlockProvider';
|
||||||
import { findFilterTargets } from '../../../../../block-provider/hooks';
|
import { findFilterTargets } from '../../../../../block-provider/hooks';
|
||||||
import { useFilterBlock } from '../../../../../filter-provider/FilterProvider';
|
import { DataBlock, useFilterBlock } from '../../../../../filter-provider/FilterProvider';
|
||||||
import { mergeFilter } from '../../../../../filter-provider/utils';
|
import { mergeFilter } from '../../../../../filter-provider/utils';
|
||||||
import { removeNullCondition } from '../../../../../schema-component';
|
import { removeNullCondition } from '../../../../../schema-component';
|
||||||
|
|
||||||
@ -103,12 +103,17 @@ export const useTableBlockProps = () => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const value = [record[ctx.rowKey]];
|
const currentBlock = dataBlocks.find((block) => block.uid === fieldSchema.parent['x-uid']);
|
||||||
|
|
||||||
dataBlocks.forEach((block) => {
|
dataBlocks.forEach((block) => {
|
||||||
const target = targets.find((target) => target.uid === block.uid);
|
const target = targets.find((target) => target.uid === block.uid);
|
||||||
if (!target) return;
|
if (!target) return;
|
||||||
|
|
||||||
|
const isForeignKey = block.foreignKeyFields?.some((field) => field.name === target.field);
|
||||||
|
const sourceKey = getSourceKey(currentBlock, target.field);
|
||||||
|
const recordKey = isForeignKey ? sourceKey : ctx.rowKey;
|
||||||
|
const value = [record[recordKey]];
|
||||||
|
|
||||||
const param = block.service.params?.[0] || {};
|
const param = block.service.params?.[0] || {};
|
||||||
// 保留原有的 filter
|
// 保留原有的 filter
|
||||||
const storedFilter = block.service.params?.[1]?.filters || {};
|
const storedFilter = block.service.params?.[1]?.filters || {};
|
||||||
@ -146,7 +151,7 @@ export const useTableBlockProps = () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 更新表格的选中状态
|
// 更新表格的选中状态
|
||||||
setSelectedRow((prev) => (prev?.includes(record[ctx.rowKey]) ? [] : [...value]));
|
setSelectedRow((prev) => (prev?.includes(record[ctx.rowKey]) ? [] : [record[ctx.rowKey]]));
|
||||||
},
|
},
|
||||||
[ctx.rowKey, fieldSchema, getDataBlocks],
|
[ctx.rowKey, fieldSchema, getDataBlocks],
|
||||||
),
|
),
|
||||||
@ -155,3 +160,8 @@ export const useTableBlockProps = () => {
|
|||||||
}, []),
|
}, []),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function getSourceKey(currentBlock: DataBlock, field: string) {
|
||||||
|
const associationField = currentBlock?.associatedFields?.find((item) => item.foreignKey === field);
|
||||||
|
return associationField?.sourceKey || 'id';
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user