diff --git a/src/utils/index.d.ts b/src/utils/index.d.ts index fc26660..75703e6 100644 --- a/src/utils/index.d.ts +++ b/src/utils/index.d.ts @@ -345,14 +345,14 @@ export function processTreeDataForOnlyLastLevel( /** * 验证结束时间是否大于开始时间 */ -export function validatorEndTime(timeStart: string, message?: string): { +export function validatorEndTime(options: { timeStart: string; message?: string; type?: "date" | "datetime" }): { validator: (_: any, value: any) => Promise; }; /** * 验证时间是否大于等于当前时间 */ -export function validatorTimeGTCurrentDay(message?: string): { +export function validatorTimeGTCurrentDay(options?: { message?: string; type?: "date" | "datetime" }): { validator: (_: any, value: any) => Promise; }; diff --git a/src/utils/index.js b/src/utils/index.js index 628b9ca..68e596d 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -486,10 +486,26 @@ export function processTreeDataForOnlyLastLevel(options) { /** * 验证结束时间是否大于开始时间 */ -export function validatorEndTime(timeStart, message = "结束时间不能早于开始时间") { +export function validatorEndTime(options) { + let { timeStart, message = "结束时间不能早于开始时间", type = "" } = options; + return { validator: (_, value) => { - if (value && timeStart && value < timeStart) + if (!value || !timeStart) + return Promise.resolve(); + + const dateOnlyRegex = /^\d{4}-\d{2}-\d{2}$/; + const dateTimeRegex = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/; + if (!type) { + if (dateOnlyRegex.test(timeStart)) + type = "date"; + else if (dateTimeRegex.test(timeStart)) + type = "datetime"; + } + + const selectedDate = dayjs.isDayjs(value) ? value : dayjs(value); + + if (selectedDate.isBefore(dayjs(timeStart), type === "date" ? "day" : "seconds")) return Promise.reject(message); else return Promise.resolve(); @@ -500,10 +516,15 @@ export function validatorEndTime(timeStart, message = "结束时间不能早于 /** * 验证时间是否大于等于当前时间 */ -export function validatorTimeGTCurrentDay(message = "需要大于当前时间") { +export function validatorTimeGTCurrentDay(options) { + const { message = "需要大于当前时间", type = "date" } = options; return { validator: (_, value) => { - if (value && value <= dayjs().format("YYYY-MM-DD HH:mm:ss")) + if (!value) + return Promise.resolve(); + + const selectedDate = dayjs.isDayjs(value) ? value : dayjs(value); + if (selectedDate.isBefore(dayjs(), type === "date" ? "day" : "seconds")) return Promise.reject(message); else return Promise.resolve();