Commit Graph

41 Commits

Author SHA1 Message Date
0a1c2f4dcf fix(frontend): 打印按钮被挤出画面 — card-header 防溢出
根因: card-header 一行塞入 4 个元素(标题+3按钮),
      card-header-right 无 flex-wrap/无 flex-shrink,
      窄屏上打印标签按钮溢出视口不可见。

修复:
- card-header-right: gap 8→4, 加 flex-wrap, flex-shrink:0
- 所有子元素: flex-shrink:0 + white-space:nowrap
- mode-toggle/print-label-btn: 缩小字号+padding节省空间
2026-08-11 16:07:19 +08:00
40a2d87345 fix: 消息通知页不能点进详情 — 补全 product_serial_number
问题: 点击通知卡片跳转 detail?taskId=xxx,但 detail.vue onLoad 只认 serial 参数导致空白页

修复:
1. 后端 NotificationResponse 新增 product_serial_number 字段
2. 后端 notifications API 联表 tasks+products 批量填充 serial
3. 前端 notify/index.vue handleCardTap 优先用 product_serial_number 跳转,兜底从 content 正则解析
4. 前端 detail.vue onLoad 新增 taskId 兜底 → doQueryByTask 反查 product_sn
2026-08-11 15:56:25 +08:00
30a48d90fc fix(frontend): 流转蓝图 + 聊天室 + 卡片布局 + 打印功能修复
1. TreeCanvas.vue - Y轴坐标算法重构:
   - calcSubtreeHeight 改为兄弟累加 (reduce) 替代 Math.max,彻底杜绝垂直重叠
   - childNode.y = parentNode.y + CARD_H + VERTICAL_GAP 严格向下延伸
   - 同级子节点按子树高度累加 startY,各占独立 Y 区域
   - 加宽画布默认尺寸 (400→800, padding +300/+400)

2. detail.vue - onShow 生命周期修复:
   - 新增 onShow() 钩子调用 fetchMessages(),解决聊天室退回不刷新问题

3. TaskSwipeCards.vue + detail.vue - CSS 防跳动:
   - .ss-swiper-h / .ss-card-wrapper 添加 min-height: 220px
   - .card 添加 min-height: 120px

4. detail.vue - 移动端打印标签:
   - 新增「🖨️ 打印标签」按钮
   - 双方案 ActionSheet: 网络打印机(后端API) / 蓝牙打印机(ESC/POS)
   - 对接现有 /print/execute 端点
