feat(settings): 添加项目引导可见性配置项

feat(api): 修改导出接口返回类型为Blob并统一处理导出逻辑

feat(router): 添加404路由匹配规则

fix(permission): 优化动态路由处理逻辑

feat(login): 登录成功后自动显示项目引导

feat(navbar): 优化用户头像显示和引导可见性控制

feat(store): 添加引导可见性状态管理

refactor(views): 统一导出功能实现方式

fix(backend): 添加导出数据中的创建者字段

refactor(user): 优化用户导入导出功能

refactor(job): 重构定时任务页面和导出逻辑
This commit is contained in:
zhangtao
2025-07-30 00:08:30 +08:00
parent 9050de72d5
commit 2048820832
34 changed files with 411 additions and 398 deletions
@@ -173,10 +173,11 @@ async def batch_set_available_obj_controller(
@router.post('/data/export', summary="导出字典数据", description="导出字典数据")
async def export_data_list_controller(
search: DictDataQueryParams = Depends(),
page: PaginationQueryParams = Depends(),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:dict_data:export"]))
) -> StreamingResponse:
# 获取全量数据
result_dict_list = await DictDataService.get_obj_list_service(search=search, auth=auth)
result_dict_list = await DictDataService.get_obj_list_service(auth=auth, search=search, order_by=page.order_by)
export_result = await DictDataService.export_obj_service(data_list=result_dict_list)
logger.info('导出字典数据成功')
@@ -113,6 +113,7 @@ class JobService:
data = data_list.copy()
for item in data:
item['status'] = '已完成' if item['status'] == 0 else '运行中' if item['status'] == 1 else '暂停'
item['creator'] = item.get('creator', {}).get('name', '未知') if isinstance(item.get('creator'), dict) else '未知'
return ExcelUtil.export_list2excel(list_data=data_list, mapping_dict=mapping_dict)
@@ -142,6 +142,7 @@ class ConfigService:
for item in data:
# 处理状态
item['config_type'] = '' if item.get('config_type') else ''
item['creator'] = item.get('creator', {}).get('name', '未知') if isinstance(item.get('creator'), dict) else '未知'
return ExcelUtil.export_list2excel(list_data=data_list, mapping_dict=mapping_dict)
@@ -161,6 +161,7 @@ class DictTypeService:
for item in data:
# 处理状态
item['status'] = '正常' if item.get('status') else '停用'
item['creator'] = item.get('creator', {}).get('name', '未知') if isinstance(item.get('creator'), dict) else '未知'
return ExcelUtil.export_list2excel(list_data=data_list, mapping_dict=mapping_dict)
@@ -350,5 +351,6 @@ class DictDataService:
item['status'] = '正常' if item.get('status') else '停用'
# 处理是否默认
item['is_default'] = '' if item.get('is_default') else ''
item['creator'] = item.get('creator', {}).get('name', '未知') if isinstance(item.get('creator'), dict) else '未知'
return ExcelUtil.export_list2excel(list_data=data_list, mapping_dict=mapping_dict)
@@ -89,5 +89,6 @@ class NoticeService:
item['status'] = '正常' if item.get('status') else '停用'
# 处理公告类型
item['notice_type'] = '通知' if item.get('notice_type') == 1 else '公告'
item['creator'] = item.get('creator', {}).get('name', '未知') if isinstance(item.get('creator'), dict) else '未知'
return ExcelUtil.export_list2excel(list_data=notice_list, mapping_dict=mapping_dict)
@@ -90,5 +90,6 @@ class OperationLogService:
item['response_code'] = '成功' if item.get('response_code') == 200 else '失败'
# 处理日志类型
item['type'] = '操作日志' if item.get('type') == 1 else '登录日志'
item['creator'] = item.get('creator', {}).get('name', '未知') if isinstance(item.get('creator'), dict) else '未知'
return ExcelUtil.export_list2excel(list_data=operation_log_list, mapping_dict=mapping_dict)
@@ -89,5 +89,6 @@ class PositionService:
data = post_list.copy()
for item in data:
item['status'] = '正常' if item.get('status') else '停用'
item['creator'] = item.get('creator', {}).get('name', '未知') if isinstance(item.get('creator'), dict) else '未知'
return ExcelUtil.export_list2excel(list_data=post_list, mapping_dict=mapping_dict)
@@ -118,6 +118,7 @@ class RoleService:
for item in data:
item['status'] = '正常' if item.get('status') else '停用'
item['data_scope'] = data_scope_map.get(item.get('data_scope'))
item['creator'] = item.get('creator', {}).get('name', '未知') if isinstance(item.get('creator'), dict) else '未知'
return ExcelUtil.export_list2excel(list_data=role_list, mapping_dict=mapping_dict)
@@ -427,15 +427,17 @@ class UserService:
'description': '备注',
'created_at': '创建时间',
'updated_at': '更新时间',
'creator_id': '创建者ID',
'creator': '创建者',
}
# 复制数据并转换
# creator = {'id': 1, 'name': '管理员', 'username': 'admin'}
data = user_list.copy()
for item in data:
item['status'] = '启用' if item.get('status') else '停用'
gender = item.get('gender')
item['gender'] = '' if gender == 1 else ('' if gender == 2 else '未知')
item['gender'] = '' if gender == '1' else ('' if gender == '2' else '未知')
item['is_superuser'] = '' if item.get('is_superuser') else ''
item['creator'] = item.get('creator', {}).get('name', '未知') if isinstance(item.get('creator'), dict) else '未知'
return ExcelUtil.export_list2excel(list_data=user_list, mapping_dict=mapping_dict)