pl-plan-pair-stack-redesign.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1" />
  6. <title>运输计划 · 装/送极简优化</title>
  7. <style>
  8. :root {
  9. --text: #1e293b;
  10. --muted: #64748b;
  11. --border: #e2e8f0;
  12. --page: #f1f5f9;
  13. --load: #059669;
  14. --delivery: #0284c7;
  15. --primary: #10b981;
  16. }
  17. * { box-sizing: border-box; }
  18. body {
  19. margin: 0;
  20. padding: 28px 20px 72px;
  21. font-family: Inter, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  22. font-size: 14px;
  23. color: var(--text);
  24. background: var(--page);
  25. }
  26. h1 { margin: 0 0 6px; font-size: 20px; font-weight: 700; }
  27. .lead {
  28. margin: 0 0 20px;
  29. max-width: 900px;
  30. color: var(--muted);
  31. font-size: 13.5px;
  32. line-height: 1.55;
  33. }
  34. .panel {
  35. background: #fff;
  36. border: 1px solid var(--border);
  37. border-radius: 12px;
  38. margin-bottom: 16px;
  39. overflow: hidden;
  40. }
  41. .panel__head {
  42. display: flex;
  43. align-items: center;
  44. justify-content: space-between;
  45. gap: 12px;
  46. padding: 12px 16px;
  47. border-bottom: 1px solid var(--border);
  48. background: #fafbfc;
  49. }
  50. .panel__title { margin: 0; font-size: 14px; font-weight: 700; }
  51. .panel__hint { margin: 0; font-size: 12px; color: var(--muted); }
  52. .tag {
  53. flex-shrink: 0;
  54. padding: 2px 8px;
  55. border-radius: 999px;
  56. font-size: 11px;
  57. font-weight: 600;
  58. }
  59. .tag--bad { color: #9a3412; background: #fff7ed; border: 1px solid #fed7aa; }
  60. .tag--ok { color: #065f46; background: #ecfdf5; border: 1px solid #a7f3d0; }
  61. .panel__body { padding: 14px 16px 16px; }
  62. .toolbar-tip {
  63. display: flex;
  64. align-items: center;
  65. gap: 8px;
  66. margin-bottom: 10px;
  67. font-size: 12px;
  68. color: var(--muted);
  69. }
  70. .toolbar-tip em {
  71. font-style: normal;
  72. color: var(--text);
  73. font-weight: 600;
  74. }
  75. table.grid {
  76. width: 100%;
  77. border-collapse: collapse;
  78. font-size: 13px;
  79. border: 1px solid var(--border);
  80. border-radius: 8px;
  81. overflow: hidden;
  82. }
  83. table.grid th,
  84. table.grid td {
  85. padding: 7px 10px;
  86. border-bottom: 1px solid var(--border);
  87. border-right: 1px solid var(--border);
  88. vertical-align: middle;
  89. }
  90. table.grid th:last-child,
  91. table.grid td:last-child { border-right: none; }
  92. table.grid tr:last-child td { border-bottom: none; }
  93. table.grid thead th {
  94. background: #f8fafc;
  95. color: var(--muted);
  96. font-size: 12px;
  97. font-weight: 600;
  98. text-align: center;
  99. white-space: nowrap;
  100. }
  101. table.grid .left { text-align: left; }
  102. table.grid .c { text-align: center; }
  103. table.grid tr.alt td { background: #f8fafc; }
  104. /* —— 现状:满屏装/送 —— */
  105. .old-pair {
  106. display: flex;
  107. flex-direction: column;
  108. gap: 0;
  109. width: 100%;
  110. }
  111. .old-pair__row {
  112. display: flex;
  113. align-items: flex-start;
  114. gap: 6px;
  115. padding: 2px 0;
  116. }
  117. .old-pair__row + .old-pair__row {
  118. margin-top: 6px;
  119. padding-top: 6px;
  120. border-top: 1px dashed #e2e8f0;
  121. }
  122. .old-pair__label {
  123. flex-shrink: 0;
  124. width: 18px;
  125. font-size: 12px;
  126. font-weight: 800;
  127. line-height: 1.45;
  128. }
  129. .old-pair__label.load { color: var(--load); }
  130. .old-pair__label.delivery { color: var(--delivery); }
  131. .old-pair__body { flex: 1; min-width: 0; }
  132. .addr { font-weight: 600; line-height: 1.4; word-break: break-word; }
  133. .time { margin-top: 2px; font-size: 12px; color: var(--muted); font-weight: 400; }
  134. .num {
  135. font-variant-numeric: tabular-nums;
  136. font-weight: 600;
  137. line-height: 1.45;
  138. }
  139. /* —— 优化公共:无标签叠放 —— */
  140. .pair {
  141. display: flex;
  142. flex-direction: column;
  143. width: 100%;
  144. }
  145. .pair__line {
  146. padding: 1px 0;
  147. line-height: 1.4;
  148. }
  149. .pair__line + .pair__line {
  150. margin-top: 5px;
  151. padding-top: 5px;
  152. border-top: 1px dashed #e2e8f0;
  153. }
  154. /* A 纯中性 */
  155. .v-a .pair__line { color: var(--text); }
  156. /* B 字重差 */
  157. .v-b .pair__line--load .num,
  158. .v-b .pair__line--load .addr { font-weight: 700; color: var(--text); }
  159. .v-b .pair__line--delivery .num,
  160. .v-b .pair__line--delivery .addr { font-weight: 500; color: #475569; }
  161. /* C 下行略淡 */
  162. .v-c .pair__line--load { color: var(--text); }
  163. .v-c .pair__line--delivery .num,
  164. .v-c .pair__line--delivery .addr { color: var(--muted); font-weight: 500; }
  165. .v-c .pair__line--delivery .time { color: #94a3b8; }
  166. .compare {
  167. display: grid;
  168. grid-template-columns: 1fr 1fr;
  169. gap: 14px;
  170. }
  171. @media (max-width: 900px) {
  172. .compare { grid-template-columns: 1fr; }
  173. }
  174. .mini-cards {
  175. display: grid;
  176. grid-template-columns: repeat(3, 1fr);
  177. gap: 12px;
  178. margin-top: 4px;
  179. }
  180. @media (max-width: 900px) {
  181. .mini-cards { grid-template-columns: 1fr; }
  182. }
  183. .mini {
  184. border: 1px solid var(--border);
  185. border-radius: 10px;
  186. overflow: hidden;
  187. background: #fff;
  188. }
  189. .mini.is-pick {
  190. border-color: #6ee7b7;
  191. box-shadow: 0 0 0 1px #a7f3d0;
  192. }
  193. .mini__head {
  194. padding: 10px 12px;
  195. border-bottom: 1px solid var(--border);
  196. background: #fafbfc;
  197. }
  198. .mini__head strong { display: block; font-size: 13px; }
  199. .mini__head span { display: block; margin-top: 2px; font-size: 11px; color: var(--muted); }
  200. .mini__body { padding: 10px 12px 12px; }
  201. .mini__note { margin: 8px 0 0; font-size: 11.5px; color: var(--muted); line-height: 1.4; }
  202. .foot {
  203. margin-top: 8px;
  204. padding: 14px 16px;
  205. max-width: 900px;
  206. background: #fff;
  207. border: 1px solid var(--border);
  208. border-radius: 10px;
  209. font-size: 13px;
  210. color: var(--muted);
  211. line-height: 1.55;
  212. }
  213. .foot strong { color: var(--text); }
  214. </style>
  215. </head>
  216. <body>
  217. <h1>装 / 送 · 在 redesign 基础上做减法</h1>
  218. <p class="lead">
  219. 去掉花哨标记和复杂结构。原则只有一条:<strong>格子里只放数据</strong>,靠「上装下送」约定区分。
  220. 下面先看「现状 vs 优化」对照,再在三种极简微调里选一版。
  221. </p>
  222. <!-- 对照 -->
  223. <div class="compare">
  224. <section class="panel">
  225. <div class="panel__head">
  226. <div>
  227. <h2 class="panel__title">现状</h2>
  228. <p class="panel__hint">每个格子都印「装」「送」</p>
  229. </div>
  230. <span class="tag tag--bad">吵</span>
  231. </div>
  232. <div class="panel__body">
  233. <table class="grid">
  234. <thead>
  235. <tr>
  236. <th class="left">地址</th>
  237. <th>计划数量</th>
  238. <th>单价</th>
  239. <th>金额</th>
  240. </tr>
  241. </thead>
  242. <tbody>
  243. <tr>
  244. <td class="left">
  245. <div class="old-pair">
  246. <div class="old-pair__row">
  247. <span class="old-pair__label load">装</span>
  248. <div class="old-pair__body">
  249. <div class="addr">宜昌西陵化工园 A12</div>
  250. <div class="time">09-16 08:30</div>
  251. </div>
  252. </div>
  253. <div class="old-pair__row">
  254. <span class="old-pair__label delivery">送</span>
  255. <div class="old-pair__body">
  256. <div class="addr">武汉东西湖物流大道 88</div>
  257. <div class="time">09-16 16:00</div>
  258. </div>
  259. </div>
  260. </div>
  261. </td>
  262. <td class="c">
  263. <div class="old-pair">
  264. <div class="old-pair__row">
  265. <span class="old-pair__label load">装</span>
  266. <span class="num">0.01</span>
  267. </div>
  268. <div class="old-pair__row">
  269. <span class="old-pair__label delivery">送</span>
  270. <span class="num">0.01</span>
  271. </div>
  272. </div>
  273. </td>
  274. <td class="c">
  275. <div class="old-pair">
  276. <div class="old-pair__row">
  277. <span class="old-pair__label load">装</span>
  278. <span class="num">10</span>
  279. </div>
  280. <div class="old-pair__row">
  281. <span class="old-pair__label delivery">送</span>
  282. <span class="num" style="color:#64748b;font-weight:500">—</span>
  283. </div>
  284. </div>
  285. </td>
  286. <td class="c">
  287. <div class="old-pair">
  288. <div class="old-pair__row">
  289. <span class="old-pair__label load">装</span>
  290. <span class="num">33</span>
  291. </div>
  292. <div class="old-pair__row">
  293. <span class="old-pair__label delivery">送</span>
  294. <span class="num" style="color:#64748b;font-weight:500">—</span>
  295. </div>
  296. </div>
  297. </td>
  298. </tr>
  299. </tbody>
  300. </table>
  301. </div>
  302. </section>
  303. <section class="panel">
  304. <div class="panel__head">
  305. <div>
  306. <h2 class="panel__title">优化后(推荐底稿)</h2>
  307. <p class="panel__hint">无汉字 · 无色条 · 只留虚线</p>
  308. </div>
  309. <span class="tag tag--ok">静</span>
  310. </div>
  311. <div class="panel__body">
  312. <div class="toolbar-tip">约定:<em>上行 = 装货</em>,<em>下行 = 送货</em></div>
  313. <table class="grid v-a">
  314. <thead>
  315. <tr>
  316. <th class="left">地址</th>
  317. <th>计划数量</th>
  318. <th>单价</th>
  319. <th>金额</th>
  320. </tr>
  321. </thead>
  322. <tbody>
  323. <tr>
  324. <td class="left">
  325. <div class="pair">
  326. <div class="pair__line pair__line--load">
  327. <div class="addr">宜昌西陵化工园 A12</div>
  328. <div class="time">09-16 08:30</div>
  329. </div>
  330. <div class="pair__line pair__line--delivery">
  331. <div class="addr">武汉东西湖物流大道 88</div>
  332. <div class="time">09-16 16:00</div>
  333. </div>
  334. </div>
  335. </td>
  336. <td class="c">
  337. <div class="pair">
  338. <div class="pair__line pair__line--load"><span class="num">0.01</span></div>
  339. <div class="pair__line pair__line--delivery"><span class="num">0.01</span></div>
  340. </div>
  341. </td>
  342. <td class="c">
  343. <div class="pair">
  344. <div class="pair__line pair__line--load"><span class="num">10</span></div>
  345. <div class="pair__line pair__line--delivery"><span class="num" style="color:#64748b;font-weight:500">—</span></div>
  346. </div>
  347. </td>
  348. <td class="c">
  349. <div class="pair">
  350. <div class="pair__line pair__line--load"><span class="num">33</span></div>
  351. <div class="pair__line pair__line--delivery"><span class="num" style="color:#64748b;font-weight:500">—</span></div>
  352. </div>
  353. </td>
  354. </tr>
  355. </tbody>
  356. </table>
  357. </div>
  358. </section>
  359. </div>
  360. <!-- 三版微调 -->
  361. <section class="panel">
  362. <div class="panel__head">
  363. <div>
  364. <h2 class="panel__title">三种极简微调(结构相同,只差一点字重/明度)</h2>
  365. <p class="panel__hint">都不加颜色标记,任选其一即可落地</p>
  366. </div>
  367. </div>
  368. <div class="panel__body">
  369. <div class="mini-cards">
  370. <div class="mini is-pick">
  371. <div class="mini__head">
  372. <strong>A · 纯中性</strong>
  373. <span>推荐 · 与右侧「优化后」一致</span>
  374. </div>
  375. <div class="mini__body v-a">
  376. <table class="grid">
  377. <thead>
  378. <tr><th>计划数量</th><th>单价</th><th>金额</th></tr>
  379. </thead>
  380. <tbody>
  381. <tr>
  382. <td class="c">
  383. <div class="pair">
  384. <div class="pair__line pair__line--load"><span class="num">0.01</span></div>
  385. <div class="pair__line pair__line--delivery"><span class="num">0.01</span></div>
  386. </div>
  387. </td>
  388. <td class="c">
  389. <div class="pair">
  390. <div class="pair__line pair__line--load"><span class="num">10</span></div>
  391. <div class="pair__line pair__line--delivery"><span class="num" style="color:#64748b;font-weight:500">—</span></div>
  392. </div>
  393. </td>
  394. <td class="c">
  395. <div class="pair">
  396. <div class="pair__line pair__line--load"><span class="num">33</span></div>
  397. <div class="pair__line pair__line--delivery"><span class="num" style="color:#64748b;font-weight:500">—</span></div>
  398. </div>
  399. </td>
  400. </tr>
  401. <tr class="alt">
  402. <td class="c">
  403. <div class="pair">
  404. <div class="pair__line pair__line--load"><span class="num">12</span></div>
  405. <div class="pair__line pair__line--delivery"><span class="num">12</span></div>
  406. </div>
  407. </td>
  408. <td class="c">
  409. <div class="pair">
  410. <div class="pair__line pair__line--load"><span class="num">8.5</span></div>
  411. <div class="pair__line pair__line--delivery"><span class="num">9.0</span></div>
  412. </div>
  413. </td>
  414. <td class="c">
  415. <div class="pair">
  416. <div class="pair__line pair__line--load"><span class="num">102</span></div>
  417. <div class="pair__line pair__line--delivery"><span class="num">108</span></div>
  418. </div>
  419. </td>
  420. </tr>
  421. </tbody>
  422. </table>
  423. <p class="mini__note">上下同色同重,只靠虚线分层。最干净。</p>
  424. </div>
  425. </div>
  426. <div class="mini">
  427. <div class="mini__head">
  428. <strong>B · 字重差</strong>
  429. <span>上行略粗 · 下行略细</span>
  430. </div>
  431. <div class="mini__body v-b">
  432. <table class="grid">
  433. <thead>
  434. <tr><th>计划数量</th><th>单价</th><th>金额</th></tr>
  435. </thead>
  436. <tbody>
  437. <tr>
  438. <td class="c">
  439. <div class="pair">
  440. <div class="pair__line pair__line--load"><span class="num">0.01</span></div>
  441. <div class="pair__line pair__line--delivery"><span class="num">0.01</span></div>
  442. </div>
  443. </td>
  444. <td class="c">
  445. <div class="pair">
  446. <div class="pair__line pair__line--load"><span class="num">10</span></div>
  447. <div class="pair__line pair__line--delivery"><span class="num">—</span></div>
  448. </div>
  449. </td>
  450. <td class="c">
  451. <div class="pair">
  452. <div class="pair__line pair__line--load"><span class="num">33</span></div>
  453. <div class="pair__line pair__line--delivery"><span class="num">—</span></div>
  454. </div>
  455. </td>
  456. </tr>
  457. <tr class="alt">
  458. <td class="c">
  459. <div class="pair">
  460. <div class="pair__line pair__line--load"><span class="num">12</span></div>
  461. <div class="pair__line pair__line--delivery"><span class="num">12</span></div>
  462. </div>
  463. </td>
  464. <td class="c">
  465. <div class="pair">
  466. <div class="pair__line pair__line--load"><span class="num">8.5</span></div>
  467. <div class="pair__line pair__line--delivery"><span class="num">9.0</span></div>
  468. </div>
  469. </td>
  470. <td class="c">
  471. <div class="pair">
  472. <div class="pair__line pair__line--load"><span class="num">102</span></div>
  473. <div class="pair__line pair__line--delivery"><span class="num">108</span></div>
  474. </div>
  475. </td>
  476. </tr>
  477. </tbody>
  478. </table>
  479. <p class="mini__note">不靠颜色,用粗细暗示「上主下次」。</p>
  480. </div>
  481. </div>
  482. <div class="mini">
  483. <div class="mini__head">
  484. <strong>C · 下行略淡</strong>
  485. <span>上行正文色 · 下行 muted</span>
  486. </div>
  487. <div class="mini__body v-c">
  488. <table class="grid">
  489. <thead>
  490. <tr><th>计划数量</th><th>单价</th><th>金额</th></tr>
  491. </thead>
  492. <tbody>
  493. <tr>
  494. <td class="c">
  495. <div class="pair">
  496. <div class="pair__line pair__line--load"><span class="num">0.01</span></div>
  497. <div class="pair__line pair__line--delivery"><span class="num">0.01</span></div>
  498. </div>
  499. </td>
  500. <td class="c">
  501. <div class="pair">
  502. <div class="pair__line pair__line--load"><span class="num">10</span></div>
  503. <div class="pair__line pair__line--delivery"><span class="num">—</span></div>
  504. </div>
  505. </td>
  506. <td class="c">
  507. <div class="pair">
  508. <div class="pair__line pair__line--load"><span class="num">33</span></div>
  509. <div class="pair__line pair__line--delivery"><span class="num">—</span></div>
  510. </div>
  511. </td>
  512. </tr>
  513. <tr class="alt">
  514. <td class="c">
  515. <div class="pair">
  516. <div class="pair__line pair__line--load"><span class="num">12</span></div>
  517. <div class="pair__line pair__line--delivery"><span class="num">12</span></div>
  518. </div>
  519. </td>
  520. <td class="c">
  521. <div class="pair">
  522. <div class="pair__line pair__line--load"><span class="num">8.5</span></div>
  523. <div class="pair__line pair__line--delivery"><span class="num">9.0</span></div>
  524. </div>
  525. </td>
  526. <td class="c">
  527. <div class="pair">
  528. <div class="pair__line pair__line--load"><span class="num">102</span></div>
  529. <div class="pair__line pair__line--delivery"><span class="num">108</span></div>
  530. </div>
  531. </td>
  532. </tr>
  533. </tbody>
  534. </table>
  535. <p class="mini__note">层次更明显一点,仍无彩色标记。</p>
  536. </div>
  537. </div>
  538. </div>
  539. </div>
  540. </section>
  541. <div class="foot">
  542. 回复 <strong>A</strong> / <strong>B</strong> / <strong>C</strong>,我按该版改正式列表样式(隐藏「装/送」文字,保留上下叠放 + 虚线)。
  543. </div>
  544. </body>
  545. </html>