活动页:每个节点卡片底部渲染参与人(头像 + 名字)
之前节点卡片上只有「👥 N」计数,要看是谁参加得点进节点详情。
现在卡片底部直接列出参与人:头像(缺头像用首字母兜底)+ 名字,
有心情顺带一个小 emoji;点任一人跳到该节点的参与区。
数据侧 Members::forNodes() 一条 IN 查询带回全部节点的参与人
(与 attachCounts 同样的防 N+1 思路),计划列与执行列共用。
无参与人的节点不渲染这一行。
已验证:本地全链 11 步全绿(渲染检查 292 项、表单交互 73 项);
远端 e2e 299 项 0 失败(新增活动页卡片参与人行专项断言);
部署后双 PHP 渲染逐字节一致、60 文件哈希一致。
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
<?php
|
||||
/**
|
||||
* 节点卡片(计划列 / 执行列共用)
|
||||
* 依赖外部变量:$n(节点行)、$cardCategory(plan|reality)、$executedPlanIds
|
||||
* 依赖外部变量:$n(节点行)、$cardCategory(plan|reality)、$executedPlanIds、
|
||||
* $nodeMembers(node_id => 参与人列表,ActivityController::show 注入;可缺省)
|
||||
*/
|
||||
$cardCategory = $cardCategory ?? 'plan';
|
||||
$executedPlanIds = $executedPlanIds ?? [];
|
||||
$nodeMembersMap = $nodeMembers ?? [];
|
||||
|
||||
$statusLabels = [
|
||||
'planned' => '待执行',
|
||||
@@ -72,6 +74,30 @@ if ($cardCategory === 'plan') {
|
||||
<div class="node-cancel-reason">取消原因:<?= e($n['cancel_reason']) ?></div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php /* 参与人:头像 + 名字(有心情顺带一个小 emoji),点行内任一人进节点参与区 */ ?>
|
||||
<?php $cardMembers = $nodeMembersMap[(int)$n['id']] ?? []; ?>
|
||||
<?php if (!empty($cardMembers)): ?>
|
||||
<div class="node-members">
|
||||
<?php foreach ($cardMembers as $cm):
|
||||
$cmName = (string)($cm['name'] ?? '');
|
||||
if ($cmName === '') $cmName = '已注销用户';
|
||||
?>
|
||||
<a class="node-member-chip" href="<?= url('nodes/show', ['id' => $n['id']]) ?>#members"
|
||||
title="<?= e($cmName) ?>">
|
||||
<?php if (!empty($cm['avatar'])): ?>
|
||||
<img src="<?= e($cm['avatar']) ?>" alt="" loading="lazy">
|
||||
<?php else: ?>
|
||||
<span class="node-member-avatar-fallback"><?= e(mb_substr($cmName, 0, 1)) ?></span>
|
||||
<?php endif; ?>
|
||||
<span class="node-member-name"><?= e($cmName) ?></span>
|
||||
<?php if (!empty($cm['emotion'])): ?>
|
||||
<span class="node-member-emotion"><?= e($cm['emotion']) ?></span>
|
||||
<?php endif; ?>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="node-actions">
|
||||
<span class="status-tag status-<?= e($st) ?>"><?= e($statusLabels[$st]) ?></span>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user