Files
crypto_monitor_user/license_templates/license.html
T
2026-05-21 16:44:31 +08:00

169 lines
5.9 KiB
HTML
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.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>软件授权 · {{ exchange_display }}</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: #0a0a10;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
color: #e8e8f0;
min-height: 100vh;
padding: 2rem 1rem;
}
.wrap { max-width: 520px; margin: 0 auto; }
h1 {
font-size: 1.35rem;
margin-bottom: 0.35rem;
background: linear-gradient(90deg, #4cc2ff, #7b42ff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.sub { color: #8892b0; font-size: 0.85rem; margin-bottom: 1.5rem; }
.card {
background: #12121a;
border: 1px solid #242435;
border-radius: 14px;
padding: 1.25rem 1.35rem;
margin-bottom: 1rem;
}
.card h2 { font-size: 0.95rem; color: #a9a9ff; margin-bottom: 0.75rem; }
.device {
font-family: ui-monospace, monospace;
font-size: 0.82rem;
word-break: break-all;
background: #1a1a29;
padding: 0.75rem;
border-radius: 8px;
border: 1px solid #2e2e45;
color: #b8f5d0;
}
.hint { font-size: 0.8rem; color: #8892b0; margin-top: 0.5rem; line-height: 1.5; }
.wechat {
font-size: 1.1rem;
color: #4cc2ff;
font-weight: 600;
}
.remark-box {
margin-top: 0.6rem;
padding: 0.65rem 0.75rem;
background: #331e24;
border: 1px solid #5c3040;
border-radius: 8px;
color: #ffb4b4;
font-size: 0.82rem;
}
.plans { list-style: none; font-size: 0.88rem; color: #c5c5e0; }
.plans li { padding: 0.25rem 0; }
label { display: block; font-size: 0.88rem; color: #a9a9ff; margin-bottom: 0.4rem; }
input[type="text"] {
width: 100%;
padding: 0.8rem 1rem;
border-radius: 10px;
border: 1px solid #2e2e45;
background: #1a1a29;
color: #fff;
font-size: 0.95rem;
}
button {
width: 100%;
margin-top: 1rem;
padding: 0.85rem;
border: none;
border-radius: 10px;
background: linear-gradient(90deg, #4285f4, #7b42ff);
color: #fff;
font-size: 1rem;
cursor: pointer;
}
.flash {
padding: 0.75rem;
margin-bottom: 1rem;
background: #331e24;
color: #ff8888;
border-radius: 8px;
font-size: 0.85rem;
}
.ok { background: #1a3328; color: #7dffb0; }
.status-line { font-size: 0.88rem; margin: 0.35rem 0; }
.badge {
display: inline-block;
padding: 0.15rem 0.5rem;
border-radius: 6px;
font-size: 0.75rem;
}
.badge-ok { background: #1a4030; color: #7dffb0; }
.badge-no { background: #402020; color: #ff8888; }
a { color: #4cc2ff; }
</style>
</head>
<body>
<div class="wrap">
<h1>复盘交易系统 · 授权</h1>
<p class="sub">整机许可 · 每 {{ check_interval_days }} 天联网校验一次</p>
{% for msg in messages %}
<div class="flash{% if msg is iterable and msg|length > 1 and msg[0] == 'ok' %} ok{% endif %}">
{% if msg is iterable and msg|length > 1 %}{{ msg[1] }}{% else %}{{ msg }}{% endif %}
</div>
{% endfor %}
<div class="card">
<h2>授权状态</h2>
{% if licensed %}
<span class="badge badge-ok">已授权</span>
{% else %}
<span class="badge badge-no">未授权或已过期</span>
{% endif %}
{% if expires_at_display %}
<p class="status-line">到期时间:{{ expires_at_display }}BJ</p>
{% endif %}
{% if days_left is not none and licensed %}
<p class="status-line">剩余约 {{ days_left }} 天</p>
{% endif %}
{% if plan %}
<p class="status-line">套餐:{{ plan }}</p>
{% endif %}
<p class="status-line" style="margin-top:0.6rem;font-size:0.78rem;color:#6a7088;">
校验间隔 {{ check_interval_days }} 天;断网宽限 {{ offline_grace_days }} 天
</p>
</div>
<div class="card">
<h2>设备 ID(换机需重新联系签发)</h2>
<div class="device" id="deviceId">{{ device_id }}</div>
<p class="hint">复制上方 ID,联系管理员获取激活码。续费在剩余天数上叠加。</p>
</div>
<div class="card">
<h2>购买 / 续费</h2>
<ul class="plans">
{% for p in plans %}
<li>{{ p.name }}:¥{{ p.price }} / {{ p.days }} 天</li>
{% endfor %}
</ul>
<p class="hint" style="margin-top:0.75rem;">
微信:<span class="wechat">{{ wechat_id }}</span>
</p>
<div class="remark-box">
<strong>添加微信时必须填写备注:</strong><br>
请将上方 <strong>设备 ID 完整复制</strong> 到好友验证备注中(或填写:{{ wechat_remark }}
</div>
</div>
<div class="card">
<h2>激活码兑换</h2>
<form method="POST">
<label for="activation_code">激活码</label>
<input type="text" id="activation_code" name="activation_code" required placeholder="粘贴管理员提供的激活码" autocomplete="off">
<button type="submit">激活 / 续费</button>
</form>
{% if not api_configured and not disabled %}
<p class="hint" style="color:#ff8888;margin-top:0.75rem;">未配置 LICENSE_API_URL,请在 .env 中设置授权服务地址。</p>
{% endif %}
</div>
</div>
</body>
</html>