+
+## 源码地址
+
+gitee地址(主推):[https://gitee.com/liqianglog/django-vue-admin](https://gitee.com/liqianglog/django-vue-admin)👩👦👦
+
+github地址:[https://github.com/liqianglog/django-vue-admin](https://github.com/liqianglog/django-vue-admin)👩👦👦
+
+
+
+## 内置功能
+
+1. 👨⚕️菜单管理:配置系统菜单,操作权限,按钮权限标识、后端接口权限等。
+2. 🧑⚕️部门管理:配置系统组织机构(公司、部门、角色)。
+3. 👩⚕️角色管理:角色菜单权限分配、数据权限分配、设置角色按部门进行数据范围权限划分。
+4. 🧑🎓权限权限:授权角色的权限范围。
+5. 👨🎓用户管理:用户是系统操作者,该功能主要完成系统用户配置。
+6. 👬接口白名单:配置不需要进行权限校验的接口。
+7. 🧑🔧字典管理:对系统中经常使用的一些较为固定的数据进行维护。
+8. 🧑🔧地区管理:对省市县区域进行管理。
+9. 📁附件管理:对平台上所有文件、图片等进行统一管理。
+10. 🗓️操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
+11. 🔌[插件市场 ](https://bbs.django-vue-admin.com/plugMarket.html):基于Django-Vue-Admin框架开发的应用和插件。
+
+## 插件市场 🔌
+
+- Celery异步任务:[dvadmin-celery](https://gitee.com/huge-dream/dvadmin-celery)
+- 升级中心后端:[dvadmin-upgrade-center](https://gitee.com/huge-dream/dvadmin-upgrade-center)
+- 升级中心前端:[dvadmin-upgrade-center-web](https://gitee.com/huge-dream/dvadmin-upgrade-center-web)
+
+## 准备工作
+~~~
+Python >= 3.8.0 (推荐3.8+版本)
+nodejs >= 14.0 (推荐最新)
+Mysql >= 5.7.0 (可选,默认数据库sqlite3,推荐8.0版本)
+Redis(可选,最新版)
+~~~
+
+## 前端♝
+
+```bash
+# 克隆项目
+git clone https://gitee.com/liqianglog/django-vue-admin.git
+
+# 进入项目目录
+cd web
+
+# 安装依赖
+npm install --registry=https://registry.npm.taobao.org
+
+# 启动服务
+npm run dev
+# 浏览器访问 http://localhost:8080
+# .env.development 文件中可配置启动端口等参数
+# 构建生产环境
+# npm run build
+```
+
+
+
+## 后端💈
+
+~~~bash
+1. 进入项目目录 cd backend
+2. 在项目根目录中,复制 ./conf/env.example.py 文件为一份新的到 ./conf 文件夹下,并重命名为 env.py
+3. 在 env.py 中配置数据库信息
+ mysql数据库版本建议:8.0
+ mysql数据库字符集:utf8mb4
+4. 安装依赖环境
+ pip3 install -r requirements.txt
+5. 执行迁移命令:
+ python3 manage.py makemigrations
+ python3 manage.py migrate
+6. 初始化数据
+ python3 manage.py init
+7. 初始化省市县数据:
+ python3 manage.py init_area
+8. 启动项目
+ python3 manage.py runserver 0.0.0.0:8000
+或使用 daphne :
+ daphne -b 0.0.0.0 -p 8000 application.asgi:application
+~~~
+
+### 访问项目
+
+- 访问地址:[http://localhost:8080](http://localhost:8080) (默认为此地址,如有修改请按照配置文件)
+- 账号:`superadmin` 密码:`admin123456`
+
+
+
+
+
+### docker-compose 运行
+
+~~~shell
+# 先安装docker-compose (自行百度安装),执行此命令等待安装,如有使用celery插件请打开docker-compose.yml中celery 部分注释
+docker-compose up -d
+# 初始化后端数据(第一次执行即可)
+docker exec -ti dvadmin-django bash
+python manage.py makemigrations
+python manage.py migrate
+python manage.py init_area
+python manage.py init
+exit
+
+前端地址:http://127.0.0.1:8080
+后端地址:http://127.0.0.1:8080/api
+# 在服务器上请把127.0.0.1 换成自己公网ip
+账号:superadmin 密码:admin123456
+
+# docker-compose 停止
+docker-compose down
+# docker-compose 重启
+docker-compose restart
+# docker-compose 启动时重新进行 build
+docker-compose up -d --build
+~~~
+
+
+
+## 演示图✅
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-#### 特技
-1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
-2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
-3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
-4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
-5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
-6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/backend/conf/env.example.py b/backend/conf/env.example.py
new file mode 100644
index 0000000..829b73a
--- /dev/null
+++ b/backend/conf/env.example.py
@@ -0,0 +1,49 @@
+import os
+
+from application.settings import BASE_DIR
+
+# ================================================= #
+# *************** mysql数据库 配置 *************** #
+# ================================================= #
+# 数据库 ENGINE ,默认演示使用 sqlite3 数据库,正式环境建议使用 mysql 数据库
+# sqlite3 设置
+DATABASE_ENGINE = "django.db.backends.sqlite3"
+DATABASE_NAME = os.path.join(BASE_DIR, "db.sqlite3")
+
+# 使用mysql时,改为此配置
+# DATABASE_ENGINE = "django.db.backends.mysql"
+# DATABASE_NAME = 'django-vue-admin' # mysql 时使用
+
+# 数据库地址 改为自己数据库地址
+DATABASE_HOST = "127.0.0.1"
+# # 数据库端口
+DATABASE_PORT = 3306
+# # 数据库用户名
+DATABASE_USER = "root"
+# # 数据库密码
+DATABASE_PASSWORD = "123456"
+
+# 表前缀
+TABLE_PREFIX = "dvadmin_"
+# ================================================= #
+# ******** redis配置,无redis 可不进行配置 ******** #
+# ================================================= #
+# REDIS_PASSWORD = ''
+# REDIS_HOST = '127.0.0.1'
+# REDIS_URL = f'redis://:{REDIS_PASSWORD or ""}@{REDIS_HOST}:6380'
+# ================================================= #
+# ****************** 功能 启停 ******************* #
+# ================================================= #
+DEBUG = True
+# 启动登录详细概略获取(通过调用api获取ip详细地址。如果是内网,关闭即可)
+ENABLE_LOGIN_ANALYSIS_LOG = True
+# 登录接口 /api/token/ 是否需要验证码认证,用于测试,正式环境建议取消
+LOGIN_NO_CAPTCHA_AUTH = True
+# ================================================= #
+# ****************** 其他 配置 ******************* #
+# ================================================= #
+
+ALLOWED_HOSTS = ["*"]
+
+# daphne启动命令
+#daphne application.asgi:application -b 0.0.0.0 -p 8000
diff --git a/web/.env b/web/.env
new file mode 100644
index 0000000..dacb1a5
--- /dev/null
+++ b/web/.env
@@ -0,0 +1,8 @@
+# port 端口号
+VITE_PORT = 8888
+
+# open 运行 npm run dev 时自动打开浏览器
+VITE_OPEN = false
+
+# public path 配置线上环境路径(打包)、本地通过 http-server 访问时,请置空即可
+VITE_PUBLIC_PATH = /vue-next-admin-preview/
\ No newline at end of file
diff --git a/web/.env.development b/web/.env.development
new file mode 100644
index 0000000..058274c
--- /dev/null
+++ b/web/.env.development
@@ -0,0 +1,5 @@
+# 本地环境
+ENV = 'development'
+
+# 本地环境接口地址
+VITE_API_URL = 'http://localhost:8888/'
\ No newline at end of file
diff --git a/web/.env.production b/web/.env.production
new file mode 100644
index 0000000..0336f50
--- /dev/null
+++ b/web/.env.production
@@ -0,0 +1,5 @@
+# 线上环境
+ENV = 'production'
+
+# 线上环境接口地址
+VITE_API_URL = 'https://lyt-top.gitee.io/vue-next-admin-preview/'
\ No newline at end of file
diff --git a/web/.eslintignore b/web/.eslintignore
new file mode 100644
index 0000000..cfc877d
--- /dev/null
+++ b/web/.eslintignore
@@ -0,0 +1,18 @@
+
+*.sh
+node_modules
+lib
+*.md
+*.scss
+*.woff
+*.ttf
+.vscode
+.idea
+dist
+mock
+public
+bin
+build
+config
+index.html
+src/assets
\ No newline at end of file
diff --git a/web/.eslintrc.js b/web/.eslintrc.js
new file mode 100644
index 0000000..f4a9b6e
--- /dev/null
+++ b/web/.eslintrc.js
@@ -0,0 +1,76 @@
+module.exports = {
+ root: true,
+ env: {
+ browser: true,
+ es2021: true,
+ node: true,
+ },
+ parser: 'vue-eslint-parser',
+ parserOptions: {
+ ecmaVersion: 12,
+ parser: '@typescript-eslint/parser',
+ sourceType: 'module',
+ },
+ extends: ['plugin:vue/vue3-essential', 'plugin:vue/essential', 'eslint:recommended'],
+ plugins: ['vue', '@typescript-eslint'],
+ overrides: [
+ {
+ files: ['*.ts', '*.tsx', '*.vue'],
+ rules: {
+ 'no-undef': 'off',
+ },
+ },
+ ],
+ rules: {
+ // http://eslint.cn/docs/rules/
+ // https://eslint.vuejs.org/rules/
+ // https://typescript-eslint.io/rules/no-unused-vars/
+ '@typescript-eslint/ban-ts-ignore': 'off',
+ '@typescript-eslint/explicit-function-return-type': 'off',
+ '@typescript-eslint/no-explicit-any': 'off',
+ '@typescript-eslint/no-var-requires': 'off',
+ '@typescript-eslint/no-empty-function': 'off',
+ '@typescript-eslint/no-use-before-define': 'off',
+ '@typescript-eslint/ban-ts-comment': 'off',
+ '@typescript-eslint/ban-types': 'off',
+ '@typescript-eslint/no-non-null-assertion': 'off',
+ '@typescript-eslint/explicit-module-boundary-types': 'off',
+ '@typescript-eslint/no-redeclare': 'error',
+ '@typescript-eslint/no-non-null-asserted-optional-chain': 'off',
+ '@typescript-eslint/no-unused-vars': [2],
+ 'vue/custom-event-name-casing': 'off',
+ 'vue/attributes-order': 'off',
+ 'vue/one-component-per-file': 'off',
+ 'vue/html-closing-bracket-newline': 'off',
+ 'vue/max-attributes-per-line': 'off',
+ 'vue/multiline-html-element-content-newline': 'off',
+ 'vue/singleline-html-element-content-newline': 'off',
+ 'vue/attribute-hyphenation': 'off',
+ 'vue/html-self-closing': 'off',
+ 'vue/no-multiple-template-root': 'off',
+ 'vue/require-default-prop': 'off',
+ 'vue/no-v-model-argument': 'off',
+ 'vue/no-arrow-functions-in-watch': 'off',
+ 'vue/no-template-key': 'off',
+ 'vue/no-v-html': 'off',
+ 'vue/comment-directive': 'off',
+ 'vue/no-parsing-error': 'off',
+ 'vue/no-deprecated-v-on-native-modifier': 'off',
+ 'vue/multi-word-component-names': 'off',
+ 'no-useless-escape': 'off',
+ 'no-sparse-arrays': 'off',
+ 'no-prototype-builtins': 'off',
+ 'no-constant-condition': 'off',
+ 'no-use-before-define': 'off',
+ 'no-restricted-globals': 'off',
+ 'no-restricted-syntax': 'off',
+ 'generator-star-spacing': 'off',
+ 'no-unreachable': 'off',
+ 'no-multiple-template-root': 'off',
+ 'no-unused-vars': 'error',
+ 'no-v-model-argument': 'off',
+ 'no-case-declarations': 'off',
+ 'no-console': 'error',
+ 'no-redeclare': 'off',
+ },
+};
diff --git a/web/.gitignore b/web/.gitignore
new file mode 100644
index 0000000..403adbc
--- /dev/null
+++ b/web/.gitignore
@@ -0,0 +1,23 @@
+.DS_Store
+node_modules
+/dist
+
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/web/.prettierrc.js b/web/.prettierrc.js
new file mode 100644
index 0000000..cff490a
--- /dev/null
+++ b/web/.prettierrc.js
@@ -0,0 +1,39 @@
+module.exports = {
+ // 一行最多多少个字符
+ printWidth: 150,
+ // 指定每个缩进级别的空格数
+ tabWidth: 2,
+ // 使用制表符而不是空格缩进行
+ useTabs: true,
+ // 在语句末尾打印分号
+ semi: true,
+ // 使用单引号而不是双引号
+ singleQuote: true,
+ // 更改引用对象属性的时间 可选值"
+
+
+
+
+
+
+
+
+
+
+
+#### 💒 集成后端
+
+- @熊猫 PandaGoAdmin
+- @甜蜜蜜 GoPro 平台
+- @甜蜜蜜 NiuPi 平台
+- @游子 GFast-V3
+- @diygw.com gw-ui-php
+- @zsvg vboot-net
+- @zsvg vboot-java
+- @青红造了个白 buildadmin
+- @Goodwell iotfast(一个开源的物联网平台)
+
+#### ❤️ 鸣谢列表
+
+- vue
+- vue-next
+- element-ui
+- element-plus
+- vue-router-next
+- pinia
+- echarts
+- axios
+- clipboard
+- countUp
+- mitt
+- nprogress
+- screenfull
+- sortablejs
+- sass
+- typescript
+- vite
+- wangeditor
+- cropperjs
+- qrcodejs
+- print-js
+- vue-grid-layout
+- splitpanes
+- jsplumb
+- js-table2excel
+
+#### 💕 特别感谢
+
+特别感谢老哥们的建议、指导与帮忙。谢谢!
+
+- @省长
+- @唐参
+- @川歌
+- @华仔
+
+#### 💌 支持作者
+
+如果觉得框架不错,或者已经在使用了,希望你可以去 Github 或者
+Gitee 帮我点个 ⭐ Star,这将是对我极大的鼓励与支持。
diff --git a/web/index.html b/web/index.html
new file mode 100644
index 0000000..dc8466c
--- /dev/null
+++ b/web/index.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+ 鼠标放标题头进行 Dialog 对话框拖动
+ + + +