feat: 添加任务管理和字典管理功能,优化系统配置和代码结构

本次提交主要包含以下变更:
1. 新增任务管理模块,支持定时任务的创建、更新、删除和状态管理
2. 新增字典管理模块,用于维护系统中常用的固定数据
3. 优化系统配置,移除Celery,改用APScheduler进行任务调度
4. 修复部分前端组件的样式问题,统一输入框宽度
5. 更新文档和相关图片资源,完善系统功能描述

这些变更旨在增强系统的可维护性和功能性,提供更灵活的任务调度机制和更便捷的字典数据管理方式。
This commit is contained in:
zhangtao
2025-04-12 06:43:27 +08:00
parent d0d3b12383
commit 00b7fe54ba
128 changed files with 6217 additions and 1181 deletions
+6 -6
View File
@@ -2,15 +2,15 @@
{
"id": 1,
"title": "FastAPI Vue Admin",
"favicon": "http://localhost:8000/api/v1/static/upload/image/png/2025/01/09/logo_20250109090456A114.png",
"logo": "http://localhost:8000/api/v1/static/upload/image/png/2025/01/09/logo_20250109090448A263.png",
"background": "http://localhost:8000/api/v1/static/upload/image/png/2025/01/09/background_20250109090435A357.png",
"favicon": "http://localhost:8000/api/v1/static/image/favicon.ico",
"logo": "http://localhost:8000/api/v1/static/image/logo.png",
"background": "http://localhost:8000/api/v1/static/image/background.png",
"description": "FastAPI Vue Admin 是完全开源的权限管理系统",
"copyright": "Copyright © 2021-2025 fastapi-vue-admin.com 版权所有",
"keep_record": "晋ICP备18005113号-3",
"help_url": "https://django-vue-admin.com",
"privacy_url": "/api/system/clause/privacy.html",
"clause_url": "/api/system/clause/terms_service.html",
"help_url": "https://gitee.com/tao__tao/fastapi_vue3_admin.git",
"privacy_url": "https://gitee.com/tao__tao/fastapi_vue3_admin/blob/master/LICENSE",
"clause_url": "https://gitee.com/tao__tao/fastapi_vue3_admin/blob/master/LICENSE",
"code_url": "https://gitee.com/tao__tao/fastapi_vue3_admin.git",
"creator_id": 1
}
@@ -0,0 +1,418 @@
[
{
"id": 1,
"dict_sort": 1,
"dict_label": "男",
"dict_value": "0",
"dict_type": "sys_user_sex",
"css_class": "",
"list_class": "",
"is_default": true,
"available": true,
"description": "性别男",
"creator_id": 1
},
{
"id": 2,
"dict_sort": 2,
"dict_label": "女",
"dict_value": "1",
"dict_type": "sys_user_sex",
"css_class": "",
"list_class": "",
"is_default": false,
"available": true,
"description": "性别女",
"creator_id": 1
},
{
"id": 3,
"dict_sort": 3,
"dict_label": "未知",
"dict_value": "2",
"dict_type": "sys_user_sex",
"css_class": "",
"list_class": "",
"is_default": false,
"available": true,
"description": "性别未知",
"creator_id": 1
},
{
"id": 4,
"dict_sort": 4,
"dict_label": "显示",
"dict_value": "0",
"dict_type": "sys_show_hide",
"css_class": "btn btn-success btn-xs",
"list_class": "primary",
"is_default": true,
"available": true,
"description": "显示菜单",
"creator_id": 1
},
{
"id": 5,
"dict_sort": 2,
"dict_label": "隐藏",
"dict_value": "1",
"dict_type": "sys_show_hide",
"css_class": "",
"list_class": "danger",
"is_default": false,
"available": true,
"description": "隐藏菜单",
"creator_id": 1
},
{
"id": 6,
"dict_sort": 1,
"dict_label": "正常",
"dict_value": "0",
"dict_type": "sys_normal_disable",
"css_class": "",
"list_class": "primary",
"is_default": true,
"available": true,
"description": "正常状态",
"creator_id": 1
},
{
"id": 7,
"dict_sort": 2,
"dict_label": "停用",
"dict_value": "1",
"dict_type": "sys_normal_disable",
"css_class": "",
"list_class": "danger",
"is_default": false,
"available": true,
"description": "停用状态",
"creator_id": 1
},
{
"id": 8,
"dict_sort": 1,
"dict_label": "正常",
"dict_value": "0",
"dict_type": "sys_job_status",
"css_class": "",
"list_class": "primary",
"is_default": true,
"available": true,
"description": "正常状态",
"creator_id": 1
},
{
"id": 9,
"dict_sort": 2,
"dict_label": "暂停",
"dict_value": "1",
"dict_type": "sys_job_status",
"css_class": "",
"list_class": "danger",
"is_default": false,
"available": true,
"description": "停用状态",
"creator_id": 1
},
{
"id": 10,
"dict_sort": 1,
"dict_label": "默认",
"dict_value": "default",
"dict_type": "sys_job_group",
"css_class": "",
"list_class": "",
"is_default": true,
"available": true,
"description": "默认分组",
"creator_id": 1
},
{
"id": 11,
"dict_sort": 2,
"dict_label": "数据库",
"dict_value": "sqlalchemy",
"dict_type": "sys_job_group",
"css_class": "",
"list_class": "",
"is_default": false,
"available": true,
"description": "数据库分组",
"creator_id": 1
},
{
"id": 12,
"dict_sort": 3,
"dict_label": "redis",
"dict_value": "redis",
"dict_type": "sys_job_group",
"css_class": "",
"list_class": "",
"is_default": false,
"available": true,
"description": "reids分组",
"creator_id": 1
},
{
"id": 13,
"dict_sort": 1,
"dict_label": "默认",
"dict_value": "default",
"dict_type": "sys_job_executor",
"css_class": "",
"list_class": "",
"is_default": false,
"available": true,
"description": "线程池",
"creator_id": 1
},
{
"id": 14,
"dict_sort": 2,
"dict_label": "进程池",
"dict_value": "processpool",
"dict_type": "sys_job_executor",
"css_class": "",
"list_class": "",
"is_default": false,
"available": true,
"description": "进程池",
"creator_id": 1
},
{
"id": 15,
"dict_sort": 1,
"dict_label": "是",
"dict_value": "Y",
"dict_type": "sys_yes_no",
"css_class": "",
"list_class": "primary",
"is_default": true,
"available": true,
"description": "系统默认是",
"creator_id": 1
},
{
"id": 16,
"dict_sort": 2,
"dict_label": "否",
"dict_value": "N",
"dict_type": "sys_yes_no",
"css_class": "",
"list_class": "danger",
"is_default": false,
"available": true,
"description": "系统默认否",
"creator_id": 1
},
{
"id": 17,
"dict_sort": 1,
"dict_label": "通知",
"dict_value": "1",
"dict_type": "sys_notice_type",
"css_class": "",
"list_class": "warning",
"is_default": true,
"available": true,
"description": "通知",
"creator_id": 1
},
{
"id": 18,
"dict_sort": 2,
"dict_label": "公告",
"dict_value": "2",
"dict_type": "sys_notice_type",
"css_class": "",
"list_class": "success",
"is_default": false,
"available": true,
"description": "公告",
"creator_id": 1
},
{
"id": 19,
"dict_sort": 1,
"dict_label": "正常",
"dict_value": "0",
"dict_type": "sys_notice_status",
"css_class": "",
"list_class": "primary",
"is_default": true,
"available": true,
"description": "正常状态",
"creator_id": 1
},
{
"id": 20,
"dict_sort": 2,
"dict_label": "关闭",
"dict_value": "1",
"dict_type": "sys_notice_status",
"css_class": "",
"list_class": "danger",
"is_default": false,
"available": true,
"description": "关闭状态",
"creator_id": 1
},
{
"id": 21,
"dict_sort": 99,
"dict_label": "其他",
"dict_value": "0",
"dict_type": "sys_oper_type",
"css_class": "",
"list_class": "info",
"is_default": false,
"available": true,
"description": "其他操作",
"creator_id": 1
},
{
"id": 22,
"dict_sort": 1,
"dict_label": "新增",
"dict_value": "1",
"dict_type": "sys_oper_type",
"css_class": "",
"list_class": "info",
"is_default": false,
"available": true,
"description": "新增操作",
"creator_id": 1
},
{
"id": 23,
"dict_sort": 2,
"dict_label": "修改",
"dict_value": "2",
"dict_type": "sys_oper_type",
"css_class": "",
"list_class": "info",
"is_default": false,
"available": true,
"description": "修改操作",
"creator_id": 1
},
{
"id": 24,
"dict_sort": 3,
"dict_label": "删除",
"dict_value": "3",
"dict_type": "sys_oper_type",
"css_class": "",
"list_class": "danger",
"is_default": false,
"available": true,
"description": "删除操作",
"creator_id": 1
},
{
"id": 25,
"dict_sort": 4,
"dict_label": "授权",
"dict_value": "4",
"dict_type": "sys_oper_type",
"css_class": "",
"list_class": "primary",
"is_default": false,
"available": true,
"description": "授权操作",
"creator_id": 1
},
{
"id": 26,
"dict_sort": 5,
"dict_label": "导出",
"dict_value": "5",
"dict_type": "sys_oper_type",
"css_class": "",
"list_class": "warning",
"is_default": false,
"available": true,
"description": "导出操作",
"creator_id": 1
},
{
"id": 27,
"dict_sort": 6,
"dict_label": "导入",
"dict_value": "6",
"dict_type": "sys_oper_type",
"css_class": "",
"list_class": "warning",
"is_default": false,
"available": true,
"description": "导入操作",
"creator_id": 1
},
{
"id": 28,
"dict_sort": 7,
"dict_label": "强退",
"dict_value": "7",
"dict_type": "sys_oper_type",
"css_class": "",
"list_class": "danger",
"is_default": false,
"available": true,
"description": "强退操作",
"creator_id": 1
},
{
"id": 29,
"dict_sort": 8,
"dict_label": "生成代码",
"dict_value": "8",
"dict_type": "sys_oper_type",
"css_class": "",
"list_class": "warning",
"is_default": false,
"available": true,
"description": "生成操作",
"creator_id": 1
},
{
"id": 30,
"dict_sort": 9,
"dict_label": "清空数据",
"dict_value": "9",
"dict_type": "sys_oper_type",
"css_class": "",
"list_class": "danger",
"is_default": false,
"available": true,
"description": "清空操作",
"creator_id": 1
},
{
"id": 31,
"dict_sort": 1,
"dict_label": "成功",
"dict_value": "0",
"dict_type": "sys_common_status",
"css_class": "",
"list_class": "primary",
"is_default": false,
"available": true,
"description": "正常状态",
"creator_id": 1
},
{
"id": 32,
"dict_sort": 2,
"dict_label": "失败",
"dict_value": "1",
"dict_type": "sys_common_status",
"css_class": "",
"list_class": "danger",
"is_default": false,
"available": true,
"description": "停用状态",
"creator_id": 1
}
]
@@ -0,0 +1,90 @@
[
{
"id": 1,
"dict_name": "用户性别",
"dict_type": "sys_user_sex",
"available": true,
"description": "用户性别列表",
"creator_id": 1
},
{
"id": 2,
"dict_name": "菜单状态",
"dict_type": "sys_show_hide",
"available": true,
"description": "菜单状态列表",
"creator_id": 1
},
{
"id": 3,
"dict_name": "系统开关",
"dict_type": "sys_normal_disable",
"available": true,
"description": "系统开关列表",
"creator_id": 1
},
{
"id": 4,
"dict_name": "任务状态",
"dict_type": "sys_job_status",
"available": true,
"description": "任务状态列表",
"creator_id": 1
},
{
"id": 5,
"dict_name": "任务分组",
"dict_type": "sys_job_group",
"available": true,
"description": "任务分组列表",
"creator_id": 1
},
{
"id": 6,
"dict_name": "任务执行器",
"dict_type": "sys_job_executor",
"available": true,
"description": "任务执行器列表",
"creator_id": 1
},
{
"id": 7,
"dict_name": "系统是否",
"dict_type": "sys_yes_no",
"available": true,
"description": "系统是否列表",
"creator_id": 1
},
{
"id": 8,
"dict_name": "通知类型",
"dict_type": "sys_notice_type",
"available": true,
"description": "通知类型列表",
"creator_id": 1
},
{
"id": 9,
"dict_name": "通知状态",
"dict_type": "sys_notice_status",
"available": true,
"description": "通知状态列表",
"creator_id": 1
},
{
"id": 10,
"dict_name": "操作类型",
"dict_type": "sys_oper_type",
"available": true,
"description": "操作类型列表",
"creator_id": 1
},
{
"id": 11,
"dict_name": "系统状态",
"dict_type": "sys_common_status",
"available": true,
"description": "登录状态列表",
"creator_id": 1
}
]
+53
View File
@@ -0,0 +1,53 @@
[
{
"id": 1,
"name": "系统默认(无参)",
"func": "scheduler_test.job",
"trigger": "cron",
"args": null,
"kwargs": null,
"coalesce": false,
"max_instances": 1,
"jobstore": "default",
"executor": "default",
"trigger_args": "*/10 * * * *",
"status": false,
"message": null,
"description": null,
"creator_id": 1
},
{
"id": 2,
"name": "系统默认(有参)",
"func": "scheduler_test.job",
"trigger": "cron",
"args": "test",
"kwargs": null,
"coalesce": false,
"max_instances": 1,
"jobstore": "default",
"executor": "default",
"trigger_args": "*/20 * * * *",
"status": false,
"message": null,
"description": null,
"creator_id": 1
},
{
"id": 3,
"name": "系统默认(多参)",
"func": "scheduler_test.job",
"trigger": "cron",
"args": "new",
"kwargs": "{\"test\": 111}",
"coalesce": false,
"max_instances": 1,
"jobstore": "default",
"executor": "default",
"trigger_args": "*/30 * * * *",
"status": false,
"message": null,
"description": null,
"creator_id": 1
}
]
+200 -13
View File
@@ -953,15 +953,15 @@
},
{
"id": 57,
"name": "任务管理",
"name": "字典管理",
"type": 2,
"icon": null,
"order": 4,
"permission": "monitor:task:query",
"route_name": "Task",
"route_path": "/monitor/task",
"component_path": "monitor/task/index",
"parent_id": 36,
"order": 9,
"permission": "system:dict_type:query",
"route_name": "Dict",
"route_path": "/system/dict",
"component_path": "system/dict/index",
"parent_id": 2,
"available": true,
"cache": true,
"hidden": false,
@@ -970,11 +970,11 @@
},
{
"id": 58,
"name": "任务创建",
"name": "创建字典类型",
"type": 3,
"icon": null,
"order": 1,
"permission": "monitor:task:create",
"permission": "system:dict_type:create",
"route_name": null,
"route_path": null,
"component_path": null,
@@ -987,11 +987,11 @@
},
{
"id": 59,
"name": "任务取消-重试",
"name": "修改字典类型",
"type": 3,
"icon": null,
"order": 2,
"permission": "monitor:task:update",
"permission": "system:dict_type:update",
"route_name": null,
"route_path": null,
"component_path": null,
@@ -1004,11 +1004,11 @@
},
{
"id": 60,
"name": "任务删除",
"name": "删除字典类型",
"type": 3,
"icon": null,
"order": 3,
"permission": "monitor:task:delete",
"permission": "system:dict_type:delete",
"route_name": null,
"route_path": null,
"component_path": null,
@@ -1018,5 +1018,192 @@
"hidden": false,
"redirect": null,
"description": "初始化数据"
},
{
"id": 61,
"name": "导出字典类型",
"type": 3,
"icon": null,
"order": 4,
"permission": "system:dict_type:export",
"route_name": null,
"route_path": null,
"component_path": null,
"parent_id": 57,
"available": true,
"cache": true,
"hidden": false,
"redirect": null,
"description": "初始化数据"
},
{
"id": 62,
"name": "字典数据",
"type": 2,
"icon": null,
"order": 10,
"permission": "system:dict_data:query",
"route_name": "DictData",
"route_path": "/system/dict_data",
"component_path": "system/dict/data",
"parent_id": 2,
"available": true,
"cache": true,
"hidden": true,
"redirect": null,
"description": "初始化数据"
},
{
"id": 63,
"name": "创建字典数据",
"type": 3,
"icon": null,
"order": 1,
"permission": "system:dict_data:create",
"route_name": null,
"route_path": null,
"component_path": null,
"parent_id": 62,
"available": true,
"cache": true,
"hidden": false,
"redirect": null,
"description": "初始化数据"
},
{
"id": 64,
"name": "修改字典数据",
"type": 3,
"icon": null,
"order": 2,
"permission": "system:dict_data:update",
"route_name": null,
"route_path": null,
"component_path": null,
"parent_id": 62,
"available": true,
"cache": true,
"hidden": false,
"redirect": null,
"description": "初始化数据"
},
{
"id": 65,
"name": "删除字典数据",
"type": 3,
"icon": null,
"order": 3,
"permission": "system:dict_data:delete",
"route_name": null,
"route_path": null,
"component_path": null,
"parent_id": 62,
"available": true,
"cache": true,
"hidden": false,
"redirect": null,
"description": "初始化数据"
},
{
"id": 66,
"name": "导出字典数据",
"type": 3,
"icon": null,
"order": 4,
"permission": "system:dict_data:export",
"route_name": null,
"route_path": null,
"component_path": null,
"parent_id": 62,
"available": true,
"cache": true,
"hidden": false,
"redirect": null,
"description": "初始化数据"
},
{
"id": 67,
"name": "任务管理",
"type": 2,
"icon": null,
"order": 11,
"permission": "system:job:query",
"route_name": "Job",
"route_path": "/system/job",
"component_path": "system/job/index",
"parent_id": 2,
"available": true,
"cache": true,
"hidden": false,
"redirect": null,
"description": "初始化数据"
},
{
"id": 68,
"name": "创建任务",
"type": 3,
"icon": null,
"order": 1,
"permission": "system:job:create",
"route_name": null,
"route_path": null,
"component_path": null,
"parent_id": 67,
"available": true,
"cache": true,
"hidden": false,
"redirect": null,
"description": "初始化数据"
},
{
"id": 69,
"name": "修改和操作任务",
"type": 3,
"icon": null,
"order": 2,
"permission": "system:job:update",
"route_name": null,
"route_path": null,
"component_path": null,
"parent_id": 67,
"available": true,
"cache": true,
"hidden": false,
"redirect": null,
"description": "初始化数据"
},
{
"id": 70,
"name": "删除和清除任务",
"type": 3,
"icon": null,
"order": 3,
"permission": "system:job:delete",
"route_name": null,
"route_path": null,
"component_path": null,
"parent_id": 67,
"available": true,
"cache": true,
"hidden": false,
"redirect": null,
"description": "初始化数据"
},
{
"id": 71,
"name": "导出定时任务",
"type": 3,
"icon": null,
"order": 4,
"permission": "system:job:export",
"route_name": null,
"route_path": null,
"component_path": null,
"parent_id": 67,
"available": true,
"cache": true,
"hidden": false,
"redirect": null,
"description": "初始化数据"
}
]
@@ -239,6 +239,50 @@
"role_id": 1,
"menu_id": 60
},
{
"role_id": 1,
"menu_id": 61
},
{
"role_id": 1,
"menu_id": 62
},
{
"role_id": 1,
"menu_id": 63
},
{
"role_id": 1,
"menu_id": 64
},
{
"role_id": 1,
"menu_id": 65
},
{
"role_id": 1,
"menu_id": 66
},
{
"role_id": 1,
"menu_id": 67
},
{
"role_id": 1,
"menu_id": 68
},
{
"role_id": 1,
"menu_id": 69
},
{
"role_id": 1,
"menu_id": 70
},
{
"role_id": 1,
"menu_id": 71
},
{
"role_id": 2,
"menu_id": 1