parent
2fe5f8d4d3
commit
2a11d27c7e
|
@ -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": "",
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -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):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -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="联系电话")
|
||||||
|
|
|
@ -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}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue