WeekToDo 个性化plus版改造


WeekToDo 个性化改造版

基于 WeekToDo 修改的个性化版本,覆盖任务用时统计、拖动与迁移区分、四象限视图、统计页面、打印优化、S3 手动同步等改造。所有改动均在原有架构内完成,未引入额外依赖。

与原版的差异

功能原版改造版
任务用时无记录起点与完成时刻,悬浮显示用时
拖动 / 迁移只改所属日期拖动可重置起点,系统迁移起点不变
迁移任务无标识紫色图标标识,统计页可筛选
上午 / 下午不分组按 13:00 分界,视觉分组
四象限视图无独立页面,按重要/紧急展示
统计页面无支持筛选、排序、周/月聚合、导出 CSV
打印整页打印A4 横版,只打印当前周
S3 手动同步仅在设置中左侧图标栏一键推送
紧急阈值无可在设置中调整,默认 24 小时

功能说明

一、任务用时统计



每个任务记录三个时间字段:

字段类型说明
startDateYYYYMMDD 或 null用时起点日期
startTimeHH:mm用时起点时刻,默认 09:00
completedAt时间戳 或 null完成时刻

起点规则:startDate 的日期 + startTime 的时刻(无则 09:00)。

显示规则:

  • 未完成:终点 = 当前时间
  • 已完成:终点 = completedAt
  • 小于 48 小时:显示「X 小时」
  • 大于等于 48 小时:显示「X 天」

交互:

  • 鼠标悬浮任务:显示用时
  • 任务详情弹窗:显示开始日期(只读)、开始时刻(可编辑)、完成时间、总用时

二、拖动与系统迁移的区分

「用户拖动任务」和「系统自动迁移未完成任务」在数据层都是修改 listId,但语义不同:

  • 拖动:排期不合理,起点应跟着改
  • 迁移:任务一直没完成,起点不应改

触发规则:

场景是否弹窗处理
日期列表之间拖动弹窗询问「重置」→ startDate = 新 listId;「保留」→ startDate 不变
日期列表 → 自定义列表不弹窗startDate = null
自定义列表 → 日期列表不弹窗startDate = 新 listId
系统迁移不弹窗startDate 不变

三、迁移任务标识

新增字段 migratedFrom:

  • 首次迁移写入来源日期
  • 后续迁移不覆盖(保留最原始)
  • 用户拖动不变
  • 任务完成不清空

展示:

  • 列表:紫色箭头图标,hover 显示「从 MM-DD 迁移」
  • 悬浮面板:同样图标
  • 统计页:「迁移来源」列 + 筛选器 + 汇总卡片「迁移数」
  • 周总结:任务行加 [迁移自YYYYMMDD] 标记,AI 单独一段总结

四、上午 / 下午分组

规则:

  • 分界点:13:00
  • 分组依据:startTime(小于 13:00 → 上午;大于等于 13:00 → 下午)
  • 只对日期列表分组,自定义列表不分组
  • 空组不显示标签
  • 排序按项目原有规则

time 与 startTime 的联动(只在新建 / 复制时联动一次):

  • time 有值 → startTime = time
  • time 为空 → 按当前时间:小于 13:00 用 09:00,大于等于 13:00 用 13:00

之后两者独立,互不影响。

视觉:

  • 上午标签:琥珀色 #f0a020
  • 下午标签:靛蓝色 #4d9bff
  • 标签居中,左右带横线

五、四象限视图



定位:独立页面级视图,从左侧图标栏进入,主内容区切换显示。

判定规则:

象限条件
Q1 重要且紧急priorityLevel 为 L1 或 L2,且用时 > 阈值
Q2 重要不紧急priorityLevel 为 L1 或 L2,且用时 ≤ 阈值
Q3 紧急不重要其它,且用时 > 阈值
Q4 不重要不紧急其它,且用时 ≤ 阈值
  • 用时由 tasksHelper.getTaskDuration 计算
  • 阈值从设置读取,默认 24 小时,可在 8~168 之间调整

数据范围:

  • 只统计日期列表
  • 跟随主页当前显示周
  • 排除 done 和 cancelled

视觉:

  • 2×2 矩阵,四个象限拼成正方形
  • 象限配色:红 / 蓝 / 橙 / 灰
  • 卡片显示:优先级徽章 + 标题 + time + 迁移图标
  • 点击卡片 → 打开任务详情弹窗
  • 顶部有标题栏 + 返回按钮

六、统计页面

全屏 Modal,从左侧 bi-bar-chart-line 图标进入。

能力:

  • 筛选:日期范围、完成状态、所属列表、是否迁移
  • 排序:点表头切换
  • 视图:明细 / 按周聚合 / 按月聚合
  • 导出:CSV(带 BOM,避免 Excel 中文乱码)
  • 汇总卡片:任务数、总时长、平均时长、迁移数