2026-08-11 15:05:39 +08:00
6755dfeae3 feat(mobile): 登录修复 + 人名字典 + 留言板FAB + 流转算法重构
- login: catch补齐toast,修复密码错误静默失败
- detail: formatUserName渲染当前位置,dictVersion驱动响应式重绘
- detail: 留言板改为悬浮按钮+底部抽屉,未读徽标逻辑
- TaskSwipeCards: lanes终极递归算法,SPAWN不限层级开辟新Tab,先序push修复Tab顺序
- TreeCanvas: 父子相对坐标延伸算法,替代旧版奇偶距离递增
2026-08-11 10:02:12 +08:00
567f7175da fix: :key 强制子组件重建 + 拆除嵌套滚动锁
- detail.vue: 新增 dictVersion,loadUsers 后自增驱动子组件 :key 重建
- WorkspaceArea/TaskSwipeCards/TreeCanvas 绑定 :key='...-'+dictVersion
- .page-container: flex → block,让页面自然流式撑开
- .workspace-area: flex:1+overflow:hidden → height:auto
- .is-locked: 仅锁定任务模式下才 height:100vh+overflow:hidden
- .task-list: flex:1+overflow-y:auto → height:auto
2026-08-10 18:08:13 +08:00
051a075e9d fix: 留言板层级修复 + 人名映射防降级
- 留言板移除 currentMode 限制,产品级功能所有模式可见
- .page-container: min-height + overflow-y:auto 替代 height:100vh + overflow:hidden
- loadUsers 加 console.error 日志 + $forceUpdate 防字典空窗期
2026-08-10 17:56:47 +08:00
f9451b104b feat: 移动端全局人名映射 + 协同留言板 UI
- detail.vue: 留言板聊天室 UI + 乐观更新 + loadUsers 填充全局字典
- WorkspaceArea.vue: 任务列表/上游/下游负责人全部走 formatUserName
- TreeCanvas.vue: 节点负责人 + 嵌套协助提示走 formatUserName
- TaskSwipeCards.vue: 卡片负责人走 formatUserName
- 留言板头像取中文名末字(formatUserAvatar)
2026-08-10 17:37:25 +08:00
b834b24c24 fix: 已完成/已驳回/已入库/已撤回任务禁止编辑删除记录 2026-08-07 16:48:12 +08:00
0df7215134 feat: 移动端双Token队列拦截器 + 通知列表 + 登录页 + TabBar红点 + v1.0.1 2026-08-07 11:44:20 +08:00
616638a6c8 撤回改为CANCELED状态标记+TaskRecord留痕+TreeCanvas灰度渲染+全部状态映射更新 2026-08-06 12:51:40 +08:00
57884d7baa 撤回转交: recall接口删除子任务恢复父WIP + 前端canRecall判断 + 红色撤回按钮 2026-08-06 11:39:22 +08:00
e5bcde667b 转交弹窗互斥+备注必填: 选人清入库/选库清人 + textarea必填校验 2026-08-06 11:23:31 +08:00
ff3de80c96 派发协助备注改为必填(textarea+disabled校验) 2026-08-06 10:08:56 +08:00
999f8c2f3e IRIS过滤容错: 后端SQL失败时降级全量+前端严格过滤department===IRIS 2026-08-06 10:08:18 +08:00
eccf79b8d1 IRIS部门过滤: 后端users接口按department=IRIS过滤 + 前端双重兜底 2026-08-06 10:07:47 +08:00
e183ea5583 工业级重构: 用户Grid选择+工序由接收人定+隐藏结束按钮(次分支卡片内结束)+蓝图网格背景 2026-08-06 09:52:21 +08:00
34347dafb0 清理autoReceive: 删除立即接收开关+新任务强制PENDING等工人自行接收 2026-08-06 09:34:12 +08:00
a0bdce0359 首次扫码防呆: 删除statusPicker强弹+白板产品直接弹发起工序+宏观状态提示未激活 2026-08-06 09:27:15 +08:00
c0feab6be4 UX防呆: 仓库横幅有活跃任务时隐藏 + 宏观状态栏无任务时引导创建 + 创建任务自动切workspace 2026-08-06 09:22:31 +08:00
b00ebd892f 修正: 序列号→身份证, 外部序列号→产品序列号 2026-08-06 09:02:35 +08:00
ae720656b1 全局重命名: 序列号→身份证 (product.serial_number) 2026-08-06 09:00:15 +08:00
3b29bb0bd1 编辑产品加Label + 仓库横幅改为warehouse-transfer-banner + 弹窗标题联动isWarehouseTransfer 2026-08-06 08:42:32 +08:00
c836944f92 新增: 仓库转出功能 — 产品在库时显示📤转出按钮+复用创建任务+更新location 2026-08-06 08:39:06 +08:00
b547844dca 并发模型: spawn派发协助分支 + 转交简化为单线 + 子分支未完成拦截(409) 2026-08-05 18:01:14 +08:00
99eab80a1c 组件化拆分: TreeCanvas(2D画布) + WorkspaceArea(任务列表+锁定工作区) + detail瘦身(仅弹窗) 2026-08-05 17:25:15 +08:00
4c4ed7234d 终极重构: getTaskRemark兜底(record挖掘) + movable-area 2D画布(拖拽+缩放) 2026-08-05 17:22:36 +08:00
16762a8628 修复: remark强制渲染(醒目黄框内联样式) + 画布高度坍塌修复(100%撑满) 2026-08-05 17:02:48 +08:00
1d759f3e8c 流转树2D画布: scroll-view无限拖拽 + 水平分支并排 + 垂直时间轴 + 连线 2026-08-05 16:58:12 +08:00
9aa0687d8c 防呆重构: 废除swiper→任务列表+锁定工作区 + remark醒目显示 + 树视图减少缩进+分支闭环标记 2026-08-05 16:56:52 +08:00
78559db1fa 双模态详情页: workspace(swiper+footer) / tree(只读流转树) 智能分流+一键切换 2026-08-05 16:43:32 +08:00
21aa608db3 工艺节点树: 新增结束分支(终止)接口 + 前端🏁结束分支按钮 + WIP可无下游完结 2026-08-05 16:37:05 +08:00
e2d9590c48 修复remark丢失(_to_response漏字段) + UI重构swiper专注卡片看板 2026-08-05 16:35:14 +08:00
71e8eeb7e8 权限: receive/reject校验assignee_id匹配 + 前端myActiveTask只显示本人任务 + 403处理 2026-08-05 16:21:27 +08:00
62422e7558 全栈: 接收任务写入remark — 后端receive接口+Body参数+前端接收弹窗备注输入 2026-08-05 16:16:35 +08:00
7810097b39 全栈修复: remark字段全链路打通 — TaskCreate+TransferRequest+transfer_task+前端Payload 2026-08-05 15:59:20 +08:00
30d35d7fa2 重构: PENDING恢复驳回按钮 + 转交弹窗升级多分支裂变(无限加分支) 2026-08-05 15:57:20 +08:00
c2db89d9d5 重构: 入库改为工序选项(废弃勾选框) + TaskTreeNode增加remark调试log + isWarehouse计算属性 2026-08-05 15:50:39 +08:00
e5b201a040 重构: 删除卡片中间冗余按钮 + 转交弹窗接入真实用户/工序API 2026-08-05 15:25:19 +08:00
3b02c87067 重构: flex布局撑满全屏 + 记录区下沉到子树底部 + 底部Footer钉死 2026-08-05 15:16:03 +08:00
430c0d2342 布局升级: 流转树撑满空间+独立历史记录页+查看全部记录入口 2026-08-05 15:09:09 +08:00
5e53cd7f79 纳入 track-uniapp 前端项目 (扫码/任务树/记录/转交Picker) 2026-08-05 15:01:46 +08:00