功能变化:

部门model中加入key字段,可以用于初始化用户
pull/71/MERGE
猿小天 2022-09-07 10:04:22 +08:00
parent 2fe5f8d4d3
commit 2a11d27c7e
9 changed files with 89 additions and 42 deletions

View File

@ -1,6 +1,7 @@
[ [
{ {
"name": "DVAdmin团队", "name": "DVAdmin团队",
"key": "dvadmin",
"sort": 1, "sort": 1,
"owner": "", "owner": "",
"phone": "", "phone": "",
@ -10,6 +11,7 @@
"children": [ "children": [
{ {
"name": "运营部", "name": "运营部",
"key": "",
"sort": 2, "sort": 2,
"owner": "", "owner": "",
"phone": "", "phone": "",
@ -20,6 +22,7 @@
}, },
{ {
"name": "技术部", "name": "技术部",
"key": "technology",
"sort": 1, "sort": 1,
"owner": "", "owner": "",
"phone": "", "phone": "",

View File

@ -7,5 +7,14 @@
"admin": true, "admin": true,
"data_range": 3, "data_range": 3,
"remark": null "remark": null
},
{
"name": "用户",
"key": "public",
"sort": 2,
"status": true,
"admin": true,
"data_range": 3,
"remark": null
} }
] ]

View File

@ -1,38 +1,59 @@
[ [
{ {
"username": "admin", "username": "superadmin",
"email": "dvadmin@django-vue-admin.com", "email": "dvadmin@django-vue-admin.com",
"mobile": "18888888888", "mobile": "13333333333",
"avatar": "", "avatar": null,
"name": "管理员", "name": "超级管理员",
"gender": 1, "gender": 1,
"user_type": 0, "user_type": 0,
"dept": 1, "role": [],
"role": [], "role_key": [
"first_name": "", "admin"
"last_name": "", ],
"is_staff": true, "dept_key": "dvadmin",
"is_active": true, "first_name": "",
"password": "pbkdf2_sha256$260000$g17x5wlSiW1FZAh1Eudchw$ZeSAqj3Xak0io8v/pmPW0BX9EX5R2zFXDwbbD68oBFk=", "last_name": "",
"last_login": null, "is_staff": true,
"is_superuser": false "is_active": true,
}, "password": "pbkdf2_sha256$260000$g17x5wlSiW1FZAh1Eudchw$ZeSAqj3Xak0io8v/pmPW0BX9EX5R2zFXDwbbD68oBFk=",
{ "last_login": null,
"username": "superadmin", "is_superuser": true
"email": "dvadmin@django-vue-admin.com", },
"mobile": "13333333333", {
"avatar": null, "username": "admin",
"name": "超级管理员", "email": "dvadmin@django-vue-admin.com",
"gender": 1, "mobile": "18888888888",
"user_type": 0, "avatar": "",
"dept": 1, "name": "管理员",
"role": [], "gender": 1,
"first_name": "", "user_type": 0,
"last_name": "", "role": [],
"is_staff": true, "first_name": "",
"is_active": true, "last_name": "",
"password": "pbkdf2_sha256$260000$g17x5wlSiW1FZAh1Eudchw$ZeSAqj3Xak0io8v/pmPW0BX9EX5R2zFXDwbbD68oBFk=", "is_staff": true,
"last_login": null, "is_active": true,
"is_superuser": 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
}
] ]

View File

@ -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): def init_role(self):
""" """

View File

@ -103,6 +103,7 @@ class Role(CoreModel):
class Dept(CoreModel): class Dept(CoreModel):
name = models.CharField(max_length=64, verbose_name="部门名称", help_text="部门名称") 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="显示排序") sort = models.IntegerField(default=1, verbose_name="显示排序", help_text="显示排序")
owner = models.CharField(max_length=32, verbose_name="负责人", null=True, blank=True, 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="联系电话") phone = models.CharField(max_length=32, verbose_name="联系电话", null=True, blank=True, help_text="联系电话")

View File

@ -58,7 +58,8 @@ class DeptInitSerializer(CustomModelSerializer):
menu_data['parent'] = instance.id menu_data['parent'] = instance.id
filter_data = { filter_data = {
"name": menu_data['name'], "name": menu_data['name'],
"parent": menu_data['parent'] "parent": menu_data['parent'],
"key":menu_data['key']
} }
instance_obj = Dept.objects.filter(**filter_data).first() instance_obj = Dept.objects.filter(**filter_data).first()
if instance_obj and not self.initial_data.get('reset'): if instance_obj and not self.initial_data.get('reset'):
@ -72,7 +73,7 @@ class DeptInitSerializer(CustomModelSerializer):
class Meta: class Meta:
model = Dept model = Dept
fields = ['name', 'sort', 'owner', 'phone', 'email', 'status', 'parent', 'creator', 'dept_belong_id', fields = ['name', 'sort', 'owner', 'phone', 'email', 'status', 'parent', 'creator', 'dept_belong_id',
'children'] 'children','key']
extra_kwargs = { extra_kwargs = {
'creator': {'write_only': True}, 'creator': {'write_only': True},
'dept_belong_id': {'write_only': True} 'dept_belong_id': {'write_only': True}

View File

@ -46,6 +46,16 @@ class UsersInitSerializer(CustomModelSerializer):
""" """
初始化获取数信息(用于生成初始化json文件) 初始化获取数信息(用于生成初始化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: class Meta:
model = Users model = Users

View File

@ -6,4 +6,5 @@ VUE_APP_TITLE=企业级后台管理系统
VUE_APP_PM_ENABLED = true VUE_APP_PM_ENABLED = true
# 后端接口地址及端口(域名) # 后端接口地址及端口(域名)
VUE_APP_API = "http://127.0.0.1:8000" VUE_APP_API = "http://127.0.0.1:8000"
VUE_APP_WEBSOCKET = "ws://127.0.0.1:8000"

View File

@ -3,7 +3,7 @@ import util from '@/libs/util'
function initWebSocket (e) { function initWebSocket (e) {
const token = util.cookies.get('token') const token = util.cookies.get('token')
if (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 = new WebSocket(wsUri)// 这里面的this都指向vue
this.socket.onerror = webSocketOnError this.socket.onerror = webSocketOnError
this.socket.onmessage = webSocketOnMessage this.socket.onmessage = webSocketOnMessage
@ -53,7 +53,8 @@ function webSocketOnMessage (e) {
// 关闭websiocket // 关闭websiocket
function closeWebsocket () { function closeWebsocket () {
console.log('连接已关闭...') console.log('连接已关闭...')
close() // close()
this.socket.close()
} }
function close () { function close () {
// this.socket.close() // 关闭 websocket // this.socket.close() // 关闭 websocket
@ -66,5 +67,5 @@ function webSocketSend (message) {
this.socket.send(JSON.stringify(message)) this.socket.send(JSON.stringify(message))
} }
export default { export default {
initWebSocket, close, webSocketSend initWebSocket, closeWebsocket, webSocketSend
} }