业务库只能还原 4/12 个流水列且口径与聚水潭不一致(采购按单据日期、销售按订单发货日期, jst_salesOutboundInfo.qty 全为 0),调拨/盘点/加工/其它出入库无单据表,故以官方导出为准: - 新增本地表 daily_inventory_official(biz_date + warehouse 存期初/12 流水列/期末) - 新增解析与导入服务:xlsx 解析、仓库 ID 映射、「期初+流水=期末」恒等式校验 - GET /api/daily-inventory 支持 ?date= 指定业务日,官方值优先、缺失回退推算并返回来源标记 - 新增 POST /api/daily-inventory/official-import(xlsx 上传/JSON)与 GET /official 查询 - 导入后回写本地库存快照(官方期初→上一日期末、官方期末→当日期末),使推算也对齐 - 前端:业务日切换、官方/推算来源标记、导入弹窗、口径说明同步更新 - 仓库清单补入「简尚-横林三仓主仓」(聚水潭导出中存在) - 命令行导入:npm run inventory:import-official -- <日期> <xlsx>
185 lines
3.2 KiB
CSS
185 lines
3.2 KiB
CSS
.daily-inventory-page {
|
|
padding: 16px 20px 24px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 12px;
|
|
}
|
|
|
|
.daily-inventory-header {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
}
|
|
|
|
.daily-inventory-header__title {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 4px;
|
|
}
|
|
|
|
.daily-inventory-header__help {
|
|
font-size: 13px;
|
|
}
|
|
|
|
.daily-inventory-header__meta {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 16px;
|
|
font-size: 13px;
|
|
color: rgba(0, 0, 0, 0.55);
|
|
}
|
|
|
|
.daily-inventory-th-tip {
|
|
border-bottom: 1px dashed rgba(0, 0, 0, 0.35);
|
|
cursor: help;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.daily-inventory-table .ant-table-thead > tr > th {
|
|
white-space: nowrap;
|
|
font-size: 12px;
|
|
padding: 6px 8px;
|
|
}
|
|
|
|
.daily-inventory-table .ant-table-tbody > tr > td {
|
|
padding: 5px 8px;
|
|
font-size: 13px;
|
|
}
|
|
|
|
/* 运行时取数的列:加淡蓝底纹,与基准值区分 */
|
|
.daily-inventory-table .daily-inventory-col--runtime {
|
|
background: rgba(22, 119, 255, 0.04);
|
|
}
|
|
|
|
/* 暂无单据来源的列:淡灰底纹,提示该列待 DBA 补表 */
|
|
.daily-inventory-table .daily-inventory-col--unavailable {
|
|
background: rgba(0, 0, 0, 0.03);
|
|
}
|
|
|
|
.daily-inventory-cell--na {
|
|
color: rgba(0, 0, 0, 0.25);
|
|
}
|
|
|
|
.daily-inventory-warehouse {
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.daily-inventory-cell--out {
|
|
color: #cf1322;
|
|
}
|
|
|
|
.daily-inventory-cell--in {
|
|
color: rgba(0, 0, 0, 0.85);
|
|
}
|
|
|
|
.daily-inventory-cell--zero {
|
|
color: rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
/* 业务库推算值:标灰 + 斜体,提示与聚水潭官方口径存在差异 */
|
|
.daily-inventory-cell--derived {
|
|
color: rgba(0, 0, 0, 0.42);
|
|
font-style: italic;
|
|
}
|
|
|
|
/* 仓库名后的来源标签 */
|
|
.daily-inventory-tag {
|
|
margin-left: 6px;
|
|
transform: scale(0.85);
|
|
transform-origin: left center;
|
|
}
|
|
|
|
/* 导入聚水潭进销存弹窗 */
|
|
.daily-inventory-import {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 12px;
|
|
}
|
|
|
|
.daily-inventory-import-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
}
|
|
|
|
.daily-inventory-import-label {
|
|
width: 72px;
|
|
color: rgba(0, 0, 0, 0.75);
|
|
}
|
|
|
|
.daily-inventory-row--total > td {
|
|
font-weight: 600;
|
|
background: rgba(0, 0, 0, 0.03);
|
|
}
|
|
|
|
/* 定时截图通知设置弹窗 */
|
|
.daily-inventory-notify-form {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
.daily-inventory-notify-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.daily-inventory-notify-label {
|
|
width: 120px;
|
|
flex: none;
|
|
color: rgba(0, 0, 0, 0.75);
|
|
}
|
|
|
|
.daily-inventory-notify-recipients {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 6px;
|
|
margin-left: 128px;
|
|
min-height: 24px;
|
|
}
|
|
|
|
.daily-inventory-notify-meta {
|
|
margin-top: 14px;
|
|
padding-top: 12px;
|
|
border-top: 1px solid rgba(0, 0, 0, 0.08);
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 4px;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.daily-inventory-notify-runs {
|
|
margin-top: 12px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 4px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.daily-inventory-notify-run {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
color: rgba(0, 0, 0, 0.6);
|
|
}
|
|
|
|
.daily-inventory-footer {
|
|
font-size: 12px;
|
|
}
|
|
|
|
.daily-inventory-help p {
|
|
margin: 0 0 6px;
|
|
line-height: 1.7;
|
|
font-size: 13px;
|
|
white-space: pre-wrap;
|
|
}
|
|
|
|
.daily-inventory-help p.is-indent {
|
|
padding-left: 16px;
|
|
color: rgba(0, 0, 0, 0.65);
|
|
}
|