fix: 修改级联组件适配

This commit is contained in:
wjh 2024-03-13 12:04:46 +08:00
parent e03e68232e
commit dcf3cf63e3
2 changed files with 31 additions and 47 deletions

View File

@ -132,8 +132,21 @@ export const SchemaSettingsSortingRule = function SortRuleConfigure(props) {
}); });
_.set(field.componentProps, 'service.params.sort', sortArr); _.set(field.componentProps, 'service.params.sort', sortArr);
props?.onSubmitCallBack?.(sortArr); props?.onSubmitCallBack?.(sortArr);
fieldSchema['x-component-props']['service']['params']['sort'] = field.componentProps?.service.params?.sort; const service = fieldSchema['x-component-props']?.service;
if (service) {
service.params['sort'] = field.componentProps?.service.params?.sort;
} else {
fieldSchema['x-component-props']['service'] = {
params: {
sort: field.componentProps?.service.params?.sort,
},
};
}
const componentProps = fieldSchema['x-component-props']; const componentProps = fieldSchema['x-component-props'];
const path = field.path?.splice(field.path?.length - 1, 1);
field.form.query(`${path.concat(`*.` + fieldSchema.name)}`).forEach((f) => {
f.componentProps = componentProps;
});
dn.emit('patch', { dn.emit('patch', {
schema: { schema: {
['x-uid']: fieldSchema['x-uid'], ['x-uid']: fieldSchema['x-uid'],
@ -206,45 +219,6 @@ const titleField: any = {
}, },
}; };
export const allowMultiple: any = {
name: 'allowMultiple',
type: 'switch',
useVisible() {
const isFieldReadPretty = useIsFieldReadPretty();
const collectionField = useCollectionField();
return !isFieldReadPretty && ['hasMany', 'belongsToMany'].includes(collectionField?.type);
},
useComponentProps() {
const { t } = useTranslation();
const field = useField<Field>();
const { fieldSchema: tableColumnSchema } = useColumnSchema();
const schema = useFieldSchema();
const fieldSchema = tableColumnSchema || schema;
const { dn, refresh } = useDesignable();
return {
title: t('Allow multiple'),
checked:
fieldSchema['x-component-props']?.multiple === undefined ? true : fieldSchema['x-component-props'].multiple,
onChange(value) {
const schema = {
['x-uid']: fieldSchema['x-uid'],
};
fieldSchema['x-component-props'] = fieldSchema['x-component-props'] || {};
field.componentProps = field.componentProps || {};
fieldSchema['x-component-props'].multiple = value;
field.componentProps.multiple = value;
schema['x-component-props'] = fieldSchema['x-component-props'];
dn.emit('patch', {
schema,
});
refresh();
},
};
},
};
const setDefaultSortingRules = { const setDefaultSortingRules = {
name: 'setDefaultSortingRules', name: 'setDefaultSortingRules',
Component: SchemaSettingsSortingRule, Component: SchemaSettingsSortingRule,
@ -290,7 +264,16 @@ const setTheDataScope: any = {
onSubmit: ({ filter }) => { onSubmit: ({ filter }) => {
filter = removeNullCondition(filter); filter = removeNullCondition(filter);
_.set(field.componentProps, 'service.params.filter', filter); _.set(field.componentProps, 'service.params.filter', filter);
fieldSchema['x-component-props']['service']['params']['filter'] = filter; const service = fieldSchema['x-component-props']?.service;
if (service) {
service.params['filter'] = filter;
} else {
fieldSchema['x-component-props']['service'] = {
params: {
filter: { ...filter },
},
};
}
const componentProps = fieldSchema['x-component-props']; const componentProps = fieldSchema['x-component-props'];
const path = field.path?.splice(field.path?.length - 1, 1); const path = field.path?.splice(field.path?.length - 1, 1);
field.form.query(`${path.concat(`*.` + fieldSchema.name)}`).forEach((f) => { field.form.query(`${path.concat(`*.` + fieldSchema.name)}`).forEach((f) => {
@ -363,9 +346,8 @@ export const cascaderComponentFieldSettings = new SchemaSettings({
{ {
...setTheDataScope, ...setTheDataScope,
useVisible() { useVisible() {
const isSelectFieldMode = useIsSelectFieldMode();
const isFieldReadPretty = useIsFieldReadPretty(); const isFieldReadPretty = useIsFieldReadPretty();
return isSelectFieldMode && !isFieldReadPretty; return !isFieldReadPretty;
}, },
}, },
{ {
@ -377,9 +359,8 @@ export const cascaderComponentFieldSettings = new SchemaSettings({
}; };
}, },
useVisible() { useVisible() {
const isSelectFieldMode = useIsSelectFieldMode();
const isFieldReadPretty = useIsFieldReadPretty(); const isFieldReadPretty = useIsFieldReadPretty();
return isSelectFieldMode && !isFieldReadPretty; return !isFieldReadPretty;
}, },
}, },
{ {

View File

@ -31,7 +31,8 @@ const Cascade = connect((props) => {
const { options: collectionField, field: associationField } = useAssociationFieldContext<any>(); const { options: collectionField, field: associationField } = useAssociationFieldContext<any>();
const resource = api.resource(collectionField.target); const resource = api.resource(collectionField.target);
const fieldNames = associationField?.componentProps?.fieldNames; const fieldNames = associationField?.componentProps?.fieldNames;
const fieldFilter = fieldSchema['x-component-props']['service']['params']['filter']; const fieldFilter = fieldSchema['x-component-props']?.service?.params?.filter;
const sort = fieldSchema['x-component-props']?.service?.params?.sort;
const field: any = useField(); const field: any = useField();
useEffect(() => { useEffect(() => {
if (props.value) { if (props.value) {
@ -52,6 +53,7 @@ const Cascade = connect((props) => {
const response = await resource.list({ const response = await resource.list({
pageSize: 9999, pageSize: 9999,
filter: mergeFilter([fieldFilter, filter]), filter: mergeFilter([fieldFilter, filter]),
sort,
tree: true, tree: true,
}); });
return response?.data?.data; return response?.data?.data;
@ -210,7 +212,7 @@ export const InternalCascader = observer(
...props, ...props,
style: { width: '100%' }, style: { width: '100%' },
}, },
'x-read-pretty': 'false', 'x-read-pretty': false,
}, },
remove: { remove: {
type: 'void', type: 'void',
@ -243,6 +245,7 @@ export const InternalCascader = observer(
...props, ...props,
style: { width: '100%' }, style: { width: '100%' },
}, },
'x-read-pretty': false,
}} }}
/> />
) : ( ) : (