|
@@ -11,7 +11,7 @@ import {
|
|
|
isIncludeSimpleComponents,
|
|
|
} from '../helper';
|
|
|
import { dateUtil } from '@/utils/dateUtil';
|
|
|
-import { cloneDeep, set, uniqBy, get } from 'lodash-es';
|
|
|
+import { cloneDeep, has, uniqBy, get } from 'lodash-es';
|
|
|
import { error } from '@/utils/log';
|
|
|
|
|
|
interface UseFormActionContext {
|
|
@@ -25,46 +25,6 @@ interface UseFormActionContext {
|
|
|
handleFormValues: Fn;
|
|
|
}
|
|
|
|
|
|
-function tryConstructArray(field: string, values: Recordable = {}): any[] | undefined {
|
|
|
- const pattern = /^\[(.+)\]$/;
|
|
|
- if (pattern.test(field)) {
|
|
|
- const match = field.match(pattern);
|
|
|
- if (match && match[1]) {
|
|
|
- const keys = match[1].split(',');
|
|
|
- if (!keys.length) {
|
|
|
- return undefined;
|
|
|
- }
|
|
|
-
|
|
|
- const result = [];
|
|
|
- keys.forEach((k, index) => {
|
|
|
- set(result, index, values[k.trim()]);
|
|
|
- });
|
|
|
-
|
|
|
- return result.filter(Boolean).length ? result : undefined;
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-function tryConstructObject(field: string, values: Recordable = {}): Recordable | undefined {
|
|
|
- const pattern = /^\{(.+)\}$/;
|
|
|
- if (pattern.test(field)) {
|
|
|
- const match = field.match(pattern);
|
|
|
- if (match && match[1]) {
|
|
|
- const keys = match[1].split(',');
|
|
|
- if (!keys.length) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- const result = {};
|
|
|
- keys.forEach((k) => {
|
|
|
- set(result, k.trim(), values[k.trim()]);
|
|
|
- });
|
|
|
-
|
|
|
- return Object.values(result).filter(Boolean).length ? result : undefined;
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
export function useFormEvents({
|
|
|
emit,
|
|
|
getProps,
|
|
@@ -114,15 +74,11 @@ export function useFormEvents({
|
|
|
|
|
|
const fields = getAllFields();
|
|
|
|
|
|
- // key 支持 a.b.c 的嵌套写法
|
|
|
- const delimiter = '.';
|
|
|
- const nestKeyArray = fields.filter((item) => String(item).indexOf(delimiter) >= 0);
|
|
|
-
|
|
|
const validKeys: string[] = [];
|
|
|
fields.forEach((key) => {
|
|
|
const schema = unref(getSchema).find((item) => item.field === key);
|
|
|
let value = get(values, key);
|
|
|
- const hasKey = Reflect.has(values, key);
|
|
|
+ const hasKey = has(values, key);
|
|
|
|
|
|
value = handleInputNumberValue(schema?.component, value);
|
|
|
const { componentProps } = schema || {};
|
|
@@ -134,7 +90,7 @@ export function useFormEvents({
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- const constructValue = tryConstructArray(key, values) || tryConstructObject(key, values);
|
|
|
+ const constructValue = get(value, key);
|
|
|
const setDateFieldValue = (v) => {
|
|
|
return v ? (_props?.valueFormat ? v : dateUtil(v)) : null;
|
|
|
};
|
|
@@ -161,20 +117,10 @@ export function useFormEvents({
|
|
|
}
|
|
|
validKeys.push(key);
|
|
|
} else {
|
|
|
- nestKeyArray.forEach((nestKey: string) => {
|
|
|
- try {
|
|
|
- const value = get(values, nestKey);
|
|
|
- if (isDef(value)) {
|
|
|
- unref(formModel)[nestKey] = unref(value);
|
|
|
- validKeys.push(nestKey);
|
|
|
- }
|
|
|
- } catch (e) {
|
|
|
- // key not exist
|
|
|
- if (isDef(defaultValueRef.value[nestKey])) {
|
|
|
- unref(formModel)[nestKey] = cloneDeep(unref(defaultValueRef.value[nestKey]));
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
+ // key not exist
|
|
|
+ if (isDef(get(defaultValueRef.value, key))) {
|
|
|
+ unref(formModel)[key] = cloneDeep(unref(get(defaultValueRef.value, key)));
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
validateFields(validKeys).catch((_) => {});
|