From ab417ca90f223e118b1164c10317e053061e3c85 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Tue, 26 May 2026 14:16:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B1=A5=E7=BA=A6=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdminKuaishouCloudFulfillment.css | 159 +++++++++ .../components/AdminKuaishouCloudRuleCard.vue | 336 ++++++++++-------- 2 files changed, 342 insertions(+), 153 deletions(-) diff --git a/apps/frontend/src/views/admin/fulfillment/kuaishou-cloud/AdminKuaishouCloudFulfillment.css b/apps/frontend/src/views/admin/fulfillment/kuaishou-cloud/AdminKuaishouCloudFulfillment.css index 06450e94..77cbadc0 100644 --- a/apps/frontend/src/views/admin/fulfillment/kuaishou-cloud/AdminKuaishouCloudFulfillment.css +++ b/apps/frontend/src/views/admin/fulfillment/kuaishou-cloud/AdminKuaishouCloudFulfillment.css @@ -285,6 +285,150 @@ border: 1px solid var(--border-default); } +.rule-editor { + display: grid; + gap: var(--space-3); +} + +.rule-editor-main { + display: grid; + grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr); + gap: var(--space-3); + align-items: stretch; +} + +.rule-panel { + display: grid; + align-content: start; + gap: var(--space-4); + min-width: 0; + padding: var(--space-4); + border: 1px solid var(--border-default); + border-radius: var(--radius-md); + background: var(--bg-surface); +} + +.rule-panel--strategy { + background: var(--bg-subtle); +} + +.rule-panel-head { + display: flex; + justify-content: space-between; + gap: var(--space-3); + align-items: center; + min-width: 0; +} + +.rule-panel-head > span { + color: var(--text-secondary); + font-size: var(--text-xs); + line-height: 1.5; + text-align: right; +} + +.rule-panel-title { + display: flex; + align-items: center; + gap: var(--space-2); + min-width: 0; + color: var(--text-primary); +} + +.rule-panel-title strong { + font-size: var(--text-base); + font-weight: 700; +} + +.rule-step { + display: inline-grid; + place-items: center; + width: 30px; + height: 24px; + border-radius: var(--radius-sm); + background: var(--bg-subtle); + color: var(--text-secondary); + font-size: var(--text-xs); + font-weight: 700; +} + +.rule-panel--strategy .rule-step { + background: var(--bg-surface); +} + +.mapping-grid--core { + gap: var(--space-3) var(--space-4); +} + +.strategy-grid { + display: grid; + grid-template-columns: minmax(150px, 0.24fr) minmax(150px, 0.24fr) minmax(0, 1fr); + gap: var(--space-4); + align-items: end; +} + +.strategy-checks { + display: flex; + flex-wrap: wrap; + gap: var(--space-2) var(--space-4); + min-height: 32px; + align-items: center; +} + +.advanced-fields { + border: 1px dashed var(--border-default); + border-radius: var(--radius-md); + background: var(--bg-surface); +} + +.advanced-fields summary { + display: flex; + justify-content: space-between; + gap: var(--space-3); + align-items: center; + padding: var(--space-3) var(--space-4); + color: var(--text-primary); + cursor: pointer; + list-style: none; +} + +.advanced-fields summary::-webkit-details-marker { + display: none; +} + +.advanced-fields summary span { + font-weight: 700; +} + +.advanced-fields summary small { + color: var(--text-secondary); + font-size: var(--text-xs); + line-height: 1.5; + text-align: right; +} + +.advanced-fields summary::after { + content: '展开'; + flex: 0 0 auto; + min-width: 40px; + color: var(--color-primary); + font-size: var(--text-xs); + font-weight: 700; + text-align: right; +} + +.advanced-fields[open] summary { + border-bottom: 1px dashed var(--border-default); +} + +.advanced-fields[open] summary::after { + content: '收起'; +} + +.advanced-grid { + padding: var(--space-4); +} + .field-wide { grid-column: 1 / -1; } @@ -320,6 +464,7 @@ .binding-actions { display: flex; flex-wrap: wrap; + justify-content: flex-end; gap: var(--space-3); align-items: center; padding-top: var(--space-3); @@ -353,12 +498,26 @@ .overview-stats, .lookup-toolbar, + .rule-editor-main, + .strategy-grid, .mapping-editor, .mapping-grid, .mapping-extra { grid-template-columns: 1fr; } + .rule-panel-head, + .advanced-fields summary { + display: grid; + grid-template-columns: 1fr; + align-items: start; + } + + .rule-panel-head > span, + .advanced-fields summary small { + text-align: left; + } + .mapping-arrow { display: none; } diff --git a/apps/frontend/src/views/admin/fulfillment/kuaishou-cloud/components/AdminKuaishouCloudRuleCard.vue b/apps/frontend/src/views/admin/fulfillment/kuaishou-cloud/components/AdminKuaishouCloudRuleCard.vue index d5dc1caf..b16057e6 100644 --- a/apps/frontend/src/views/admin/fulfillment/kuaishou-cloud/components/AdminKuaishouCloudRuleCard.vue +++ b/apps/frontend/src/views/admin/fulfillment/kuaishou-cloud/components/AdminKuaishouCloudRuleCard.vue @@ -77,16 +77,164 @@ const emit = defineEmits<{ }} -
- - - + + + + 最推荐的命中条件。没有特殊情况时,只填这一项即可。 + + + + + + + + + + +
+
+
+ 02 + 履约资源 +
+ 账号、cloud SKU 和核销店铺 +
+ + + + + + + 执行时从左到右尝试,SKU 列表使用第一个账号加载。 + + + + + + + + + + + + + + + + 来自“平台店铺 -> 快手小店核销”配置。 + + +
+
+ +
+
+
+ 03 + 执行策略 +
+ 一般保持默认即可 +
+ + + + + + + + + +
+ 启用规则 + 自动购买 + 发货后退号 + 发货后核销 +
+
+
+
+ +
+ + 高级匹配与备注 + 多店铺、多平台或人工排查时再展开 + + - + - - - @@ -132,153 +272,47 @@ const emit = defineEmits<{ v-model="item.externalSkuName" class="text-input" maxlength="200" - placeholder="用于名称匹配" + placeholder="只有需要按名称匹配时再填" /> - + - - - - - - - - - - - - - - - - - - - - - - - - 执行时会从左到右尝试,SKU 列表使用第一个账号加载。 - - - - - - - 先填内部 SKU / 商品名,再选择会更容易匹配。 - - - - - + + + + + + + - +
- - - - - - - 来自"平台店铺 -> 快手小店核销"配置,保存时会自动带出店铺名。 - - - - - - - - - - - - -
- 启用规则 - 自动购买 - 发货后退号 - 发货后核销 +
删除