mirror of
https://github.com/imdap/ruoyi-plus-vben5.git
synced 2026-05-13 06:42:10 +08:00
fix: dependencies访问extendApi
This commit is contained in:
@@ -32,19 +32,13 @@ function resolveValueByFieldName(
|
|||||||
|
|
||||||
return get(values, fieldName);
|
return get(values, fieldName);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function useDependencies(
|
export default function useDependencies(
|
||||||
getDependencies: () => FormItemDependencies | undefined,
|
getDependencies: () => FormItemDependencies | undefined,
|
||||||
) {
|
) {
|
||||||
const values = useFormValues();
|
const values = useFormValues();
|
||||||
|
|
||||||
const formRenderProps = injectRenderFormProps();
|
|
||||||
const [extendApi] = injectFormProps();
|
const [extendApi] = injectFormProps();
|
||||||
|
const formRenderProps = injectRenderFormProps();
|
||||||
// 在 dependencies 里提供访问extendApi的能力
|
|
||||||
const controller: ExtendedFormApi = isRef(extendApi)
|
|
||||||
? (extendApi.value.formApi as ExtendedFormApi)
|
|
||||||
: (extendApi.formApi as ExtendedFormApi);
|
|
||||||
|
|
||||||
const formApi = formRenderProps.form;
|
const formApi = formRenderProps.form;
|
||||||
|
|
||||||
@@ -56,6 +50,19 @@ export default function useDependencies(
|
|||||||
throw new Error('useDependencies should be used within <VbenForm>');
|
throw new Error('useDependencies should be used within <VbenForm>');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 在 dependencies 里提供访问extendApi的能力
|
||||||
|
const getController = (): ExtendedFormApi => {
|
||||||
|
const controller = isRef(extendApi)
|
||||||
|
? extendApi.value.formApi
|
||||||
|
: extendApi.formApi;
|
||||||
|
|
||||||
|
if (!controller) {
|
||||||
|
throw new Error('formApi is required in useDependencies');
|
||||||
|
}
|
||||||
|
|
||||||
|
return controller;
|
||||||
|
};
|
||||||
|
|
||||||
const isIf = ref(true);
|
const isIf = ref(true);
|
||||||
const isDisabled = ref(false);
|
const isDisabled = ref(false);
|
||||||
const isShow = ref(true);
|
const isShow = ref(true);
|
||||||
@@ -101,7 +108,7 @@ export default function useDependencies(
|
|||||||
const formValues = values.value;
|
const formValues = values.value;
|
||||||
|
|
||||||
if (isFunction(whenIf)) {
|
if (isFunction(whenIf)) {
|
||||||
isIf.value = !!(await whenIf(formValues, formApi, controller));
|
isIf.value = !!(await whenIf(formValues, formApi, getController()));
|
||||||
// 不渲染
|
// 不渲染
|
||||||
if (!isIf.value) return;
|
if (!isIf.value) return;
|
||||||
} else if (isBoolean(whenIf)) {
|
} else if (isBoolean(whenIf)) {
|
||||||
@@ -111,7 +118,7 @@ export default function useDependencies(
|
|||||||
|
|
||||||
// 2. 判断show,如果show为false,则隐藏
|
// 2. 判断show,如果show为false,则隐藏
|
||||||
if (isFunction(show)) {
|
if (isFunction(show)) {
|
||||||
isShow.value = !!(await show(formValues, formApi, controller));
|
isShow.value = !!(await show(formValues, formApi, getController()));
|
||||||
} else if (isBoolean(show)) {
|
} else if (isBoolean(show)) {
|
||||||
isShow.value = show;
|
isShow.value = show;
|
||||||
}
|
}
|
||||||
@@ -120,26 +127,34 @@ export default function useDependencies(
|
|||||||
dynamicComponentProps.value = await componentProps(
|
dynamicComponentProps.value = await componentProps(
|
||||||
formValues,
|
formValues,
|
||||||
formApi,
|
formApi,
|
||||||
controller,
|
getController(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isFunction(rules)) {
|
if (isFunction(rules)) {
|
||||||
dynamicRules.value = await rules(formValues, formApi, controller);
|
dynamicRules.value = await rules(formValues, formApi, getController());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isFunction(disabled)) {
|
if (isFunction(disabled)) {
|
||||||
isDisabled.value = !!(await disabled(formValues, formApi, controller));
|
isDisabled.value = !!(await disabled(
|
||||||
|
formValues,
|
||||||
|
formApi,
|
||||||
|
getController(),
|
||||||
|
));
|
||||||
} else if (isBoolean(disabled)) {
|
} else if (isBoolean(disabled)) {
|
||||||
isDisabled.value = disabled;
|
isDisabled.value = disabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isFunction(required)) {
|
if (isFunction(required)) {
|
||||||
isRequired.value = !!(await required(formValues, formApi, controller));
|
isRequired.value = !!(await required(
|
||||||
|
formValues,
|
||||||
|
formApi,
|
||||||
|
getController(),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isFunction(trigger)) {
|
if (isFunction(trigger)) {
|
||||||
trigger(formValues, formApi, controller);
|
trigger(formValues, formApi, getController());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ deep: true, immediate: true },
|
{ deep: true, immediate: true },
|
||||||
|
|||||||
@@ -103,16 +103,17 @@ function resetValues() {
|
|||||||
function updateValues(
|
function updateValues(
|
||||||
values: Recordable<CollapsibleParamSchema['defaultValue']>,
|
values: Recordable<CollapsibleParamSchema['defaultValue']>,
|
||||||
) {
|
) {
|
||||||
const newValue = {} as Recordable<CollapsibleParamSchema['defaultValue']>;
|
const allowedKeys = new Set(props.params.map((param) => param.key));
|
||||||
|
const patch = {} as Recordable<CollapsibleParamSchema['defaultValue']>;
|
||||||
|
|
||||||
for (const key in values) {
|
for (const key in values) {
|
||||||
if (!Object.hasOwn(values, key)) continue;
|
if (!Object.hasOwn(values, key)) continue;
|
||||||
if (!Object.hasOwn(modelValue.value, key)) continue;
|
if (!allowedKeys.has(key)) continue;
|
||||||
|
|
||||||
newValue[key] = values[key];
|
patch[key] = values[key];
|
||||||
|
|
||||||
modelValue.value = { ...modelValue.value, ...newValue };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
modelValue.value = { ...modelValue.value, ...patch };
|
||||||
}
|
}
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ function getNumberValidator(key: string, limit?: [number?, number?]) {
|
|||||||
}
|
}
|
||||||
if (limit[1] !== undefined) {
|
if (limit[1] !== undefined) {
|
||||||
validator = validator.max(limit[1], {
|
validator = validator.max(limit[1], {
|
||||||
message: `${key} 值不能大于${limit[0]}`,
|
message: `${key} 值不能大于${limit[1]}`,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -198,7 +198,10 @@ const [BaseForm, baseFormApi] = useVbenForm({
|
|||||||
save_steps: 80,
|
save_steps: 80,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
paramsRef?.updateValues?.({ calib_steps: null });
|
paramsRef?.updateValues?.({
|
||||||
|
calib_steps: null,
|
||||||
|
micro_batch_size: 8,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
rules(values) {
|
rules(values) {
|
||||||
|
|||||||
Reference in New Issue
Block a user