207 lines
8.8 KiB
HTML
207 lines
8.8 KiB
HTML
|
|
<!DOCTYPE html>
|
||
|
|
<html>
|
||
|
|
<head>
|
||
|
|
<title>监管任务API测试</title>
|
||
|
|
<style>
|
||
|
|
body { font-family: Arial, sans-serif; margin: 20px; }
|
||
|
|
.test-section { margin-bottom: 20px; padding: 15px; border: 1px solid #ddd; border-radius: 4px; }
|
||
|
|
button { background: #1890ff; color: white; padding: 8px 16px; border: none; border-radius: 4px; cursor: pointer; margin: 5px; }
|
||
|
|
button:hover { background: #40a9ff; }
|
||
|
|
.result { margin-top: 10px; padding: 10px; background: #f5f5f5; border-radius: 4px; white-space: pre-wrap; font-family: monospace; font-size: 12px; }
|
||
|
|
.success { background: #f6ffed; border: 1px solid #b7eb8f; }
|
||
|
|
.error { background: #fff2f0; border: 1px solid #ffccc7; }
|
||
|
|
</style>
|
||
|
|
</head>
|
||
|
|
<body>
|
||
|
|
<h1>监管任务API测试页面</h1>
|
||
|
|
|
||
|
|
<div class="test-section">
|
||
|
|
<h2>1. 登录测试</h2>
|
||
|
|
<button onclick="testLogin()">测试登录</button>
|
||
|
|
<div id="loginResult" class="result" style="display: none;"></div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="test-section">
|
||
|
|
<h2>2. 获取监管任务列表</h2>
|
||
|
|
<button onclick="testGetTasks()" id="getTasksBtn" disabled>获取监管任务列表</button>
|
||
|
|
<div id="tasksResult" class="result" style="display: none;"></div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="test-section">
|
||
|
|
<h2>3. 获取监管任务统计</h2>
|
||
|
|
<button onclick="testGetStats()" id="getStatsBtn" disabled>获取监管任务统计</button>
|
||
|
|
<div id="statsResult" class="result" style="display: none;"></div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="test-section">
|
||
|
|
<h2>4. 创建监管任务</h2>
|
||
|
|
<button onclick="testCreateTask()" id="createTaskBtn" disabled>创建监管任务</button>
|
||
|
|
<div id="createResult" class="result" style="display: none;"></div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<script>
|
||
|
|
let token = '';
|
||
|
|
|
||
|
|
async function testLogin() {
|
||
|
|
try {
|
||
|
|
const response = await fetch('http://localhost:5351/api/auth/login', {
|
||
|
|
method: 'POST',
|
||
|
|
headers: {
|
||
|
|
'Content-Type': 'application/json'
|
||
|
|
},
|
||
|
|
body: JSON.stringify({
|
||
|
|
username: 'admin',
|
||
|
|
password: 'Admin123456'
|
||
|
|
})
|
||
|
|
});
|
||
|
|
|
||
|
|
const data = await response.json();
|
||
|
|
const resultDiv = document.getElementById('loginResult');
|
||
|
|
resultDiv.style.display = 'block';
|
||
|
|
|
||
|
|
if (data.success) {
|
||
|
|
token = data.data.token;
|
||
|
|
resultDiv.className = 'result success';
|
||
|
|
resultDiv.textContent = `登录成功!\nToken: ${token.substring(0, 50)}...\n用户: ${data.data.user.username}`;
|
||
|
|
|
||
|
|
// 启用其他按钮
|
||
|
|
document.getElementById('getTasksBtn').disabled = false;
|
||
|
|
document.getElementById('getStatsBtn').disabled = false;
|
||
|
|
document.getElementById('createTaskBtn').disabled = false;
|
||
|
|
} else {
|
||
|
|
resultDiv.className = 'result error';
|
||
|
|
resultDiv.textContent = `登录失败: ${data.message}`;
|
||
|
|
}
|
||
|
|
} catch (error) {
|
||
|
|
const resultDiv = document.getElementById('loginResult');
|
||
|
|
resultDiv.style.display = 'block';
|
||
|
|
resultDiv.className = 'result error';
|
||
|
|
resultDiv.textContent = `登录错误: ${error.message}`;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
async function testGetTasks() {
|
||
|
|
if (!token) {
|
||
|
|
alert('请先登录!');
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
try {
|
||
|
|
const response = await fetch('http://localhost:5351/api/supervision-tasks?page=1&limit=10', {
|
||
|
|
headers: {
|
||
|
|
'Authorization': `Bearer ${token}`,
|
||
|
|
'Content-Type': 'application/json'
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
const data = await response.json();
|
||
|
|
const resultDiv = document.getElementById('tasksResult');
|
||
|
|
resultDiv.style.display = 'block';
|
||
|
|
|
||
|
|
if (data.success) {
|
||
|
|
resultDiv.className = 'result success';
|
||
|
|
resultDiv.textContent = `获取监管任务列表成功!\n任务数量: ${data.data.tasks.length}\n总数量: ${data.data.pagination.total}\n\n前3个任务:\n${JSON.stringify(data.data.tasks.slice(0, 3), null, 2)}`;
|
||
|
|
} else {
|
||
|
|
resultDiv.className = 'result error';
|
||
|
|
resultDiv.textContent = `获取失败: ${data.message}`;
|
||
|
|
}
|
||
|
|
} catch (error) {
|
||
|
|
const resultDiv = document.getElementById('tasksResult');
|
||
|
|
resultDiv.style.display = 'block';
|
||
|
|
resultDiv.className = 'result error';
|
||
|
|
resultDiv.textContent = `请求错误: ${error.message}`;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
async function testGetStats() {
|
||
|
|
if (!token) {
|
||
|
|
alert('请先登录!');
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
try {
|
||
|
|
const response = await fetch('http://localhost:5351/api/supervision-tasks/stats', {
|
||
|
|
headers: {
|
||
|
|
'Authorization': `Bearer ${token}`,
|
||
|
|
'Content-Type': 'application/json'
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
const data = await response.json();
|
||
|
|
const resultDiv = document.getElementById('statsResult');
|
||
|
|
resultDiv.style.display = 'block';
|
||
|
|
|
||
|
|
if (data.success) {
|
||
|
|
resultDiv.className = 'result success';
|
||
|
|
resultDiv.textContent = `获取监管任务统计成功!\n总计: ${data.data.total}\n待监管: ${data.data.pending}\n监管中: ${data.data.supervising}\n已完成: ${data.data.completed}\n已暂停: ${data.data.suspended}`;
|
||
|
|
} else {
|
||
|
|
resultDiv.className = 'result error';
|
||
|
|
resultDiv.textContent = `获取失败: ${data.message}`;
|
||
|
|
}
|
||
|
|
} catch (error) {
|
||
|
|
const resultDiv = document.getElementById('statsResult');
|
||
|
|
resultDiv.style.display = 'block';
|
||
|
|
resultDiv.className = 'result error';
|
||
|
|
resultDiv.textContent = `请求错误: ${error.message}`;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
async function testCreateTask() {
|
||
|
|
if (!token) {
|
||
|
|
alert('请先登录!');
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
try {
|
||
|
|
const newTask = {
|
||
|
|
applicationNumber: 'APP_TEST_' + Date.now(),
|
||
|
|
contractNumber: 'CONTRACT_TEST_' + Date.now(),
|
||
|
|
productName: '测试农业贷款产品',
|
||
|
|
customerName: '测试客户',
|
||
|
|
idType: 'id_card',
|
||
|
|
idNumber: '110101199001011234',
|
||
|
|
assetType: 'cattle',
|
||
|
|
assetQuantity: 10,
|
||
|
|
supervisionStatus: 'pending',
|
||
|
|
startTime: '2024-12-20',
|
||
|
|
endTime: '2024-12-31',
|
||
|
|
loanAmount: 100000.00,
|
||
|
|
interestRate: 0.0600,
|
||
|
|
loanTerm: 12,
|
||
|
|
supervisorName: '测试监管员',
|
||
|
|
supervisorPhone: '13800138000',
|
||
|
|
farmAddress: '测试养殖场地址',
|
||
|
|
remarks: '这是一个测试监管任务'
|
||
|
|
};
|
||
|
|
|
||
|
|
const response = await fetch('http://localhost:5351/api/supervision-tasks', {
|
||
|
|
method: 'POST',
|
||
|
|
headers: {
|
||
|
|
'Authorization': `Bearer ${token}`,
|
||
|
|
'Content-Type': 'application/json'
|
||
|
|
},
|
||
|
|
body: JSON.stringify(newTask)
|
||
|
|
});
|
||
|
|
|
||
|
|
const data = await response.json();
|
||
|
|
const resultDiv = document.getElementById('createResult');
|
||
|
|
resultDiv.style.display = 'block';
|
||
|
|
|
||
|
|
if (data.success) {
|
||
|
|
resultDiv.className = 'result success';
|
||
|
|
resultDiv.textContent = `创建监管任务成功!\n任务ID: ${data.data.id}\n申请单号: ${data.data.applicationNumber}\n客户姓名: ${data.data.customerName}\n监管状态: ${data.data.supervisionStatus}`;
|
||
|
|
} else {
|
||
|
|
resultDiv.className = 'result error';
|
||
|
|
resultDiv.textContent = `创建失败: ${data.message}`;
|
||
|
|
}
|
||
|
|
} catch (error) {
|
||
|
|
const resultDiv = document.getElementById('createResult');
|
||
|
|
resultDiv.style.display = 'block';
|
||
|
|
resultDiv.className = 'result error';
|
||
|
|
resultDiv.textContent = `请求错误: ${error.message}`;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</script>
|
||
|
|
</body>
|
||
|
|
</html>
|