{% extends "base.html" %} {% from 'macros/sortable.html' import sort_th %} {% set detail_params = {'id': student.id} %} {% block title %}学员详情 - 学生课程管理系统{% endblock %} {% block content %}
| {{ sort_th('student_detail', 'course', '课程', sort, order, detail_params, '') }} | {{ sort_th('student_detail', 'end_lessons', '正课剩余', sort, order, detail_params, '') }} | {{ sort_th('student_detail', 'end_gift', '赠课剩余', sort, order, detail_params, '') }} | {{ sort_th('student_detail', 'end_total', '总剩余', sort, order, detail_params, '') }} | {{ sort_th('student_detail', 'end_balance', '账户余额', sort, order, detail_params, '', title='折后口径账面余额,非退费金额') }} | {{ sort_th('student_detail', 'refund_due', '应退金额', sort, order, detail_params, '', title='原价单价×剩余正课,不含赠课') }} | {{ sort_th('student_detail', 'unit_price', '单价/节', sort, order, detail_params, '') }} | 数据月份 | 状态 | {% if current_user.has_permission('keshibiao_view') %}课时表 | {% endif %}
|---|---|---|---|---|---|---|---|---|---|
| {{ a.course.name if a.course else '—' }}{% if a.course and a.course.course_code %} ({{ a.course.course_code }}){% endif %} | {{ fmt_hours(lg.get('end_lessons')) }} | {{ fmt_hours(lg.get('end_gift_lessons')) }} | {{ fmt_hours(lg.get('end_total_lessons')) }} | {{ fmt_money(lg.get('end_balance')) }} | {% if rp and rp.has_original and not rp.refund_label %} {{ fmt_money(rp.refund_due) }} {% elif rp and rp.refund_label %} {{ rp.refund_label }} {% else %} - {% endif %} | {{ fmt_price(lg.get('unit_price')) }} | {{ lg.get('period') or '—' }} | {% if a.is_stopped %} 停课中 {% elif total_h <= 5 and total_h > 0 %} 课时不足 {% elif total_h == 0 %} 已用完 {% else %} 正常 {% endif %} {% if a.account_status == 'graduated' %}结课{% endif %} | {% if current_user.has_permission('keshibiao_view') %}流水 | {% endif %}
暂无课时账户
{% endif %}退费金额 = 原价单价 × 剩余正课数,赠课不退款。最终退费金额以实际审批为准。
无原价数据(历史数据未录原价),应退相关字段无法计算。
| 班级 | 课程 | 老师 | 入班日期 | 状态 |
|---|---|---|---|---|
| {{ cr.class_.name }} | {{ cr.class_.course.name }} | {{ cr.class_.teacher.name }} | {{ cr.join_date }} | {% if cr.status == 1 %}在读 {% elif cr.status == 2 %}已转出 {% else %}已毕业{% endif %} |
暂无班级信息
{% endif %}| 时间 | 课程 | 金额 | 正课课时 | 赠课课时 | 支付方式 | 备注 |
|---|---|---|---|---|---|---|
| {{ r.created_at.strftime('%Y-%m-%d %H:%M') }} | {{ r.course.name }} | ¥{{ r.amount }} | {{ r.normal_hours }} | +{{ r.gifted_hours }} | {{ r.payment_method or '-' }} | {{ r.remark or '-' }} |
暂无充值记录
{% endif %}| 日期 | 课程 | 消课课时 | 正课消耗 | 赠课消耗 | 类型 | 备注 |
|---|---|---|---|---|---|---|
| {{ c.consume_date }} | {{ c.course.name }} | {{ c.hours_consumed }} | {{ c.normal_consumed }} | {{ c.gifted_consumed }} | {% if c.consume_type == 'trial' %}试听 {% elif c.consume_type == 'normal' %}正课 {% else %}混合{% endif %} {% if c.is_makeup %}补录{% endif %} | {{ c.remark or '-' }} |
暂无消课记录
{% endif %}| 时间 | 课程 | 退费金额 | 扣回赠课 | 已消课时金额 | 材料费 | 原因 |
|---|---|---|---|---|---|---|
| {{ r.created_at.strftime('%Y-%m-%d') }} | {{ r.course.name }} | ¥{{ r.refund_amount }} | {{ r.deduct_gifted_hours }} | ¥{{ r.consumed_hours_value }} | ¥{{ '%.2f'|format((r.material_fee_per_quarter or 0) * (r.quarters or 0)) }} | {{ r.reason or '-' }} |
暂无退费记录
{% endif %}| 开始日期 | 结束日期 | 课程 | 状态 | 原因 |
|---|---|---|---|---|
| {{ s.start_date }} | {{ s.end_date }} | {{ s.course.name }} | {% if s.status == 1 %}停课中 {% elif s.status == 2 %}已复课 {% else %}已取消{% endif %} | {{ s.reason or '-' }} |
暂无停课记录
{% endif %}