- 货位口径按前缀:XA/XD/XE=拣货位,XX/X9/X5/X4=存储位 - 判断逻辑改为当日订单量>拣货位库存的超出部分=需从存储位补到拣货位的量(上限存储位库存) - 订单取自 rpt.jst_Orders/jst_qmcust_orderlist(含组合装展开),按最近订单日 - 状态:需补货/存储不足/拣货位充足/今日无单;移除旧的货位清单导入(前缀规则取代) - 前端列与说明同步更新
314 lines
6.1 KiB
CSS
314 lines
6.1 KiB
CSS
/* 缺货补货监控 —— 页头 / 指标卡 / 工具栏 / 明细表 */
|
|
|
|
.brp-page {
|
|
--brp-gap: 12px;
|
|
--brp-border: var(--sycm-border-card, #e6e6e6);
|
|
--brp-radius: var(--sycm-radius-xl, 12px);
|
|
--brp-shadow: var(--sycm-shadow-card, 0 1px 3px rgba(0, 0, 0, 0.035));
|
|
--brp-blue: #2062e6;
|
|
--brp-red: #e5484d;
|
|
--brp-orange: #e8890c;
|
|
--brp-grey: #6b7280;
|
|
--brp-green: #1bb574;
|
|
}
|
|
|
|
/* ── 页头 ───────────────────────────────────────────────── */
|
|
.brp-hero {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: flex-end;
|
|
justify-content: space-between;
|
|
gap: 12px 24px;
|
|
margin-bottom: var(--brp-gap);
|
|
}
|
|
|
|
.brp-hero__main {
|
|
min-width: 320px;
|
|
}
|
|
|
|
.brp-hero__title {
|
|
margin: 0;
|
|
color: var(--sycm-text-strong, #262626);
|
|
font-size: 20px;
|
|
font-weight: 600;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.brp-hero__desc {
|
|
margin: 4px 0 0;
|
|
max-width: 820px;
|
|
color: var(--sycm-text-secondary, #595959);
|
|
font-size: 12px;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
.brp-hero__meta {
|
|
display: grid;
|
|
gap: 3px;
|
|
color: var(--sycm-text-secondary, #595959);
|
|
font-size: 12px;
|
|
line-height: 1.6;
|
|
text-align: right;
|
|
}
|
|
|
|
.brp-warn {
|
|
color: var(--brp-orange);
|
|
}
|
|
|
|
.brp-ok {
|
|
color: var(--brp-green);
|
|
}
|
|
|
|
/* ── 指标卡 ─────────────────────────────────────────────── */
|
|
.brp-metrics {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: var(--brp-gap);
|
|
margin-bottom: var(--brp-gap);
|
|
}
|
|
|
|
.brp-metric {
|
|
position: relative;
|
|
overflow: hidden;
|
|
padding: 12px 14px 11px;
|
|
border: 1px solid var(--brp-border);
|
|
border-radius: var(--brp-radius);
|
|
background: var(--sycm-bg-container, #fff);
|
|
box-shadow: var(--brp-shadow);
|
|
}
|
|
|
|
.brp-metric::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
bottom: 0;
|
|
left: 0;
|
|
width: 3px;
|
|
background: var(--brp-tone, var(--brp-blue));
|
|
}
|
|
|
|
.brp-metric--red { --brp-tone: var(--brp-red); }
|
|
.brp-metric--orange { --brp-tone: var(--brp-orange); }
|
|
.brp-metric--blue { --brp-tone: var(--brp-blue); }
|
|
.brp-metric--grey { --brp-tone: var(--brp-grey); }
|
|
|
|
.brp-metric__label {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 4px;
|
|
color: var(--sycm-text-tertiary, #8c8c8c);
|
|
font-size: 12px;
|
|
cursor: help;
|
|
}
|
|
|
|
.brp-metric__info {
|
|
font-size: 11px;
|
|
}
|
|
|
|
.brp-metric__value {
|
|
margin-top: 6px;
|
|
color: var(--sycm-text-strong, #262626);
|
|
font-size: 24px;
|
|
font-variant-numeric: tabular-nums;
|
|
font-weight: 600;
|
|
line-height: 1.15;
|
|
}
|
|
|
|
.brp-metric__unit {
|
|
margin-left: 4px;
|
|
color: var(--sycm-text-tertiary, #8c8c8c);
|
|
font-size: 12px;
|
|
font-weight: 400;
|
|
}
|
|
|
|
.brp-metric__foot {
|
|
margin-top: 6px;
|
|
color: var(--sycm-text-secondary, #595959);
|
|
font-size: 12px;
|
|
line-height: 1.4;
|
|
}
|
|
|
|
/* ── 工具栏 ─────────────────────────────────────────────── */
|
|
.brp-toolbar {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
gap: 8px 12px;
|
|
margin-bottom: 10px;
|
|
padding: 10px 12px;
|
|
border: 1px solid var(--brp-border);
|
|
border-radius: var(--brp-radius);
|
|
background: var(--sycm-bg-container, #fff);
|
|
box-shadow: var(--brp-shadow);
|
|
}
|
|
|
|
.brp-toolbar__field {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
}
|
|
|
|
.brp-toolbar__label {
|
|
color: var(--sycm-text-tertiary, #8c8c8c);
|
|
font-size: 12px;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.brp-toolbar__spacer {
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.brp-alert {
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
/* ── 表格 ───────────────────────────────────────────────── */
|
|
.brp-table-spin {
|
|
display: block;
|
|
}
|
|
|
|
.brp-table .ant-table-thead > tr > th {
|
|
background: #fafafa;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.brp-table .ant-table-tbody > tr > td {
|
|
font-size: 12px;
|
|
}
|
|
|
|
.brp-status-tag {
|
|
margin-inline-end: 0;
|
|
}
|
|
|
|
.brp-sku {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 2px;
|
|
}
|
|
|
|
.brp-sku__code {
|
|
color: var(--sycm-text-strong, #262626);
|
|
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.brp-sku__supplier {
|
|
overflow: hidden;
|
|
color: var(--sycm-text-tertiary, #8c8c8c);
|
|
font-size: 11px;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.brp-bins {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 4px;
|
|
}
|
|
|
|
.brp-bin {
|
|
margin: 0;
|
|
padding: 0 6px;
|
|
border-color: #d9e2f2;
|
|
background: #f5f8ff;
|
|
color: #2b4a80;
|
|
font-size: 11px;
|
|
line-height: 18px;
|
|
}
|
|
|
|
.brp-bin b {
|
|
margin-left: 4px;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.brp-bin.is-zero {
|
|
border-color: #f3d2d2;
|
|
background: #fff6f6;
|
|
color: #a33a3a;
|
|
}
|
|
|
|
.brp-bin--more {
|
|
border-color: #eee;
|
|
background: #fafafa;
|
|
color: #8c8c8c;
|
|
}
|
|
|
|
.brp-qty {
|
|
font-variant-numeric: tabular-nums;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.brp-qty--zero {
|
|
color: var(--brp-red);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.brp-qty--suggest {
|
|
color: var(--brp-blue);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.brp-qty--warn {
|
|
color: var(--brp-orange);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.brp-qty--danger {
|
|
color: var(--brp-red);
|
|
font-weight: 700;
|
|
}
|
|
|
|
.brp-qty--muted {
|
|
color: var(--sycm-text-tertiary, #8c8c8c);
|
|
font-weight: 400;
|
|
}
|
|
|
|
.brp-muted {
|
|
color: var(--sycm-text-tertiary, #8c8c8c);
|
|
}
|
|
|
|
/* ── 口径说明 ───────────────────────────────────────────── */
|
|
.brp-notes {
|
|
margin-top: 14px;
|
|
padding: 12px 14px;
|
|
border: 1px dashed var(--brp-border);
|
|
border-radius: var(--brp-radius);
|
|
background: var(--sycm-bg-container, #fff);
|
|
color: var(--sycm-text-secondary, #595959);
|
|
font-size: 12px;
|
|
line-height: 1.7;
|
|
}
|
|
|
|
.brp-notes__title {
|
|
margin-bottom: 6px;
|
|
color: var(--sycm-text-strong, #262626);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.brp-notes ul {
|
|
margin: 0;
|
|
padding-left: 18px;
|
|
}
|
|
|
|
.brp-notes li + li {
|
|
margin-top: 4px;
|
|
}
|
|
|
|
@media (max-width: 1200px) {
|
|
.brp-metrics {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
|
|
.brp-hero__meta {
|
|
text-align: left;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 640px) {
|
|
.brp-metrics {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
}
|