From eb9e063f9444f8bc16eefa45dec1cebdd530e65d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Wed, 10 Mar 2021 01:17:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF-=E6=B6=88=E6=81=AF=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dvadmin-backend/apps/system/filters.py | 2 +- dvadmin-backend/apps/system/urls.py | 6 +- dvadmin-backend/apps/system/views.py | 28 ++- dvadmin-ui/src/api/system/message.js | 29 ++- .../src/views/system/message/Mymessage.vue | 224 +++++++++++++----- dvadmin-ui/src/views/system/message/index.vue | 14 +- 6 files changed, 218 insertions(+), 85 deletions(-) diff --git a/dvadmin-backend/apps/system/filters.py b/dvadmin-backend/apps/system/filters.py index 053c8a2..2e0ddf8 100644 --- a/dvadmin-backend/apps/system/filters.py +++ b/dvadmin-backend/apps/system/filters.py @@ -48,7 +48,7 @@ class MessagePushFilter(django_filters.rest_framework.FilterSet): """ 消息通知 简单过滤器 """ - + # is_read = django_filters.CharFilter(field_name='messagepushuser_message_push__is_read') class Meta: model = MessagePush fields = '__all__' diff --git a/dvadmin-backend/apps/system/urls.py b/dvadmin-backend/apps/system/urls.py index 2f53cd7..1317d02 100644 --- a/dvadmin-backend/apps/system/urls.py +++ b/dvadmin-backend/apps/system/urls.py @@ -25,7 +25,9 @@ urlpatterns = [ re_path('message/receive/', MessagePushModelViewSet.as_view({"get": "get_received_messages"})), # 消息通知导出 re_path('message/export/', MessagePushModelViewSet.as_view({'get': 'export',})), - # 消息已读 - re_path('message/export/', MessagePushModelViewSet.as_view({'get': 'export',})), + # 用户个人消息列表 + re_path('message/user_messages/', MessagePushModelViewSet.as_view({'get': 'get_user_messages',})), + # 改为已读 + re_path('message/is_read/(?P.*)/', MessagePushModelViewSet.as_view({'put': 'update_is_read',})), ] urlpatterns += router.urls diff --git a/dvadmin-backend/apps/system/views.py b/dvadmin-backend/apps/system/views.py index 69cde44..6e342a9 100644 --- a/dvadmin-backend/apps/system/views.py +++ b/dvadmin-backend/apps/system/views.py @@ -1,3 +1,4 @@ +from django.db.models import Q from rest_framework.request import Request from apps.op_drf.filters import DataLevelPermissionsFilter @@ -5,6 +6,7 @@ from apps.op_drf.viewsets import CustomModelViewSet from apps.system.filters import DictDetailsFilter, DictDataFilter, ConfigSettingsFilter, MessagePushFilter, \ SaveFileFilter from apps.system.models import DictData, DictDetails, ConfigSettings, SaveFile, MessagePush +from apps.system.models import MessagePushUser from apps.system.serializers import DictDataSerializer, DictDataCreateUpdateSerializer, DictDetailsSerializer, \ DictDetailsCreateUpdateSerializer, DictDetailsListSerializer, ConfigSettingsSerializer, \ ConfigSettingsCreateUpdateSerializer, SaveFileSerializer, SaveFileCreateUpdateSerializer, \ @@ -164,13 +166,19 @@ class MessagePushModelViewSet(CustomModelViewSet): data = MessagePushSerializer(messages, many=True) return SuccessResponse(msg="返回", data=data) - def get_received_messages(self, request: Request, *args, **kwargs): + def get_user_messages(self, request: Request, *args, **kwargs): """ - 用户获取未读消息通知列表 + 获取用户自己消息列表 """ - queryset = self.filter_queryset(self.get_queryset()) - queryset = queryset.filter(recipient_id=request.user.id, is_read=0) + is_read = request.query_params.get('is_read', None) + if is_read: + if is_read == 'False': + queryset = queryset.filter(Q(messagepushuser_message_push__is_read=is_read) | Q(user=None)) + else: + queryset = queryset.filter(messagepushuser_message_push__is_read=is_read) + + queryset = queryset.filter(is_reviewed=True) page = self.paginate_queryset(queryset) if hasattr(self, 'handle_logging'): self.handle_logging(request, *args, **kwargs) @@ -184,12 +192,14 @@ class MessagePushModelViewSet(CustomModelViewSet): serializer = self.get_serializer(queryset, many=True) return SuccessResponse(serializer.data) - def get_received_messages_count(self, request: Request, *args, **kwargs): + def update_is_read(self, request: Request, *args, **kwargs): """ - 获取用户未读消息数量 + 修改为已读 """ - - pass + instance, _ = MessagePushUser.objects.get_or_create(message_push_id=kwargs.get('pk'), user=request.user) + instance.is_read = True + instance.save() + return SuccessResponse() def export(self, request: Request, *args, **kwargs): """ @@ -199,6 +209,6 @@ class MessagePushModelViewSet(CustomModelViewSet): :param kwargs: :return: """ - field_data = ['消息序号', '标题', '内容', '消息类型', '是否审核', '消息状态','通知接收消息用户', '创建者', '修改者', '修改时间', '创建时间'] + field_data = ['消息序号', '标题', '内容', '消息类型', '是否审核', '消息状态', '通知接收消息用户', '创建者', '修改者', '修改时间', '创建时间'] data = ExportMessagePushSerializer(MessagePush.objects.all(), many=True).data return SuccessResponse(export_excel_save_model(request, field_data, data, '导出岗位数据.xls')) diff --git a/dvadmin-ui/src/api/system/message.js b/dvadmin-ui/src/api/system/message.js index c21f688..574a5bf 100755 --- a/dvadmin-ui/src/api/system/message.js +++ b/dvadmin-ui/src/api/system/message.js @@ -1,6 +1,6 @@ import request from '@/utils/request' -// 查询参数列表 +// 查询通知列表 export function listMessage(query) { return request({ url: '/system/message/', @@ -9,7 +9,7 @@ export function listMessage(query) { }) } -// 查询参数详细 +// 查询通知详细 export function getMessage(messageId) { return request({ url: '/system/message/' + messageId + '/', @@ -17,7 +17,7 @@ export function getMessage(messageId) { }) } -// 新增参数配置 +// 新增通知配置 export function addMessage(data) { return request({ url: '/system/message/', @@ -26,7 +26,7 @@ export function addMessage(data) { }) } -// 修改参数配置 +// 修改通知配置 export function updateMessage(data) { return request({ url: '/system/message/' + data.id + '/', @@ -35,7 +35,7 @@ export function updateMessage(data) { }) } -// 删除参数配置 +// 删除通知配置 export function delMessage(messageId) { return request({ url: '/system/message/' + messageId + '/', @@ -44,7 +44,7 @@ export function delMessage(messageId) { } -// 导出参数 +// 导出通知 export function exportMessage(query) { return request({ url: '/system/message/export/', @@ -52,3 +52,20 @@ export function exportMessage(query) { params: query }) } + +// 获取用户通知列表 +export function userMessage(query) { + return request({ + url: '/system/message/user_messages/', + method: 'get', + params: query + }) +} + +// 修改通知为已读 +export function updateIsRead(data) { + return request({ + url: '/system/message/is_read/'+ data.id + '/', + method: 'put', + }) +} diff --git a/dvadmin-ui/src/views/system/message/Mymessage.vue b/dvadmin-ui/src/views/system/message/Mymessage.vue index feb245e..a7e0bb8 100644 --- a/dvadmin-ui/src/views/system/message/Mymessage.vue +++ b/dvadmin-ui/src/views/system/message/Mymessage.vue @@ -1,79 +1,183 @@ + diff --git a/dvadmin-ui/src/views/system/message/index.vue b/dvadmin-ui/src/views/system/message/index.vue index f138fae..03d35f3 100644 --- a/dvadmin-ui/src/views/system/message/index.vue +++ b/dvadmin-ui/src/views/system/message/index.vue @@ -141,7 +141,7 @@ @pagination="getList" /> - + @@ -224,7 +224,7 @@ showSearch: true, // 总条数 total: 0, - // 参数表格数据 + // 通知表格数据 configList: [], // 弹出层标题 title: "", @@ -236,7 +236,7 @@ StatusOptions: [], // 消息类型字典 MessagePushStatusOptions: [], - // 查询参数 + // 查询通知 queryParams: { pageNum: 1, pageSize: 10, @@ -246,7 +246,7 @@ is_reviewed: undefined, status: undefined }, - // 表单参数 + // 表单通知 form: {}, // 表单校验 rules: { @@ -272,7 +272,7 @@ }); }, methods: { - /** 查询参数列表 */ + /** 查询通知列表 */ getList() { this.loading = true; listMessage(this.addDateRange(this.queryParams)).then(response => { @@ -341,7 +341,7 @@ getMessage(id).then(response => { this.form = response.data; this.open = true; - this.title = "修改参数"; + this.title = "修改通知"; }); }, /** 提交按钮 */ @@ -367,7 +367,7 @@ /** 删除按钮操作 */ handleDelete(row) { const configIds = row.id || this.ids; - this.$confirm('是否确认删除参数编号为"' + configIds + '"的数据项?', "警告", { + this.$confirm('是否确认删除通知编号为"' + configIds + '"的数据项?', "警告", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning"