--- name: date-picker-component overview: 在 fms-vue 组件库中新增 DatePicker(单日期,支持时间)与 RangePicker(日期范围,支持时间)两个组件,复用现有 Popover 作为弹层,使用 dayjs 处理格式化(format 展示格式、valueFormat 绑定值格式),沿用现有 SCSS 主题体系。暂不做快捷选项与 disabledDate。 design: architecture: framework: vue component: tdesign styleKeywords: - Enterprise - Clean - Form-Control - Theme-Aware fontSystem: fontFamily: PingFang SC heading: size: 16px weight: 600 subheading: size: 14px weight: 500 body: size: 13px weight: 400 colorSystem: primary: - "#2563EB" - "#3B82F6" background: - "#FFFFFF" - "#F8FAFC" text: - "#1E293B" - "#64748B" functional: - "#22C55E" - "#EF4444" - "#F1F5F9" todos: - id: add-dayjs-dep content: 在 package.json 增加 dayjs 依赖并安装 status: completed - id: create-date-utils content: 新建 date-utils.js,基于 dayjs 实现 format/parse/矩阵等纯函数 status: completed dependencies: - add-dayjs-dep - id: create-calendar-panel content: 新建 calendar-panel.vue 共享月历与时间选择面板 status: completed dependencies: - create-date-utils - id: create-date-picker content: 新建 date-picker.vue 单个日期时间选择器 status: completed dependencies: - create-calendar-panel - id: create-range-picker content: 新建 range-picker.vue 范围选择器含 hover 预览 status: completed dependencies: - create-calendar-panel - id: create-date-scss content: 新建 index.scss 沿用主题变量完成样式 status: completed dependencies: - create-calendar-panel - create-date-picker - create-range-picker - id: add-demo-verify content: 在 App.vue 增加演示区块并运行 lint/fmt 验证 status: completed dependencies: - create-date-picker - create-range-picker - create-date-scss --- ## 用户需求 在 fms-vue 组件库中新增 Date 日期选择组件,包含单个日期选择(DatePicker)与范围选择(RangePicker),并支持时间(时分秒)选择。 ## 产品概述 组件以「只读输入框触发器 + 点击弹出面板」形式工作,面板复用现有 Popover 组件。DatePicker 选择单个日期时间,RangePicker 选择起止区间。两者共享一个日历面板组件。用户可在输入框看到按 format 格式化后的文本,选中后通过 v-model(或 valueFormat 字符串)回传值。 ## 核心特性 - 单个日期时间选择(DatePicker)与范围选择(RangePicker) - 点击输入框弹出日历面板,复用 Popover(manual 受控、followTriggerWidth、点击外部/Esc 关闭、定位翻转) - 支持 format 设置展示格式(数组时多格式匹配,以第一个为准,参考 dayjs#format);valueFormat 设置绑定值格式(设为后 value/defaultValue/v-model 可为字符串,change 返回同格式字符串) - 支持时间选择(时/分/秒),showTime 控制 - 日历面板:年月切换、星期表头、日期网格(含上下月补位)、今日标记、选中态、范围区间高亮与 hover 预览 - 清除按钮(clearable)、禁用态(disabled)、占位符(placeholder) - 沿用现有 SCSS 主题变量与暗色/主题切换体系 - 日期处理使用 dayjs - 暂不做:快捷选项(presets)、disabledDate 禁用日期(面板预留 disabled 钩子) ## 技术栈 - 框架:Vue 3.5 + `