35 lines
1.1 KiB
JavaScript
35 lines
1.1 KiB
JavaScript
/**
|
|||
|
|
* Avatar 头像(规范 §22 用户卡片)
|
||
|
|
*
|
||
|
|
* 显示用户头像 + 已实名 / 已审核徽标。
|
||
|
|
* 不变量(AGENTS 第 8 条):头像 URL 来自 OSS 公开链接,不携带任何敏感身份字段。
|
||
|
|
* 用法:
|
||
|
|
* <ui-avatar src="{{user.avatarUrl}}" size="lg"
|
||
|
|
* verified="{{user.verified}}" reviewed="{{user.reviewed}}" />
|
||
|
|
*/
|
||
|
|
Component({
|
||
|
|
options: { addGlobalClass: true },
|
||
|
|
properties: {
|
||
|
|
src: { type: String, value: '' },
|
||
|
|
size: { type: String, value: 'md' }, // sm|md|lg|xl
|
||
|
|
shape: { type: String, value: 'circle' }, // circle|square
|
||
|
|
verified: { type: Boolean, value: false },
|
||
|
|
reviewed: { type: Boolean, value: false },
|
||
|
|
showBadge: { type: Boolean, value: true },
|
||
|
|
// 兜底默认头像(不依赖外部资源)
|
||
|
|
defaultText: { type: String, value: '' }, // 没图时显示首字(如"王")
|
||
|
|
},
|
||
|
|
data: {
|
||
|
|
loadError: false,
|
||
|
|
},
|
||
|
|
methods: {
|
||
|
|
onError() {
|
||
|
|
this.setData({ loadError: true });
|
||
|
|
this.triggerEvent('error', {});
|
||
|
|
},
|
||
|
|
onTap() {
|
||
|
|
this.triggerEvent('tap', {});
|
||
|
|
},
|
||
|
|
},
|
||
|
|
});
|