This commit is contained in:
vben 2023-04-04 17:14:06 +08:00
commit c2590cbfb5
4 changed files with 25 additions and 24 deletions

View File

@ -17,9 +17,9 @@
}, },
"scripts": { "scripts": {
"bootstrap": "pnpm install", "bootstrap": "pnpm install",
"build": "cross-env NODE_ENV=production vite build && esno ./build/script/postBuild.ts", "build": "cross-env NODE_OPTIONS=--max-old-space-size=8192 NODE_ENV=production vite build && esno ./build/script/postBuild.ts",
"build:no-cache": "pnpm clean:cache && npm run build", "build:no-cache": "pnpm clean:cache && npm run build",
"build:test": "cross-env vite build --mode test && esno ./build/script/postBuild.ts", "build:test": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build --mode test && esno ./build/script/postBuild.ts",
"clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite", "clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite",
"clean:lib": "rimraf node_modules", "clean:lib": "rimraf node_modules",
"commit": "czg", "commit": "czg",

View File

@ -14,7 +14,7 @@ import {
import { deepMerge } from '/@/utils'; import { deepMerge } from '/@/utils';
import { dateItemType, handleInputNumberValue, defaultValueComponents } from '../helper'; import { dateItemType, handleInputNumberValue, defaultValueComponents } from '../helper';
import { dateUtil } from '/@/utils/dateUtil'; import { dateUtil } from '/@/utils/dateUtil';
import { cloneDeep, set, uniqBy } from 'lodash-es'; import { cloneDeep, set, uniqBy, get } from 'lodash-es';
import { error } from '/@/utils/log'; import { error } from '/@/utils/log';
interface UseFormActionContext { interface UseFormActionContext {
@ -112,9 +112,8 @@ export function useFormEvents({
const validKeys: string[] = []; const validKeys: string[] = [];
fields.forEach((key) => { fields.forEach((key) => {
const schema = unref(getSchema).find((item) => item.field === key); const schema = unref(getSchema).find((item) => item.field === key);
let value = values[key]; let value = get(values, key);
const hasKey = !!get(values, key);
const hasKey = Reflect.has(values, key);
value = handleInputNumberValue(schema?.component, value); value = handleInputNumberValue(schema?.component, value);
const { componentProps } = schema || {}; const { componentProps } = schema || {};

View File

@ -3,7 +3,7 @@ import type { App, Component } from 'vue';
import { unref } from 'vue'; import { unref } from 'vue';
import { isArray, isObject } from '/@/utils/is'; import { isArray, isObject } from '/@/utils/is';
import { cloneDeep, mergeWith } from 'lodash-es'; import { cloneDeep, isEqual, mergeWith, unionWith } from 'lodash-es';
export const noop = () => {}; export const noop = () => {};
@ -48,7 +48,8 @@ export function deepMerge<T extends object | null | undefined, U extends object
return mergeWith(cloneDeep(target), source, (objValue, srcValue) => { return mergeWith(cloneDeep(target), source, (objValue, srcValue) => {
if (isObject(objValue) && isObject(srcValue)) { if (isObject(objValue) && isObject(srcValue)) {
return mergeWith(cloneDeep(objValue), srcValue, (prevValue, nextValue) => { return mergeWith(cloneDeep(objValue), srcValue, (prevValue, nextValue) => {
return isArray(prevValue) ? prevValue.concat(nextValue) : undefined; // 如果是数组,合并数组(去重) If it is an array, merge the array (remove duplicates)
return isArray(prevValue) ? unionWith(prevValue, nextValue, isEqual) : undefined;
}); });
} }
}); });

View File

@ -1,5 +1,5 @@
import { CSSProperties, VNodeChild } from 'vue'; import { CSSProperties, VNodeChild } from 'vue';
import { createTypes, VueTypeValidableDef, VueTypesInterface } from 'vue-types'; import { createTypes, VueTypeValidableDef, VueTypesInterface, toValidableType } from 'vue-types';
export type VueNode = VNodeChild | JSX.Element; export type VueNode = VNodeChild | JSX.Element;
@ -8,8 +8,7 @@ type PropTypes = VueTypesInterface & {
readonly VNodeChild: VueTypeValidableDef<VueNode>; readonly VNodeChild: VueTypeValidableDef<VueNode>;
// readonly trueBool: VueTypeValidableDef<boolean>; // readonly trueBool: VueTypeValidableDef<boolean>;
}; };
const newPropTypes = createTypes({
const propTypes = createTypes({
func: undefined, func: undefined,
bool: undefined, bool: undefined,
string: undefined, string: undefined,
@ -18,17 +17,19 @@ const propTypes = createTypes({
integer: undefined, integer: undefined,
}) as PropTypes; }) as PropTypes;
propTypes.extend([ // 从 vue-types v5.0 开始extend()方法已经废弃当前已改为官方推荐的ES6+方法 https://dwightjack.github.io/vue-types/advanced/extending-vue-types.html#the-extend-method
{ class propTypes extends newPropTypes {
name: 'style', // a native-like validator that supports the `.validable` method
getter: true, static get style() {
type: [String, Object], return toValidableType('style', {
default: undefined, type: [String, Object],
}, });
{ }
name: 'VNodeChild',
getter: true, static get VNodeChild() {
type: undefined, return toValidableType('VNodeChild', {
}, type: undefined,
]); });
}
}
export { propTypes }; export { propTypes };