feat(card): 增加有效期展示功能,支持独立成块样式与简介样式配置

This commit is contained in:
2026-10-28 17:41:16 +08:00
parent 60cac8780b
commit d789dd7142
3 changed files with 153 additions and 3 deletions

View File

@@ -177,12 +177,13 @@
<text v-if="showQrTip" class="qr-tip" :style="labelStyle" @tap="previewQrImg"><text v-if="qrTipEm" class="qr-tip-em" :style="qrTipEmStyle">{{ qrTipEm }}</text>{{ qrTipLine1 }}</text><text v-if="qrTipSub" class="qr-tip-sub" :style="labelStyle">{{ qrTipSub }}</text><text v-if="qrUrlShow && qrUrlText" class="qr-url" :style="qrUrlStyle">{{ qrUrlText }}</text>
</view>
<!-- 名片标签(2.22) + 来源标注(2.22) -->
<view v-if="blk === 'meta' && (showTagsRow || showSourceRow)" class="mini-meta" :key="blk">
<!-- 名片标签(2.22) + 来源标注(2.22) + 有效期(2.24); 2.24 起可独立成块/逐向间距 -->
<view v-if="blk === 'meta' && (showTagsRow || showSourceRow || showExpireRow)" class="mini-meta" :style="metaFinalStyle" :key="blk">
<view v-if="showTagsRow" class="mini-tags">
<text v-for="(t, i) in cardTags" :key="'t' + i" class="mini-tag">{{ t }}</text>
</view>
<text v-if="showSourceRow" class="mini-source">{{ sourceName }}</text>
<text v-if="showExpireRow" class="mini-source">有效期至 {{ expireDateText }}</text>
</view>
</template>
@@ -1163,6 +1164,21 @@ export default {
showSourceRow() {
return flagOn(this.c.showSource, false) && !!this.sourceName;
},
// ---- 2.24 有效期(自动展示: 名片设了 expire_at 就显示, 无独立开关) ----
showExpireRow() {
return !!(this.card && num(this.card.expire_at, 0) > 0);
},
expireDateText() {
const ts = num(this.card && this.card.expire_at, 0);
if (ts <= 0) return '';
const d = new Date(ts * 1000);
const p = (n) => (n < 10 ? '0' + n : '' + n);
return d.getFullYear() + '-' + p(d.getMonth() + 1) + '-' + p(d.getDate());
},
// ---- 2.24 标签与来源(meta)区块: 可独立成块 + 逐向间距(与 bio/social 同款) ----
metaFinalStyle() {
return blockFinalStyle(this.c, 'meta');
},
/**
* 二维码是否「独立成块」: 后台「二维码独立样式」开关(与资料区同套逻辑)。
* 跟随卡片 → false(与上方资料同底连为一体, 无白卡/描边/阴影);