{{ currentName }}

导入中 {{ runningCount }} 已导入附件 {{ attachments.length }} 个 · 日期 {{ dates.length }} 个
无匹配附件
{{ a.date }} · {{ a.filename }} {{ a._row_count.toLocaleString() }} 行
下滑加载更多(已显示 {{ attachmentRenderCount }} / {{ filteredAttachments.length }})
在 ① 中选择附件即可查询;模糊匹配会同时检索日期与文件名。
当前查询:附件 {{ attachmentName || '(未选择)' }} · 组件料号 {{ q.part_number }} · 顶层产品 {{ tpList.join(' / ') }}
命中行数
{{ dash.kpi.row_count?.toLocaleString() }}
组件净需求量总和
{{ fmt(dash.kpi.net_demand_sum) }}
在途最大值
{{ fmt(dash.kpi.in_transit_max) }}
LT(交货周期)
{{ fmt(dash.kpi.lt) }}
库存可用量最大值
{{ fmt(dash.kpi.inventory_available_max) }}
LT可见需求 · 主值=组件期望到货时间≤快照日+LT的全部净需求(含已逾期未关);括号内为逾期/未来拆分
计算中…
所选范围无数据
单个物料 LT 需求 · 输入料号,返回 LT可见需求(主值=组件期望到货时间≤快照日+LT全部净需求,含逾期)+ 逾期/未来拆分,口径与组件净需求(AI列)一致
物料料号(组件)
{{ ltSimple.note }}
LT可见需求(≤快照日+LT,含逾期)
{{ fmt(ltSimple.visible_demand) }}
其中·已逾期未关(≤快照日)
{{ fmt(ltSimple.overdue_demand) }}
未来 LT 窗口需求(参考)
{{ fmt(ltSimple.future_window_demand) }}
物料:{{ ltSimple.part_number }}
LT(天):{{ ltSimple.lt }}
时间窗口:{{ ltSimple.window_start }} ~ {{ ltSimple.window_end }}
计入(≤快照日+LT):{{ ltSimple.included_rows }} 行 · 其中逾期 {{ ltSimple.overdue_included_rows }} 行 · 未来 {{ ltSimple.future_included_rows }}
顶层产品所属事业部分布
当前导入的附件中不含「顶层产品所属事业部」字段
导入含该列的附件后自动展示
该范围内暂无数据
物控用量占比
当前导入的附件中不含「物控」字段
导入含该列的附件后自动展示
该范围内暂无数据
市场代码占比
当前导入的附件中不含「市场代码」字段
导入含该列的附件后自动展示
该范围内暂无数据
顶层产品描述占比(已检索 vs 未检索)
未输入顶层产品,无可对比项
填入顶层产品后,将对比「已检索」与「其余」的净需求量占比
顶层产品描述消耗量 TOP5
当前导入的附件中不含「顶层产品描述」字段
导入含该列的附件后自动展示
该范围内暂无数据
{{ it.name }}
{{ fmt(it.value) }} · {{ (it.ratio*100).toFixed(1) }}%
数据清单
共 {{ listTotal.toLocaleString() }} 条 · 第 {{ listPage }}/{{ Math.max(1,Math.ceil(listTotal/listPageSize)) }} 页
{{ c }} 操作
{{ fmt(r[c]) }}
暂无数据
请选择附件、输入组件料号后点击「查询」。
系统会按 附件 → 组件料号 → 顶层产品 进行检索并展示看板与数据清单。
批量导入附件
将 .xlsb / .xlsx 文件拖拽到此处,或
多 sheet 附件将全部导入;日期从文件名解析(如 2026年8月25日)
{{ f.name }}
正在上传 {{ upload.done }}/{{ upload.total }} 个文件 {{ upload.percent.toFixed(1) }}% {{ upload.label }} (上传不锁定界面,可继续查询)
导入任务 {{ runningCount }} 个并行
进行中… 已完成 出错
文件名状态阶段已解析行明细
{{ f.filename }} 成功 跳过 失败 导入中 等待 {{ stageLabel(f) }} {{ f.rows ? f.rows.toLocaleString() : '—' }}
导入在后台进行(多个文件并行解析),您可切到「数据查询」继续使用已导入的数据,全部完成后会自动刷新附件列表。
已导入附件({{ attachments.length }})
日期文件名Sheet总行数命中列/未命中列导入时间操作
{{ a.date }} {{ a.filename }} {{ a.sheets.length }} {{ a._row_count.toLocaleString() }} {{ a.sheets[0]? a.sheets[0].mapped_fields : '—' }} / {{ a._unmapped }} {{ a.imported_at }}
尚未导入任何附件
下滑加载更多(已显示 {{ listRenderCount }} / {{ attachments.length }})
数据清单管理
共 {{ rowsTotal.toLocaleString() }} 条
{{ c }} {{ f.sort_by===c ? (f.sort_dir==='desc'?'▼':'▲') : '' }} 操作
{{ fmt(r[c]) }}
暂无数据
第 {{ f.page }}/{{ Math.max(1,Math.ceil(rowsTotal/f.page_size)) }} 页
最近编辑记录(叠加覆盖,不改动原始 Parquet)
附件Sheet行号字段新值更新时间
{{ e.attachment_id }}{{ e.sheet_index }}{{ e.row_id }} {{ e.field }}{{ e.value }}{{ e.updated_at }}
暂无编辑记录
{{ refTitle || '参考数据' }}
来源:{{ refSource || '—' }} · 共 {{ refTotal.toLocaleString() }} 行 · 更新于 {{ refUpdated || '—' }}
{{ c }} 操作
{{ fmt(r[c]) }}
暂无数据(可在「重新导入」后刷新,或点击「+ 新增行」手工录入)
第 {{ refPage }}/{{ Math.max(1,Math.ceil(refTotal/refPageSize)) }} 页 · 共 {{ refTotal.toLocaleString() }} 行
编辑记录 · 行 {{ editRow._row_id }}
{{ refEditIsAdd ? '新增行' : ('编辑行 #'+refEditRow._rid) }}
{{ progress.label || '查询中…' }}
{{ progress.pct || 0 }}%
已用时 {{ progress.elapsed }}s
{{ toastMsg }}