mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-20 20:39:55 +00:00
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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user