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 @@
+
+
+
+ {{ data }}
+
+
+
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 @@
+
+
+
+ {{item}}
+
+
+
+
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: {