feat: 添加异常日志功能并优化UI样式

refactor: 重构后端查询逻辑和API响应处理

fix: 修复用户角色更新和文件上传问题

test: 添加前端性能测试脚本和E2E测试用例

chore: 更新依赖版本和配置文件

docs: 添加环境检查脚本和测试文档

style: 统一表格标签样式和路由命名

perf: 优化前端页面加载速度和响应时间
This commit is contained in:
张翔
2026-03-24 13:32:20 +08:00
parent a97d317e4a
commit be5d5ede90
184 changed files with 11231 additions and 1903 deletions
@@ -15,8 +15,8 @@ export class RoleManagementPage {
constructor(page: Page) {
this.page = page;
this.table = page.locator('.el-table').or(page.locator('table'));
this.createRoleButton = page.getByRole('button', { name: '创建角色' }).or(page.locator('button:has-text("创建角色")'));
this.table = page.locator('.el-table').first();
this.createRoleButton = page.getByRole('button', { name: '新增角色' }).or(page.locator('button:has-text("新增角色")'));
this.successMessage = page.locator('.el-message--success').or(page.locator('.success-message'));
this.roleNameInput = page.locator('input[placeholder*="角色名称"]').or(page.locator('input[name*="roleName"]'));
this.roleKeyInput = page.locator('input[placeholder*="角色权限字符串"]').or(page.locator('input[name*="roleKey"]'));
@@ -44,29 +44,23 @@ export class RoleManagementPage {
status?: string;
remark?: string;
}) {
await this.roleNameInput.fill(roleData.roleName);
await this.roleKeyInput.fill(roleData.roleKey);
if (roleData.roleSort) {
await this.roleSortInput.fill(roleData.roleSort);
}
if (roleData.status) {
await this.statusSelect.selectOption(roleData.status);
}
await this.page.locator('.el-dialog').locator('input').first().fill(roleData.roleName);
await this.page.locator('.el-dialog').locator('input').nth(1).fill(roleData.roleKey);
if (roleData.remark) {
await this.remarkInput.fill(roleData.remark);
await this.page.locator('.el-dialog').locator('textarea').fill(roleData.remark);
}
}
async submitForm() {
await this.page.getByRole('button', { name: '确定' }).or(page.locator('button:has-text("确定")')).click();
await this.page.getByRole('button', { name: '确定' }).or(this.page.locator('button:has-text("确定")')).click();
}
async editRole(rowNumber: number) {
await this.table.locator(`tbody tr:nth-child(${rowNumber})`).getByRole('button', { name: '编辑' }).or(page.locator(`tbody tr:nth-child(${rowNumber}) .edit-button`)).click();
await this.table.locator(`tbody tr:nth-child(${rowNumber})`).getByRole('button', { name: '编辑' }).or(this.page.locator(`tbody tr:nth-child(${rowNumber}) .edit-button`)).click();
}
async deleteRole(rowNumber: number) {
await this.table.locator(`tbody tr:nth-child(${rowNumber})`).getByRole('button', { name: '删除' }).or(page.locator(`tbody tr:nth-child(${rowNumber}) .delete-button`)).click();
await this.table.locator(`tbody tr:nth-child(${rowNumber})`).getByRole('button', { name: '删除' }).or(this.page.locator(`tbody tr:nth-child(${rowNumber}) .delete-button`)).click();
}
async confirmDelete() {