|
|
e45c97bd1f
|
feat: 组织隔离(IRIS 单实例)与出料功能基础
本轮之前累积的未提交工作,一并固化:
- 组织隔离:同一份代码部署给不同部门只需改 config 的 ORG_DEPARTMENT 与
MATERIAL_CATEGORY_PREFIX。过滤点在登录/人员列表/物料/MOM 出库单四处,
全部服务端钉死,客户端传什么都放不大。
★ 物料必须用**前缀** LIKE,不能反推成 ILIKE '%IRIS%':MOM 里 LICA 的物料是
`LICA/<中文>`,而本部门分类树里另有 `IRIS/成品/LICA/…`(本就属于本部门),
前缀匹配天然区分得开。
- MOM 出库单只读查询(直连 MOM 库):不走 MOM 现成的 /outbound 接口 ——
那个要 JWT + permission_required,且对非特权账号按 consumer_name 做行级
隔离,服务账号只能拿到自己名下的单。分页必须两段式(先按单号 GROUP BY
分页,再 IN 捞明细),对宽表直接分页会得到明细行数而不是单据数。
- 出料功能:产品 ↔ 出库单存档(product_outbounds)与任务 ↔ 出库明细
(task_outbound_materials),供「这台设备对应 MOM 哪张单」的展示。
⚠️ 快照一律由后端拿 ID 去 MOM 现查,不接受前端传入,否则前端可伪造单据。
|
2026-09-23 15:18:06 +08:00 |
|
|
|
df3f914eb1
|
fix(audit): 修复「退出登录」无日志(PC + 移动端)
现象:审计日志里 logout 记录数恒为 0,退出动作完全不可见。
根因有两处,缺一不可:
1. 移动端(App)根本没有发起过上报
settings.vue 的 handleLogout 只做 removeStorageSync + reLaunch,
一个请求都没发。而 uni.reLaunch 会销毁页面上下文、直接掐断未完成的
uni.request —— 所以必须「先 await 上报、再清 token 与跳转」。
2. PC 端存在时序竞态
axios 的请求拦截器在微任务里执行、现读 localStorage 取 token;
而原实现同步清空 localStorage 并立刻 navigate,拦截器跑到时 token
已经没了 → 请求不带 Authorization → 后端只能记成「未认证」。
注:只改 AuthContext 不够,调用方 AdminLayout / ProfilePage 原来是
`logout(); navigate(...)`,不等就跳转照样会掐断请求 —— 三处都得改。
改动:
- 移动端 handleLogout 改 async,await post("/auth/logout") 后再清 token
- AuthContext.logout 改 async(类型同步为 () => Promise<void>),
先 await 上报再清 token;失败静默,绝不阻断退出
- AdminLayout / ProfilePage 两个调用点补 await
- 全部用 try-catch 兜住:断网/超时也照退不误(JWT 无状态,
服务端本就不需要它成功)
|
2026-09-21 13:47:31 +08:00 |
|
|
|
1fea30b03b
|
feat(audit): 日活使用统计 + 双 CSV 导出(审计/上下线,列可自定义)
【日活统计:GET /audit/daily-usage】
按【北京时间自然日 × 操作人】聚合,单个 GROUP BY 完成(count(*) FILTER),
不用窗口函数。指标:上线/下线时间、操作次数、登录/登出次数。
⚠️ 上线/下线时间取【当天首次/末次活动】,刻意不取登录时间:
Refresh Token 有效期 7 天,用户不必每天重新登录。按登录算会出现
「登录次数 0、上线时间空,但操作次数 35」——报表自相矛盾。
时间一律按 +08:00 分日与渲染,否则早班(00:00~08:00)操作会掉到前一天。
【CSV 导出:两个端点 + 列自定义】
- /audit/logs/export 整体审计导出,筛选维度与列表页完全一致
- /audit/daily-usage/export 上下线导出,每人一行
- 列清单由后端统一维护并经 /audit/options 下发(log_export_columns /
usage_export_columns),前端不硬编码表头,避免两端漂移
- ⚠️ 响应带 UTF-8 BOM:Excel 靠它识别编码,否则中文表头全乱码
- 单次上限 5 万行,超出经 X-Export-Truncated 头告知前端明确提示
(静默截断比报错更危险)
- list_audit_logs 与 export_audit_logs 共用 _log_filters,
保证「看到的」与「导出的」永远是同一批数据
【前端】
- 审计页页头新增「人员统计」「导出 CSV」两个按钮,现有表格与筛选零改动
- 人员统计走抽屉(AuditUsagePanel):日期范围+快捷键、日活表格、
上下线次数彩色标签、北京时间渲染、导出前弹列勾选面板
- ExportColumnsModal 为两处导出共用,默认全选
|
2026-09-21 12:06:43 +08:00 |
|
|
|
17b2fab5ca
|
fix(audit): 补齐「退出」留痕 + 登录记录显示中文操作人
【问题①:退出动作在审计里完全不可见】
根因:后端没有 logout 接口。前端「退出」只清本地 localStorage、不产生任何
请求,中间件自然无从采集(中间件里早已预留 "logout" 动作映射,但端点没做)。
- 新增 POST /auth/logout,【仅用于留痕】。JWT 无状态,服务端本就没有可吊销
的会话,该接口不做任何令牌失效动作 —— 它存在的唯一目的,是让审计记下
「谁在何时退出了系统」。这点在 docstring 里写明,免得日后被误当安全边界。
- 挂 Depends(get_current_user),让 JWT 依赖把操作人写进 request.state,
从而记录到真实姓名而非「未认证」
- 前端 logout 改为【先上报、后清 token】。顺序不能反:api.ts 的请求拦截器
是从 localStorage 取 token 的,清掉后就发不出这个请求了。
刻意不 await、失败也不阻断 —— 用户点「退出」必须退得掉。
【问题②:登录记录的「操作人」显示英文账号而非中文名】
根因:登录接口只写了 request.state.audit_user(账号),没写 audit_display_name
—— 那一刻还不知道显示名。前端按 display_name || user_id 渲染,于是退化成账号。
- 改为登录成功后补写 display_name / role。可行的原因是中间件在 call_next
返回【之后】才落库,此刻写 request.state 依然能被采集到。
- 失败登录走不到这一步,保持「只有账号可追责」(密码绝不落库),语义不变。
|
2026-09-21 11:20:59 +08:00 |
|
|
|
14f707461d
|
feat(admin): 新增「操作审计」页面 + 收敛前端角色判断
- pages/admin/AdminAuditLogPage.tsx:审计日志查询页。支持操作人/模块/动作/
结果状态/日期区间筛选,表格按时间倒序,行内「详情」抽屉展示完整 URL、
UA、request_id、错误信息与变更详情。
中文标签(模块/动作)由服务端下发,前端不维护枚举映射 —— 与
constants/task.ts 里状态映射的既有做法一致,避免两端各写一份开始漂移。
- services/auditApi.ts:审计接口客户端与类型定义。
- 路由 /admin/audit + 侧边栏「操作审计」入口。
- AdminProductsPage 里手写的角色判断改为复用 isAdminRole():这是同一份
「管理员角色」规则的第 4 处副本,本次一并对齐(另一处 TaskFlowView 已在用)。
constants/task.ts 的注释同步指向后端新位置 core/roles.py。
验证:tsc --noEmit 通过;vite build 通过(产出独立 chunk
AdminAuditLogPage-*.js);对接真实后端校验响应字段与 TS 接口定义逐字段一致。
|
2026-09-21 02:28:17 +00:00 |
|
|
|
ee25b8fd23
|
feat: PC 端直接完结入口与当前工序口径(前端)
【直接完结入口】
- 共享 TransferModal 新增「🏁 直接完结」开关,与「入库」互斥;选中后下游字段
禁用(保留输入便于反悔)、标题/预览/按钮切换为独立视觉
- 入口仅超管/主管可见(useAuth + isAdminRole),并加防御性 useEffect 清掉
非管理员的残留选中态,避免提交出 finish_directly
- 表单重置改为「打开时重置」:TransferModal 被 memo 后常驻挂载会跨次残留状态,
且原实现于提交时清空会让等待期主题从「直接完结」闪回普通转交
【角色判断收口】
- 新增 ADMIN_ROLES / isAdminRole(与后端 task_service.ADMIN_ROLES 对齐)
此前该判断散落在 TaskFlowView / AdminProductsPage 各处,移动端那份还只判了
SUPER_ADMIN 漏了 SUPERVISOR,导致主管被前端误挡
【当前工序口径】
- 「当前工序」列改用后端派生的 current_step,不再用 overall_status ——
后者会被"最新主干任务名"覆盖,让已 COMPLETED 的历史工序(扫码出库/测试…)
冒充当前工序。显示与筛选值一并切换以保持一致
- ProductResponse 类型补齐 current_step
|
2026-09-17 17:05:51 +08:00 |
|
|
|
e707f3673d
|
feat: PC 端补齐直接完结通道
- taskApi.transferTask 增 finishDirectly 参数,按新 Schema 发送
{ next_tasks: [], finish_directly: true, note }
- TaskTransferPayload 支持 next_tasks / finish_directly,旧版单线字段降为可选
(后端仍兼容 next_assignees / next_task_name,存量调用不受影响)
- 共享 TransferModal 新增「🏁 直接完结(无下游,不入库)」开关:
与入库互斥,选中后下游字段禁用(保留输入便于反悔切回)、
切换独立标题/提示/预览/提交按钮,不再套用「将创建 N 个任务」模板
- 表单重置改为「展开时重置」:TransferModal 被 memo 后常驻挂载会跨次残留状态,
且原实现于提交时清空会让等待期主题从「直接完结」闪回普通转交
- TaskTreeViewer 与 AdminTasksPage 两个入口的 handleTransfer 签名对齐
|
2026-09-17 14:08:30 +08:00 |
|
|
|
2539bede3c
|
chore: 看板页头副标题改用车间口语措辞
原标题「产品 = 物理实体(身份证)| 任务 = 工序节点」偏学术抽象,车间管理人员
不易一眼建立对应关系。改为按「产品盯物、任务盯人」的直觉表述:
产品 = 车间里的物理设备 | 任务 = 派发给工人的生产指令(派工单)
配合卡片上已加的「待流转 / 待接收」口径 Tooltip,共同消除「产品数 > 任务数」
带来的误判。
|
2026-09-16 14:41:33 +08:00 |
|
|
|
dcc92b223e
|
feat: 生产看板多维度重构(全量在制品、时间维度联动、口径提示)
本次只含后端看板接口与 PC 端页面。移动端的体验优化已在之前的 12 个提交中
入库,不在本提交范围内。
后端 · 服务层 dashboard_service.py
- 在制品列表不再按 20 条静默截断:此前 `.limit(limit*2)` 预取再排序切片,
前端又拿数组长度当总数,表现为「卡片 23、列表却写共 20 个」的数据被吞。
现默认返回全量,limit 降级为防御性上限
- 产品流转「已完结」接入右上角时间筛选(since/until),废弃硬编码「本月」。
此前选「今天」也会看到整月产出,业务语义分裂;待流转/流转中仍为实时快照。
Product 表无 completed_at,以名下工序的完成时间锚定「完结时刻」
- 返工任务可见性:未完结卡点永远展示,已了结的仅限本月,且与卡片数字共用
同一份条件,避免「按钮显示 2、点开共 0 条」
- 驳回明细的「返工给」改为真实溯源:直接查派生出的返工任务当前 assignee_id,
不再复刻 reject_task 的推算逻辑(返工任务事后被转交时会显示旧名字)
后端 · 接口层 dashboard.py
- /wip-tasks 的 limit 默认 20→500、上限 100→1000
- /my-stats 支持 since/until,新增接收/转交/上传备注口径(与 PC 人员操作统计
逐字段交叉验证一致)
PC 端
- AdminDashboard: 在制品计数绑定真实总数并加截断提示、列表改为容器内滚动;
驳回明细只展示「已驳回」行(返工行不再独立成行,其信息已由「返工给」承载);
「待流转」「待接收」图例新增口径 Tooltip,消除「产品数 > 任务数」的误解;
移除已失真的时间筛选提示条
- App.tsx: dayjs 中文 locale 上提到应用根。此前散落在 AdminPeoplePage /
AnalyticsDashboard 两个页面里,而路由是 lazy 分割的 —— 直接打开概览页时
那两个模块未加载,日期面板就露出 Sep/Su/Mo
- AdminPeoplePage / AnalyticsDashboard: 移除重复的页面级 locale 设置
- dashboardApi.ts: fetchWipTasks 默认值同步为 500
|
2026-09-16 14:29:56 +08:00 |
|
|
|
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 |
|