|
|
@@ -6,12 +6,30 @@ import type {
|
|
|
|
|
|
import { computed, ref, watch } from 'vue';
|
|
|
|
|
|
-import { isBoolean, isFunction } from '@vben-core/shared/utils';
|
|
|
+import { get, isBoolean, isFunction } from '@vben-core/shared/utils';
|
|
|
|
|
|
import { useFormValues } from 'vee-validate';
|
|
|
|
|
|
import { injectRenderFormProps } from './context';
|
|
|
|
|
|
+/**
|
|
|
+ * 解析Nested Objects对应的字段值
|
|
|
+ * @param values 表单值
|
|
|
+ * @param fieldName 字段名
|
|
|
+ */
|
|
|
+function resolveValueByFieldName(
|
|
|
+ values: Record<string, any>,
|
|
|
+ fieldName: string,
|
|
|
+) {
|
|
|
+ // vee-validate:[] 表示禁用嵌套
|
|
|
+ if (fieldName.startsWith('[') && fieldName.endsWith(']')) {
|
|
|
+ const rawKey = fieldName.slice(1, -1);
|
|
|
+ return values[rawKey];
|
|
|
+ }
|
|
|
+
|
|
|
+ return get(values, fieldName);
|
|
|
+}
|
|
|
+
|
|
|
export default function useDependencies(
|
|
|
getDependencies: () => FormItemDependencies | undefined,
|
|
|
) {
|
|
|
@@ -37,7 +55,7 @@ export default function useDependencies(
|
|
|
// 该字段可能会被多个字段触发
|
|
|
const triggerFields = getDependencies()?.triggerFields ?? [];
|
|
|
return triggerFields.map((dep) => {
|
|
|
- return values.value[dep];
|
|
|
+ return resolveValueByFieldName(values.value, dep);
|
|
|
});
|
|
|
});
|
|
|
|