import type { ManipulateType } from 'dayjs'; import * as dayjs from 'dayjs'; import { FieldInfo } from "../../types/basic"; import { setByPaths } from './dataPath'; const now = () => dayjs.default() export const buildDefaultValue = (fields: FieldInfo[]) => { const defaultValue = {} let fieldValue: any; fields.forEach(field => { const valueType = field.valueType if(valueType === 'switch') { fieldValue = field.defaultValue?.length && field.defaultValue === 'true' } else if ((valueType === 'dateTime' || valueType === 'date')) { if (field.dateDefaultValue) { let date; if (field.dateDefaultValue.defaultValue === 'TODAY') { date = now().startOf('day'); } else if (field.dateDefaultValue.defaultValue === 'MONTH_START') { date = now().startOf('month'); } else if (field.dateDefaultValue.defaultValue === 'MONTH_END') { date = now().endOf('month'); } else if (field.dateDefaultValue.defaultValue === 'YEAR_START') { date = now().startOf('year'); } else if (field.dateDefaultValue.defaultValue === 'YEAR_END') { date = now().endOf('year'); } else if (field.dateDefaultValue.defaultValue === 'CURRENT_WEEK_MONDAY') { date = now().startOf('week'); } else if (field.dateDefaultValue.defaultValue === 'CURRENT_WEEK_TUESDAY') { date = now().startOf('week').add(1, 'day'); } else if (field.dateDefaultValue.defaultValue === 'CURRENT_WEEK_WEDNESDAY') { date = now().startOf('week').add(2, 'day'); } else if (field.dateDefaultValue.defaultValue === 'CURRENT_WEEK_THURSDAY') { date = now().startOf('week').add(3, 'day'); } else if (field.dateDefaultValue.defaultValue === 'CURRENT_WEEK_FRIDAY') { date = now().startOf('week').add(4, 'day'); } else if (field.dateDefaultValue.defaultValue === 'CURRENT_WEEK_SATURDAY') { date = now().startOf('week').add(5, 'day'); } else if (field.dateDefaultValue.defaultValue === 'CURRENT_WEEK_SUNDAY') { date = now().startOf('week').add(6, 'day'); } else { date = now() } if (field.dateDefaultValue.offset) { // type DateOffsetUnit = 'SECONDS' | 'MINUTES' | 'HOURS' | 'DAYS' | 'WEEKS' | 'MONTHS' | 'YEARS' let addUnit: ManipulateType = 'second'; if (field.dateDefaultValue.offsetUnit === 'SECONDS') { addUnit = 'second' } else if (field.dateDefaultValue.offsetUnit === 'MINUTES') { addUnit = 'minute' } else if (field.dateDefaultValue.offsetUnit === 'HOURS') { addUnit = 'hour' } else if (field.dateDefaultValue.offsetUnit === 'DAYS') { addUnit = 'day' } else if (field.dateDefaultValue.offsetUnit === 'WEEKS') { addUnit = 'week' } else if (field.dateDefaultValue.offsetUnit === 'MONTHS') { addUnit = 'month' } else if (field.dateDefaultValue.offsetUnit === 'YEARS') { addUnit = 'year' } date = date.add(field.dateDefaultValue.offset, addUnit) } fieldValue = date } } else { fieldValue = field.defaultValue } setByPaths(defaultValue, field.dataIndex, fieldValue) }) return defaultValue }