From 4b11e53f4865423fa80ad52a0b65b653950d984e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Wed, 18 May 2022 12:43:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=8F=98=E5=8C=96:=20?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E5=8A=9F=E8=83=BD=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/application/celery.py | 5 +- backend/dvadmin/system/fixtures/__init__.py | 0 .../system/fixtures/init_apiwhitelist.json | 7 + .../dvadmin/system/fixtures/init_dept.json | 33 + .../system/fixtures/init_dictionary.json | 550 +++ .../dvadmin/system/fixtures/init_menu.json | 3311 +++++++++++++++++ .../dvadmin/system/fixtures/init_role.json | 11 + .../system/fixtures/init_systemconfig.json | 197 + .../dvadmin/system/fixtures/init_users.json | 38 + backend/dvadmin/system/fixtures/initialize.py | 77 + backend/dvadmin/system/init_data.py | 2363 ------------ backend/dvadmin/system/initialize.py | 109 - .../management/commands/generate_init_json.py | 100 + .../system/management/commands/init.py | 15 +- .../dvadmin/system/views/api_white_list.py | 17 +- backend/dvadmin/system/views/dept.py | 41 +- backend/dvadmin/system/views/dictionary.py | 44 +- backend/dvadmin/system/views/menu.py | 77 +- backend/dvadmin/system/views/role.py | 18 +- backend/dvadmin/system/views/system_config.py | 43 +- backend/dvadmin/system/views/user.py | 27 +- backend/dvadmin/utils/core_initialize.py | 35 +- 22 files changed, 4621 insertions(+), 2497 deletions(-) create mode 100644 backend/dvadmin/system/fixtures/__init__.py create mode 100644 backend/dvadmin/system/fixtures/init_apiwhitelist.json create mode 100644 backend/dvadmin/system/fixtures/init_dept.json create mode 100644 backend/dvadmin/system/fixtures/init_dictionary.json create mode 100644 backend/dvadmin/system/fixtures/init_menu.json create mode 100644 backend/dvadmin/system/fixtures/init_role.json create mode 100644 backend/dvadmin/system/fixtures/init_systemconfig.json create mode 100644 backend/dvadmin/system/fixtures/init_users.json create mode 100644 backend/dvadmin/system/fixtures/initialize.py delete mode 100644 backend/dvadmin/system/init_data.py delete mode 100644 backend/dvadmin/system/initialize.py create mode 100644 backend/dvadmin/system/management/commands/generate_init_json.py diff --git a/backend/application/celery.py b/backend/application/celery.py index 55d186c..dbf6fde 100644 --- a/backend/application/celery.py +++ b/backend/application/celery.py @@ -3,10 +3,11 @@ import os os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'application.settings') from django.conf import settings -from application import dispatch from celery import platforms -if dispatch.is_tenants_mode(): +# 租户模式 +if "django_tenants" in settings.INSTALLED_APPS: from tenant_schemas_celery.app import CeleryApp as TenantAwareCeleryApp + app = TenantAwareCeleryApp() else: from celery import Celery diff --git a/backend/dvadmin/system/fixtures/__init__.py b/backend/dvadmin/system/fixtures/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/dvadmin/system/fixtures/init_apiwhitelist.json b/backend/dvadmin/system/fixtures/init_apiwhitelist.json new file mode 100644 index 0000000..e33de57 --- /dev/null +++ b/backend/dvadmin/system/fixtures/init_apiwhitelist.json @@ -0,0 +1,7 @@ +[ + { + "url": "/api/system/dept_lazy_tree/", + "method": 0, + "enable_datasource": true + } +] \ No newline at end of file diff --git a/backend/dvadmin/system/fixtures/init_dept.json b/backend/dvadmin/system/fixtures/init_dept.json new file mode 100644 index 0000000..43af999 --- /dev/null +++ b/backend/dvadmin/system/fixtures/init_dept.json @@ -0,0 +1,33 @@ +[ + { + "name": "DVAdmin团队", + "sort": 1, + "owner": "", + "phone": "", + "email": "", + "status": true, + "parent": null, + "children": [ + { + "name": "运营部", + "sort": 2, + "owner": "", + "phone": "", + "email": "", + "status": true, + "parent": 1, + "children": [] + }, + { + "name": "技术部", + "sort": 1, + "owner": "", + "phone": "", + "email": "", + "status": true, + "parent": 3, + "children": [] + } + ] + } +] diff --git a/backend/dvadmin/system/fixtures/init_dictionary.json b/backend/dvadmin/system/fixtures/init_dictionary.json new file mode 100644 index 0000000..f4533f9 --- /dev/null +++ b/backend/dvadmin/system/fixtures/init_dictionary.json @@ -0,0 +1,550 @@ +[ + { + "label": "启用/禁用-布尔值", + "value": "button_status_bool", + "parent": null, + "type": 0, + "color": null, + "is_value": false, + "status": true, + "sort": 1, + "remark": null, + "children": [ + { + "label": "启用", + "value": "true", + "parent": 1, + "type": 6, + "color": null, + "is_value": true, + "status": true, + "sort": 1, + "remark": null, + "children": [] + }, + { + "label": "禁用", + "value": "false", + "parent": 1, + "type": 6, + "color": null, + "is_value": true, + "status": true, + "sort": 2, + "remark": null, + "children": [] + } + ] + }, + { + "label": "系统按钮", + "value": "system_button", + "parent": null, + "type": 0, + "color": null, + "is_value": false, + "status": true, + "sort": 2, + "remark": null, + "children": [ + { + "label": "新增", + "value": "Create", + "parent": 66, + "type": 0, + "color": "success", + "is_value": true, + "status": true, + "sort": 1, + "remark": null, + "children": [] + }, + { + "label": "编辑", + "value": "Update", + "parent": 66, + "type": 0, + "color": "primary", + "is_value": true, + "status": true, + "sort": 2, + "remark": null, + "children": [] + }, + { + "label": "删除", + "value": "Delete", + "parent": 66, + "type": 0, + "color": "danger", + "is_value": true, + "status": true, + "sort": 3, + "remark": null, + "children": [] + }, + { + "label": "详情", + "value": "Retrieve", + "parent": 66, + "type": 0, + "color": "info", + "is_value": true, + "status": true, + "sort": 4, + "remark": null, + "children": [] + }, + { + "label": "查询", + "value": "Search", + "parent": 66, + "type": 0, + "color": "warning", + "is_value": true, + "status": true, + "sort": 5, + "remark": null, + "children": [] + }, + { + "label": "保存", + "value": "Save", + "parent": 66, + "type": 0, + "color": "success", + "is_value": true, + "status": true, + "sort": 6, + "remark": null, + "children": [] + }, + { + "label": "导入", + "value": "Import", + "parent": 66, + "type": 0, + "color": "primary", + "is_value": true, + "status": true, + "sort": 7, + "remark": null, + "children": [] + }, + { + "label": "导出", + "value": "Export", + "parent": 66, + "type": 0, + "color": "warning", + "is_value": true, + "status": true, + "sort": 8, + "remark": null, + "children": [] + } + ] + }, + { + "label": "启用/禁用-数字值", + "value": "button_status_number", + "parent": null, + "type": 0, + "color": null, + "is_value": false, + "status": true, + "sort": 3, + "remark": null, + "children": [ + { + "label": "启用", + "value": "1", + "parent": 7, + "type": 1, + "color": null, + "is_value": true, + "status": true, + "sort": 1, + "remark": null, + "children": [] + }, + { + "label": "禁用", + "value": "0", + "parent": 7, + "type": 1, + "color": null, + "is_value": true, + "status": true, + "sort": 2, + "remark": null, + "children": [] + } + ] + }, + { + "label": "是/否-布尔值", + "value": "button_whether_bool", + "parent": null, + "type": 0, + "color": null, + "is_value": false, + "status": true, + "sort": 4, + "remark": null, + "children": [ + { + "label": "是", + "value": "true", + "parent": 5, + "type": 6, + "color": null, + "is_value": true, + "status": true, + "sort": 1, + "remark": null, + "children": [] + }, + { + "label": "否", + "value": "false", + "parent": 5, + "type": 6, + "color": null, + "is_value": true, + "status": true, + "sort": 2, + "remark": null, + "children": [] + } + ] + }, + { + "label": "是/否-数字值", + "value": "button_whether_number", + "parent": null, + "type": 0, + "color": null, + "is_value": false, + "status": true, + "sort": 5, + "remark": null, + "children": [ + { + "label": "是", + "value": "1", + "parent": 10, + "type": 1, + "color": null, + "is_value": true, + "status": true, + "sort": 1, + "remark": null, + "children": [] + }, + { + "label": "否", + "value": "2", + "parent": 10, + "type": 1, + "color": null, + "is_value": true, + "status": true, + "sort": 2, + "remark": null, + "children": [] + } + ] + }, + { + "label": "用户类型", + "value": "user_type", + "parent": null, + "type": 0, + "color": null, + "is_value": false, + "status": true, + "sort": 6, + "remark": null, + "children": [ + { + "label": "后台用户", + "value": "0", + "parent": 15, + "type": 1, + "color": null, + "is_value": true, + "status": true, + "sort": 1, + "remark": null, + "children": [] + }, + { + "label": "前台用户", + "value": "1", + "parent": 15, + "type": 1, + "color": null, + "is_value": true, + "status": true, + "sort": 2, + "remark": null, + "children": [] + } + ] + }, + { + "label": "表单类型", + "value": "config_form_type", + "parent": null, + "type": 0, + "color": null, + "is_value": false, + "status": true, + "sort": 7, + "remark": null, + "children": [ + { + "label": "text", + "value": "0", + "parent": 49, + "type": 1, + "color": null, + "is_value": true, + "status": true, + "sort": 0, + "remark": null, + "children": [] + }, + { + "label": "textarea", + "value": "3", + "parent": 49, + "type": 1, + "color": "", + "is_value": true, + "status": true, + "sort": 0, + "remark": null, + "children": [] + }, + { + "label": "number", + "value": "10", + "parent": 49, + "type": 1, + "color": "", + "is_value": true, + "status": true, + "sort": 0, + "remark": null, + "children": [] + }, + { + "label": "datetime", + "value": "1", + "parent": 49, + "type": 1, + "color": null, + "is_value": true, + "status": true, + "sort": 1, + "remark": null, + "children": [] + }, + { + "label": "date", + "value": "2", + "parent": 49, + "type": 1, + "color": null, + "is_value": true, + "status": true, + "sort": 2, + "remark": null, + "children": [] + }, + { + "label": "time", + "value": "15", + "parent": 49, + "type": 1, + "color": "", + "is_value": true, + "status": true, + "sort": 3, + "remark": null, + "children": [] + }, + { + "label": "select", + "value": "4", + "parent": 49, + "type": 1, + "color": null, + "is_value": true, + "status": true, + "sort": 4, + "remark": null, + "children": [] + }, + { + "label": "checkbox", + "value": "5", + "parent": 49, + "type": 1, + "color": null, + "is_value": true, + "status": true, + "sort": 5, + "remark": null, + "children": [] + }, + { + "label": "radio", + "value": "6", + "parent": 49, + "type": 1, + "color": null, + "is_value": true, + "status": true, + "sort": 6, + "remark": null, + "children": [] + }, + { + "label": "switch", + "value": "9", + "parent": 49, + "type": 1, + "color": "", + "is_value": true, + "status": true, + "sort": 6, + "remark": null, + "children": [] + }, + { + "label": "文件附件", + "value": "8", + "parent": 49, + "type": 1, + "color": "", + "is_value": true, + "status": true, + "sort": 7, + "remark": null, + "children": [] + }, + { + "label": "图片(单张)", + "value": "7", + "parent": 49, + "type": 1, + "color": "", + "is_value": true, + "status": true, + "sort": 8, + "remark": null, + "children": [] + }, + { + "label": "图片(多张)", + "value": "12", + "parent": 49, + "type": 1, + "color": "", + "is_value": true, + "status": true, + "sort": 9, + "remark": null, + "children": [] + }, + { + "label": "数组", + "value": "11", + "parent": 49, + "type": 1, + "color": "", + "is_value": true, + "status": true, + "sort": 11, + "remark": null, + "children": [] + }, + { + "label": "关联表", + "value": "13", + "parent": 49, + "type": 1, + "color": "", + "is_value": true, + "status": true, + "sort": 13, + "remark": null, + "children": [] + }, + { + "label": "关联表(多选)", + "value": "14", + "parent": 49, + "type": 1, + "color": "", + "is_value": true, + "status": true, + "sort": 14, + "remark": null, + "children": [] + } + ] + }, + { + "label": "性别", + "value": "gender", + "parent": null, + "type": 0, + "color": null, + "is_value": false, + "status": true, + "sort": 8, + "remark": null, + "children": [ + { + "label": "未知", + "value": "0", + "parent": 18, + "type": 1, + "color": null, + "is_value": true, + "status": true, + "sort": 0, + "remark": null, + "children": [] + }, + { + "label": "男", + "value": "1", + "parent": 18, + "type": 1, + "color": null, + "is_value": true, + "status": true, + "sort": 1, + "remark": null, + "children": [] + }, + { + "label": "女", + "value": "2", + "parent": 18, + "type": 1, + "color": null, + "is_value": true, + "status": true, + "sort": 2, + "remark": null, + "children": [] + } + ] + } +] diff --git a/backend/dvadmin/system/fixtures/init_menu.json b/backend/dvadmin/system/fixtures/init_menu.json new file mode 100644 index 0000000..6abc4fa --- /dev/null +++ b/backend/dvadmin/system/fixtures/init_menu.json @@ -0,0 +1,3311 @@ +[ + { + "name": "系统管理", + "icon": "cog", + "sort": 1, + "is_link": false, + "is_catalog": true, + "web_path": "", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "菜单管理", + "icon": "navicon", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/menu", + "component": "system/menu", + "component_name": "menu", + "status": true, + "cache": false, + "visible": true, + "parent": 205, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/menu/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/menu/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/menu/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/menu/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/menu/{id}/", + "method": 3 + } + ] + }, + { + "name": "菜单按钮", + "icon": "dot-circle-o", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/menuButton", + "component": "system/menuButton/index", + "component_name": "menuButton", + "status": true, + "cache": false, + "visible": false, + "parent": 205, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/menu_button/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/menu_button/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/menu_button/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/menu_button/{id}/", + "method": 3 + } + ] + }, + { + "name": "按钮管理", + "icon": "bullseye", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/button", + "component": "system/button/index", + "component_name": "button", + "status": true, + "cache": false, + "visible": false, + "parent": 205, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/button/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/button/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/button/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/button/{id}/", + "method": 3 + } + ] + }, + { + "name": "部门管理", + "icon": "bank", + "sort": 3, + "is_link": false, + "is_catalog": false, + "web_path": "/dept", + "component": "system/dept/index", + "component_name": "dept", + "status": true, + "cache": false, + "visible": true, + "parent": 205, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/dept/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/dept/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/dept/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/dept/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/dept/{id}/", + "method": 3 + } + ] + }, + { + "name": "角色管理", + "icon": "address-book", + "sort": 4, + "is_link": false, + "is_catalog": false, + "web_path": "/role", + "component": "system/role/index", + "component_name": "role", + "status": true, + "cache": false, + "visible": true, + "parent": 205, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/role/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/role/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/role/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/role/{id}/", + "method": 2 + }, + { + "name": "保存", + "value": "Save", + "api": "/api/system/role/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/role/{id}/", + "method": 3 + } + ] + }, + { + "name": "用户管理", + "icon": "users", + "sort": 6, + "is_link": false, + "is_catalog": false, + "web_path": "/user", + "component": "system/user/index", + "component_name": "user", + "status": true, + "cache": false, + "visible": true, + "parent": 205, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/user/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/user/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/user/", + "method": 1 + }, + { + "name": "导出", + "value": "Export", + "api": "/api/system/user/export/", + "method": 1 + }, + { + "name": "导入", + "value": "Import", + "api": "/api/system/user/import/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/user/{id}/", + "method": 2 + }, + { + "name": "重设密码", + "value": "ResetPassword", + "api": "/api/system/user/reset_password/{id}/", + "method": 2 + }, + { + "name": "重置密码", + "value": "DefaultPassword", + "api": "/api/system/user/reset_to_default_password/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/user/{id}/", + "method": 3 + } + ] + }, + { + "name": "接口白名单", + "icon": "compass", + "sort": 7, + "is_link": false, + "is_catalog": false, + "web_path": "/apiWhiteList", + "component": "system/whiteList/index", + "component_name": "whiteList", + "status": true, + "cache": false, + "visible": true, + "parent": 205, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/api_white_list/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/api_white_list/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/api_white_list/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/api_white_list/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/api_white_list/{id}/", + "method": 3 + } + ] + } + ], + "menu_button": [] + }, + { + "name": "系统管理", + "icon": "cog", + "sort": 1, + "is_link": false, + "is_catalog": true, + "web_path": "", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "菜单管理", + "icon": "navicon", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/menu", + "component": "system/menu", + "component_name": "menu", + "status": true, + "cache": false, + "visible": true, + "parent": 223, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/menu/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/menu/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/menu/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/menu/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/menu/{id}/", + "method": 3 + } + ] + }, + { + "name": "菜单按钮", + "icon": "dot-circle-o", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/menuButton", + "component": "system/menuButton/index", + "component_name": "menuButton", + "status": true, + "cache": false, + "visible": false, + "parent": 223, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/menu_button/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/menu_button/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/menu_button/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/menu_button/{id}/", + "method": 3 + } + ] + }, + { + "name": "部门管理", + "icon": "bank", + "sort": 3, + "is_link": false, + "is_catalog": false, + "web_path": "/dept", + "component": "system/dept/index", + "component_name": "dept", + "status": true, + "cache": false, + "visible": true, + "parent": 223, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/dept/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/dept/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/dept/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/dept/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/dept/{id}/", + "method": 3 + } + ] + }, + { + "name": "角色管理", + "icon": "address-book", + "sort": 4, + "is_link": false, + "is_catalog": false, + "web_path": "/role", + "component": "system/role/index", + "component_name": "role", + "status": true, + "cache": false, + "visible": true, + "parent": 223, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/role/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/role/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/role/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/role/{id}/", + "method": 2 + }, + { + "name": "保存", + "value": "Save", + "api": "/api/system/role/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/role/{id}/", + "method": 3 + } + ] + }, + { + "name": "用户管理", + "icon": "users", + "sort": 6, + "is_link": false, + "is_catalog": false, + "web_path": "/user", + "component": "system/user/index", + "component_name": "user", + "status": true, + "cache": false, + "visible": true, + "parent": 223, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/user/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/user/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/user/", + "method": 1 + }, + { + "name": "导出", + "value": "Export", + "api": "/api/system/user/export/", + "method": 1 + }, + { + "name": "导入", + "value": "Import", + "api": "/api/system/user/import/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/user/{id}/", + "method": 2 + }, + { + "name": "重设密码", + "value": "ResetPassword", + "api": "/api/system/user/reset_password/{id}/", + "method": 2 + }, + { + "name": "重置密码", + "value": "DefaultPassword", + "api": "/api/system/user/reset_to_default_password/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/user/{id}/", + "method": 3 + } + ] + }, + { + "name": "接口白名单", + "icon": "compass", + "sort": 7, + "is_link": false, + "is_catalog": false, + "web_path": "/apiWhiteList", + "component": "system/whiteList/index", + "component_name": "whiteList", + "status": true, + "cache": false, + "visible": true, + "parent": 223, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/api_white_list/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/api_white_list/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/api_white_list/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/api_white_list/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/api_white_list/{id}/", + "method": 3 + } + ] + } + ], + "menu_button": [] + }, + { + "name": "系统管理", + "icon": "cog", + "sort": 1, + "is_link": false, + "is_catalog": true, + "web_path": "", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "菜单管理", + "icon": "navicon", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/menu", + "component": "system/menu", + "component_name": "menu", + "status": true, + "cache": false, + "visible": true, + "parent": 241, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/menu/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/menu/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/menu/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/menu/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/menu/{id}/", + "method": 3 + } + ] + }, + { + "name": "菜单按钮", + "icon": "dot-circle-o", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/menuButton", + "component": "system/menuButton/index", + "component_name": "menuButton", + "status": true, + "cache": false, + "visible": false, + "parent": 241, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/menu_button/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/menu_button/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/menu_button/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/menu_button/{id}/", + "method": 3 + } + ] + }, + { + "name": "按钮管理", + "icon": "bullseye", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/button", + "component": "system/button/index", + "component_name": "button", + "status": true, + "cache": false, + "visible": false, + "parent": 241, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/button/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/button/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/button/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/button/{id}/", + "method": 3 + } + ] + }, + { + "name": "部门管理", + "icon": "bank", + "sort": 3, + "is_link": false, + "is_catalog": false, + "web_path": "/dept", + "component": "system/dept/index", + "component_name": "dept", + "status": true, + "cache": false, + "visible": true, + "parent": 241, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/dept/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/dept/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/dept/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/dept/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/dept/{id}/", + "method": 3 + } + ] + }, + { + "name": "角色管理", + "icon": "address-book", + "sort": 4, + "is_link": false, + "is_catalog": false, + "web_path": "/role", + "component": "system/role/index", + "component_name": "role", + "status": true, + "cache": false, + "visible": true, + "parent": 241, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/role/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/role/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/role/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/role/{id}/", + "method": 2 + }, + { + "name": "保存", + "value": "Save", + "api": "/api/system/role/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/role/{id}/", + "method": 3 + } + ] + }, + { + "name": "用户管理", + "icon": "users", + "sort": 6, + "is_link": false, + "is_catalog": false, + "web_path": "/user", + "component": "system/user/index", + "component_name": "user", + "status": true, + "cache": false, + "visible": true, + "parent": 241, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/user/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/user/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/user/", + "method": 1 + }, + { + "name": "导出", + "value": "Export", + "api": "/api/system/user/export/", + "method": 1 + }, + { + "name": "导入", + "value": "Import", + "api": "/api/system/user/import/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/user/{id}/", + "method": 2 + }, + { + "name": "重设密码", + "value": "ResetPassword", + "api": "/api/system/user/reset_password/{id}/", + "method": 2 + }, + { + "name": "重置密码", + "value": "DefaultPassword", + "api": "/api/system/user/reset_to_default_password/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/user/{id}/", + "method": 3 + } + ] + }, + { + "name": "接口白名单", + "icon": "compass", + "sort": 7, + "is_link": false, + "is_catalog": false, + "web_path": "/apiWhiteList", + "component": "system/whiteList/index", + "component_name": "whiteList", + "status": true, + "cache": false, + "visible": true, + "parent": 241, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/api_white_list/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/api_white_list/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/api_white_list/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/api_white_list/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/api_white_list/{id}/", + "method": 3 + } + ] + } + ], + "menu_button": [] + }, + { + "name": "系统管理", + "icon": "cog", + "sort": 1, + "is_link": false, + "is_catalog": true, + "web_path": "", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "菜单管理", + "icon": "navicon", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/menu", + "component": "system/menu", + "component_name": "menu", + "status": true, + "cache": false, + "visible": true, + "parent": 259, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/menu/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/menu/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/menu/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/menu/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/menu/{id}/", + "method": 3 + } + ] + }, + { + "name": "菜单按钮", + "icon": "dot-circle-o", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/menuButton", + "component": "system/menuButton/index", + "component_name": "menuButton", + "status": true, + "cache": false, + "visible": false, + "parent": 259, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/menu_button/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/menu_button/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/menu_button/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/menu_button/{id}/", + "method": 3 + } + ] + }, + { + "name": "按钮管理", + "icon": "bullseye", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/button", + "component": "system/button/index", + "component_name": "button", + "status": true, + "cache": false, + "visible": false, + "parent": 259, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/button/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/button/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/button/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/button/{id}/", + "method": 3 + } + ] + }, + { + "name": "部门管理", + "icon": "bank", + "sort": 3, + "is_link": false, + "is_catalog": false, + "web_path": "/dept", + "component": "system/dept/index", + "component_name": "dept", + "status": true, + "cache": false, + "visible": true, + "parent": 259, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/dept/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/dept/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/dept/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/dept/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/dept/{id}/", + "method": 3 + } + ] + }, + { + "name": "角色管理", + "icon": "address-book", + "sort": 4, + "is_link": false, + "is_catalog": false, + "web_path": "/role", + "component": "system/role/index", + "component_name": "role", + "status": true, + "cache": false, + "visible": true, + "parent": 259, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/role/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/role/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/role/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/role/{id}/", + "method": 2 + }, + { + "name": "保存", + "value": "Save", + "api": "/api/system/role/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/role/{id}/", + "method": 3 + } + ] + }, + { + "name": "用户管理", + "icon": "users", + "sort": 6, + "is_link": false, + "is_catalog": false, + "web_path": "/user", + "component": "system/user/index", + "component_name": "user", + "status": true, + "cache": false, + "visible": true, + "parent": 259, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/user/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/user/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/user/", + "method": 1 + }, + { + "name": "导出", + "value": "Export", + "api": "/api/system/user/export/", + "method": 1 + }, + { + "name": "导入", + "value": "Import", + "api": "/api/system/user/import/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/user/{id}/", + "method": 2 + }, + { + "name": "重设密码", + "value": "ResetPassword", + "api": "/api/system/user/reset_password/{id}/", + "method": 2 + }, + { + "name": "重置密码", + "value": "DefaultPassword", + "api": "/api/system/user/reset_to_default_password/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/user/{id}/", + "method": 3 + } + ] + }, + { + "name": "接口白名单", + "icon": "compass", + "sort": 7, + "is_link": false, + "is_catalog": false, + "web_path": "/apiWhiteList", + "component": "system/whiteList/index", + "component_name": "whiteList", + "status": true, + "cache": false, + "visible": true, + "parent": 259, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/api_white_list/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/api_white_list/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/api_white_list/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/api_white_list/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/api_white_list/{id}/", + "method": 3 + } + ] + } + ], + "menu_button": [] + }, + { + "name": "系统管理", + "icon": "cog", + "sort": 1, + "is_link": false, + "is_catalog": true, + "web_path": "", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "菜单管理", + "icon": "navicon", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/menu", + "component": "system/menu", + "component_name": "menu", + "status": true, + "cache": false, + "visible": true, + "parent": 277, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/menu/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/menu/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/menu/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/menu/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/menu/{id}/", + "method": 3 + } + ] + }, + { + "name": "菜单按钮", + "icon": "dot-circle-o", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/menuButton", + "component": "system/menuButton/index", + "component_name": "menuButton", + "status": true, + "cache": false, + "visible": false, + "parent": 277, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/menu_button/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/menu_button/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/menu_button/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/menu_button/{id}/", + "method": 3 + } + ] + }, + { + "name": "按钮管理", + "icon": "bullseye", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/button", + "component": "system/button/index", + "component_name": "button", + "status": true, + "cache": false, + "visible": false, + "parent": 277, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/button/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/button/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/button/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/button/{id}/", + "method": 3 + } + ] + }, + { + "name": "部门管理", + "icon": "bank", + "sort": 3, + "is_link": false, + "is_catalog": false, + "web_path": "/dept", + "component": "system/dept/index", + "component_name": "dept", + "status": true, + "cache": false, + "visible": true, + "parent": 277, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/dept/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/dept/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/dept/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/dept/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/dept/{id}/", + "method": 3 + } + ] + }, + { + "name": "角色管理", + "icon": "address-book", + "sort": 4, + "is_link": false, + "is_catalog": false, + "web_path": "/role", + "component": "system/role/index", + "component_name": "role", + "status": true, + "cache": false, + "visible": true, + "parent": 277, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/role/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/role/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/role/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/role/{id}/", + "method": 2 + }, + { + "name": "保存", + "value": "Save", + "api": "/api/system/role/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/role/{id}/", + "method": 3 + } + ] + }, + { + "name": "用户管理", + "icon": "users", + "sort": 6, + "is_link": false, + "is_catalog": false, + "web_path": "/user", + "component": "system/user/index", + "component_name": "user", + "status": true, + "cache": false, + "visible": true, + "parent": 277, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/user/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/user/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/user/", + "method": 1 + }, + { + "name": "导出", + "value": "Export", + "api": "/api/system/user/export/", + "method": 1 + }, + { + "name": "导入", + "value": "Import", + "api": "/api/system/user/import/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/user/{id}/", + "method": 2 + }, + { + "name": "重设密码", + "value": "ResetPassword", + "api": "/api/system/user/reset_password/{id}/", + "method": 2 + }, + { + "name": "重置密码", + "value": "DefaultPassword", + "api": "/api/system/user/reset_to_default_password/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/user/{id}/", + "method": 3 + } + ] + }, + { + "name": "接口白名单", + "icon": "compass", + "sort": 7, + "is_link": false, + "is_catalog": false, + "web_path": "/apiWhiteList", + "component": "system/whiteList/index", + "component_name": "whiteList", + "status": true, + "cache": false, + "visible": true, + "parent": 277, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/api_white_list/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/api_white_list/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/api_white_list/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/api_white_list/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/api_white_list/{id}/", + "method": 3 + } + ] + } + ], + "menu_button": [] + }, + { + "name": "常规配置", + "icon": "cogs", + "sort": 2, + "is_link": false, + "is_catalog": true, + "web_path": "", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "系统配置", + "icon": "desktop", + "sort": 0, + "is_link": false, + "is_catalog": false, + "web_path": "/config", + "component": "system/config/index", + "component_name": "config", + "status": true, + "cache": false, + "visible": true, + "parent": 213, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/system_config/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/system_config/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/system_config/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/system_config/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/system_config/{id}/", + "method": 3 + } + ] + }, + { + "name": "字典管理", + "icon": "book", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/dictionary", + "component": "system/dictionary/index", + "component_name": "dictionary", + "status": true, + "cache": false, + "visible": true, + "parent": 213, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/dictionary/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/dictionary/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/dictionary/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/dictionary/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/dictionary/{id}/", + "method": 3 + } + ] + }, + { + "name": "地区管理", + "icon": "map", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/areas", + "component": "system/areas/index", + "component_name": "areas", + "status": true, + "cache": false, + "visible": true, + "parent": 213, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/area/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/area/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/area/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/area/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/area/{id}/", + "method": 3 + } + ] + }, + { + "name": "附件管理", + "icon": "file-text-o", + "sort": 3, + "is_link": false, + "is_catalog": false, + "web_path": "/file", + "component": "system/fileList/index", + "component_name": "file", + "status": true, + "cache": false, + "visible": true, + "parent": 213, + "children": [], + "menu_button": [ + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/file/{id}/", + "method": 0 + }, + { + "name": "查询", + "value": "Search", + "api": "/api/system/file/", + "method": 0 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/file/{id}/", + "method": 1 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/file/{id}/", + "method": 3 + } + ] + } + ], + "menu_button": [] + }, + { + "name": "常规配置", + "icon": "cogs", + "sort": 2, + "is_link": false, + "is_catalog": true, + "web_path": "", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "系统配置", + "icon": "desktop", + "sort": 0, + "is_link": false, + "is_catalog": false, + "web_path": "/config", + "component": "system/config/index", + "component_name": "config", + "status": true, + "cache": false, + "visible": true, + "parent": 231, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/system_config/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/system_config/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/system_config/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/system_config/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/system_config/{id}/", + "method": 3 + } + ] + }, + { + "name": "字典管理", + "icon": "book", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/dictionary", + "component": "system/dictionary/index", + "component_name": "dictionary", + "status": true, + "cache": false, + "visible": true, + "parent": 231, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/dictionary/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/dictionary/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/dictionary/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/dictionary/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/dictionary/{id}/", + "method": 3 + } + ] + }, + { + "name": "地区管理", + "icon": "map", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/areas", + "component": "system/areas/index", + "component_name": "areas", + "status": true, + "cache": false, + "visible": true, + "parent": 231, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/area/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/area/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/area/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/area/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/area/{id}/", + "method": 3 + } + ] + }, + { + "name": "附件管理", + "icon": "file-text-o", + "sort": 3, + "is_link": false, + "is_catalog": false, + "web_path": "/file", + "component": "system/fileList/index", + "component_name": "file", + "status": true, + "cache": false, + "visible": true, + "parent": 231, + "children": [], + "menu_button": [ + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/file/{id}/", + "method": 0 + }, + { + "name": "查询", + "value": "Search", + "api": "/api/system/file/", + "method": 0 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/file/{id}/", + "method": 1 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/file/{id}/", + "method": 3 + } + ] + } + ], + "menu_button": [] + }, + { + "name": "常规配置", + "icon": "cogs", + "sort": 2, + "is_link": false, + "is_catalog": true, + "web_path": "", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "系统配置", + "icon": "desktop", + "sort": 0, + "is_link": false, + "is_catalog": false, + "web_path": "/config", + "component": "system/config/index", + "component_name": "config", + "status": true, + "cache": false, + "visible": true, + "parent": 249, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/system_config/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/system_config/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/system_config/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/system_config/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/system_config/{id}/", + "method": 3 + } + ] + }, + { + "name": "字典管理", + "icon": "book", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/dictionary", + "component": "system/dictionary/index", + "component_name": "dictionary", + "status": true, + "cache": false, + "visible": true, + "parent": 249, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/dictionary/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/dictionary/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/dictionary/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/dictionary/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/dictionary/{id}/", + "method": 3 + } + ] + }, + { + "name": "地区管理", + "icon": "map", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/areas", + "component": "system/areas/index", + "component_name": "areas", + "status": true, + "cache": false, + "visible": true, + "parent": 249, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/area/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/area/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/area/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/area/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/area/{id}/", + "method": 3 + } + ] + }, + { + "name": "附件管理", + "icon": "file-text-o", + "sort": 3, + "is_link": false, + "is_catalog": false, + "web_path": "/file", + "component": "system/fileList/index", + "component_name": "file", + "status": true, + "cache": false, + "visible": true, + "parent": 249, + "children": [], + "menu_button": [ + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/file/{id}/", + "method": 0 + }, + { + "name": "查询", + "value": "Search", + "api": "/api/system/file/", + "method": 0 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/file/{id}/", + "method": 1 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/file/{id}/", + "method": 3 + } + ] + } + ], + "menu_button": [] + }, + { + "name": "常规配置", + "icon": "cogs", + "sort": 2, + "is_link": false, + "is_catalog": true, + "web_path": "", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "系统配置", + "icon": "desktop", + "sort": 0, + "is_link": false, + "is_catalog": false, + "web_path": "/config", + "component": "system/config/index", + "component_name": "config", + "status": true, + "cache": false, + "visible": true, + "parent": 267, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/system_config/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/system_config/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/system_config/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/system_config/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/system_config/{id}/", + "method": 3 + } + ] + }, + { + "name": "字典管理", + "icon": "book", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/dictionary", + "component": "system/dictionary/index", + "component_name": "dictionary", + "status": true, + "cache": false, + "visible": true, + "parent": 267, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/dictionary/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/dictionary/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/dictionary/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/dictionary/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/dictionary/{id}/", + "method": 3 + } + ] + }, + { + "name": "地区管理", + "icon": "map", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/areas", + "component": "system/areas/index", + "component_name": "areas", + "status": true, + "cache": false, + "visible": true, + "parent": 267, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/area/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/area/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/area/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/area/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/area/{id}/", + "method": 3 + } + ] + }, + { + "name": "附件管理", + "icon": "file-text-o", + "sort": 3, + "is_link": false, + "is_catalog": false, + "web_path": "/file", + "component": "system/fileList/index", + "component_name": "file", + "status": true, + "cache": false, + "visible": true, + "parent": 267, + "children": [], + "menu_button": [ + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/file/{id}/", + "method": 0 + }, + { + "name": "查询", + "value": "Search", + "api": "/api/system/file/", + "method": 0 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/file/{id}/", + "method": 1 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/file/{id}/", + "method": 3 + } + ] + } + ], + "menu_button": [] + }, + { + "name": "常规配置", + "icon": "cogs", + "sort": 2, + "is_link": false, + "is_catalog": true, + "web_path": "", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "系统配置", + "icon": "desktop", + "sort": 0, + "is_link": false, + "is_catalog": false, + "web_path": "/config", + "component": "system/config/index", + "component_name": "config", + "status": true, + "cache": false, + "visible": true, + "parent": 285, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/system_config/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/system_config/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/system_config/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/system_config/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/system_config/{id}/", + "method": 3 + } + ] + }, + { + "name": "字典管理", + "icon": "book", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/dictionary", + "component": "system/dictionary/index", + "component_name": "dictionary", + "status": true, + "cache": false, + "visible": true, + "parent": 285, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/dictionary/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/dictionary/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/dictionary/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/dictionary/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/dictionary/{id}/", + "method": 3 + } + ] + }, + { + "name": "地区管理", + "icon": "map", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/areas", + "component": "system/areas/index", + "component_name": "areas", + "status": true, + "cache": false, + "visible": true, + "parent": 285, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/area/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/area/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "Create", + "api": "/api/system/area/", + "method": 1 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/area/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/area/{id}/", + "method": 3 + } + ] + }, + { + "name": "附件管理", + "icon": "file-text-o", + "sort": 3, + "is_link": false, + "is_catalog": false, + "web_path": "/file", + "component": "system/fileList/index", + "component_name": "file", + "status": true, + "cache": false, + "visible": true, + "parent": 285, + "children": [], + "menu_button": [ + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/file/{id}/", + "method": 0 + }, + { + "name": "查询", + "value": "Search", + "api": "/api/system/file/", + "method": 0 + }, + { + "name": "编辑", + "value": "Update", + "api": "/api/system/file/{id}/", + "method": 1 + }, + { + "name": "删除", + "value": "Delete", + "api": "/api/system/file/{id}/", + "method": 3 + } + ] + } + ], + "menu_button": [] + }, + { + "name": "日志管理", + "icon": "book", + "sort": 3, + "is_link": false, + "is_catalog": true, + "web_path": "", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "登录日志", + "icon": "file-text", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/loginLog", + "component": "system/log/loginLog/index", + "component_name": "loginLog", + "status": true, + "cache": false, + "visible": true, + "parent": 218, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/login_log/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/login_log/{id}/", + "method": 0 + } + ] + }, + { + "name": "操作日志", + "icon": "file-code-o", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/operationLog", + "component": "system/log/operationLog/index", + "component_name": "operationLog", + "status": true, + "cache": false, + "visible": true, + "parent": 218, + "children": [], + "menu_button": [ + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/operation_log/{id}/", + "method": 0 + }, + { + "name": "查询", + "value": "Search", + "api": "/api/system/operation_log/", + "method": 0 + } + ] + }, + { + "name": "前端错误日志", + "icon": "bug", + "sort": 4, + "is_link": false, + "is_catalog": false, + "web_path": "/frontendLog", + "component": "system/log/frontendLog/index", + "component_name": "frontendLog", + "status": true, + "cache": false, + "visible": true, + "parent": 218, + "children": [], + "menu_button": [] + } + ], + "menu_button": [] + }, + { + "name": "日志管理", + "icon": "book", + "sort": 3, + "is_link": false, + "is_catalog": true, + "web_path": "", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "登录日志", + "icon": "file-text", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/loginLog", + "component": "system/log/loginLog/index", + "component_name": "loginLog", + "status": true, + "cache": false, + "visible": true, + "parent": 236, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/login_log/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/login_log/{id}/", + "method": 0 + } + ] + }, + { + "name": "操作日志", + "icon": "file-code-o", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/operationLog", + "component": "system/log/operationLog/index", + "component_name": "operationLog", + "status": true, + "cache": false, + "visible": true, + "parent": 236, + "children": [], + "menu_button": [ + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/operation_log/{id}/", + "method": 0 + }, + { + "name": "查询", + "value": "Search", + "api": "/api/system/operation_log/", + "method": 0 + } + ] + }, + { + "name": "前端错误日志", + "icon": "bug", + "sort": 4, + "is_link": false, + "is_catalog": false, + "web_path": "/frontendLog", + "component": "system/log/frontendLog/index", + "component_name": "frontendLog", + "status": true, + "cache": false, + "visible": true, + "parent": 236, + "children": [], + "menu_button": [] + } + ], + "menu_button": [] + }, + { + "name": "日志管理", + "icon": "book", + "sort": 3, + "is_link": false, + "is_catalog": true, + "web_path": "", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "登录日志", + "icon": "file-text", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/loginLog", + "component": "system/log/loginLog/index", + "component_name": "loginLog", + "status": true, + "cache": false, + "visible": true, + "parent": 254, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/login_log/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/login_log/{id}/", + "method": 0 + } + ] + }, + { + "name": "操作日志", + "icon": "file-code-o", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/operationLog", + "component": "system/log/operationLog/index", + "component_name": "operationLog", + "status": true, + "cache": false, + "visible": true, + "parent": 254, + "children": [], + "menu_button": [ + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/operation_log/{id}/", + "method": 0 + }, + { + "name": "查询", + "value": "Search", + "api": "/api/system/operation_log/", + "method": 0 + } + ] + }, + { + "name": "前端错误日志", + "icon": "bug", + "sort": 4, + "is_link": false, + "is_catalog": false, + "web_path": "/frontendLog", + "component": "system/log/frontendLog/index", + "component_name": "frontendLog", + "status": true, + "cache": false, + "visible": true, + "parent": 254, + "children": [], + "menu_button": [] + } + ], + "menu_button": [] + }, + { + "name": "日志管理", + "icon": "book", + "sort": 3, + "is_link": false, + "is_catalog": true, + "web_path": "", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "登录日志", + "icon": "file-text", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/loginLog", + "component": "system/log/loginLog/index", + "component_name": "loginLog", + "status": true, + "cache": false, + "visible": true, + "parent": 272, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/login_log/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/login_log/{id}/", + "method": 0 + } + ] + }, + { + "name": "操作日志", + "icon": "file-code-o", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/operationLog", + "component": "system/log/operationLog/index", + "component_name": "operationLog", + "status": true, + "cache": false, + "visible": true, + "parent": 272, + "children": [], + "menu_button": [ + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/operation_log/{id}/", + "method": 0 + }, + { + "name": "查询", + "value": "Search", + "api": "/api/system/operation_log/", + "method": 0 + } + ] + }, + { + "name": "前端错误日志", + "icon": "bug", + "sort": 4, + "is_link": false, + "is_catalog": false, + "web_path": "/frontendLog", + "component": "system/log/frontendLog/index", + "component_name": "frontendLog", + "status": true, + "cache": false, + "visible": true, + "parent": 272, + "children": [], + "menu_button": [] + } + ], + "menu_button": [] + }, + { + "name": "日志管理", + "icon": "book", + "sort": 3, + "is_link": false, + "is_catalog": true, + "web_path": "", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [ + { + "name": "登录日志", + "icon": "file-text", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/loginLog", + "component": "system/log/loginLog/index", + "component_name": "loginLog", + "status": true, + "cache": false, + "visible": true, + "parent": 290, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "Search", + "api": "/api/system/login_log/", + "method": 0 + }, + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/login_log/{id}/", + "method": 0 + } + ] + }, + { + "name": "操作日志", + "icon": "file-code-o", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/operationLog", + "component": "system/log/operationLog/index", + "component_name": "operationLog", + "status": true, + "cache": false, + "visible": true, + "parent": 290, + "children": [], + "menu_button": [ + { + "name": "详情", + "value": "Retrieve", + "api": "/api/system/operation_log/{id}/", + "method": 0 + }, + { + "name": "查询", + "value": "Search", + "api": "/api/system/operation_log/", + "method": 0 + } + ] + }, + { + "name": "前端错误日志", + "icon": "bug", + "sort": 4, + "is_link": false, + "is_catalog": false, + "web_path": "/frontendLog", + "component": "system/log/frontendLog/index", + "component_name": "frontendLog", + "status": true, + "cache": false, + "visible": true, + "parent": 290, + "children": [], + "menu_button": [] + } + ], + "menu_button": [] + }, + { + "name": "DVAdmin官网", + "icon": "external-link", + "sort": 4, + "is_link": true, + "is_catalog": false, + "web_path": "https://django-vue-admin.com", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [], + "menu_button": [] + }, + { + "name": "DVAdmin官网", + "icon": "external-link", + "sort": 4, + "is_link": true, + "is_catalog": false, + "web_path": "https://django-vue-admin.com", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [], + "menu_button": [] + }, + { + "name": "DVAdmin官网", + "icon": "external-link", + "sort": 4, + "is_link": true, + "is_catalog": false, + "web_path": "https://django-vue-admin.com", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [], + "menu_button": [] + }, + { + "name": "DVAdmin官网", + "icon": "external-link", + "sort": 4, + "is_link": true, + "is_catalog": false, + "web_path": "https://django-vue-admin.com", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [], + "menu_button": [] + }, + { + "name": "DVAdmin官网", + "icon": "external-link", + "sort": 4, + "is_link": true, + "is_catalog": false, + "web_path": "https://django-vue-admin.com", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "parent": null, + "children": [], + "menu_button": [] + } +] diff --git a/backend/dvadmin/system/fixtures/init_role.json b/backend/dvadmin/system/fixtures/init_role.json new file mode 100644 index 0000000..f98462d --- /dev/null +++ b/backend/dvadmin/system/fixtures/init_role.json @@ -0,0 +1,11 @@ +[ + { + "name": "管理员", + "key": "admin", + "sort": 1, + "status": true, + "admin": true, + "data_range": 3, + "remark": null + } +] diff --git a/backend/dvadmin/system/fixtures/init_systemconfig.json b/backend/dvadmin/system/fixtures/init_systemconfig.json new file mode 100644 index 0000000..ed4c967 --- /dev/null +++ b/backend/dvadmin/system/fixtures/init_systemconfig.json @@ -0,0 +1,197 @@ +[ + { + "parent": null, + "title": "基础配置", + "key": "base", + "value": null, + "sort": 0, + "status": true, + "data_options": null, + "form_item_type": 0, + "rule": null, + "placeholder": null, + "setting": null, + "children": [ + { + "parent": 10, + "title": "开启验证码", + "key": "captcha_state", + "value": true, + "sort": 1, + "status": true, + "data_options": null, + "form_item_type": 9, + "rule": [ + { + "message": "必填项不能为空", + "required": true + } + ], + "placeholder": "请选择", + "setting": null, + "children": [] + }, + { + "parent": 10, + "title": "创建用户默认密码", + "key": "default_password", + "value": "admin123456", + "sort": 2, + "status": true, + "data_options": null, + "form_item_type": 0, + "rule": [ + { + "message": "必填项不能为空", + "required": true + } + ], + "placeholder": "请输入默认密码", + "setting": null, + "children": [] + } + ] + }, + { + "parent": null, + "title": "登录页配置", + "key": "login", + "value": null, + "sort": 1, + "status": true, + "data_options": null, + "form_item_type": 0, + "rule": null, + "placeholder": null, + "setting": null, + "children": [ + { + "parent": 1, + "title": "网站名称", + "key": "site_name", + "value": "企业级后台管理系统", + "sort": 1, + "status": true, + "data_options": null, + "form_item_type": 0, + "rule": [ + { + "message": "必填项不能为空", + "required": true + } + ], + "placeholder": "请输入网站名称", + "setting": null, + "children": [] + }, + { + "parent": 1, + "title": "登录网站logo", + "key": "site_logo", + "value": null, + "sort": 2, + "status": true, + "data_options": null, + "form_item_type": 7, + "rule": [], + "placeholder": "请上传网站logo", + "setting": null, + "children": [] + }, + { + "parent": 1, + "title": "登录页背景图", + "key": "login_background", + "value": null, + "sort": 3, + "status": true, + "data_options": null, + "form_item_type": 7, + "rule": [], + "placeholder": "请上传登录背景页", + "setting": null, + "children": [] + }, + { + "parent": 1, + "title": "版权信息", + "key": "copyright", + "value": "2021-2022 django-vue-admin.com 版权所有", + "sort": 4, + "status": true, + "data_options": null, + "form_item_type": 0, + "rule": [ + { + "message": "必填项不能为空", + "required": true + } + ], + "placeholder": "请输入版权信息", + "setting": null, + "children": [] + }, + { + "parent": 1, + "title": "备案信息", + "key": "keep_record", + "value": "晋ICP备18005113号-3", + "sort": 5, + "status": true, + "data_options": null, + "form_item_type": 0, + "rule": [ + { + "message": "必填项不能为空", + "required": true + } + ], + "placeholder": "请输入备案信息", + "setting": null, + "children": [] + }, + { + "parent": 1, + "title": "帮助链接", + "key": "help_url", + "value": "https://django-vue-admin.com", + "sort": 6, + "status": true, + "data_options": null, + "form_item_type": 0, + "rule": "", + "placeholder": "请输入帮助信息", + "setting": null, + "children": [] + }, + { + "parent": 1, + "title": "隐私链接", + "key": "privacy_url", + "value": "#", + "sort": 7, + "status": true, + "data_options": null, + "form_item_type": 0, + "rule": [], + "placeholder": "请填写隐私链接", + "setting": null, + "children": [] + }, + { + "parent": 1, + "title": "条款链接", + "key": "clause_url", + "value": "#", + "sort": 8, + "status": true, + "data_options": null, + "form_item_type": 0, + "rule": [], + "placeholder": "请输入条款链接", + "setting": null, + "children": [] + } + ] + } +] \ No newline at end of file diff --git a/backend/dvadmin/system/fixtures/init_users.json b/backend/dvadmin/system/fixtures/init_users.json new file mode 100644 index 0000000..781cc83 --- /dev/null +++ b/backend/dvadmin/system/fixtures/init_users.json @@ -0,0 +1,38 @@ +[ + { + "username": "admin", + "email": "dvadmin@django-vue-admin.com", + "mobile": "18888888888", + "avatar": "", + "name": "管理员", + "gender": 1, + "user_type": 0, + "dept": 1, + "role": [], + "first_name": "", + "last_name": "", + "is_staff": true, + "is_active": true, + "password": "pbkdf2_sha256$260000$g17x5wlSiW1FZAh1Eudchw$ZeSAqj3Xak0io8v/pmPW0BX9EX5R2zFXDwbbD68oBFk=", + "last_login": null, + "is_superuser": false + }, + { + "username": "superadmin", + "email": "dvadmin@django-vue-admin.com", + "mobile": "13333333333", + "avatar": null, + "name": "超级管理员", + "gender": 1, + "user_type": 0, + "dept": 1, + "role": [], + "first_name": "", + "last_name": "", + "is_staff": true, + "is_active": true, + "password": "pbkdf2_sha256$260000$g17x5wlSiW1FZAh1Eudchw$ZeSAqj3Xak0io8v/pmPW0BX9EX5R2zFXDwbbD68oBFk=", + "last_login": null, + "is_superuser": true + } +] diff --git a/backend/dvadmin/system/fixtures/initialize.py b/backend/dvadmin/system/fixtures/initialize.py new file mode 100644 index 0000000..7b57df7 --- /dev/null +++ b/backend/dvadmin/system/fixtures/initialize.py @@ -0,0 +1,77 @@ +# 初始化 +import os + +import django +from rest_framework import request + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "application.settings") +django.setup() + +from dvadmin.system.views.user import UsersInitSerializer +from application.settings import BASE_DIR +from dvadmin.system.views.menu import MenuInitSerializer +from dvadmin.utils.core_initialize import CoreInitialize +from dvadmin.system.models import Users +from dvadmin.system.views.role import RoleInitSerializer +from dvadmin.system.views.api_white_list import ApiWhiteListInitSerializer +from dvadmin.system.views.dept import DeptInitSerializer +from dvadmin.system.views.dictionary import DictionaryInitSerializer +from dvadmin.system.views.system_config import SystemConfigInitSerializer + + +class Initialize(CoreInitialize): + + def init_dept(self): + """ + 初始化部门信息 + """ + self.init_base(DeptInitSerializer, unique_fields=['name', 'parent']) + + def init_role(self): + """ + 初始化角色信息 + """ + self.init_base(RoleInitSerializer, unique_fields=['key']) + + def init_users(self): + """ + 初始化用户信息 + """ + self.init_base(UsersInitSerializer, unique_fields=['username']) + + def init_menu(self): + """ + 初始化菜单信息 + """ + self.init_base(MenuInitSerializer, unique_fields=['name', 'web_path', 'component', 'component_name']) + + def init_api_white_list(self): + """ + 初始API白名单 + """ + self.init_base(ApiWhiteListInitSerializer, unique_fields=['url', 'method', ]) + + def init_dictionary(self): + """ + 初始化字典表 + """ + self.init_base(DictionaryInitSerializer, unique_fields=['value', 'parent', ]) + + def init_system_config(self): + """ + 初始化系统配置表 + """ + self.init_base(SystemConfigInitSerializer, unique_fields=['key', 'parent', ]) + + def run(self): + self.init_dept() + self.init_role() + self.init_users() + self.init_menu() + self.init_api_white_list() + self.init_dictionary() + self.init_system_config() + + +if __name__ == "__main__": + Initialize(app='dvadmin.system').run() diff --git a/backend/dvadmin/system/init_data.py b/backend/dvadmin/system/init_data.py deleted file mode 100644 index e3e6ff4..0000000 --- a/backend/dvadmin/system/init_data.py +++ /dev/null @@ -1,2363 +0,0 @@ -import datetime - -dept_data = [ - { - "id": 1, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "DVAdmin团队", - "sort": 1, - "owner": "", - "phone": "", - "email": "", - "status": 1, - "creator_id": 1, - "parent_id": None, - }, - { - "id": 2, - "description": None, - "modifier": "1", - "dept_belong_id": 2, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "技术部", - "sort": 1, - "owner": None, - "phone": None, - "email": None, - "status": 1, - "creator_id": 1, - "parent_id": 1, - }, - { - "id": 3, - "description": "", - "modifier": "1", - "dept_belong_id": 3, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "运营部", - "sort": 2, - "owner": "", - "phone": "", - "email": "", - "status": 1, - "creator_id": 1, - "parent_id": 1, - }, -] - -button_data = [ - { - "id": 1, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "新增", - "value": "Create", - "creator_id": 1, - }, - { - "id": 2, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "编辑", - "value": "Update", - "creator_id": 1, - }, - { - "id": 3, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "删除", - "value": "Delete", - "creator_id": 1, - }, - { - "id": 4, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "详情", - "value": "Retrieve", - "creator_id": 1, - }, - { - "id": 5, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "查询", - "value": "Search", - "creator_id": 1, - }, - { - "id": 6, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "保存", - "value": "Save", - "creator_id": 1, - }, - { - "id": 7, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "导入", - "value": "Import", - "creator_id": 1, - }, - { - "id": 8, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "导出", - "value": "Export", - "creator_id": 1, - }, - { - "id": 9, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "重设密码", - "value": "ResetPassword", - "creator_id": 1, - }, - { - "id": 10, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "重置密码", - "value": "DefaultPassword", - "creator_id": 1, - }, -] - -menu_data = [ - { - "id": 1, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "navicon", - "name": "菜单管理", - "sort": 1, - "is_link": 0, - "web_path": "/menu", - "component": "system/menu", - "component_name": "menu", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 2, - "is_catalog": 0, - }, - { - "id": 2, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "cog", - "name": "系统管理", - "sort": 1, - "is_link": 0, - "web_path": "", - "component": "", - "component_name": "", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": None, - "is_catalog": 1, - }, - { - "id": 3, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "users", - "name": "用户管理", - "sort": 6, - "is_link": 0, - "web_path": "/user", - "component": "system/user/index", - "component_name": "user", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 2, - "is_catalog": 0, - }, - { - "id": 4, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "address-book", - "name": "角色管理", - "sort": 4, - "is_link": 0, - "web_path": "/role", - "component": "system/role/index", - "component_name": "role", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 2, - "is_catalog": 0, - }, - { - "id": 5, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "bank", - "name": "部门管理", - "sort": 3, - "is_link": 0, - "web_path": "/dept", - "component": "system/dept/index", - "component_name": "dept", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 2, - "is_catalog": 0, - }, - { - "id": 7, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "dot-circle-o", - "name": "菜单按钮", - "sort": 2, - "is_link": 0, - "web_path": "/menuButton", - "component": "system/menuButton/index", - "component_name": "menuButton", - "status": 1, - "cache": 0, - "visible": 0, - "creator_id": 1, - "parent_id": 2, - "is_catalog": 0, - }, - { - "id": 8, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "bullseye", - "name": "按钮管理", - "sort": 2, - "is_link": 0, - "web_path": "/button", - "component": "system/button/index", - "component_name": "button", - "status": 1, - "cache": 0, - "visible": 0, - "creator_id": 1, - "parent_id": 2, - "is_catalog": 0, - }, - { - "id": 9, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "compass", - "name": "接口白名单", - "sort": 7, - "is_link": 0, - "web_path": "/apiWhiteList", - "component": "system/whiteList/index", - "component_name": "whiteList", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 2, - "is_catalog": 0, - }, - { - "id": 10, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "book", - "name": "字典管理", - "sort": 1, - "is_link": 0, - "web_path": "/dictionary", - "component": "system/dictionary/index", - "component_name": "dictionary", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 17, - "is_catalog": 0, - }, - { - "id": 11, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "map", - "name": "地区管理", - "sort": 2, - "is_link": 0, - "web_path": "/areas", - "component": "system/areas/index", - "component_name": "areas", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 17, - "is_catalog": 0, - }, - { - "id": 13, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "file-text-o", - "name": "附件管理", - "sort": 3, - "is_link": 0, - "web_path": "/file", - "component": "system/fileList/index", - "component_name": "file", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 17, - "is_catalog": 0, - }, - { - "id": 15, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "book", - "name": "日志管理", - "sort": 3, - "is_link": 0, - "web_path": "", - "component": "", - "component_name": "", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": None, - "is_catalog": 1, - }, - { - "id": 16, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "file-code-o", - "name": "操作日志", - "sort": 2, - "is_link": 0, - "web_path": "/operationLog", - "component": "system/log/operationLog/index", - "component_name": "operationLog", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 15, - "is_catalog": 0, - }, - { - "id": 17, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "cogs", - "name": "常规配置", - "sort": 2, - "is_link": 0, - "web_path": "", - "component": "", - "component_name": "", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": None, - "is_catalog": 1, - }, - { - "id": 18, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "external-link", - "name": "DVAdmin官网", - "sort": 4, - "is_link": 1, - "web_path": "https://django-vue-admin.com", - "component": "", - "component_name": "", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": None, - "is_catalog": 0, - }, - { - "id": 19, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "bug", - "name": "前端错误日志", - "sort": 4, - "is_link": 0, - "web_path": "/frontendLog", - "component": "system/log/frontendLog/index", - "component_name": "frontendLog", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 15, - "is_catalog": 0, - }, - { - "id": 20, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "file-text", - "name": "登录日志", - "sort": 1, - "is_link": 0, - "web_path": "/loginLog", - "component": "system/log/loginLog/index", - "component_name": "loginLog", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 15, - "is_catalog": 0, - }, - { - "id": 26, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "desktop", - "name": "系统配置", - "sort": 0, - "is_link": 0, - "is_catalog": 0, - "web_path": "/config", - "component": "system/config/index", - "component_name": "config", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 17 - } -] - -menu_button_data = [ - { - "id": 1, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "查询", - "value": "Search", - "api": "/api/system/menu/", - "method": 0, - "creator_id": 1, - "menu_id": 1, - }, - { - "id": 2, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "编辑", - "value": "Update", - "api": "/api/system/menu/{id}/", - "method": 2, - "creator_id": 1, - "menu_id": 1, - }, - { - "id": 3, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "新增", - "value": "Create", - "api": "/api/system/menu/", - "method": 1, - "creator_id": 1, - "menu_id": 1, - }, - { - "id": 4, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "详情", - "value": "Retrieve", - "api": "/api/system/menu/{id}/", - "method": 0, - "creator_id": 1, - "menu_id": 1, - }, - { - "id": 5, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "删除", - "value": "Delete", - "api": "/api/system/menu/{id}/", - "method": 3, - "creator_id": 1, - "menu_id": 1, - }, - { - "id": 6, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "编辑", - "value": "Update", - "api": "/api/system/user/{id}/", - "method": 2, - "creator_id": 1, - "menu_id": 3, - }, - { - "id": 7, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "查询", - "value": "Search", - "api": "/api/system/user/", - "method": 0, - "creator_id": 1, - "menu_id": 3, - }, - { - "id": 8, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "详情", - "value": "Retrieve", - "api": "/api/system/user/{id}/", - "method": 0, - "creator_id": 1, - "menu_id": 3, - }, - { - "id": 9, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "新增", - "value": "Create", - "api": "/api/system/user/", - "method": 1, - "creator_id": 1, - "menu_id": 3, - }, - { - "id": 10, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "删除", - "value": "Delete", - "api": "/api/system/user/{id}/", - "method": 3, - "creator_id": 1, - "menu_id": 3, - }, - { - "id": 11, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "编辑", - "value": "Update", - "api": "/api/system/role/{id}/", - "method": 2, - "creator_id": 1, - "menu_id": 4, - }, - { - "id": 12, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "查询", - "value": "Search", - "api": "/api/system/role/", - "method": 0, - "creator_id": 1, - "menu_id": 4, - }, - { - "id": 13, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "详情", - "value": "Retrieve", - "api": "/api/system/role/{id}/", - "method": 0, - "creator_id": 1, - "menu_id": 4, - }, - { - "id": 14, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "新增", - "value": "Create", - "api": "/api/system/role/", - "method": 1, - "creator_id": 1, - "menu_id": 4, - }, - { - "id": 15, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "删除", - "value": "Delete", - "api": "/api/system/role/{id}/", - "method": 3, - "creator_id": 1, - "menu_id": 4, - }, - { - "id": 16, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "编辑", - "value": "Update", - "api": "/api/system/dept/{id}/", - "method": 2, - "creator_id": 1, - "menu_id": 5, - }, - { - "id": 17, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "查询", - "value": "Search", - "api": "/api/system/dept/", - "method": 0, - "creator_id": 1, - "menu_id": 5, - }, - { - "id": 18, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "详情", - "value": "Retrieve", - "api": "/api/system/dept/{id}/", - "method": 0, - "creator_id": 1, - "menu_id": 5, - }, - { - "id": 19, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "新增", - "value": "Create", - "api": "/api/system/dept/", - "method": 1, - "creator_id": 1, - "menu_id": 5, - }, - { - "id": 20, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "删除", - "value": "Delete", - "api": "/api/system/dept/{id}/", - "method": 3, - "creator_id": 1, - "menu_id": 5, - }, - { - "id": 21, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "编辑", - "value": "Update", - "api": "/api/system/menu_button/{id}/", - "method": 2, - "creator_id": 1, - "menu_id": 7, - }, - { - "id": 22, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "查询", - "value": "Search", - "api": "/api/system/menu_button/", - "method": 0, - "creator_id": 1, - "menu_id": 7, - }, - { - "id": 23, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "新增", - "value": "Create", - "api": "/api/system/menu_button/", - "method": 1, - "creator_id": 1, - "menu_id": 7, - }, - { - "id": 24, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "删除", - "value": "Delete", - "api": "/api/system/menu_button/{id}/", - "method": 3, - "creator_id": 1, - "menu_id": 7, - }, - { - "id": 25, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "新增", - "value": "Create", - "api": "/api/system/button/", - "method": 1, - "creator_id": 1, - "menu_id": 8, - }, - { - "id": 26, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "编辑", - "value": "Update", - "api": "/api/system/button/{id}/", - "method": 2, - "creator_id": 1, - "menu_id": 8, - }, - { - "id": 27, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "查询", - "value": "Search", - "api": "/api/system/button/", - "method": 0, - "creator_id": 1, - "menu_id": 8, - }, - { - "id": 28, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "删除", - "value": "Delete", - "api": "/api/system/button/{id}/", - "method": 3, - "creator_id": 1, - "menu_id": 8, - }, - { - "id": 29, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "保存", - "value": "Save", - "api": "/api/system/role/{id}/", - "method": 2, - "creator_id": 1, - "menu_id": 6, - }, - { - "id": 30, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "编辑", - "value": "Update", - "api": "/api/system/api_white_list/{id}/", - "method": 2, - "creator_id": 1, - "menu_id": 9, - }, - { - "id": 31, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "查询", - "value": "Search", - "api": "/api/system/api_white_list/", - "method": 0, - "creator_id": 1, - "menu_id": 9, - }, - { - "id": 32, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "详情", - "value": "Retrieve", - "api": "/api/system/api_white_list/{id}/", - "method": 0, - "creator_id": 1, - "menu_id": 9, - }, - { - "id": 33, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "新增", - "value": "Create", - "api": "/api/system/api_white_list/", - "method": 1, - "creator_id": 1, - "menu_id": 9, - }, - { - "id": 34, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "删除", - "value": "Delete", - "api": "/api/system/api_white_list/{id}/", - "method": 3, - "creator_id": 1, - "menu_id": 9, - }, - { - "id": 35, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "编辑", - "value": "Update", - "api": "/api/system/dictionary/{id}/", - "method": 2, - "creator_id": 1, - "menu_id": 10, - }, - { - "id": 36, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "查询", - "value": "Search", - "api": "/api/system/dictionary/", - "method": 0, - "creator_id": 1, - "menu_id": 10, - }, - { - "id": 37, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "详情", - "value": "Retrieve", - "api": "/api/system/dictionary/{id}/", - "method": 0, - "creator_id": 1, - "menu_id": 10, - }, - { - "id": 38, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "新增", - "value": "Create", - "api": "/api/system/dictionary/", - "method": 1, - "creator_id": 1, - "menu_id": 10, - }, - { - "id": 39, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "删除", - "value": "Delete", - "api": "/api/system/dictionary/{id}/", - "method": 3, - "creator_id": 1, - "menu_id": 10, - }, - { - "id": 40, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "编辑", - "value": "Update", - "api": "/api/system/area/{id}/", - "method": 2, - "creator_id": 1, - "menu_id": 11, - }, - { - "id": 41, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "查询", - "value": "Search", - "api": "/api/system/area/", - "method": 0, - "creator_id": 1, - "menu_id": 11, - }, - { - "id": 42, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "详情", - "value": "Retrieve", - "api": "/api/system/area/{id}/", - "method": 0, - "creator_id": 1, - "menu_id": 11, - }, - { - "id": 43, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "新增", - "value": "Create", - "api": "/api/system/area/", - "method": 1, - "creator_id": 1, - "menu_id": 11, - }, - { - "id": 44, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "删除", - "value": "Delete", - "api": "/api/system/area/{id}/", - "method": 3, - "creator_id": 1, - "menu_id": 11, - }, - { - "id": 45, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "详情", - "value": "Retrieve", - "api": "/api/system/operation_log/{id}/", - "method": 0, - "creator_id": 1, - "menu_id": 16, - }, - { - "id": 46, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "查询", - "value": "Search", - "api": "/api/system/operation_log/", - "method": 0, - "creator_id": 1, - "menu_id": 16, - }, - { - "id": 47, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "导出", - "value": "Export", - "api": "/api/system/user/export/", - "method": 1, - "creator_id": 1, - "menu_id": 3, - }, - { - "id": 48, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "导入", - "value": "Import", - "api": "/api/system/user/import/", - "method": 1, - "creator_id": 1, - "menu_id": 3, - }, - { - "id": 49, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "详情", - "value": "Retrieve", - "api": "/api/system/file/{id}/", - "method": 0, - "creator_id": 1, - "menu_id": 13, - }, - { - "id": 50, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "查询", - "value": "Search", - "api": "/api/system/file/", - "method": 0, - "creator_id": 1, - "menu_id": 13, - }, - { - "id": 51, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "删除", - "value": "Delete", - "api": "/api/system/file/{id}/", - "method": 3, - "creator_id": 1, - "menu_id": 13, - }, - { - "id": 52, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "编辑", - "value": "Update", - "api": "/api/system/file/{id}/", - "method": 1, - "creator_id": 1, - "menu_id": 13, - }, - { - "id": 53, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "重设密码", - "value": "ResetPassword", - "api": "/api/system/user/reset_password/{id}/", - "method": 2, - "creator_id": 1, - "menu_id": 3, - }, - { - "id": 54, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "重置密码", - "value": "DefaultPassword", - "api": "/api/system/user/reset_to_default_password/{id}/", - "method": 2, - "creator_id": 1, - "menu_id": 3, - }, - { - "id": 55, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "查询", - "value": "Search", - "api": "/api/system/login_log/", - "method": 0, - "creator_id": 1, - "menu_id": 20, - }, - { - "id": 56, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "详情", - "value": "Retrieve", - "api": "/api/system/login_log/{id}/", - "method": 0, - "creator_id": 1, - "menu_id": 20, - }, - { - "id": 57, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "保存", - "value": "Save", - "api": "/api/system/role/{id}/", - "method": 2, - "creator_id": 1, - "menu_id": 4, - }, - { - "id": 71, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "查询", - "value": "Search", - "api": "/api/system/system_config/", - "method": 0, - "creator_id": 1, - "menu_id": 26 - }, - { - "id": 72, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "详情", - "value": "Retrieve", - "api": "/api/system/system_config/{id}/", - "method": 0, - "creator_id": 1, - "menu_id": 26 - }, - { - "id": 73, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "删除", - "value": "Delete", - "api": "/api/system/system_config/{id}/", - "method": 3, - "creator_id": 1, - "menu_id": 26 - }, - { - "id": 74, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "编辑", - "value": "Update", - "api": "/api/system/system_config/{id}/", - "method": 2, - "creator_id": 1, - "menu_id": 26 - }, - { - "id": 75, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "新增", - "value": "Create", - "api": "/api/system/system_config/", - "method": 1, - "creator_id": 1, - "menu_id": 26 - } -] - -role_data = [ - { - "id": 1, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "name": "管理员", - "key": "admin", - "sort": 1, - "status": 1, - "admin": 1, - "data_range": 3, - "menu": [ele.get("id") for ele in menu_data], - "permission": [ele.get("id") for ele in menu_button_data], - "remark": None, - "creator_id": 1, - } -] - -staff_data = [ - { - "password": "pbkdf2_sha256$260000$g17x5wlSiW1FZAh1Eudchw$ZeSAqj3Xak0io8v/pmPW0BX9EX5R2zFXDwbbD68oBFk=", - "last_login": None, - "is_superuser": 1, - "first_name": "", - "last_name": "", - "is_staff": 1, - "is_active": 1, - "id": 1, - "description": None, - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "username": "superadmin", - "email": "dvadmin@django-vue-admin.com", - "mobile": "13333333333", - "avatar": None, - "name": "超级管理员", - "gender": 1, - "creator_id": None, - "dept_id": 1, - }, - { - "password": "pbkdf2_sha256$260000$g17x5wlSiW1FZAh1Eudchw$ZeSAqj3Xak0io8v/pmPW0BX9EX5R2zFXDwbbD68oBFk=", - "last_login": None, - "is_superuser": 0, - "first_name": "", - "last_name": "", - "is_staff": 1, - "is_active": 1, - "id": 2, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "username": "admin", - "email": "dvadmin@django-vue-admin.com", - "mobile": "18888888888", - "avatar": "", - "name": "管理员", - "gender": 1, - "creator_id": None, - "dept_id": 1, - "role": [1], - }, -] - -dictionary_data = [ - { - "id": 1, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "启用/禁用-布尔值", - "value": "button_status_bool", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": None, - "is_value": 0, - "type": 0, - }, - { - "id": 2, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "启用", - "value": "true", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": 1, - "is_value": 1, - "type": 6, - }, - { - "id": 5, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "是/否-布尔值", - "value": "button_whether_bool", - "status": 1, - "sort": 3, - "remark": None, - "creator_id": 1, - "parent_id": None, - "is_value": 0, - "type": 0, - }, - { - "id": 6, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "禁用", - "value": "false", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": 1, - "is_value": 1, - "type": 6, - }, - { - "id": 7, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "启用/禁用-数字值", - "value": "button_status_number", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": None, - "is_value": 0, - "type": 0, - }, - { - "id": 8, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "启用", - "value": "1", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": 7, - "is_value": 1, - "type": 1, - }, - { - "id": 9, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "禁用", - "value": "0", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": 7, - "is_value": 1, - "type": 1, - }, - { - "id": 10, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "是/否-数字值", - "value": "button_whether_number", - "status": 1, - "sort": 4, - "remark": None, - "creator_id": 1, - "parent_id": None, - "is_value": 0, - "type": 0, - }, - { - "id": 11, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "是", - "value": "true", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": 5, - "is_value": 1, - "type": 6, - }, - { - "id": 12, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "否", - "value": "false", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": 5, - "is_value": 1, - "type": 6, - }, - { - "id": 13, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "是", - "value": "1", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": 10, - "is_value": 1, - "type": 1, - }, - { - "id": 14, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "否", - "value": "2", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": 10, - "is_value": 1, - "type": 1, - }, - { - "id": 15, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "用户类型", - "value": "user_type", - "status": 1, - "sort": 5, - "remark": None, - "creator_id": 1, - "parent_id": None, - "is_value": 0, - "type": 0, - }, - { - "id": 16, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "后台用户", - "value": "0", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": 15, - "is_value": 1, - "type": 1, - }, - { - "id": 17, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "前台用户", - "value": "1", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": 15, - "is_value": 1, - "type": 1, - }, - { - "id": 18, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "性别", - "value": "gender", - "status": 1, - "sort": 6, - "remark": None, - "creator_id": 1, - "parent_id": None, - "is_value": 0, - "type": 0, - }, - { - "id": 19, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "未知", - "value": "0", - "status": 1, - "sort": 0, - "remark": None, - "creator_id": 1, - "parent_id": 18, - "is_value": 1, - "type": 1, - }, - { - "id": 20, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "男", - "value": "1", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": 18, - "is_value": 1, - "type": 1, - }, - { - "id": 21, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "女", - "value": "2", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": 18, - "is_value": 1, - "type": 1, - }, - { - "id": 49, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "表单类型", - "value": "config_form_type", - "status": 1, - "sort": 5, - "remark": None, - "creator_id": 1, - "parent_id": None, - "is_value": 0, - "type": 0, - "color": None - }, - { - "id": 50, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "text", - "value": "0", - "status": 1, - "sort": 0, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": None - }, - { - "id": 51, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "datetime", - "value": "1", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": None - }, - { - "id": 52, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "date", - "value": "2", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": None - }, - { - "id": 53, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "textarea", - "value": "3", - "status": 1, - "sort": 0, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 54, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "select", - "value": "4", - "status": 1, - "sort": 4, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": None - }, - { - "id": 55, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "checkbox", - "value": "5", - "status": 1, - "sort": 5, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": None - }, - { - "id": 56, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "radio", - "value": "6", - "status": 1, - "sort": 6, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": None - }, - { - "id": 57, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "图片(单张)", - "value": "7", - "status": 1, - "sort": 8, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 58, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "文件附件", - "value": "8", - "status": 1, - "sort": 7, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 59, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "switch", - "value": "9", - "status": 1, - "sort": 6, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 60, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "number", - "value": "10", - "status": 1, - "sort": 0, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 61, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "数组", - "value": "11", - "status": 1, - "sort": 11, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 62, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "图片(多张)", - "value": "12", - "status": 1, - "sort": 9, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 63, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "关联表", - "value": "13", - "status": 1, - "sort": 13, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 64, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "关联表(多选)", - "value": "14", - "status": 1, - "sort": 14, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 65, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "time", - "value": "15", - "status": 1, - "sort": 3, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - } -] - -system_config_data = [ - { - "id": 1, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "title": "登录页配置", - "key": "login", - "value": None, - "sort": 1, - "status": 1, - "data_options": None, - "form_item_type": 0, - "rule": None, - "placeholder": None, - "setting": None, - "creator_id": 1, - "parent_id": None - }, - { - "id": 2, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "title": "网站名称", - "key": "site_name", - "value": "企业级后台管理系统", - "sort": 1, - "status": 1, - "data_options": None, - "form_item_type": 0, - "rule": [{"message": "必填项不能为空", "required": True}], - "placeholder": "请输入网站名称", - "setting": None, - "creator_id": 1, - "parent_id": 1 - }, - { - "id": 3, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "title": "登录网站logo", - "key": "site_logo", - "value": None, - "sort": 2, - "status": 1, - "data_options": None, - "form_item_type": 7, - "rule": [], - "placeholder": "请上传网站logo", - "setting": None, - "creator_id": 1, - "parent_id": 1 - }, - { - "id": 4, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "title": "登录页背景图", - "key": "login_background", - "value": None, - "sort": 3, - "status": 1, - "data_options": None, - "form_item_type": 7, - "rule": [], - "placeholder": "请上传登录背景页", - "setting": None, - "creator_id": 1, - "parent_id": 1 - }, - { - "id": 5, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "title": "版权信息", - "key": "copyright", - "value": "2021-2022 django-vue-admin.com 版权所有", - "sort": 4, - "status": 1, - "data_options": None, - "form_item_type": 0, - "rule": [{"message": "必填项不能为空", "required": True}], - "placeholder": "请输入版权信息", - "setting": None, - "creator_id": 1, - "parent_id": 1 - }, - { - "id": 6, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "title": "备案信息", - "key": "keep_record", - "value": "晋ICP备18005113号-3", - "sort": 5, - "status": 1, - "data_options": None, - "form_item_type": 0, - "rule": [{"message": "必填项不能为空", "required": True}], - "placeholder": "请输入备案信息", - "setting": None, - "creator_id": 1, - "parent_id": 1 - }, - { - "id": 7, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "title": "帮助链接", - "key": "help_url", - "value": "https://django-vue-admin.com", - "sort": 6, - "status": 1, - "data_options": None, - "form_item_type": 0, - "rule": "", - "placeholder": "请输入帮助信息", - "setting": None, - "creator_id": 1, - "parent_id": 1 - }, - { - "id": 8, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "title": "隐私链接", - "key": "privacy_url", - "value": "#", - "sort": 7, - "status": 1, - "data_options": None, - "form_item_type": 0, - "rule": [], - "placeholder": "请填写隐私链接", - "setting": None, - "creator_id": 1, - "parent_id": 1 - }, - { - "id": 9, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "title": "条款链接", - "key": "clause_url", - "value": "#", - "sort": 8, - "status": 1, - "data_options": None, - "form_item_type": 0, - "rule": [], - "placeholder": "请输入条款链接", - "setting": None, - "creator_id": 1, - "parent_id": 1 - }, - { - "id": 10, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "title": "基础配置", - "key": "base", - "value": None, - "sort": 0, - "status": 1, - "data_options": None, - "form_item_type": 0, - "rule": None, - "placeholder": None, - "setting": None, - "creator_id": 1, - "parent_id": None - }, - { - "id": 11, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "title": "开启验证码", - "key": "captcha_state", - "value": True, - "sort": 1, - "status": 1, - "data_options": None, - "form_item_type": 9, - "rule": [{"message": "必填项不能为空", "required": True}], - "placeholder": "请选择", - "setting": None, - "creator_id": 1, - "parent_id": 10 - }, - { - "id": 12, - "description": None, - "modifier": "2", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "title": "创建用户默认密码", - "key": "default_password", - "value": "admin123456", - "sort": 2, - "status": 1, - "data_options": None, - "form_item_type": 0, - "rule": [{"message": "必填项不能为空", "required": True}], - "placeholder": "请输入默认密码", - "setting": None, - "creator_id": 1, - "parent_id": 10 - } -] diff --git a/backend/dvadmin/system/initialize.py b/backend/dvadmin/system/initialize.py deleted file mode 100644 index 478de17..0000000 --- a/backend/dvadmin/system/initialize.py +++ /dev/null @@ -1,109 +0,0 @@ -# 初始化 -import os - -import django - -from dvadmin.utils.core_initialize import CoreInitialize - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "application.settings") -django.setup() - -from dvadmin.system.models import ( - Dept, - Button, - Menu, - MenuButton, - Role, - Users, - Dictionary, SystemConfig, -) - -from .init_data import ( - dept_data, - button_data, - menu_data, - menu_button_data, - role_data, - staff_data, - dictionary_data, - system_config_data -) - - -class Initialize(CoreInitialize): - creator_id = 1 - - def init_dept(self): - """ - 初始化部门信息 - """ - self.dept_data = dept_data - self.save(Dept, self.dept_data, "部门信息") - - def init_button(self): - """ - 初始化按钮表 - """ - self.button_data = button_data - self.save(Button, self.button_data, "权限表标识") - - def init_menu(self): - """ - 初始化菜单表 - """ - self.menu_data = menu_data - self.save(Menu, self.menu_data, "菜单表") - - def init_menu_button(self): - """ - 初始化菜单按钮表 - """ - self.menu_button_data = menu_button_data - self.save(MenuButton, self.menu_button_data, "菜单权限表") - - def init_role(self): - """ - 初始化角色表 - """ - data = role_data - self.save(Role, data, "角色表") - - def init_users(self): - """ - 初始化用户表 - """ - data = staff_data - self.save(Users, data, "用户表", no_reset=False) - - def init_dictionary(self): - """ - 初始化字典表 - """ - data = dictionary_data - self.save(Dictionary, data, "字典表", no_reset=False) - - def init_system_config(self): - """ - 初始化系统配置表 - """ - data = system_config_data - self.save(SystemConfig, data, "系统配置表", no_reset=False) - - def run(self): - self.init_dept() - self.init_button() - self.init_menu() - self.init_menu_button() - self.init_role() - self.init_users() - self.init_dictionary() - self.init_system_config() - - -# 项目init 初始化,默认会执行 main 方法进行初始化 -def main(reset=False): - Initialize(reset).run() - - -if __name__ == "__main__": - main() diff --git a/backend/dvadmin/system/management/commands/generate_init_json.py b/backend/dvadmin/system/management/commands/generate_init_json.py new file mode 100644 index 0000000..6b265ef --- /dev/null +++ b/backend/dvadmin/system/management/commands/generate_init_json.py @@ -0,0 +1,100 @@ +import json +import logging +import os + +import django +from django.db.models import QuerySet + +from dvadmin.system.views.system_config import SystemConfigInitSerializer + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'application.settings') +django.setup() +from django.core.management.base import BaseCommand + +from application.settings import BASE_DIR +from dvadmin.system.models import Menu, Users, Dept, Role, ApiWhiteList, Dictionary, SystemConfig +from dvadmin.system.views.api_white_list import ApiWhiteListInitSerializer +from dvadmin.system.views.dept import DeptInitSerializer +from dvadmin.system.views.dictionary import DictionaryInitSerializer +from dvadmin.system.views.menu import MenuInitSerializer +from dvadmin.system.views.role import RoleInitSerializer +from dvadmin.system.views.user import UsersInitSerializer + +logger = logging.getLogger(__name__) + + +class Command(BaseCommand): + """ + 生产初始化菜单: python3 manage.py generate_init_json 生成初始化的model名 + 例如: + 全部生成:python3 manage.py generate_init_json + 只生成某个model的: python3 manage.py generate_init_json users + """ + + def serializer_data(self, serializer, query_set: QuerySet): + serializer = serializer(query_set, many=True) + data = json.loads(json.dumps(serializer.data, ensure_ascii=False)) + with open(os.path.join(BASE_DIR, f'init_{query_set.model._meta.model_name}.json'), 'w') as f: + json.dump(data, f, indent=4, ensure_ascii=False) + return + + def add_arguments(self, parser): + parser.add_argument("generate_name", nargs="*", type=str, help="初始化生成的表名") + + def generate_users(self): + self.serializer_data(UsersInitSerializer, Users.objects.all()) + + def generate_role(self): + self.serializer_data(RoleInitSerializer, Role.objects.all()) + + def generate_dept(self): + self.serializer_data(DeptInitSerializer, Dept.objects.filter(parent_id__isnull=True)) + + def generate_menu(self): + self.serializer_data(MenuInitSerializer, Menu.objects.filter(parent_id__isnull=True)) + + def generate_api_white_list(self): + self.serializer_data(ApiWhiteListInitSerializer, ApiWhiteList.objects.all()) + + def generate_dictionary(self): + self.serializer_data(DictionaryInitSerializer, Dictionary.objects.filter(parent_id__isnull=True)) + + def generate_system_config(self): + self.serializer_data(SystemConfigInitSerializer, SystemConfig.objects.filter(parent_id__isnull=True)) + + def handle(self, *args, **options): + generate_name = options.get('generate_name') + generate_name_dict = { + "users": self.generate_users, + "role": self.generate_role, + "dept": self.generate_dept, + "menu": self.generate_menu, + "api_white_list": self.generate_api_white_list, + "dictionary": self.generate_dictionary, + "system_config": self.generate_system_config, + } + if not generate_name: + for ele in generate_name_dict.keys(): + generate_name_dict[ele]() + return + + for generate_name in generate_name: + if generate_name not in generate_name_dict: + print(f"该初始化方法尚未配置\n{generate_name_dict}") + raise Exception(f"该初始化方法尚未配置,已配置项:{list(generate_name_dict.keys())}") + generate_name_dict[generate_name]() + return + + +if __name__ == '__main__': + # with open(os.path.join(BASE_DIR, 'temp_init_menu.json')) as f: + # for menu_data in json.load(f): + # menu_data['creator'] = 1 + # menu_data['modifier'] = 1 + # menu_data['dept_belong_id'] = 1 + # request.user = Users.objects.order_by('create_datetime').first() + # serializer = MenuInitSerializer(data=menu_data, request=request) + # serializer.is_valid(raise_exception=True) + # serializer.save() + a = Users.objects.filter() + print(type(Users.objects.filter())) diff --git a/backend/dvadmin/system/management/commands/init.py b/backend/dvadmin/system/management/commands/init.py index f249c6d..d49bc0f 100644 --- a/backend/dvadmin/system/management/commands/init.py +++ b/backend/dvadmin/system/management/commands/init.py @@ -36,10 +36,19 @@ class Command(BaseCommand): try: exec( f""" -from {app}.initialize import main -main(reset={reset}) +from {app}.fixtures.initialize import Initialize +Initialize(reset={reset},app={app}).run() """ ) except ModuleNotFoundError: - pass + # 兼容之前版本初始化 + try: + exec( + f""" +from {app}.initialize import main +main(reset={reset}) + """ + ) + except ModuleNotFoundError: + pass print("初始化数据完成!") diff --git a/backend/dvadmin/system/views/api_white_list.py b/backend/dvadmin/system/views/api_white_list.py index 8009096..a45f4fc 100644 --- a/backend/dvadmin/system/views/api_white_list.py +++ b/backend/dvadmin/system/views/api_white_list.py @@ -22,6 +22,21 @@ class ApiWhiteListSerializer(CustomModelSerializer): read_only_fields = ["id"] +class ApiWhiteListInitSerializer(CustomModelSerializer): + """ + 初始化获取数信息(用于生成初始化json文件) + """ + + class Meta: + model = ApiWhiteList + fields = ['url', 'method', 'enable_datasource', 'creator', 'dept_belong_id'] + read_only_fields = ["id"] + extra_kwargs = { + 'creator': {'write_only': True}, + 'dept_belong_id': {'write_only': True} + } + + class ApiWhiteListViewSet(CustomModelViewSet): """ 接口白名单 @@ -33,4 +48,4 @@ class ApiWhiteListViewSet(CustomModelViewSet): """ queryset = ApiWhiteList.objects.all() serializer_class = ApiWhiteListSerializer - # permission_classes = [] \ No newline at end of file + # permission_classes = [] diff --git a/backend/dvadmin/system/views/dept.py b/backend/dvadmin/system/views/dept.py index 6c5cef1..62b397b 100644 --- a/backend/dvadmin/system/views/dept.py +++ b/backend/dvadmin/system/views/dept.py @@ -29,17 +29,46 @@ class DeptSerializer(CustomModelSerializer): read_only_fields = ["id"] -class DeptQuerySerializer(CustomModelSerializer): +class DeptInitSerializer(CustomModelSerializer): """ - 部门-序列化器 + 递归深度获取数信息(用于生成初始化json文件) """ - parent_name = serializers.CharField(read_only=True, source='parent.name') - code = serializers.CharField(source='id') + children = serializers.SerializerMethodField() + + def get_children(self, obj: Dept): + data = [] + instance = Dept.objects.filter(parent_id=obj.id) + if instance: + serializer = DeptInitSerializer(instance=instance, many=True) + data = serializer.data + return data + + def save(self, **kwargs): + instance = super().save(**kwargs) + children = self.initial_data.get('children') + if children: + for menu_data in children: + menu_data['parent'] = instance.id + filter_data = { + "name": menu_data['name'], + "parent": menu_data['parent'] + } + instance_obj = Dept.objects.filter(**filter_data).first() + serializer = DeptInitSerializer(instance_obj, data=menu_data, request=self.request) + serializer.is_valid(raise_exception=True) + serializer.save() + + return instance class Meta: model = Dept - fields = ['id', 'name', 'parent', 'parent_name', 'code'] - read_only_fields = ["id"] + fields = ['name', 'sort', 'owner', 'phone', 'email', 'status', 'parent', 'creator', 'dept_belong_id', + 'children'] + extra_kwargs = { + 'creator': {'write_only': True}, + 'dept_belong_id': {'write_only': True} + } + read_only_fields = ['id', 'children'] class DeptCreateUpdateSerializer(CustomModelSerializer): diff --git a/backend/dvadmin/system/views/dictionary.py b/backend/dvadmin/system/views/dictionary.py index 5d1d982..b3e68a1 100644 --- a/backend/dvadmin/system/views/dictionary.py +++ b/backend/dvadmin/system/views/dictionary.py @@ -6,7 +6,7 @@ @Created on: 2021/6/3 003 0:30 @Remark: 字典管理 """ -from django.conf import settings +from rest_framework import serializers from rest_framework.views import APIView from application import dispatch @@ -27,6 +27,48 @@ class DictionarySerializer(CustomModelSerializer): read_only_fields = ["id"] +class DictionaryInitSerializer(CustomModelSerializer): + """ + 初始化获取数信息(用于生成初始化json文件) + """ + children = serializers.SerializerMethodField() + + def get_children(self, obj: Dictionary): + data = [] + instance = Dictionary.objects.filter(parent_id=obj.id) + if instance: + serializer = DictionaryInitSerializer(instance=instance, many=True) + data = serializer.data + return data + + def save(self, **kwargs): + instance = super().save(**kwargs) + children = self.initial_data.get('children') + # 菜单表 + if children: + for data in children: + data['parent'] = instance.id + filter_data = { + "value": data['value'], + "parent": data['parent'] + } + instance_obj = Dictionary.objects.filter(**filter_data).first() + serializer = DictionaryInitSerializer(instance_obj, data=data, request=self.request) + serializer.is_valid(raise_exception=True) + serializer.save() + return instance + + class Meta: + model = Dictionary + fields = ['label', 'value', 'parent', 'type', 'color', 'is_value', 'status', 'sort', 'remark', 'creator', + 'dept_belong_id', 'children'] + read_only_fields = ["id"] + extra_kwargs = { + 'creator': {'write_only': True}, + 'dept_belong_id': {'write_only': True} + } + + class DictionaryCreateUpdateSerializer(CustomModelSerializer): """ 字典管理 创建/更新时的列化器 diff --git a/backend/dvadmin/system/views/menu.py b/backend/dvadmin/system/views/menu.py index 56c0490..b791b28 100644 --- a/backend/dvadmin/system/views/menu.py +++ b/backend/dvadmin/system/views/menu.py @@ -9,7 +9,8 @@ from rest_framework import serializers from rest_framework.decorators import action -from dvadmin.system.models import Menu, MenuButton, Button +from dvadmin.system.models import Menu, MenuButton +from dvadmin.system.views.menu_button import MenuButtonSerializer from dvadmin.utils.json_response import SuccessResponse from dvadmin.utils.serializers import CustomModelSerializer from dvadmin.utils.viewset import CustomModelViewSet @@ -46,6 +47,72 @@ class MenuCreateSerializer(CustomModelSerializer): read_only_fields = ["id"] +class MenuInitSerializer(CustomModelSerializer): + """ + 递归深度获取数信息(用于生成初始化json文件) + """ + name = serializers.CharField(required=False) + children = serializers.SerializerMethodField() + menu_button = serializers.SerializerMethodField() + + def get_children(self, obj: Menu): + data = [] + instance = Menu.objects.filter(parent_id=obj.id) + if instance: + serializer = MenuInitSerializer(instance=instance, many=True) + data = serializer.data + return data + + def get_menu_button(self, obj: Menu): + data = [] + instance = MenuButton.objects.filter(menu_id=obj.id).order_by('method') + if instance: + data = list(instance.values('name', 'value', 'api', 'method')) + return data + + def save(self, **kwargs): + instance = super().save(**kwargs) + children = self.initial_data.get('children') + menu_button = self.initial_data.get('menu_button') + # 菜单表 + if children: + for menu_data in children: + menu_data['parent'] = instance.id + filter_data = { + "name": menu_data['name'], + "web_path": menu_data['web_path'], + "component": menu_data['component'], + "component_name": menu_data['component_name'], + } + instance_obj = Menu.objects.filter(**filter_data).first() + serializer = MenuInitSerializer(instance_obj, data=menu_data, request=self.request) + serializer.is_valid(raise_exception=True) + serializer.save() + # 菜单按钮 + if menu_button: + for menu_button_data in menu_button: + menu_button_data['menu'] = instance.id + filter_data = { + "menu": menu_button_data['menu'], + "value": menu_button_data['value'] + } + instance_obj = MenuButton.objects.filter(**filter_data).first() + serializer = MenuButtonSerializer(instance_obj, data=menu_button_data, request=self.request) + serializer.is_valid(raise_exception=True) + serializer.save() + return instance + + class Meta: + model = Menu + fields = ['name', 'icon', 'sort', 'is_link', 'is_catalog', 'web_path', 'component', 'component_name', 'status', + 'cache', 'visible', 'parent', 'children', 'menu_button', 'creator', 'dept_belong_id'] + extra_kwargs = { + 'creator': {'write_only': True}, + 'dept_belong_id': {'write_only': True} + } + read_only_fields = ['id', 'children'] + + class WebRouterSerializer(CustomModelSerializer): """ 前端菜单路由的简单序列化器 @@ -57,11 +124,11 @@ class WebRouterSerializer(CustomModelSerializer): def get_menuPermission(self, instance): # 判断是否是超级管理员 if self.request.user.is_superuser: - return Button.objects.values_list('value', flat=True) + return MenuButton.objects.values_list('value', flat=True) else: # 根据当前角色获取权限按钮id集合 permissionIds = self.request.user.role.values_list('permission', flat=True) - queryset = MenuButton.objects.filter(id__in=permissionIds,menu=instance.id).values_list('value', flat=True) + queryset = MenuButton.objects.filter(id__in=permissionIds, menu=instance.id).values_list('value', flat=True) if queryset: return queryset else: @@ -87,7 +154,7 @@ class MenuViewSet(CustomModelViewSet): create_serializer_class = MenuCreateSerializer update_serializer_class = MenuCreateSerializer search_fields = ['name', 'status'] - filter_fields = ['parent','name', 'status','is_link','visible','cache','is_catalog'] + filter_fields = ['parent', 'name', 'status', 'is_link', 'visible', 'cache', 'is_catalog'] extra_filter_backends = [] @action(methods=['GET'], detail=True, permission_classes=[]) @@ -100,4 +167,4 @@ class MenuViewSet(CustomModelViewSet): queryset = Menu.objects.filter(id__in=menuIds, status=1) serializer = WebRouterSerializer(queryset, many=True, request=request) data = serializer.data - return SuccessResponse(data=data,total=len(data),msg="获取成功") + return SuccessResponse(data=data, total=len(data), msg="获取成功") diff --git a/backend/dvadmin/system/views/role.py b/backend/dvadmin/system/views/role.py index a555df0..66aac90 100644 --- a/backend/dvadmin/system/views/role.py +++ b/backend/dvadmin/system/views/role.py @@ -8,7 +8,6 @@ """ from rest_framework import serializers from rest_framework.decorators import action -from rest_framework.permissions import IsAuthenticated from dvadmin.system.models import Role, Menu from dvadmin.system.views.dept import DeptSerializer @@ -31,6 +30,22 @@ class RoleSerializer(CustomModelSerializer): read_only_fields = ["id"] +class RoleInitSerializer(CustomModelSerializer): + """ + 初始化获取数信息(用于生成初始化json文件) + """ + + class Meta: + model = Role + fields = ['name', 'key', 'sort', 'status', 'admin', 'data_range', 'remark', + 'creator', 'dept_belong_id'] + read_only_fields = ["id"] + extra_kwargs = { + 'creator': {'write_only': True}, + 'dept_belong_id': {'write_only': True} + } + + class RoleCreateUpdateSerializer(CustomModelSerializer): """ 角色管理 创建/更新时的列化器 @@ -90,4 +105,3 @@ class RoleViewSet(CustomModelViewSet): queryset = Menu.objects.filter(status=1).all() serializer = MenuPermissonSerializer(queryset, many=True) return SuccessResponse(data=serializer.data) - diff --git a/backend/dvadmin/system/views/system_config.py b/backend/dvadmin/system/views/system_config.py index 13cb2da..b01be3d 100644 --- a/backend/dvadmin/system/views/system_config.py +++ b/backend/dvadmin/system/views/system_config.py @@ -7,7 +7,6 @@ @Remark: 系统配置 """ import django_filters -from django.conf import settings from django.db.models import Q from django_filters.rest_framework import BooleanFilter from rest_framework import serializers @@ -44,6 +43,48 @@ class SystemConfigCreateSerializer(CustomModelSerializer): return value +class SystemConfigInitSerializer(CustomModelSerializer): + """ + 初始化获取数信息(用于生成初始化json文件) + """ + children = serializers.SerializerMethodField() + + def get_children(self, obj: SystemConfig): + data = [] + instance = SystemConfig.objects.filter(parent_id=obj.id) + if instance: + serializer = SystemConfigInitSerializer(instance=instance, many=True) + data = serializer.data + return data + + def save(self, **kwargs): + instance = super().save(**kwargs) + children = self.initial_data.get('children') + # 菜单表 + if children: + for data in children: + data['parent'] = instance.id + filter_data = { + "key": data['key'], + "parent": data['parent'] + } + instance_obj = SystemConfig.objects.filter(**filter_data).first() + serializer = SystemConfigInitSerializer(instance_obj, data=data, request=self.request) + serializer.is_valid(raise_exception=True) + serializer.save() + return instance + + class Meta: + model = SystemConfig + fields = ['parent', 'title', 'key', 'value', 'sort', 'status', 'data_options', 'form_item_type', 'rule', + 'placeholder', 'setting', 'creator', 'dept_belong_id', 'children'] + read_only_fields = ["id"] + extra_kwargs = { + 'creator': {'write_only': True}, + 'dept_belong_id': {'write_only': True} + } + + class SystemConfigSerializer(CustomModelSerializer): """ 系统配置-序列化器 diff --git a/backend/dvadmin/system/views/user.py b/backend/dvadmin/system/views/user.py index 75f7be5..a26dca5 100644 --- a/backend/dvadmin/system/views/user.py +++ b/backend/dvadmin/system/views/user.py @@ -1,11 +1,11 @@ import hashlib -from application import settings, dispatch from django.contrib.auth.hashers import make_password from rest_framework import serializers from rest_framework.decorators import action from rest_framework.permissions import IsAuthenticated +from application import dispatch from dvadmin.system.models import Users from dvadmin.utils.json_response import ErrorResponse, DetailResponse from dvadmin.utils.serializers import CustomModelSerializer @@ -27,6 +27,23 @@ class UserSerializer(CustomModelSerializer): } +class UsersInitSerializer(CustomModelSerializer): + """ + 初始化获取数信息(用于生成初始化json文件) + """ + + class Meta: + model = Users + fields = ["username", "email", 'mobile', 'avatar', "name", 'gender', 'user_type', "dept", 'user_type', + 'first_name', 'last_name', 'email', 'is_staff', 'is_active', 'creator', 'dept_belong_id', + 'password', 'last_login', 'is_superuser'] + read_only_fields = ['id'] + extra_kwargs = { + 'creator': {'write_only': True}, + 'dept_belong_id': {'write_only': True} + } + + class UserCreateSerializer(CustomModelSerializer): """ 用户新增-序列化器 @@ -53,6 +70,8 @@ class UserCreateSerializer(CustomModelSerializer): def save(self, **kwargs): data = super().save(**kwargs) + data.dept_belong_id = data.dept_id + data.save() data.post.set(self.initial_data.get("post", [])) return data @@ -76,7 +95,7 @@ class UserUpdateSerializer(CustomModelSerializer): CustomUniqueValidator(queryset=Users.objects.all(), message="账号必须唯一") ], ) - password = serializers.CharField(required=False, allow_blank=True) + # password = serializers.CharField(required=False, allow_blank=True) mobile = serializers.CharField( max_length=50, validators=[ @@ -86,12 +105,14 @@ class UserUpdateSerializer(CustomModelSerializer): def save(self, **kwargs): data = super().save(**kwargs) + data.dept_belong_id = data.dept_id + data.save() data.post.set(self.initial_data.get("post", [])) return data class Meta: model = Users - read_only_fields = ["id"] + read_only_fields = ["id", "password"] fields = "__all__" extra_kwargs = { "post": {"required": False, "read_only": True}, diff --git a/backend/dvadmin/utils/core_initialize.py b/backend/dvadmin/utils/core_initialize.py index ac25823..0373efd 100644 --- a/backend/dvadmin/utils/core_initialize.py +++ b/backend/dvadmin/utils/core_initialize.py @@ -1,5 +1,12 @@ # 初始化基类 +import json +import os + +from rest_framework import request + from application import settings +from application.settings import BASE_DIR +from dvadmin.system.models import Users class CoreInitialize: @@ -8,14 +15,40 @@ class CoreInitialize: """ creator_id = None reset = False + request = request + file_path = None - def __init__(self, reset=False, creator_id=None): + def __init__(self, reset=False, creator_id=None, app=None): """ reset: 是否重置初始化数据 creator_id: 创建人id """ self.reset = reset or self.reset self.creator_id = creator_id or self.creator_id + self.app = app or '' + self.request.user = Users.objects.order_by('create_datetime').first() + + def init_base(self, Serializer, unique_fields=None): + model = Serializer.Meta.model + with open(os.path.join(BASE_DIR, *self.app.split('.'), 'fixtures', + f'init_{Serializer.Meta.model._meta.model_name}.json')) as f: + for data in json.load(f): + filter_data = {} + # 配置过滤条件,如果有唯一标识字段则使用唯一标识字段,否则使用全部字段 + if unique_fields: + for field in unique_fields: + if field in data: + filter_data[field] = data[field] + else: + for key, value in data.items(): + if isinstance(value, list) or value == None or value == '': + continue + filter_data[key] = value + instance = model.objects.filter(**filter_data).first() + serializer = Serializer(instance, data=data, request=self.request) + serializer.is_valid(raise_exception=True) + serializer.save() + print(f"[{self.app}][{model._meta.model_name}]初始化完成") def save(self, obj, data: list, name=None, no_reset=False): name = name or obj._meta.verbose_name