feat: click 'x个方案' to open latest plan detail
This commit is contained in:
@@ -139,6 +139,10 @@ class Student(db.Model):
|
||||
goal_count = len(self.goal_records) if self.goal_records else 0
|
||||
completed_goal_count = sum(1 for g in self.goal_records if g.achievement_date) if self.goal_records else 0
|
||||
|
||||
# 获取最新方案ID
|
||||
latest_plan = self.plans.order_by(db.desc("created_at")).first()
|
||||
latest_plan_id = latest_plan.id if latest_plan else None
|
||||
|
||||
return {
|
||||
"id": self.id,
|
||||
"name": self.name,
|
||||
@@ -154,6 +158,7 @@ class Student(db.Model):
|
||||
"problem_count": self.problems.count(),
|
||||
"problem_names": problem_names, # 问题名称列表(按严重程度排序)
|
||||
"plan_count": self.plans.count(),
|
||||
"latest_plan_id": latest_plan_id,
|
||||
"goal_count": goal_count,
|
||||
"completed_goal_count": completed_goal_count,
|
||||
}
|
||||
|
||||
@@ -614,7 +614,7 @@ function renderStudentList(students) {
|
||||
<p class="card-text text-muted small">${s.wechat_nickname || ''} ${s.phone ? '| ' + s.phone : ''}</p>
|
||||
<span class="badge bg-info">${s.practice_time}</span>
|
||||
<span class="badge ${s.problem_count > 0 ? 'bg-secondary' : 'bg-light text-muted'}">${problemText}</span>
|
||||
<span class="badge ${planBadgeClass}">${planBadgeText}</span>
|
||||
${s.plan_count > 0 ? `<a href="/plan/${s.latest_plan_id}" class="text-decoration-none" onclick="event.stopPropagation()"><span class="badge bg-primary">${s.plan_count} 个方案</span></a>` : '<span class="badge bg-light text-muted">暂无方案</span>'}
|
||||
${s.goal_count > 0 ? `<span class="badge bg-success">${s.goal_count}个目标(${s.completed_goal_count}已达成)</span>` : ''}
|
||||
</div>
|
||||
</a>
|
||||
|
||||
Reference in New Issue
Block a user