336 lines
9.3 KiB
JavaScript
336 lines
9.3 KiB
JavaScript
const axios = require('axios');
|
|||
|
|
|
||
|
|
const BASE_URL = 'http://localhost:3002/api';
|
||
|
|
|
||
|
|
async function testAPIs() {
|
||
|
|
console.log('开始测试所有修复的API...\n');
|
||
|
|
|
||
|
|
const results = [];
|
||
|
|
|
||
|
|
// 测试预算报价API
|
||
|
|
try {
|
||
|
|
const res = await axios.get(`${BASE_URL}/budget-projects`);
|
||
|
|
results.push({
|
||
|
|
name: '预算报价',
|
||
|
|
endpoint: '/api/budget-projects',
|
||
|
|
status: res.status,
|
||
|
|
success: res.data.success,
|
||
|
|
dataCount: res.data.data?.length || 0,
|
||
|
|
error: null
|
||
|
|
});
|
||
|
|
console.log('✅ 预算报价API测试成功');
|
||
|
|
} catch (error) {
|
||
|
|
results.push({
|
||
|
|
name: '预算报价',
|
||
|
|
endpoint: '/api/budget-projects',
|
||
|
|
status: error.response?.status || 'N/A',
|
||
|
|
success: false,
|
||
|
|
error: error.message
|
||
|
|
});
|
||
|
|
console.log('❌ 预算报价API测试失败:', error.message);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 测试施工管理API
|
||
|
|
try {
|
||
|
|
const res = await axios.get(`${BASE_URL}/construction/my-projects`);
|
||
|
|
results.push({
|
||
|
|
name: '施工管理',
|
||
|
|
endpoint: '/api/construction/my-projects',
|
||
|
|
status: res.status,
|
||
|
|
success: res.data.success,
|
||
|
|
dataCount: res.data.data?.length || 0,
|
||
|
|
error: null
|
||
|
|
});
|
||
|
|
console.log('✅ 施工管理API测试成功');
|
||
|
|
} catch (error) {
|
||
|
|
results.push({
|
||
|
|
name: '施工管理',
|
||
|
|
endpoint: '/api/construction/my-projects',
|
||
|
|
status: error.response?.status || 'N/A',
|
||
|
|
success: false,
|
||
|
|
error: error.message
|
||
|
|
});
|
||
|
|
console.log('❌ 施工管理API测试失败:', error.message);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 测试预支款API
|
||
|
|
try {
|
||
|
|
const res = await axios.get(`${BASE_URL}/advances`);
|
||
|
|
results.push({
|
||
|
|
name: '预支款',
|
||
|
|
endpoint: '/api/advances',
|
||
|
|
status: res.status,
|
||
|
|
success: res.data.success,
|
||
|
|
dataCount: res.data.data?.length || 0,
|
||
|
|
error: null
|
||
|
|
});
|
||
|
|
console.log('✅ 预支款API测试成功');
|
||
|
|
} catch (error) {
|
||
|
|
results.push({
|
||
|
|
name: '预支款',
|
||
|
|
endpoint: '/api/advances',
|
||
|
|
status: error.response?.status || 'N/A',
|
||
|
|
success: false,
|
||
|
|
error: error.message
|
||
|
|
});
|
||
|
|
console.log('❌ 预支款API测试失败:', error.message);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 测试报销API
|
||
|
|
try {
|
||
|
|
const res = await axios.get(`${BASE_URL}/reimbursements`);
|
||
|
|
results.push({
|
||
|
|
name: '报销',
|
||
|
|
endpoint: '/api/reimbursements',
|
||
|
|
status: res.status,
|
||
|
|
success: res.data.success,
|
||
|
|
dataCount: res.data.data?.length || 0,
|
||
|
|
error: null
|
||
|
|
});
|
||
|
|
console.log('✅ 报销API测试成功');
|
||
|
|
} catch (error) {
|
||
|
|
results.push({
|
||
|
|
name: '报销',
|
||
|
|
endpoint: '/api/reimbursements',
|
||
|
|
status: error.response?.status || 'N/A',
|
||
|
|
success: false,
|
||
|
|
error: error.message
|
||
|
|
});
|
||
|
|
console.log('❌ 报销API测试失败:', error.message);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 测试付款申请API
|
||
|
|
try {
|
||
|
|
const res = await axios.get(`${BASE_URL}/payment-requests`);
|
||
|
|
results.push({
|
||
|
|
name: '付款申请',
|
||
|
|
endpoint: '/api/payment-requests',
|
||
|
|
status: res.status,
|
||
|
|
success: res.data.success,
|
||
|
|
dataCount: res.data.data?.length || 0,
|
||
|
|
error: null
|
||
|
|
});
|
||
|
|
console.log('✅ 付款申请API测试成功');
|
||
|
|
} catch (error) {
|
||
|
|
results.push({
|
||
|
|
name: '付款申请',
|
||
|
|
endpoint: '/api/payment-requests',
|
||
|
|
status: error.response?.status || 'N/A',
|
||
|
|
success: false,
|
||
|
|
error: error.message
|
||
|
|
});
|
||
|
|
console.log('❌ 付款申请API测试失败:', error.message);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 测试核销API
|
||
|
|
try {
|
||
|
|
const res = await axios.get(`${BASE_URL}/verifications`);
|
||
|
|
results.push({
|
||
|
|
name: '核销',
|
||
|
|
endpoint: '/api/verifications',
|
||
|
|
status: res.status,
|
||
|
|
success: res.data.success,
|
||
|
|
dataCount: res.data.data?.length || 0,
|
||
|
|
error: null
|
||
|
|
});
|
||
|
|
console.log('✅ 核销API测试成功');
|
||
|
|
} catch (error) {
|
||
|
|
results.push({
|
||
|
|
name: '核销',
|
||
|
|
endpoint: '/api/verifications',
|
||
|
|
status: error.response?.status || 'N/A',
|
||
|
|
success: false,
|
||
|
|
error: error.message
|
||
|
|
});
|
||
|
|
console.log('❌ 核销API测试失败:', error.message);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 测试采购申请API
|
||
|
|
try {
|
||
|
|
const res = await axios.get(`${BASE_URL}/purchase-requests`);
|
||
|
|
results.push({
|
||
|
|
name: '采购申请',
|
||
|
|
endpoint: '/api/purchase-requests',
|
||
|
|
status: res.status,
|
||
|
|
success: res.data.success,
|
||
|
|
dataCount: res.data.data?.length || 0,
|
||
|
|
error: null
|
||
|
|
});
|
||
|
|
console.log('✅ 采购申请API测试成功');
|
||
|
|
} catch (error) {
|
||
|
|
results.push({
|
||
|
|
name: '采购申请',
|
||
|
|
endpoint: '/api/purchase-requests',
|
||
|
|
status: error.response?.status || 'N/A',
|
||
|
|
success: false,
|
||
|
|
error: error.message
|
||
|
|
});
|
||
|
|
console.log('❌ 采购申请API测试失败:', error.message);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 测试汇率最新API
|
||
|
|
try {
|
||
|
|
const res = await axios.get(`${BASE_URL}/exchange-rates/latest`);
|
||
|
|
results.push({
|
||
|
|
name: '汇率最新',
|
||
|
|
endpoint: '/api/exchange-rates/latest',
|
||
|
|
status: res.status,
|
||
|
|
success: res.data.success,
|
||
|
|
dataCount: Object.keys(res.data.data || {}).length,
|
||
|
|
error: null
|
||
|
|
});
|
||
|
|
console.log('✅ 汇率最新API测试成功');
|
||
|
|
} catch (error) {
|
||
|
|
results.push({
|
||
|
|
name: '汇率最新',
|
||
|
|
endpoint: '/api/exchange-rates/latest',
|
||
|
|
status: error.response?.status || 'N/A',
|
||
|
|
success: false,
|
||
|
|
error: error.message
|
||
|
|
});
|
||
|
|
console.log('❌ 汇率最新API测试失败:', error.message);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 测试汇率历史API
|
||
|
|
try {
|
||
|
|
const res = await axios.get(`${BASE_URL}/exchange-rates/history`);
|
||
|
|
results.push({
|
||
|
|
name: '汇率历史',
|
||
|
|
endpoint: '/api/exchange-rates/history',
|
||
|
|
status: res.status,
|
||
|
|
success: res.data.success,
|
||
|
|
dataCount: res.data.data?.length || 0,
|
||
|
|
error: null
|
||
|
|
});
|
||
|
|
console.log('✅ 汇率历史API测试成功');
|
||
|
|
} catch (error) {
|
||
|
|
results.push({
|
||
|
|
name: '汇率历史',
|
||
|
|
endpoint: '/api/exchange-rates/history',
|
||
|
|
status: error.response?.status || 'N/A',
|
||
|
|
success: false,
|
||
|
|
error: error.message
|
||
|
|
});
|
||
|
|
console.log('❌ 汇率历史API测试失败:', error.message);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 测试项目API
|
||
|
|
try {
|
||
|
|
const res = await axios.get(`${BASE_URL}/projects`);
|
||
|
|
results.push({
|
||
|
|
name: '项目',
|
||
|
|
endpoint: '/api/projects',
|
||
|
|
status: res.status,
|
||
|
|
success: res.data.success,
|
||
|
|
dataCount: res.data.data?.length || 0,
|
||
|
|
error: null
|
||
|
|
});
|
||
|
|
console.log('✅ 项目API测试成功');
|
||
|
|
} catch (error) {
|
||
|
|
results.push({
|
||
|
|
name: '项目',
|
||
|
|
endpoint: '/api/projects',
|
||
|
|
status: error.response?.status || 'N/A',
|
||
|
|
success: false,
|
||
|
|
error: error.message
|
||
|
|
});
|
||
|
|
console.log('❌ 项目API测试失败:', error.message);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 测试分包商API
|
||
|
|
try {
|
||
|
|
const res = await axios.get(`${BASE_URL}/subcontractors`);
|
||
|
|
results.push({
|
||
|
|
name: '分包商',
|
||
|
|
endpoint: '/api/subcontractors',
|
||
|
|
status: res.status,
|
||
|
|
success: res.data.success,
|
||
|
|
dataCount: res.data.data?.length || 0,
|
||
|
|
error: null
|
||
|
|
});
|
||
|
|
console.log('✅ 分包商API测试成功');
|
||
|
|
} catch (error) {
|
||
|
|
results.push({
|
||
|
|
name: '分包商',
|
||
|
|
endpoint: '/api/subcontractors',
|
||
|
|
status: error.response?.status || 'N/A',
|
||
|
|
success: false,
|
||
|
|
error: error.message
|
||
|
|
});
|
||
|
|
console.log('❌ 分包商API测试失败:', error.message);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 测试供应商API
|
||
|
|
try {
|
||
|
|
const res = await axios.get(`${BASE_URL}/suppliers`);
|
||
|
|
results.push({
|
||
|
|
name: '供应商',
|
||
|
|
endpoint: '/api/suppliers',
|
||
|
|
status: res.status,
|
||
|
|
success: res.data.success,
|
||
|
|
dataCount: res.data.data?.length || 0,
|
||
|
|
error: null
|
||
|
|
});
|
||
|
|
console.log('✅ 供应商API测试成功');
|
||
|
|
} catch (error) {
|
||
|
|
results.push({
|
||
|
|
name: '供应商',
|
||
|
|
endpoint: '/api/suppliers',
|
||
|
|
status: error.response?.status || 'N/A',
|
||
|
|
success: false,
|
||
|
|
error: error.message
|
||
|
|
});
|
||
|
|
console.log('❌ 供应商API测试失败:', error.message);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 测试客户API
|
||
|
|
try {
|
||
|
|
const res = await axios.get(`${BASE_URL}/customers`);
|
||
|
|
results.push({
|
||
|
|
name: '客户',
|
||
|
|
endpoint: '/api/customers',
|
||
|
|
status: res.status,
|
||
|
|
success: res.data.success,
|
||
|
|
dataCount: res.data.data?.length || 0,
|
||
|
|
error: null
|
||
|
|
});
|
||
|
|
console.log('✅ 客户API测试成功');
|
||
|
|
} catch (error) {
|
||
|
|
results.push({
|
||
|
|
name: '客户',
|
||
|
|
endpoint: '/api/customers',
|
||
|
|
status: error.response?.status || 'N/A',
|
||
|
|
success: false,
|
||
|
|
error: error.message
|
||
|
|
});
|
||
|
|
console.log('❌ 客户API测试失败:', error.message);
|
||
|
|
}
|
||
|
|
|
||
|
|
console.log('\n========================================');
|
||
|
|
console.log('测试结果汇总:');
|
||
|
|
console.log('========================================\n');
|
||
|
|
|
||
|
|
results.forEach(result => {
|
||
|
|
const status = result.success ? '✅ 成功' : '❌ 失败';
|
||
|
|
console.log(`${status} | ${result.name}`);
|
||
|
|
console.log(` 端点: ${result.endpoint}`);
|
||
|
|
console.log(` 状态码: ${result.status}`);
|
||
|
|
if (result.success) {
|
||
|
|
console.log(` 数据量: ${result.dataCount}`);
|
||
|
|
} else {
|
||
|
|
console.log(` 错误: ${result.error}`);
|
||
|
|
}
|
||
|
|
console.log('');
|
||
|
|
});
|
||
|
|
|
||
|
|
const successCount = results.filter(r => r.success).length;
|
||
|
|
const failCount = results.filter(r => !r.success).length;
|
||
|
|
|
||
|
|
console.log('========================================');
|
||
|
|
console.log(`总计: ${results.length}个API`);
|
||
|
|
console.log(`成功: ${successCount}个`);
|
||
|
|
console.log(`失败: ${failCount}个`);
|
||
|
|
console.log('========================================');
|
||
|
|
}
|
||
|
|
|
||
|
|
testAPIs().catch(console.error);
|