From 284f09f90dce451715533986136e568c6b463ca5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8C=BF=E5=B0=8F=E5=A4=A9?= <1638245306@qq.com> Date: Sat, 4 Mar 2023 23:59:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=BB=84=E4=BB=B6):=20=F0=9F=8E=89=20?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增一对多组件和多对多组件 --- .../dvadmin/system/views/message_center.py | 6 +-- web/src/components/foreignKey/index.vue | 41 +++++++++++++++++ web/src/components/manyToMany/index.vue | 46 +++++++++++++++++++ web/src/views/system/messageCenter/crud.tsx | 40 ++++++++++++---- 4 files changed, 120 insertions(+), 13 deletions(-) create mode 100644 web/src/components/foreignKey/index.vue create mode 100644 web/src/components/manyToMany/index.vue diff --git a/backend/dvadmin/system/views/message_center.py b/backend/dvadmin/system/views/message_center.py index eeed516..bb71c3f 100644 --- a/backend/dvadmin/system/views/message_center.py +++ b/backend/dvadmin/system/views/message_center.py @@ -121,12 +121,12 @@ class MessageCenterCreateSerializer(CustomModelSerializer): users = initial_data.get('target_user', []) if target_type in [1]: # 按角色 target_role = initial_data.get('target_role',[]) - users = Users.objects.exclude(is_deleted=True).filter(role__id__in=target_role).values_list('id', flat=True) + users = Users.objects.filter(role__id__in=target_role).values_list('id', flat=True) if target_type in [2]: # 按部门 target_dept = initial_data.get('target_dept',[]) - users = Users.objects.exclude(is_deleted=True).filter(dept__id__in=target_dept).values_list('id', flat=True) + users = Users.objects.filter(dept__id__in=target_dept).values_list('id', flat=True) if target_type in [3]: # 系统通知 - users = Users.objects.exclude(is_deleted=True).values_list('id', flat=True) + users = Users.objects.values_list('id', flat=True) targetuser_data = [] for user in users: targetuser_data.append({ diff --git a/web/src/components/foreignKey/index.vue b/web/src/components/foreignKey/index.vue new file mode 100644 index 0000000..d59b741 --- /dev/null +++ b/web/src/components/foreignKey/index.vue @@ -0,0 +1,41 @@ + + diff --git a/web/src/components/manyToMany/index.vue b/web/src/components/manyToMany/index.vue new file mode 100644 index 0000000..270a0d3 --- /dev/null +++ b/web/src/components/manyToMany/index.vue @@ -0,0 +1,46 @@ + + + diff --git a/web/src/views/system/messageCenter/crud.tsx b/web/src/views/system/messageCenter/crud.tsx index f96c921..7892021 100644 --- a/web/src/views/system/messageCenter/crud.tsx +++ b/web/src/views/system/messageCenter/crud.tsx @@ -4,6 +4,7 @@ import {request} from "/@/utils/service"; import {dictionary} from "/@/utils/dictionary"; import tableSelector from "/@/components/tableSelector/index.vue" import {shallowRef} from "vue"; +import manyToMany from "/@/components/manyToMany/index.vue" interface CreateCrudOptionsTypes { crudOptions: CrudOptions; @@ -139,13 +140,15 @@ export const createCrudOptions = function ({crudExpose}: { crudExpose: CrudExpos required: true, message: '必填项' } - ], - + ] }, - component: { - name: 'manyToMany', - valueBinding: 'user_info', - children: 'name' + column:{ + component: { + name: shallowRef(manyToMany), + vModel: "modelValue", + bindValue:compute(({row}) => {return row.user_info}), + displayLabel: 'name' + } } }, target_role: { @@ -159,6 +162,12 @@ export const createCrudOptions = function ({crudExpose}: { crudExpose: CrudExpos component: { name: shallowRef(tableSelector), vModel: "modelValue", + displayLabel:compute(({row}) => { + if(row){ + return row.role_info; + } + return null + }), tableConfig: { url: '/api/system/role/', label: 'name', @@ -184,10 +193,13 @@ export const createCrudOptions = function ({crudExpose}: { crudExpose: CrudExpos } ] }, - component: { - name: 'manyToMany', - valueBinding: 'role_info', - children: 'name' + column:{ + component: { + name: shallowRef(manyToMany), + vModel: "modelValue", + bindValue:compute(({row}) => {return row.role_info}), + displayLabel: 'name' + } } }, target_dept: { @@ -233,6 +245,14 @@ export const createCrudOptions = function ({crudExpose}: { crudExpose: CrudExpos message: '必填项' } ] + }, + column:{ + component: { + name: shallowRef(manyToMany), + vModel: "modelValue", + bindValue:compute(({row}) => {return row.dept_info}), + displayLabel: 'name' + } } }, content: {