393 lines
8.2 KiB
HTML
393 lines
8.2 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<title>副本奖励记录</title>
|
||
|
||
<style>
|
||
* {
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
body {
|
||
font-family: 'Microsoft YaHei', Arial, sans-serif;
|
||
background: #f1f2f6;
|
||
margin: 0;
|
||
padding: 20px;
|
||
color: #333;
|
||
}
|
||
|
||
.container {
|
||
max-width: 1200px;
|
||
margin: 0 auto;
|
||
text-align: center;
|
||
}
|
||
|
||
h1 {
|
||
font-size: 32px;
|
||
margin: 0 0 12px 0;
|
||
color: #222;
|
||
font-weight: 800;
|
||
text-align: center;
|
||
}
|
||
|
||
.description {
|
||
margin-bottom: 24px;
|
||
color: #7a7f8c;
|
||
font-size: 15px;
|
||
}
|
||
|
||
.legend {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
gap: 24px;
|
||
margin-bottom: 20px;
|
||
font-size: 14px;
|
||
color: #666;
|
||
}
|
||
|
||
.legend-item {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 7px;
|
||
}
|
||
|
||
.legend-color {
|
||
width: 15px;
|
||
height: 15px;
|
||
border-radius: 4px;
|
||
}
|
||
|
||
.legend-color.finished {
|
||
background: #c9cdd3;
|
||
}
|
||
|
||
.legend-color.unfinished {
|
||
background: #2dbd78;
|
||
}
|
||
|
||
table {
|
||
width: 100%;
|
||
border-collapse: collapse;
|
||
table-layout: fixed;
|
||
background: white;
|
||
border-radius: 12px;
|
||
overflow: hidden;
|
||
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
|
||
margin-top: 10px;
|
||
text-align: left;
|
||
}
|
||
|
||
thead {
|
||
background: #3b82f6;
|
||
color: white;
|
||
font-size: 18px;
|
||
}
|
||
|
||
th,
|
||
td {
|
||
padding: 16px 14px;
|
||
border-bottom: 1px solid #eee;
|
||
font-size: 16px;
|
||
vertical-align: middle;
|
||
}
|
||
|
||
th:first-child,
|
||
td:first-child {
|
||
width: 250px;
|
||
}
|
||
|
||
tbody tr:last-child td {
|
||
border-bottom: none;
|
||
}
|
||
|
||
tbody tr:hover {
|
||
background: #f7f9fc;
|
||
}
|
||
|
||
.map-info {
|
||
text-align: center;
|
||
}
|
||
|
||
.map-name {
|
||
color: #252a34;
|
||
font-size: 18px;
|
||
font-weight: 700;
|
||
line-height: 1.5;
|
||
}
|
||
|
||
.map-progress {
|
||
margin-top: 7px;
|
||
color: #8a909c;
|
||
font-size: 13px;
|
||
font-weight: 500;
|
||
}
|
||
|
||
.boss-list {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: 10px;
|
||
}
|
||
|
||
.boss-item {
|
||
position: relative;
|
||
min-width: 145px;
|
||
flex: 1 1 145px;
|
||
max-width: 210px;
|
||
min-height: 64px;
|
||
padding: 11px 13px;
|
||
border-radius: 9px;
|
||
transition:
|
||
transform 0.2s ease,
|
||
box-shadow 0.2s ease;
|
||
}
|
||
|
||
.boss-item:hover {
|
||
transform: translateY(-2px);
|
||
}
|
||
|
||
/*
|
||
* finished 为 true:
|
||
* 奖励已经获取,显示灰色
|
||
*/
|
||
.boss-item.finished {
|
||
color: #747b85;
|
||
background: #e1e4e8;
|
||
border: 1px solid #d1d5db;
|
||
}
|
||
|
||
.boss-item.finished:hover {
|
||
box-shadow: 0 4px 12px rgba(75, 85, 99, 0.15);
|
||
}
|
||
|
||
/*
|
||
* finished 为 false:
|
||
* 奖励尚未获取,显示绿色
|
||
*/
|
||
.boss-item.unfinished {
|
||
color: white;
|
||
background: #2dbd78;
|
||
border: 1px solid #24a96a;
|
||
}
|
||
|
||
.boss-item.unfinished:hover {
|
||
box-shadow: 0 4px 12px rgba(45, 189, 120, 0.25);
|
||
}
|
||
|
||
.boss-index {
|
||
position: absolute;
|
||
top: 6px;
|
||
right: 8px;
|
||
font-size: 11px;
|
||
font-weight: 700;
|
||
opacity: 0.65;
|
||
}
|
||
|
||
.boss-name {
|
||
padding-right: 18px;
|
||
overflow: hidden;
|
||
font-size: 15px;
|
||
font-weight: 700;
|
||
line-height: 1.4;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.boss-status {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 5px;
|
||
margin-top: 6px;
|
||
font-size: 12px;
|
||
font-weight: 500;
|
||
}
|
||
|
||
.status-icon {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
width: 16px;
|
||
height: 16px;
|
||
border-radius: 50%;
|
||
font-size: 11px;
|
||
font-weight: 800;
|
||
}
|
||
|
||
.boss-item.finished .status-icon {
|
||
color: #777e88;
|
||
background: rgba(255, 255, 255, 0.75);
|
||
}
|
||
|
||
.boss-item.unfinished .status-icon {
|
||
color: #22a566;
|
||
background: white;
|
||
}
|
||
|
||
.empty-data {
|
||
padding: 50px 20px;
|
||
color: #8a909c;
|
||
text-align: center;
|
||
background: white;
|
||
border-radius: 12px;
|
||
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
|
||
}
|
||
|
||
@media (max-width: 800px) {
|
||
body {
|
||
padding: 12px;
|
||
}
|
||
|
||
h1 {
|
||
font-size: 26px;
|
||
}
|
||
|
||
table,
|
||
thead,
|
||
tbody,
|
||
tr,
|
||
th,
|
||
td {
|
||
display: block;
|
||
}
|
||
|
||
thead {
|
||
display: none;
|
||
}
|
||
|
||
table {
|
||
background: transparent;
|
||
box-shadow: none;
|
||
}
|
||
|
||
tbody tr {
|
||
margin-bottom: 14px;
|
||
overflow: hidden;
|
||
background: white;
|
||
border-radius: 12px;
|
||
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.07);
|
||
}
|
||
|
||
th:first-child,
|
||
td:first-child {
|
||
width: 100%;
|
||
}
|
||
|
||
td {
|
||
border-bottom: none;
|
||
}
|
||
|
||
.map-info {
|
||
padding: 17px;
|
||
background: #fafbfc;
|
||
border-bottom: 1px solid #eee;
|
||
}
|
||
|
||
.boss-list {
|
||
padding: 2px;
|
||
}
|
||
|
||
.boss-item {
|
||
max-width: none;
|
||
}
|
||
}
|
||
|
||
@media (max-width: 500px) {
|
||
.legend {
|
||
gap: 14px;
|
||
font-size: 13px;
|
||
}
|
||
|
||
.boss-item {
|
||
flex-basis: 100%;
|
||
max-width: 100%;
|
||
}
|
||
}
|
||
</style>
|
||
</head>
|
||
|
||
<body>
|
||
|
||
<div class="container">
|
||
<h1>副本奖励记录</h1>
|
||
|
||
<div class="description">
|
||
灰色表示奖励已经获取,绿色表示奖励尚未获取
|
||
</div>
|
||
|
||
<div class="legend">
|
||
<div class="legend-item">
|
||
<span class="legend-color finished"></span>
|
||
<span>奖励已获取</span>
|
||
</div>
|
||
|
||
<div class="legend-item">
|
||
<span class="legend-color unfinished"></span>
|
||
<span>奖励未获取</span>
|
||
</div>
|
||
</div>
|
||
|
||
{% if list %}
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>副本名称</th>
|
||
<th>Boss 奖励状态</th>
|
||
</tr>
|
||
</thead>
|
||
|
||
<tbody>
|
||
{% for m in list %}
|
||
<tr>
|
||
<td class="map-info">
|
||
<div class="map-name">
|
||
{{ m.mapName }}
|
||
</div>
|
||
|
||
<div class="map-progress">
|
||
已获取 {{ m.bossFinished }} / {{ m.bossCount }}
|
||
</div>
|
||
</td>
|
||
|
||
<td>
|
||
<div class="boss-list">
|
||
{% for boss in m.bossProgress %}
|
||
<div
|
||
class="boss-item {% if boss.finished %}finished{% else %}unfinished{% endif %}"
|
||
title="{{ boss.name }} - {% if boss.finished %}奖励已获取{% else %}奖励未获取{% endif %}"
|
||
>
|
||
<span class="boss-index">
|
||
#{{ boss.progressId }}
|
||
</span>
|
||
|
||
<div class="boss-name">
|
||
{{ boss.name }}
|
||
</div>
|
||
|
||
<div class="boss-status">
|
||
{% if boss.finished %}
|
||
<span class="status-icon">✓</span>
|
||
<span>奖励已获取</span>
|
||
{% else %}
|
||
<span class="status-icon">!</span>
|
||
<span>奖励未获取</span>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
{% endfor %}
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
|
||
{% else %}
|
||
<div class="empty-data">
|
||
暂无副本奖励记录
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
|
||
</body>
|
||
</html> |