From 1f642585d1d561a176ec4d60c8be3b595a090bbe Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Wed, 28 Oct 2026 17:53:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(card):=20=E5=A2=9E=E5=8A=A0=E5=90=8D?= =?UTF-8?q?=E7=89=87=E5=8C=BA=E5=9D=97=E9=85=8D=E7=BD=AE=E9=A1=B9=EF=BC=8C?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E9=80=90=E5=90=91=E5=86=85=E8=BE=B9=E8=B7=9D?= =?UTF-8?q?=E5=92=8C=E7=8B=AC=E7=AB=8B=E6=88=90=E5=9D=97=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components-diy/diy-card-mini.vue | 12 ++++++- components-diy/diy-card-self.vue | 59 ++++++++++++++++++++++++++++++++ components-diy/diy-card-show.vue | 59 ++++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+), 1 deletion(-) diff --git a/components-diy/diy-card-mini.vue b/components-diy/diy-card-mini.vue index 912d02a..ae65f9f 100644 --- a/components-diy/diy-card-mini.vue +++ b/components-diy/diy-card-mini.vue @@ -282,7 +282,17 @@ const DEFAULT_BLOCK_ORDER = 'bio,acts,rows,social,qr,meta'; */ function blockCustomSpacing(c, prefix) { if (!flagOn(c[prefix + 'SpacingCustom'], false)) return ''; - const side = (k) => px2rpx(num(c[prefix + k], 0)); + // 2.24 直配兜底: 逐向开关已开, 但四向值全为 0 且未被商家手动改过(touched=0) + // → 说明是「后端直写配置」而非编辑器接管(编辑器开逐向时会先把统一内边距铺进四向) + // → 此时逐向内边距回落统一内边距, 避免内边距被压成 0(独立成块看着「没内边距」) + const SIDES = ['Top', 'Right', 'Bottom', 'Left']; + const touched = num(c[prefix + 'SpacingTouched'], 0) === 1; + let padBase = 0; + if (!touched) { + const anySide = SIDES.some(s => num(c[prefix + 'Padding' + s], 0) !== 0 || num(c[prefix + 'Margin' + s], 0) !== 0); + if (!anySide) padBase = num(c[prefix + 'BlockPad'], 0); + } + const side = (k) => px2rpx(num(c[prefix + k], 0)) + (k.indexOf('Padding') === 0 ? px2rpx(padBase) : 0); const m = [side('MarginTop'), side('MarginRight'), side('MarginBottom'), side('MarginLeft')]; const p = [side('PaddingTop'), side('PaddingRight'), side('PaddingBottom'), side('PaddingLeft')]; return 'margin: ' + m.join('rpx ') + 'rpx; padding: ' + p.join('rpx ') + 'rpx;'; diff --git a/components-diy/diy-card-self.vue b/components-diy/diy-card-self.vue index 1b04696..3ae3d8a 100644 --- a/components-diy/diy-card-self.vue +++ b/components-diy/diy-card-self.vue @@ -195,6 +195,65 @@ export default { qrPaddingRight: v.qrPaddingRight, qrPaddingBottom: v.qrPaddingBottom, qrPaddingLeft: v.qrPaddingLeft, + // 2.20.4 逐向「已被手动改过」标记(C 端只透传, 渲染不消费; 保持与 config 同源) + rowsSpacingTouched: v.rowsSpacingTouched, + actsSpacingTouched: v.actsSpacingTouched, + qrSpacingTouched: v.qrSpacingTouched, + // 2.22 简介区块(开关/标题/行数/独立块/逐向) + showBio: v.showBio, + bioTitleShow: v.bioTitleShow, + bioTitle: v.bioTitle, + bioMaxLines: v.bioMaxLines, + bioSize: v.bioSize, + bioColor: v.bioColor, + bioLineHeight: v.bioLineHeight, + bioBlockBg: v.bioBlockBg, + bioBlockRadius: v.bioBlockRadius, + bioBlockPad: v.bioBlockPad, + bioSpacingCustom: v.bioSpacingCustom, + bioMarginTop: v.bioMarginTop, + bioMarginRight: v.bioMarginRight, + bioMarginBottom: v.bioMarginBottom, + bioMarginLeft: v.bioMarginLeft, + bioPaddingTop: v.bioPaddingTop, + bioPaddingRight: v.bioPaddingRight, + bioPaddingBottom: v.bioPaddingBottom, + bioPaddingLeft: v.bioPaddingLeft, + bioSpacingTouched: v.bioSpacingTouched, + // 2.22 社交媒体区块(开关/独立块/逐向) + showSocial: v.showSocial, + socialBlockBg: v.socialBlockBg, + socialBlockRadius: v.socialBlockRadius, + socialBlockPad: v.socialBlockPad, + socialSpacingCustom: v.socialSpacingCustom, + socialMarginTop: v.socialMarginTop, + socialMarginRight: v.socialMarginRight, + socialMarginBottom: v.socialMarginBottom, + socialMarginLeft: v.socialMarginLeft, + socialPaddingTop: v.socialPaddingTop, + socialPaddingRight: v.socialPaddingRight, + socialPaddingBottom: v.socialPaddingBottom, + socialPaddingLeft: v.socialPaddingLeft, + socialSpacingTouched: v.socialSpacingTouched, + // 2.22 名片标签 / 来源标注 + showTags: v.showTags, + showSource: v.showSource, + // 2.23 区块顺序(六个可独立成块模块任意排序) + blockOrder: v.blockOrder, + // 2.24 标签与来源(meta)区块独立成块 + 逐向 + metaBlockBg: v.metaBlockBg, + metaBlockRadius: v.metaBlockRadius, + metaBlockPad: v.metaBlockPad, + metaSpacingCustom: v.metaSpacingCustom, + metaMarginTop: v.metaMarginTop, + metaMarginRight: v.metaMarginRight, + metaMarginBottom: v.metaMarginBottom, + metaMarginLeft: v.metaMarginLeft, + metaPaddingTop: v.metaPaddingTop, + metaPaddingRight: v.metaPaddingRight, + metaPaddingBottom: v.metaPaddingBottom, + metaPaddingLeft: v.metaPaddingLeft, + metaSpacingTouched: v.metaSpacingTouched, }; }, boxStyle() { diff --git a/components-diy/diy-card-show.vue b/components-diy/diy-card-show.vue index 4a0da06..580affa 100644 --- a/components-diy/diy-card-show.vue +++ b/components-diy/diy-card-show.vue @@ -157,6 +157,65 @@ export default { qrPaddingRight: v.qrPaddingRight, qrPaddingBottom: v.qrPaddingBottom, qrPaddingLeft: v.qrPaddingLeft, + // 2.20.4 逐向「已被手动改过」标记(C 端只透传, 渲染不消费; 保持与 config 同源) + rowsSpacingTouched: v.rowsSpacingTouched, + actsSpacingTouched: v.actsSpacingTouched, + qrSpacingTouched: v.qrSpacingTouched, + // 2.22 简介区块(开关/标题/行数/独立块/逐向) + showBio: v.showBio, + bioTitleShow: v.bioTitleShow, + bioTitle: v.bioTitle, + bioMaxLines: v.bioMaxLines, + bioSize: v.bioSize, + bioColor: v.bioColor, + bioLineHeight: v.bioLineHeight, + bioBlockBg: v.bioBlockBg, + bioBlockRadius: v.bioBlockRadius, + bioBlockPad: v.bioBlockPad, + bioSpacingCustom: v.bioSpacingCustom, + bioMarginTop: v.bioMarginTop, + bioMarginRight: v.bioMarginRight, + bioMarginBottom: v.bioMarginBottom, + bioMarginLeft: v.bioMarginLeft, + bioPaddingTop: v.bioPaddingTop, + bioPaddingRight: v.bioPaddingRight, + bioPaddingBottom: v.bioPaddingBottom, + bioPaddingLeft: v.bioPaddingLeft, + bioSpacingTouched: v.bioSpacingTouched, + // 2.22 社交媒体区块(开关/独立块/逐向) + showSocial: v.showSocial, + socialBlockBg: v.socialBlockBg, + socialBlockRadius: v.socialBlockRadius, + socialBlockPad: v.socialBlockPad, + socialSpacingCustom: v.socialSpacingCustom, + socialMarginTop: v.socialMarginTop, + socialMarginRight: v.socialMarginRight, + socialMarginBottom: v.socialMarginBottom, + socialMarginLeft: v.socialMarginLeft, + socialPaddingTop: v.socialPaddingTop, + socialPaddingRight: v.socialPaddingRight, + socialPaddingBottom: v.socialPaddingBottom, + socialPaddingLeft: v.socialPaddingLeft, + socialSpacingTouched: v.socialSpacingTouched, + // 2.22 名片标签 / 来源标注 + showTags: v.showTags, + showSource: v.showSource, + // 2.23 区块顺序(六个可独立成块模块任意排序) + blockOrder: v.blockOrder, + // 2.24 标签与来源(meta)区块独立成块 + 逐向 + metaBlockBg: v.metaBlockBg, + metaBlockRadius: v.metaBlockRadius, + metaBlockPad: v.metaBlockPad, + metaSpacingCustom: v.metaSpacingCustom, + metaMarginTop: v.metaMarginTop, + metaMarginRight: v.metaMarginRight, + metaMarginBottom: v.metaMarginBottom, + metaMarginLeft: v.metaMarginLeft, + metaPaddingTop: v.metaPaddingTop, + metaPaddingRight: v.metaPaddingRight, + metaPaddingBottom: v.metaPaddingBottom, + metaPaddingLeft: v.metaPaddingLeft, + metaSpacingTouched: v.metaSpacingTouched, }; }, },