|
|
7b8084a43d
|
fix: 前端统一解析后端 detail 报错,杜绝 [object Object]
各处 catch 里直接 `toast(err?.response?.data?.detail ?? "xx失败")` 有坑:
请求体校验失败(422)时 detail 是数组,React 会把每个对象渲染成 [object Object]。
- utils/errorMessage.ts(新增): extractErrorMessage 统一解析三种形态 ——
字符串 / FastAPI 校验错误数组 / 对象;数组取 msg 并剥掉 Pydantic 的
"Value error, " 前缀、带上字段名、同字段去重后用「;」拼接;解析不出内容
则回落到调用方给的兜底文案。行为与移动端 extractErrorDetail 对齐
- 19 处调用点全部替换:AdminTasksPage(4) / AdminProductsPage(5) /
TaskTreeViewer(4) / AdminPrintConfigPage(2) / ScanPage / CreateProductDialog /
ImageUploader / authApi
- TaskRejectPayload.images 与 taskApi.rejectTask 的注释同步为「选填,支持空数组」
- 新增 components/ui/ImageUploader.tsx(驳回弹窗选图上传组件),
RejectModal 同步放开无图拦截:去掉 images 非空校验、提交按钮不再因
无图禁用、标签由必填星号改为「(选填,最多 9 张)」,并移除因此失效的
error 状态
- AdminTasksPage.tsx: 支持大屏下钻的 ?search / ?status / ?stage 预设参数,
新增「售后流转中」状态 Tab(按 lifecycle_phase 判定)与全局重置;
?stage 只在跳入时生效一次,用户手动改条件即解除锁定
- 杂项清理: TaskFlowView 移除透传的 assigneeNames、TaskListCard/MyTasksPage
移除未使用导入、QrScanner 关闭 verbose 日志
|
2026-09-15 10:57:56 +08:00 |
|
|
|
0d1e45e3fb
|
feat: 管理层数据大屏(后端聚合接口 + 前端全屏页面)
PC 管理端新增独立全屏数据大屏,供管理层查看直通率/产量趋势/不良分布,
替代原 AdminDashboard 上零散的手工下钻。
后端:
- endpoints/screen.py + services/screen_service.py: 大屏聚合接口
(复用 lifecycle 的售后工序归一,保证统计口径与展示一致)
- router.py: 注册 screen_router
前端:
- pages/admin/ScreenDashboard.tsx: 全屏大屏页(自带鉴权守卫,无侧边栏)
- services/screenApi.ts: 大屏数据接口封装
- components/admin/UserOperationDetailDrawer.tsx: 人员操作明细抽屉,
由 AdminDashboard 的原生 state 抽成独立组件(含命令式 handle)
- AdminDashboard.tsx: 改为使用该抽屉组件,移除内联的下钻状态
- MatrixBoard.tsx / App.tsx / AdminLayout.tsx: 挂载路由与导航入口
- BaseEChart.tsx: 注册 GaugeChart 与 GraphicComponent
(graphic 需显式注册,否则饼图中心文字静默不渲染)
|
2026-09-15 10:57:46 +08:00 |
|
|
|
f22eae315f
|
fix: 售后回流口径统一 — 状态双字段同步、工序名归一、标签配色
产品存在 overall_status 与 status 两个状态字段,此前各写入点各写一份映射、
甚至只改 overall_status 不改 status,导致回流设备(product.status 停留在
OUTBOUND)污染看板统计口径。
- lifecycle.py: 把映射表收敛为单一来源 overall_to_product_status /
sync_product_status;新增 normalize_after_sales_step,将售后设备沿用生产
阶段写法的历史工序名(测试/维修)折算到售后区独立工序名
- product_service.py: 删除本地 _OVERALL_TO_STATUS 副本,改用共享函数
- dashboard_service.py: WIP 矩阵补出 lifecycle_phase 列,活跃任务判定
(is_active) 提前到所有终结态判定之前,避免残留 OUTBOUND 被误判为完结
- scripts/fix_product_status.py: 历史数据修复脚本(一次性)
- constants/task.ts: 售后工序标签由红色改紫色 —— 红色在本系统是「驳回/危险」
语义色,售后只是另一条流转支线,用红色会让操作员误以为设备报错
|
2026-09-15 10:57:29 +08:00 |
|
|
|
3238e4819a
|
feat: 网页端渲染售后回流标签(发货测试/售后维修)
|
2026-09-14 14:49:38 +08:00 |
|
|
|
db3bafcc66
|
feat: 前端补充生命周期类型定义与工序词表
|
2026-09-14 14:49:38 +08:00 |
|
|
|
b088d25df9
|
feat: 任务树/流转卡展示驳回原因与返工备注(网页SlimCard,移动端FlowCard/SwipeCards)
|
2026-09-09 17:29:40 +08:00 |
|
|
|
7b7dbbb0d8
|
fix: WIP矩阵-左外连接纳入无任务新品归待接收,PENDING并入待接收,空负责人显式计数为未分配; 表头去待确认列并做TOP N折叠
|
2026-09-09 17:29:36 +08:00 |
|
|
|
2925eb8e0b
|
feat: 产品管理页新增状态收口按钮,倒计时+输入产品身份证双重确认防误触
|
2026-09-07 13:43:09 +08:00 |
|
|
|
109f45f22a
|
feat: 产品/任务搜索支持业务序列号(external_serial)检索
|
2026-09-07 11:08:49 +08:00 |
|
|
|
b4795181ee
|
feat: 人员视图X轴改为四行展示(名称/规格/序列号/身份证)并加大底部空间
|
2026-09-03 16:35:35 +08:00 |
|
|
|
09984951fb
|
feat: 全局概览/产品管理/人员看板跳转统一改为新标签页打开
|
2026-09-03 16:27:18 +08:00 |
|
|
|
f65f6e12c6
|
fix: 效能分析默认时间恢复今天,删除伪造1h兜底,轨迹流转X轴四行展示
|
2026-09-03 16:27:10 +08:00 |
|
|
|
fe495ad707
|
fix: 前端生产构建放宽node堆内存并跳过basicSsl避免服务器卡死
|
2026-09-02 10:39:05 +08:00 |
|
|
|
06337fc8eb
|
feat: 效能分析X轴四行标签/flow分块/自然工作日即时切换/时间快捷选项
|
2026-09-02 10:39:01 +08:00 |
|
|
|
3c6c8c0c53
|
feat: WIP矩阵单表化/固定表头/首列复合/下钻日志弹窗/时间联动
|
2026-09-02 10:38:58 +08:00 |
|
|
|
e194b97649
|
fix: 全状态对齐 - 已出库(OUTBOUND)覆盖所有看板
- 看板产品流转 finished_cond 加'已出库',已出库归入已完结
- WIP 矩阵区分'已出库'维度
- MyTasksPage tab 加'已出库'
- 移动端 detail/WorkspaceArea STATUS_MAP 补 OUTBOUND
|
2026-09-02 09:07:37 +08:00 |
|
|
|
262e28b9f2
|
fix: 仓储任务节点修复(assignee=None + WAREHOUSE 类型) + 前端防御性渲染
- webhook 生成任务 assignee_id 置 None,不再填中文,避免前端解析报错跳过渲染
- task_type=WAREHOUSE,并同步 isMain 判断(后端+双端前端)使其画在中央主干道
- 前端对扫码入库/出库任务:不请求用户数据,直接显示 📦 + 'MOM 仓储系统'
|
2026-09-01 17:25:22 +08:00 |
|
|
|
9c1246e2c9
|
style: 网页端操作日志条铺满卡片宽度并加可点击箭头
- 负 margin 精确抵消 padding+border,蓝条真正贯穿卡片宽度
- 日志文字加粗 + 末尾蓝色 › 箭头提示可点击
|
2026-09-01 14:44:18 +08:00 |
|
|
|
34618579c8
|
style: 网页端流转树主轴连线与日志条优化
- 中央垂直线按行渲染:首行从卡片中间起、末行到卡片中间止
- 操作日志改为全行蓝色横条(查看操作日志 x条),整条可点击
|
2026-09-01 14:42:59 +08:00 |
|
|
|
9d1e6c8466
|
style: 网页端流转树卡片 UI 优化
- 时间精确到分钟(去 split 截断)
- 主线/分支标签改为卡片左上角与状态标签并排
- 操作人前加用户小图标
- 日志入口去掉浅蓝条块,改右下角文本链接 + 蓝色 > 箭头
|
2026-09-01 14:10:35 +08:00 |
|
|
|
6cb7731cbb
|
feat: Track 网页端已完成/已入库/已出库状态展示与筛选
- ProductCard/ScanPage 徽标改用整体状态,补全宏观状态中文映射
- 产品管理/任务全景/我的任务/看板/WIP分析 状态筛选与徽标区分
- 转入在库显示在库实际操作人;新增已出库/OUTBOUND 状态色
|
2026-09-01 13:53:30 +08:00 |
|
|
|
6eb81953f5
|
feat(网页端): 流转树在库任务显示『谁转入在库』
- TaskFlowView 在库/入库任务节点显示『📥 转入在库: 创建人中文名』
- TaskResponse 类型补 created_by 字段
|
2026-08-31 17:20:47 +08:00 |
|
|
|
c19dbc2e7a
|
feat(透视表): 表格底部增加每列数量合计行
- 每块透视表底部 summary 行,统计各工序列的设备数合计 + 行总计
- 固定底部,方便查看每列总量
|
2026-08-28 17:00:02 +08:00 |
|
|
|
8c3c0c4d90
|
refactor(透视表): 取消按人员分布,时间筛选对齐全局概览
- 移除按人员/按工序切换,固定按工序分布
- 时间筛选改为与全局概览一致: 今天/近7天/近30天/自定义(Radio+RangePicker)
|
2026-08-28 16:36:45 +08:00 |
|
|
|
9d08c50ef6
|
feat(透视表): 列数超6时分块垂直排列 + 规格型号列升降序
- 人员/工序列超过 CHUNK_MATRIX(6) 时按列分块,多张透视表垂直向下排列,告别一行十几个人员横向超长
- 规格型号列支持点击升降序排序(中文字典序)
- 每块独立合计
|
2026-08-28 16:35:26 +08:00 |
|
|
|
41dd257260
|
feat(透视表): 工序分布包含在库/完成 + 增加时间筛选
- wip-matrix 去掉状态过滤,全量分布,工序包含「在库」(生产完成)
- 后端加 since/until 按任务接手/创建时间过滤
- 前端 MatrixBoard 加 RangePicker 日期筛选 + 全部清除
|
2026-08-28 16:32:01 +08:00 |
|
|
|
fdd7465afb
|
feat(前端): 新增 WIP 分布矩阵透视表页面
- MatrixBoard.tsx: Radio切换 按人员/按工序,动态交叉表转换(规格型号为行)
- 单元格显示设备数量+主负责人,首列规格固定左、末列合计固定右,bordered Excel风格
- 路由 /admin/matrix 注册,侧边栏新增「WIP 分布矩阵」入口
|
2026-08-28 16:25:26 +08:00 |
|
|
|
d9ec15b72f
|
refactor(效能分析): 人员视图改为数据切片瀑布流,告别横向滚动
- 设备按 CHUNK_SIZE=6 切块,向下追加渲染多个 ECharts 图(垂直瀑布流)
- capabilityOption 改为 getCapabilityOption 工厂函数,每块独立构建 Option
- 去除横向 overflow 与分页器,网页原生向下延伸
- grid.top 加大到 80 避免图例遮挡,X 轴标签简化(序列号+身份证)
- 点击柱子下钻支持块内索引→全局设备映射,Tooltip 读取对应块数据
|
2026-08-28 16:17:37 +08:00 |
|
|
|
e62855df43
|
feat(效能分析): 人员视图设备过多时分页显示,解决超宽无滚动
- 每页显示20台设备,底部上一页/下一页翻页器
- 数据/图按页切片,筛选变化自动回第1页
- 图宽限制在当前页设备数,看板始终可见
|
2026-08-28 16:10:43 +08:00 |
|
|
|
1d4023a27c
|
fix(效能分析): 自然天/工作日切换按钮移至各视图顶部,全选长图也能看到
- 人员视图、轨迹流转 tab 内容顶部各加切换按钮
- 全选所有人导致图很长时,按钮固定在视图顶部不被挤出屏幕
|
2026-08-28 15:51:53 +08:00 |
|
|
|
907473b18c
|
feat(效能分析): 人员视图也支持自然天/工作日耗时切换
- capability 接口加 mode 参数,natural 用自然小时、workdays 用工作小时
- 人员视图柱状图随顶部按钮切换,排除休息日的耗时
- 切换按钮自动重新请求 capability 与 flow
|
2026-08-28 15:38:32 +08:00 |
|
|
|
4447a1f52d
|
feat(效能分析): 轨迹流转图时间轴支持工作日/自然天切换
- flow 接口加 mode 参数,workdays 模式把时间偏移换算为排除周末/节假日的工作小时
- 轨迹流转图的横轴随顶部按钮(自然天/工作日)切换,休息日被压缩
- 按钮切换自动重新请求 flow
|
2026-08-28 15:34:17 +08:00 |
|
|
|
7f1858387c
|
feat(前端): 产品卡片双生产总天数 + 效能分析设备总天数按钮切换
- 产品管理卡片同时显示「生产总天数(自然天)」和「生产总天数(工作日)」
- 效能分析页新增「设备生产总天数」统计卡片(设备数/平均/最长),顶部按钮切换 自然天/工作日
- 顺手修复 AnalyticsDashboard Tabs onChange 类型错误
|
2026-08-28 15:29:01 +08:00 |
|
|
|
1a5716a1ab
|
feat(操作统计): 抽屉内增加独立时间筛选
- 抽屉内提供 今天/近7天/近30天/自定义 时间选择,默认同步顶部当前值
- 切换时间自动刷新统计与明细,无需关闭看板调整顶部时间
|
2026-08-28 14:40:58 +08:00 |
|
|
|
788d7a7f78
|
fix(操作统计): 全不选生效——默认全选,全不选后显示空态提示
- 打开抽屉默认全选所有人(宫格高亮+显示全部)
- 点「全不选」清空选择,表格显示『未选择任何人员』空态,不再退化为全部
- 首次加载自动全选;用户操作过筛选后不覆盖
|
2026-08-28 13:54:43 +08:00 |
|
|
|
d0fc8cdecf
|
feat(操作统计): 点击接收/转交/上传备注数字下钻查看明细
- 表格中接收/转交/上传备注数字改为可点击(蓝色下划线),点击打开明细抽屉
- 明细展示:任务名/备注/设备/身份证/时间,跟随顶部时间筛选
|
2026-08-28 13:36:28 +08:00 |
|
|
|
554608b948
|
feat(操作统计): 人员筛选增加全选/全不选按钮
|
2026-08-28 13:33:08 +08:00 |
|
|
|
5722fe159a
|
feat(操作统计): 人员筛选改为人名宫格多选 + 表头升降序
- 人员选择从下拉改为移动端风格的人名宫格网格,支持多选(可同时看多人),全部=清空
- 接收/转交/上传备注/总次数 表头点击升降序(三态:无→升→降→无)
- 移除不再使用的 antd Select
|
2026-08-28 13:31:03 +08:00 |
|
|
|
9471c1b7c5
|
feat(全局概览): 人员操作统计改为快捷入口内入口+抽屉弹窗展示
- 位置调整:快捷入口面板内新增「人员操作统计」入口按钮(替代整行区域)
- 点击打开抽屉,展示全部人员操作次数
- 支持人员下拉选择:默认全部,可选某一人查看
- 跟随顶部时间筛选联动
|
2026-08-28 13:19:45 +08:00 |
|
|
|
72fbb8b501
|
feat(全局概览): 快捷入口下方新增人员操作统计区域
- 表格展示每人 接收/转交/上传备注/总次数,按总次数降序
- 跟随顶部时间筛选(今天/近7天/近30天/自定义)联动刷新
|
2026-08-28 13:14:13 +08:00 |
|
|
|
d9a70793f7
|
feat(产品管理): 当前人时间着色与任务全景一致
- 当前人时间按滞留时长着色:<1h 绿 / ≥1h 橙 / ≥24h 红
- 与任务全景「当前人滞留」列的配色逻辑统一
|
2026-08-28 11:33:57 +08:00 |
|
|
|
90f5718e68
|
fix(驳回/返工): 抽屉与卡片数字口径一致,同时展示已驳回+返工任务
- 根因:卡片数字含返工任务(tasks_rework 实时快照),但抽屉只列已驳回 → 点开为空
- get_rejected_tasks 扩展返回两类(kind=rejected 按时间过滤 / kind=rework 实时不过滤)
- 前端抽屉按「已驳回」「返工任务」分组展示,数字与明细一一对应
|
2026-08-28 11:33:54 +08:00 |
|
|
|
1e6adeb576
|
fix(二维码): 弹窗打开时锁定背景滚动
- 与流转树弹窗一致,二维码弹窗打开时 body overflow=hidden 防止滚动穿透
|
2026-08-28 11:33:49 +08:00 |
|
|
|
88f02cbdcf
|
fix(图片): 记录弹窗图片从页面跳转改为点击放大预览
- TaskFlowView 记录图片 window.open 跳转 → antd Image.PreviewGroup 点击放大
- 与人员看板/效能分析的图片查看模式全局统一
|
2026-08-28 11:33:46 +08:00 |
|
|
|
1bb93e0a5f
|
fix(流转树): 弹窗打开时锁定背景滚动,消除滚动穿透
- 通用 Modal 打开时 body overflow=hidden,关闭时恢复
- 修复流转树宽屏弹窗滚动时背景看板跟随滚动的问题
- TaskFlowView 记录弹窗同步加锁(覆盖无外层弹窗的页面内打开场景)
|
2026-08-28 11:24:59 +08:00 |
|
|
|
ddb1b4364b
|
feat(任务全景): 新增列显隐控制,可勾选去掉不想要的列
- 工具栏新增「列设置」按钮,弹出 checkbox 列表控制列显示/隐藏
- 勾选=显示,取消=去掉该列(如不需要宏观状态可直接取消勾选)
- 操作列(流转树)固定显示不可隐藏,提供「全部显示」重置
- 表格列数与网格跨度按实际显示列动态计算,原有排序/筛选/拖拽保留
|
2026-08-28 11:21:22 +08:00 |
|
|
|
7cfaf4b04b
|
feat(任务全景): 流转树改为宽屏弹窗并放大字体
- TaskFlowView 增加 size prop(sm默认/lg放大),弹窗模式卡片/字体/按钮全部放大
- TaskTreeViewer 通用 Modal 导出并支持 widthClass/bodyClassName 定制
- AdminTasksPage 内嵌展开改为宽屏 Modal(max-w-6xl),保留接收/转交/驳回操作
- 记录弹窗放大且 z-index 提升到 z-[60] 保证覆盖弹窗
- 修复 TaskRecordResponse 无 note 字段的类型错误,清理未使用 import
|
2026-08-28 11:19:08 +08:00 |
|
|
|
d92fcc4d4a
|
feat(全局概览): 驳回/返工卡片可点击下钻明细抽屉
- 驳回/返工数字改为可点击按钮,打开明细抽屉(仿完成明细)
- RejectedRow 展示设备/被驳回工序/驳回人/返工给谁/原因/时间,行点击跳转任务全景
- 跟随顶部时间筛选(since/until)
|
2026-08-28 11:19:03 +08:00 |
|
|
|
645c594ecd
|
fix(任务状态): REJECTED 标签由「待接收」修正为「已驳回」
- constants/task.ts 的 STATUS_CONFIG 中 REJECTED 误复用 PENDING 文案
- 修复后流转树/扫码页等所有用 getStatusConfig 展示驳回任务的地方显示正确
|
2026-08-28 11:18:53 +08:00 |
|
|
|
19c7c7bbf1
|
feat(任务全景): 表头排序/筛选/列拖拽 + 新增当前人滞留列
- 状态筛选 tabs 去掉「已入库」并支持多选
- 表头点击排序:身份证/序列号/当前人滞留/最新动态/创建时间,三态循环(升/降/取消)
- 表头漏斗筛选:文本列模糊过滤,枚举列(宏观状态/任务状态/当前位置)多选过滤
- 列头拖拽调整列显示顺序
- 新增「当前人滞留」列,读 active_duration_hours 按天/小时/分钟着色展示
- 修复 handleSearch 引用不存在的 setExpandedProducts(应为此前的展开状态) 导致的查询报错
|
2026-08-28 10:46:20 +08:00 |
|