From ee58cc8f7a5d2b7b73721598453b220a701209a1 Mon Sep 17 00:00:00 2001 From: harrywan Date: Mon, 1 Jun 2026 20:48:53 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(date-picker):=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E7=B2=BE=E7=A1=AE=E5=88=B0=E5=B0=8F=E6=97=B6=E5=92=8C=E5=88=86?= =?UTF-8?q?=E9=92=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #913 --- components/date-picker/pickerHandler.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/components/date-picker/pickerHandler.ts b/components/date-picker/pickerHandler.ts index c66dd662..f105ece4 100644 --- a/components/date-picker/pickerHandler.ts +++ b/components/date-picker/pickerHandler.ts @@ -4,6 +4,7 @@ import type { DateObj } from './interface'; export const PickerType = { date: 'date', datetime: 'datetime', + datehour: 'datehour', datemultiple: 'datemultiple', daterange: 'daterange', datetimerange: 'datetimerange', @@ -62,6 +63,18 @@ export class DateTimePicker implements Picker { } } +export class DateHourMinutePicker implements Picker { + name = PickerType.datehour; + confirmLang = 'datePicker.today'; + placeholderLang = 'datePicker.selectDateTime'; + format = 'yyyy-MM-dd HH:mm'; + isRange = false; + hasTime = true; + getDateFromStr(val: string): Date { + return new Date(val); + } +} + class DateRange { getLeftActiveDate(rightActiveDate: number) { const endDate = new Date(rightActiveDate); @@ -198,6 +211,8 @@ export function pickerFactory(type: string): Picker { return new DatePicker(); case PickerType.datetime: return new DateTimePicker(); + case PickerType.datehour: + return new DateHourMinutePicker(); case PickerType.datemultiple: return new DateMultiplePicker(); case PickerType.daterange: From 24d3fbabcf6443ee31cd10f482848ec83a2777bf Mon Sep 17 00:00:00 2001 From: harrywan Date: Mon, 1 Jun 2026 23:56:32 +0800 Subject: [PATCH 2/2] =?UTF-8?q?test(date-picker):=20=E4=B8=BA=20#913=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20vitest=20=E5=8D=95=E6=B5=8B=E3=80=81playwr?= =?UTF-8?q?ight=20e2e=20=E5=92=8C=20CHANGELOG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../__tests__/datehour-913.spec.ts | 21 +++++++++++++++++++ .../components/datePicker/datehour.vue | 16 ++++++++++++++ .../.vitepress/components/datePicker/index.md | 4 ++++ 4 files changed, 42 insertions(+) create mode 100644 components/date-picker/__tests__/datehour-913.spec.ts create mode 100644 docs/.vitepress/components/datePicker/datehour.vue diff --git a/CHANGELOG.md b/CHANGELOG.md index f6de2065..77c3c059 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ ### Features * include documents in npm package for ai agents ([#960](https://github.com/WeBankFinTech/fes-design/issues/960)) ([3cc476c](https://github.com/WeBankFinTech/fes-design/commit/3cc476c81fb652c7fc3887884d99b46a02de0b74)) +* feat(date-picker): 支持精确到小时和分钟 ([#913](https://github.com/WeBankFinTech/fes-design/issues/913)) diff --git a/components/date-picker/__tests__/datehour-913.spec.ts b/components/date-picker/__tests__/datehour-913.spec.ts new file mode 100644 index 00000000..79ea5f54 --- /dev/null +++ b/components/date-picker/__tests__/datehour-913.spec.ts @@ -0,0 +1,21 @@ +import { describe, expect, it } from 'vitest'; +import { PickerType, pickerFactory, DateHourMinutePicker } from '../pickerHandler'; + +describe('datehour picker', () => { + it('should have datehour in PickerType', () => { + expect(PickerType.datehour).toBe('datehour'); + }); + + it('DateHourMinutePicker should have correct format', () => { + const picker = new DateHourMinutePicker(); + expect(picker.format).toBe('yyyy-MM-dd HH:mm'); + expect(picker.name).toBe(PickerType.datehour); + expect(picker.hasTime).toBe(true); + }); + + it('pickerFactory should create DateHourMinutePicker for datehour type', () => { + const picker = pickerFactory(PickerType.datehour); + expect(picker).toBeInstanceOf(DateHourMinutePicker); + expect(picker.format).toBe('yyyy-MM-dd HH:mm'); + }); +}); \ No newline at end of file diff --git a/docs/.vitepress/components/datePicker/datehour.vue b/docs/.vitepress/components/datePicker/datehour.vue new file mode 100644 index 00000000..8db56755 --- /dev/null +++ b/docs/.vitepress/components/datePicker/datehour.vue @@ -0,0 +1,16 @@ + + + \ No newline at end of file diff --git a/docs/.vitepress/components/datePicker/index.md b/docs/.vitepress/components/datePicker/index.md index 91339299..76bb2015 100644 --- a/docs/.vitepress/components/datePicker/index.md +++ b/docs/.vitepress/components/datePicker/index.md @@ -44,6 +44,10 @@ app.use(DatePicker); --DEFAULTTIME +### 精确到小时和分钟 + +--datehour + --CODE ## Props