七、PDF 打印优化

目标:

  • A4 横版
  • 只打印当前周
  • 标题大字写「周几」,下面小字写「MM月DD日」

实现:打印时动态生成只含当前周的简洁清单,打印完销毁。

呈现:

  • 7 列网格布局
  • 每天一列,标题 + 任务列表
  • 已完成任务加删除线
  • time 用小标签标出

八、S3 手动同步

左侧图标栏新增 bi-cloud-arrow-up 图标,位于「重新排序自定义列表」之后,只在 S3 已配置时显示。

行为:

  • 点击 → 调 s3Sync.syncToS3()(不检查 autoSync 开关)
  • 图标旋转表示同步中,防止重复点击
  • 成功 / 失败都用 Toast 提示

九、设置项扩展

新增:紧急阈值

  • 位置:设置 → 常规
  • 字段:urgentThresholdHours
  • 默认:24
  • 范围:8 ~ 168
  • 单位:小时
  • 存储:configRepository(LocalStorage,不同步 S3)
  • 影响:只影响四象限视图的「紧急」判定

数据迁移

首次启动新版本时自动执行 startDateMigration。

幂等标记:config.startDateMigrated

迁移内容(遍历 IndexedDB 所有任务):

  • startDate 未定义 → 补 listId(日期列表)或 null(自定义列表)
  • startTime 未定义 → 补 "09:00"
  • completedAt 未定义 → 已完成补当天 20:00,未完成补 null
  • migratedFrom 未定义 → 补 null
  • 遇到 createdAt → 直接删除

文件清单

修改:

  • src/helpers/tasksHelper.js
  • src/helpers/initialDataCreator.js
  • src/store/modules/todolist.store.js
  • src/migrations/migrations.js
  • src/repositories/configRepository.js
  • src/components/toDoList.vue
  • src/components/toDoItem.vue
  • src/components/activeToDo.vue
  • src/components/weeklySummary.vue
  • src/components/layout/sideBar.vue
  • src/views/toDoModal/toDoModal.vue
  • src/views/configModal.vue
  • src/App.vue
  • src/assets/languages/zh-CN.json
  • src/assets/languages/en.json

新建:

  • src/components/completionStats.vue
  • src/components/confirmResetStartDate.vue
  • src/components/quadrantView.vue

本地调试

环境要求:

  • Node.js 16.x(项目依赖 node-sass,不支持 Node 20+)
  • Yarn

启动:

yarn install
yarn run serve

浏览器打开 http://localhost:8080,支持热重载。

构建:

yarn run build

产物在 dist/ 目录。


Docker 部署

项目自带 Dockerfile(多阶段构建:Node 构建 + Nginx 托管)。原有 docker-compose.yml 只引用了远程镜像,不会根据本地代码重新构建。

更新流程:

  1. 在项目根目录构建本地镜像:
docker build -t weektodo-custom:1.0.0 .
  1. 修改 docker-compose.yml 里 image 指向本地镜像:
image: weektodo-custom:1.0.0
  1. 重建容器:
docker compose down
docker compose up -d

如果代码没更新,用 docker build --no-cache 强制重建。


使用方式

新建任务:

在日期列表的空白输入框中输入任务标题,回车。

  • 如果当前时间小于 13:00 → 归入上午,起点 09:00
  • 如果当前时间大于等于 13:00 → 归入下午,起点 13:00
  • 如果设置了 time → 起点 = time

编辑用时起点:

打开任务详情 → 点击「开始时刻」输入框 → 修改 → 保存。

拖动任务:

拖动任务到别的日期:

  • 日期列表之间拖动 → 弹出「是否重置开始日期」询问
  • 涉及自定义列表 → 自动处理,不弹窗

四象限视图:

点击左侧 bi-grid-3x3 图标 → 切换到四象限视图。

  • 点击任务卡片 → 打开任务详情
  • 点击左上角返回按钮 → 回到主页
  • 再次点击图标 → 也可切换

统计页面:

点击左侧 bi-bar-chart-line 图标 → 打开统计页。

打印:

点击左侧三点菜单 → 「PDF/打印」→ A4 横版打印当前周。

S3 手动同步:

配置 S3 后,左侧出现 bi-cloud-arrow-up 图标,点击触发同步。

调整紧急阈值:

设置 → 常规 → 「紧急阈值」输入框,范围 8~168 小时。


许可

沿用原项目 GPL 许可。


致谢

原项目 WeekToDo AI版 由 xiuji008 开发。本改造版保留其开源精神与架构设计。

声明:Alber.F|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - WeekToDo 个性化plus版改造

医疗器械质量和注册管理的数字化的尝试者