diff --git a/backend/dvadmin/system/fixtures/init_dept.json b/backend/dvadmin/system/fixtures/init_dept.json index 43af999..3603364 100644 --- a/backend/dvadmin/system/fixtures/init_dept.json +++ b/backend/dvadmin/system/fixtures/init_dept.json @@ -1,6 +1,7 @@ [ { "name": "DVAdmin团队", + "key": "dvadmin", "sort": 1, "owner": "", "phone": "", @@ -10,6 +11,7 @@ "children": [ { "name": "运营部", + "key": "", "sort": 2, "owner": "", "phone": "", @@ -20,6 +22,7 @@ }, { "name": "技术部", + "key": "technology", "sort": 1, "owner": "", "phone": "", diff --git a/backend/dvadmin/system/fixtures/init_role.json b/backend/dvadmin/system/fixtures/init_role.json index f98462d..911f7ca 100644 --- a/backend/dvadmin/system/fixtures/init_role.json +++ b/backend/dvadmin/system/fixtures/init_role.json @@ -7,5 +7,14 @@ "admin": true, "data_range": 3, "remark": null + }, + { + "name": "用户", + "key": "public", + "sort": 2, + "status": true, + "admin": true, + "data_range": 3, + "remark": null } ] diff --git a/backend/dvadmin/system/fixtures/init_users.json b/backend/dvadmin/system/fixtures/init_users.json index 781cc83..e5856d2 100644 --- a/backend/dvadmin/system/fixtures/init_users.json +++ b/backend/dvadmin/system/fixtures/init_users.json @@ -1,38 +1,59 @@ [ - { - "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 - } + { + "username": "superadmin", + "email": "dvadmin@django-vue-admin.com", + "mobile": "13333333333", + "avatar": null, + "name": "超级管理员", + "gender": 1, + "user_type": 0, + "role": [], + "role_key": [ + "admin" + ], + "dept_key": "dvadmin", + "first_name": "", + "last_name": "", + "is_staff": true, + "is_active": true, + "password": "pbkdf2_sha256$260000$g17x5wlSiW1FZAh1Eudchw$ZeSAqj3Xak0io8v/pmPW0BX9EX5R2zFXDwbbD68oBFk=", + "last_login": null, + "is_superuser": true + }, + { + "username": "admin", + "email": "dvadmin@django-vue-admin.com", + "mobile": "18888888888", + "avatar": "", + "name": "管理员", + "gender": 1, + "user_type": 0, + "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": "test", + "email": "dvadmin@django-vue-admin.com", + "mobile": "18888888888", + "avatar": "", + "name": "测试人员", + "gender": 1, + "user_type": 0, + "role": [], + "role_key": ["public"], + "dept_key": "technology", + "first_name": "", + "last_name": "", + "is_staff": true, + "is_active": true, + "password": "pbkdf2_sha256$260000$g17x5wlSiW1FZAh1Eudchw$ZeSAqj3Xak0io8v/pmPW0BX9EX5R2zFXDwbbD68oBFk=", + "last_login": null, + "is_superuser": false + } ] diff --git a/backend/dvadmin/system/fixtures/initialize.py b/backend/dvadmin/system/fixtures/initialize.py index 14f260a..e8dc122 100644 --- a/backend/dvadmin/system/fixtures/initialize.py +++ b/backend/dvadmin/system/fixtures/initialize.py @@ -22,7 +22,7 @@ class Initialize(CoreInitialize): """ 初始化部门信息 """ - self.init_base(DeptInitSerializer, unique_fields=['name', 'parent']) + self.init_base(DeptInitSerializer, unique_fields=['name', 'parent','key']) def init_role(self): """ diff --git a/backend/dvadmin/system/models.py b/backend/dvadmin/system/models.py index 083400a..4b08bf2 100644 --- a/backend/dvadmin/system/models.py +++ b/backend/dvadmin/system/models.py @@ -103,6 +103,7 @@ class Role(CoreModel): class Dept(CoreModel): name = models.CharField(max_length=64, verbose_name="部门名称", help_text="部门名称") + key = models.CharField(max_length=64, unique=True,null=True,blank=True, verbose_name="关联字符", help_text="关联字符") sort = models.IntegerField(default=1, verbose_name="显示排序", help_text="显示排序") owner = models.CharField(max_length=32, verbose_name="负责人", null=True, blank=True, help_text="负责人") phone = models.CharField(max_length=32, verbose_name="联系电话", null=True, blank=True, help_text="联系电话") diff --git a/backend/dvadmin/system/views/dept.py b/backend/dvadmin/system/views/dept.py index 41e5cd2..8a736f2 100644 --- a/backend/dvadmin/system/views/dept.py +++ b/backend/dvadmin/system/views/dept.py @@ -58,7 +58,8 @@ class DeptInitSerializer(CustomModelSerializer): menu_data['parent'] = instance.id filter_data = { "name": menu_data['name'], - "parent": menu_data['parent'] + "parent": menu_data['parent'], + "key":menu_data['key'] } instance_obj = Dept.objects.filter(**filter_data).first() if instance_obj and not self.initial_data.get('reset'): @@ -72,7 +73,7 @@ class DeptInitSerializer(CustomModelSerializer): class Meta: model = Dept fields = ['name', 'sort', 'owner', 'phone', 'email', 'status', 'parent', 'creator', 'dept_belong_id', - 'children'] + 'children','key'] extra_kwargs = { 'creator': {'write_only': True}, 'dept_belong_id': {'write_only': True} diff --git a/backend/dvadmin/system/views/user.py b/backend/dvadmin/system/views/user.py index 933fbe6..5e2537c 100644 --- a/backend/dvadmin/system/views/user.py +++ b/backend/dvadmin/system/views/user.py @@ -46,6 +46,16 @@ class UsersInitSerializer(CustomModelSerializer): """ 初始化获取数信息(用于生成初始化json文件) """ + def save(self, **kwargs): + instance = super().save(**kwargs) + role_key = self.initial_data.get('role_key',[]) + role_ids = Role.objects.filter(key__in=role_key).values_list('id',flat=True) + instance.role.set(role_ids) + dept_key = self.initial_data.get('dept_key',None) + dept_id = Dept.objects.filter(key=dept_key).first() + instance.dept = dept_id + instance.save() + return instance class Meta: model = Users diff --git a/web/.env.development b/web/.env.development index 2b35a9a..eab5c45 100644 --- a/web/.env.development +++ b/web/.env.development @@ -6,4 +6,5 @@ VUE_APP_TITLE=企业级后台管理系统 VUE_APP_PM_ENABLED = true # 后端接口地址及端口(域名) VUE_APP_API = "http://127.0.0.1:8000" +VUE_APP_WEBSOCKET = "ws://127.0.0.1:8000" diff --git a/web/src/api/websocket.js b/web/src/api/websocket.js index 53e7828..4cce78e 100644 --- a/web/src/api/websocket.js +++ b/web/src/api/websocket.js @@ -3,7 +3,7 @@ import util from '@/libs/util' function initWebSocket (e) { const token = util.cookies.get('token') if (token) { - const wsUri = 'ws://127.0.0.1:8000/ws/' + token + '/?room=message_center' + const wsUri = process.env.VUE_APP_WEBSOCKET + '/ws/' + token + '/?room=message_center' this.socket = new WebSocket(wsUri)// 这里面的this都指向vue this.socket.onerror = webSocketOnError this.socket.onmessage = webSocketOnMessage @@ -53,7 +53,8 @@ function webSocketOnMessage (e) { // 关闭websiocket function closeWebsocket () { console.log('连接已关闭...') - close() + // close() + this.socket.close() } function close () { // this.socket.close() // 关闭 websocket @@ -66,5 +67,5 @@ function webSocketSend (message) { this.socket.send(JSON.stringify(message)) } export default { - initWebSocket, close, webSocketSend + initWebSocket, closeWebsocket, webSocketSend }