mirror of
https://gitee.com/nocobase/nocobase.git
synced 2024-12-02 04:07:50 +08:00
fix: formula field adaptation time field (#5168)
This commit is contained in:
parent
bf82c79c22
commit
4f56b0e559
@ -18,8 +18,8 @@ import {
|
|||||||
useCollection_deprecated,
|
useCollection_deprecated,
|
||||||
useCollectionManager_deprecated,
|
useCollectionManager_deprecated,
|
||||||
useFormBlockContext,
|
useFormBlockContext,
|
||||||
ActionContext,
|
|
||||||
} from '@nocobase/client';
|
} from '@nocobase/client';
|
||||||
|
import _ from 'lodash';
|
||||||
import { Evaluator, evaluators } from '@nocobase/evaluators/client';
|
import { Evaluator, evaluators } from '@nocobase/evaluators/client';
|
||||||
import { Registry, toFixedByStep } from '@nocobase/utils/client';
|
import { Registry, toFixedByStep } from '@nocobase/utils/client';
|
||||||
import React, { useEffect, useState, useContext } from 'react';
|
import React, { useEffect, useState, useContext } from 'react';
|
||||||
@ -61,6 +61,22 @@ function getValuesByPath(values, key, index?) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function areValuesEqual(value1, value2) {
|
||||||
|
if (_.isString(value1) && !isNaN(Date.parse(value1))) {
|
||||||
|
value1 = new Date(value1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_.isString(value2) && !isNaN(Date.parse(value2))) {
|
||||||
|
value2 = new Date(value2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_.isDate(value1) && _.isDate(value2)) {
|
||||||
|
return value1.getTime() === value2.getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
return _.isEqual(value1, value2);
|
||||||
|
}
|
||||||
|
|
||||||
export function Result(props) {
|
export function Result(props) {
|
||||||
const { value, ...others } = props;
|
const { value, ...others } = props;
|
||||||
const fieldSchema = useFieldSchema();
|
const fieldSchema = useFieldSchema();
|
||||||
@ -99,11 +115,16 @@ export function Result(props) {
|
|||||||
setEditingValue(v);
|
setEditingValue(v);
|
||||||
}
|
}
|
||||||
setEditingValue(v);
|
setEditingValue(v);
|
||||||
if (v !== field.value) {
|
|
||||||
field.value = v;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!areValuesEqual(field.value, editingValue)) {
|
||||||
|
setTimeout(() => {
|
||||||
|
field.value = editingValue;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, [editingValue]);
|
||||||
const Component = TypedComponents[dataType] ?? InputString;
|
const Component = TypedComponents[dataType] ?? InputString;
|
||||||
return (
|
return (
|
||||||
<Component {...others} value={dataType === 'double' ? toFixedByStep(editingValue, props.step) : editingValue} />
|
<Component {...others} value={dataType === 'double' ? toFixedByStep(editingValue, props.step) : editingValue} />
|
||||||
|
@ -151,7 +151,7 @@ export const DataTypeTransformers = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export function toDbType(value: any, type: string) {
|
export function toDbType(value: any, type: string) {
|
||||||
if (value == null) {
|
if (value == null || (!value && type === 'date')) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user