diff --git a/backend/dvadmin/system/views/message_center.py b/backend/dvadmin/system/views/message_center.py
index 96b23c335d399572c956fad157d3e40effb3efa0..d46209f6a441e8fa7eafb2cf748f58c399c9b191 100644
--- a/backend/dvadmin/system/views/message_center.py
+++ b/backend/dvadmin/system/views/message_center.py
@@ -80,6 +80,9 @@ class MessageCenterTargetUserListSerializer(CustomModelSerializer):
"""
目标用户序列化器-序列化器
"""
+ role_info = DynamicSerializerMethodField()
+ user_info = DynamicSerializerMethodField()
+ dept_info = DynamicSerializerMethodField()
is_read = serializers.SerializerMethodField()
def get_is_read(self, instance):
@@ -90,6 +93,42 @@ class MessageCenterTargetUserListSerializer(CustomModelSerializer):
return queryset.is_read
return False
+ def get_role_info(self, instance, parsed_query):
+ roles = instance.target_role.all()
+ # You can do what ever you want in here
+ # `parsed_query` param is passed to BookSerializer to allow further querying
+ from dvadmin.system.views.role import RoleSerializer
+ serializer = RoleSerializer(
+ roles,
+ many=True,
+ parsed_query=parsed_query
+ )
+ return serializer.data
+
+ def get_user_info(self, instance, parsed_query):
+ users = instance.target_user.all()
+ # You can do what ever you want in here
+ # `parsed_query` param is passed to BookSerializer to allow further querying
+ from dvadmin.system.views.user import UserSerializer
+ serializer = UserSerializer(
+ users,
+ many=True,
+ parsed_query=parsed_query
+ )
+ return serializer.data
+
+ def get_dept_info(self, instance, parsed_query):
+ dept = instance.target_dept.all()
+ # You can do what ever you want in here
+ # `parsed_query` param is passed to BookSerializer to allow further querying
+ from dvadmin.system.views.dept import DeptSerializer
+ serializer = DeptSerializer(
+ dept,
+ many=True,
+ parsed_query=parsed_query
+ )
+ return serializer.data
+
class Meta:
model = MessageCenter
fields = "__all__"
diff --git a/web/src/views/system/messageCenter/crud.tsx b/web/src/views/system/messageCenter/crud.tsx
index 57331940ce04fe443ca26de09a27cd37239a2de9..dddc1a65a928433bc6de25cb503d1cc7561f989e 100644
--- a/web/src/views/system/messageCenter/crud.tsx
+++ b/web/src/views/system/messageCenter/crud.tsx
@@ -1,46 +1,38 @@
import * as api from './api';
-import {dict, useCompute, PageQuery, AddReq, DelReq, EditReq, CrudExpose, CrudOptions} from '@fast-crud/fast-crud';
+import { dict, useCompute, PageQuery, AddReq, DelReq, EditReq, CreateCrudOptionsProps, CreateCrudOptionsRet } from '@fast-crud/fast-crud';
import tableSelector from '/@/components/tableSelector/index.vue';
-import {shallowRef, computed, ref, inject} from 'vue';
+import { shallowRef, computed } from 'vue';
import manyToMany from '/@/components/manyToMany/index.vue';
-import {auth} from '/@/utils/authFunction'
-import {createCrudOptions as userCrudOptions } from "/@/views/system/user/crud";
-import {request} from '/@/utils/service'
-const {compute} = useCompute();
+import { auth } from '/@/utils/authFunction';
+const { compute } = useCompute();
-interface CreateCrudOptionsTypes {
- crudOptions: CrudOptions;
-}
-
-export const createCrudOptions = function ({
- crudExpose,
- tabActivted
- }: { crudExpose: CrudExpose; tabActivted: any }): CreateCrudOptionsTypes {
- const pageRequest = async (query: PageQuery) => {
- if (tabActivted.value === 'receive') {
- return await api.GetSelfReceive(query);
- }
- return await api.GetList(query);
- };
- const editRequest = async ({form, row}: EditReq) => {
- form.id = row.id;
- return await api.UpdateObj(form);
- };
- const delRequest = async ({row}: DelReq) => {
- return await api.DelObj(row.id);
- };
- const addRequest = async ({form}: AddReq) => {
- return await api.AddObj(form);
- };
+export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet {
+ const { tabActivted } = context; //从context中获取tabActivted
- const viewRequest = async ({row}: { row: any }) => {
- return await api.GetObj(row.id);
- };
+ const pageRequest = async (query: PageQuery) => {
+ if (tabActivted.value === 'receive') {
+ return await api.GetSelfReceive(query);
+ }
+ return await api.GetList(query);
+ };
+ const editRequest = async ({ form, row }: EditReq) => {
+ form.id = row.id;
+ return await api.UpdateObj(form);
+ };
+ const delRequest = async ({ row }: DelReq) => {
+ return await api.DelObj(row.id);
+ };
+ const addRequest = async ({ form }: AddReq) => {
+ return await api.AddObj(form);
+ };
- const IsReadFunc = computed(() => {
- return tabActivted.value === 'receive';
- });
+ const viewRequest = async ({ row }: { row: any }) => {
+ return await api.GetObj(row.id);
+ };
+ const IsReadFunc = computed(() => {
+ return tabActivted.value === 'receive';
+ });
return {
crudOptions: {
@@ -50,27 +42,27 @@ export const createCrudOptions = function ({
editRequest,
delRequest,
},
- actionbar:{
- buttons:{
- add:{
- show:computed(() =>{
+ actionbar: {
+ buttons: {
+ add: {
+ show: computed(() => {
return tabActivted.value !== 'receive' && auth('messageCenter:Create');
- })
+ }),
},
- }
+ },
},
rowHandle: {
- fixed:'right',
- width:150,
+ fixed: 'right',
+ width: 150,
buttons: {
edit: {
show: false,
},
view: {
- text:"查看",
- type:'text',
- iconRight:'View',
- show:auth("messageCenter:Search"),
+ text: '查看',
+ type: 'text',
+ iconRight: 'View',
+ show: auth('messageCenter:Search'),
click({ index, row }) {
crudExpose.openView({ index, row });
if (tabActivted.value === 'receive') {
@@ -82,7 +74,7 @@ export const createCrudOptions = function ({
remove: {
iconRight: 'Delete',
type: 'text',
- show:auth('messageCenter:Delete')
+ show: auth('messageCenter:Delete'),
},
},
},
@@ -99,7 +91,7 @@ export const createCrudOptions = function ({
show: true,
},
type: ['text', 'colspan'],
- column:{
+ column: {
minWidth: 120,
},
form: {
@@ -132,7 +124,7 @@ export const createCrudOptions = function ({
target_type: {
title: '目标类型',
type: ['dict-radio', 'colspan'],
- column:{
+ column: {
minWidth: 120,
},
dict: dict({
@@ -285,7 +277,7 @@ export const createCrudOptions = function ({
name: shallowRef(tableSelector),
vModel: 'modelValue',
displayLabel: compute(({ form }) => {
- return form.target_dept_name;
+ return form.dept_info;
}),
tableConfig: {
url: '/api/system/dept/all_dept/',
@@ -297,7 +289,7 @@ export const createCrudOptions = function ({
{
prop: 'name',
label: '部门名称',
- width: 150,
+ width: 150,
},
{
prop: 'status_label',
@@ -349,7 +341,7 @@ export const createCrudOptions = function ({
},
],
component: {
- disabled: true,
+ disabled: false,
id: '1', // 当同一个页面有多个editor时,需要配置不同的id
editorConfig: {
// 是否只读
@@ -373,4 +365,4 @@ export const createCrudOptions = function ({
},
},
};
-};
+}
diff --git a/web/src/views/system/messageCenter/index.vue b/web/src/views/system/messageCenter/index.vue
index 54aec43b96b6511d9c716e73ba76adadc63b89cc..946a8edb11fccd02d6ede32e6522da5574ccd532 100644
--- a/web/src/views/system/messageCenter/index.vue
+++ b/web/src/views/system/messageCenter/index.vue
@@ -1,43 +1,35 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+