mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-21 20:55:14 +00:00
feat(前端): 添加页面切换动画功能并优化工作流节点样式
refactor(后端): 统一查询参数处理使用QueueEnum枚举 style(前端): 优化菜单搜索组件样式 fix(后端): 移除不支持的数据库类型dm chore: 更新依赖和配置文件
This commit is contained in:
@@ -6,7 +6,7 @@ from redis.asyncio.client import Redis
|
||||
|
||||
from app.api.v1.module_system.auth.schema import AuthSchema
|
||||
from app.common.request import PaginationService
|
||||
from app.common.response import StreamResponse, SuccessResponse
|
||||
from app.common.response import ResponseSchema, StreamResponse, SuccessResponse
|
||||
from app.core.base_params import PaginationQueryParam
|
||||
from app.core.base_schema import BatchSetAvailable
|
||||
from app.core.dependencies import AuthPermission, redis_getter
|
||||
@@ -33,7 +33,7 @@ DictRouter = APIRouter(route_class=OperationLogRoute, prefix="/dict", tags=["字
|
||||
"/type/detail/{id}",
|
||||
summary="获取字典类型详情",
|
||||
description="获取字典类型详情",
|
||||
response_model=DictTypeOutSchema,
|
||||
response_model=ResponseSchema[DictTypeOutSchema],
|
||||
)
|
||||
async def get_type_detail_controller(
|
||||
id: Annotated[int, Path(description="字典类型ID", ge=1)],
|
||||
@@ -61,7 +61,7 @@ async def get_type_detail_controller(
|
||||
"/type/list",
|
||||
summary="查询字典类型",
|
||||
description="查询字典类型",
|
||||
response_model=list[DictTypeOutSchema],
|
||||
response_model=ResponseSchema[list[DictTypeOutSchema]],
|
||||
)
|
||||
async def get_type_list_controller(
|
||||
page: Annotated[PaginationQueryParam, Depends()],
|
||||
@@ -98,7 +98,7 @@ async def get_type_list_controller(
|
||||
"/type/optionselect",
|
||||
summary="获取全部字典类型",
|
||||
description="获取全部字典类型",
|
||||
response_model=list[DictTypeOutSchema],
|
||||
response_model=ResponseSchema[list[DictTypeOutSchema]],
|
||||
)
|
||||
async def get_type_loptionselect_controller(
|
||||
auth: Annotated[AuthSchema, Depends(AuthPermission(["module_system:dict_type:query"]))],
|
||||
@@ -124,7 +124,7 @@ async def get_type_loptionselect_controller(
|
||||
"/type/create",
|
||||
summary="创建字典类型",
|
||||
description="创建字典类型",
|
||||
response_model=DictTypeOutSchema,
|
||||
response_model=ResponseSchema[DictTypeOutSchema],
|
||||
)
|
||||
async def create_type_controller(
|
||||
data: DictTypeCreateSchema,
|
||||
@@ -154,7 +154,7 @@ async def create_type_controller(
|
||||
"/type/update/{id}",
|
||||
summary="修改字典类型",
|
||||
description="修改字典类型",
|
||||
response_model=DictTypeOutSchema,
|
||||
response_model=ResponseSchema[DictTypeOutSchema],
|
||||
)
|
||||
async def update_type_controller(
|
||||
data: DictTypeUpdateSchema,
|
||||
@@ -186,6 +186,7 @@ async def update_type_controller(
|
||||
"/type/delete",
|
||||
summary="删除字典类型",
|
||||
description="删除字典类型",
|
||||
response_model=ResponseSchema[None],
|
||||
)
|
||||
async def delete_type_controller(
|
||||
redis: Annotated[Redis, Depends(redis_getter)],
|
||||
@@ -215,6 +216,7 @@ async def delete_type_controller(
|
||||
"/type/available/setting",
|
||||
summary="批量修改字典类型状态",
|
||||
description="批量修改字典类型状态",
|
||||
response_model=ResponseSchema[None],
|
||||
)
|
||||
async def batch_set_available_dict_type_controller(
|
||||
data: BatchSetAvailable,
|
||||
@@ -242,6 +244,7 @@ async def batch_set_available_dict_type_controller(
|
||||
"/type/export",
|
||||
summary="导出字典类型",
|
||||
description="导出字典类型",
|
||||
response_model=ResponseSchema[None],
|
||||
)
|
||||
async def export_type_list_controller(
|
||||
search: Annotated[DictTypeQueryParam, Depends()],
|
||||
@@ -276,7 +279,7 @@ async def export_type_list_controller(
|
||||
"/data/detail/{id}",
|
||||
summary="获取字典数据详情",
|
||||
description="获取字典数据详情",
|
||||
response_model=DictDataOutSchema,
|
||||
response_model=ResponseSchema[DictDataOutSchema],
|
||||
)
|
||||
async def get_data_detail_controller(
|
||||
id: Annotated[int, Path(description="字典数据ID", ge=1)],
|
||||
@@ -304,7 +307,7 @@ async def get_data_detail_controller(
|
||||
"/data/list",
|
||||
summary="查询字典数据",
|
||||
description="查询字典数据",
|
||||
response_model=list[DictDataOutSchema],
|
||||
response_model=ResponseSchema[list[DictDataOutSchema]],
|
||||
)
|
||||
async def get_data_list_controller(
|
||||
page: Annotated[PaginationQueryParam, Depends()],
|
||||
@@ -344,7 +347,7 @@ async def get_data_list_controller(
|
||||
"/data/create",
|
||||
summary="创建字典数据",
|
||||
description="创建字典数据",
|
||||
response_model=DictDataOutSchema,
|
||||
response_model=ResponseSchema[DictDataOutSchema],
|
||||
)
|
||||
async def create_data_controller(
|
||||
data: DictDataCreateSchema,
|
||||
@@ -374,7 +377,7 @@ async def create_data_controller(
|
||||
"/data/update/{id}",
|
||||
summary="修改字典数据",
|
||||
description="修改字典数据",
|
||||
response_model=DictDataOutSchema,
|
||||
response_model=ResponseSchema[DictDataOutSchema],
|
||||
)
|
||||
async def update_data_controller(
|
||||
data: DictDataUpdateSchema,
|
||||
@@ -406,6 +409,7 @@ async def update_data_controller(
|
||||
"/data/delete",
|
||||
summary="删除字典数据",
|
||||
description="删除字典数据",
|
||||
response_model=ResponseSchema[None],
|
||||
)
|
||||
async def delete_data_controller(
|
||||
redis: Annotated[Redis, Depends(redis_getter)],
|
||||
@@ -435,6 +439,7 @@ async def delete_data_controller(
|
||||
"/data/available/setting",
|
||||
summary="批量修改字典数据状态",
|
||||
description="批量修改字典数据状态",
|
||||
response_model=ResponseSchema[None],
|
||||
)
|
||||
async def batch_set_available_dict_data_controller(
|
||||
data: BatchSetAvailable,
|
||||
@@ -462,6 +467,7 @@ async def batch_set_available_dict_data_controller(
|
||||
"/data/export",
|
||||
summary="导出字典数据",
|
||||
description="导出字典数据",
|
||||
response_model=ResponseSchema[None],
|
||||
)
|
||||
async def export_data_list_controller(
|
||||
search: Annotated[DictDataQueryParam, Depends()],
|
||||
@@ -499,7 +505,7 @@ async def export_data_list_controller(
|
||||
"/data/info/{dict_type}",
|
||||
summary="根据字典类型获取数据",
|
||||
description="根据字典类型获取数据",
|
||||
response_model=list[DictDataOutSchema],
|
||||
response_model=ResponseSchema[list[DictDataOutSchema]],
|
||||
)
|
||||
async def get_init_dict_data_controller(
|
||||
dict_type: str, redis: Annotated[Redis, Depends(redis_getter)]
|
||||
|
||||
@@ -9,6 +9,7 @@ from pydantic import (
|
||||
model_validator,
|
||||
)
|
||||
|
||||
from app.common.enums import QueueEnum
|
||||
from app.core.base_schema import BaseSchema
|
||||
from app.core.validator import DateTimeStr
|
||||
|
||||
@@ -71,19 +72,17 @@ class DictTypeQueryParam:
|
||||
super().__init__()
|
||||
|
||||
# 模糊查询字段
|
||||
self.dict_name = (
|
||||
("like", f"%{dict_name.strip()}%") if dict_name and dict_name.strip() else None
|
||||
)
|
||||
self.dict_name = (QueueEnum.like.value, dict_name)
|
||||
|
||||
# 精确查询字段
|
||||
self.dict_type = dict_type.strip() if dict_type else None
|
||||
self.status = status
|
||||
self.dict_type = (QueueEnum.eq.value, dict_type)
|
||||
self.status = (QueueEnum.eq.value, status)
|
||||
|
||||
# 时间范围查询
|
||||
if created_time and len(created_time) == 2:
|
||||
self.created_time = ("between", (created_time[0], created_time[1]))
|
||||
self.created_time = (QueueEnum.between.value, (created_time[0], created_time[1]))
|
||||
if updated_time and len(updated_time) == 2:
|
||||
self.updated_time = ("between", (updated_time[0], updated_time[1]))
|
||||
self.updated_time = (QueueEnum.between.value, (updated_time[0], updated_time[1]))
|
||||
|
||||
|
||||
class DictDataCreateSchema(BaseModel):
|
||||
@@ -155,17 +154,15 @@ class DictDataQueryParam:
|
||||
) -> None:
|
||||
|
||||
# 模糊查询字段
|
||||
self.dict_label = (
|
||||
("like", f"%{dict_label.strip()}%") if dict_label and dict_label.strip() else None
|
||||
)
|
||||
self.dict_label = (QueueEnum.like.value, dict_label)
|
||||
|
||||
# 精确查询字段
|
||||
self.dict_type = dict_type.strip() if dict_type else None
|
||||
self.dict_type_id = dict_type_id
|
||||
self.status = status
|
||||
self.dict_type = (QueueEnum.eq.value, dict_type)
|
||||
self.dict_type_id = (QueueEnum.eq.value, dict_type_id)
|
||||
self.status = (QueueEnum.eq.value, status)
|
||||
|
||||
# 时间范围查询
|
||||
if created_time and len(created_time) == 2:
|
||||
self.created_time = ("between", (created_time[0], created_time[1]))
|
||||
self.created_time = (QueueEnum.between.value, (created_time[0], created_time[1]))
|
||||
if updated_time and len(updated_time) == 2:
|
||||
self.updated_time = ("between", (updated_time[0], updated_time[1]))
|
||||
self.updated_time = (QueueEnum.between.value, (updated_time[0], updated_time[1]))
|
||||
|
||||
Reference in New Issue
Block a user