Files
shanxia2.0/docs/demos/pl-plan-pair-stack-redesign.html
T
2026-10-02 09:28:00 +08:00

563 lines
20 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>运输计划 · 装/送极简优化</title>
<style>
:root {
--text: #1e293b;
--muted: #64748b;
--border: #e2e8f0;
--page: #f1f5f9;
--load: #059669;
--delivery: #0284c7;
--primary: #10b981;
}
* { box-sizing: border-box; }
body {
margin: 0;
padding: 28px 20px 72px;
font-family: Inter, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
font-size: 14px;
color: var(--text);
background: var(--page);
}
h1 { margin: 0 0 6px; font-size: 20px; font-weight: 700; }
.lead {
margin: 0 0 20px;
max-width: 900px;
color: var(--muted);
font-size: 13.5px;
line-height: 1.55;
}
.panel {
background: #fff;
border: 1px solid var(--border);
border-radius: 12px;
margin-bottom: 16px;
overflow: hidden;
}
.panel__head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 12px 16px;
border-bottom: 1px solid var(--border);
background: #fafbfc;
}
.panel__title { margin: 0; font-size: 14px; font-weight: 700; }
.panel__hint { margin: 0; font-size: 12px; color: var(--muted); }
.tag {
flex-shrink: 0;
padding: 2px 8px;
border-radius: 999px;
font-size: 11px;
font-weight: 600;
}
.tag--bad { color: #9a3412; background: #fff7ed; border: 1px solid #fed7aa; }
.tag--ok { color: #065f46; background: #ecfdf5; border: 1px solid #a7f3d0; }
.panel__body { padding: 14px 16px 16px; }
.toolbar-tip {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 10px;
font-size: 12px;
color: var(--muted);
}
.toolbar-tip em {
font-style: normal;
color: var(--text);
font-weight: 600;
}
table.grid {
width: 100%;
border-collapse: collapse;
font-size: 13px;
border: 1px solid var(--border);
border-radius: 8px;
overflow: hidden;
}
table.grid th,
table.grid td {
padding: 7px 10px;
border-bottom: 1px solid var(--border);
border-right: 1px solid var(--border);
vertical-align: middle;
}
table.grid th:last-child,
table.grid td:last-child { border-right: none; }
table.grid tr:last-child td { border-bottom: none; }
table.grid thead th {
background: #f8fafc;
color: var(--muted);
font-size: 12px;
font-weight: 600;
text-align: center;
white-space: nowrap;
}
table.grid .left { text-align: left; }
table.grid .c { text-align: center; }
table.grid tr.alt td { background: #f8fafc; }
/* —— 现状:满屏装/送 —— */
.old-pair {
display: flex;
flex-direction: column;
gap: 0;
width: 100%;
}
.old-pair__row {
display: flex;
align-items: flex-start;
gap: 6px;
padding: 2px 0;
}
.old-pair__row + .old-pair__row {
margin-top: 6px;
padding-top: 6px;
border-top: 1px dashed #e2e8f0;
}
.old-pair__label {
flex-shrink: 0;
width: 18px;
font-size: 12px;
font-weight: 800;
line-height: 1.45;
}
.old-pair__label.load { color: var(--load); }
.old-pair__label.delivery { color: var(--delivery); }
.old-pair__body { flex: 1; min-width: 0; }
.addr { font-weight: 600; line-height: 1.4; word-break: break-word; }
.time { margin-top: 2px; font-size: 12px; color: var(--muted); font-weight: 400; }
.num {
font-variant-numeric: tabular-nums;
font-weight: 600;
line-height: 1.45;
}
/* —— 优化公共:无标签叠放 —— */
.pair {
display: flex;
flex-direction: column;
width: 100%;
}
.pair__line {
padding: 1px 0;
line-height: 1.4;
}
.pair__line + .pair__line {
margin-top: 5px;
padding-top: 5px;
border-top: 1px dashed #e2e8f0;
}
/* A 纯中性 */
.v-a .pair__line { color: var(--text); }
/* B 字重差 */
.v-b .pair__line--load .num,
.v-b .pair__line--load .addr { font-weight: 700; color: var(--text); }
.v-b .pair__line--delivery .num,
.v-b .pair__line--delivery .addr { font-weight: 500; color: #475569; }
/* C 下行略淡 */
.v-c .pair__line--load { color: var(--text); }
.v-c .pair__line--delivery .num,
.v-c .pair__line--delivery .addr { color: var(--muted); font-weight: 500; }
.v-c .pair__line--delivery .time { color: #94a3b8; }
.compare {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 14px;
}
@media (max-width: 900px) {
.compare { grid-template-columns: 1fr; }
}
.mini-cards {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 12px;
margin-top: 4px;
}
@media (max-width: 900px) {
.mini-cards { grid-template-columns: 1fr; }
}
.mini {
border: 1px solid var(--border);
border-radius: 10px;
overflow: hidden;
background: #fff;
}
.mini.is-pick {
border-color: #6ee7b7;
box-shadow: 0 0 0 1px #a7f3d0;
}
.mini__head {
padding: 10px 12px;
border-bottom: 1px solid var(--border);
background: #fafbfc;
}
.mini__head strong { display: block; font-size: 13px; }
.mini__head span { display: block; margin-top: 2px; font-size: 11px; color: var(--muted); }
.mini__body { padding: 10px 12px 12px; }
.mini__note { margin: 8px 0 0; font-size: 11.5px; color: var(--muted); line-height: 1.4; }
.foot {
margin-top: 8px;
padding: 14px 16px;
max-width: 900px;
background: #fff;
border: 1px solid var(--border);
border-radius: 10px;
font-size: 13px;
color: var(--muted);
line-height: 1.55;
}
.foot strong { color: var(--text); }
</style>
</head>
<body>
<h1>装 / 送 · 在 redesign 基础上做减法</h1>
<p class="lead">
去掉花哨标记和复杂结构。原则只有一条:<strong>格子里只放数据</strong>,靠「上装下送」约定区分。
下面先看「现状 vs 优化」对照,再在三种极简微调里选一版。
</p>
<!-- 对照 -->
<div class="compare">
<section class="panel">
<div class="panel__head">
<div>
<h2 class="panel__title">现状</h2>
<p class="panel__hint">每个格子都印「装」「送」</p>
</div>
<span class="tag tag--bad">吵</span>
</div>
<div class="panel__body">
<table class="grid">
<thead>
<tr>
<th class="left">地址</th>
<th>计划数量</th>
<th>单价</th>
<th>金额</th>
</tr>
</thead>
<tbody>
<tr>
<td class="left">
<div class="old-pair">
<div class="old-pair__row">
<span class="old-pair__label load">装</span>
<div class="old-pair__body">
<div class="addr">宜昌西陵化工园 A12</div>
<div class="time">09-16 08:30</div>
</div>
</div>
<div class="old-pair__row">
<span class="old-pair__label delivery">送</span>
<div class="old-pair__body">
<div class="addr">武汉东西湖物流大道 88</div>
<div class="time">09-16 16:00</div>
</div>
</div>
</div>
</td>
<td class="c">
<div class="old-pair">
<div class="old-pair__row">
<span class="old-pair__label load">装</span>
<span class="num">0.01</span>
</div>
<div class="old-pair__row">
<span class="old-pair__label delivery">送</span>
<span class="num">0.01</span>
</div>
</div>
</td>
<td class="c">
<div class="old-pair">
<div class="old-pair__row">
<span class="old-pair__label load">装</span>
<span class="num">10</span>
</div>
<div class="old-pair__row">
<span class="old-pair__label delivery">送</span>
<span class="num" style="color:#64748b;font-weight:500">—</span>
</div>
</div>
</td>
<td class="c">
<div class="old-pair">
<div class="old-pair__row">
<span class="old-pair__label load">装</span>
<span class="num">33</span>
</div>
<div class="old-pair__row">
<span class="old-pair__label delivery">送</span>
<span class="num" style="color:#64748b;font-weight:500">—</span>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
<section class="panel">
<div class="panel__head">
<div>
<h2 class="panel__title">优化后(推荐底稿)</h2>
<p class="panel__hint">无汉字 · 无色条 · 只留虚线</p>
</div>
<span class="tag tag--ok">静</span>
</div>
<div class="panel__body">
<div class="toolbar-tip">约定:<em>上行 = 装货</em>,<em>下行 = 送货</em></div>
<table class="grid v-a">
<thead>
<tr>
<th class="left">地址</th>
<th>计划数量</th>
<th>单价</th>
<th>金额</th>
</tr>
</thead>
<tbody>
<tr>
<td class="left">
<div class="pair">
<div class="pair__line pair__line--load">
<div class="addr">宜昌西陵化工园 A12</div>
<div class="time">09-16 08:30</div>
</div>
<div class="pair__line pair__line--delivery">
<div class="addr">武汉东西湖物流大道 88</div>
<div class="time">09-16 16:00</div>
</div>
</div>
</td>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">0.01</span></div>
<div class="pair__line pair__line--delivery"><span class="num">0.01</span></div>
</div>
</td>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">10</span></div>
<div class="pair__line pair__line--delivery"><span class="num" style="color:#64748b;font-weight:500">—</span></div>
</div>
</td>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">33</span></div>
<div class="pair__line pair__line--delivery"><span class="num" style="color:#64748b;font-weight:500">—</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
<!-- 三版微调 -->
<section class="panel">
<div class="panel__head">
<div>
<h2 class="panel__title">三种极简微调(结构相同,只差一点字重/明度)</h2>
<p class="panel__hint">都不加颜色标记,任选其一即可落地</p>
</div>
</div>
<div class="panel__body">
<div class="mini-cards">
<div class="mini is-pick">
<div class="mini__head">
<strong>A · 纯中性</strong>
<span>推荐 · 与右侧「优化后」一致</span>
</div>
<div class="mini__body v-a">
<table class="grid">
<thead>
<tr><th>计划数量</th><th>单价</th><th>金额</th></tr>
</thead>
<tbody>
<tr>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">0.01</span></div>
<div class="pair__line pair__line--delivery"><span class="num">0.01</span></div>
</div>
</td>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">10</span></div>
<div class="pair__line pair__line--delivery"><span class="num" style="color:#64748b;font-weight:500">—</span></div>
</div>
</td>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">33</span></div>
<div class="pair__line pair__line--delivery"><span class="num" style="color:#64748b;font-weight:500">—</span></div>
</div>
</td>
</tr>
<tr class="alt">
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">12</span></div>
<div class="pair__line pair__line--delivery"><span class="num">12</span></div>
</div>
</td>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">8.5</span></div>
<div class="pair__line pair__line--delivery"><span class="num">9.0</span></div>
</div>
</td>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">102</span></div>
<div class="pair__line pair__line--delivery"><span class="num">108</span></div>
</div>
</td>
</tr>
</tbody>
</table>
<p class="mini__note">上下同色同重,只靠虚线分层。最干净。</p>
</div>
</div>
<div class="mini">
<div class="mini__head">
<strong>B · 字重差</strong>
<span>上行略粗 · 下行略细</span>
</div>
<div class="mini__body v-b">
<table class="grid">
<thead>
<tr><th>计划数量</th><th>单价</th><th>金额</th></tr>
</thead>
<tbody>
<tr>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">0.01</span></div>
<div class="pair__line pair__line--delivery"><span class="num">0.01</span></div>
</div>
</td>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">10</span></div>
<div class="pair__line pair__line--delivery"><span class="num">—</span></div>
</div>
</td>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">33</span></div>
<div class="pair__line pair__line--delivery"><span class="num">—</span></div>
</div>
</td>
</tr>
<tr class="alt">
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">12</span></div>
<div class="pair__line pair__line--delivery"><span class="num">12</span></div>
</div>
</td>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">8.5</span></div>
<div class="pair__line pair__line--delivery"><span class="num">9.0</span></div>
</div>
</td>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">102</span></div>
<div class="pair__line pair__line--delivery"><span class="num">108</span></div>
</div>
</td>
</tr>
</tbody>
</table>
<p class="mini__note">不靠颜色,用粗细暗示「上主下次」。</p>
</div>
</div>
<div class="mini">
<div class="mini__head">
<strong>C · 下行略淡</strong>
<span>上行正文色 · 下行 muted</span>
</div>
<div class="mini__body v-c">
<table class="grid">
<thead>
<tr><th>计划数量</th><th>单价</th><th>金额</th></tr>
</thead>
<tbody>
<tr>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">0.01</span></div>
<div class="pair__line pair__line--delivery"><span class="num">0.01</span></div>
</div>
</td>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">10</span></div>
<div class="pair__line pair__line--delivery"><span class="num">—</span></div>
</div>
</td>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">33</span></div>
<div class="pair__line pair__line--delivery"><span class="num">—</span></div>
</div>
</td>
</tr>
<tr class="alt">
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">12</span></div>
<div class="pair__line pair__line--delivery"><span class="num">12</span></div>
</div>
</td>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">8.5</span></div>
<div class="pair__line pair__line--delivery"><span class="num">9.0</span></div>
</div>
</td>
<td class="c">
<div class="pair">
<div class="pair__line pair__line--load"><span class="num">102</span></div>
<div class="pair__line pair__line--delivery"><span class="num">108</span></div>
</div>
</td>
</tr>
</tbody>
</table>
<p class="mini__note">层次更明显一点,仍无彩色标记。</p>
</div>
</div>
</div>
</div>
</section>
<div class="foot">
回复 <strong>A</strong> / <strong>B</strong> / <strong>C</strong>,我按该版改正式列表样式(隐藏「装/送」文字,保留上下叠放 + 虚线)。
</div>
</body>
</html>