v79 端上:任务面板(首页/任务页共用)+ 任务模块功能补齐
用户原话:「鸿蒙端的功能,也需要同样适配,在首页上可以直接修改编辑任务,
另外任务模块的功能需要完善。」
端上原来只有"看列表 / 勾完成 / 新建改标题",网页 v78 那套「就地处理」
(改状态、挪分组、子任务、附件、留言、删除)一件都没有;首页点任务
弹的还是 v73 的只读卡。
一、新增 FbTaskPanel(首页与任务页共用同一组件)
· 改状态三段(待办/进行中/已完成)+ 标题左侧状态圈
· 挪看板 chips、勾/加子任务、加图片附件并删、发留言
· 编辑 → 交给宿主开 FbTaskEditSheet;删除要**点两次**(端上没有 undo)
· 每个动作成功后再 getTask() 重拉一次:一次动作会牵动子任务计数、
附件张数、看板色,逐处同步 DOM 必然漏一处
二、退役 FbTaskDetailSheet(v73 只读卡,387 行)
⚠️ 它已无人挂载,而守卫还在逐条"通过" —— 等于给死代码盖章。
三、任务模块补齐
· 卡片点击 → 面板(不再直接进编辑表单:误触一下就开始改标题,
且子任务/附件/留言没地方放)
· 「只看已完成」改真打 ?view=done:看板视图服务端就写死
status <> 'done',在客户端筛永远是空
· 看板列表改走 ?view=boards:原来从任务反推 ⇒ 空看板永远选不到
· 编辑表单补分类/循环两排
四、顺带修掉一个自查发现的真 bug
任务页里 sheetCount 有**两个** @Monitor 都监听 boardSheetOpen、都写同一个值
⇒ 关掉设置浮层时谁最后执行不确定,会把还开着的面板"顺便让位结束",
底部悬浮栏浮上来盖住面板按钮。已并成一个取并集的 monitor。
服务端(另一仓):新增 GET /tasks?view=boards、POST/DELETE /tasks/<id>/attach,
详情补 board_name/board_color_calc,越权删别条任务的附件 → 404。
验证:静态守卫 1055/0(新增 v79 一组,含"全页只许一个 sheetCount 赋值点")、
反向验证 215/0(新增 15 条注入,逐条证明新断言会红)、
服务端 e2e 1558/0、_fb_v79_api.py 26/0、编译通过并已装机。
This commit is contained in:
@@ -702,6 +702,78 @@ export interface FbBoardOpt {
|
||||
color: string;
|
||||
}
|
||||
|
||||
/** 分类选项(任务的「分类」;`id=0` = 不分类) */
|
||||
export interface FbCatOpt {
|
||||
id: number;
|
||||
name: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务元数据(v79):**全部**看板 + 全部分类 + 状态/循环词表。
|
||||
*
|
||||
* 🔴 为什么单开一个类型、而不是继续从任务列表里反推看板:
|
||||
* 反推只能看见"**有任务的**看板" ⇒ 刚建好、还没放任务的看板在端上永远选不到
|
||||
* (用户建了个看板,端上挪不过去 —— 这在 v78 网页版是能做的)。
|
||||
* 元数据走 `GET /tasks?view=boards`(很轻,不带任务)。
|
||||
*/
|
||||
export interface FbTaskMeta {
|
||||
boards: FbBoardOpt[];
|
||||
cats: FbCatOpt[];
|
||||
}
|
||||
|
||||
/** 子任务(面板里那几行;只勾状态、不展开二级) */
|
||||
export interface FbTaskKid {
|
||||
id: number;
|
||||
title: string;
|
||||
status: string;
|
||||
}
|
||||
|
||||
/** 任务下的一条留言 */
|
||||
export interface FbTaskComment {
|
||||
id: number;
|
||||
content: string;
|
||||
/** 留言人显示名(服务端已按"我怎么称呼他"处理过) */
|
||||
name: string;
|
||||
color: string;
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
/** 任务下的一个附件 */
|
||||
export interface FbTaskAttach {
|
||||
id: number;
|
||||
name: string;
|
||||
/** image / pdf / doc / file …(决定画缩略图还是画图标) */
|
||||
kind: string;
|
||||
isImage: boolean;
|
||||
/** 存储键(`photo/xxx.jpg`),画图时交给 fbImageUrl */
|
||||
key: string;
|
||||
sizeWord: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务详情(v79 面板用):列表行 + 只有详情接口才给的那几块。
|
||||
*
|
||||
* ⚠️ `base` 复用 `FbTaskItem`:用户点开时先用列表那一份渲染(不空白),
|
||||
* 详情接口回来再把 `base` 换掉。两处形状一致才不会"点开闪一下再变样"。
|
||||
*/
|
||||
export interface FbTaskDetail {
|
||||
base: FbTaskItem;
|
||||
/** 负责人 id(编辑时回填;0 = 未指派) */
|
||||
assigneeId: number;
|
||||
/** 负责人显示名(`base.assignee` 的同源,详情以这里为准) */
|
||||
categoryId: number;
|
||||
category: string;
|
||||
/** 循环规则(day/week/month/year;空 = 不循环) */
|
||||
repeat: string;
|
||||
/** 父任务标题(子任务才有;空 = 本来就是顶层任务) */
|
||||
parentTitle: string;
|
||||
/** 建这条的人显示名 */
|
||||
creator: string;
|
||||
kids: FbTaskKid[];
|
||||
comments: FbTaskComment[];
|
||||
attachs: FbTaskAttach[];
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 纪念日(days)
|
||||
// ============================================================
|
||||
|
||||
Reference in New Issue
Block a user