报这个错误的原因是DatePicker回显的时候格式要求必须是Date类型,不能是string类型,因此只要把回显值和自己保存的值的格式正确了就不会报与之相关的错误;
import dayjs from 'dayjs';
let operator = context.getFieldValue([
conditionFormPropName.conditionsFieldList,
index,
conditionFormPropName.conditionFieldListItem.optionalOperator,
]);
operator = isNullOrUndefined(operator) ? undefined : operator.toLowerCase();
switch (operator) {
case ComparisonOps.RANGE: {
let dateValue = context.getFieldValue([
conditionFormPropName.conditionsFieldList,
index,
conditionFormPropName.conditionFieldListItem.value,
]);
return (
<ProFormDateRangePicker
name={[
conditionFormPropName.conditionsFieldList,
index,
conditionFormPropName.conditionFieldListItem.value,
]}
fieldProps={{
style: { width: 284, height: '32px' },
format: 'YYYY-MM-DD',
value:
dateValue?.length === 2
? (dateValue.map((date: any) => dayjs(date)) as any)
: undefined,
onChange(value, dateString) {
context.setFieldValue(
[
conditionFormPropName.conditionsFieldList,
index,
conditionFormPropName.conditionFieldListItem.value,
],
[
dayjs(dateString[0]).format('YYYY-MM-DD'),
dayjs(dateString[1]).format('YYYY-MM-DD'),
],
);
},
}}
/>
);
}
default: {
let dateValue = context.getFieldValue([
conditionFormPropName.conditionsFieldList,
index,
conditionFormPropName.conditionFieldListItem.value,
]);
return (
<ProFormDatePicker
colProps={{ xl: 8, md: 12 }}
name={[
conditionFormPropName.conditionsFieldList,
index,
conditionFormPropName.conditionFieldListItem.value,
]}
fieldProps={{
style: { width: 284, height: '32px' },
format: 'YYYY-MM-DD',
value: dateValue?.length ? dayjs(dateValue[0]) : undefined,
onChange(value, dateString) {
context.setFieldValue(
[
conditionFormPropName.conditionsFieldList,
index,
conditionFormPropName.conditionFieldListItem.value,
],
[dayjs(dateString).format('YYYY-MM-DD')],
);
},
}}
/>
);
}
}