mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-05 05:29:26 +08:00
Merge branch 'main' into next
This commit is contained in:
commit
c6935a8923
@ -97,6 +97,30 @@ const filterValue = (value) => {
|
||||
return obj;
|
||||
};
|
||||
|
||||
function getFilteredFormValues(form) {
|
||||
const values = _.cloneDeep(form.values);
|
||||
const allFields = [];
|
||||
form.query('*').forEach((field) => {
|
||||
if (field) {
|
||||
allFields.push(field);
|
||||
}
|
||||
});
|
||||
const readonlyPaths = allFields
|
||||
.filter((field) => field?.componentProps?.readOnlySubmit)
|
||||
.map((field) => {
|
||||
const segments = field.path?.segments || [];
|
||||
if (segments.length <= 1) {
|
||||
return segments.join('.');
|
||||
}
|
||||
return segments.slice(0, -1).join('.');
|
||||
});
|
||||
for (const path of readonlyPaths) {
|
||||
_.unset(values, path);
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
export function getFormValues({
|
||||
filterByTk,
|
||||
field,
|
||||
@ -124,7 +148,7 @@ export function getFormValues({
|
||||
}
|
||||
}
|
||||
|
||||
return form.values;
|
||||
return getFilteredFormValues(form);
|
||||
}
|
||||
|
||||
export function useCollectValuesToSubmit() {
|
||||
|
@ -34,7 +34,7 @@ import useServiceOptions, { useAssociationFieldContext } from './hooks';
|
||||
|
||||
const removeIfKeyEmpty = (obj, filterTargetKey) => {
|
||||
if (!obj || typeof obj !== 'object' || !filterTargetKey || Array.isArray(obj)) return obj;
|
||||
return !obj[filterTargetKey] ? null : obj;
|
||||
return !obj[filterTargetKey] ? undefined : obj;
|
||||
};
|
||||
|
||||
export const AssociationFieldAddNewer = (props) => {
|
||||
@ -106,8 +106,13 @@ const InternalAssociationSelect = observer(
|
||||
useEffect(() => {
|
||||
const initValue = isVariable(field.value) ? undefined : field.value;
|
||||
const value = Array.isArray(initValue) ? initValue.filter(Boolean) : initValue;
|
||||
setInnerValue(value);
|
||||
}, [field.value]);
|
||||
const result = removeIfKeyEmpty(value, filterTargetKey);
|
||||
setInnerValue(result);
|
||||
if (!isEqual(field.value, result)) {
|
||||
field.value = result;
|
||||
}
|
||||
}, [field.value, filterTargetKey]);
|
||||
|
||||
useEffect(() => {
|
||||
const id = uid();
|
||||
form.addEffects(id, () => {
|
||||
|
@ -101,6 +101,10 @@ const useLazyLoadDisplayAssociationFieldsOfForm = () => {
|
||||
field.value = null;
|
||||
} else {
|
||||
field.value = result;
|
||||
field.componentProps = {
|
||||
...field.componentProps,
|
||||
readOnlySubmit: true,
|
||||
}; // 让它不参与提交
|
||||
}
|
||||
});
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user