From 124b15d0940efd5e712e647f09a3d91330f6fd87 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Thu, 18 Jun 2026 15:09:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/qc-wo-sample-tab-demos/_shared.css | 334 ++++++ .../compare-all-v2.html | 1057 +++++++++++++++++ docs/qc-wo-sample-tab-demos/compare-all.html | 968 +++++++++++++++ .../independent-pills.html | 422 +++++++ docs/qc-wo-sample-tab-demos/index.html | 263 ++++ ...ebd9226792f74f035c85a080826adb0cc942c.json | 1 + ...1fb4426b82a55965f25cbafd8e4671bbb7e65.json | 1 + 7 files changed, 3046 insertions(+) create mode 100644 docs/qc-wo-sample-tab-demos/_shared.css create mode 100644 docs/qc-wo-sample-tab-demos/compare-all-v2.html create mode 100644 docs/qc-wo-sample-tab-demos/compare-all.html create mode 100644 docs/qc-wo-sample-tab-demos/independent-pills.html create mode 100644 docs/qc-wo-sample-tab-demos/index.html create mode 100644 web-admin/src/graphify-out/cache/ast/31521ad3f25f885d648e347323debd9226792f74f035c85a080826adb0cc942c.json create mode 100644 web-admin/src/graphify-out/cache/ast/b32800f63ee411ce4ce9f1385e11fb4426b82a55965f25cbafd8e4671bbb7e65.json diff --git a/docs/qc-wo-sample-tab-demos/_shared.css b/docs/qc-wo-sample-tab-demos/_shared.css new file mode 100644 index 00000000..75594a89 --- /dev/null +++ b/docs/qc-wo-sample-tab-demos/_shared.css @@ -0,0 +1,334 @@ +/* 质检工单 · 同样本多工单 Tab 选型 Demo(Fresh Mint Token) */ +:root { + --primary: #10b981; + --primary-dark: #059669; + --primary-bg: #ecfdf5; + --text: #1e293b; + --text-muted: #64748b; + --border: #e2e8f0; + --border-soft: #d9e8e2; + --bg-page: #f8fafc; + --surface: #fff; + --radius: 10px; + --radius-sm: 8px; + --reception: #047857; + --reception-bg: #ecfdf5; + --reception-border: #a7f3d0; + --production: #b45309; + --production-bg: #fffbeb; + --production-border: #fcd34d; +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + min-height: 100vh; + font-family: Inter, -apple-system, BlinkMacSystemFont, sans-serif; + font-size: 14px; + line-height: 1.5; + color: var(--text); + background: var(--bg-page); +} + +.demo-banner { + position: sticky; + top: 0; + z-index: 200; + padding: 12px 24px; + background: var(--surface); + border-bottom: 1px solid var(--border); + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 16px; + flex-wrap: wrap; + box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04); +} + +.demo-banner h1 { + margin: 0; + font-size: 15px; + font-weight: 600; +} + +.demo-banner p { + margin: 4px 0 0; + font-size: 12px; + color: var(--text-muted); + max-width: 760px; + line-height: 1.55; +} + +.demo-banner__actions { + display: flex; + gap: 8px; + flex-wrap: wrap; + flex-shrink: 0; +} + +.demo-link { + display: inline-flex; + align-items: center; + height: 32px; + padding: 0 12px; + border-radius: var(--radius-sm); + border: 1px solid var(--border); + background: var(--surface); + font-size: 12px; + font-weight: 500; + color: var(--text); + text-decoration: none; + transition: border-color 0.15s, background 0.15s; +} + +.demo-link:hover { + border-color: #a7f3d0; + background: var(--primary-bg); + color: var(--primary-dark); +} + +.page-container { + max-width: 960px; + margin: 0 auto; + padding: 20px 24px 48px; +} + +.compare-stack { + display: flex; + flex-direction: column; + gap: 28px; +} + +.compare-block { + background: var(--surface); + border: 1px solid var(--border-soft); + border-radius: var(--radius); + overflow: hidden; +} + +.compare-block__label { + padding: 14px 18px; + background: #fafafa; + border-bottom: 1px solid var(--border); +} + +.compare-block__label h2 { + margin: 0; + font-size: 14px; + font-weight: 600; + display: flex; + align-items: center; + gap: 8px; + flex-wrap: wrap; +} + +.compare-block__label p { + margin: 6px 0 0; + font-size: 12px; + color: var(--text-muted); + line-height: 1.55; +} + +.variant-tag { + display: inline-flex; + align-items: center; + height: 22px; + padding: 0 8px; + border-radius: 6px; + font-size: 11px; + font-weight: 700; + letter-spacing: 0.02em; +} + +.variant-tag--baseline { + background: #f1f5f9; + color: #475569; +} + +.variant-tag--rec { + background: var(--primary-bg); + color: var(--primary-dark); + border: 1px solid #a7f3d0; +} + +.compare-block__body { + padding: 16px; + background: #f1f5f9; +} + +.pros-cons { + margin-top: 8px; + display: flex; + flex-direction: column; + gap: 4px; + font-size: 12px; +} + +.pro { + color: #047857; +} + +.con { + color: #94a3b8; +} + +/* ── 样本组卡片骨架 ── */ +.qc-sample-row { + display: flex; + flex-direction: column; + min-width: 0; + border: 1px solid #e2e8f0; + border-radius: 10px; + background: #fff; + overflow: hidden; + transition: border-color 0.15s ease, box-shadow 0.15s ease; +} + +.qc-sample-row:hover { + border-color: #a8d4c4; + box-shadow: 0 2px 8px rgba(4, 120, 87, 0.08); +} + +.qc-sample-row__ctx { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px 12px; + padding: 12px 16px; + background: linear-gradient(180deg, var(--primary-bg) 0%, #fff 100%); + border-bottom: 1px solid #d1fae5; +} + +.qc-sample-row__idx { + flex-shrink: 0; + font-size: 12px; + color: var(--text-muted); + min-width: 20px; +} + +.qc-sample-row__code { + font-size: 14px; + font-weight: 600; + color: #1e293b; + font-family: ui-monospace, Menlo, monospace; +} + +.qc-sample-row__sub { + flex: 1; + min-width: 0; + font-size: 12px; + color: var(--text-muted); +} + +.qc-sample-row__badge { + flex-shrink: 0; + font-size: 11px; + font-weight: 600; + padding: 2px 10px; + border-radius: 999px; + background: var(--primary-bg); + color: #047857; + border: 1px solid #d1fae5; +} + +/* 工单内容占位 */ +.qc-card-placeholder { + padding: 14px 16px; + background: #fafafa; + border-top: 1px solid var(--border); +} + +.qc-card-placeholder__head { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px; + margin-bottom: 10px; +} + +.qc-card-placeholder__no { + font-size: 15px; + font-weight: 600; + font-family: ui-monospace, Menlo, monospace; +} + +.qc-card-placeholder__meta { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 8px; + font-size: 12px; + color: var(--text-muted); +} + +.qc-card-placeholder__meta span strong { + display: block; + font-size: 11px; + font-weight: 500; + color: #94a3b8; +} + +.qc-card-placeholder__tasks { + margin-top: 10px; + padding: 10px 12px; + background: #f8fafc; + border-radius: 8px; + font-size: 12px; + color: var(--text-muted); +} + +/* Tag 模拟 */ +.tag { + display: inline-flex; + align-items: center; + height: 22px; + padding: 0 8px; + border-radius: 4px; + font-size: 12px; + font-weight: 500; + border: 1px solid transparent; +} + +.tag--success { + background: #ecfdf5; + color: #047857; + border-color: #a7f3d0; +} + +.tag--warning { + background: #fffbeb; + color: #b45309; + border-color: #fcd34d; +} + +.tag--info { + background: #f1f5f9; + color: #475569; + border-color: #e2e8f0; +} + +.tag--reception { + background: var(--reception-bg); + color: var(--reception); + border-color: var(--reception-border); +} + +.tag--production { + background: var(--production-bg); + color: var(--production); + border-color: var(--production-border); +} + +/* 通用 tab 按钮 reset */ +.tab-btn { + font-family: inherit; + cursor: pointer; + user-select: none; +} + +.tab-btn:focus-visible { + outline: 2px solid var(--primary); + outline-offset: 2px; +} diff --git a/docs/qc-wo-sample-tab-demos/compare-all-v2.html b/docs/qc-wo-sample-tab-demos/compare-all-v2.html new file mode 100644 index 00000000..d7c9d518 --- /dev/null +++ b/docs/qc-wo-sample-tab-demos/compare-all-v2.html @@ -0,0 +1,1057 @@ + + +
+ + ++ 上一组反馈「不够明显」。本组加大触控面积、始终展示两条工单、强化未选中态的视觉提示(虚线边框、👆 动画、Radio + 清单、大 Toggle 等)。← 第一组 +
+卡片顶部 50/50 分栏:左绿「样本接收」、右琥珀「生产过程」。未选中侧降饱和 + 底部「👆 点击切换」动画;选中侧底部色条 +「当前查看」角标。
+两条工单以列表行始终展示:Radio 圆点 + 类型 + 工单号。未选中行右侧绿色「切换至此」按钮;选中行左侧 4px 色条高亮。
+居中 oversized 分段开关,emoji 图标 + 15px 粗体类别名。切换时白底滑块 + 阴影动效,下方显示当前工单号。
+两个 56px 大图标方块并排:未选中虚线边框 +「点击查看」圆角按钮;选中实线边框 + 整卡染色 + 阴影浮起。
+顶部提示「本样本有 2 条质检工单,请点击切换」;下方两条摘要 Chip 并排,未选中带绿色「切换」实心按钮。
+左侧固定 200px 导航列列出两条工单(未选中显示「点击」),右侧预览当前选中工单摘要——Master-Detail 模式。
++ 场景:同一样本编码下存在样本接收与生产过程两条质检工单,需在卡片内切换查看。 + 下方 6 套方案均可点击交互,请对比哪套最能传达「可切换、类别不同」。 +
+胶囊 Tab 内嵌序号 + 来源标签 + 工单号 + 状态;未选中时来源与状态均灰化,类别差异不明显。
+渐进改良:保留横向 Tab 布局,未选中仍保留绿/琥珀来源色,并加一行引导 + 未选中 Tab 后缀「点击查看」。
+两条工单并排展示为可点击卡片,图标 + 大标题区分来源,未选中角标「点击切换」,选中侧渐变高亮。
+强调业务先后顺序:样本接收在前、生产过程在后,中间箭头连接;未选中步骤提示「点击切换至此工单」。
+类似系统分段控件,占满卡片宽度;选中项白底浮起,类型名加粗,下方显示工单号与状态。
++ 「切换工单:」前缀 + 带左侧竖条(绿=接收、琥珀=生产)的大按钮;未选中显示「点此查看」微提示,选中展示完整工单号与状态。 +
++ 在现网胶囊内容结构不变的前提下,将每个 Tab 从轨道连体改为独立胶囊,并加大间距。 + 下方 A 为现网对照,B/C/D 为独立方案(间距 16 / 24 / 32px,均可点击切换)。 +
+多个 Tab 包在同一 panel-pill-tabs__track 绿底容器内,胶囊之间 gap 10px,视觉上像一组。
去掉外层轨道,每个 Tab 自带白底 + 2px 边框 + 轻阴影;未选中按来源保留绿/琥珀边框色。
+同 B,胶囊间距加大到 24px,分离感更强。
+间距 32px,胶囊 min-height 40px、圆角 12px,点击区域更大。
+
+ 针对 QcWorkOrderSampleGroup.vue 中「同一样本下样本接收 + 生产过程两条工单」的切换区域。
+ 共两组 HTML 原型,均可点击交互。
+
去掉轨道连体容器,每个 Tab 独立白底胶囊,间距 16 / 24 / 32px 三档对比。
+现网对照:panel-pill-tabs__track 绿底容器。
独立边框 + 来源色,间距 16px。
+ 推荐 + 最新 +分离感更强。
+ 最新 +最大间距 + 略放大点击区域。
+ 最新 +加大色块面积、两条工单始终可见、未选中显式「切换/点击」 affordance。
+整宽 50/50 绿/琥珀分栏,未选中降饱和 + 👆 动画提示。
+ 推荐 + 第二组 +列表单选形态,未选中行「切换至此」按钮。
+ 第二组 +居中 oversized 二选一开关,emoji + 粗体类别名。
+ 推荐 + 第二组 +56px 大图标 + 虚线边框 = 可点击,视觉重量最大。
+ 第二组 +提示横幅 + 并排 Chip,未选中绿色「切换」按钮。
+ 第二组 +Master-Detail,左侧工单列表始终可见。
+ 第二组 +在现有 pill-tab 形态上微调,改动量较小。
+胶囊 Tab、双卡片、步骤条、Segmented、色条 Tab 等 6 套。
+ 第一组 +