Files
ks-app-employment-service/test-idcard-login.html

248 lines
9.5 KiB
HTML
Raw Normal View History

2025-11-14 19:05:03 +08:00
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>社保登录流程测试</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 20px;
background-color: #f5f5f5;
}
.container {
background: white;
padding: 30px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
h1 {
color: #333;
text-align: center;
}
.test-case {
margin: 20px 0;
padding: 15px;
border: 1px solid #ddd;
border-radius: 5px;
background: #f9f9f9;
}
.test-case h3 {
margin-top: 0;
color: #4778EC;
}
.code {
background: #f4f4f4;
padding: 10px;
border-radius: 4px;
font-family: monospace;
overflow-x: auto;
}
.btn {
background: #4778EC;
color: white;
padding: 10px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
margin: 10px 5px;
}
.btn:hover {
background: #256BFA;
}
.result {
margin-top: 10px;
padding: 10px;
border-radius: 4px;
display: none;
}
.success {
background: #d4edda;
color: #155724;
border: 1px solid #c3e6cb;
}
.error {
background: #f8d7da;
color: #721c24;
border: 1px solid #f5c6cb;
}
</style>
</head>
<body>
<div class="container">
<h1>社保登录流程测试</h1>
<div class="test-case">
<h3>测试用例 1: Base64 解码测试</h3>
<p>测试 Base64 解码功能是否正常工作</p>
<div class="code">
// 测试数据: "142634199305163418" 的 Base64 编码<br>
// 原始身份证号: 142634199305163418<br>
// Base64 编码: MTQyNjM0MTk5MzA1MTYzNDE4
</div>
<button class="btn" onclick="testBase64Decode()">测试 Base64 解码</button>
<div id="base64Result" class="result"></div>
</div>
<div class="test-case">
<h3>测试用例 2: URL 参数解析测试</h3>
<p>测试从 URL 中获取 idCard 参数的功能</p>
<div class="code">
// 测试 URL: http://localhost:5173/ks_app/#/pages/login/id-card-login?idCard=MTQyNjM0MTk5MzA1MTYzNDE4<br>
// 预期结果: 成功获取到 idCard 参数值
</div>
<button class="btn" onclick="testUrlParams()">测试 URL 参数解析</button>
<div id="urlResult" class="result"></div>
</div>
<div class="test-case">
<h3>测试用例 3: 完整登录流程测试</h3>
<p>模拟完整的社保登录流程</p>
<div class="code">
1. 从 URL 获取 idCard 参数 (Base64 编码)<br>
2. Base64 解码得到明文身份证号<br>
3. 调用 /app/idCardLogin 接口<br>
4. 处理登录结果
</div>
<button class="btn" onclick="testFullLoginFlow()">测试完整登录流程</button>
<div id="loginResult" class="result"></div>
</div>
<div class="test-case">
<h3>测试用例 4: 生成测试链接</h3>
<p>生成用于测试的社保登录链接</p>
<div class="code">
身份证号: <input type="text" id="testIdCard" value="142634199305163418" style="width: 200px; padding: 5px;">
</div>
<button class="btn" onclick="generateTestLink()">生成测试链接</button>
<div id="linkResult" class="result"></div>
</div>
</div>
<script>
// Base64 解码函数 (与前端代码保持一致)
function decodeBase64(base64Str) {
try {
return atob(base64Str);
} catch (error) {
console.error('Base64解码失败:', error);
throw new Error('身份证号码解码失败');
}
}
// 测试 Base64 解码
function testBase64Decode() {
const base64Str = "MTQyNjM0MTk5MzA1MTYzNDE4";
const resultDiv = document.getElementById('base64Result');
try {
const decoded = decodeBase64(base64Str);
resultDiv.innerHTML = `<strong>成功!</strong><br>
Base64 编码: ${base64Str}<br>
解码结果: ${decoded}<br>
预期结果: 142634199305163418<br>
匹配: ${decoded === "142634199305163418" ? "✓" : "✗"}`;
resultDiv.className = 'result success';
resultDiv.style.display = 'block';
} catch (error) {
resultDiv.innerHTML = `<strong>失败!</strong><br>错误信息: ${error.message}`;
resultDiv.className = 'result error';
resultDiv.style.display = 'block';
}
}
// 测试 URL 参数解析
function testUrlParams() {
const testUrl = "http://localhost:5173/ks_app/#/pages/login/id-card-login?idCard=MTQyNjM0MTk5MzA1MTYzNDE4";
const resultDiv = document.getElementById('urlResult');
try {
const urlObj = new URL(testUrl);
const idCardParam = urlObj.searchParams.get('idCard');
resultDiv.innerHTML = `<strong>成功!</strong><br>
URL: ${testUrl}<br>
获取到的 idCard 参数: ${idCardParam}<br>
参数存在: ${idCardParam ? "✓" : "✗"}`;
resultDiv.className = 'result success';
resultDiv.style.display = 'block';
} catch (error) {
resultDiv.innerHTML = `<strong>失败!</strong><br>错误信息: ${error.message}`;
resultDiv.className = 'result error';
resultDiv.style.display = 'block';
}
}
// 测试完整登录流程
function testFullLoginFlow() {
const resultDiv = document.getElementById('loginResult');
resultDiv.innerHTML = '<strong>测试中...</strong>';
resultDiv.className = 'result';
resultDiv.style.display = 'block';
setTimeout(() => {
try {
// 模拟登录流程
const base64IdCard = "MTQyNjM0MTk5MzA1MTYzNDE4";
const decodedIdCard = decodeBase64(base64IdCard);
// 验证身份证格式
if (!decodedIdCard || decodedIdCard.length < 15) {
throw new Error('身份证号码格式不正确');
}
resultDiv.innerHTML = `<strong>成功!</strong><br>
完整登录流程测试通过:<br>
1. Base64 参数获取: ✓<br>
2. Base64 解码: ✓ (${decodedIdCard})<br>
3. 身份证格式验证: ✓<br>
4. 接口调用准备: ✓<br>
<br>
<em>注意: 实际接口调用需要在真实环境中测试</em>`;
resultDiv.className = 'result success';
} catch (error) {
resultDiv.innerHTML = `<strong>失败!</strong><br>错误信息: ${error.message}`;
resultDiv.className = 'result error';
}
}, 1000);
}
// 生成测试链接
function generateTestLink() {
const idCardInput = document.getElementById('testIdCard');
const idCard = idCardInput.value.trim();
const resultDiv = document.getElementById('linkResult');
if (!idCard) {
resultDiv.innerHTML = '<strong>错误!</strong><br>请输入身份证号码';
resultDiv.className = 'result error';
resultDiv.style.display = 'block';
return;
}
try {
const base64IdCard = btoa(idCard);
const testLink = `http://localhost:5173/ks_app/#/pages/login/id-card-login?idCard=${base64IdCard}`;
resultDiv.innerHTML = `<strong>测试链接已生成!</strong><br>
原始身份证号: ${idCard}<br>
Base64 编码: ${base64IdCard}<br>
<br>
<strong>测试链接:</strong><br>
<a href="${testLink}" target="_blank" style="word-break: break-all;">${testLink}</a><br>
<br>
<em>复制此链接在开发环境中测试社保登录功能</em>`;
resultDiv.className = 'result success';
resultDiv.style.display = 'block';
} catch (error) {
resultDiv.innerHTML = `<strong>生成失败!</strong><br>错误信息: ${error.message}`;
resultDiv.className = 'result error';
resultDiv.style.display = 'block';
}
}
</script>
</body>
</html>