78 lines
2.6 KiB
JavaScript
78 lines
2.6 KiB
JavaScript
// Filename: frontend/js/pages/logs/index.js
|
|
|
|
import { apiFetchJson } from '../../services/api.js';
|
|
import LogList from './logList.js';
|
|
|
|
class LogsPage {
|
|
constructor() {
|
|
this.state = {
|
|
logs: [],
|
|
// [修正] 暂时将分页状态设为默认值,直到后端添加分页支持
|
|
pagination: { page: 1, pages: 1, total: 0 },
|
|
isLoading: true,
|
|
filters: { page: 1, page_size: 20 }
|
|
};
|
|
|
|
this.elements = {
|
|
tableBody: document.getElementById('logs-table-body'),
|
|
};
|
|
|
|
this.initialized = !!this.elements.tableBody;
|
|
|
|
if (this.initialized) {
|
|
this.logList = new LogList(this.elements.tableBody);
|
|
}
|
|
}
|
|
|
|
async init() {
|
|
if (!this.initialized) {
|
|
console.error("LogsPage: Could not initialize. Essential container element 'logs-table-body' is missing.");
|
|
return;
|
|
}
|
|
this.initEventListeners();
|
|
await this.loadAndRenderLogs();
|
|
}
|
|
|
|
initEventListeners() {
|
|
// 分页和筛选的事件监听器将在后续任务中添加
|
|
}
|
|
|
|
async loadAndRenderLogs() {
|
|
this.state.isLoading = true;
|
|
this.logList.renderLoading();
|
|
|
|
try {
|
|
const url = `/admin/logs?page=${this.state.filters.page}&page_size=${this.state.filters.page_size}`;
|
|
const responseData = await apiFetchJson(url);
|
|
|
|
// [核心修正] 调整条件以匹配当前 API 返回的 { success: true, data: [...] } 结构
|
|
if (responseData && responseData.success && Array.isArray(responseData.data)) {
|
|
|
|
// [核心修正] 直接从 responseData.data 获取日志数组
|
|
this.state.logs = responseData.data;
|
|
|
|
// [临时] 由于当前响应不包含分页信息,我们暂时不更新 this.state.pagination
|
|
// 等待后端完善分页后,再恢复这里的逻辑
|
|
|
|
this.logList.render(this.state.logs);
|
|
|
|
// this.renderPaginationControls();
|
|
} else {
|
|
console.error("API response for logs is incorrect:", responseData);
|
|
this.logList.render([]);
|
|
}
|
|
} catch (error) {
|
|
console.error("Failed to load logs:", error);
|
|
// this.logList.renderError(error);
|
|
} finally {
|
|
this.state.isLoading = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
// 导出符合 main.js 规范的 default 函数
|
|
export default function() {
|
|
const page = new LogsPage();
|
|
page.init();
|
|
}
|