refactor(api): 统一详情接口使用路径参数替代查询参数

feat(utils): 新增部门树格式化工具函数
style(components): 调整通知组件样式和内容显示
fix(store): 修复通知公告获取逻辑并添加日志
perf(request): 优化请求拦截器仅对非GET请求显示成功消息
refactor(views): 重构多个模块的删除操作确认逻辑
docs(types): 移除未使用的全局类型定义
style(views): 调整表格列顺序和操作按钮样式
fix(components): 修复部门树组件数据加载和格式化
refactor(api): 重构用户、角色等模块的接口参数类型
style(views): 统一表单选择器宽度和布局
This commit is contained in:
zhangtao
2025-07-19 02:19:58 +08:00
parent d8bac53c72
commit df2c0a76c5
49 changed files with 584 additions and 577 deletions
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Body, Depends, Query
from fastapi import APIRouter, Body, Depends, Path, Query
from fastapi.responses import JSONResponse, StreamingResponse
from app.common.response import StreamResponse, SuccessResponse
@@ -22,9 +22,9 @@ from app.core.ap_scheduler import SchedulerUtil
router = APIRouter(route_class=OperationLogRoute)
@router.get("/detail", summary="获取定时任务详情", description="获取定时任务详情")
@router.get("/detail/{id}", summary="获取定时任务详情", description="获取定时任务详情")
async def get_obj_detail_controller(
id: int = Query(..., description="定时任务ID"),
id: int = Path(..., description="定时任务ID"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:job:query"]))
) -> JSONResponse:
result_dict = await JobService.get_job_detail_service(id=id, auth=auth)
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Body, Depends, Query, Request, UploadFile
from fastapi import APIRouter, Body, Depends, Path, Query, Request, UploadFile
from fastapi.responses import JSONResponse, StreamingResponse
from aioredis import Redis
@@ -20,9 +20,9 @@ from app.utils.common_util import bytes2file_response
router = APIRouter(route_class=OperationLogRoute)
@router.get("/detail", summary="获取系统配置详情", description="获取系统配置详情")
@router.get("/detail/{id}", summary="获取系统配置详情", description="获取系统配置详情")
async def get_type_detail_controller(
id: int = Query(..., description="系统配置ID"),
id: int = Path(..., description="系统配置ID"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:config:query"]))
) -> JSONResponse:
result_dict = await ConfigService.get_obj_detail_service(id=id, auth=auth)
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Body, Depends, Query
from fastapi import APIRouter, Body, Depends, Path, Query
from fastapi.responses import JSONResponse
from app.common.response import SuccessResponse
@@ -34,9 +34,9 @@ async def get_obj_list_controller(
return SuccessResponse(data=result_dict, msg="查询部门成功")
@router.get("/detail", summary="查询部门详情", description="查询部门详情")
@router.get("/detail/{id}", summary="查询部门详情", description="查询部门详情")
async def get_obj_detail_controller(
id: int = Query(..., description="部门ID"),
id: int = Path(..., description="部门ID"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:dept:query"]))
) -> JSONResponse:
result_dict = await DeptService.get_dept_detail_service(id=id, auth=auth)
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
import json
from fastapi import APIRouter, Body, Depends, Query
from fastapi import APIRouter, Body, Depends, Path, Query
from fastapi.responses import JSONResponse, StreamingResponse
from aioredis import Redis
@@ -26,9 +26,9 @@ from app.api.v1.schemas.system.dict_schema import (
router = APIRouter(route_class=OperationLogRoute)
@router.get("/type/detail", summary="获取字典类型详情", description="获取字典类型详情")
@router.get("/type/detail/{id}", summary="获取字典类型详情", description="获取字典类型详情")
async def get_type_detail_controller(
id: int = Query(..., description="字典类型ID"),
id: int = Path(..., description="字典类型ID"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:dict_type:query"]))
) -> JSONResponse:
result_dict = await DictTypeService.get_obj_detail_service(id=id, auth=auth)
@@ -111,9 +111,9 @@ async def export_type_list_controller(
}
)
@router.get("/data/detail", summary="获取字典数据详情", description="获取字典数据详情")
@router.get("/data/detail/{id}", summary="获取字典数据详情", description="获取字典数据详情")
async def get_data_detail_controller(
id: int = Query(..., description="字典数据ID"),
id: int = Path(..., description="字典数据ID"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:dict_data:query"]))
) -> JSONResponse:
result_dict = await DictDataService.get_obj_detail_service(id=id, auth=auth)
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Body, Depends, Query
from fastapi import APIRouter, Body, Depends, Path, Query
from fastapi.responses import JSONResponse
from app.common.response import SuccessResponse
@@ -34,9 +34,9 @@ async def get_obj_list_controller(
return SuccessResponse(data=result_dict, msg="查询菜单成功")
@router.get("/detail", summary="查询菜单详情", description="查询菜单详情")
@router.get("/detail/{id}", summary="查询菜单详情", description="查询菜单详情")
async def get_obj_detail_controller(
id: int = Query(..., description="菜单ID"),
id: int = Path(..., description="菜单ID"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:menu:query"]))
) -> JSONResponse:
result_dict = await MenuService.get_menu_detail_service(id=id, auth=auth)
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Body, Depends, Query
from fastapi import APIRouter, Body, Depends, Path, Query
from fastapi.responses import JSONResponse, StreamingResponse
from app.common.response import StreamResponse, SuccessResponse
@@ -22,9 +22,9 @@ from app.api.v1.schemas.system.notice_schema import (
router = APIRouter(route_class=OperationLogRoute)
@router.get("/detail", summary="获取公告详情", description="获取公告详情")
@router.get("/detail/{id}", summary="获取公告详情", description="获取公告详情")
async def get_obj_detail_controller(
id: int = Query(..., description="公告ID"),
id: int = Path(..., description="公告ID"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:notice:query"]))
) -> JSONResponse:
result_dict = await NoticeService.get_notice_detail_service(id=id, auth=auth)
@@ -97,7 +97,7 @@ async def export_obj_list_controller(
)
@router.get("/info", summary="获取全局启用公告", description="获取全局启用公告")
@router.get("/available", summary="获取全局启用公告", description="获取全局启用公告")
async def get_obj_list_available_controller(
auth: AuthSchema = Depends(get_current_user)
) -> JSONResponse:
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Body, Depends, Query
from fastapi import APIRouter, Body, Depends, Path, Query
from fastapi.responses import JSONResponse, StreamingResponse
from app.common.request import PaginationService
@@ -30,9 +30,9 @@ async def get_obj_list_controller(
return SuccessResponse(data=result_dict, msg="查询日志成功")
@router.get("/detail", summary="日志详情", description="日志详情")
@router.get("/detail/{id}", summary="日志详情", description="日志详情")
async def get_obj_detail_controller(
id: int = Query(..., description="操作日志ID"),
id: int = Path(..., description="操作日志ID"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:log:query"]))
) -> JSONResponse:
""" 详情日志 """
@@ -43,7 +43,7 @@ async def get_obj_detail_controller(
@router.delete("/delete", summary="删除日志", description="删除日志")
async def delete_obj_log_controller(
ids: list[int] = Query(..., description="ID列表"),
ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:log:delete"]))
) -> JSONResponse:
""" 删除日志 """
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Body, Depends, Query
from fastapi import APIRouter, Body, Depends, Path, Query
from fastapi.responses import JSONResponse, StreamingResponse
from app.common.response import StreamResponse, SuccessResponse
@@ -35,9 +35,9 @@ async def get_obj_list_controller(
return SuccessResponse(data=result_dict, msg="查询岗位列表成功")
@router.get("/detail", summary="查询岗位详情", description="查询岗位详情")
@router.get("/detail/{id}", summary="查询岗位详情", description="查询岗位详情")
async def get_obj_detail_controller(
id: int = Query(..., description="岗位ID"),
id: int = Path(..., description="岗位ID"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:position:query"])),
) -> JSONResponse:
result_dict = await PositionService.get_position_detail_service(id=id, auth=auth)
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Body, Depends, Query
from fastapi import APIRouter, Body, Depends, Path, Query
from fastapi.responses import JSONResponse, StreamingResponse
from app.common.response import StreamResponse, SuccessResponse
@@ -36,9 +36,9 @@ async def get_obj_list_controller(
return SuccessResponse(data=result_dict, msg="查询角色成功")
@router.get("/detail", summary="查询角色详情", description="查询角色详情")
@router.get("/detail/{id}", summary="查询角色详情", description="查询角色详情")
async def get_obj_detail_controller(
id: int = Query(..., description="角色ID"),
id: int = Path(..., description="角色ID"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:role:query"])),
) -> JSONResponse:
result_dict = await RoleService.get_role_detail_service(id=id, auth=auth)
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from fastapi import APIRouter, Body, Depends, Query, UploadFile, Request
from fastapi import APIRouter, Body, Depends, Path, Query, UploadFile, Request
from fastapi.responses import JSONResponse, StreamingResponse
from sqlalchemy.ext.asyncio import AsyncSession
import urllib.parse
@@ -101,9 +101,9 @@ async def get_obj_list_controller(
return SuccessResponse(data=result_dict, msg="查询用户成功")
@router.get("/detail", summary="查询用户详情", description="查询用户详情")
@router.get("/detail/{id}", summary="查询用户详情", description="查询用户详情")
async def get_obj_detail_controller(
id: int = Query(..., description="用户ID"),
id: int = Path(..., description="用户ID"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:user:query"])),
) -> JSONResponse:
result_dict = await UserService.get_detail_by_id_service(id=id, auth=auth)
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from datetime import datetime
from typing import Optional
from fastapi import Query
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from datetime import datetime
from typing import Optional
from fastapi import Query
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from datetime import datetime
from typing import Optional, Literal
from fastapi import Query
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from datetime import datetime
from typing import Optional
from fastapi import Query
@@ -25,6 +26,7 @@ class NoticeQueryParams:
# 精确查询字段
self.creator_id = creator
self.status = status
self.notice_type = notice_type
# 时间范围查询
if start_time and end_time: