From a6ed5d645b574fef3e18ac59336bc0ea0a12577c Mon Sep 17 00:00:00 2001 From: JackLu2021 <675599689@qq.com> Date: Thu, 22 Dec 2022 15:53:14 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=9A=84=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/api/service.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/api/service.js b/web/src/api/service.js index e4c9480..52bc404 100644 --- a/web/src/api/service.js +++ b/web/src/api/service.js @@ -224,7 +224,7 @@ export const downloadFile = function ({ url, params, method, filename }) { responseType: 'blob' // headers: {Accept: 'application/vnd.openxmlformats-officedocument'} }).then(res => { - const fileName = window.decodeURI(filename + '.xls' || res.headers['content-disposition'].split('=')[1]) || '文件导出.xls' + const fileName = window.decodeURI((filename === undefined ? false : filename + '.xls') || decodeURI(res.headers['content-disposition']).split('=')[1]) || '文件导出.xls' if (res) { const blob = new Blob([res.data], { type: 'charset=utf-8' }) const elink = document.createElement('a') From a8cfe687a24b24adf35a70aa04ab7d368a15971b Mon Sep 17 00:00:00 2001 From: JackLu2021 <675599689@qq.com> Date: Fri, 23 Dec 2022 02:20:14 +0000 Subject: [PATCH 2/5] update web/src/api/service.js. Signed-off-by: JackLu2021 <675599689@qq.com> --- web/src/api/service.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/api/service.js b/web/src/api/service.js index 52bc404..a23f75c 100644 --- a/web/src/api/service.js +++ b/web/src/api/service.js @@ -224,7 +224,7 @@ export const downloadFile = function ({ url, params, method, filename }) { responseType: 'blob' // headers: {Accept: 'application/vnd.openxmlformats-officedocument'} }).then(res => { - const fileName = window.decodeURI((filename === undefined ? false : filename + '.xls') || decodeURI(res.headers['content-disposition']).split('=')[1]) || '文件导出.xls' + const fileName = window.decodeURI((filename === undefined ? false : filename + '.xls') || res.headers['content-disposition'].split('=')[1]) || '文件导出.xls' if (res) { const blob = new Blob([res.data], { type: 'charset=utf-8' }) const elink = document.createElement('a') From ece8438339156a9ed3fc05a01d4a3c72b57578b9 Mon Sep 17 00:00:00 2001 From: JackLu2021 <675599689@qq.com> Date: Fri, 23 Dec 2022 02:32:33 +0000 Subject: [PATCH 3/5] update web/src/api/service.js. Signed-off-by: JackLu2021 <675599689@qq.com> --- web/src/api/service.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/api/service.js b/web/src/api/service.js index a23f75c..749385e 100644 --- a/web/src/api/service.js +++ b/web/src/api/service.js @@ -224,7 +224,7 @@ export const downloadFile = function ({ url, params, method, filename }) { responseType: 'blob' // headers: {Accept: 'application/vnd.openxmlformats-officedocument'} }).then(res => { - const fileName = window.decodeURI((filename === undefined ? false : filename + '.xls') || res.headers['content-disposition'].split('=')[1]) || '文件导出.xls' + const fileName = (filename === undefined ? false : filename + '.xls') || decodeURI(res.headers['content-disposition'].split('=')[1]) || '文件导出.xls' if (res) { const blob = new Blob([res.data], { type: 'charset=utf-8' }) const elink = document.createElement('a') From e13de38897608cb5d2fece84ce585102b83fad44 Mon Sep 17 00:00:00 2001 From: H0nGzA1 <2505811377@qq.com> Date: Tue, 14 Mar 2023 21:44:08 +0800 Subject: [PATCH 4/5] =?UTF-8?q?docs:=20=F0=9F=93=9D=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=8B=B1=E6=96=87=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.en.md | 168 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 README.en.md diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000..4e9aa90 --- /dev/null +++ b/README.en.md @@ -0,0 +1,168 @@ +# Django-Vue-Admin + +[![img](https://img.shields.io/badge/license-MIT-blue.svg)](https://gitee.com/liqianglog/django-vue-admin/blob/master/LICENSE) [![img](https://img.shields.io/badge/python-%3E=3.7.x-green.svg)](https://python.org/) [![PyPI - Django Version badge](https://img.shields.io/badge/django%20versions-3.2-blue)](https://docs.djangoproject.com/zh-hans/3.2/) [![img](https://img.shields.io/badge/node-%3E%3D%2012.0.0-brightgreen)](https://nodejs.org/zh-cn/) [![img](https://gitee.com/liqianglog/django-vue-admin/badge/star.svg?theme=dark)](https://gitee.com/liqianglog/django-vue-admin) + +[preview](https://demo.django-vue-admin.com) | [Official website document](https://www.django-vue-admin.com) | [qq group](https://qm.qq.com/cgi-bin/qm/qr?k=fOdnHhC8DJlRHGYSnyhoB8P5rgogA6Vs&jump_from=webapi) | [community](https://bbs.django-vue-admin.com) | [plugins market](https://bbs.django-vue-admin.com/plugMarket.html) | [Github](https://github.com/liqianglog/django-vue-admin) + +💡 **「About」** + +We are a group of young people who love Code. In this hot era, we hope to calm down and bring some of our colors and colors through code. + +Because of love, so embrace the future + +## framework introduction + +💡 [django-vue-admin](https://gitee.com/dvadmin/django-vue-admin) Is a set of all open source rapid development platform, no reservation for individuals and enterprises free use. + +* 🧑‍🤝‍🧑Front-end adoption[D2Admin](https://github.com/d2-projects/d2-admin) 、[Vue](https://cn.vuejs.org/)、[ElementUI](https://element.eleme.cn/)。 +* 👭The backend uses the Python language Django framework as well as the powerful[Django REST Framework](https://pypi.org/project/djangorestframework)。 +* 👫Permission authentication use[Django REST Framework SimpleJWT](https://pypi.org/project/djangorestframework-simplejwt),Supports the multi-terminal authentication system. +* 👬Support loading dynamic permission menu, multi - way easy permission control. +* 💏 Special thanks:[D2Admin](https://github.com/d2-projects/d2-admin) 、[Vue-Element-Admin](https://github.com/PanJiaChen/vue-element-admin)。 +* 💡 💏 Special thanks:[jetbrains](https://www.jetbrains.com/) To provide a free IntelliJ IDEA license for this open source project. + +## Online experience + +👩‍👧‍👦👩‍👧‍👦 demo address:[http://demo.django-vue-admin.com](http://demo.django-vue-admin.com) + +* demo account:superadmin + +* demo password:admin123456 + +👩‍👦‍👦docs:[https://django-vue-admin.com](https://django-vue-admin.com) + +## communication + +* Communication community:[click here](https://bbs.django-vue-admin.com)👩‍👦‍👦 + +* plugins market:[click here](https://bbs.django-vue-admin.com/plugMarket.html)👩‍👦‍👦 + +## source code url: + +gitee(Main push):[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)👩‍👦‍👦 + +## core function + +1. 👨‍⚕️ Menu management: Configure the system menu, operation permissions, button permissions, back-end interface permissions, etc. +2. 🧑‍⚕️ Department management: Configure the system organization (company, department, role). +3. 👩‍⚕️ Role management: role menu permission allocation, data permission allocation, set roles according to the department for data range permission division. +4. 🧑‍🎓 Rights Specifies the rights of the authorization role. +5. 👨‍🎓 User management: The user is the system operator, this function mainly completes the system user configuration. +6. 👬 Interface whitelist: specifies the interface that does not need permission verification. +7. 🧑‍🔧 Dictionary management: Maintenance of some fixed data frequently used in the system. +8. 🧑‍🔧 Regional management: to manage provinces, cities, counties and regions. +9. 📁 Attachment management: Unified management of all files and pictures on the platform. +10. 🗓 ️operation logs: log and query the system normal operation; Log and query system exception information. +11.🔌 [plugins market] () : based on the Django framework - Vue - Admin application and plug-in development. + +## plugins market 🔌 + +* Celery Asynchronous task:[dvadmin-celery](https://gitee.com/huge-dream/dvadmin-celery) +* Upgrade center backend:[dvadmin-upgrade-center](https://gitee.com/huge-dream/dvadmin-upgrade-center) +* Upgrade center front:[dvadmin-upgrade-center-web](https://gitee.com/huge-dream/dvadmin-upgrade-center-web) + +## before start project you need: + +~~~ +Python >= 3.8.0 +nodejs >= 14.0 +Mysql >= 5.7.0 (Optional. The default database is sqlite3. 8.0 is recommended) +Redis(Optional, the latest edition) +~~~ + +## frontend♝ + +```bash +# clone code +git clone https://gitee.com/liqianglog/django-vue-admin.git + +# enter code dir +cd web + +# install dependence +npm install --registry=https://registry.npm.taobao.org + +# Start service +npm run dev +# Visit http://localhost:8080 in your browser +# Parameters such as boot port can be configured in the #.env.development file +# Build the production environment +# npm run build +``` + +## backend💈 + +~~~bash +1. enter code dir cd backend +2. copy ./conf/env.example.py to ./conf dir,rename as env.py +3. in env.py configure database information + mysql database recommended version: 8.0 + mysql database character set: utf8mb4 +4. install pip dependence + pip3 install -r requirements.txt +5. Execute the migration command: + python3 manage.py makemigrations + python3 manage.py migrate +6. Initialization data + python3 manage.py init +7. Initialize provincial, municipal and county data: + python3 manage.py init_area +8. start backend + python3 manage.py runserver 0.0.0.0:8000 +or daphne : + daphne -b 0.0.0.0 -p 8000 application.asgi:application +~~~ + +### visit backend swagger + +* visit url:[http://localhost:8080](http://localhost:8080) (The default address is this one. If you want to change it, follow the configuration file) +* account:`superadmin` password:`admin123456` + +### docker-compose + +~~~shell +docker-compose up -d +# Initialize backend data (first execution only) +docker exec -ti dvadmin-django bash +python manage.py makemigrations +python manage.py migrate +python manage.py init_area +python manage.py init +exit + +frontend url:http://127.0.0.1:8080 +backend url:http://127.0.0.1:8080/api +# Change 127.0.0.1 to your own public ip address on the server +account:`superadmin` password:`admin123456` + +# docker-compose stop +docker-compose down +# docker-compose restart +docker-compose restart +# docker-compose on start build +docker-compose up -d --build +~~~ + +## Demo screenshot✅ + +![image-01](https://images.gitee.com/uploads/images/2022/0530/234137_b58c8f98_5074988.png) + +![image-02](https://images.gitee.com/uploads/images/2022/0530/234240_39834603_5074988.png) + +![image-03](https://images.gitee.com/uploads/images/2022/0530/234339_35e728a0_5074988.png) + +![image-04](https://images.gitee.com/uploads/images/2022/0530/234426_957036b0_5074988.png) + +![image-05](https://images.gitee.com/uploads/images/2022/0530/234458_898be492_5074988.png) + +![image-06](https://images.gitee.com/uploads/images/2022/0530/234521_35b40076_5074988.png) + +![image-07](https://images.gitee.com/uploads/images/2022/0530/234615_c2325639_5074988.png) + +![image-08](https://images.gitee.com/uploads/images/2022/0530/234639_1ed6cc93_5074988.png) + +![image-09](https://images.gitee.com/uploads/images/2022/0530/234815_cea2c53f_5074988.png) + +![image-10](https://images.gitee.com/uploads/images/2022/0530/234840_5f3e5f53_5074988.png) From b2b98cae0d6e26f95e78fcbb4fa91cd6eedf4e2f Mon Sep 17 00:00:00 2001 From: H0nGzA1 <2505811377@qq.com> Date: Thu, 16 Mar 2023 15:45:46 +0800 Subject: [PATCH 5/5] =?UTF-8?q?fix(https://gitee.com/liqianglog/django-vue?= =?UTF-8?q?-admin/issues/I6LPWM):=20=F0=9F=90=9B=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=8C=89=E9=92=AE=E6=8E=A5=E5=8F=A3=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/dvadmin/system/views/menu_button.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/dvadmin/system/views/menu_button.py b/backend/dvadmin/system/views/menu_button.py index 1f79dc1..03f4367 100644 --- a/backend/dvadmin/system/views/menu_button.py +++ b/backend/dvadmin/system/views/menu_button.py @@ -18,7 +18,7 @@ class MenuButtonSerializer(CustomModelSerializer): class Meta: model = MenuButton - fields = ['id', 'name', 'value', 'api', 'method'] + fields = ['id', 'name', 'value', 'api', 'method', 'menu'] read_only_fields = ["id"] @@ -32,6 +32,7 @@ class MenuButtonInitSerializer(CustomModelSerializer): fields = ['id', 'name', 'value', 'api', 'method', 'menu'] read_only_fields = ["id"] + class MenuButtonCreateUpdateSerializer(CustomModelSerializer): """ 初始化菜单按钮-序列化器