Files
time-tracking-system-nodejs/gpt/1.md

8.8 KiB
Raw Blame History

🧭 工时统计系统 Web UI 设计建议(供实现参考)

一、总体设计思路

目标: 构建一个简洁、专业、响应式的企业级工时统计系统前端界面,满足以下目标:

  • 清晰展示工时记录、统计趋势与项目分布;
  • 操作流程自然,减少学习成本;
  • 支持桌面端优先设计Desktop-first后续可拓展移动端适配。

整体风格参考 IBM Carbon Design SystemMaterial 3 规范。


二、界面架构结构

顶层结构Layout Skeleton

┌───────────────────────────────────────────────────────┐
│ 顶部导航栏Header / Navbar                        │
├───────────────────────────────────────────────────────┤
│ 主内容区Main Content                              │
│   ├─ 侧边导航栏(可选)                               │
│   └─ 内容容器(根据页面不同加载不同模块)             │
├───────────────────────────────────────────────────────┤
│ 页脚Footer                                        │
└───────────────────────────────────────────────────────┘

三、导航栏设计Header

内容结构

[Logo 工时统计系统]     首页 | 工时记录 | 添加记录 | 报表 | 设置     [用户头像 ⬇]

功能要求:

  • Logo + 系统标题在左侧。
  • 中间为导航菜单,使用高亮(底部边框或字体加粗)指示当前页面。
  • 右上角为用户区域,下拉菜单包含:个人信息、登出。
  • 固定顶部sticky header

样式建议:

  • 背景:#0F62FEIBM 蓝)或白底 + 蓝色字体
  • 字体颜色:白色(深色模式)或深灰(亮色模式)
  • 高度64px
  • 阴影:box-shadow: 0 2px 4px rgba(0,0,0,0.1)

四、主要页面设计

1 首页Dashboard

布局结构:

┌──────────────────────────────────────────────────┐
│ 工时总览Summary Cards                        │
│ [本周工时] [本月工时] [平均每日工时]             │
├──────────────────────────────────────────────────┤
│ 项目统计Project Distribution                 │
│ 条形图或环形图展示各项目工时占比                 │
├──────────────────────────────────────────────────┤
│ 本月趋势Trend Chart                          │
│ 折线图X轴=日期 / Y轴=工时                      │
└──────────────────────────────────────────────────┘

交互说明:

  • 图表悬浮时显示 Tooltip项目名 + 工时数)。
  • 点击项目可跳转至“工时记录”并自动筛选该项目。

组件建议:

  • 使用 ECharts 或 Chart.js 实现可视化。
  • 三列信息卡使用相同宽度与阴影,居中排列。

2 工时记录页Timesheet List

布局结构:

筛选栏
┌─────────────────────────────┐
│ 日期范围 | 员工 | 项目 | 状态 | [查询] [重置] │
└─────────────────────────────┘

工时表格
┌────────────────────────────────────────────────────┐
│ 日期 | 员工 | 项目 | 工时 | 状态 | 备注 | 操作     │
├────────────────────────────────────────────────────┤
│ ... 数据 ...                                       │
└────────────────────────────────────────────────────┘

操作区
[ 添加记录 ] [ 编辑选中 ] [ 删除选中 ] [ 导出 Excel ]

交互说明:

  • 表格支持分页、排序、筛选。
  • 点击行可展开详细信息。
  • “导出 Excel”按钮执行文件下载。

3 添加工时记录页Form

布局:

员工姓名: [___________]       日期: [YYYY-MM-DD]
项目选择: [___________ ▼]     工时(小时): [____]
备注: [__________________________________________]

[ 保存记录 ] [ 重置表单 ] [ 返回列表 ]

交互逻辑:

  • 保存前表单验证:必填项(姓名、日期、项目、工时);
  • 保存成功后提示 “保存成功” Toast
  • 重置按钮清空输入;
  • 返回列表跳转至工时记录页。

4 报表页Reports

布局建议:左右分栏结构

┌──────────────┬──────────────────────────┐
│ 月度趋势图   │ 项目占比环形图           │
│ 折线图       │ 饼/环形图                │
│ 周1~周4数据  │ 各项目百分比             │
└──────────────┴──────────────────────────┘

[ 导出 PDF ] [ 返回首页 ]

说明:

  • 图表均带 Hover Tooltip
  • 支持导出 PNG / PDF 报表。

5 设置页Settings

模块划分:

  1. 个人信息(可编辑姓名、邮箱、部门)
  2. 系统偏好(主题、语言、时间格式)

UI 布局:

┌────────────────────────────────┐
│ 个人信息                       │
│ 姓名: [张三]  邮箱: [zhang@ibm.com] │
│ 部门: [开发部]  角色: [管理员]     │
└────────────────────────────────┘

┌────────────────────────────────┐
│ 系统设置                       │
│ 语言: [中文 ▼]                 │
│ 主题: [亮色 ☐ 暗色 ☑]          │
│ 时间显示: [24小时制 ☑]         │
└────────────────────────────────┘

[ 保存设置 ]

五、页脚Footer

内容:

© 2025 工时统计系统 | Powered by IBM Engineering

固定在底部,字体较小、灰色,左右居中。


六、视觉规范Visual Guideline

元素类型 建议样式
主色调 IBM 蓝 #0F62FE
辅助色 灰色背景 #F4F4F4
字体 IBM Plex Sans, 14px, 400 weight
卡片 白底 + 阴影 0 1px 3px rgba(0,0,0,0.1)
按钮 圆角 6px主按钮蓝底白字次按钮灰底黑字
表格 条纹行、悬浮高亮行、分页控件底部对齐
表单控件 输入框圆角 4px聚焦高亮边框蓝色
动效 Hover、点击反馈 100ms ease-in-out

七、响应式设计

  • ≥1280px桌面端:三列卡片布局,图表并列显示。
  • 768px1279px平板端:卡片两列布局,图表堆叠。
  • ≤767px手机端:所有模块垂直排列,表格滚动横向显示。

八、交互与反馈

事件 响应
保存成功 Toast 弹窗提示
删除操作 二次确认对话框
表单错误 红色提示文本
导出操作 文件下载
数据加载 Skeleton 骨架屏

九、技术栈建议(可选)

前端建议:

  • 框架React + Vite 或 Next.js
  • UI 库IBM Carbon Components / MUI
  • 图表ECharts / Chart.js
  • 状态管理Zustand 或 Redux Toolkit
  • 样式Tailwind / SCSS

十、补充说明

为方便后续扩展,建议在 UI 层使用组件化设计:

  • <TimesheetTable />
  • <WorktimeForm />
  • <DashboardCards />
  • <ReportCharts />
  • <SettingsPanel />

所有交互(保存、查询、导出)应以统一的消息提示组件反馈。