fix(form): ensure that the DateTime component checked properly,fix #511
This commit is contained in:
parent
16ecf71850
commit
cb35341b8f
|
|
@ -170,8 +170,8 @@
|
||||||
if (component.includes('Input') || component.includes('Textarea')) {
|
if (component.includes('Input') || component.includes('Textarea')) {
|
||||||
rule.whitespace = true;
|
rule.whitespace = true;
|
||||||
}
|
}
|
||||||
|
const valueFormat = unref(getComponentsProps)?.valueFormat;
|
||||||
setComponentRuleType(rule, component);
|
setComponentRuleType(rule, component, valueFormat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -203,9 +203,7 @@
|
||||||
if (propsData[eventKey]) {
|
if (propsData[eventKey]) {
|
||||||
propsData[eventKey](e);
|
propsData[eventKey](e);
|
||||||
}
|
}
|
||||||
|
|
||||||
const target = e ? e.target : null;
|
const target = e ? e.target : null;
|
||||||
|
|
||||||
const value = target ? (isCheck ? target.checked : target.value) : e;
|
const value = target ? (isCheck ? target.checked : target.value) : e;
|
||||||
props.setFormModel(field, value);
|
props.setFormModel(field, value);
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
import type { ValidationRule } from 'ant-design-vue/lib/form/Form';
|
import type { ValidationRule } from 'ant-design-vue/lib/form/Form';
|
||||||
import type { ComponentType } from './types/index';
|
import type { ComponentType } from './types/index';
|
||||||
import { useI18n } from '/@/hooks/web/useI18n';
|
import { useI18n } from '/@/hooks/web/useI18n';
|
||||||
import { isNumber } from '/@/utils/is';
|
import { dateUtil } from '/@/utils/dateUtil';
|
||||||
|
import { isNumber, isObject } from '/@/utils/is';
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
|
@ -28,13 +29,19 @@ export function createPlaceholderMessage(component: ComponentType) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const DATE_TYPE = ['DatePicker', 'MonthPicker', 'WeekPicker', 'TimePicker'];
|
||||||
|
|
||||||
function genType() {
|
function genType() {
|
||||||
return ['DatePicker', 'MonthPicker', 'RangePicker', 'WeekPicker', 'TimePicker'];
|
return [...DATE_TYPE, 'RangePicker'];
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setComponentRuleType(rule: ValidationRule, component: ComponentType) {
|
export function setComponentRuleType(
|
||||||
|
rule: ValidationRule,
|
||||||
|
component: ComponentType,
|
||||||
|
valueFormat: string
|
||||||
|
) {
|
||||||
if (['DatePicker', 'MonthPicker', 'WeekPicker', 'TimePicker'].includes(component)) {
|
if (['DatePicker', 'MonthPicker', 'WeekPicker', 'TimePicker'].includes(component)) {
|
||||||
rule.type = 'object';
|
rule.type = valueFormat ? 'string' : 'object';
|
||||||
} else if (['RangePicker', 'Upload', 'CheckboxGroup', 'TimePicker'].includes(component)) {
|
} else if (['RangePicker', 'Upload', 'CheckboxGroup', 'TimePicker'].includes(component)) {
|
||||||
rule.type = 'array';
|
rule.type = 'array';
|
||||||
} else if (['InputNumber'].includes(component)) {
|
} else if (['InputNumber'].includes(component)) {
|
||||||
|
|
@ -42,6 +49,15 @@ export function setComponentRuleType(rule: ValidationRule, component: ComponentT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function processDateValue(attr: Recordable, component: string) {
|
||||||
|
const { valueFormat, value } = attr;
|
||||||
|
if (valueFormat) {
|
||||||
|
attr.value = isObject(value) ? dateUtil(value).format(valueFormat) : value;
|
||||||
|
} else if (DATE_TYPE.includes(component) && value) {
|
||||||
|
attr.value = dateUtil(attr.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function handleInputNumberValue(component?: ComponentType, val?: any) {
|
export function handleInputNumberValue(component?: ComponentType, val?: any) {
|
||||||
if (!component) return val;
|
if (!component) return val;
|
||||||
if (['Input', 'InputPassword', 'InputSearch', 'InputTextArea'].includes(component)) {
|
if (['Input', 'InputPassword', 'InputSearch', 'InputTextArea'].includes(component)) {
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,12 @@ export function useFormEvents({
|
||||||
}
|
}
|
||||||
formModel[key] = arr;
|
formModel[key] = arr;
|
||||||
} else {
|
} else {
|
||||||
formModel[key] = value ? dateUtil(value) : null;
|
const { componentProps } = schema || {};
|
||||||
|
let _props = componentProps as any;
|
||||||
|
if (typeof componentProps === 'function') {
|
||||||
|
_props = _props();
|
||||||
|
}
|
||||||
|
formModel[key] = value ? (_props?.valueFormat ? value : dateUtil(value)) : null;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
formModel[key] = value;
|
formModel[key] = value;
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,18 @@
|
||||||
},
|
},
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: 'field33',
|
||||||
|
component: 'DatePicker',
|
||||||
|
label: '字段33',
|
||||||
|
colProps: {
|
||||||
|
span: 8,
|
||||||
|
},
|
||||||
|
componentProps: {
|
||||||
|
valueFormat: 'YYYY-MM-DD',
|
||||||
|
},
|
||||||
|
rules: [{ required: true, type: 'string' }],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
field: 'field44',
|
field: 'field44',
|
||||||
component: 'InputCountDown',
|
component: 'InputCountDown',
|
||||||
|
|
@ -95,7 +107,7 @@
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'field44',
|
field: 'field441',
|
||||||
component: 'Input',
|
component: 'Input',
|
||||||
label: '自定义校验',
|
label: '自定义校验',
|
||||||
colProps: {
|
colProps: {
|
||||||
|
|
@ -198,6 +210,8 @@
|
||||||
field1: 1111,
|
field1: 1111,
|
||||||
field5: ['1'],
|
field5: ['1'],
|
||||||
field7: '1',
|
field7: '1',
|
||||||
|
field33: '2020-12-12',
|
||||||
|
field3: '2020-12-12',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue