Files
squad-rain-ops-mini/wwwroot/cdk-redeem.html

134 lines
5.0 KiB
HTML
Raw Permalink 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">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CDK 兑换 - RainOps Mini</title>
<link href="/lib/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="/lib/css/font-awesome.min.css">
<script src="/lib/js/vue.global.prod.js"></script>
<style>
body {
background-color: #f8f9fa;
display: flex;
align-items: center;
justify-content: center;
min-height: 100vh;
}
.redeem-card {
width: 100%;
max-width: 500px;
border: none;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
border-radius: 10px;
}
.card-header {
background-color: #0d6efd;
color: white;
border-radius: 10px 10px 0 0 !important;
padding: 20px;
text-align: center;
}
.card-body {
padding: 30px;
}
.form-label {
font-weight: 500;
}
</style>
</head>
<body>
<div id="app" class="redeem-card card">
<div class="card-header">
<h3 class="mb-0"><i class="fa fa-gift me-2"></i>CDK 兑换中心</h3>
</div>
<div class="card-body">
<div v-if="successMessage" class="alert alert-success">
<i class="fa fa-check-circle me-2"></i>{{ successMessage }}
</div>
<div v-if="errorMessage" class="alert alert-danger">
<i class="fa fa-exclamation-circle me-2"></i>{{ errorMessage }}
</div>
<form @submit.prevent="redeem">
<div class="mb-3">
<label class="form-label">SteamID (64位)</label>
<input type="text" class="form-control form-control-lg" v-model="form.steamId" placeholder="例如76561198000000000" required>
<div class="form-text">请确保输入的 SteamID 正确,否则无法到账。</div>
</div>
<div class="mb-4">
<label class="form-label">兑换码 (CDK)</label>
<input type="text" class="form-control form-control-lg font-monospace" v-model="form.code" placeholder="CDK..." required>
</div>
<div class="d-grid">
<button type="submit" class="btn btn-primary btn-lg" :disabled="loading">
<span v-if="loading" class="spinner-border spinner-border-sm me-2"></span>
{{ loading ? '兑换中...' : '立即兑换' }}
</button>
</div>
</form>
<div class="mt-4 text-center text-muted small">
<p class="mb-1">温馨提示:</p>
<ul class="list-unstyled">
<li>1. 每个批次的激活码同一个账号仅限激活一次。</li>
<li>2. 也可以在游戏内聊天直接发送 CDK 进行激活。</li>
</ul>
</div>
</div>
</div>
<script>
const { createApp, reactive, ref } = Vue;
createApp({
setup() {
const form = reactive({
steamId: '',
code: ''
});
const loading = ref(false);
const successMessage = ref('');
const errorMessage = ref('');
// Check URL params for auto-fill
const urlParams = new URLSearchParams(window.location.search);
if (urlParams.has('code')) {
form.code = urlParams.get('code');
}
const redeem = async () => {
loading.value = true;
successMessage.value = '';
errorMessage.value = '';
try {
const res = await fetch('/api/cdk/redeem', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(form)
});
const data = await res.json();
if (res.ok) {
successMessage.value = data.message || '兑换成功!';
form.code = ''; // Clear code after success
} else {
errorMessage.value = data.error || '兑换失败';
}
} catch (error) {
errorMessage.value = '请求失败,请稍后重试';
} finally {
loading.value = false;
}
};
return {
form, loading, successMessage, errorMessage, redeem
};
}
}).mount('#app');
</script>
</body>
</html>