103 lines
4.2 KiB
JavaScript
103 lines
4.2 KiB
JavaScript
const { chromium } = require('playwright');
|
|
const fs = require('fs');
|
|
|
|
async function testDeviceApi() {
|
|
const browser = await chromium.launch({
|
|
headless: true,
|
|
args: ['--no-sandbox', '--disable-setuid-sandbox']
|
|
});
|
|
|
|
const context = await browser.newContext({
|
|
viewport: { width: 1920, height: 2000 }
|
|
});
|
|
|
|
const page = await context.newPage();
|
|
|
|
try {
|
|
const baseUrl = 'http://localhost:18080';
|
|
|
|
// Step 1: 登录获取token
|
|
console.log('[Step 1] 登录获取token...');
|
|
const loginRes = await page.evaluate(async (baseUrl) => {
|
|
const res = await fetch(`${baseUrl}/login`, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ username: 'admin', password: 'admin123' })
|
|
});
|
|
return res.json();
|
|
}, baseUrl);
|
|
|
|
console.log('[Step 1] 登录结果:', loginRes.code === 200 ? '成功' : '失败');
|
|
|
|
if (loginRes.code !== 200) {
|
|
console.error('[Error] 登录失败:', loginRes.msg);
|
|
return;
|
|
}
|
|
|
|
// Step 2: 调用getDeviceList API
|
|
console.log('[Step 2] 调用耗材列表API...');
|
|
const apiRes = await page.evaluate(async (baseUrl) => {
|
|
const res = await fetch(`${baseUrl}/data-dictionary/device/information-page?pageNo=1&pageSize=100&searchKey=&statusEnum=2`, {
|
|
method: 'GET',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'Authorization': 'Bearer ' + localStorage.getItem('token')
|
|
}
|
|
});
|
|
return res.json();
|
|
}, baseUrl);
|
|
|
|
console.log('[Step 2] API响应状态:', apiRes.code);
|
|
|
|
if (apiRes.code === 200 && apiRes.data && apiRes.data.records) {
|
|
console.log(`\n[Step 3] 获取到 ${apiRes.data.records.length} 条耗材记录`);
|
|
|
|
// 保存完整数据到文件
|
|
fs.writeFileSync('device_api_response.json', JSON.stringify(apiRes.data, null, 2));
|
|
console.log('[Step 3] 完整数据已保存到 device_api_response.json');
|
|
|
|
// 分析前5条记录
|
|
console.log('\n[Step 4] 分析前5条记录的价格字段:');
|
|
apiRes.data.records.slice(0, 5).forEach((item, index) => {
|
|
console.log(`\n记录 ${index + 1}:`);
|
|
console.log(' - name:', item.name);
|
|
console.log(' - busNo:', item.busNo);
|
|
console.log(' - price:', item.price);
|
|
console.log(' - retailPrice:', item.retailPrice);
|
|
console.log(' - purchasePrice:', item.purchasePrice);
|
|
console.log(' - maximumRetailPrice:', item.maximumRetailPrice);
|
|
|
|
// 检查所有包含price的字段
|
|
const priceFields = Object.keys(item).filter(k =>
|
|
k.toLowerCase().includes('price') || k.toLowerCase().includes('amount')
|
|
);
|
|
console.log(' - 所有价格相关字段:', priceFields);
|
|
});
|
|
|
|
// 统计有多少条记录有价格
|
|
const withRetailPrice = apiRes.data.records.filter(item =>
|
|
item.retailPrice !== undefined && item.retailPrice !== null && item.retailPrice !== ''
|
|
).length;
|
|
const withPrice = apiRes.data.records.filter(item =>
|
|
item.price !== undefined && item.price !== null && item.price !== ''
|
|
).length;
|
|
|
|
console.log(`\n[Step 5] 数据统计:`);
|
|
console.log(` - 总记录数: ${apiRes.data.records.length}`);
|
|
console.log(` - 有retailPrice的记录: ${withRetailPrice}`);
|
|
console.log(` - 有price的记录: ${withPrice}`);
|
|
console.log(` - 无任何价格的记录: ${apiRes.data.records.length - Math.max(withRetailPrice, withPrice)}`);
|
|
|
|
} else {
|
|
console.error('[Error] API调用失败:', apiRes.msg || '未知错误');
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('[Error]', error.message);
|
|
} finally {
|
|
await browser.close();
|
|
}
|
|
}
|
|
|
|
testDeviceApi();
|