Files
danyang-match/miniapp/components/recommend-card/index.js
T

54 lines
1.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* RecommendCard 推荐卡片(规范 §22-25, §107-108)
*
* 推荐首页核心卡片,包含:头像 + 基本信息 + 推荐理由 + Like/Pass 操作。
* 不变量(AGENTS.md):
* - 第 2 条:Required 不可自动放宽——推荐理由仅作弱文字提示,
* 不暴露"放宽了 X 条件才得到这个推荐"的字样,前端只显示后端返回的 reasons。
* - 第 5 条:红娘不可替用户操作——本卡片仅由当前用户操作,不接受 matchmakerId 参数。
*/
const { STATUS_BADGE } = require('../../constants');
Component({
options: { addGlobalClass: true },
properties: {
recommendation: { type: Object, value: null },
// 是否显示操作按钮(详情页用,可能用底部固定按钮替代)
showActions: { type: Boolean, value: true },
// 是否禁用按钮(操作进行中)
actionLoading: { type: Boolean, value: false },
},
data: {
levelTextMap: {
high: '很合适',
medium: '比较合适',
normal: '值得了解',
},
levelKindMap: {
high: 'success',
medium: 'info',
normal: 'warning',
},
},
methods: {
onViewDetail() {
if (!this.data.recommendation) return;
this.triggerEvent('view', { userId: this.data.recommendation.userId });
},
onLike() {
if (this.data.actionLoading) return;
if (!this.data.recommendation) return;
this.triggerEvent('like', { userId: this.data.recommendation.userId });
},
onPass() {
if (this.data.actionLoading) return;
if (!this.data.recommendation) return;
this.triggerEvent('pass', { userId: this.data.recommendation.userId });
},
onBlock(e) {
// 阻止冒泡避免触发 view
this.triggerEvent('block', { userId: this.data.recommendation.userId });
},
},
});