feat(系统配置): 重构系统配置模块为参数管理模块

refactor(代码生成): 重构代码生成相关组件和路由路径

feat(WebSocket): 添加WebSocket支持并配置Nginx代理

fix(用户管理): 移除超级管理员过滤并调整用户数据

feat(定时任务): 完善定时任务日志功能并添加相关API

style(前端): 优化AI助手界面样式和提示文本

chore(初始化数据): 清理和更新系统初始化数据

perf(前端): 优化表格操作列宽度和按钮样式

docs(注释): 更新控制器注释以反映模块变更
This commit is contained in:
zhangtao
2025-09-11 02:06:11 +08:00
parent 6bd474eb4f
commit ea4e35fd14
45 changed files with 1872 additions and 1637 deletions
@@ -12,10 +12,10 @@ from .service import MCPService
from .schema import ChatQuerySchema from .schema import ChatQuerySchema
MCPRouter = APIRouter(route_class=OperationLogRoute, prefix="/mcp", tags=["MCP智能助手"]) MCPRouter = APIRouter(route_class=OperationLogRoute, prefix="", tags=["MCP智能助手"])
@MCPRouter.post("/chat", summary="智能对话", description="与MCP智能助手进行对话") @MCPRouter.post("/mcp/chat", summary="智能对话", description="与MCP智能助手进行对话")
async def chat_controller( async def chat_controller(
query: ChatQuerySchema, query: ChatQuerySchema,
auth: AuthSchema = Depends(AuthPermission(permissions=["ai:mcp:chat"])) auth: AuthSchema = Depends(AuthPermission(permissions=["ai:mcp:chat"]))
@@ -36,7 +36,7 @@ async def chat_controller(
return StreamingResponse(generate_response(), media_type="text/plain; charset=utf-8") return StreamingResponse(generate_response(), media_type="text/plain; charset=utf-8")
@MCPRouter.websocket("/ws/chat", name="WebSocket聊天") @MCPRouter.websocket("/ws/mcp/chat", name="WebSocket聊天")
async def websocket_chat_controller( async def websocket_chat_controller(
websocket: WebSocket, websocket: WebSocket,
): ):
@@ -8,6 +8,7 @@ import pandas as pd
from app.core.base_schema import BatchSetAvailable from app.core.base_schema import BatchSetAvailable
from app.core.exceptions import CustomException from app.core.exceptions import CustomException
from app.utils.excel_util import ExcelUtil from app.utils.excel_util import ExcelUtil
from app.common.response import ErrorResponse
from app.core.logger import logger from app.core.logger import logger
from app.api.v1.module_system.auth.schema import AuthSchema from app.api.v1.module_system.auth.schema import AuthSchema
from .schema import DemoCreateSchema, DemoUpdateSchema, DemoOutSchema from .schema import DemoCreateSchema, DemoUpdateSchema, DemoOutSchema
@@ -24,7 +24,6 @@ class JobCreateSchema(BaseModel):
end_date: Optional[str] = Field(default=None, description='结束时间') end_date: Optional[str] = Field(default=None, description='结束时间')
description: Optional[str] = Field(default=None, description='备注说明') description: Optional[str] = Field(default=None, description='备注说明')
status: Optional[bool] = Field(default=False, description='任务状态:启动,停止') status: Optional[bool] = Field(default=False, description='任务状态:启动,停止')
message: Optional[str] = Field(default=None, max_length=500, description='日志信息')
class JobUpdateSchema(JobCreateSchema): class JobUpdateSchema(JobCreateSchema):
@@ -161,7 +161,7 @@ async def create_directory_controller(
@ResourceRouter.get("/stats", summary="获取资源统计", description="获取资源统计信息") @ResourceRouter.get("/stats", summary="获取资源统计", description="获取资源统计信息")
async def get_resource_stats_controller( async def get_resource_stats_controller(
request: Request, request: Request,
auth: AuthSchema = Depends(AuthPermission(permissions=["resource:file:query"])) auth: AuthSchema = Depends(AuthPermission(permissions=["resource:stats:query"]))
) -> JSONResponse: ) -> JSONResponse:
"""获取资源统计""" """获取资源统计"""
result_dict = await ResourceService.get_stats_service( result_dict = await ResourceService.get_stats_service(
@@ -18,21 +18,21 @@ from .schema import ConfigCreateSchema, ConfigUpdateSchema
from .service import ConfigService from .service import ConfigService
ConfigRouter = APIRouter(route_class=OperationLogRoute, prefix="/config", tags=["系统配置"]) ConfigRouter = APIRouter(route_class=OperationLogRoute, prefix="/param", tags=["参数管理"])
@ConfigRouter.get("/detail/{id}", summary="获取系统配置详情", description="获取系统配置详情") @ConfigRouter.get("/detail/{id}", summary="获取参数详情", description="获取参数详情")
async def get_type_detail_controller( async def get_type_detail_controller(
id: int = Path(..., description="系统配置ID"), id: int = Path(..., description="参数ID"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:config:query"])) auth: AuthSchema = Depends(AuthPermission(permissions=["system:param:query"]))
) -> JSONResponse: ) -> JSONResponse:
result_dict = await ConfigService.get_obj_detail_service(id=id, auth=auth) result_dict = await ConfigService.get_obj_detail_service(id=id, auth=auth)
logger.info(f"获取系统配置详情成功 {id}") logger.info(f"获取参数详情成功 {id}")
return SuccessResponse(data=result_dict, msg="获取系统配置详情成功") return SuccessResponse(data=result_dict, msg="获取参数详情成功")
@ConfigRouter.get("/list", summary="获取配置", description="获取配置") @ConfigRouter.get("/list", summary="获取配置", description="获取配置")
async def get_obj_list_controller( async def get_obj_list_controller(
auth: AuthSchema = Depends(AuthPermission(permissions=["system:config:query"])), auth: AuthSchema = Depends(AuthPermission(permissions=["system:param:query"])),
page: PaginationQueryParams = Depends(), page: PaginationQueryParams = Depends(),
search: ConfigQueryParams = Depends(), search: ConfigQueryParams = Depends(),
) -> JSONResponse: ) -> JSONResponse:
@@ -42,49 +42,49 @@ async def get_obj_list_controller(
return SuccessResponse(data=result_dict, msg="查询配置列表成功") return SuccessResponse(data=result_dict, msg="查询配置列表成功")
@ConfigRouter.post("/create", summary="创建系统配置", description="创建系统配置") @ConfigRouter.post("/create", summary="创建参数", description="创建参数")
async def create_obj_controller( async def create_obj_controller(
data: ConfigCreateSchema, data: ConfigCreateSchema,
redis: Redis = Depends(redis_getter), redis: Redis = Depends(redis_getter),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:config:create"])) auth: AuthSchema = Depends(AuthPermission(permissions=["system:param:create"]))
) -> JSONResponse: ) -> JSONResponse:
result_dict = await ConfigService.create_obj_service(auth=auth, redis=redis, data=data) result_dict = await ConfigService.create_obj_service(auth=auth, redis=redis, data=data)
logger.info(f"创建系统配置成功: {result_dict}") logger.info(f"创建参数成功: {result_dict}")
return SuccessResponse(data=result_dict, msg="创建系统配置成功") return SuccessResponse(data=result_dict, msg="创建参数成功")
@ConfigRouter.put("/update/{id}", summary="修改配置", description="修改配置") @ConfigRouter.put("/update/{id}", summary="修改配置", description="修改配置")
async def update_objs_controller( async def update_objs_controller(
data: ConfigUpdateSchema, data: ConfigUpdateSchema,
id: int = Path(..., description="系统配置ID"), id: int = Path(..., description="参数ID"),
redis: Redis = Depends(redis_getter), redis: Redis = Depends(redis_getter),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:config:update"])) auth: AuthSchema = Depends(AuthPermission(permissions=["system:param:update"]))
) -> JSONResponse: ) -> JSONResponse:
result_dict = await ConfigService.update_obj_service(auth=auth, redis=redis, id=id, data=data) result_dict = await ConfigService.update_obj_service(auth=auth, redis=redis, id=id, data=data)
logger.info(f"更新配置成功 {result_dict}") logger.info(f"更新配置成功 {result_dict}")
return SuccessResponse(data=result_dict, msg="更新配置成功") return SuccessResponse(data=result_dict, msg="更新配置成功")
@ConfigRouter.delete("/delete", summary="删除系统配置", description="删除系统配置") @ConfigRouter.delete("/delete", summary="删除参数", description="删除参数")
async def delete_type_controller( async def delete_obj_controller(
redis: Redis = Depends(redis_getter), redis: Redis = Depends(redis_getter),
ids: list[int] = Body(..., description="ID列表"), ids: list[int] = Body(..., description="ID列表"),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:config:delete"])) auth: AuthSchema = Depends(AuthPermission(permissions=["system:param:delete"]))
) -> JSONResponse: ) -> JSONResponse:
await ConfigService.delete_obj_service(auth=auth, redis=redis, ids=ids) await ConfigService.delete_obj_service(auth=auth, redis=redis, ids=ids)
logger.info(f"删除系统配置成功: {ids}") logger.info(f"删除参数成功: {ids}")
return SuccessResponse(msg="删除系统配置成功") return SuccessResponse(msg="删除参数成功")
@ConfigRouter.post('/export', summary="导出系统配置", description="导出系统配置") @ConfigRouter.post('/export', summary="导出参数", description="导出参数")
async def export_type_list_controller( async def export_obj_list_controller(
search: ConfigQueryParams = Depends(), search: ConfigQueryParams = Depends(),
auth: AuthSchema = Depends(AuthPermission(permissions=["system:config:export"])) auth: AuthSchema = Depends(AuthPermission(permissions=["system:param:export"]))
) -> StreamingResponse: ) -> StreamingResponse:
# 获取全量数据 # 获取全量数据
result_dict_list = await ConfigService.get_obj_list_service(search=search, auth=auth) result_dict_list = await ConfigService.get_obj_list_service(search=search, auth=auth)
export_result = await ConfigService.export_obj_service(data_list=result_dict_list) export_result = await ConfigService.export_obj_service(data_list=result_dict_list)
logger.info('导出系统配置成功') logger.info('导出参数成功')
return StreamResponse( return StreamResponse(
data=bytes2file_response(export_result), data=bytes2file_response(export_result),
@@ -105,10 +105,10 @@ async def upload_file_controller(
return SuccessResponse(data=result_str, msg='上传文件成功') return SuccessResponse(data=result_str, msg='上传文件成功')
@ConfigRouter.get("/info", summary="获取初始化缓存系统配置", description="获取初始化缓存系统配置") @ConfigRouter.get("/info", summary="获取初始化缓存参数", description="获取初始化缓存参数")
async def get_init_config_controller( async def get_init_obj_controller(
redis: Redis = Depends(redis_getter), redis: Redis = Depends(redis_getter),
) -> JSONResponse: ) -> JSONResponse:
result_dict = await ConfigService.get_init_config_service(redis=redis) result_dict = await ConfigService.get_init_config_service(redis=redis)
logger.info(f"获取初始化缓存系统配置成功 {result_dict}") logger.info(f"获取初始化缓存参数成功 {result_dict}")
return SuccessResponse(data=result_dict, msg="获取初始化缓存系统配置成功") return SuccessResponse(data=result_dict, msg="获取初始化缓存参数成功")
@@ -11,8 +11,8 @@ class ConfigModel(CreatorMixin):
""" """
系统配置表 系统配置表
""" """
__tablename__ = "system_config" __tablename__ = "system_param"
__table_args__ = ({'comment': '系统配置表'}) __table_args__ = ({'comment': '系统参数表'})
# 基础字段 # 基础字段
config_name: Mapped[str] = mapped_column(String(500), nullable=False, unique=True, comment='参数名称') config_name: Mapped[str] = mapped_column(String(500), nullable=False, unique=True, comment='参数名称')
-53
View File
@@ -1,53 +0,0 @@
[
{
"name": "系统默认(无参)",
"func": "scheduler_test.job",
"trigger": "cron",
"args": null,
"kwargs": null,
"coalesce": false,
"max_instances": 1,
"jobstore": "default",
"executor": "default",
"trigger_args": "0 0 12 * * ?",
"start_date": null,
"end_date": null,
"status": false,
"description": null,
"creator_id": 1
},
{
"name": "系统默认(有参)",
"func": "scheduler_test.job",
"trigger": "cron",
"args": "test",
"kwargs": null,
"coalesce": false,
"max_instances": 1,
"jobstore": "default",
"executor": "default",
"trigger_args": "0 0 12 * * ?",
"start_date": null,
"end_date": null,
"status": false,
"description": null,
"creator_id": 1
},
{
"name": "系统默认(多参)",
"func": "scheduler_test.job",
"trigger": "cron",
"args": "new",
"kwargs": "{\"test\": 111}",
"coalesce": false,
"max_instances": 1,
"jobstore": "default",
"executor": "default",
"trigger_args": "0 0 12 * * ?",
"start_date": null,
"end_date": null,
"status": false,
"description": null,
"creator_id": 1
}
]
-81
View File
@@ -1,90 +1,9 @@
[ [
{ {
"id": 1,
"name": "集团总公司", "name": "集团总公司",
"order": 1, "order": 1,
"status": true, "status": true,
"parent_id": null, "parent_id": null,
"description": "集团总公司" "description": "集团总公司"
},
{
"id": 2,
"name": "西安分公司",
"order": 1,
"status": true,
"parent_id": 1,
"description": "西安分公司"
},
{
"id": 3,
"name": "深圳分公司",
"order": 2,
"status": true,
"parent_id": 1,
"description": "深圳分公司"
},
{
"id": 4,
"name": "开发组",
"order": 1,
"status": true,
"parent_id": 2,
"description": "开发组"
},
{
"id": 5,
"name": "测试组",
"order": 2,
"parent_id": 2,
"status": true,
"description": "测试组"
},
{
"id": 6,
"name": "演示组",
"order": 3,
"parent_id": 2,
"status": true,
"description": "演示组"
},
{
"id": 7,
"name": "销售部",
"order": 1,
"status": true,
"parent_id": 3,
"description": "销售部"
},
{
"id": 8,
"name": "市场部",
"order": 2,
"status": true,
"parent_id": 3,
"description": "市场部"
},
{
"id": 9,
"name": "财务部",
"order": 3,
"status": true,
"parent_id": 3,
"description": "财务部"
},
{
"id": 10,
"name": "研发部",
"order": 4,
"status": true,
"parent_id": 3,
"description": "研发部"
},
{
"id": 11,
"name": "运维部",
"order": 5,
"status": true,
"parent_id": 3,
"description": "研发部"
} }
] ]
@@ -1,6 +1,5 @@
[ [
{ {
"id": 1,
"dict_sort": 1, "dict_sort": 1,
"dict_label": "男", "dict_label": "男",
"dict_value": "0", "dict_value": "0",
@@ -13,7 +12,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 2,
"dict_sort": 2, "dict_sort": 2,
"dict_label": "女", "dict_label": "女",
"dict_value": "1", "dict_value": "1",
@@ -26,7 +24,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 3,
"dict_sort": 3, "dict_sort": 3,
"dict_label": "未知", "dict_label": "未知",
"dict_value": "2", "dict_value": "2",
@@ -39,7 +36,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 4,
"dict_sort": 1, "dict_sort": 1,
"dict_label": "启用", "dict_label": "启用",
"dict_value": "1", "dict_value": "1",
@@ -52,7 +48,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 5,
"dict_sort": 2, "dict_sort": 2,
"dict_label": "停用", "dict_label": "停用",
"dict_value": "0", "dict_value": "0",
@@ -65,7 +60,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 6,
"dict_sort": 1, "dict_sort": 1,
"dict_label": "是", "dict_label": "是",
"dict_value": "1", "dict_value": "1",
@@ -78,7 +72,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 7,
"dict_sort": 2, "dict_sort": 2,
"dict_label": "否", "dict_label": "否",
"dict_value": "0", "dict_value": "0",
@@ -91,7 +84,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 8,
"dict_sort": 99, "dict_sort": 99,
"dict_label": "其他", "dict_label": "其他",
"dict_value": "0", "dict_value": "0",
@@ -104,7 +96,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 9,
"dict_sort": 1, "dict_sort": 1,
"dict_label": "新增", "dict_label": "新增",
"dict_value": "1", "dict_value": "1",
@@ -117,7 +108,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 10,
"dict_sort": 2, "dict_sort": 2,
"dict_label": "修改", "dict_label": "修改",
"dict_value": "2", "dict_value": "2",
@@ -130,7 +120,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 11,
"dict_sort": 3, "dict_sort": 3,
"dict_label": "删除", "dict_label": "删除",
"dict_value": "3", "dict_value": "3",
@@ -143,7 +132,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 12,
"dict_sort": 4, "dict_sort": 4,
"dict_label": "分配权限", "dict_label": "分配权限",
"dict_value": "4", "dict_value": "4",
@@ -156,7 +144,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 13,
"dict_sort": 5, "dict_sort": 5,
"dict_label": "导出", "dict_label": "导出",
"dict_value": "5", "dict_value": "5",
@@ -169,7 +156,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 14,
"dict_sort": 6, "dict_sort": 6,
"dict_label": "导入", "dict_label": "导入",
"dict_value": "6", "dict_value": "6",
@@ -182,7 +168,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 15,
"dict_sort": 7, "dict_sort": 7,
"dict_label": "强退", "dict_label": "强退",
"dict_value": "7", "dict_value": "7",
@@ -195,7 +180,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 16,
"dict_sort": 8, "dict_sort": 8,
"dict_label": "生成代码", "dict_label": "生成代码",
"dict_value": "8", "dict_value": "8",
@@ -208,7 +192,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 17,
"dict_sort": 9, "dict_sort": 9,
"dict_label": "清空数据", "dict_label": "清空数据",
"dict_value": "9", "dict_value": "9",
@@ -221,7 +204,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 18,
"dict_sort": 1, "dict_sort": 1,
"dict_label": "通知", "dict_label": "通知",
"dict_value": "1", "dict_value": "1",
@@ -234,7 +216,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 19,
"dict_sort": 2, "dict_sort": 2,
"dict_label": "公告", "dict_label": "公告",
"dict_value": "2", "dict_value": "2",
@@ -247,7 +228,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 20,
"dict_sort": 1, "dict_sort": 1,
"dict_label": "默认(Memory)", "dict_label": "默认(Memory)",
"dict_value": "default", "dict_value": "default",
@@ -260,7 +240,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 21,
"dict_sort": 2, "dict_sort": 2,
"dict_label": "数据库(Sqlalchemy)", "dict_label": "数据库(Sqlalchemy)",
"dict_value": "sqlalchemy", "dict_value": "sqlalchemy",
@@ -273,7 +252,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 22,
"dict_sort": 3, "dict_sort": 3,
"dict_label": "数据库(Redis)", "dict_label": "数据库(Redis)",
"dict_value": "redis", "dict_value": "redis",
@@ -286,7 +264,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 23,
"dict_sort": 1, "dict_sort": 1,
"dict_label": "线程池", "dict_label": "线程池",
"dict_value": "default", "dict_value": "default",
@@ -299,7 +276,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 24,
"dict_sort": 2, "dict_sort": 2,
"dict_label": "进程池", "dict_label": "进程池",
"dict_value": "processpool", "dict_value": "processpool",
@@ -312,7 +288,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 25,
"dict_sort": 1, "dict_sort": 1,
"dict_label": "演示函数", "dict_label": "演示函数",
"dict_value": "scheduler_test.job", "dict_value": "scheduler_test.job",
@@ -325,7 +300,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 26,
"dict_sort": 1, "dict_sort": 1,
"dict_label": "指定日期(date)", "dict_label": "指定日期(date)",
"dict_value": "date", "dict_value": "date",
@@ -338,7 +312,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 27,
"dict_sort": 2, "dict_sort": 2,
"dict_label": "间隔触发器(interval)", "dict_label": "间隔触发器(interval)",
"dict_value": "interval", "dict_value": "interval",
@@ -351,7 +324,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 28,
"dict_sort": 3, "dict_sort": 3,
"dict_label": "cron表达式", "dict_label": "cron表达式",
"dict_value": "cron", "dict_value": "cron",
@@ -364,7 +336,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 29,
"dict_sort": 1, "dict_sort": 1,
"dict_label": "默认(default)", "dict_label": "默认(default)",
"dict_value": "default", "dict_value": "default",
@@ -377,7 +348,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 30,
"dict_sort": 2, "dict_sort": 2,
"dict_label": "主要(primary)", "dict_label": "主要(primary)",
"dict_value": "primary", "dict_value": "primary",
@@ -390,7 +360,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 31,
"dict_sort": 3, "dict_sort": 3,
"dict_label": "成功(success)", "dict_label": "成功(success)",
"dict_value": "success", "dict_value": "success",
@@ -403,7 +372,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 32,
"dict_sort": 4, "dict_sort": 4,
"dict_label": "信息(info)", "dict_label": "信息(info)",
"dict_value": "info", "dict_value": "info",
@@ -416,7 +384,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 33,
"dict_sort": 5, "dict_sort": 5,
"dict_label": "警告(warning)", "dict_label": "警告(warning)",
"dict_value": "warning", "dict_value": "warning",
@@ -429,7 +396,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 34,
"dict_sort": 6, "dict_sort": 6,
"dict_label": "危险(danger)", "dict_label": "危险(danger)",
"dict_value": "danger", "dict_value": "danger",
@@ -1,6 +1,5 @@
[ [
{ {
"id": 1,
"dict_name": "用户性别", "dict_name": "用户性别",
"dict_type": "sys_user_sex", "dict_type": "sys_user_sex",
"status": true, "status": true,
@@ -8,7 +7,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 2,
"dict_name": "系统是否", "dict_name": "系统是否",
"dict_type": "sys_yes_no", "dict_type": "sys_yes_no",
"status": true, "status": true,
@@ -16,7 +14,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 3,
"dict_name": "系统状态", "dict_name": "系统状态",
"dict_type": "sys_common_status", "dict_type": "sys_common_status",
"status": true, "status": true,
@@ -24,7 +21,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 4,
"dict_name": "通知类型", "dict_name": "通知类型",
"dict_type": "sys_notice_type", "dict_type": "sys_notice_type",
"status": true, "status": true,
@@ -32,7 +28,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 5,
"dict_name": "操作类型", "dict_name": "操作类型",
"dict_type": "sys_oper_type", "dict_type": "sys_oper_type",
"status": true, "status": true,
@@ -40,7 +35,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 6,
"dict_name": "任务存储器", "dict_name": "任务存储器",
"dict_type": "sys_job_store", "dict_type": "sys_job_store",
"status": true, "status": true,
@@ -48,7 +42,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 7,
"dict_name": "任务执行器", "dict_name": "任务执行器",
"dict_type": "sys_job_executor", "dict_type": "sys_job_executor",
"status": true, "status": true,
@@ -56,7 +49,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 8,
"dict_name": "任务函数", "dict_name": "任务函数",
"dict_type": "sys_job_function", "dict_type": "sys_job_function",
"status": true, "status": true,
@@ -64,7 +56,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 9,
"dict_name": "任务触发器", "dict_name": "任务触发器",
"dict_type": "sys_job_trigger", "dict_type": "sys_job_trigger",
"status": true, "status": true,
@@ -72,7 +63,6 @@
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 10,
"dict_name": "表格回显样式", "dict_name": "表格回显样式",
"dict_type": "sys_list_class", "dict_type": "sys_list_class",
"status": true, "status": true,
+106 -129
View File
@@ -1,6 +1,5 @@
[ [
{ {
"id": 1,
"name": "仪表盘", "name": "仪表盘",
"type": 1, "type": 1,
"icon": "client", "icon": "client",
@@ -21,7 +20,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 2,
"name": "工作台", "name": "工作台",
"type": 2, "type": 2,
"icon": "homepage", "icon": "homepage",
@@ -42,7 +40,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 3,
"name": "分析页", "name": "分析页",
"type": 2, "type": 2,
"icon": "el-icon-PieChart", "icon": "el-icon-PieChart",
@@ -63,7 +60,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 4,
"name": "系统管理", "name": "系统管理",
"type": 1, "type": 1,
"icon": "system", "icon": "system",
@@ -84,7 +80,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 5,
"name": "菜单管理", "name": "菜单管理",
"type": 2, "type": 2,
"icon": "menu", "icon": "menu",
@@ -105,7 +100,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 6,
"name": "部门管理", "name": "部门管理",
"type": 2, "type": 2,
"icon": "tree", "icon": "tree",
@@ -126,7 +120,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 7,
"name": "岗位管理", "name": "岗位管理",
"type": 2, "type": 2,
"icon": "el-icon-Coordinate", "icon": "el-icon-Coordinate",
@@ -147,7 +140,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 8,
"name": "角色管理", "name": "角色管理",
"type": 2, "type": 2,
"icon": "role", "icon": "role",
@@ -168,7 +160,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 9,
"name": "用户管理", "name": "用户管理",
"type": 2, "type": 2,
"icon": "el-icon-User", "icon": "el-icon-User",
@@ -189,7 +180,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 10,
"name": "日志管理", "name": "日志管理",
"type": 2, "type": 2,
"icon": "el-icon-Aim", "icon": "el-icon-Aim",
@@ -210,7 +200,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 11,
"name": "公告管理", "name": "公告管理",
"type": 2, "type": 2,
"icon": "bell", "icon": "bell",
@@ -231,12 +220,11 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 12, "name": "参数管理",
"name": "配置管理",
"type": 2, "type": 2,
"icon": "setting", "icon": "setting",
"order": 8, "order": 8,
"permission": "system:config:query", "permission": "system:param:query",
"route_name": "Config", "route_name": "Config",
"route_path": "/system/config", "route_path": "/system/config",
"component_path": "system/config/index", "component_path": "system/config/index",
@@ -245,14 +233,13 @@
"keep_alive": true, "keep_alive": true,
"hidden": false, "hidden": false,
"always_show": false, "always_show": false,
"title": "配置管理", "title": "参数管理",
"params": null, "params": null,
"affix": false, "affix": false,
"redirect": null, "redirect": null,
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 13,
"name": "字典管理", "name": "字典管理",
"type": 2, "type": 2,
"icon": "dict", "icon": "dict",
@@ -273,7 +260,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 14,
"name": "创建菜单", "name": "创建菜单",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -294,7 +280,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 15,
"name": "修改菜单", "name": "修改菜单",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -315,7 +300,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 16,
"name": "删除菜单", "name": "删除菜单",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -336,7 +320,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 17,
"name": "批量修改菜单状态", "name": "批量修改菜单状态",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -357,7 +340,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 18,
"name": "创建部门", "name": "创建部门",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -378,7 +360,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 19,
"name": "修改部门", "name": "修改部门",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -399,7 +380,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 20,
"name": "删除部门", "name": "删除部门",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -420,7 +400,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 21,
"name": "批量修改部门状态", "name": "批量修改部门状态",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -441,7 +420,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 22,
"name": "创建岗位", "name": "创建岗位",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -462,7 +440,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 23,
"name": "修改岗位", "name": "修改岗位",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -483,7 +460,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 24,
"name": "删除岗位", "name": "删除岗位",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -504,7 +480,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 25,
"name": "批量修改岗位状态", "name": "批量修改岗位状态",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -525,7 +500,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 26,
"name": "岗位导出", "name": "岗位导出",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -546,7 +520,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 27,
"name": "创建角色", "name": "创建角色",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -567,7 +540,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 28,
"name": "修改角色", "name": "修改角色",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -588,7 +560,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 29,
"name": "删除角色", "name": "删除角色",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -609,7 +580,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 30,
"name": "批量修改角色状态", "name": "批量修改角色状态",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -630,7 +600,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 31,
"name": "设置角色权限", "name": "设置角色权限",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -651,7 +620,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 32,
"name": "角色导出", "name": "角色导出",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -672,7 +640,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 33,
"name": "创建用户", "name": "创建用户",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -693,7 +660,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 34,
"name": "修改用户", "name": "修改用户",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -714,7 +680,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 35,
"name": "删除用户", "name": "删除用户",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -735,7 +700,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 36,
"name": "批量修改用户状态", "name": "批量修改用户状态",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -756,7 +720,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 37,
"name": "导出用户", "name": "导出用户",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -777,7 +740,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 38,
"name": "导入用户", "name": "导入用户",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -798,7 +760,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 39,
"name": "日志删除", "name": "日志删除",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -819,7 +780,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 40,
"name": "日志导出", "name": "日志导出",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -840,7 +800,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 41,
"name": "公告创建", "name": "公告创建",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -861,7 +820,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 42,
"name": "公告修改", "name": "公告修改",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -882,7 +840,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 43,
"name": "公告删除", "name": "公告删除",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -903,7 +860,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 44,
"name": "公告导出", "name": "公告导出",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -924,7 +880,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 45,
"name": "公告批量修改状态", "name": "公告批量修改状态",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -945,12 +900,11 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 46, "name": "创建参数",
"name": "创建配置",
"type": 3, "type": 3,
"icon": null, "icon": null,
"order": 1, "order": 1,
"permission": "system:config:create", "permission": "system:param:create",
"route_name": null, "route_name": null,
"route_path": null, "route_path": null,
"component_path": null, "component_path": null,
@@ -959,19 +913,18 @@
"keep_alive": true, "keep_alive": true,
"hidden": false, "hidden": false,
"always_show": false, "always_show": false,
"title": "创建配置", "title": "创建参数",
"params": null, "params": null,
"affix": false, "affix": false,
"redirect": null, "redirect": null,
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 47, "name": "修改参数",
"name": "修改配置",
"type": 3, "type": 3,
"icon": null, "icon": null,
"order": 2, "order": 2,
"permission": "system:config:update", "permission": "system:param:update",
"route_name": null, "route_name": null,
"route_path": null, "route_path": null,
"component_path": null, "component_path": null,
@@ -980,19 +933,18 @@
"keep_alive": true, "keep_alive": true,
"hidden": false, "hidden": false,
"always_show": false, "always_show": false,
"title": "修改配置", "title": "修改参数",
"params": null, "params": null,
"affix": false, "affix": false,
"redirect": null, "redirect": null,
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 48, "name": "删除参数",
"name": "删除配置",
"type": 3, "type": 3,
"icon": null, "icon": null,
"order": 3, "order": 3,
"permission": "system:config:delete", "permission": "system:param:delete",
"route_name": null, "route_name": null,
"route_path": null, "route_path": null,
"component_path": null, "component_path": null,
@@ -1001,19 +953,18 @@
"keep_alive": true, "keep_alive": true,
"hidden": false, "hidden": false,
"always_show": false, "always_show": false,
"title": "删除配置", "title": "删除参数",
"params": null, "params": null,
"affix": false, "affix": false,
"redirect": null, "redirect": null,
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 49, "name": "导出参数",
"name": "导出配置",
"type": 3, "type": 3,
"icon": null, "icon": null,
"order": 4, "order": 4,
"permission": "system:config:export", "permission": "system:param:export",
"route_name": null, "route_name": null,
"route_path": null, "route_path": null,
"component_path": null, "component_path": null,
@@ -1022,19 +973,18 @@
"keep_alive": true, "keep_alive": true,
"hidden": false, "hidden": false,
"always_show": false, "always_show": false,
"title": "导出配置", "title": "导出参数",
"params": null, "params": null,
"affix": false, "affix": false,
"redirect": null, "redirect": null,
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 50, "name": "参数上传",
"name": "配置上传",
"type": 3, "type": 3,
"icon": null, "icon": null,
"order": 5, "order": 5,
"permission": "system:config:upload", "permission": "system:param:upload",
"route_name": null, "route_name": null,
"route_path": null, "route_path": null,
"component_path": null, "component_path": null,
@@ -1043,14 +993,13 @@
"keep_alive": true, "keep_alive": true,
"hidden": false, "hidden": false,
"always_show": false, "always_show": false,
"title": "配置上传", "title": "参数上传",
"params": null, "params": null,
"affix": false, "affix": false,
"redirect": null, "redirect": null,
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 51,
"name": "创建字典类型", "name": "创建字典类型",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1071,7 +1020,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 52,
"name": "修改字典类型", "name": "修改字典类型",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1092,7 +1040,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 53,
"name": "删除字典类型", "name": "删除字典类型",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1113,7 +1060,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 54,
"name": "导出字典类型", "name": "导出字典类型",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1134,7 +1080,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 55,
"name": "批量修改字典状态", "name": "批量修改字典状态",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1155,7 +1100,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 56,
"name": "字典数据查询", "name": "字典数据查询",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1176,7 +1120,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 57,
"name": "创建字典数据", "name": "创建字典数据",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1197,7 +1140,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 58,
"name": "修改字典数据", "name": "修改字典数据",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1218,7 +1160,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 59,
"name": "删除字典数据", "name": "删除字典数据",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1239,7 +1180,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 60,
"name": "导出字典数据", "name": "导出字典数据",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1260,7 +1200,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 61,
"name": "批量修改字典数据状态", "name": "批量修改字典数据状态",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1281,7 +1220,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 62,
"name": "监控管理", "name": "监控管理",
"type": 1, "type": 1,
"icon": "monitor", "icon": "monitor",
@@ -1302,7 +1240,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 63,
"name": "任务管理", "name": "任务管理",
"type": 2, "type": 2,
"icon": "el-icon-DataLine", "icon": "el-icon-DataLine",
@@ -1323,7 +1260,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 64,
"name": "创建任务", "name": "创建任务",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1344,7 +1280,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 65,
"name": "修改和操作任务", "name": "修改和操作任务",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1365,7 +1300,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 66,
"name": "删除和清除任务", "name": "删除和清除任务",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1386,7 +1320,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 67,
"name": "导出定时任务", "name": "导出定时任务",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1407,7 +1340,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 68,
"name": "在线用户", "name": "在线用户",
"type": 2, "type": 2,
"icon": "el-icon-Headset", "icon": "el-icon-Headset",
@@ -1428,7 +1360,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 69,
"name": "在线用户强制下线", "name": "在线用户强制下线",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1449,7 +1380,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 70,
"name": "服务器监控", "name": "服务器监控",
"type": 2, "type": 2,
"icon": "el-icon-Odometer", "icon": "el-icon-Odometer",
@@ -1470,7 +1400,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 71,
"name": "缓存监控", "name": "缓存监控",
"type": 2, "type": 2,
"icon": "el-icon-Stopwatch", "icon": "el-icon-Stopwatch",
@@ -1491,7 +1420,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 72,
"name": "清除缓存", "name": "清除缓存",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1512,7 +1440,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 73,
"name": "公共模块", "name": "公共模块",
"type": 1, "type": 1,
"icon": "document", "icon": "document",
@@ -1533,7 +1460,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 74,
"name": "接口管理", "name": "接口管理",
"type": 4, "type": 4,
"icon": "api", "icon": "api",
@@ -1554,7 +1480,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 75,
"name": "文档管理", "name": "文档管理",
"type": 4, "type": 4,
"icon": "el-icon-Document", "icon": "el-icon-Document",
@@ -1575,7 +1500,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 76,
"name": "演示模块", "name": "演示模块",
"type": 1, "type": 1,
"icon": "el-icon-Document", "icon": "el-icon-Document",
@@ -1596,7 +1520,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 77,
"name": "示例管理", "name": "示例管理",
"type": 2, "type": 2,
"icon": "el-icon-DataLine", "icon": "el-icon-DataLine",
@@ -1617,7 +1540,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 78,
"name": "创建示例", "name": "创建示例",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1638,7 +1560,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 79,
"name": "更新示例", "name": "更新示例",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1659,7 +1580,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 80,
"name": "删除示例", "name": "删除示例",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1680,7 +1600,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 81,
"name": "批量修改示例状态", "name": "批量修改示例状态",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1701,7 +1620,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 82,
"name": "导出示例", "name": "导出示例",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1722,7 +1640,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 83,
"name": "导入示例", "name": "导入示例",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1742,7 +1659,7 @@
"redirect": null, "redirect": null,
"description": "初始化数据" "description": "初始化数据"
}, },
{ "id": 84, {
"name": "下载导入示例模版", "name": "下载导入示例模版",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1763,7 +1680,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 85,
"name": "应用管理", "name": "应用管理",
"type": 1, "type": 1,
"icon": "captcha", "icon": "captcha",
@@ -1784,7 +1700,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 86,
"name": "我的应用", "name": "我的应用",
"type": 2, "type": 2,
"icon": "el-icon-DataLine", "icon": "el-icon-DataLine",
@@ -1798,14 +1713,13 @@
"keep_alive": true, "keep_alive": true,
"hidden": false, "hidden": false,
"always_show": false, "always_show": false,
"title": "应用系统管理", "title": "系统管理",
"params": null, "params": null,
"affix": false, "affix": false,
"redirect": null, "redirect": null,
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 87,
"name": "创建应用", "name": "创建应用",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1826,7 +1740,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 88,
"name": "修改应用", "name": "修改应用",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1847,7 +1760,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 89,
"name": "删除应用", "name": "删除应用",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1868,7 +1780,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 90,
"name": "批量修改应用状态", "name": "批量修改应用状态",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1889,8 +1800,7 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 91, "name": "存储管理",
"name": "资源管理",
"type": 1, "type": 1,
"icon": "document", "icon": "document",
"order": 7, "order": 7,
@@ -1903,14 +1813,13 @@
"keep_alive": false, "keep_alive": false,
"hidden": false, "hidden": false,
"always_show": false, "always_show": false,
"title": "资源管理", "title": "存储管理",
"params": null, "params": null,
"affix": false, "affix": false,
"redirect": "/resource/file", "redirect": "/resource/file",
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 92,
"name": "文件管理", "name": "文件管理",
"type": 2, "type": 2,
"icon": "el-icon-Files", "icon": "el-icon-Files",
@@ -1931,7 +1840,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 93,
"name": "文件上传", "name": "文件上传",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1952,7 +1860,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 94,
"name": "文件下载", "name": "文件下载",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1973,7 +1880,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 95,
"name": "文件删除", "name": "文件删除",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -1994,7 +1900,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 96,
"name": "文件移动", "name": "文件移动",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -2015,7 +1920,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 97,
"name": "文件复制", "name": "文件复制",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -2036,7 +1940,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 98,
"name": "文件重命名", "name": "文件重命名",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -2057,7 +1960,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 99,
"name": "创建目录", "name": "创建目录",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -2078,7 +1980,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 100,
"name": "文件搜索", "name": "文件搜索",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -2099,7 +2000,6 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 101,
"name": "导出文件列表", "name": "导出文件列表",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -2120,7 +2020,26 @@
"description": "初始化数据" "description": "初始化数据"
}, },
{ {
"id": 102, "name": "存储监控",
"type": 2,
"icon": "el-icon-Files",
"order": 2,
"permission": "resource:stats:query",
"route_name": "Stats",
"route_path": "/resource/stats",
"component_path": "resource/stats/index",
"parent_id": 91,
"status": true,
"keep_alive": true,
"hidden": false,
"always_show": false,
"title": "文件管理",
"params": null,
"affix": false,
"redirect": null,
"description": "初始化数据"
},
{
"name": "AI大模型", "name": "AI大模型",
"type": 1, "type": 1,
"icon": "el-icon-DataLine", "icon": "el-icon-DataLine",
@@ -2141,8 +2060,7 @@
"description": "AI大模型管理" "description": "AI大模型管理"
}, },
{ {
"id": 103, "name": "MCP应用",
"name": "MCP智能助手",
"type": 2, "type": 2,
"icon": "el-icon-DataLine", "icon": "el-icon-DataLine",
"order": 1, "order": 1,
@@ -2150,19 +2068,18 @@
"route_name": "MCP", "route_name": "MCP",
"route_path": "/ai/mcp", "route_path": "/ai/mcp",
"component_path": "ai/mcp/index", "component_path": "ai/mcp/index",
"parent_id": 102, "parent_id": 103,
"status": true, "status": true,
"keep_alive": true, "keep_alive": true,
"hidden": false, "hidden": false,
"always_show": false, "always_show": false,
"title": "MCP智能助手", "title": "MCP应用",
"params": null, "params": null,
"affix": false, "affix": false,
"redirect": null, "redirect": null,
"description": "MCP智能助手" "description": "MCP智能助手"
}, },
{ {
"id": 104,
"name": "智能对话", "name": "智能对话",
"type": 3, "type": 3,
"icon": null, "icon": null,
@@ -2171,7 +2088,7 @@
"route_name": null, "route_name": null,
"route_path": null, "route_path": null,
"component_path": null, "component_path": null,
"parent_id": 103, "parent_id": 104,
"status": true, "status": true,
"keep_alive": true, "keep_alive": true,
"hidden": false, "hidden": false,
@@ -2181,5 +2098,65 @@
"affix": false, "affix": false,
"redirect": null, "redirect": null,
"description": "智能对话" "description": "智能对话"
},
{
"name": "代码管理",
"type": 1,
"icon": "el-icon-DataLine",
"order": 9,
"permission": null,
"route_name": "Gencode",
"route_path": "/gencode",
"component_path": null,
"parent_id": null,
"status": true,
"keep_alive": false,
"hidden": false,
"always_show": false,
"title": "代码管理",
"params": null,
"affix": false,
"redirect": "/ai/mcp",
"description": "代码管理"
},
{
"name": "代码生成",
"type": 2,
"icon": "el-icon-DataLine",
"order": 1,
"permission": "gencode:backcode:query",
"route_name": "Backcode",
"route_path": "/gencode/backcode",
"component_path": "gencode/backcode/index",
"parent_id": 106,
"status": true,
"keep_alive": true,
"hidden": false,
"always_show": false,
"title": "代码生成",
"params": null,
"affix": false,
"redirect": null,
"description": "代码生成"
},
{
"name": "前端构建",
"type": 2,
"icon": "el-icon-DataLine",
"order": 2,
"permission": "gencode:webcode:query",
"route_name": "webcode",
"route_path": "/gencode/webcode",
"component_path": "gencode/webcode/index",
"parent_id": 106,
"status": true,
"keep_alive": true,
"hidden": false,
"always_show": false,
"title": "前端构建",
"params": null,
"affix": false,
"redirect": null,
"description": "前端构建"
} }
] ]
@@ -1,38 +0,0 @@
[
{
"id": 1,
"notice_title": "系统更新",
"notice_type": "1",
"notice_content": "2099年9月9日,晚上12:00,系统更新",
"status": true,
"description": "系统更新",
"creator_id": 1
},
{
"id": 2,
"notice_title": "系统维护",
"notice_type": "2",
"notice_content": "2099年9月9日,晚上12:00,系统维护",
"status": true,
"description": "系统维护",
"creator_id": 1
},
{
"id": 3,
"notice_title": "系统更新完成",
"notice_type": "1",
"notice_content": "2099年9月9日,晚上12:00,系统更新完成",
"status": false,
"description": "系统更新完成",
"creator_id": 1
},
{
"id": 4,
"notice_title": "系统维护完成",
"notice_type": "2",
"notice_content": "2099年9月9日,晚上12:00,系统维护完成",
"status": false,
"description": "系统维护完成",
"creator_id": 1
}
]
@@ -5,47 +5,5 @@
"order": 1, "order": 1,
"description": "董事长岗位", "description": "董事长岗位",
"creator_id": 1 "creator_id": 1
},
{
"name": "运营岗",
"status": true,
"order": 2,
"description": "运营岗位",
"creator_id": 1
},
{
"name": "销售岗",
"status": true,
"order": 3,
"description": "销售岗",
"creator_id": 1
},
{
"name": "人事行政岗",
"status": true,
"order": 4,
"description": "人事行政岗",
"creator_id": 1
},
{
"name": "开发岗",
"status": true,
"order": 5,
"description": "开发岗",
"creator_id": 1
},
{
"name": "测试岗",
"status": true,
"order": 6,
"description": "测试岗",
"creator_id": 1
},
{
"name": "演示岗",
"status": true,
"order": 7,
"description": "演示岗",
"creator_id": 1
} }
] ]
-10
View File
@@ -1,20 +1,10 @@
[ [
{ {
"id": 1,
"name": "管理员角色", "name": "管理员角色",
"data_scope": 4, "data_scope": 4,
"status": true, "status": true,
"order": 1, "order": 1,
"description": "管理员", "description": "管理员",
"creator_id": 1 "creator_id": 1
},
{
"id": 2,
"name": "普通角色",
"data_scope": 1,
"status": true,
"order": 2,
"description": "普通角色",
"creator_id": 1
} }
] ]
@@ -2,13 +2,5 @@
{ {
"role_id": 1, "role_id": 1,
"dept_id": 1 "dept_id": 1
},
{
"role_id": 2,
"dept_id": 1
},
{
"role_id": 2,
"dept_id": 6
} }
] ]
@@ -416,11 +416,19 @@
"menu_id": 104 "menu_id": 104
}, },
{ {
"role_id": 2, "role_id": 1,
"menu_id": 1 "menu_id": 105
}, },
{ {
"role_id": 2, "role_id": 1,
"menu_id": 2 "menu_id": 106
},
{
"role_id": 1,
"menu_id": 107
},
{
"role_id": 1,
"menu_id": 108
} }
] ]
@@ -1,14 +1,10 @@
[ [
{ {
"user_id": 1, "user_id": 1,
"position_id": 5 "position_id": 1
}, },
{ {
"user_id": 2, "user_id": 2,
"position_id": 7
},
{
"user_id": 3,
"position_id": 1 "position_id": 1
} }
] ]
@@ -6,9 +6,5 @@
{ {
"user_id": 2, "user_id": 2,
"role_id": 1 "role_id": 1
},
{
"user_id": 3,
"role_id": 1
} }
] ]
+3 -21
View File
@@ -1,22 +1,5 @@
[ [
{ {
"id": 1,
"username": "superadmin",
"password": "$2b$12$/Df5YczDGF41zCh2F8Xbu.yHTJXGm3tONgsXz1KLUdG0mtpKUOLD2",
"name": "超级管理员",
"mobile": "15382112620",
"email": "948080782@qq.com",
"gender": "1",
"avatar": "https://service.fastapiadmin.com/api/v1/static/image/avatar.png",
"status": true,
"is_superuser": true,
"last_login": null,
"dept_id": 1,
"description": "超级管理员",
"creator_id": null
},
{
"id": 2,
"username": "admin", "username": "admin",
"password": "$2b$12$e2IJgS/cvHgJ0H3G7Xa08OXoXnk6N/NX3IZRtubBDElA0VLZhkNOa", "password": "$2b$12$e2IJgS/cvHgJ0H3G7Xa08OXoXnk6N/NX3IZRtubBDElA0VLZhkNOa",
"name": "管理员", "name": "管理员",
@@ -25,25 +8,24 @@
"gender": "0", "gender": "0",
"avatar": "https://service.fastapiadmin.com/api/v1/static/image/avatar.png", "avatar": "https://service.fastapiadmin.com/api/v1/static/image/avatar.png",
"status": true, "status": true,
"is_superuser": false, "is_superuser": true,
"last_login": null, "last_login": null,
"dept_id": 1, "dept_id": 1,
"description": "管理员", "description": "管理员",
"creator_id": 1 "creator_id": 1
}, },
{ {
"id": 3,
"username": "demo", "username": "demo",
"password": "$2b$12$e2IJgS/cvHgJ0H3G7Xa08OXoXnk6N/NX3IZRtubBDElA0VLZhkNOa", "password": "$2b$12$e2IJgS/cvHgJ0H3G7Xa08OXoXnk6N/NX3IZRtubBDElA0VLZhkNOa",
"name": "演示用户", "name": "演示用户",
"mobile": "15382112121", "mobile": "15382112121",
"email": "demo@qq.com", "email": "demo@qq.com",
"gender": "1", "gender": "0",
"avatar": "https://service.fastapiadmin.com/api/v1/static/image/avatar.png", "avatar": "https://service.fastapiadmin.com/api/v1/static/image/avatar.png",
"status": true, "status": true,
"is_superuser": false, "is_superuser": false,
"last_login": null, "last_login": null,
"dept_id": 6, "dept_id": 1,
"description": "演示用户", "description": "演示用户",
"creator_id": 1 "creator_id": 1
} }
-6
View File
@@ -46,13 +46,7 @@ class InitializeData:
# 基础表(无外键依赖) # 基础表(无外键依赖)
ConfigModel, ConfigModel,
DictTypeModel, DictTypeModel,
NoticeModel,
OperationLogModel,
DictDataModel, DictDataModel,
JobModel,
JobLogModel,
DemoModel,
ApplicationModel,
# 关联表(依赖基础表) # 关联表(依赖基础表)
UserPositionsModel, UserPositionsModel,
UserRolesModel, UserRolesModel,
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -537,125 +537,6 @@ ALTER SEQUENCE public.monitor_job_log_id_seq OWNER TO tao;
ALTER SEQUENCE public.monitor_job_log_id_seq OWNED BY public.monitor_job_log.id; ALTER SEQUENCE public.monitor_job_log_id_seq OWNED BY public.monitor_job_log.id;
--
-- Name: system_config; Type: TABLE; Schema: public; Owner: tao
--
CREATE TABLE public.system_config (
config_name character varying(500) NOT NULL,
config_key character varying(500) NOT NULL,
config_value character varying(500),
config_type boolean,
creator_id integer,
id integer NOT NULL,
status boolean NOT NULL,
description text,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL
);
ALTER TABLE public.system_config OWNER TO tao;
--
-- Name: TABLE system_config; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON TABLE public.system_config IS '系统配置表';
--
-- Name: COLUMN system_config.config_name; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_config.config_name IS '参数名称';
--
-- Name: COLUMN system_config.config_key; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_config.config_key IS '参数键名';
--
-- Name: COLUMN system_config.config_value; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_config.config_value IS '参数键值';
--
-- Name: COLUMN system_config.config_type; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_config.config_type IS '系统内置(True:是 False:否)';
--
-- Name: COLUMN system_config.creator_id; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_config.creator_id IS '创建人ID';
--
-- Name: COLUMN system_config.id; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_config.id IS '主键ID';
--
-- Name: COLUMN system_config.status; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_config.status IS '是否启用(True:启用 False:禁用)';
--
-- Name: COLUMN system_config.description; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_config.description IS '备注说明';
--
-- Name: COLUMN system_config.created_at; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_config.created_at IS '创建时间';
--
-- Name: COLUMN system_config.updated_at; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_config.updated_at IS '更新时间';
--
-- Name: system_config_id_seq; Type: SEQUENCE; Schema: public; Owner: tao
--
CREATE SEQUENCE public.system_config_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE public.system_config_id_seq OWNER TO tao;
--
-- Name: system_config_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: tao
--
ALTER SEQUENCE public.system_config_id_seq OWNED BY public.system_config.id;
-- --
-- Name: system_dept; Type: TABLE; Schema: public; Owner: tao -- Name: system_dept; Type: TABLE; Schema: public; Owner: tao
-- --
@@ -1506,6 +1387,125 @@ ALTER SEQUENCE public.system_notice_id_seq OWNER TO tao;
ALTER SEQUENCE public.system_notice_id_seq OWNED BY public.system_notice.id; ALTER SEQUENCE public.system_notice_id_seq OWNED BY public.system_notice.id;
--
-- Name: system_param; Type: TABLE; Schema: public; Owner: tao
--
CREATE TABLE public.system_param (
config_name character varying(500) NOT NULL,
config_key character varying(500) NOT NULL,
config_value character varying(500),
config_type boolean,
creator_id integer,
id integer NOT NULL,
status boolean NOT NULL,
description text,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL
);
ALTER TABLE public.system_param OWNER TO tao;
--
-- Name: TABLE system_param; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON TABLE public.system_param IS '系统参数表';
--
-- Name: COLUMN system_param.config_name; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_param.config_name IS '参数名称';
--
-- Name: COLUMN system_param.config_key; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_param.config_key IS '参数键名';
--
-- Name: COLUMN system_param.config_value; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_param.config_value IS '参数键值';
--
-- Name: COLUMN system_param.config_type; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_param.config_type IS '系统内置(True:是 False:否)';
--
-- Name: COLUMN system_param.creator_id; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_param.creator_id IS '创建人ID';
--
-- Name: COLUMN system_param.id; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_param.id IS '主键ID';
--
-- Name: COLUMN system_param.status; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_param.status IS '是否启用(True:启用 False:禁用)';
--
-- Name: COLUMN system_param.description; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_param.description IS '备注说明';
--
-- Name: COLUMN system_param.created_at; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_param.created_at IS '创建时间';
--
-- Name: COLUMN system_param.updated_at; Type: COMMENT; Schema: public; Owner: tao
--
COMMENT ON COLUMN public.system_param.updated_at IS '更新时间';
--
-- Name: system_param_id_seq; Type: SEQUENCE; Schema: public; Owner: tao
--
CREATE SEQUENCE public.system_param_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE public.system_param_id_seq OWNER TO tao;
--
-- Name: system_param_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: tao
--
ALTER SEQUENCE public.system_param_id_seq OWNED BY public.system_param.id;
-- --
-- Name: system_position; Type: TABLE; Schema: public; Owner: tao -- Name: system_position; Type: TABLE; Schema: public; Owner: tao
-- --
@@ -2055,13 +2055,6 @@ ALTER TABLE ONLY public.monitor_job ALTER COLUMN id SET DEFAULT nextval('public.
ALTER TABLE ONLY public.monitor_job_log ALTER COLUMN id SET DEFAULT nextval('public.monitor_job_log_id_seq'::regclass); ALTER TABLE ONLY public.monitor_job_log ALTER COLUMN id SET DEFAULT nextval('public.monitor_job_log_id_seq'::regclass);
--
-- Name: system_config id; Type: DEFAULT; Schema: public; Owner: tao
--
ALTER TABLE ONLY public.system_config ALTER COLUMN id SET DEFAULT nextval('public.system_config_id_seq'::regclass);
-- --
-- Name: system_dept id; Type: DEFAULT; Schema: public; Owner: tao -- Name: system_dept id; Type: DEFAULT; Schema: public; Owner: tao
-- --
@@ -2104,6 +2097,13 @@ ALTER TABLE ONLY public.system_menu ALTER COLUMN id SET DEFAULT nextval('public.
ALTER TABLE ONLY public.system_notice ALTER COLUMN id SET DEFAULT nextval('public.system_notice_id_seq'::regclass); ALTER TABLE ONLY public.system_notice ALTER COLUMN id SET DEFAULT nextval('public.system_notice_id_seq'::regclass);
--
-- Name: system_param id; Type: DEFAULT; Schema: public; Owner: tao
--
ALTER TABLE ONLY public.system_param ALTER COLUMN id SET DEFAULT nextval('public.system_param_id_seq'::regclass);
-- --
-- Name: system_position id; Type: DEFAULT; Schema: public; Owner: tao -- Name: system_position id; Type: DEFAULT; Schema: public; Owner: tao
-- --
@@ -2146,9 +2146,6 @@ COPY public.example_demo (name, creator_id, id, status, description, created_at,
-- --
COPY public.monitor_job (name, jobstore, executor, trigger, trigger_args, func, args, kwargs, "coalesce", max_instances, start_date, end_date, creator_id, id, status, description, created_at, updated_at) FROM stdin; COPY public.monitor_job (name, jobstore, executor, trigger, trigger_args, func, args, kwargs, "coalesce", max_instances, start_date, end_date, creator_id, id, status, description, created_at, updated_at) FROM stdin;
系统默认(无参) default default cron 0 0 12 * * ? scheduler_test.job \N \N f 1 \N \N 1 1 f \N 2025-09-09 00:30:45.274334 2025-09-09 00:30:45.274335
系统默认(有参) default default cron 0 0 12 * * ? scheduler_test.job test \N f 1 \N \N 1 2 f \N 2025-09-09 00:30:45.274336 2025-09-09 00:30:45.274336
系统默认(多参) default default cron 0 0 12 * * ? scheduler_test.job new {"test": 111} f 1 \N \N 1 3 f \N 2025-09-09 00:30:45.274336 2025-09-09 00:30:45.274337
\. \.
@@ -2160,42 +2157,12 @@ COPY public.monitor_job_log (id, job_name, job_group, job_executor, invoke_targe
\. \.
--
-- Data for Name: system_config; Type: TABLE DATA; Schema: public; Owner: tao
--
COPY public.system_config (config_name, config_key, config_value, config_type, creator_id, id, status, description, created_at, updated_at) FROM stdin;
网站名称 sys_web_title FastAPI Vue3 Admin t 1 1 t 网站名称 2025-09-09 00:30:45.260096 2025-09-09 00:30:45.260097
网站描述 sys_web_description FastAPI Vue3 Admin 是完全开源的权限管理系统 t 1 2 t 网站描述 2025-09-09 00:30:45.260097 2025-09-09 00:30:45.260098
网页图标 sys_web_favicon https://service.fastapiadmin.com/api/v1/static/image/favicon.png t 1 3 t 网页图标 2025-09-09 00:30:45.260098 2025-09-09 00:30:45.260098
网站Logo sys_web_logo https://service.fastapiadmin.com/api/v1/static/image/logo.png t 1 4 t 网站Logo 2025-09-09 00:30:45.260099 2025-09-09 00:30:45.260099
登录背景 sys_login_background https://service.fastapiadmin.com/api/v1/static/image/background.svg t 1 5 t 登录背景 2025-09-09 00:30:45.2601 2025-09-09 00:30:45.2601
版权信息 sys_web_copyright Copyright © 2025-2026 service.fastapiadmin.com 版权所有 t 1 6 t 版权信息 2025-09-09 00:30:45.2601 2025-09-09 00:30:45.260101
备案信息 sys_keep_record 陕ICP备2025069493号-1 t 1 7 t 备案信息 2025-09-09 00:30:45.260101 2025-09-09 00:30:45.260102
帮助文档 sys_help_doc https://service.fastapiadmin.com t 1 8 t 帮助文档 2025-09-09 00:30:45.260102 2025-09-09 00:30:45.260102
隐私政策 sys_web_privacy https://github.com/1014TaoTao/fastapi_vue3_admin/blob/master/LICENSE t 1 9 t 隐私政策 2025-09-09 00:30:45.260103 2025-09-09 00:30:45.260103
用户协议 sys_web_clause https://github.com/1014TaoTao/fastapi_vue3_admin/blob/master/LICENSE t 1 10 t 用户协议 2025-09-09 00:30:45.260104 2025-09-09 00:30:45.260104
源码代码 sys_git_code https://github.com/1014TaoTao/fastapi_vue3_admin.git t 1 11 t 源码代码 2025-09-09 00:30:45.260104 2025-09-09 00:30:45.260105
项目版本 sys_web_version 2.0.0 t 1 12 t 项目版本 2025-09-09 00:30:45.260105 2025-09-09 00:30:45.260105
\.
-- --
-- Data for Name: system_dept; Type: TABLE DATA; Schema: public; Owner: tao -- Data for Name: system_dept; Type: TABLE DATA; Schema: public; Owner: tao
-- --
COPY public.system_dept (name, "order", parent_id, id, status, description, created_at, updated_at) FROM stdin; COPY public.system_dept (name, "order", parent_id, id, status, description, created_at, updated_at) FROM stdin;
集团总公司 1 \N 1 t 集团总公司 2025-09-09 00:30:45.234741 2025-09-09 00:30:45.234745 集团总公司 1 \N 1 t 集团总公司 2025-09-11 01:42:44.271747 2025-09-11 01:42:44.271751
西安分公司 1 1 2 t 西安分公司 2025-09-09 00:30:45.234746 2025-09-09 00:30:45.234746
深圳分公司 2 1 3 t 深圳分公司 2025-09-09 00:30:45.234747 2025-09-09 00:30:45.234747
开发组 1 2 4 t 开发组 2025-09-09 00:30:45.234747 2025-09-09 00:30:45.234748
测试组 2 2 5 t 测试组 2025-09-09 00:30:45.234748 2025-09-09 00:30:45.234749
演示组 3 2 6 t 演示组 2025-09-09 00:30:45.234749 2025-09-09 00:30:45.234749
销售部 1 3 7 t 销售部 2025-09-09 00:30:45.23475 2025-09-09 00:30:45.23475
市场部 2 3 8 t 市场部 2025-09-09 00:30:45.234751 2025-09-09 00:30:45.234751
财务部 3 3 9 t 财务部 2025-09-09 00:30:45.234751 2025-09-09 00:30:45.234752
研发部 4 3 10 t 研发部 2025-09-09 00:30:45.234752 2025-09-09 00:30:45.234753
运维部 5 3 11 t 研发部 2025-09-09 00:30:45.234753 2025-09-09 00:30:45.234753
\. \.
@@ -2204,40 +2171,40 @@ COPY public.system_dept (name, "order", parent_id, id, status, description, crea
-- --
COPY public.system_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, dict_type_id, creator_id, id, status, description, created_at, updated_at) FROM stdin; COPY public.system_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, dict_type_id, creator_id, id, status, description, created_at, updated_at) FROM stdin;
1 男 0 sys_user_sex blue \N t \N 1 1 t 性别男 2025-09-09 00:30:45.270878 2025-09-09 00:30:45.270879 1 男 0 sys_user_sex blue \N t \N 1 1 t 性别男 2025-09-11 01:42:44.297789 2025-09-11 01:42:44.29779
2 女 1 sys_user_sex pink \N f \N 1 2 t 性别女 2025-09-09 00:30:45.270879 2025-09-09 00:30:45.27088 2 女 1 sys_user_sex pink \N f \N 1 2 t 性别女 2025-09-11 01:42:44.29779 2025-09-11 01:42:44.297791
3 未知 2 sys_user_sex red \N f \N 1 3 t 性别未知 2025-09-09 00:30:45.27088 2025-09-09 00:30:45.270881 3 未知 2 sys_user_sex red \N f \N 1 3 t 性别未知 2025-09-11 01:42:44.297791 2025-09-11 01:42:44.297792
1 启用 1 sys_common_status primary f \N 1 4 t 启用状态 2025-09-09 00:30:45.270881 2025-09-09 00:30:45.270881 1 启用 1 sys_common_status primary f \N 1 4 t 启用状态 2025-09-11 01:42:44.297792 2025-09-11 01:42:44.297792
2 停用 0 sys_common_status danger f \N 1 5 t 停用状态 2025-09-09 00:30:45.270882 2025-09-09 00:30:45.270882 2 停用 0 sys_common_status danger f \N 1 5 t 停用状态 2025-09-11 01:42:44.297793 2025-09-11 01:42:44.297793
1 是 1 sys_yes_no primary t \N 1 6 t 是 2025-09-09 00:30:45.270882 2025-09-09 00:30:45.270883 1 是 1 sys_yes_no primary t \N 1 6 t 是 2025-09-11 01:42:44.297793 2025-09-11 01:42:44.297794
2 否 0 sys_yes_no danger f \N 1 7 t 否 2025-09-09 00:30:45.270883 2025-09-09 00:30:45.270884 2 否 0 sys_yes_no danger f \N 1 7 t 否 2025-09-11 01:42:44.297794 2025-09-11 01:42:44.297795
99 其他 0 sys_oper_type info f \N 1 8 t 其他操作 2025-09-09 00:30:45.270884 2025-09-09 00:30:45.270884 99 其他 0 sys_oper_type info f \N 1 8 t 其他操作 2025-09-11 01:42:44.297795 2025-09-11 01:42:44.297795
1 新增 1 sys_oper_type info f \N 1 9 t 新增操作 2025-09-09 00:30:45.270885 2025-09-09 00:30:45.270885 1 新增 1 sys_oper_type info f \N 1 9 t 新增操作 2025-09-11 01:42:44.297796 2025-09-11 01:42:44.297796
2 修改 2 sys_oper_type info f \N 1 10 t 修改操作 2025-09-09 00:30:45.270885 2025-09-09 00:30:45.270886 2 修改 2 sys_oper_type info f \N 1 10 t 修改操作 2025-09-11 01:42:44.297796 2025-09-11 01:42:44.297797
3 删除 3 sys_oper_type danger f \N 1 11 t 删除操作 2025-09-09 00:30:45.270886 2025-09-09 00:30:45.270886 3 删除 3 sys_oper_type danger f \N 1 11 t 删除操作 2025-09-11 01:42:44.297797 2025-09-11 01:42:44.297798
4 分配权限 4 sys_oper_type primary f \N 1 12 t 授权操作 2025-09-09 00:30:45.270887 2025-09-09 00:30:45.270887 4 分配权限 4 sys_oper_type primary f \N 1 12 t 授权操作 2025-09-11 01:42:44.297798 2025-09-11 01:42:44.297798
5 导出 5 sys_oper_type warning f \N 1 13 t 导出操作 2025-09-09 00:30:45.270887 2025-09-09 00:30:45.270888 5 导出 5 sys_oper_type warning f \N 1 13 t 导出操作 2025-09-11 01:42:44.297799 2025-09-11 01:42:44.297799
6 导入 6 sys_oper_type warning f \N 1 14 t 导入操作 2025-09-09 00:30:45.270888 2025-09-09 00:30:45.270888 6 导入 6 sys_oper_type warning f \N 1 14 t 导入操作 2025-09-11 01:42:44.297799 2025-09-11 01:42:44.2978
7 强退 7 sys_oper_type danger f \N 1 15 t 强退操作 2025-09-09 00:30:45.270889 2025-09-09 00:30:45.270889 7 强退 7 sys_oper_type danger f \N 1 15 t 强退操作 2025-09-11 01:42:44.2978 2025-09-11 01:42:44.2978
8 生成代码 8 sys_oper_type warning f \N 1 16 t 生成操作 2025-09-09 00:30:45.27089 2025-09-09 00:30:45.27089 8 生成代码 8 sys_oper_type warning f \N 1 16 t 生成操作 2025-09-11 01:42:44.297801 2025-09-11 01:42:44.297801
9 清空数据 9 sys_oper_type danger f \N 1 17 t 清空操作 2025-09-09 00:30:45.27089 2025-09-09 00:30:45.270891 9 清空数据 9 sys_oper_type danger f \N 1 17 t 清空操作 2025-09-11 01:42:44.297801 2025-09-11 01:42:44.297802
1 通知 1 sys_notice_type blue warning t \N 1 18 t 通知 2025-09-09 00:30:45.270891 2025-09-09 00:30:45.270891 1 通知 1 sys_notice_type blue warning t \N 1 18 t 通知 2025-09-11 01:42:44.297802 2025-09-11 01:42:44.297803
2 公告 2 sys_notice_type orange success f \N 1 19 t 公告 2025-09-09 00:30:45.270892 2025-09-09 00:30:45.270892 2 公告 2 sys_notice_type orange success f \N 1 19 t 公告 2025-09-11 01:42:44.297803 2025-09-11 01:42:44.297803
1 默认(Memory) default sys_job_store \N t \N 1 20 t 默认分组 2025-09-09 00:30:45.270892 2025-09-09 00:30:45.270893 1 默认(Memory) default sys_job_store \N t \N 1 20 t 默认分组 2025-09-11 01:42:44.297804 2025-09-11 01:42:44.297804
2 数据库(Sqlalchemy) sqlalchemy sys_job_store \N f \N 1 21 t 数据库分组 2025-09-09 00:30:45.270893 2025-09-09 00:30:45.270893 2 数据库(Sqlalchemy) sqlalchemy sys_job_store \N f \N 1 21 t 数据库分组 2025-09-11 01:42:44.297804 2025-09-11 01:42:44.297805
3 数据库(Redis) redis sys_job_store \N f \N 1 22 t reids分组 2025-09-09 00:30:45.270894 2025-09-09 00:30:45.270894 3 数据库(Redis) redis sys_job_store \N f \N 1 22 t reids分组 2025-09-11 01:42:44.297805 2025-09-11 01:42:44.297805
1 线程池 default sys_job_executor \N f \N 1 23 t 线程池 2025-09-09 00:30:45.270894 2025-09-09 00:30:45.270895 1 线程池 default sys_job_executor \N f \N 1 23 t 线程池 2025-09-11 01:42:44.297806 2025-09-11 01:42:44.297806
2 进程池 processpool sys_job_executor \N f \N 1 24 t 进程池 2025-09-09 00:30:45.270895 2025-09-09 00:30:45.270896 2 进程池 processpool sys_job_executor \N f \N 1 24 t 进程池 2025-09-11 01:42:44.297806 2025-09-11 01:42:44.297807
1 演示函数 scheduler_test.job sys_job_function \N t \N 1 25 t 演示函数 2025-09-09 00:30:45.270896 2025-09-09 00:30:45.270896 1 演示函数 scheduler_test.job sys_job_function \N t \N 1 25 t 演示函数 2025-09-11 01:42:44.297807 2025-09-11 01:42:44.297808
1 指定日期(date) date sys_job_trigger \N t \N 1 26 t 指定日期任务触发器 2025-09-09 00:30:45.270897 2025-09-09 00:30:45.270897 1 指定日期(date) date sys_job_trigger \N t \N 1 26 t 指定日期任务触发器 2025-09-11 01:42:44.297808 2025-09-11 01:42:44.297808
2 间隔触发器(interval) interval sys_job_trigger \N f \N 1 27 t 间隔触发器任务触发器 2025-09-09 00:30:45.270897 2025-09-09 00:30:45.270898 2 间隔触发器(interval) interval sys_job_trigger \N f \N 1 27 t 间隔触发器任务触发器 2025-09-11 01:42:44.297809 2025-09-11 01:42:44.297809
3 cron表达式 cron sys_job_trigger \N f \N 1 28 t 间隔触发器任务触发器 2025-09-09 00:30:45.270898 2025-09-09 00:30:45.270898 3 cron表达式 cron sys_job_trigger \N f \N 1 28 t 间隔触发器任务触发器 2025-09-11 01:42:44.297809 2025-09-11 01:42:44.29781
1 默认(default) default sys_list_class \N t \N 1 29 t 默认表格回显样式 2025-09-09 00:30:45.270899 2025-09-09 00:30:45.270899 1 默认(default) default sys_list_class \N t \N 1 29 t 默认表格回显样式 2025-09-11 01:42:44.29781 2025-09-11 01:42:44.29781
2 主要(primary) primary sys_list_class \N f \N 1 30 t 主要表格回显样式 2025-09-09 00:30:45.270899 2025-09-09 00:30:45.2709 2 主要(primary) primary sys_list_class \N f \N 1 30 t 主要表格回显样式 2025-09-11 01:42:44.297811 2025-09-11 01:42:44.297811
3 成功(success) success sys_list_class \N f \N 1 31 t 成功表格回显样式 2025-09-09 00:30:45.2709 2025-09-09 00:30:45.2709 3 成功(success) success sys_list_class \N f \N 1 31 t 成功表格回显样式 2025-09-11 01:42:44.297811 2025-09-11 01:42:44.297812
4 信息(info) info sys_list_class \N f \N 1 32 t 信息表格回显样式 2025-09-09 00:30:45.270901 2025-09-09 00:30:45.270901 4 信息(info) info sys_list_class \N f \N 1 32 t 信息表格回显样式 2025-09-11 01:42:44.297812 2025-09-11 01:42:44.297812
5 警告(warning) warning sys_list_class \N f \N 1 33 t 警告表格回显样式 2025-09-09 00:30:45.270901 2025-09-09 00:30:45.270902 5 警告(warning) warning sys_list_class \N f \N 1 33 t 警告表格回显样式 2025-09-11 01:42:44.297813 2025-09-11 01:42:44.297813
6 危险(danger) danger sys_list_class \N f \N 1 34 t 危险表格回显样式 2025-09-09 00:30:45.270902 2025-09-09 00:30:45.270902 6 危险(danger) danger sys_list_class \N f \N 1 34 t 危险表格回显样式 2025-09-11 01:42:44.297813 2025-09-11 01:42:44.297814
\. \.
@@ -2246,16 +2213,16 @@ COPY public.system_dict_data (dict_sort, dict_label, dict_value, dict_type, css_
-- --
COPY public.system_dict_type (dict_name, dict_type, creator_id, id, status, description, created_at, updated_at) FROM stdin; COPY public.system_dict_type (dict_name, dict_type, creator_id, id, status, description, created_at, updated_at) FROM stdin;
用户性别 sys_user_sex 1 1 t 用户性别列表 2025-09-09 00:30:45.263362 2025-09-09 00:30:45.263363 用户性别 sys_user_sex 1 1 t 用户性别列表 2025-09-11 01:42:44.294752 2025-09-11 01:42:44.294753
系统是否 sys_yes_no 1 2 t 系统是否列表 2025-09-09 00:30:45.263363 2025-09-09 00:30:45.263364 系统是否 sys_yes_no 1 2 t 系统是否列表 2025-09-11 01:42:44.294754 2025-09-11 01:42:44.294754
系统状态 sys_common_status 1 3 t 系统状态 2025-09-09 00:30:45.263364 2025-09-09 00:30:45.263365 系统状态 sys_common_status 1 3 t 系统状态 2025-09-11 01:42:44.294755 2025-09-11 01:42:44.294755
通知类型 sys_notice_type 1 4 t 通知类型列表 2025-09-09 00:30:45.263365 2025-09-09 00:30:45.263365 通知类型 sys_notice_type 1 4 t 通知类型列表 2025-09-11 01:42:44.294756 2025-09-11 01:42:44.294756
操作类型 sys_oper_type 1 5 t 操作类型列表 2025-09-09 00:30:45.263366 2025-09-09 00:30:45.263366 操作类型 sys_oper_type 1 5 t 操作类型列表 2025-09-11 01:42:44.294756 2025-09-11 01:42:44.294757
任务存储器 sys_job_store 1 6 t 任务分组列表 2025-09-09 00:30:45.263366 2025-09-09 00:30:45.263367 任务存储器 sys_job_store 1 6 t 任务分组列表 2025-09-11 01:42:44.294757 2025-09-11 01:42:44.294757
任务执行器 sys_job_executor 1 7 t 任务执行器列表 2025-09-09 00:30:45.263367 2025-09-09 00:30:45.263368 任务执行器 sys_job_executor 1 7 t 任务执行器列表 2025-09-11 01:42:44.294758 2025-09-11 01:42:44.294758
任务函数 sys_job_function 1 8 t 任务函数列表 2025-09-09 00:30:45.263368 2025-09-09 00:30:45.263369 任务函数 sys_job_function 1 8 t 任务函数列表 2025-09-11 01:42:44.294758 2025-09-11 01:42:44.294759
任务触发器 sys_job_trigger 1 9 t 任务触发器列表 2025-09-09 00:30:45.263369 2025-09-09 00:30:45.26337 任务触发器 sys_job_trigger 1 9 t 任务触发器列表 2025-09-11 01:42:44.294759 2025-09-11 01:42:44.294759
表格回显样式 sys_list_class 1 10 t 表格回显样式列表 2025-09-09 00:30:45.26337 2025-09-09 00:30:45.263371 表格回显样式 sys_list_class 1 10 t 表格回显样式列表 2025-09-11 01:42:44.29476 2025-09-11 01:42:44.29476
\. \.
@@ -2272,110 +2239,114 @@ COPY public.system_log (type, request_path, request_method, request_payload, req
-- --
COPY public.system_menu (name, type, "order", permission, icon, route_name, route_path, component_path, redirect, hidden, keep_alive, always_show, title, params, affix, parent_id, id, status, description, created_at, updated_at) FROM stdin; COPY public.system_menu (name, type, "order", permission, icon, route_name, route_path, component_path, redirect, hidden, keep_alive, always_show, title, params, affix, parent_id, id, status, description, created_at, updated_at) FROM stdin;
仪表盘 1 1 client Dashboard /dashboard \N /dashboard/workplace f t t 仪表盘 null f \N 1 t 初始化数据 2025-09-09 00:30:45.244688 2025-09-09 00:30:45.24469 仪表盘 1 1 client Dashboard /dashboard \N /dashboard/workplace f t t 仪表盘 null f \N 1 t 初始化数据 2025-09-11 01:42:44.279529 2025-09-11 01:42:44.279531
工作台 2 1 dashboard:workplace:query homepage Workplace /dashboard/workplace dashboard/workplace \N f t f 工作台 null t 1 2 t 初始化数据 2025-09-09 00:30:45.24469 2025-09-09 00:30:45.244691 工作台 2 1 dashboard:workplace:query homepage Workplace /dashboard/workplace dashboard/workplace \N f t f 工作台 null t 1 2 t 初始化数据 2025-09-11 01:42:44.279532 2025-09-11 01:42:44.279532
分析页 2 2 dashboard:analysis:query el-icon-PieChart Analysis /dashboard/analysis dashboard/analysis \N f t f 分析页 null f 1 3 t 初始化数据 2025-09-09 00:30:45.244691 2025-09-09 00:30:45.244692 分析页 2 2 dashboard:analysis:query el-icon-PieChart Analysis /dashboard/analysis dashboard/analysis \N f t f 分析页 null f 1 3 t 初始化数据 2025-09-11 01:42:44.279533 2025-09-11 01:42:44.279533
系统管理 1 2 \N system System /system \N /system/menu f t f 系统管理 null f \N 4 t 初始化数据 2025-09-09 00:30:45.244692 2025-09-09 00:30:45.244692 系统管理 1 2 \N system System /system \N /system/menu f t f 系统管理 null f \N 4 t 初始化数据 2025-09-11 01:42:44.279533 2025-09-11 01:42:44.279534
菜单管理 2 1 system:menu:query menu Menu /system/menu system/menu/index \N f t f 菜单管理 null f 4 5 t 初始化数据 2025-09-09 00:30:45.244693 2025-09-09 00:30:45.244693 菜单管理 2 1 system:menu:query menu Menu /system/menu system/menu/index \N f t f 菜单管理 null f 4 5 t 初始化数据 2025-09-11 01:42:44.279534 2025-09-11 01:42:44.279535
部门管理 2 2 system:dept:query tree Dept /system/dept system/dept/index \N f t f 部门管理 null f 4 6 t 初始化数据 2025-09-09 00:30:45.244694 2025-09-09 00:30:45.244694 部门管理 2 2 system:dept:query tree Dept /system/dept system/dept/index \N f t f 部门管理 null f 4 6 t 初始化数据 2025-09-11 01:42:44.279535 2025-09-11 01:42:44.279535
岗位管理 2 3 system:position:query el-icon-Coordinate Position /system/position system/position/index \N f t f 岗位管理 null f 4 7 t 初始化数据 2025-09-09 00:30:45.244694 2025-09-09 00:30:45.244695 岗位管理 2 3 system:position:query el-icon-Coordinate Position /system/position system/position/index \N f t f 岗位管理 null f 4 7 t 初始化数据 2025-09-11 01:42:44.279536 2025-09-11 01:42:44.279536
角色管理 2 4 system:role:query role Role /system/role system/role/index \N f t f 角色管理 null f 4 8 t 初始化数据 2025-09-09 00:30:45.244695 2025-09-09 00:30:45.244696 角色管理 2 4 system:role:query role Role /system/role system/role/index \N f t f 角色管理 null f 4 8 t 初始化数据 2025-09-11 01:42:44.279537 2025-09-11 01:42:44.279537
用户管理 2 5 system:user:query el-icon-User User /system/user system/user/index \N f t f 用户管理 null f 4 9 t 初始化数据 2025-09-09 00:30:45.244696 2025-09-09 00:30:45.244696 用户管理 2 5 system:user:query el-icon-User User /system/user system/user/index \N f t f 用户管理 null f 4 9 t 初始化数据 2025-09-11 01:42:44.279537 2025-09-11 01:42:44.279538
日志管理 2 6 system:log:query el-icon-Aim Log /system/log system/log/index \N f t f 日志管理 null f 4 10 t 初始化数据 2025-09-09 00:30:45.244697 2025-09-09 00:30:45.244697 日志管理 2 6 system:log:query el-icon-Aim Log /system/log system/log/index \N f t f 日志管理 null f 4 10 t 初始化数据 2025-09-11 01:42:44.279538 2025-09-11 01:42:44.279538
公告管理 2 7 system:notice:query bell Notice /system/notice system/notice/index \N f t f 公告管理 null f 4 11 t 初始化数据 2025-09-09 00:30:45.244697 2025-09-09 00:30:45.244698 公告管理 2 7 system:notice:query bell Notice /system/notice system/notice/index \N f t f 公告管理 null f 4 11 t 初始化数据 2025-09-11 01:42:44.279539 2025-09-11 01:42:44.279539
配置管理 2 8 system:config:query setting Config /system/config system/config/index \N f t f 配置管理 null f 4 12 t 初始化数据 2025-09-09 00:30:45.244698 2025-09-09 00:30:45.244699 参数管理 2 8 system:param:query setting Config /system/config system/config/index \N f t f 参数管理 null f 4 12 t 初始化数据 2025-09-11 01:42:44.27954 2025-09-11 01:42:44.27954
字典管理 2 9 system:dict_type:query dict Dict /system/dict system/dict/index \N f t f 字典管理 null f 4 13 t 初始化数据 2025-09-09 00:30:45.244699 2025-09-09 00:30:45.244699 字典管理 2 9 system:dict_type:query dict Dict /system/dict system/dict/index \N f t f 字典管理 null f 4 13 t 初始化数据 2025-09-11 01:42:44.27954 2025-09-11 01:42:44.279541
创建菜单 3 1 system:menu:create \N \N \N \N \N f t f 创建菜单 null f 5 14 t 初始化数据 2025-09-09 00:30:45.2447 2025-09-09 00:30:45.2447 创建菜单 3 1 system:menu:create \N \N \N \N \N f t f 创建菜单 null f 5 14 t 初始化数据 2025-09-11 01:42:44.279541 2025-09-11 01:42:44.279541
修改菜单 3 2 system:menu:update \N \N \N \N \N f t f 修改菜单 null f 5 15 t 初始化数据 2025-09-09 00:30:45.2447 2025-09-09 00:30:45.244701 修改菜单 3 2 system:menu:update \N \N \N \N \N f t f 修改菜单 null f 5 15 t 初始化数据 2025-09-11 01:42:44.279542 2025-09-11 01:42:44.279542
删除菜单 3 3 system:menu:delete \N \N \N \N \N f t f 删除菜单 null f 5 16 t 初始化数据 2025-09-09 00:30:45.244701 2025-09-09 00:30:45.244701 删除菜单 3 3 system:menu:delete \N \N \N \N \N f t f 删除菜单 null f 5 16 t 初始化数据 2025-09-11 01:42:44.279542 2025-09-11 01:42:44.279543
批量修改菜单状态 3 4 system:menu:patch \N \N \N \N \N f t f 批量修改菜单状态 null f 5 17 t 初始化数据 2025-09-09 00:30:45.244702 2025-09-09 00:30:45.244702 批量修改菜单状态 3 4 system:menu:patch \N \N \N \N \N f t f 批量修改菜单状态 null f 5 17 t 初始化数据 2025-09-11 01:42:44.279543 2025-09-11 01:42:44.279544
创建部门 3 1 system:dept:create \N \N \N \N \N f t f 创建部门 null f 6 18 t 初始化数据 2025-09-09 00:30:45.244703 2025-09-09 00:30:45.244703 创建部门 3 1 system:dept:create \N \N \N \N \N f t f 创建部门 null f 6 18 t 初始化数据 2025-09-11 01:42:44.279544 2025-09-11 01:42:44.279545
修改部门 3 2 system:dept:update \N \N \N \N \N f t f 修改部门 null f 6 19 t 初始化数据 2025-09-09 00:30:45.244703 2025-09-09 00:30:45.244704 修改部门 3 2 system:dept:update \N \N \N \N \N f t f 修改部门 null f 6 19 t 初始化数据 2025-09-11 01:42:44.279545 2025-09-11 01:42:44.279545
删除部门 3 3 system:dept:delete \N \N \N \N \N f t f 删除部门 null f 6 20 t 初始化数据 2025-09-09 00:30:45.244704 2025-09-09 00:30:45.244704 删除部门 3 3 system:dept:delete \N \N \N \N \N f t f 删除部门 null f 6 20 t 初始化数据 2025-09-11 01:42:44.279546 2025-09-11 01:42:44.279546
批量修改部门状态 3 4 system:dept:patch \N \N \N \N \N f t f 批量修改部门状态 null f 6 21 t 初始化数据 2025-09-09 00:30:45.244705 2025-09-09 00:30:45.244705 批量修改部门状态 3 4 system:dept:patch \N \N \N \N \N f t f 批量修改部门状态 null f 6 21 t 初始化数据 2025-09-11 01:42:44.279546 2025-09-11 01:42:44.279547
创建岗位 3 1 system:position:create \N \N \N \N \N f t f 创建岗位 null f 7 22 t 初始化数据 2025-09-09 00:30:45.244705 2025-09-09 00:30:45.244706 创建岗位 3 1 system:position:create \N \N \N \N \N f t f 创建岗位 null f 7 22 t 初始化数据 2025-09-11 01:42:44.279547 2025-09-11 01:42:44.279547
修改岗位 3 2 system:position:update \N \N \N \N \N f t f 修改岗位 null f 7 23 t 初始化数据 2025-09-09 00:30:45.244706 2025-09-09 00:30:45.244706 修改岗位 3 2 system:position:update \N \N \N \N \N f t f 修改岗位 null f 7 23 t 初始化数据 2025-09-11 01:42:44.279548 2025-09-11 01:42:44.279548
删除岗位 3 3 system:position:delete \N \N \N \N \N f t f 修改岗位 null f 7 24 t 初始化数据 2025-09-09 00:30:45.244707 2025-09-09 00:30:45.244707 删除岗位 3 3 system:position:delete \N \N \N \N \N f t f 修改岗位 null f 7 24 t 初始化数据 2025-09-11 01:42:44.279549 2025-09-11 01:42:44.279549
批量修改岗位状态 3 4 system:position:patch \N \N \N \N \N f t f 批量修改岗位状态 null f 7 25 t 初始化数据 2025-09-09 00:30:45.244708 2025-09-09 00:30:45.244708 批量修改岗位状态 3 4 system:position:patch \N \N \N \N \N f t f 批量修改岗位状态 null f 7 25 t 初始化数据 2025-09-11 01:42:44.279549 2025-09-11 01:42:44.27955
岗位导出 3 5 system:position:export \N \N \N \N \N f t f 岗位导出 null f 7 26 t 初始化数据 2025-09-09 00:30:45.244708 2025-09-09 00:30:45.244709 岗位导出 3 5 system:position:export \N \N \N \N \N f t f 岗位导出 null f 7 26 t 初始化数据 2025-09-11 01:42:44.27955 2025-09-11 01:42:44.27955
创建角色 3 1 system:role:create \N \N \N \N \N f t f 创建角色 null f 8 27 t 初始化数据 2025-09-09 00:30:45.244709 2025-09-09 00:30:45.244709 创建角色 3 1 system:role:create \N \N \N \N \N f t f 创建角色 null f 8 27 t 初始化数据 2025-09-11 01:42:44.279551 2025-09-11 01:42:44.279551
修改角色 3 2 system:role:update \N \N \N \N \N f t f 修改角色 null f 8 28 t 初始化数据 2025-09-09 00:30:45.24471 2025-09-09 00:30:45.24471 修改角色 3 2 system:role:update \N \N \N \N \N f t f 修改角色 null f 8 28 t 初始化数据 2025-09-11 01:42:44.279551 2025-09-11 01:42:44.279552
删除角色 3 3 system:role:delete \N \N \N \N \N f t f 删除角色 null f 8 29 t 初始化数据 2025-09-09 00:30:45.244711 2025-09-09 00:30:45.244711 删除角色 3 3 system:role:delete \N \N \N \N \N f t f 删除角色 null f 8 29 t 初始化数据 2025-09-11 01:42:44.279552 2025-09-11 01:42:44.279552
批量修改角色状态 3 4 system:role:patch \N \N \N \N \N f t f 批量修改角色状态 null f 8 30 t 初始化数据 2025-09-09 00:30:45.244711 2025-09-09 00:30:45.244712 批量修改角色状态 3 4 system:role:patch \N \N \N \N \N f t f 批量修改角色状态 null f 8 30 t 初始化数据 2025-09-11 01:42:44.279553 2025-09-11 01:42:44.279553
设置角色权限 3 8 system:role:permission \N \N \N \N \N f t f 设置角色权限 null f 7 31 t 初始化数据 2025-09-09 00:30:45.244712 2025-09-09 00:30:45.244712 设置角色权限 3 8 system:role:permission \N \N \N \N \N f t f 设置角色权限 null f 7 31 t 初始化数据 2025-09-11 01:42:44.279554 2025-09-11 01:42:44.279554
角色导出 3 6 system:role:export \N \N \N \N \N f t f 角色导出 null f 8 32 t 初始化数据 2025-09-09 00:30:45.244713 2025-09-09 00:30:45.244713 角色导出 3 6 system:role:export \N \N \N \N \N f t f 角色导出 null f 8 32 t 初始化数据 2025-09-11 01:42:44.279554 2025-09-11 01:42:44.279555
创建用户 3 1 system:user:create \N \N \N \N \N f t f 创建用户 null f 9 33 t 初始化数据 2025-09-09 00:30:45.244714 2025-09-09 00:30:45.244714 创建用户 3 1 system:user:create \N \N \N \N \N f t f 创建用户 null f 9 33 t 初始化数据 2025-09-11 01:42:44.279555 2025-09-11 01:42:44.279555
修改用户 3 2 system:user:update \N \N \N \N \N f t f 修改用户 null f 9 34 t 初始化数据 2025-09-09 00:30:45.244714 2025-09-09 00:30:45.244715 修改用户 3 2 system:user:update \N \N \N \N \N f t f 修改用户 null f 9 34 t 初始化数据 2025-09-11 01:42:44.279556 2025-09-11 01:42:44.279556
删除用户 3 3 system:user:delete \N \N \N \N \N f t f 删除用户 null f 9 35 t 初始化数据 2025-09-09 00:30:45.244715 2025-09-09 00:30:45.244715 删除用户 3 3 system:user:delete \N \N \N \N \N f t f 删除用户 null f 9 35 t 初始化数据 2025-09-11 01:42:44.279556 2025-09-11 01:42:44.279557
批量修改用户状态 3 4 system:user:patch \N \N \N \N \N f t f 批量修改用户状态 null f 9 36 t 初始化数据 2025-09-09 00:30:45.244716 2025-09-09 00:30:45.244716 批量修改用户状态 3 4 system:user:patch \N \N \N \N \N f t f 批量修改用户状态 null f 9 36 t 初始化数据 2025-09-11 01:42:44.279557 2025-09-11 01:42:44.279557
导出用户 3 5 system:user:export \N \N \N \N \N f t f 导出用户 null f 9 37 t 初始化数据 2025-09-09 00:30:45.244716 2025-09-09 00:30:45.244717 导出用户 3 5 system:user:export \N \N \N \N \N f t f 导出用户 null f 9 37 t 初始化数据 2025-09-11 01:42:44.279558 2025-09-11 01:42:44.279558
导入用户 3 6 system:user:import \N \N \N \N \N f t f 导入用户 null f 9 38 t 初始化数据 2025-09-09 00:30:45.244717 2025-09-09 00:30:45.244717 导入用户 3 6 system:user:import \N \N \N \N \N f t f 导入用户 null f 9 38 t 初始化数据 2025-09-11 01:42:44.279558 2025-09-11 01:42:44.279559
日志删除 3 1 system:operation_log:delete \N \N \N \N \N f t f 日志删除 null f 10 39 t 初始化数据 2025-09-09 00:30:45.244718 2025-09-09 00:30:45.244718 日志删除 3 1 system:operation_log:delete \N \N \N \N \N f t f 日志删除 null f 10 39 t 初始化数据 2025-09-11 01:42:44.279559 2025-09-11 01:42:44.279559
日志导出 3 2 system:operation_log:export \N \N \N \N \N f t f 日志导出 null f 10 40 t 初始化数据 2025-09-09 00:30:45.244719 2025-09-09 00:30:45.244719 日志导出 3 2 system:operation_log:export \N \N \N \N \N f t f 日志导出 null f 10 40 t 初始化数据 2025-09-11 01:42:44.27956 2025-09-11 01:42:44.27956
公告创建 3 1 system:notice:create \N \N \N \N \N f t f 公告创建 null f 11 41 t 初始化数据 2025-09-09 00:30:45.244719 2025-09-09 00:30:45.24472 公告创建 3 1 system:notice:create \N \N \N \N \N f t f 公告创建 null f 11 41 t 初始化数据 2025-09-11 01:42:44.27956 2025-09-11 01:42:44.279561
公告修改 3 2 system:notice:update \N \N \N \N \N f t f 修改用户 null f 11 42 t 初始化数据 2025-09-09 00:30:45.24472 2025-09-09 00:30:45.24472 公告修改 3 2 system:notice:update \N \N \N \N \N f t f 修改用户 null f 11 42 t 初始化数据 2025-09-11 01:42:44.279561 2025-09-11 01:42:44.279561
公告删除 3 3 system:notice:delete \N \N \N \N \N f t f 公告删除 null f 11 43 t 初始化数据 2025-09-09 00:30:45.244721 2025-09-09 00:30:45.244721 公告删除 3 3 system:notice:delete \N \N \N \N \N f t f 公告删除 null f 11 43 t 初始化数据 2025-09-11 01:42:44.279562 2025-09-11 01:42:44.279562
公告导出 3 4 system:notice:export \N \N \N \N \N f t f 公告导出 null f 11 44 t 初始化数据 2025-09-09 00:30:45.244721 2025-09-09 00:30:45.244722 公告导出 3 4 system:notice:export \N \N \N \N \N f t f 公告导出 null f 11 44 t 初始化数据 2025-09-11 01:42:44.279562 2025-09-11 01:42:44.279563
公告批量修改状态 3 5 system:notice:patch \N \N \N \N \N f t f 公告批量修改状态 null f 11 45 t 初始化数据 2025-09-09 00:30:45.244722 2025-09-09 00:30:45.244722 公告批量修改状态 3 5 system:notice:patch \N \N \N \N \N f t f 公告批量修改状态 null f 11 45 t 初始化数据 2025-09-11 01:42:44.279563 2025-09-11 01:42:44.279563
创建配置 3 1 system:config:create \N \N \N \N \N f t f 创建配置 null f 12 46 t 初始化数据 2025-09-09 00:30:45.244723 2025-09-09 00:30:45.244723 创建参数 3 1 system:param:create \N \N \N \N \N f t f 创建参数 null f 12 46 t 初始化数据 2025-09-11 01:42:44.279564 2025-09-11 01:42:44.279564
修改配置 3 2 system:config:update \N \N \N \N \N f t f 修改配置 null f 12 47 t 初始化数据 2025-09-09 00:30:45.244723 2025-09-09 00:30:45.244724 修改参数 3 2 system:param:update \N \N \N \N \N f t f 修改参数 null f 12 47 t 初始化数据 2025-09-11 01:42:44.279564 2025-09-11 01:42:44.279565
删除配置 3 3 system:config:delete \N \N \N \N \N f t f 删除配置 null f 12 48 t 初始化数据 2025-09-09 00:30:45.244724 2025-09-09 00:30:45.244724 删除参数 3 3 system:param:delete \N \N \N \N \N f t f 删除参数 null f 12 48 t 初始化数据 2025-09-11 01:42:44.279565 2025-09-11 01:42:44.279565
导出配置 3 4 system:config:export \N \N \N \N \N f t f 导出配置 null f 12 49 t 初始化数据 2025-09-09 00:30:45.244725 2025-09-09 00:30:45.244725 导出参数 3 4 system:param:export \N \N \N \N \N f t f 导出参数 null f 12 49 t 初始化数据 2025-09-11 01:42:44.279566 2025-09-11 01:42:44.279566
配置上传 3 5 system:config:upload \N \N \N \N \N f t f 配置上传 null f 12 50 t 初始化数据 2025-09-09 00:30:45.244725 2025-09-09 00:30:45.244726 参数上传 3 5 system:param:upload \N \N \N \N \N f t f 参数上传 null f 12 50 t 初始化数据 2025-09-11 01:42:44.279566 2025-09-11 01:42:44.279567
创建字典类型 3 1 system:dict_type:create \N \N \N \N \N f t f 创建字典类型 null f 13 51 t 初始化数据 2025-09-09 00:30:45.244726 2025-09-09 00:30:45.244726 创建字典类型 3 1 system:dict_type:create \N \N \N \N \N f t f 创建字典类型 null f 13 51 t 初始化数据 2025-09-11 01:42:44.279567 2025-09-11 01:42:44.279567
修改字典类型 3 2 system:dict_type:update \N \N \N \N \N f t f 修改字典类型 null f 13 52 t 初始化数据 2025-09-09 00:30:45.244727 2025-09-09 00:30:45.244727 修改字典类型 3 2 system:dict_type:update \N \N \N \N \N f t f 修改字典类型 null f 13 52 t 初始化数据 2025-09-11 01:42:44.279568 2025-09-11 01:42:44.279568
删除字典类型 3 3 system:dict_type:delete \N \N \N \N \N f t f 删除字典类型 null f 13 53 t 初始化数据 2025-09-09 00:30:45.244727 2025-09-09 00:30:45.244728 删除字典类型 3 3 system:dict_type:delete \N \N \N \N \N f t f 删除字典类型 null f 13 53 t 初始化数据 2025-09-11 01:42:44.279568 2025-09-11 01:42:44.279569
导出字典类型 3 4 system:dict_type:export \N \N \N \N \N f t f 导出字典类型 null f 13 54 t 初始化数据 2025-09-09 00:30:45.244728 2025-09-09 00:30:45.244729 导出字典类型 3 4 system:dict_type:export \N \N \N \N \N f t f 导出字典类型 null f 13 54 t 初始化数据 2025-09-11 01:42:44.279569 2025-09-11 01:42:44.279569
批量修改字典状态 3 5 system:dict_type:patch \N \N \N \N \N f t f 导出字典类型 null f 13 55 t 初始化数据 2025-09-09 00:30:45.244729 2025-09-09 00:30:45.244729 批量修改字典状态 3 5 system:dict_type:patch \N \N \N \N \N f t f 导出字典类型 null f 13 55 t 初始化数据 2025-09-11 01:42:44.27957 2025-09-11 01:42:44.27957
字典数据查询 3 6 system:dict_data:query \N \N \N \N \N f t f 字典数据查询 null f 13 56 t 初始化数据 2025-09-09 00:30:45.24473 2025-09-09 00:30:45.24473 字典数据查询 3 6 system:dict_data:query \N \N \N \N \N f t f 字典数据查询 null f 13 56 t 初始化数据 2025-09-11 01:42:44.279571 2025-09-11 01:42:44.279571
创建字典数据 3 7 system:dict_data:create \N \N \N \N \N f t f 创建字典数据 null f 13 57 t 初始化数据 2025-09-09 00:30:45.24473 2025-09-09 00:30:45.244731 创建字典数据 3 7 system:dict_data:create \N \N \N \N \N f t f 创建字典数据 null f 13 57 t 初始化数据 2025-09-11 01:42:44.279571 2025-09-11 01:42:44.279572
修改字典数据 3 8 system:dict_data:update \N \N \N \N \N f t f 修改字典数据 null f 13 58 t 初始化数据 2025-09-09 00:30:45.244731 2025-09-09 00:30:45.244731 修改字典数据 3 8 system:dict_data:update \N \N \N \N \N f t f 修改字典数据 null f 13 58 t 初始化数据 2025-09-11 01:42:44.279572 2025-09-11 01:42:44.279572
删除字典数据 3 9 system:dict_data:delete \N \N \N \N \N f t f 删除字典数据 null f 13 59 t 初始化数据 2025-09-09 00:30:45.244732 2025-09-09 00:30:45.244732 删除字典数据 3 9 system:dict_data:delete \N \N \N \N \N f t f 删除字典数据 null f 13 59 t 初始化数据 2025-09-11 01:42:44.279573 2025-09-11 01:42:44.279573
导出字典数据 3 10 system:dict_data:export \N \N \N \N \N f t f 导出字典数据 null f 13 60 t 初始化数据 2025-09-09 00:30:45.244732 2025-09-09 00:30:45.244733 导出字典数据 3 10 system:dict_data:export \N \N \N \N \N f t f 导出字典数据 null f 13 60 t 初始化数据 2025-09-11 01:42:44.279573 2025-09-11 01:42:44.279574
批量修改字典数据状态 3 11 system:dict_data:patch \N \N \N \N \N f t f 批量修改字典数据状态 null f 13 61 t 初始化数据 2025-09-09 00:30:45.244733 2025-09-09 00:30:45.244733 批量修改字典数据状态 3 11 system:dict_data:patch \N \N \N \N \N f t f 批量修改字典数据状态 null f 13 61 t 初始化数据 2025-09-11 01:42:44.279574 2025-09-11 01:42:44.279574
监控管理 1 3 \N monitor Monitor /monitor \N /monitor/online f f f 监控管理 null f \N 62 t 初始化数据 2025-09-09 00:30:45.244734 2025-09-09 00:30:45.244734 监控管理 1 3 \N monitor Monitor /monitor \N /monitor/online f f f 监控管理 null f \N 62 t 初始化数据 2025-09-11 01:42:44.279575 2025-09-11 01:42:44.279575
任务管理 2 1 monitor:job:query el-icon-DataLine Job /monitor/job monitor/job/index \N f t f 任务管理 null f 62 63 t 初始化数据 2025-09-09 00:30:45.244734 2025-09-09 00:30:45.244735 任务管理 2 1 monitor:job:query el-icon-DataLine Job /monitor/job monitor/job/index \N f t f 任务管理 null f 62 63 t 初始化数据 2025-09-11 01:42:44.279575 2025-09-11 01:42:44.279576
创建任务 3 1 monitor:job:create \N \N \N \N \N f t f 创建任务 null f 63 64 t 初始化数据 2025-09-09 00:30:45.244735 2025-09-09 00:30:45.244735 创建任务 3 1 monitor:job:create \N \N \N \N \N f t f 创建任务 null f 63 64 t 初始化数据 2025-09-11 01:42:44.279576 2025-09-11 01:42:44.279576
修改和操作任务 3 2 monitor:job:update \N \N \N \N \N f t f 修改和操作任务 null f 63 65 t 初始化数据 2025-09-09 00:30:45.244736 2025-09-09 00:30:45.244736 修改和操作任务 3 2 monitor:job:update \N \N \N \N \N f t f 修改和操作任务 null f 63 65 t 初始化数据 2025-09-11 01:42:44.279577 2025-09-11 01:42:44.279577
删除和清除任务 3 3 monitor:job:delete \N \N \N \N \N f t f 删除和清除任务 null f 63 66 t 初始化数据 2025-09-09 00:30:45.244736 2025-09-09 00:30:45.244737 删除和清除任务 3 3 monitor:job:delete \N \N \N \N \N f t f 删除和清除任务 null f 63 66 t 初始化数据 2025-09-11 01:42:44.279577 2025-09-11 01:42:44.279578
导出定时任务 3 4 monitor:job:export \N \N \N \N \N f t f 导出定时任务 null f 63 67 t 初始化数据 2025-09-09 00:30:45.244737 2025-09-09 00:30:45.244737 导出定时任务 3 4 monitor:job:export \N \N \N \N \N f t f 导出定时任务 null f 63 67 t 初始化数据 2025-09-11 01:42:44.279578 2025-09-11 01:42:44.279578
在线用户 2 2 monitor:online:query el-icon-Headset MonitorOnline /monitor/online monitor/online/index \N f f f 在线用户 null f 62 68 t 初始化数据 2025-09-09 00:30:45.244738 2025-09-09 00:30:45.244738 在线用户 2 2 monitor:online:query el-icon-Headset MonitorOnline /monitor/online monitor/online/index \N f f f 在线用户 null f 62 68 t 初始化数据 2025-09-11 01:42:44.279579 2025-09-11 01:42:44.279579
在线用户强制下线 3 1 monitor:online:delete \N \N \N \N \N f f f 在线用户强制下线 null f 68 69 t 初始化数据 2025-09-09 00:30:45.244739 2025-09-09 00:30:45.244739 在线用户强制下线 3 1 monitor:online:delete \N \N \N \N \N f f f 在线用户强制下线 null f 68 69 t 初始化数据 2025-09-11 01:42:44.279579 2025-09-11 01:42:44.27958
服务器监控 2 3 monitor:server:query el-icon-Odometer MonitorServer /monitor/server monitor/server/index \N f f f 服务器监控 null f 62 70 t 初始化数据 2025-09-09 00:30:45.244739 2025-09-09 00:30:45.24474 服务器监控 2 3 monitor:server:query el-icon-Odometer MonitorServer /monitor/server monitor/server/index \N f f f 服务器监控 null f 62 70 t 初始化数据 2025-09-11 01:42:44.27958 2025-09-11 01:42:44.27958
缓存监控 2 4 monitor:cache:query el-icon-Stopwatch MonitorCache /monitor/cache monitor/cache/index \N f f f 缓存监控 null f 62 71 t 初始化数据 2025-09-09 00:30:45.24474 2025-09-09 00:30:45.24474 缓存监控 2 4 monitor:cache:query el-icon-Stopwatch MonitorCache /monitor/cache monitor/cache/index \N f f f 缓存监控 null f 62 71 t 初始化数据 2025-09-11 01:42:44.279581 2025-09-11 01:42:44.279581
清除缓存 3 1 monitor:cache:delete \N \N \N \N \N f f f 清除缓存 null f 71 72 t 初始化数据 2025-09-09 00:30:45.244741 2025-09-09 00:30:45.244741 清除缓存 3 1 monitor:cache:delete \N \N \N \N \N f f f 清除缓存 null f 71 72 t 初始化数据 2025-09-11 01:42:44.279581 2025-09-11 01:42:44.279582
公共模块 1 4 \N document Common /common \N /common/docs f f f 公共模块 null f \N 73 t 初始化数据 2025-09-09 00:30:45.244741 2025-09-09 00:30:45.244742 公共模块 1 4 \N document Common /common \N /common/docs f f f 公共模块 null f \N 73 t 初始化数据 2025-09-11 01:42:44.279582 2025-09-11 01:42:44.279582
接口管理 4 1 common:docs:query api Docs /common/docs common/docs/index \N f f f 接口管理 null f 73 74 t 初始化数据 2025-09-09 00:30:45.244742 2025-09-09 00:30:45.244742 接口管理 4 1 common:docs:query api Docs /common/docs common/docs/index \N f f f 接口管理 null f 73 74 t 初始化数据 2025-09-11 01:42:44.279583 2025-09-11 01:42:44.279583
文档管理 4 2 common:redoc:query el-icon-Document Redoc /common/redoc common/redoc/index \N f f f 文档管理 null f 73 75 t 初始化数据 2025-09-09 00:30:45.244743 2025-09-09 00:30:45.244743 文档管理 4 2 common:redoc:query el-icon-Document Redoc /common/redoc common/redoc/index \N f f f 文档管理 null f 73 75 t 初始化数据 2025-09-11 01:42:44.279583 2025-09-11 01:42:44.279584
演示模块 1 5 \N el-icon-Document Demo /demo \N /demo/example f f f 演示模块 null f \N 76 t 初始化数据 2025-09-09 00:30:45.244743 2025-09-09 00:30:45.244744 演示模块 1 5 \N el-icon-Document Demo /demo \N /demo/example f f f 演示模块 null f \N 76 t 初始化数据 2025-09-11 01:42:44.279584 2025-09-11 01:42:44.279584
示例管理 2 1 demo:example:query el-icon-DataLine Example /demo/example demo/example/index \N f t f 示例管理 null f 76 77 t 初始化数据 2025-09-09 00:30:45.244744 2025-09-09 00:30:45.244744 示例管理 2 1 demo:example:query el-icon-DataLine Example /demo/example demo/example/index \N f t f 示例管理 null f 76 77 t 初始化数据 2025-09-11 01:42:44.279585 2025-09-11 01:42:44.279585
创建示例 3 1 demo:example:create \N \N \N \N \N f t f 创建示例 null f 77 78 t 初始化数据 2025-09-09 00:30:45.244745 2025-09-09 00:30:45.244745 创建示例 3 1 demo:example:create \N \N \N \N \N f t f 创建示例 null f 77 78 t 初始化数据 2025-09-11 01:42:44.279585 2025-09-11 01:42:44.279586
更新示例 3 2 demo:example:update \N \N \N \N \N f t f 更新示例 null f 77 79 t 初始化数据 2025-09-09 00:30:45.244745 2025-09-09 00:30:45.244746 更新示例 3 2 demo:example:update \N \N \N \N \N f t f 更新示例 null f 77 79 t 初始化数据 2025-09-11 01:42:44.279586 2025-09-11 01:42:44.279586
删除示例 3 3 demo:example:delete \N \N \N \N \N f t f 删除示例 null f 77 80 t 初始化数据 2025-09-09 00:30:45.244746 2025-09-09 00:30:45.244746 删除示例 3 3 demo:example:delete \N \N \N \N \N f t f 删除示例 null f 77 80 t 初始化数据 2025-09-11 01:42:44.279587 2025-09-11 01:42:44.279587
批量修改示例状态 3 4 demo:example:patch \N \N \N \N \N f t f 批量修改示例状态 null f 77 81 t 初始化数据 2025-09-09 00:30:45.244747 2025-09-09 00:30:45.244747 批量修改示例状态 3 4 demo:example:patch \N \N \N \N \N f t f 批量修改示例状态 null f 77 81 t 初始化数据 2025-09-11 01:42:44.279587 2025-09-11 01:42:44.279588
导出示例 3 5 demo:example:export \N \N \N \N \N f t f 导出示例 null f 77 82 t 初始化数据 2025-09-09 00:30:45.244748 2025-09-09 00:30:45.244748 导出示例 3 5 demo:example:export \N \N \N \N \N f t f 导出示例 null f 77 82 t 初始化数据 2025-09-11 01:42:44.279588 2025-09-11 01:42:44.279588
导入示例 3 6 demo:example:import \N \N \N \N \N f t f 导入示例 null f 77 83 t 初始化数据 2025-09-09 00:30:45.244748 2025-09-09 00:30:45.244749 导入示例 3 6 demo:example:import \N \N \N \N \N f t f 导入示例 null f 77 83 t 初始化数据 2025-09-11 01:42:44.279589 2025-09-11 01:42:44.279589
下载导入示例模版 3 7 demo:example:download \N \N \N \N \N f t f 下载导入示例模版 null f 77 84 t 初始化数据 2025-09-09 00:30:45.244749 2025-09-09 00:30:45.244749 下载导入示例模版 3 7 demo:example:download \N \N \N \N \N f t f 下载导入示例模版 null f 77 84 t 初始化数据 2025-09-11 01:42:44.279589 2025-09-11 01:42:44.27959
应用管理 1 6 \N captcha Application /application \N /application/myapp f f f 应用管理 null f \N 85 t 初始化数据 2025-09-09 00:30:45.24475 2025-09-09 00:30:45.24475 应用管理 1 6 \N captcha Application /application \N /application/myapp f f f 应用管理 null f \N 85 t 初始化数据 2025-09-11 01:42:44.27959 2025-09-11 01:42:44.27959
我的应用 2 1 application:myapp:query el-icon-DataLine ApplicationSystem /application/myapp application/myapp/index \N f t f 应用系统管理 null f 85 86 t 初始化数据 2025-09-09 00:30:45.24475 2025-09-09 00:30:45.244751 我的应用 2 1 application:myapp:query el-icon-DataLine ApplicationSystem /application/myapp application/myapp/index \N f t f 系统管理 null f 85 86 t 初始化数据 2025-09-11 01:42:44.279591 2025-09-11 01:42:44.279591
创建应用 3 1 application:myapp:create \N \N \N \N \N f t f 创建应用 null f 86 87 t 初始化数据 2025-09-09 00:30:45.244751 2025-09-09 00:30:45.244751 创建应用 3 1 application:myapp:create \N \N \N \N \N f t f 创建应用 null f 86 87 t 初始化数据 2025-09-11 01:42:44.279591 2025-09-11 01:42:44.279592
修改应用 3 2 application:myapp:update \N \N \N \N \N f t f 修改应用 null f 86 88 t 初始化数据 2025-09-09 00:30:45.244752 2025-09-09 00:30:45.244752 修改应用 3 2 application:myapp:update \N \N \N \N \N f t f 修改应用 null f 86 88 t 初始化数据 2025-09-11 01:42:44.279592 2025-09-11 01:42:44.279592
删除应用 3 3 application:myapp:delete \N \N \N \N \N f t f 删除应用 null f 86 89 t 初始化数据 2025-09-09 00:30:45.244752 2025-09-09 00:30:45.244753 删除应用 3 3 application:myapp:delete \N \N \N \N \N f t f 删除应用 null f 86 89 t 初始化数据 2025-09-11 01:42:44.279593 2025-09-11 01:42:44.279593
批量修改应用状态 3 4 application:myapp:patch \N \N \N \N \N f t f 批量修改应用状态 null f 86 90 t 初始化数据 2025-09-09 00:30:45.244753 2025-09-09 00:30:45.244753 批量修改应用状态 3 4 application:myapp:patch \N \N \N \N \N f t f 批量修改应用状态 null f 86 90 t 初始化数据 2025-09-11 01:42:44.279593 2025-09-11 01:42:44.279594
资源管理 1 7 \N document Resource /resource \N /resource/file f f f 资源管理 null f \N 91 t 初始化数据 2025-09-09 00:30:45.244754 2025-09-09 00:30:45.244754 存储管理 1 7 \N document Resource /resource \N /resource/file f f f 存储管理 null f \N 91 t 初始化数据 2025-09-11 01:42:44.279594 2025-09-11 01:42:44.279594
文件管理 2 1 resource:file:query el-icon-Files ResourceFile /resource/file resource/file/index \N f t f 文件管理 null f 91 92 t 初始化数据 2025-09-09 00:30:45.244755 2025-09-09 00:30:45.244755 文件管理 2 1 resource:file:query el-icon-Files ResourceFile /resource/file resource/file/index \N f t f 文件管理 null f 91 92 t 初始化数据 2025-09-11 01:42:44.279595 2025-09-11 01:42:44.279595
文件上传 3 1 resource:file:upload \N \N \N \N \N f t f 文件上传 null f 92 93 t 初始化数据 2025-09-09 00:30:45.244755 2025-09-09 00:30:45.244756 文件上传 3 1 resource:file:upload \N \N \N \N \N f t f 文件上传 null f 92 93 t 初始化数据 2025-09-11 01:42:44.279595 2025-09-11 01:42:44.279596
文件下载 3 2 resource:file:download \N \N \N \N \N f t f 文件下载 null f 92 94 t 初始化数据 2025-09-09 00:30:45.244756 2025-09-09 00:30:45.244756 文件下载 3 2 resource:file:download \N \N \N \N \N f t f 文件下载 null f 92 94 t 初始化数据 2025-09-11 01:42:44.279596 2025-09-11 01:42:44.279596
文件删除 3 3 resource:file:delete \N \N \N \N \N f t f 文件删除 null f 92 95 t 初始化数据 2025-09-09 00:30:45.244757 2025-09-09 00:30:45.244757 文件删除 3 3 resource:file:delete \N \N \N \N \N f t f 文件删除 null f 92 95 t 初始化数据 2025-09-11 01:42:44.279597 2025-09-11 01:42:44.279597
文件移动 3 4 resource:file:move \N \N \N \N \N f t f 文件移动 null f 92 96 t 初始化数据 2025-09-09 00:30:45.244757 2025-09-09 00:30:45.244758 文件移动 3 4 resource:file:move \N \N \N \N \N f t f 文件移动 null f 92 96 t 初始化数据 2025-09-11 01:42:44.279597 2025-09-11 01:42:44.279598
文件复制 3 5 resource:file:copy \N \N \N \N \N f t f 文件复制 null f 92 97 t 初始化数据 2025-09-09 00:30:45.244758 2025-09-09 00:30:45.244758 文件复制 3 5 resource:file:copy \N \N \N \N \N f t f 文件复制 null f 92 97 t 初始化数据 2025-09-11 01:42:44.279598 2025-09-11 01:42:44.279598
文件重命名 3 6 resource:file:rename \N \N \N \N \N f t f 文件重命名 null f 92 98 t 初始化数据 2025-09-09 00:30:45.244759 2025-09-09 00:30:45.244759 文件重命名 3 6 resource:file:rename \N \N \N \N \N f t f 文件重命名 null f 92 98 t 初始化数据 2025-09-11 01:42:44.279599 2025-09-11 01:42:44.279599
创建目录 3 7 resource:file:create_dir \N \N \N \N \N f t f 创建目录 null f 92 99 t 初始化数据 2025-09-09 00:30:45.244759 2025-09-09 00:30:45.24476 创建目录 3 7 resource:file:create_dir \N \N \N \N \N f t f 创建目录 null f 92 99 t 初始化数据 2025-09-11 01:42:44.279599 2025-09-11 01:42:44.2796
文件搜索 3 8 resource:file:search \N \N \N \N \N f t f 文件搜索 null f 92 100 t 初始化数据 2025-09-09 00:30:45.24476 2025-09-09 00:30:45.24476 文件搜索 3 8 resource:file:search \N \N \N \N \N f t f 文件搜索 null f 92 100 t 初始化数据 2025-09-11 01:42:44.2796 2025-09-11 01:42:44.2796
导出文件列表 3 9 resource:file:export \N \N \N \N \N f t f 导出文件列表 null f 92 101 t 初始化数据 2025-09-09 00:30:45.244761 2025-09-09 00:30:45.244761 导出文件列表 3 9 resource:file:export \N \N \N \N \N f t f 导出文件列表 null f 92 101 t 初始化数据 2025-09-11 01:42:44.279601 2025-09-11 01:42:44.279601
AI大模型 1 8 \N el-icon-DataLine AI /ai \N /ai/mcp f f f AI大模型 null f \N 102 t AI大模型管理 2025-09-09 00:30:45.244761 2025-09-09 00:30:45.244762 存储监控 2 2 resource:stats:query el-icon-Files Stats /resource/stats resource/stats/index \N f t f 文件管理 null f 91 102 t 初始化数据 2025-09-11 01:42:44.279601 2025-09-11 01:42:44.279602
MCP智能助手 2 1 ai:mcp:chat el-icon-DataLine MCP /ai/mcp ai/mcp/index \N f t f MCP智能助手 null f 102 103 t MCP智能助手 2025-09-09 00:30:45.244762 2025-09-09 00:30:45.244762 AI大模型 1 8 \N el-icon-DataLine AI /ai \N /ai/mcp f f f AI大模型 null f \N 103 t AI大模型管理 2025-09-11 01:42:44.279602 2025-09-11 01:42:44.279602
智能对话 3 1 ai:mcp:chat \N \N \N \N \N f t f 智能对话 null f 103 104 t 智能对话 2025-09-09 00:30:45.244763 2025-09-09 00:30:45.244763 MCP应用 2 1 ai:mcp:chat el-icon-DataLine MCP /ai/mcp ai/mcp/index \N f t f MCP应用 null f 103 104 t MCP智能助手 2025-09-11 01:42:44.279603 2025-09-11 01:42:44.279603
智能对话 3 1 ai:mcp:chat \N \N \N \N \N f t f 智能对话 null f 104 105 t 智能对话 2025-09-11 01:42:44.279603 2025-09-11 01:42:44.279604
代码管理 1 9 \N el-icon-DataLine Gencode /gencode \N /ai/mcp f f f 代码管理 null f \N 106 t 代码管理 2025-09-11 01:42:44.279604 2025-09-11 01:42:44.279604
代码生成 2 1 gencode:backcode:query el-icon-DataLine Backcode /gencode/backcode gencode/backcode/index \N f t f 代码生成 null f 106 107 t 代码生成 2025-09-11 01:42:44.279605 2025-09-11 01:42:44.279605
前端构建 2 2 gencode:webcode:query el-icon-DataLine webcode /gencode/webcode gencode/webcode/index \N f t f 前端构建 null f 106 108 t 前端构建 2025-09-11 01:42:44.279606 2025-09-11 01:42:44.279606
\. \.
@@ -2384,10 +2355,26 @@ MCP智能助手 2 1 ai:mcp:chat el-icon-DataLine MCP /ai/mcp ai/mcp/index \N f t
-- --
COPY public.system_notice (notice_title, notice_type, notice_content, creator_id, id, status, description, created_at, updated_at) FROM stdin; COPY public.system_notice (notice_title, notice_type, notice_content, creator_id, id, status, description, created_at, updated_at) FROM stdin;
系统更新 1 2099年9月9日,晚上12:00,系统更新 1 1 t 系统更新 2025-09-09 00:30:45.266852 2025-09-09 00:30:45.266853 \.
系统维护 2 2099年9月9日,晚上12:00,系统维护 1 2 t 系统维护 2025-09-09 00:30:45.266853 2025-09-09 00:30:45.266854
系统更新完成 1 2099年9月9日,晚上12:00,系统更新完成 1 3 f 系统更新完成 2025-09-09 00:30:45.266854 2025-09-09 00:30:45.266855
系统维护完成 2 2099年9月9日,晚上12:00,系统维护完成 1 4 f 系统维护完成 2025-09-09 00:30:45.266855 2025-09-09 00:30:45.266855 --
-- Data for Name: system_param; Type: TABLE DATA; Schema: public; Owner: tao
--
COPY public.system_param (config_name, config_key, config_value, config_type, creator_id, id, status, description, created_at, updated_at) FROM stdin;
网站名称 sys_web_title FastAPI Vue3 Admin t 1 1 t 网站名称 2025-09-11 01:42:44.292593 2025-09-11 01:42:44.292594
网站描述 sys_web_description FastAPI Vue3 Admin 是完全开源的权限管理系统 t 1 2 t 网站描述 2025-09-11 01:42:44.292594 2025-09-11 01:42:44.292595
网页图标 sys_web_favicon https://service.fastapiadmin.com/api/v1/static/image/favicon.png t 1 3 t 网页图标 2025-09-11 01:42:44.292595 2025-09-11 01:42:44.292596
网站Logo sys_web_logo https://service.fastapiadmin.com/api/v1/static/image/logo.png t 1 4 t 网站Logo 2025-09-11 01:42:44.292596 2025-09-11 01:42:44.292596
登录背景 sys_login_background https://service.fastapiadmin.com/api/v1/static/image/background.svg t 1 5 t 登录背景 2025-09-11 01:42:44.292597 2025-09-11 01:42:44.292597
版权信息 sys_web_copyright Copyright © 2025-2026 service.fastapiadmin.com 版权所有 t 1 6 t 版权信息 2025-09-11 01:42:44.292598 2025-09-11 01:42:44.292598
备案信息 sys_keep_record 陕ICP备2025069493号-1 t 1 7 t 备案信息 2025-09-11 01:42:44.292598 2025-09-11 01:42:44.292599
帮助文档 sys_help_doc https://service.fastapiadmin.com t 1 8 t 帮助文档 2025-09-11 01:42:44.292599 2025-09-11 01:42:44.2926
隐私政策 sys_web_privacy https://github.com/1014TaoTao/fastapi_vue3_admin/blob/master/LICENSE t 1 9 t 隐私政策 2025-09-11 01:42:44.2926 2025-09-11 01:42:44.2926
用户协议 sys_web_clause https://github.com/1014TaoTao/fastapi_vue3_admin/blob/master/LICENSE t 1 10 t 用户协议 2025-09-11 01:42:44.292601 2025-09-11 01:42:44.292601
源码代码 sys_git_code https://github.com/1014TaoTao/fastapi_vue3_admin.git t 1 11 t 源码代码 2025-09-11 01:42:44.292602 2025-09-11 01:42:44.292602
项目版本 sys_web_version 2.0.0 t 1 12 t 项目版本 2025-09-11 01:42:44.292602 2025-09-11 01:42:44.292603
\. \.
@@ -2396,13 +2383,7 @@ COPY public.system_notice (notice_title, notice_type, notice_content, creator_id
-- --
COPY public.system_position (name, "order", creator_id, id, status, description, created_at, updated_at) FROM stdin; COPY public.system_position (name, "order", creator_id, id, status, description, created_at, updated_at) FROM stdin;
董事长岗 1 1 1 t 董事长岗位 2025-09-09 00:30:45.256949 2025-09-09 00:30:45.25695 董事长岗 1 1 1 t 董事长岗位 2025-09-11 01:42:44.290708 2025-09-11 01:42:44.290709
运营岗 2 1 2 t 运营岗位 2025-09-09 00:30:45.256951 2025-09-09 00:30:45.256951
销售岗 3 1 3 t 销售岗 2025-09-09 00:30:45.256952 2025-09-09 00:30:45.256952
人事行政岗 4 1 4 t 人事行政岗 2025-09-09 00:30:45.256952 2025-09-09 00:30:45.256953
开发岗 5 1 5 t 开发岗 2025-09-09 00:30:45.256953 2025-09-09 00:30:45.256954
测试岗 6 1 6 t 测试岗 2025-09-09 00:30:45.256954 2025-09-09 00:30:45.256954
演示岗 7 1 7 t 演示岗 2025-09-09 00:30:45.256955 2025-09-09 00:30:45.256955
\. \.
@@ -2411,8 +2392,7 @@ COPY public.system_position (name, "order", creator_id, id, status, description,
-- --
COPY public.system_role (name, code, "order", data_scope, creator_id, id, status, description, created_at, updated_at) FROM stdin; COPY public.system_role (name, code, "order", data_scope, creator_id, id, status, description, created_at, updated_at) FROM stdin;
管理员角色 \N 1 4 1 1 t 管理员 2025-09-09 00:30:45.254073 2025-09-09 00:30:45.254074 管理员角色 \N 1 4 1 1 t 管理员 2025-09-11 01:42:44.289222 2025-09-11 01:42:44.289223
普通角色 \N 2 1 1 2 t 普通角色 2025-09-09 00:30:45.254074 2025-09-09 00:30:45.254075
\. \.
@@ -2422,8 +2402,6 @@ COPY public.system_role (name, code, "order", data_scope, creator_id, id, status
COPY public.system_role_depts (role_id, dept_id) FROM stdin; COPY public.system_role_depts (role_id, dept_id) FROM stdin;
1 1 1 1
2 1
2 6
\. \.
@@ -2536,8 +2514,10 @@ COPY public.system_role_menus (role_id, menu_id) FROM stdin;
1 102 1 102
1 103 1 103
1 104 1 104
2 1 1 105
2 2 1 106
1 107
1 108
\. \.
@@ -2546,9 +2526,8 @@ COPY public.system_role_menus (role_id, menu_id) FROM stdin;
-- --
COPY public.system_user_positions (user_id, position_id) FROM stdin; COPY public.system_user_positions (user_id, position_id) FROM stdin;
1 5 1 1
2 7 2 1
3 1
\. \.
@@ -2559,7 +2538,6 @@ COPY public.system_user_positions (user_id, position_id) FROM stdin;
COPY public.system_user_roles (user_id, role_id) FROM stdin; COPY public.system_user_roles (user_id, role_id) FROM stdin;
1 1 1 1
2 1 2 1
3 1
\. \.
@@ -2568,9 +2546,8 @@ COPY public.system_user_roles (user_id, role_id) FROM stdin;
-- --
COPY public.system_users (username, password, name, mobile, email, gender, avatar, is_superuser, last_login, dept_id, creator_id, id, status, description, created_at, updated_at) FROM stdin; COPY public.system_users (username, password, name, mobile, email, gender, avatar, is_superuser, last_login, dept_id, creator_id, id, status, description, created_at, updated_at) FROM stdin;
superadmin $2b$12$/Df5YczDGF41zCh2F8Xbu.yHTJXGm3tONgsXz1KLUdG0mtpKUOLD2 超级管理员 15382112620 948080782@qq.com 1 https://service.fastapiadmin.com/api/v1/static/image/avatar.png t \N 1 \N 1 t 超级管理员 2025-09-09 00:30:45.251329 2025-09-09 00:30:45.25133 admin $2b$12$e2IJgS/cvHgJ0H3G7Xa08OXoXnk6N/NX3IZRtubBDElA0VLZhkNOa 管理员 15382112222 admin@qq.com 0 https://service.fastapiadmin.com/api/v1/static/image/avatar.png t \N 1 1 1 t 管理员 2025-09-11 01:42:44.287284 2025-09-11 01:42:44.287285
admin $2b$12$e2IJgS/cvHgJ0H3G7Xa08OXoXnk6N/NX3IZRtubBDElA0VLZhkNOa 管理员 15382112222 admin@qq.com 0 https://service.fastapiadmin.com/api/v1/static/image/avatar.png f \N 1 1 2 t 管理员 2025-09-09 00:30:45.25133 2025-09-09 00:30:45.251331 demo $2b$12$e2IJgS/cvHgJ0H3G7Xa08OXoXnk6N/NX3IZRtubBDElA0VLZhkNOa 演示用户 15382112121 demo@qq.com 0 https://service.fastapiadmin.com/api/v1/static/image/avatar.png f \N 1 1 2 t 演示用户 2025-09-11 01:42:44.287286 2025-09-11 01:42:44.287286
demo $2b$12$e2IJgS/cvHgJ0H3G7Xa08OXoXnk6N/NX3IZRtubBDElA0VLZhkNOa 演示用户 15382112121 demo@qq.com 1 https://service.fastapiadmin.com/api/v1/static/image/avatar.png f \N 6 1 3 t 演示用户 2025-09-09 00:30:45.251331 2025-09-09 00:30:45.251331
\. \.
@@ -2592,7 +2569,7 @@ SELECT pg_catalog.setval('public.example_demo_id_seq', 1, false);
-- Name: monitor_job_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao -- Name: monitor_job_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao
-- --
SELECT pg_catalog.setval('public.monitor_job_id_seq', 3, true); SELECT pg_catalog.setval('public.monitor_job_id_seq', 1, false);
-- --
@@ -2602,18 +2579,11 @@ SELECT pg_catalog.setval('public.monitor_job_id_seq', 3, true);
SELECT pg_catalog.setval('public.monitor_job_log_id_seq', 1, false); SELECT pg_catalog.setval('public.monitor_job_log_id_seq', 1, false);
--
-- Name: system_config_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao
--
SELECT pg_catalog.setval('public.system_config_id_seq', 12, true);
-- --
-- Name: system_dept_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao -- Name: system_dept_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao
-- --
SELECT pg_catalog.setval('public.system_dept_id_seq', 11, true); SELECT pg_catalog.setval('public.system_dept_id_seq', 1, true);
-- --
@@ -2641,35 +2611,42 @@ SELECT pg_catalog.setval('public.system_log_id_seq', 1, false);
-- Name: system_menu_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao -- Name: system_menu_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao
-- --
SELECT pg_catalog.setval('public.system_menu_id_seq', 104, true); SELECT pg_catalog.setval('public.system_menu_id_seq', 108, true);
-- --
-- Name: system_notice_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao -- Name: system_notice_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao
-- --
SELECT pg_catalog.setval('public.system_notice_id_seq', 4, true); SELECT pg_catalog.setval('public.system_notice_id_seq', 1, false);
--
-- Name: system_param_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao
--
SELECT pg_catalog.setval('public.system_param_id_seq', 12, true);
-- --
-- Name: system_position_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao -- Name: system_position_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao
-- --
SELECT pg_catalog.setval('public.system_position_id_seq', 7, true); SELECT pg_catalog.setval('public.system_position_id_seq', 1, true);
-- --
-- Name: system_role_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao -- Name: system_role_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao
-- --
SELECT pg_catalog.setval('public.system_role_id_seq', 2, true); SELECT pg_catalog.setval('public.system_role_id_seq', 1, true);
-- --
-- Name: system_users_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao -- Name: system_users_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tao
-- --
SELECT pg_catalog.setval('public.system_users_id_seq', 3, true); SELECT pg_catalog.setval('public.system_users_id_seq', 2, true);
-- --
@@ -2712,30 +2689,6 @@ ALTER TABLE ONLY public.monitor_job
ADD CONSTRAINT monitor_job_pkey PRIMARY KEY (id); ADD CONSTRAINT monitor_job_pkey PRIMARY KEY (id);
--
-- Name: system_config system_config_config_key_key; Type: CONSTRAINT; Schema: public; Owner: tao
--
ALTER TABLE ONLY public.system_config
ADD CONSTRAINT system_config_config_key_key UNIQUE (config_key);
--
-- Name: system_config system_config_config_name_key; Type: CONSTRAINT; Schema: public; Owner: tao
--
ALTER TABLE ONLY public.system_config
ADD CONSTRAINT system_config_config_name_key UNIQUE (config_name);
--
-- Name: system_config system_config_pkey; Type: CONSTRAINT; Schema: public; Owner: tao
--
ALTER TABLE ONLY public.system_config
ADD CONSTRAINT system_config_pkey PRIMARY KEY (id);
-- --
-- Name: system_dept system_dept_name_key; Type: CONSTRAINT; Schema: public; Owner: tao -- Name: system_dept system_dept_name_key; Type: CONSTRAINT; Schema: public; Owner: tao
-- --
@@ -2816,6 +2769,30 @@ ALTER TABLE ONLY public.system_notice
ADD CONSTRAINT system_notice_pkey PRIMARY KEY (id); ADD CONSTRAINT system_notice_pkey PRIMARY KEY (id);
--
-- Name: system_param system_param_config_key_key; Type: CONSTRAINT; Schema: public; Owner: tao
--
ALTER TABLE ONLY public.system_param
ADD CONSTRAINT system_param_config_key_key UNIQUE (config_key);
--
-- Name: system_param system_param_config_name_key; Type: CONSTRAINT; Schema: public; Owner: tao
--
ALTER TABLE ONLY public.system_param
ADD CONSTRAINT system_param_config_name_key UNIQUE (config_name);
--
-- Name: system_param system_param_pkey; Type: CONSTRAINT; Schema: public; Owner: tao
--
ALTER TABLE ONLY public.system_param
ADD CONSTRAINT system_param_pkey PRIMARY KEY (id);
-- --
-- Name: system_position system_position_name_key; Type: CONSTRAINT; Schema: public; Owner: tao -- Name: system_position system_position_name_key; Type: CONSTRAINT; Schema: public; Owner: tao
-- --
@@ -2941,13 +2918,6 @@ CREATE INDEX ix_example_demo_creator_id ON public.example_demo USING btree (crea
CREATE INDEX ix_monitor_job_creator_id ON public.monitor_job USING btree (creator_id); CREATE INDEX ix_monitor_job_creator_id ON public.monitor_job USING btree (creator_id);
--
-- Name: ix_system_config_creator_id; Type: INDEX; Schema: public; Owner: tao
--
CREATE INDEX ix_system_config_creator_id ON public.system_config USING btree (creator_id);
-- --
-- Name: ix_system_dept_parent_id; Type: INDEX; Schema: public; Owner: tao -- Name: ix_system_dept_parent_id; Type: INDEX; Schema: public; Owner: tao
-- --
@@ -2990,6 +2960,13 @@ CREATE INDEX ix_system_menu_parent_id ON public.system_menu USING btree (parent_
CREATE INDEX ix_system_notice_creator_id ON public.system_notice USING btree (creator_id); CREATE INDEX ix_system_notice_creator_id ON public.system_notice USING btree (creator_id);
--
-- Name: ix_system_param_creator_id; Type: INDEX; Schema: public; Owner: tao
--
CREATE INDEX ix_system_param_creator_id ON public.system_param USING btree (creator_id);
-- --
-- Name: ix_system_position_creator_id; Type: INDEX; Schema: public; Owner: tao -- Name: ix_system_position_creator_id; Type: INDEX; Schema: public; Owner: tao
-- --
+20
View File
@@ -76,6 +76,26 @@ http {
proxy_pass http://172.18.52.77:8001; proxy_pass http://172.18.52.77:8001;
} }
# WebSocket代理配置 - 支持ws://和wss://
location /api/v1/ai/ws {
proxy_pass http://172.18.52.77:8001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket超时设置
proxy_read_timeout 86400;
proxy_send_timeout 86400;
# 禁用缓存
proxy_cache off;
proxy_buffering off;
}
error_page 500 502 503 504 /50x.html; error_page 500 502 503 504 /50x.html;
location = /50x.html { location = /50x.html {
root /usr/share/nginx/html; root /usr/share/nginx/html;
+2
View File
@@ -48,6 +48,8 @@ declare module 'vue' {
WdTabbarItem: typeof import('wot-design-uni/components/wd-tabbar-item/wd-tabbar-item.vue')['default'] WdTabbarItem: typeof import('wot-design-uni/components/wd-tabbar-item/wd-tabbar-item.vue')['default']
WdTag: typeof import('wot-design-uni/components/wd-tag/wd-tag.vue')['default'] WdTag: typeof import('wot-design-uni/components/wd-tag/wd-tag.vue')['default']
WdText: typeof import('wot-design-uni/components/wd-text/wd-text.vue')['default'] WdText: typeof import('wot-design-uni/components/wd-text/wd-text.vue')['default']
WdTextarea: typeof import('wot-design-uni/components/wd-textarea/wd-textarea.vue')['default']
WdToast: typeof import('wot-design-uni/components/wd-toast/wd-toast.vue')['default'] WdToast: typeof import('wot-design-uni/components/wd-toast/wd-toast.vue')['default']
WdUpload: typeof import('wot-design-uni/components/wd-upload/wd-upload.vue')['default']
} }
} }
+1
View File
@@ -159,5 +159,6 @@
} }
] ]
}, },
"__esModule": true,
"subPackages": [] "subPackages": []
} }
+3
View File
@@ -20,3 +20,6 @@ VITE_TIMEOUT=10000
# 资源管理根路径 # 资源管理根路径
VITE_RESOURCE_ROOT_PATH=/home/static VITE_RESOURCE_ROOT_PATH=/home/static
# WebSocket 端点(不配置则关闭)
VITE_APP_WS_ENDPOINT=ws://127.0.0.1:8001
+3
View File
@@ -18,3 +18,6 @@ VITE_TIMEOUT=10000
# 资源管理根路径 # 资源管理根路径
VITE_RESOURCE_ROOT_PATH=/home/static VITE_RESOURCE_ROOT_PATH=/home/static
# WebSocket 端点(不配置则关闭)
VITE_APP_WS_ENDPOINT=wss://service.fastapiadmin.com
+113 -4
View File
@@ -63,6 +63,59 @@ const JobAPI = {
data: params, data: params,
}); });
}, },
// 获取定时任务运行日志(实时状态)
getJobRunLog() {
return request<ApiResponse<JobRunLog[]>>({
url: `/monitor/job/log`,
method: "get",
});
},
// 获取定时任务日志详情
getJobLogDetail(id: number) {
return request<ApiResponse<JobLogDetail>>({
url: `/monitor/job/log/detail/${id}`,
method: "get",
});
},
// 查询定时任务日志列表
getJobLogList(query: JobLogPageQuery) {
return request<ApiResponse<PageResult<JobLogTable[]>>>({
url: `/monitor/job/log/list`,
method: "get",
params: query,
});
},
// 删除定时任务日志
deleteJobLog(ids: number[]) {
return request<ApiResponse>({
url: `/monitor/job/log/delete`,
method: "delete",
data: ids,
});
},
// 清空定时任务日志
clearJobLog() {
return request<ApiResponse>({
url: `/monitor/job/log/clear`,
method: "delete",
});
},
// 导出定时任务日志
exportJobLog(query: JobLogPageQuery) {
return request<Blob>({
url: `/monitor/job/log/export`,
method: "post",
data: query,
responseType: "blob",
});
},
}; };
export default JobAPI; export default JobAPI;
@@ -76,6 +129,14 @@ export interface JobPageQuery extends PageQuery {
end_time?: string; end_time?: string;
} }
export interface JobLogPageQuery extends PageQuery {
status?: boolean;
/** 开始时间 */
start_time?: string;
/** 结束时间 */
end_time?: string;
}
export interface JobOptionData { export interface JobOptionData {
id?: number; id?: number;
option?: number; //操作类型 1: 暂停 2: 恢复 3: 重启 option?: number; //操作类型 1: 暂停 2: 恢复 3: 重启
@@ -83,8 +144,8 @@ export interface JobOptionData {
export interface JobTable { export interface JobTable {
index?: number; index?: number;
id?: number; id: number;
name?: string; name: string;
func?: string; func?: string;
trigger?: string; trigger?: string;
args?: string; args?: string;
@@ -97,7 +158,6 @@ export interface JobTable {
start_date?: string; start_date?: string;
end_date?: string; end_date?: string;
status?: boolean; status?: boolean;
message?: string;
description?: string; description?: string;
created_at?: string; created_at?: string;
updated_at?: string; updated_at?: string;
@@ -119,6 +179,55 @@ export interface JobForm {
start_date?: string; start_date?: string;
end_date?: string; end_date?: string;
status?: boolean; status?: boolean;
message?: string;
description?: string; description?: string;
} }
// 定时任务运行日志接口(对应Scheduler实时状态)
export interface JobRunLog {
id: string;
name: string;
trigger: string;
executor: string;
func: string;
func_ref: string;
args: any[];
kwargs: any;
misfire_grace_time: number;
coalesce: boolean;
max_instances: number;
next_run_time: string;
state: string;
}
// 定时任务日志详情接口(对应数据库日志表)
export interface JobLogDetail {
id: number;
job_name: string;
job_group: string;
job_executor: string;
invoke_target: string;
job_args?: string;
job_kwargs?: string;
job_trigger?: string;
job_message?: string;
status: boolean;
exception_info?: string;
create_time: string;
}
// 定时任务日志列表接口(对应数据库日志表)
export interface JobLogTable {
index?: number;
id: number;
job_name: string;
job_group: string;
job_executor: string;
invoke_target: string;
job_args?: string;
job_kwargs?: string;
job_trigger?: string;
job_message?: string;
status: boolean;
exception_info?: string;
create_time: string;
}
+8 -8
View File
@@ -3,7 +3,7 @@ import request from "@/utils/request";
const ConfigAPI = { const ConfigAPI = {
uploadFile(body: any) { uploadFile(body: any) {
return request<ApiResponse<UploadFilePath>>({ return request<ApiResponse<UploadFilePath>>({
url: `/system/config/upload`, url: `/system/param/upload`,
method: "post", method: "post",
data: body, data: body,
headers: { "Content-Type": "multipart/form-data" }, headers: { "Content-Type": "multipart/form-data" },
@@ -12,14 +12,14 @@ const ConfigAPI = {
getInitConfig() { getInitConfig() {
return request<ApiResponse<ConfigTable[]>>({ return request<ApiResponse<ConfigTable[]>>({
url: `/system/config/info`, url: `/system/param/info`,
method: "get", method: "get",
}); });
}, },
getConfigList(query: ConfigPageQuery) { getConfigList(query: ConfigPageQuery) {
return request<ApiResponse<PageResult<ConfigTable[]>>>({ return request<ApiResponse<PageResult<ConfigTable[]>>>({
url: `/system/config/list`, url: `/system/param/list`,
method: "get", method: "get",
params: query, params: query,
}); });
@@ -27,14 +27,14 @@ const ConfigAPI = {
getConfigDetail(query: number) { getConfigDetail(query: number) {
return request<ApiResponse<ConfigTable>>({ return request<ApiResponse<ConfigTable>>({
url: `/system/config/detail/${query}`, url: `/system/param/detail/${query}`,
method: "get", method: "get",
}); });
}, },
createConfig(body: ConfigForm) { createConfig(body: ConfigForm) {
return request<ApiResponse>({ return request<ApiResponse>({
url: `/system/config/create`, url: `/system/param/create`,
method: "post", method: "post",
data: body, data: body,
}); });
@@ -42,7 +42,7 @@ const ConfigAPI = {
updateConfig(id: number, body: ConfigForm) { updateConfig(id: number, body: ConfigForm) {
return request<ApiResponse>({ return request<ApiResponse>({
url: `/system/config/update/${id}`, url: `/system/param/update/${id}`,
method: "put", method: "put",
data: body, data: body,
}); });
@@ -50,7 +50,7 @@ const ConfigAPI = {
deleteConfig(body: number[]) { deleteConfig(body: number[]) {
return request<ApiResponse>({ return request<ApiResponse>({
url: `/system/config/delete`, url: `/system/param/delete`,
method: "delete", method: "delete",
data: body, data: body,
}); });
@@ -58,7 +58,7 @@ const ConfigAPI = {
exportConfig(body: ConfigPageQuery) { exportConfig(body: ConfigPageQuery) {
return request<Blob>({ return request<Blob>({
url: `/system/config/export`, url: `/system/param/export`,
method: "post", method: "post",
data: body, data: body,
responseType: "blob", responseType: "blob",
+3
View File
@@ -22,6 +22,9 @@ interface ImportMetaEnv {
/** 资源管理根路径 */ /** 资源管理根路径 */
VITE_RESOURCE_ROOT_PATH: string; VITE_RESOURCE_ROOT_PATH: string;
/** ws 端点 */
VITE_APP_WS_ENDPOINT: string;
} }
interface ImportMeta { interface ImportMeta {
+20 -25
View File
@@ -5,7 +5,7 @@
<!-- 顶部导航栏 --> <!-- 顶部导航栏 -->
<div class="chat-navbar"> <div class="chat-navbar">
<div class="navbar-left"> <div class="navbar-left">
<h2>FVA智能助手</h2> <h2>FA智能助手</h2>
</div> </div>
<div class="navbar-right"> <div class="navbar-right">
<div class="connection-status"> <div class="connection-status">
@@ -17,9 +17,9 @@
<span class="status-text">{{ connectionStatusText }}</span> <span class="status-text">{{ connectionStatusText }}</span>
</div> </div>
<el-button <el-button
v-if="messages.length > 0"
text text
@click="clearCurrentChat" @click="clearCurrentChat"
v-if="messages.length > 0"
> >
<el-icon><Delete /></el-icon> <el-icon><Delete /></el-icon>
清空对话 清空对话
@@ -35,14 +35,14 @@
</div> </div>
<!-- 聊天消息区域 --> <!-- 聊天消息区域 -->
<div class="chat-messages" ref="messagesContainer"> <div ref="messagesContainer" class="chat-messages">
<!-- 欢迎界面 --> <!-- 欢迎界面 -->
<div v-if="messages.length === 0" class="welcome-screen"> <div v-if="messages.length === 0" class="welcome-screen">
<div class="welcome-content"> <div class="welcome-content">
<div class="ai-logo"> <div class="ai-logo">
<el-icon size="64"><ChatDotRound /></el-icon> <el-icon size="64"><ChatDotRound /></el-icon>
</div> </div>
<h1>FVA智能助手</h1> <h1>FA智能助手</h1>
<p class="welcome-subtitle">我是您的专属AI助手,可以帮您回答问题、处理任务和进行智能对话</p> <p class="welcome-subtitle">我是您的专属AI助手,可以帮您回答问题、处理任务和进行智能对话</p>
<div class="example-prompts"> <div class="example-prompts">
@@ -50,17 +50,17 @@
<h4>系统介绍</h4> <h4>系统介绍</h4>
<p>请介绍一下FastAPI Vue3 Admin系统</p> <p>请介绍一下FastAPI Vue3 Admin系统</p>
</div> </div>
<div class="prompt-card" @click="setPrompt('如何在FVA系统中创建新的模块?')"> <div class="prompt-card" @click="setPrompt('如何在系统中创建新的模块?')">
<h4>开发指导</h4> <h4>开发指导</h4>
<p>如何在FVA系统中创建新的模块?</p> <p>如何在系统中创建新的模块?</p>
</div> </div>
<div class="prompt-card" @click="setPrompt('FVA系统的权限管理是如何工作的?')"> <div class="prompt-card" @click="setPrompt('系统的权限管理是如何工作的?')">
<h4>权限管理</h4> <h4>权限管理</h4>
<p>FVA系统的权限管理是如何工作的?</p> <p>FA系统的权限管理是如何工作的?</p>
</div> </div>
<div class="prompt-card" @click="setPrompt('如何优化FVA系统的性能?')"> <div class="prompt-card" @click="setPrompt('如何优化FA系统的性能?')">
<h4>性能优化</h4> <h4>性能优化</h4>
<p>如何优化FVA系统的性能?</p> <p>如何优化系统的性能?</p>
</div> </div>
</div> </div>
</div> </div>
@@ -84,7 +84,7 @@
<div class="message-content"> <div class="message-content">
<div class="message-header"> <div class="message-header">
<strong class="sender-name"> <strong class="sender-name">
{{ message.type === 'user' ? 'You' : 'FVA助手' }} {{ message.type === 'user' ? 'You' : 'FA助手' }}
</strong> </strong>
</div> </div>
<div class="message-body"> <div class="message-body">
@@ -97,11 +97,11 @@
</div> </div>
<div v-else class="message-text" v-html="formatMessage(message.content)"></div> <div v-else class="message-text" v-html="formatMessage(message.content)"></div>
</div> </div>
<div class="message-actions" v-if="!message.loading"> <div v-if="!message.loading" class="message-actions">
<el-button text size="small" @click="copyMessage(message.content)"> <el-button text size="small" @click="copyMessage(message.content)">
<el-icon><CopyDocument /></el-icon> <el-icon><CopyDocument /></el-icon>
</el-button> </el-button>
<el-button text size="small" v-if="message.type === 'assistant'"> <el-button v-if="message.type === 'assistant'" text size="small">
<el-icon><RefreshLeft /></el-icon> <el-icon><RefreshLeft /></el-icon>
</el-button> </el-button>
</div> </div>
@@ -115,8 +115,8 @@
:title="error" :title="error"
type="error" type="error"
:closable="true" :closable="true"
@close="error = ''"
show-icon show-icon
@close="error = ''"
/> />
</div> </div>
</div> </div>
@@ -127,23 +127,23 @@
<div class="input-container"> <div class="input-container">
<el-input <el-input
v-model="inputMessage" v-model="inputMessage"
:placeholder="isConnected ? '向FVA助手发送消息...' : '请先连接到服务器'" :placeholder="isConnected ? '向FA助手发送消息...' : '请先连接到服务器'"
:disabled="!isConnected || sending" :disabled="!isConnected || sending"
type="textarea" type="textarea"
:rows="1" :rows="1"
:autosize="{ minRows: 1, maxRows: 6 }" :autosize="{ minRows: 1, maxRows: 6 }"
resize="none"
class="message-input"
@keydown.enter.exact.prevent="sendMessage" @keydown.enter.exact.prevent="sendMessage"
@keydown.shift.enter.exact="inputMessage += '\n'" @keydown.shift.enter.exact="inputMessage += '\n'"
class="message-input"
resize="none"
/> />
<el-button <el-button
:disabled="!inputMessage.trim() || !isConnected || sending" :disabled="!inputMessage.trim() || !isConnected || sending"
:loading="sending" :loading="sending"
@click="sendMessage"
class="send-button" class="send-button"
type="primary" type="primary"
circle circle
@click="sendMessage"
> >
<el-icon><Promotion /></el-icon> <el-icon><Promotion /></el-icon>
</el-button> </el-button>
@@ -160,7 +160,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive, onMounted, onUnmounted, nextTick, computed } from 'vue' import { ref, onMounted, onUnmounted, nextTick, computed } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { import {
ChatDotRound, ChatDotRound,
@@ -195,7 +195,7 @@ const messagesContainer = ref<HTMLElement>()
// WebSocket 连接 // WebSocket 连接
let ws: WebSocket | null = null let ws: WebSocket | null = null
const WS_URL = 'ws://service.fastapiadmin.com/api/v1/ai/mcp/ws/chat' const WS_URL = import.meta.env.VITE_APP_WS_ENDPOINT + '/api/v1/ai/ws/mcp/chat'
// 计算属性 // 计算属性
const connectionStatusText = computed(() => { const connectionStatusText = computed(() => {
@@ -241,11 +241,6 @@ const connectWebSocket = () => {
console.log('WebSocket 连接已关闭', event.code, event.reason) console.log('WebSocket 连接已关闭', event.code, event.reason)
isConnected.value = false isConnected.value = false
connectionStatus.value = 'disconnected' connectionStatus.value = 'disconnected'
if (event.code !== 1000) {
error.value = '连接意外断开,请检查网络连接'
ElMessage.error('连接断开')
}
} }
ws.onerror = (error) => { ws.onerror = (error) => {
+186 -96
View File
@@ -36,61 +36,94 @@
<!-- 应用网格 --> <!-- 应用网格 -->
<div v-loading="loading" class="app-grid"> <div v-loading="loading" class="app-grid">
<div <el-card
v-for="app in applicationList" v-for="app in applicationList"
:key="app.id" :key="app.id"
class="app-card" class="app-card-el"
> :body-style="{ padding: '12px' }"
<div class="app-card-header"> shadow="hover"
<el-avatar :size="48" :src="app.icon_url" class="app-avatar"> >
<el-icon size="24"><Monitor /></el-icon> <template #header>
</el-avatar> <div class="app-card-header-el">
<div class="app-info"> <div class="app-info-header">
<h3 class="app-name">{{ app.name }}</h3> <el-avatar
<el-tag :type="app.status ? 'success' : 'danger'" size="small"> :size="40"
{{ app.status ? '启用' : '停用' }} :src="app.icon_url"
</el-tag> class="app-avatar-el"
</div> >
<el-dropdown trigger="click" @command="(command) => handleAppAction(command, app)"> <el-icon size="20"><Monitor /></el-icon>
<el-button type="text" icon="MoreFilled" size="small" /> </el-avatar>
<template #dropdown> <div class="app-title-section">
<el-dropdown-menu> <h3 class="app-name-el">{{ app.name }}</h3>
<el-dropdown-item command="edit" icon="Edit">编辑</el-dropdown-item> <el-tag
<el-dropdown-item command="delete" icon="Delete" divided>删除</el-dropdown-item> :type="app.status ? 'success' : 'danger'"
</el-dropdown-menu> size="small"
</template> class="app-status-tag"
</el-dropdown> >
</div> {{ app.status ? '启用' : '停用' }}
</el-tag>
</div>
</div>
<el-dropdown
trigger="click"
@command="(command) => handleAppAction(command, app)"
>
<el-button
type="text"
icon="MoreFilled"
size="small"
class="app-menu-btn"
/>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item command="edit" icon="Edit">编辑</el-dropdown-item>
<el-dropdown-item command="delete" icon="Delete" divided>删除</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</template>
<div class="app-card-body"> <div class="app-card-content">
<p class="app-desc">{{ app.description || '暂无描述' }}</p> <p class="app-description">{{ app.description || '暂无描述' }}</p>
<div class="app-meta">
<span class="app-creator">{{ app.creator?.name || '未知' }}</span>
<span class="app-time">{{ formatTime(app.created_at) }}</span>
</div>
</div>
<div class="app-card-footer"> <div class="app-meta-info">
<el-button <div class="app-meta-row">
type="primary" <div class="meta-item left">
icon="Link" <el-icon size="14" class="meta-icon"><User /></el-icon>
size="small" <span>{{ app.creator?.name || '未知' }}</span>
@click="openAppExternal(app.access_url)" </div>
:disabled="!app.status" <div class="meta-item right">
> <el-icon size="14" class="meta-icon"><Clock /></el-icon>
外部打开 <span>{{ formatTime(app.created_at) }}</span>
</el-button> </div>
<el-button </div>
type="default" </div>
icon="View" </div>
size="small"
@click="openAppInternal(app)" <div class="app-card-actions">
:disabled="!app.status" <el-button
> type="primary"
内部打开 icon="Link"
</el-button> size="small"
</div> :disabled="!app.status"
</div> class="action-btn"
@click="openAppExternal(app.access_url)"
>
外部打开
</el-button>
<el-button
type="default"
icon="View"
size="small"
:disabled="!app.status"
class="action-btn"
@click="openAppInternal(app)"
>
内部打开
</el-button>
</div>
</el-card>
</div> </div>
<!-- 空状态 --> <!-- 空状态 -->
@@ -180,6 +213,7 @@ import { useAppStore } from "@/store/modules/app.store";
import { useTagsViewStore } from "@/store"; import { useTagsViewStore } from "@/store";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { DeviceEnum } from "@/enums/settings/device.enum"; import { DeviceEnum } from "@/enums/settings/device.enum";
import { Monitor, User, Clock } from '@element-plus/icons-vue';
import ApplicationAPI, { type ApplicationForm, type ApplicationInfo, type ApplicationPageQuery } from "@/api/application/myapp"; import ApplicationAPI, { type ApplicationForm, type ApplicationInfo, type ApplicationPageQuery } from "@/api/application/myapp";
import { formatToDateTime } from "@/utils/dateUtil"; import { formatToDateTime } from "@/utils/dateUtil";
@@ -460,66 +494,82 @@ onMounted(() => {
} }
.app-grid { .app-grid {
display: grid; display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
gap: 10px; gap: 16px;
padding: 20px 0; padding: 20px 0;
flex: 1; flex: 1;
overflow-y: auto; }
}
.app-card { .app-card-el {
border: 1px solid var(--el-border-color); border: 1px solid var(--el-border-color-lighter);
border-radius: 6px; border-radius: 6px;
padding: 10px; transition: all 0.3s ease;
background: var(--el-bg-color); min-height: 180px;
transition: all 0.2s ease; width: 100%;
display: flex;
flex-direction: column;
&:hover { &:hover {
border-color: var(--el-color-primary); transform: translateY(-1px);
box-shadow: var(--el-box-shadow-light); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
} }
} }
.app-card-header { .app-card-header-el {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 8px; justify-content: space-between;
margin-bottom: 8px;
} }
.app-avatar { .app-info-header {
flex-shrink: 0; display: flex;
} align-items: center;
gap: 12px;
.app-info {
flex: 1; flex: 1;
min-width: 0; min-width: 0;
} }
.app-name { .app-avatar-el {
font-size: 13px; flex-shrink: 0;
}
.app-title-section {
flex: 1;
min-width: 0;
}
.app-name-el {
font-size: 16px;
font-weight: 600; font-weight: 600;
color: var(--el-text-color-primary); color: var(--el-text-color-primary);
margin: 0 0 3px 0; margin: 0 0 4px 0;
line-height: 1.3; line-height: 1.3;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.app-card-body { .app-status-tag {
flex: 1; margin-top: 2px;
margin-bottom: 8px;
} }
.app-desc { .app-menu-btn {
font-size: 11px; padding: 4px;
color: var(--el-text-color-secondary);
&:hover {
color: var(--el-color-primary);
}
}
.app-card-content {
margin: 12px 0;
}
.app-description {
font-size: 14px;
color: var(--el-text-color-regular); color: var(--el-text-color-regular);
margin: 0 0 4px 0;
line-height: 1.3; line-height: 1.5;
display: -webkit-box; display: -webkit-box;
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
line-clamp: 2; line-clamp: 2;
@@ -527,23 +577,63 @@ onMounted(() => {
overflow: hidden; overflow: hidden;
} }
.app-meta { .app-meta-info {
display: flex; display: flex;
align-items: center; flex-direction: column;
font-size: 10px; gap: 8px;
font-size: 13px;
color: var(--el-text-color-secondary); color: var(--el-text-color-secondary);
}
.app-meta-row {
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px; gap: 12px;
} }
.app-card-footer { .meta-item {
display: flex; display: flex;
gap: 4px; align-items: center;
gap: 6px;
white-space: nowrap;
overflow: hidden;
}
.el-button { .meta-item.left {
font-size: 11px; flex: 1;
padding: 3px 6px; justify-content: flex-start;
min-width: 0;
}
.meta-item.right {
flex: 1;
justify-content: flex-end;
text-align: right;
min-width: 0;
}
.meta-icon {
color: var(--el-text-color-placeholder);
flex-shrink: 0;
}
.meta-item span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
max-width: 100%;
}
.app-card-actions {
display: flex;
gap: 8px;
margin-top: 12px;
.action-btn {
flex: 1; flex: 1;
width: 40%; font-size: 12px;
padding: 4px 8px;
} }
} }
@@ -80,8 +80,8 @@
<pagination <pagination
v-if="total > 0" v-if="total > 0"
v-model:total="total" v-model:total="total"
v-model:page="queryParams.pageNum" v-model:page="queryParams.page_no"
v-model:limit="queryParams.pageSize" v-model:limit="queryParams.page_size"
@pagination="handleQuery" @pagination="handleQuery"
/> />
</el-card> </el-card>
@@ -429,8 +429,8 @@ import GeneratorAPI, {
FieldConfig, FieldConfig,
} from "@/api/codegen.api"; } from "@/api/codegen.api";
import DictAPI from "@/api/system/dict.api"; import DictAPI from "@/api/system/dict";
import MenuAPI from "@/api/system/menu.api"; import MenuAPI from "@/api/system/menu";
interface TreeNode { interface TreeNode {
label: string; label: string;
@@ -441,8 +441,8 @@ const treeData = ref<TreeNode[]>([]);
const queryFormRef = ref(); const queryFormRef = ref();
const queryParams = reactive<TablePageQuery>({ const queryParams = reactive<TablePageQuery>({
pageNum: 1, page_no: 1,
pageSize: 10, page_size: 10,
}); });
const loading = ref(false); const loading = ref(false);
@@ -633,7 +633,7 @@ function handleQuery() {
loading.value = true; loading.value = true;
GeneratorAPI.getTablePage(queryParams) GeneratorAPI.getTablePage(queryParams)
.then((data) => { .then((data) => {
pageData.value = data.list; pageData.value = data.items;
total.value = data.total; total.value = data.total;
}) })
.finally(() => { .finally(() => {
@@ -644,7 +644,7 @@ function handleQuery() {
/** 重置查询 */ /** 重置查询 */
function handleResetQuery() { function handleResetQuery() {
queryFormRef.value.resetFields(); queryFormRef.value.resetFields();
queryParams.pageNum = 1; queryParams.page_no = 1;
handleQuery(); handleQuery();
} }
@@ -653,11 +653,17 @@ async function handleOpenDialog(tableName: string) {
dialog.visible = true; dialog.visible = true;
active.value = 0; active.value = 0;
menuOptions.value = await MenuAPI.getOptions(true); menuOptions.value = await MenuAPI.getMenuList({
page_no: 1,
page_size: 1000,
});
currentTableName.value = tableName; currentTableName.value = tableName;
// 获取字典数据 // 获取字典数据
DictAPI.getList().then((data) => { DictAPI.getDictTypeList({
page_no: 1,
page_size: 1000,
}).then((data) => {
dictOptions.value = data; dictOptions.value = data;
loading.value = true; loading.value = true;
GeneratorAPI.getGenConfig(tableName) GeneratorAPI.getGenConfig(tableName)
@@ -1,32 +1,373 @@
<!-- 字典数据 --> <!-- 任务日志抽屉 -->
<template> <template>
<el-drawer v-model="drawerVisible" :title="'【' + props.dictLabel + '】日志数据'" :size="drawerSize"> <el-drawer v-model="drawerVisible" :title="'【' + props.jobName + '】任务日志'" :size="drawerSize">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<div class="search-container"> <div class="search-container">
<!-- 开发中 --> <el-form ref="queryFormRef" :model="queryFormData" :inline="true" label-suffix=":">
<el-form-item prop="status" label="执行状态">
<el-select v-model="queryFormData.status" placeholder="请选择执行状态" style="width: 167.5px" clearable>
<el-option :value="true" label="成功" />
<el-option :value="false" label="失败" />
</el-select>
</el-form-item>
<!-- 时间范围,收起状态下隐藏 -->
<el-form-item v-if="isExpand" prop="start_time" label="执行时间">
<DatePicker
v-model="dateRange"
@update:model-value="handleDateRangeChange"
/>
</el-form-item>
<!-- 查询、重置、展开/收起按钮 -->
<el-form-item class="search-buttons">
<el-button type="primary" icon="search" @click="handleQuery">查询</el-button>
<el-button icon="refresh" @click="handleResetQuery">重置</el-button>
<!-- 展开/收起 -->
<template v-if="isExpandable">
<el-link class="ml-3" type="primary" underline="never" @click="isExpand = !isExpand">
{{ isExpand ? "收起" : "展开" }}
<el-icon>
<template v-if="isExpand">
<ArrowUp />
</template>
<template v-else>
<ArrowDown />
</template>
</el-icon>
</el-link>
</template>
</el-form-item>
</el-form>
</div> </div>
<!-- 内容区域 -->
<el-card shadow="hover" class="data-table">
<template #header>
<div class="card-header">
<span>
<el-tooltip content="任务执行日志记录每次定时任务的执行情况,包括成功、失败状态及错误信息。">
<QuestionFilled class="w-4 h-4 mx-1" />
</el-tooltip>
任务执行日志列表
</span>
</div>
</template>
<!-- 功能区域 -->
<div class="data-table__toolbar">
<div class="data-table__toolbar--actions">
<el-button type="danger" icon="delete" :disabled="selectIds.length === 0" @click="handleDelete(selectIds)">批量删除</el-button>
<el-button type="warning" icon="delete" @click="handleClearLog">清空日志</el-button>
</div>
<div class="data-table__toolbar--tools">
<el-tooltip content="导出">
<el-button type="warning" icon="download" circle @click="handleExport" />
</el-tooltip>
<el-tooltip content="刷新">
<el-button type="default" icon="refresh" circle @click="handleRefresh" />
</el-tooltip>
</div>
</div>
<!-- 表格区域:任务日志列表 -->
<el-table ref="dataTableRef" v-loading="loading" :data="pageTableData" highlight-current-row class="data-table__content" height="460" border stripe @selection-change="handleSelectionChange">
<template #empty>
<el-empty :image-size="80" description="暂无数据" />
</template>
<el-table-column type="selection" min-width="55" align="center" />
<el-table-column type="index" fixed label="序号" min-width="60">
<template #default="scope">
{{ (queryFormData.page_no - 1) * queryFormData.page_size + scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column label="任务名称" prop="job_name" min-width="150" show-overflow-tooltip />
<el-table-column label="任务组名" prop="job_group" min-width="120" show-overflow-tooltip />
<el-table-column label="执行状态" prop="status" min-width="100" show-overflow-tooltip>
<template #default="scope">
<el-tag :type="scope.row.status === true ? 'success' : 'danger'">
{{ scope.row.status ? "成功" : "失败" }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="执行信息" prop="job_message" min-width="200" show-overflow-tooltip />
<el-table-column label="异常信息" prop="exception_info" min-width="250" show-overflow-tooltip />
<el-table-column label="执行器" prop="job_executor" min-width="120" show-overflow-tooltip />
<el-table-column label="调用目标" prop="invoke_target" min-width="200" show-overflow-tooltip />
<el-table-column label="位置参数" prop="job_args" min-width="150" show-overflow-tooltip />
<el-table-column label="关键字参数" prop="job_kwargs" min-width="150" show-overflow-tooltip />
<el-table-column label="触发器" prop="job_trigger" min-width="120" show-overflow-tooltip />
<el-table-column label="创建时间" prop="create_time" min-width="180" sortable />
<el-table-column fixed="right" label="操作" align="center" min-width="120">
<template #default="scope">
<el-button type="info" size="small" link icon="document" @click="handleOpenDialog('detail', scope.row.id)">详情</el-button>
<el-button type="danger" size="small" link icon="delete" @click="handleDelete([scope.row.id])">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页区域 -->
<template #footer>
<pagination v-model:total="total" v-model:page="queryFormData.page_no" v-model:limit="queryFormData.page_size" @pagination="loadingData" />
</template>
</el-card>
<!-- 弹窗区域 -->
<el-dialog v-model="dialogVisible.visible" :title="dialogVisible.title" @close="handleCloseDialog">
<!-- 详情 -->
<template v-if="dialogVisible.type === 'detail'">
<el-descriptions :column="2" border>
<el-descriptions-item label="日志ID" :span="2">{{ detailFormData.id }}</el-descriptions-item>
<el-descriptions-item label="任务名称" :span="2">{{ detailFormData.job_name }}</el-descriptions-item>
<el-descriptions-item label="任务组名" :span="2">{{ detailFormData.job_group }}</el-descriptions-item>
<el-descriptions-item label="执行状态" :span="2">
<el-tag :type="detailFormData.status === true ? 'success' : 'danger'">
{{ detailFormData.status ? "成功" : "失败" }}
</el-tag>
</el-descriptions-item>
<el-descriptions-item label="执行信息" :span="2">{{ detailFormData.job_message || '-' }}</el-descriptions-item>
<el-descriptions-item label="异常信息" :span="2">{{ detailFormData.exception_info || '-' }}</el-descriptions-item>
<el-descriptions-item label="执行器" :span="2">{{ detailFormData.job_executor || '-' }}</el-descriptions-item>
<el-descriptions-item label="调用目标" :span="2">{{ detailFormData.invoke_target || '-' }}</el-descriptions-item>
<el-descriptions-item label="位置参数" :span="2">{{ detailFormData.job_args || '-' }}</el-descriptions-item>
<el-descriptions-item label="关键字参数" :span="2">{{ detailFormData.job_kwargs || '-' }}</el-descriptions-item>
<el-descriptions-item label="触发器" :span="2">{{ detailFormData.job_trigger || '-' }}</el-descriptions-item>
<el-descriptions-item label="创建时间" :span="2">{{ detailFormData.create_time }}</el-descriptions-item>
</el-descriptions>
</template>
</el-dialog>
</el-drawer> </el-drawer>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
// 处理可以参考字典数据抽屉 // 添加 props 来接收 jobId 和 jobName
// 添加 props 来接收 dictType
const props = defineProps({ const props = defineProps({
dictType: { jobId: {
type: String, type: Number,
required: true required: true
}, },
dictLabel: { jobName: {
type: String, type: String,
required: true required: true
} }
}) })
import JobAPI, { JobLogPageQuery, JobLogTable } from "@/api/monitor/job";
import { ElMessageBox } from "element-plus";
import { useAppStore } from "@/store/modules/app.store"; import { useAppStore } from "@/store/modules/app.store";
import { DeviceEnum } from "@/enums/settings/device.enum"; import { DeviceEnum } from "@/enums/settings/device.enum";
const appStore = useAppStore(); const appStore = useAppStore();
const drawerSize = computed(() => (appStore.device === DeviceEnum.DESKTOP ? "80%" : "60%")); const drawerSize = computed(() => (appStore.device === DeviceEnum.DESKTOP ? "80%" : "60%"));
const queryFormRef = ref();
const dataTableRef = ref();
const total = ref(0);
const selectIds = ref<number[]>([]);
const loading = ref(false);
const isExpand = ref(false);
const isExpandable = ref(true);
const drawerVisible = ref<boolean>(false); const drawerVisible = ref<boolean>(false);
// 分页表单
const pageTableData = ref<JobLogTable[]>([]);
// 详情表单
const detailFormData = ref<JobLogTable>({} as JobLogTable);
// 分页查询参数
const queryFormData = reactive<JobLogPageQuery>({
page_no: 1,
page_size: 10,
status: undefined,
start_time: undefined,
end_time: undefined,
});
// 弹窗状态
const dialogVisible = reactive({
title: "",
visible: false,
type: 'detail',
});
// 日期范围临时变量
const dateRange = ref<[Date, Date] | []>([]);
// 处理日期范围变化
function handleDateRangeChange(range: [Date, Date]) {
dateRange.value = range;
if (range && range.length === 2) {
queryFormData.start_time = range[0].toISOString();
queryFormData.end_time = range[1].toISOString();
} else {
queryFormData.start_time = undefined;
queryFormData.end_time = undefined;
}
}
// 列表刷新
async function handleRefresh () {
await loadingData();
};
// 加载表格数据
async function loadingData() {
loading.value = true;
try {
// 调用任务日志列表接口
const response = await JobAPI.getJobLogList(queryFormData);
pageTableData.value = response.data.data.items;
total.value = response.data.data.total;
}
catch (error: any) {
console.error(error);
}
finally {
loading.value = false;
}
}
// 查询(重置页码后获取数据)
async function handleQuery() {
queryFormData.page_no = 1;
loadingData();
}
// 重置查询
async function handleResetQuery() {
queryFormRef.value.resetFields();
queryFormData.page_no = 1;
queryFormData.status = undefined;
queryFormData.start_time = undefined;
queryFormData.end_time = undefined;
dateRange.value = [];
loadingData();
}
// 行复选框选中项变化
async function handleSelectionChange(selection: any) {
selectIds.value = selection.map((item: any) => item.id);
}
// 关闭弹窗
async function handleCloseDialog() {
dialogVisible.visible = false;
}
// 打开详情弹窗
async function handleOpenDialog(type: 'detail', id?: number) {
dialogVisible.type = type;
if (id) {
const response = await JobAPI.getJobLogDetail(id);
dialogVisible.title = "任务日志详情";
Object.assign(detailFormData.value, response.data.data);
}
dialogVisible.visible = true;
}
// 删除、批量删除
async function handleDelete(ids: number[]) {
ElMessageBox.confirm("确认删除该任务日志?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(async () => {
try {
loading.value = true;
await JobAPI.deleteJobLog(ids);
handleResetQuery();
} catch (error: any) {
console.error(error);
} finally {
loading.value = false;
}
}).catch(() => {
ElMessageBox.close();
});
}
// 清空日志
async function handleClearLog() {
ElMessageBox.confirm("确认清空所有任务日志?此操作不可恢复!", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(async () => {
try {
loading.value = true;
await JobAPI.clearJobLog();
handleResetQuery();
} catch (error: any) {
console.error(error);
} finally {
loading.value = false;
}
}).catch(() => {
ElMessageBox.close();
});
}
// 导出
async function handleExport() {
ElMessageBox.confirm('是否确认导出当前任务日志?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
let downloadUrl = '';
try {
loading.value = true;
const response = await JobAPI.exportJobLog(queryFormData);
const fileData = response.data;
const fileName = decodeURI(response.headers["content-disposition"].split(";")[1].split("=")[1]);
const fileType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";
const blob = new Blob([fileData], { type: fileType });
downloadUrl = window.URL.createObjectURL(blob);
const downloadLink = document.createElement("a");
downloadLink.href = downloadUrl;
downloadLink.download = fileName;
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
} catch (error: any) {
console.error('导出失败:', error);
} finally {
if (downloadUrl) {
window.URL.revokeObjectURL(downloadUrl);
}
loading.value = false;
}
}).catch(() => {
ElMessageBox.close();
});
}
// 打开抽屉
function openDrawer() {
drawerVisible.value = true;
// 重置查询条件并加载数据
handleResetQuery();
}
// 关闭抽屉
function closeDrawer() {
drawerVisible.value = false;
}
// 暴露方法给父组件
defineExpose({
openDrawer,
closeDrawer
});
onMounted(() => {
// 抽屉打开时会自动加载数据
});
</script> </script>
<style lang="scss" scoped></style>
+32 -21
View File
@@ -186,15 +186,15 @@
sortable sortable
/> />
<el-table-column fixed="right" label="操作" min-width="240"> <el-table-column fixed="right" label="操作" min-width="300">
<template #default="scope"> <template #default="scope">
<div class="flex"> <div class="flex">
<el-button <el-button
type="info" type="warning"
size="small" size="small"
link link
icon="document" icon="document"
@click="handleOpenDialog('log', scope.row.id)" @click="handleOpenLogDrawer(scope.row.id, scope.row.name)"
> >
日志 日志
</el-button> </el-button>
@@ -315,9 +315,6 @@
<el-descriptions-item label="结束时间" :span="2">{{ <el-descriptions-item label="结束时间" :span="2">{{
detailFormData.end_date detailFormData.end_date
}}</el-descriptions-item> }}</el-descriptions-item>
<el-descriptions-item label="日志信息" :span="2">{{
detailFormData.message
}}</el-descriptions-item>
<el-descriptions-item label="创建人" :span="2">{{ <el-descriptions-item label="创建人" :span="2">{{
detailFormData.creator?.name detailFormData.creator?.name
}}</el-descriptions-item> }}</el-descriptions-item>
@@ -351,7 +348,8 @@
</el-form-item> </el-form-item>
<el-form-item label="任务函数" prop="func" style="width: 40%"> <el-form-item label="任务函数" prop="func" style="width: 40%">
<el-select v-model="formData.func" placeholder="请选择任务函数"> <el-select v-model="formData.func" placeholder="请选择任务函数">
<el-option v-for="item in dictStore.getDictArray('sys_job_function')" <el-option
v-for="item in dictStore.getDictArray('sys_job_function')"
:key="item.dict_value" :key="item.dict_value"
:label="item.dict_label" :label="item.dict_label"
:value="item.dict_value" :value="item.dict_value"
@@ -360,7 +358,8 @@
</el-form-item> </el-form-item>
<el-form-item label="存储器" prop="jobstore" style="width: 40%"> <el-form-item label="存储器" prop="jobstore" style="width: 40%">
<el-select v-model="formData.jobstore" placeholder="请选择存储器"> <el-select v-model="formData.jobstore" placeholder="请选择存储器">
<el-option v-for="item in dictStore.getDictArray('sys_job_store')" <el-option
v-for="item in dictStore.getDictArray('sys_job_store')"
:key="item.dict_value" :key="item.dict_value"
:label="item.dict_label" :label="item.dict_label"
:value="item.dict_value" :value="item.dict_value"
@@ -369,7 +368,8 @@
</el-form-item> </el-form-item>
<el-form-item label="执行器" prop="executor" style="width: 40%"> <el-form-item label="执行器" prop="executor" style="width: 40%">
<el-select v-model="formData.executor" placeholder="请选择执行器"> <el-select v-model="formData.executor" placeholder="请选择执行器">
<el-option v-for="item in dictStore.getDictArray('sys_job_executor')" <el-option
v-for="item in dictStore.getDictArray('sys_job_executor')"
:key="item.dict_value" :key="item.dict_value"
:label="item.dict_label" :label="item.dict_label"
:value="item.dict_value" :value="item.dict_value"
@@ -410,7 +410,8 @@
</el-form-item> </el-form-item>
<el-form-item label="触发器" prop="trigger" style="width: 40%"> <el-form-item label="触发器" prop="trigger" style="width: 40%">
<el-select v-model="formData.trigger" placeholder="请选择触发器"> <el-select v-model="formData.trigger" placeholder="请选择触发器">
<el-option v-for="item in dictStore.getDictArray('sys_job_trigger')" <el-option
v-for="item in dictStore.getDictArray('sys_job_trigger')"
:key="item.dict_value" :key="item.dict_value"
:label="item.dict_label" :label="item.dict_label"
:value="item.dict_value" :value="item.dict_value"
@@ -458,9 +459,9 @@
</template> </template>
<IntervalTab <IntervalTab
ref="intervalTabRef" ref="intervalTabRef"
:cron-value="formData.trigger_args"
@confirm="handleIntervalConfirm" @confirm="handleIntervalConfirm"
@cancel="openIntervalTab = false" @cancel="openIntervalTab = false"
:cron-value="formData.trigger_args"
/> />
</el-popover> </el-popover>
</el-form-item> </el-form-item>
@@ -493,10 +494,10 @@
/> />
</template> </template>
<vue3CronPlus <vue3CronPlus
i18n="cn"
max-height="500px"
@change="handlechangeCron" @change="handlechangeCron"
@close="openCron = false" @close="openCron = false"
max-height="500px"
i18n="cn"
></vue3CronPlus> ></vue3CronPlus>
</el-popover> </el-popover>
</el-form-item> </el-form-item>
@@ -566,6 +567,9 @@
</template> </template>
</el-dialog> </el-dialog>
</div> </div>
<JobLogDrawer v-if="drawerVisible" v-model="drawerVisible" :job-id="currentJobId" :job-name="currentJobName" />
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
@@ -579,6 +583,7 @@ import IntervalTab from "@/components/IntervalTab/index.vue";
import { useDictStore } from "@/store/index"; import { useDictStore } from "@/store/index";
import { vue3CronPlus } from "vue3-cron-plus"; import { vue3CronPlus } from "vue3-cron-plus";
import "vue3-cron-plus/dist/index.css"; // 引入样式 import "vue3-cron-plus/dist/index.css"; // 引入样式
import JobLogDrawer from "@/views/monitor/job/components/JobLogDrawer.vue"
const dictStore = useDictStore(); const dictStore = useDictStore();
@@ -600,7 +605,7 @@ const intervalTabRef = ref();
const pageTableData = ref<JobTable[]>([]); const pageTableData = ref<JobTable[]>([]);
// 详情表单 // 详情表单
const detailFormData = ref<JobTable>({}); const detailFormData = ref<JobTable>({} as JobTable);
// 分页查询参数 // 分页查询参数
const queryFormData = reactive<JobPageQuery>({ const queryFormData = reactive<JobPageQuery>({
@@ -628,7 +633,6 @@ const formData = reactive<JobForm>({
start_date: undefined, start_date: undefined,
end_date: undefined, end_date: undefined,
status: undefined, status: undefined,
message: undefined,
description: undefined, description: undefined,
}); });
@@ -639,6 +643,9 @@ const dialogVisible = reactive({
type: "create" as "create" | "update" | "detail" | "log", type: "create" as "create" | "update" | "detail" | "log",
}); });
// 抽屉显隐
const drawerVisible = ref(false);
// 表单验证规则 // 表单验证规则
const rules = reactive({ const rules = reactive({
name: [{ required: true, message: "请输入任务名称", trigger: "blur" }], name: [{ required: true, message: "请输入任务名称", trigger: "blur" }],
@@ -713,7 +720,6 @@ const initialFormData: JobForm = {
start_date: undefined, start_date: undefined,
end_date: undefined, end_date: undefined,
status: undefined, status: undefined,
message: undefined,
description: undefined, description: undefined,
} }
@@ -740,7 +746,7 @@ async function handleCloseDialog() {
// 打开弹窗 // 打开弹窗
async function handleOpenDialog( async function handleOpenDialog(
type: "create" | "update" | "detail" | "log", type: "create" | "update" | "detail",
id?: number id?: number
) { ) {
dialogVisible.type = type; dialogVisible.type = type;
@@ -752,10 +758,6 @@ async function handleOpenDialog(
} else if (type === "update") { } else if (type === "update") {
dialogVisible.title = "修改任务"; dialogVisible.title = "修改任务";
Object.assign(formData, response.data.data); Object.assign(formData, response.data.data);
} else if (type === "log") {
// 处理可以参考字典数据
dialogVisible.title = "任务日志";
ElMessage.success("开发中...");
} }
} else { } else {
dialogVisible.title = "新增任务"; dialogVisible.title = "新增任务";
@@ -911,6 +913,15 @@ const handleOption = (id: number, option: number) => {
}); });
}; };
const currentJobId = ref<number>(0);
const currentJobName = ref<string>("");
function handleOpenLogDrawer(jobId: number, jobName: string) {
currentJobId.value = jobId;
currentJobName.value = jobName;
drawerVisible.value = true;
}
onMounted(async () => { onMounted(async () => {
// 加载字典数据 // 加载字典数据
await dictStore.getDict(['sys_job_function','sys_job_executor','sys_job_store', 'sys_job_trigger']); await dictStore.getDict(['sys_job_function','sys_job_executor','sys_job_store', 'sys_job_trigger']);
@@ -198,7 +198,7 @@
<el-input-number v-model="formData.dict_sort" controls-position="right" :min="1" /> <el-input-number v-model="formData.dict_sort" controls-position="right" :min="1" />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-switch v-model="formData.status" inline-prompt :active-icon="Check" :inactive-icon="Close" active-text="启用" inactive-text="停用" active-value="true" inactive-value="false" /> <el-switch v-model="formData.status" inline-prompt active-value="true" inactive-value="false" />
</el-form-item> </el-form-item>
<el-form-item label="描述" prop="description"> <el-form-item label="描述" prop="description">
@@ -235,7 +235,6 @@ const props = defineProps({
import DictAPI, { DictDataTable, DictDataForm, DictDataPageQuery } from "@/api/system/dict"; import DictAPI, { DictDataTable, DictDataForm, DictDataPageQuery } from "@/api/system/dict";
import { ElMessageBox } from "element-plus"; import { ElMessageBox } from "element-plus";
import { Check, Close } from '@element-plus/icons-vue'
import { useAppStore } from "@/store/modules/app.store"; import { useAppStore } from "@/store/modules/app.store";
import { DeviceEnum } from "@/enums/settings/device.enum"; import { DeviceEnum } from "@/enums/settings/device.enum";
+1 -1
View File
@@ -97,7 +97,7 @@
</div> </div>
<!-- 表格区域 --> <!-- 表格区域 -->
<el-table ref="dataTableRef" v-loading="loading" :data="pageTableData.filter(item => item.username !== 'superadmin')" highlight-current-row class="data-table__content" height="450" border stripe @selection-change="handleSelectionChange"> <el-table ref="dataTableRef" v-loading="loading" :data="pageTableData" highlight-current-row class="data-table__content" height="450" border stripe @selection-change="handleSelectionChange">
<template #empty> <template #empty>
<el-empty :image-size="80" description="暂无数据" /> <el-empty :image-size="80" description="暂无数据" />
</template> </template>