diff --git a/dvadmin-backend/apps/system/filters.py b/dvadmin-backend/apps/system/filters.py
index 5e32afe..2731797 100644
--- a/dvadmin-backend/apps/system/filters.py
+++ b/dvadmin-backend/apps/system/filters.py
@@ -1,6 +1,6 @@
import django_filters
-from apps.system.models import DictDetails, DictData, ConfigSettings
+from apps.system.models import DictDetails, DictData, ConfigSettings, MessagePush
class DictDataFilter(django_filters.rest_framework.FilterSet):
@@ -32,3 +32,12 @@ class ConfigSettingsFilter(django_filters.rest_framework.FilterSet):
class Meta:
model = ConfigSettings
fields = '__all__'
+
+class MessagePushFilter(django_filters.rest_framework.FilterSet):
+ """
+ 消息通知 简单过滤器
+ """
+
+ class Meta:
+ model = MessagePush
+ fields = '__all__'
diff --git a/dvadmin-backend/apps/system/models/__init__.py b/dvadmin-backend/apps/system/models/__init__.py
index 69188a7..38e4a36 100644
--- a/dvadmin-backend/apps/system/models/__init__.py
+++ b/dvadmin-backend/apps/system/models/__init__.py
@@ -4,4 +4,5 @@ from ..models.dict_details import DictDetails
from ..models.web_set import WebSet
from ..models.save_file import SaveFile
from ..models.message_push import MessagePush
+from ..models.message_push import MessagePushUser
diff --git a/dvadmin-backend/apps/system/models/message_push.py b/dvadmin-backend/apps/system/models/message_push.py
index df1a991..25dbadd 100644
--- a/dvadmin-backend/apps/system/models/message_push.py
+++ b/dvadmin-backend/apps/system/models/message_push.py
@@ -11,11 +11,12 @@ from apps.permission.models import UserProfile
class MessagePush(CoreModel):
- title = CharField(max_length=128, verbose_name="通知标题")
- content = TextField(verbose_name="通知内容")
+ title = CharField(max_length=128, verbose_name="消息标题")
+ content = TextField(verbose_name="消息内容")
message_type = CharField(max_length=8, verbose_name="消息类型")
is_reviewed = BooleanField(default=True, verbose_name="是否审核")
status = CharField(max_length=8, verbose_name="消息状态")
+ to_path = CharField(max_length=256, verbose_name="跳转路径", null=True, blank=True, )
user = ManyToManyField(to="permission.UserProfile",
related_name="user", related_query_name="user_query", through='MessagePushUser',
through_fields=('message_push', 'user'))
diff --git a/dvadmin-backend/apps/system/serializers.py b/dvadmin-backend/apps/system/serializers.py
index 960e5e5..56a7b59 100644
--- a/dvadmin-backend/apps/system/serializers.py
+++ b/dvadmin-backend/apps/system/serializers.py
@@ -1,8 +1,7 @@
from rest_framework import serializers
from apps.op_drf.serializers import CustomModelSerializer
-from apps.permission.serializers import UserProfileSerializer
-from apps.system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush
+from apps.system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush, MessagePushUser
# ================================================= #
@@ -162,11 +161,6 @@ class MessagePushSerializer(CustomModelSerializer):
"""
消息通知 简单序列化器
"""
- # users = UserProfileSerializer(read_only=True)
- users = serializers.SerializerMethodField(read_only=True)
-
- def get_users(self, obj):
- return UserProfileSerializer(obj.user.all(), many=True).data
class Meta:
model = MessagePush
@@ -198,5 +192,27 @@ class ExportMessagePushSerializer(CustomModelSerializer):
class Meta:
model = MessagePush
fields = (
- 'id', 'title', 'content', 'message_type', 'is_reviewed', 'status', 'users', 'creator', 'modifier',
- 'update_datetime', 'create_datetime')
+ 'id', 'title', 'content', 'message_type', 'is_reviewed', 'status', 'users', 'creator', 'modifier',
+ 'update_datetime', 'create_datetime')
+
+class MessagePushUserSerializer(CustomModelSerializer):
+ """
+ 消息通知 用户查询简单序列化器
+ """
+ # users = UserProfileSerializer(read_only=True)
+ # users = serializers.SerializerMethodField(read_only=True)
+ is_read = serializers.SerializerMethodField(read_only=True)
+
+ # def get_users(self, obj):
+ # return UserProfileSerializer(obj.user.all(), many=True).data
+ # 返回这个消息是否已读
+ def get_is_read(self, obj):
+ object = MessagePushUser.objects.filter(message_push=obj,user=self.context.get('request').user).first()
+ return object.is_read if object else False
+
+ class Meta:
+ model = MessagePush
+ fields = "__all__"
+
+ def save(self, **kwargs):
+ return super().save(**kwargs)
diff --git a/dvadmin-backend/apps/system/views.py b/dvadmin-backend/apps/system/views.py
index c4657ab..7f1b16b 100644
--- a/dvadmin-backend/apps/system/views.py
+++ b/dvadmin-backend/apps/system/views.py
@@ -2,7 +2,7 @@ from rest_framework.request import Request
from apps.op_drf.filters import DataLevelPermissionsFilter
from apps.op_drf.viewsets import CustomModelViewSet
-from apps.system.filters import DictDetailsFilter, DictDataFilter, ConfigSettingsFilter
+from apps.system.filters import DictDetailsFilter, DictDataFilter, ConfigSettingsFilter, MessagePushFilter
from apps.system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush
from apps.system.serializers import DictDataSerializer, DictDataCreateUpdateSerializer, DictDetailsSerializer, \
DictDetailsCreateUpdateSerializer, DictDetailsListSerializer, ConfigSettingsSerializer, \
@@ -137,7 +137,7 @@ class SaveFileModelViewSet(CustomModelViewSet):
serializer_class = SaveFileSerializer
create_serializer_class = SaveFileCreateUpdateSerializer
update_serializer_class = SaveFileCreateUpdateSerializer
- # filter_class = ConfigSettingsFilter
+ filter_class = ConfigSettingsFilter
extra_filter_backends = [DataLevelPermissionsFilter]
search_fields = ('configName',)
ordering = 'id' # 默认排序
@@ -152,6 +152,7 @@ class MessagePushModelViewSet(CustomModelViewSet):
create_serializer_class = MessagePushCreateUpdateSerializer
update_serializer_class = MessagePushCreateUpdateSerializer
extra_filter_backends = [DataLevelPermissionsFilter]
+ filter_class = MessagePushFilter
ordering = "-update_datetime" # 默认排序
def get_message_list(self, request: Request, *args, **kwargs):
diff --git a/dvadmin-backend/scripts/permission/permission_menu.sql b/dvadmin-backend/scripts/permission/permission_menu.sql
index 03e0d2e..0f87319 100644
--- a/dvadmin-backend/scripts/permission/permission_menu.sql
+++ b/dvadmin-backend/scripts/permission/permission_menu.sql
@@ -79,6 +79,6 @@ INSERT INTO `permission_menu` VALUES (45, '', 'admin', '2021-03-03 15:25:15.2249
INSERT INTO `permission_menu` VALUES (46, '', 'admin', '2021-03-03 15:28:30.061632', '2021-03-03 15:27:19.945663', '2', NULL, '文件下载', 4, '1', NULL, NULL, NULL, 'GET', 'system:clearsavefile:download:post', '1', '1', '1', 1, 11);
INSERT INTO `permission_menu` VALUES (47, '', 'admin', '2021-03-07 14:35:34.237127', '2021-03-07 14:32:06.754815', '1', 'message', '消息通知', 4, '1', 'system/message', 'system/message/index', '/system/message/', 'GET', 'system:message:get', '1', '1', '1', 1, 1);
INSERT INTO `permission_menu` VALUES (48, '', 'admin', '2021-03-07 14:35:06.718432', '2021-03-07 14:35:06.718463', '2', NULL, '发布通知', 1, '1', NULL, NULL, '/system/message/', 'POST', 'system:message:post', '1', '1', '1', 1, 47);
-INSERT INTO `permission_menu` VALUES (49, '', 'admin', '2021-03-07 14:36:47.675806', '2021-03-07 14:36:47.675837', '2', NULL, '修改通知', 2, '1', NULL, NULL, '/system/message/', 'PUT', 'system:message:put', '1', '1', '1', 1, 47);
-INSERT INTO `permission_menu` VALUES (50, '', 'admin', '2021-03-07 14:37:52.130536', '2021-03-07 14:37:52.130567', '2', NULL, '删除通知', 3, '1', NULL, NULL, '/permission/menu/', 'DELETE', 'permission:menu:delete', '1', '1', '1', 1, 47);
+INSERT INTO `permission_menu` VALUES (49, '', 'admin', '2021-03-08 13:04:32.158707', '2021-03-07 14:36:47.675837', '2', NULL, '修改通知', 2, '1', NULL, NULL, '/system/message/{id}/', 'PUT', 'system:message:{id}:put', '1', '1', '1', 1, 47);
+INSERT INTO `permission_menu` VALUES (50, '', 'admin', '2021-03-08 13:04:58.206693', '2021-03-07 14:37:52.130567', '2', NULL, '删除通知', 3, '1', NULL, NULL, '/permission/menu/{id}/', 'DELETE', 'permission:menu:{id}:delete', '1', '1', '1', 1, 47);
INSERT INTO `permission_menu` VALUES (51, '', 'admin', '2021-03-07 14:42:37.410336', '2021-03-07 14:42:37.410366', '2', NULL, '通知导出', 4, '1', NULL, NULL, '/system/message/export/', 'GET', 'system:message:export:get', '1', '1', '1', 1, 47);
diff --git a/dvadmin-ui/src/api/system/message.js b/dvadmin-ui/src/api/system/message.js
new file mode 100755
index 0000000..c21f688
--- /dev/null
+++ b/dvadmin-ui/src/api/system/message.js
@@ -0,0 +1,54 @@
+import request from '@/utils/request'
+
+// 查询参数列表
+export function listMessage(query) {
+ return request({
+ url: '/system/message/',
+ method: 'get',
+ params: query
+ })
+}
+
+// 查询参数详细
+export function getMessage(messageId) {
+ return request({
+ url: '/system/message/' + messageId + '/',
+ method: 'get'
+ })
+}
+
+// 新增参数配置
+export function addMessage(data) {
+ return request({
+ url: '/system/message/',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改参数配置
+export function updateMessage(data) {
+ return request({
+ url: '/system/message/' + data.id + '/',
+ method: 'put',
+ data: data
+ })
+}
+
+// 删除参数配置
+export function delMessage(messageId) {
+ return request({
+ url: '/system/message/' + messageId + '/',
+ method: 'delete'
+ })
+}
+
+
+// 导出参数
+export function exportMessage(query) {
+ return request({
+ url: '/system/message/export/',
+ method: 'get',
+ params: query
+ })
+}
diff --git a/dvadmin-ui/src/views/system/message/index.vue b/dvadmin-ui/src/views/system/message/index.vue
index 994e089..d9af126 100644
--- a/dvadmin-ui/src/views/system/message/index.vue
+++ b/dvadmin-ui/src/views/system/message/index.vue
@@ -1,22 +1,379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+ 发布通知
+
+
+
+ 修改通知
+
+
+
+ 删除通知
+
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ parseTime(scope.row.create_datetime) }}
+
+
+
+
+ 修改
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{dict.dictLabel}}
+
+
+
+
+
+
+
+
+
+
+
+ {{dict.dictLabel}}
+
+
+
+
+
+
+
-
-