|
|
6ff3ee06de
|
fix: template v-for 的 key 移到 template 标签,修复编译报错
- Vue 要求 <template v-for> 的 key 放在 template 标签上,而非内部元素
|
2026-09-01 14:14:27 +08:00 |
|
|
|
25ad5156f8
|
style: 移动端流转树主干道对齐与连线箭头
- 主线(含 TRANSFER 子任务)左边缘对齐,消除缩进形成笔直主干道
- 主线卡片之间加向下连线箭头(↓)
- 分支(SPAWN 协助)保留缩进 + 左边线
|
2026-09-01 14:10:40 +08:00 |
|
|
|
a04989afd3
|
fix: 修复移动端流转树全览空白,改用独立 FlowTree 递归树组件
- 修复 scroll-view 高度为 0 导致内容不可见
- 新建 FlowTree.vue 独立递归渲染(主线/分支标记、状态、转入在库、时间、记录)
- 不依赖 TaskTreeNode,展示更贴近网页端流转树
|
2026-09-01 13:57:56 +08:00 |
|
|
|
cf2609d87a
|
feat: Track 移动端状态展示与流转树全览改造
- 宏观状态栏补已入库/已出库语义色;OVERALL_OPTIONS 补已入库/已出库
- 在库任务'转入在库'显示实际操作人(assignee);补 OUTBOUND 状态色
- 流转树全览(TreeCanvas)由可移动 canvas 改为纵向递归树,复用 TaskTreeNode
|
2026-09-01 13:53:35 +08:00 |
|
|
|
beeee57b75
|
feat(移动端): 流转树在库任务显示『谁转入在库』
- TreeCanvas 全屏流转树 + TaskTreeNode 内嵌树节点,在库/入库任务显示『📥 转入在库: 创建人』
- 复用 formatUserName 中文名映射
|
2026-08-31 17:20:52 +08:00 |
|
|
|
5b5f4a6b0e
|
fix(frontend): TreeCanvas 坐标+连线三重修复 — 根治箭头悬空
1. calcSubtreeHeight: Math.max(CARD_H+GAP, totalChildrenHeight)
→ 首子与父平齐,父级高度取 max 而非无脑叠加
2. placeChildren: startY = parentNode.y (水平对齐)
→ 移除初始化 GAP,累加改为 startY += subtreeH
3. lines(): 动态追踪 Y 坐标
→ y1 = isLeft? n.y+40 : parent.y+40
→ y2 = isLeft? parent.y+40 : n.y+40
→ lineStyle 的 Math.atan2 自动画出完美对角线
|
2026-08-11 16:42:14 +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 |
|
|
|
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 |
|
|
|
ba060cbb5e
|
refactor(mobile): 流转树固定100%比例,移除双指缩放功能
- 移除 movable-view 的 :scale/:scale-min/:scale-max/:scale-value 属性
- 移除 onScale/zoomIn/zoomOut 方法及工具栏缩放按钮
- 移除顶部双指缩放·单指拖拽提示文字
- fitAll 简化为纯居中定位 (mvX/mvY),不再调整缩放比
- 工具栏仅保留: 返回 | 流转蓝图 | 卡片切换 | 全览
|
2026-08-10 15:25:56 +08:00 |
|
|
|
a07e43ec3a
|
fix(mobile): 修复画布空白区域无法响应拖拽缩放手势
canvas-inner 使用 position:absolute 但未设置 width/height,
导致只缩到子元素大小(几乎为0)。在卡片之外的空白区域触摸时,
事件无法穿透到 movable-view 原生组件。
修复:
- canvas-inner: 添加 width:100%; height:100% 铺满 movable-view
- tree-movable-view: 添加 width:100%; height:100% 确保触摸覆盖
|
2026-08-10 15:19:34 +08:00 |
|
|
|
f2403dd1e6
|
fix(mobile): 流转树全览居中 + 拖拽缩放性能优化
1. fitAll() 居中修复: 内容坐标系整体对齐视口中心
旧: mvX=0, mvY=0 (内容偏右下角)
新: mvX = (viewportW - canvasW * scale) / 2, mvY同理
2. movable-area 显式像素高度: 替代 flex:1
避免触摸区域计算不准确导致拖拽延迟
3. onScale 节流: rAF/setTimeout 限频 16ms
避免 @scale 每帧触发 Vue 响应式更新
4. 新增 onChange 同步手势结束后的位置
惯性动画结束后记录位置,下次 fitAll 参考使用
5. 添加 inertia+friction+damping 惯性动画参数
|
2026-08-10 15:09:06 +08:00 |
|
|
|
5271177d7a
|
fix(mobile): 修复全览按钮点击后页面卡死的响应式循环bug
treeNodes 计算属性中直接修改了 product.task_tree 原始响应式对象
(设置 x/y/_isMain/_blabel),触发 Vue 2 深度响应式的无限渲染循环。
修复方案:对所有 task 对象进行浅拷贝 { ...t },在副本上设置坐标
和标签属性,切断响应式依赖循环。
|
2026-08-10 15:00:37 +08:00 |
|
|
|
3ec244bf2d
|
feat: 全览节点无记录时Toast友好提示替代静默短路
|
2026-08-10 14:40:18 +08:00 |
|
|
|
5f12adfe2f
|
fix: 连线层加pointer-events:none防止吞掉卡片点击事件
|
2026-08-10 14:37:37 +08:00 |
|
|
|
51ca05d737
|
fix: 全览按钮z-index修复+产品ID点击弹二维码
|
2026-08-10 14:30:50 +08:00 |
|
|
|
f80da36d65
|
fix: 连线边缘到边缘防穿模+箭头像素级贴合分支卡片边缘
|
2026-08-10 13:59:22 +08:00 |
|
|
|
6d534960a7
|
refactor: 移动端TreeCanvas十字星拓扑—主干居中+分支左右发散+连线箭头+极简卡片160x80
|
2026-08-10 13:52:46 +08:00 |
|
|
|
0df7215134
|
feat: 移动端双Token队列拦截器 + 通知列表 + 登录页 + TabBar红点 + v1.0.1
|
2026-08-07 11:44:20 +08:00 |
|
|
|
6a79e21302
|
闭环修复: transfer/spawn/receive补TaskRecord + reject加task_type + branchLabel只对SPAWN编号
|
2026-08-06 13:14:26 +08:00 |
|
|
|
0d323e8181
|
血缘锚定法: task_type字段+迁移+三大接口写入+TreeCanvas基于task_type布局
|
2026-08-06 13:03:25 +08:00 |
|
|
|
e5e2a395e7
|
撤回链式接力: CANCELED后生成WIP子任务还给操作人+TreeCanvas CANCELED视为串行换行
|
2026-08-06 12:53:23 +08:00 |
|
|
|
616638a6c8
|
撤回改为CANCELED状态标记+TaskRecord留痕+TreeCanvas灰度渲染+全部状态映射更新
|
2026-08-06 12:51:40 +08:00 |
|
|
|
aad26b3d9e
|
2D布局回退状态判定: 父WIP→并行同Y / 父COMPLETED→串行换行(后端已限制COMPLETED后不可spawn)
|
2026-08-06 11:50:10 +08:00 |
|
|
|
c92e7bd931
|
修复2D布局: 时间戳判定串行/并行 — created_at>parent.completed_at才是串行,否则并行同Y
|
2026-08-06 11:45:56 +08:00 |
|
|
|
8f0f725e26
|
修复WBS编码: 分支1→分支1.1层级正确(prefix空字符串处理)
|
2026-08-06 11:42:52 +08:00 |
|
|
|
8be06bcd43
|
权限隔离+2D蓝图修复: isAssignee按钮显隐+只读提示+分支标签(badge-main/sub)+并行同Y确认
|
2026-08-06 11:36:06 +08:00 |
|
|
|
bcf1038f8a
|
修复: 删除2D连线+spawn确认parent_task_id已正确+WBS算法重写(递归前缀)
|
2026-08-06 10:28:21 +08:00 |
|
|
|
11f9f64dc6
|
并发协作重构: focusTasks全视野+WBS分支编码+TreeCanvas并发同层布局(串行Y+1/并行同Y)
|
2026-08-06 10:21:15 +08:00 |
|
|
|
da8db95141
|
UI升级: Footer图标上文字下防截断 + TreeCanvas全屏翻页大卡片(320x460)
|
2026-08-06 10:02:50 +08:00 |
|
|
|
e183ea5583
|
工业级重构: 用户Grid选择+工序由接收人定+隐藏结束按钮(次分支卡片内结束)+蓝图网格背景
|
2026-08-06 09:52:21 +08:00 |
|
|
|
b79d521bad
|
TreeCanvas升级: 时间轴重力算法 — 拍平排序+智能分层+居中排布+正确取最早记录备注
|
2026-08-05 17:44:01 +08:00 |
|
|
|
99eab80a1c
|
组件化拆分: TreeCanvas(2D画布) + WorkspaceArea(任务列表+锁定工作区) + detail瘦身(仅弹窗)
|
2026-08-05 17:25:15 +08:00 |
|