feat: 统一状态字段为字符串类型并标准化状态显示

refactor: 将状态字段从布尔值改为字符串类型'0'和'1'
fix: 修复前端组件中状态显示和判断逻辑
docs: 更新相关字段描述为'0:启用 1:禁用'
style: 统一时间查询字段为created_time和created_id
This commit is contained in:
zhangtao
2025-11-30 09:12:13 +08:00
parent 959eb6f19c
commit 463e2fca23
36 changed files with 215 additions and 289 deletions
@@ -14,7 +14,7 @@ class ApplicationCreateSchema(BaseModel):
name: str = Field(..., max_length=64, description='应用名称')
access_url: str = Field(..., max_length=255, description="访问地址")
icon_url: Optional[str] = Field(None, max_length=300, description="应用图标URL")
status: str = Field(True, description="是否启用(True:启用 False:禁用)")
status: str = Field(True, description="是否启用(0:启用 1:禁用)")
description: Optional[str] = Field(default=None, max_length=255, description="描述")
@field_validator('access_url')
@@ -11,7 +11,7 @@ from app.core.base_schema import BaseSchema, UserBySchema, TenantSchema, Custome
class DemoCreateSchema(BaseModel):
"""新增模型"""
name: str = Field(..., min_length=2, max_length=50, description='名称')
status: str = Field(default="0", description="是否启用(True:启用 False:禁用)")
status: str = Field(default="0", description="是否启用(0:启用 1:禁用)")
description: Optional[str] = Field(default=None, max_length=255, description="描述")
@field_validator('name')
@@ -187,7 +187,7 @@ class DemoService:
data = obj_list.copy()
for item in data:
# 处理状态
item['status'] = '正常' if item.get('status') else '停用'
item['status'] = '启用' if item.get('status') == '0' else '停用'
# 处理创建者
creator_info = item.get('created_id')
if isinstance(creator_info, dict):
@@ -113,7 +113,7 @@ class {{ class_name }}Service:
for item in data:
# 状态转换
if 'status' in item:
item['status'] = '正常' if item.get('status') else '停用'
item['status'] = '启用' if item.get('status') == '0' else '停用'
# 创建者转换
creator_info = item.get('creator')
if isinstance(creator_info, dict):
@@ -12,7 +12,7 @@ class CustomerCreateSchema(BaseModel):
"""新增模型"""
name: str = Field(..., max_length=64, description='客户名称')
code: Optional[str] = Field(default=None, max_length=20, description='客户编码')
status: str = Field(default="0", description="是否启用(True:启用 False:禁用)")
status: str = Field(default="0", description="是否启用(0:启用 1:禁用)")
description: Optional[str] = Field(default=None, max_length=255, description="描述")
@field_validator('name')
@@ -193,7 +193,7 @@ class CustomerService:
data = obj_list.copy()
for item in data:
# 处理状态
item['status'] = '正常' if item.get('status') else '停用'
item['status'] = '启用' if item.get('status') == '0' else '停用'
# 处理创建者
creator_info = item.get('creator')
if isinstance(creator_info, dict):
@@ -17,7 +17,7 @@ class DeptCreateSchema(BaseModel):
phone: Optional[str] = Field(default=None, max_length=11, description="手机")
email: Optional[str] = Field(default=None, max_length=64, description="邮箱")
parent_id: Optional[int] = Field(default=None, ge=0, description="父部门ID")
status: str = Field(default="0", description="是否启用(True:启用 False:禁用)")
status: str = Field(default="0", description="是否启用(0:启用 1:禁用)")
description: Optional[str] = Field(default=None, max_length=255, description="备注说明")
@field_validator('name')
@@ -236,7 +236,7 @@ class DictTypeService:
data = data_list.copy()
for item in data:
# 处理状态
item['status'] = '正常' if item.get('status') else '停用'
item['status'] = '启用' if item.get('status') == '0' else '停用'
item['creator'] = item.get('creator', {}).get('name', '未知') if isinstance(item.get('creator'), dict) else '未知'
return ExcelUtil.export_list2excel(list_data=data, mapping_dict=mapping_dict)
@@ -568,7 +568,7 @@ class DictDataService:
data = data_list.copy()
for item in data:
# 处理状态
item['status'] = '正常' if item.get('status') else '停用'
item['status'] = '启用' if item.get('status') == '0' else '停用'
# 处理是否默认
item['is_default'] = '' if item.get('is_default') else ''
item['creator'] = item.get('creator', {}).get('name', '未知') if isinstance(item.get('creator'), dict) else '未知'
@@ -27,7 +27,7 @@ class MenuCreateSchema(BaseModel):
params: Optional[list[dict[str, str]]] = Field(default=None, description="路由参数,格式为[{key: string, value: string}]")
affix: bool = Field(default=False, description="是否固定标签页(True:是 False:否)")
parent_id: Optional[int] = Field(default=None, ge=1, description="父菜单ID")
status: str = Field(default="0", description="是否启用(True:启用 False:禁用)")
status: str = Field(default="0", description="是否启用(0:启用 1:禁用)")
description: Optional[str] = Field(default=None, max_length=255, description="描述")
@model_validator(mode='before')
@@ -14,7 +14,7 @@ class NoticeCreateSchema(BaseModel):
notice_title: str = Field(..., max_length=50, description='公告标题')
notice_type: str = Field(..., description='公告类型(1通知 2公告)')
notice_content: str = Field(..., description='公告内容')
status: str = Field(default="0", description="是否启用(True:启用 False:禁用)")
status: str = Field(default="0", description="是否启用(0:启用 1:禁用)")
description: Optional[str] = Field(default=None, max_length=255, description="描述")
@field_validator("notice_type")
@@ -175,7 +175,7 @@ class NoticeService:
data = notice_list.copy()
for item in data:
# 处理状态
item['status'] = '正常' if item.get('status') else '停用'
item['status'] = '启用' if item.get('status') == '0' 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 '未知'
@@ -12,7 +12,7 @@ class PositionCreateSchema(BaseModel):
"""岗位创建模型"""
name: str = Field(..., max_length=40, description="岗位名称")
order: Optional[int] = Field(default=1, ge=1, description='显示排序')
status: str = Field(default="0", description="是否启用(True:启用 False:禁用)")
status: str = Field(default="0", description="是否启用(0:启用 1:禁用)")
description: Optional[str] = Field(default=None, max_length=255, description="描述")
@field_validator('name')
@@ -150,7 +150,7 @@ class PositionService:
# 复制数据并转换状态
data = position_list.copy()
for item in data:
item['status'] = '正常' if item.get('status') else '停用'
item['status'] = '启用' if item.get('status') == '0' else '停用'
item['creator'] = item.get('creator', {}).get('name', '未知') if isinstance(item.get('creator'), dict) else '未知'
return ExcelUtil.export_list2excel(list_data=data, mapping_dict=mapping_dict)
@@ -189,7 +189,7 @@ class RoleService:
# 处理数据
data = role_list.copy()
for item in data:
item['status'] = '正常' if item.get('status') else '停用'
item['status'] = '启用' if item.get('status') == '0' else '停用'
item['data_scope'] = data_scope_map.get(item.get('data_scope', 1), '')
item['creator'] = item.get('creator', {}).get('name', '未知') if isinstance(item.get('creator'), dict) else '未知'
@@ -13,7 +13,7 @@ class TenantCreateSchema(BaseModel):
"""新增模型"""
name: str = Field(..., max_length=64, description='租户名称')
code: Optional[str] = Field(default=None, max_length=20, description='租户编码')
status: str = Field(default="0", description="是否启用(True:启用 False:禁用)")
status: str = Field(default="0", description="是否启用(0:启用 1:禁用)")
description: Optional[str] = Field(default=None, max_length=255, description="描述")
start_time: Optional[DateTimeStr] = Field(default=None, description="开始时间")
end_time: Optional[DateTimeStr] = Field(default=None, description="结束时间")
@@ -270,7 +270,7 @@ class TenantService:
item['name'] = f"{item.get('name')} [系统租户]"
# 处理状态
item['status'] = '正常' if item.get('status') else '停用'
item['status'] = '启用' if item.get('status') == '0' else '停用'
# 处理创建者
creator_info = item.get('created_id')
@@ -283,15 +283,14 @@ class UserService:
raise CustomException(msg="用户不存在")
user = await UserCRUD(auth).get_by_id_crud(id=auth.user.id)
# 获取部门名称
if user and user.dept_id:
dept = await DeptCRUD(auth).get_by_id_crud(id=user.dept_id)
UserOutSchema.dept_name = dept.name if dept else None
if user and user.dept:
UserOutSchema.dept_name = user.dept.name
user_dict = UserOutSchema.model_validate(user).model_dump()
# 获取菜单权限
if auth.user and auth.user.is_superuser:
# 使用树形结构查询,预加载children关系
menu_all = await MenuCRUD(auth).get_tree_list_crud(search={'type': ('in', [1, 2, 4]), 'status': True}, order_by=[{"order": "asc"}])
menu_all = await MenuCRUD(auth).get_tree_list_crud(search={'type': ('in', [1, 2, 4]), 'status': '0'}, order_by=[{"order": "asc"}])
menus = [MenuOutSchema.model_validate(menu).model_dump() for menu in menu_all]
else: