feat: 添加自定义二维码图片及其优先级配置支持

This commit is contained in:
2026-10-27 11:57:11 +08:00
parent 30f7ec8631
commit 0a5794d260
5 changed files with 138 additions and 4 deletions

View File

@@ -319,9 +319,38 @@ export default {
showQrBase() {
return flagOn(this.c.showQr, false) && !!this.qrSrc;
},
/** 二维码码源(2.18): 用户自定义图片(媒体库)优先, 空=名片自动生成的码 */
/**
* 二维码来源优先级模式(2.20.1, 由用户在 DIY 组件面板显式选择):
* card 名片级 > 组件级 > 系统码(默认)
* component 组件级 > 名片级 > 系统码
* system 仅系统生成码(忽略全部自定义图)
* 非法/缺失一律回落 'card' —— 与后端 CardQrSource::normalizePriority 同口径。
*/
qrPriority() {
const m = String(this.c.qrPriority || '').trim();
return ['card', 'component', 'system'].includes(m) ? m : 'card';
},
/**
* 二维码码源(2.20 三层来源 + 2.20.1 可选优先级, 与后端 CardQrSource::resolve 同口径):
* - 名片级 card.qr_image 每张名片各自一张(员工/企业都适用)
* - 组件级 c.qrImage 装修期统一指定
* - 系统码 card.qr_url 原有行为, 兜底
*/
qrSrc() {
const mode = this.qrPriority;
if (mode === 'system') {
return (this.card && this.card.qr_url) || '';
}
const own = String((this.card && this.card.qr_image) || '').trim();
const custom = String(this.c.qrImage || '').trim();
if (mode === 'component') {
// 组件级优先: 组件图 → 名片图 → 系统码
if (custom) return custom;
if (own) return own;
return (this.card && this.card.qr_url) || '';
}
// card(默认): 名片级 → 组件级 → 系统码
if (own) return own;
if (custom) return custom;
return (this.card && this.card.qr_url) || '';
},