Commit c2590cbfb596aac5045b982e3be51c54c506bcb6

Authored by vben
2 parents 08d4e34b 7a8978dc
package.json
... ... @@ -17,9 +17,9 @@
17 17 },
18 18 "scripts": {
19 19 "bootstrap": "pnpm install",
20   - "build": "cross-env NODE_ENV=production vite build && esno ./build/script/postBuild.ts",
  20 + "build": "cross-env NODE_OPTIONS=--max-old-space-size=8192 NODE_ENV=production vite build && esno ./build/script/postBuild.ts",
21 21 "build:no-cache": "pnpm clean:cache && npm run build",
22   - "build:test": "cross-env vite build --mode test && esno ./build/script/postBuild.ts",
  22 + "build:test": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build --mode test && esno ./build/script/postBuild.ts",
23 23 "clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite",
24 24 "clean:lib": "rimraf node_modules",
25 25 "commit": "czg",
... ...
src/components/Form/src/hooks/useFormEvents.ts
... ... @@ -14,7 +14,7 @@ import {
14 14 import { deepMerge } from '/@/utils';
15 15 import { dateItemType, handleInputNumberValue, defaultValueComponents } from '../helper';
16 16 import { dateUtil } from '/@/utils/dateUtil';
17   -import { cloneDeep, set, uniqBy } from 'lodash-es';
  17 +import { cloneDeep, set, uniqBy, get } from 'lodash-es';
18 18 import { error } from '/@/utils/log';
19 19  
20 20 interface UseFormActionContext {
... ... @@ -112,9 +112,8 @@ export function useFormEvents({
112 112 const validKeys: string[] = [];
113 113 fields.forEach((key) => {
114 114 const schema = unref(getSchema).find((item) => item.field === key);
115   - let value = values[key];
116   -
117   - const hasKey = Reflect.has(values, key);
  115 + let value = get(values, key);
  116 + const hasKey = !!get(values, key);
118 117  
119 118 value = handleInputNumberValue(schema?.component, value);
120 119 const { componentProps } = schema || {};
... ...
src/utils/index.ts
... ... @@ -3,7 +3,7 @@ import type { App, Component } from 'vue';
3 3  
4 4 import { unref } from 'vue';
5 5 import { isArray, isObject } from '/@/utils/is';
6   -import { cloneDeep, mergeWith } from 'lodash-es';
  6 +import { cloneDeep, isEqual, mergeWith, unionWith } from 'lodash-es';
7 7  
8 8 export const noop = () => {};
9 9  
... ... @@ -48,7 +48,8 @@ export function deepMerge<T extends object | null | undefined, U extends object
48 48 return mergeWith(cloneDeep(target), source, (objValue, srcValue) => {
49 49 if (isObject(objValue) && isObject(srcValue)) {
50 50 return mergeWith(cloneDeep(objValue), srcValue, (prevValue, nextValue) => {
51   - return isArray(prevValue) ? prevValue.concat(nextValue) : undefined;
  51 + // 如果是数组,合并数组(去重) If it is an array, merge the array (remove duplicates)
  52 + return isArray(prevValue) ? unionWith(prevValue, nextValue, isEqual) : undefined;
52 53 });
53 54 }
54 55 });
... ...
src/utils/propTypes.ts
1 1 import { CSSProperties, VNodeChild } from 'vue';
2   -import { createTypes, VueTypeValidableDef, VueTypesInterface } from 'vue-types';
  2 +import { createTypes, VueTypeValidableDef, VueTypesInterface, toValidableType } from 'vue-types';
3 3  
4 4 export type VueNode = VNodeChild | JSX.Element;
5 5  
... ... @@ -8,8 +8,7 @@ type PropTypes = VueTypesInterface & {
8 8 readonly VNodeChild: VueTypeValidableDef<VueNode>;
9 9 // readonly trueBool: VueTypeValidableDef<boolean>;
10 10 };
11   -
12   -const propTypes = createTypes({
  11 +const newPropTypes = createTypes({
13 12 func: undefined,
14 13 bool: undefined,
15 14 string: undefined,
... ... @@ -18,17 +17,19 @@ const propTypes = createTypes({
18 17 integer: undefined,
19 18 }) as PropTypes;
20 19  
21   -propTypes.extend([
22   - {
23   - name: 'style',
24   - getter: true,
25   - type: [String, Object],
26   - default: undefined,
27   - },
28   - {
29   - name: 'VNodeChild',
30   - getter: true,
31   - type: undefined,
32   - },
33   -]);
  20 +// 从 vue-types v5.0 开始,extend()方法已经废弃,当前已改为官方推荐的ES6+方法 https://dwightjack.github.io/vue-types/advanced/extending-vue-types.html#the-extend-method
  21 +class propTypes extends newPropTypes {
  22 + // a native-like validator that supports the `.validable` method
  23 + static get style() {
  24 + return toValidableType('style', {
  25 + type: [String, Object],
  26 + });
  27 + }
  28 +
  29 + static get VNodeChild() {
  30 + return toValidableType('VNodeChild', {
  31 + type: undefined,
  32 + });
  33 + }
  34 +}
34 35 export { propTypes };
... ...