v78 服务端:首页任务改成「就地处理」面板 + 新建任务搬到首页
用户原话: 「网页端,首页点击一个任务后,除了展示信息,应该有相应的功能,可以修改状态: 待办、进行中,可以挪动分组,可以拖动上传附件,可以添加评论,添加子任务等。 其目地,是为了让用户不离开首页,就能对任务进行简单的处理。」 「另外,在全部任务旁边,放一个新建任务的功能,其实就是把任务中的新建和编辑功能, 搬过来,用弹出框来处理。」 一、首页任务浮层由「只读信息」改成「可操作面板」 - 新增 templates/tasks/_panel.php:状态三段 / 看板 chips(带看板色)/ 子任务(复用 _task_check.php)/ 附件拖放框(复用 _attachments.php)/ 讨论 - 新增路由 tasks/panel:只吐一块 HTML(找不到 404) - 既有七个动作路由各加一条 ajax_panel 回包分支(状态 / 挪分组 / 新建子任务 / 评论增删 / 附件增删),没有新开写接口 - helpers.php 新增 task_panel_wanted() / task_panel_json(); fb_entry_json() 的 payload 增加 panel 字段(只有任务会给) - 每次动作回**整块新面板**:一次动作会牵动子任务计数、附件张数、看板选中态, 逐处同步 DOM 必然漏一处 - 拖进来的附件**立刻上传**(任务已存在,不该再让用户点一次保存), 不复用 _stage_drop.php 那套「暂存 + 认领」 二、新建任务搬到首页 - 从 templates/tasks/index.php 抽出公共片段 templates/tasks/_add_modal.php (字段与原来一字未改),首页与任务页共用同一份 - 新增 assets/js/task_add.js 管开关(两页共用,幂等绑定); 打开那一刻才 fbUpgradeRange() + fbBootAntd()(hidden 时宽高为 0,antd 会定位错乱) - App\HomeCards 登记表里加 add => 新建任务,首页卡头与「全部任务」并排 - tasks/create 支持 back=home(白名单),新建完回首页 三、其它 - assets/js/task_panel.js:事件委托;动作后整块换面板; 顺手同步首页那张卡的状态徽标与复选框(关掉浮层不能还是旧状态); 传附件时保住用户写了一半的留言与子任务标题;取不到面板时退回只读信息 - app.css 追加面板样式(含 color-mix 的 @supports 兜底)与卡片窄到宽 2 时允许折行 验证:本地 e2e 1558/0、几何 428/0 + 660/0、v78 反向验证 11/0、 片段作用域体检 35/0、php -l 与 node --check 全过
This commit is contained in:
@@ -6615,3 +6615,76 @@ h5.md-h, h6.md-h { font-size: 14px; }
|
||||
.hc-set-dim .select { width: 66px; }
|
||||
.hc-set-n { width: 64px; }
|
||||
.hc-set-null { width: 0; }
|
||||
|
||||
/* ============================================================
|
||||
v78(用户 2026-10-22):首页「近期任务」的就地面板
|
||||
------------------------------------------------------------
|
||||
用户原话:「网页端,首页点击一个任务后,除了展示信息,应该有相应的功能,
|
||||
可以修改状态:待办、进行中,可以挪动分组,可以拖动上传附件,可以添加评论,
|
||||
添加子任务等。其目地,是为了让用户不离开首页,就能对任务进行简单的处理。」
|
||||
|
||||
这一段只画**面板本体**(壳、遮罩、底栏都沿用 `.cal-modal*` / `.fb-entry-panel`)。
|
||||
三块强调色都不新造:状态用既有的 `.kb-st`(三档颜色是它定义的唯一来源),
|
||||
看板 chip 用看板自己的 `--bc`(与看板列头、卡片上的点同一个色)。
|
||||
============================================================ */
|
||||
.tk-panel { display: flex; flex-direction: column; gap: 14px; }
|
||||
.tk-sec { display: flex; flex-direction: column; gap: 8px; }
|
||||
/* 段落之间的那条细线:面板里段落多(状态/看板/信息/子任务/附件/讨论),
|
||||
不划线会糊成一整块;用 line-2(比正文分隔线更淡)以免像个表单边框。 */
|
||||
.tk-sec + .tk-sec { border-top: 1px solid var(--line-2); padding-top: 14px; }
|
||||
.tk-sec-h {
|
||||
display: flex; align-items: center; gap: 6px;
|
||||
font-size: 13px; font-weight: 600; color: var(--ink);
|
||||
}
|
||||
.tk-sec-h .group-n { margin-left: 0; }
|
||||
/* 「状态」「看板」这两段是"标签 + 一排可点的东西",横排。
|
||||
⚠️ 用 flex-wrap:看板可能是七八个,窄屏要能折行而不是撑出面板。 */
|
||||
.tk-sec-inline { flex-direction: row; align-items: center; gap: 10px; flex-wrap: wrap; }
|
||||
.tk-sec-lb { flex: 0 0 34px; font-size: 12.5px; color: var(--faint); }
|
||||
.tk-seg { display: flex; gap: 6px; flex-wrap: wrap; }
|
||||
/* 面板里的状态徽标比卡片上的大一档(这里是要点的按钮,不是标签) */
|
||||
.tk-seg .kb-st { padding: 3px 12px; font-size: 12.5px; }
|
||||
.tk-chips { display: flex; gap: 6px; flex-wrap: wrap; }
|
||||
.tk-chip {
|
||||
display: inline-flex; align-items: center; gap: 5px;
|
||||
padding: 2px 10px; border-radius: 999px;
|
||||
border: 1px solid var(--line); background: var(--surface);
|
||||
font-size: 12px; color: var(--muted); cursor: pointer;
|
||||
max-width: 100%;
|
||||
}
|
||||
.tk-chip:hover { border-color: var(--brand-2); color: var(--brand-ink); }
|
||||
/* 选中的看板:用**它自己的颜色**描边 + 淡底 —— 与看板列头那颗点是同一个色,
|
||||
用户不用读字就知道"这条现在在哪一摊事里"。 */
|
||||
.tk-chip.is-on {
|
||||
border-color: var(--bc, var(--brand));
|
||||
background: color-mix(in srgb, var(--bc, var(--brand)) 12%, transparent);
|
||||
color: var(--ink); font-weight: 600;
|
||||
}
|
||||
/* ⚠️ color-mix 在老浏览器上整条声明无效 → 底色会是透明的。
|
||||
补一条纯 rgba 兜底(不指定色,统一淡灰),保证"选中"至少看得出来。 */
|
||||
@supports not (background: color-mix(in srgb, red 10%, transparent)) {
|
||||
.tk-chip.is-on { background: var(--line-2); }
|
||||
}
|
||||
.tk-chip.is-static { cursor: default; }
|
||||
.tk-chip-dot {
|
||||
width: 7px; height: 7px; border-radius: 50%; flex: 0 0 auto;
|
||||
background: var(--bc, var(--faint));
|
||||
}
|
||||
/* 只读那几行(截止/负责人/分类/备注):面板里空间紧,行高比详情页收一点 */
|
||||
.tk-kv .kv-row { padding: 6px 0; }
|
||||
/* 加子任务那一行:输入框吃掉剩余宽度,按钮不缩 */
|
||||
.tk-inline-form { display: flex; align-items: center; gap: 8px; }
|
||||
.tk-inline-form .input { flex: 1 1 auto; min-width: 0; }
|
||||
.tk-inline-form .btn { flex: 0 0 auto; }
|
||||
/* 讨论里那条"删除":长得像链接(`.btn-inline` 负责去掉按钮的灰底,
|
||||
`.link-quiet` 负责颜色),这里只把它推到本行最右。 */
|
||||
.cmt-who .cmt-x { margin-left: auto; }
|
||||
.tk-drop { margin-top: 4px; }
|
||||
.tk-drop .upbox { min-height: 64px; }
|
||||
@media (max-width: 640px) {
|
||||
.tk-sec-lb { flex: 0 0 auto; width: 100%; }
|
||||
}
|
||||
|
||||
/* v78:卡片窄到"宽 2"时,标题 +「全部任务」+「新建任务」三样挤不下 ——
|
||||
允许折行,别把标题压成 0 宽(那会只剩两颗按钮,看不出这是哪张卡片)。 */
|
||||
.hc-card.hc-w2 .hc-head { flex-wrap: wrap; }
|
||||
|
||||
Reference in New Issue
Block a user