From 8d409fcc79ea0d62d2ece1b4cf095be7185d11f7 Mon Sep 17 00:00:00 2001 From: colin Date: Tue, 19 Sep 2023 11:40:38 +0800 Subject: [PATCH] Fix multiple issues ** Fix ids manager to configure url mappings. ** Fix notice content formatting issues when the type is not Text. ** Add the missing flutter package. --- apps/flutter/dev_app/pubspec.yaml | 1 + .../api/messages/model/notificationsModel.ts | 8 +++ .../header/components/notify/NoticeList.vue | 45 +++++++++++-- .../default/header/components/notify/data.ts | 3 + .../header/components/notify/index.vue | 63 +++++++++++++++---- .../components/notify/useNotifications.ts | 20 ++++-- .../AuthServerHttpApiHostModule.Configure.cs | 11 +++- .../AuthServerHttpApiHostModule.cs | 3 + .../appsettings.Development.json | 25 +++++++- .../BackendAdminHttpApiHostModule.cs | 3 + ...LocalizationManagementHttpApiHostModule.cs | 3 + .../PlatformManagementHttpApiHostModule.cs | 3 + ...entityServerHttpApiHostModule.Configure.cs | 11 +++- .../appsettings.Development.json | 25 +++++++- 14 files changed, 193 insertions(+), 31 deletions(-) diff --git a/apps/flutter/dev_app/pubspec.yaml b/apps/flutter/dev_app/pubspec.yaml index db627ecaf..6d9103a04 100644 --- a/apps/flutter/dev_app/pubspec.yaml +++ b/apps/flutter/dev_app/pubspec.yaml @@ -53,6 +53,7 @@ dependencies: dio: ^5.2.0+1 flutter_easyloading: ^3.0.5 flutter_picker: ^2.1.0 + flutter_logs: ^2.1.11 get: ^4.6.5 get_storage: ^2.1.1 rxdart: ^0.27.7 diff --git a/apps/vue/src/api/messages/model/notificationsModel.ts b/apps/vue/src/api/messages/model/notificationsModel.ts index 07a243b29..7d3b711cb 100644 --- a/apps/vue/src/api/messages/model/notificationsModel.ts +++ b/apps/vue/src/api/messages/model/notificationsModel.ts @@ -10,6 +10,13 @@ export enum NotificationType { ServiceCallback = 30, } +export enum NotificationContentType { + Text = 0, + Html = 1, + Markdown = 2, + Json = 3, +} + export enum NotificationSeverity { Success = 0, Info = 10, @@ -37,6 +44,7 @@ export interface NotificationInfo { lifetime: NotificationLifetime; type: NotificationType; severity: NotificationSeverity; + contentType: NotificationContentType; } export interface NotificationGroup { diff --git a/apps/vue/src/layouts/default/header/components/notify/NoticeList.vue b/apps/vue/src/layouts/default/header/components/notify/NoticeList.vue index ab491f467..730f8ee55 100644 --- a/apps/vue/src/layouts/default/header/components/notify/NoticeList.vue +++ b/apps/vue/src/layouts/default/header/components/notify/NoticeList.vue @@ -34,13 +34,15 @@
@@ -61,6 +63,7 @@ import { ListItem } from './data'; import { useDesign } from '/@/hooks/web/useDesign'; import { List, Avatar, Tag, Typography } from 'ant-design-vue'; + import { NotificationContentType } from "/@/api/messages/model/notificationsModel"; import { isNumber } from '/@/utils/is'; export default defineComponent({ components: { @@ -95,6 +98,9 @@ onTitleClick: { type: Function as PropType<(Recordable) => void>, }, + onContentClick: { + type: Function as PropType<(Recordable) => void>, + }, }, emits: ['update:currentPage'], setup(props, { emit }) { @@ -103,9 +109,22 @@ const getData = computed(() => { const { pageSize, list } = props; if (pageSize === false) return []; - let size = isNumber(pageSize) ? pageSize : 5; + let size = isNumber(pageSize) ? pageSize : 10; return list.slice(size * (unref(current) - 1), size * unref(current)); }); + const getContent = computed(() => { + return (item: ListItem) => { + switch (item.contentType) { + default: + case NotificationContentType.Text: + return item.description; + case NotificationContentType.Html: + case NotificationContentType.Json: + case NotificationContentType.Markdown: + return item.title; + } + }; + }); watch( () => props.currentPage, (v) => { @@ -113,12 +132,15 @@ }, ); const isTitleClickable = computed(() => !!props.onTitleClick); + const isContentClickable = computed(() => !!props.onContentClick); const getPagination = computed(() => { const { list, pageSize } = props; - if (pageSize > 0 && list && list.length > pageSize) { + if (pageSize === false) return false; + const size = isNumber(pageSize) ? pageSize : 5; + if (size > 0 && list && list.length > size) { return { total: list.length, - pageSize, + pageSize: size, //size: 'small', current: unref(current), onChange(page) { @@ -135,7 +157,20 @@ props.onTitleClick && props.onTitleClick(item); } - return { prefixCls, getPagination, getData, handleTitleClick, isTitleClickable }; + function handleContentClick(item: ListItem) { + props.onContentClick && props.onContentClick(item); + } + + return { + prefixCls, + getPagination, + getData, + getContent, + handleTitleClick, + isTitleClickable, + handleContentClick, + isContentClickable, + }; }, }); diff --git a/apps/vue/src/layouts/default/header/components/notify/data.ts b/apps/vue/src/layouts/default/header/components/notify/data.ts index 15d524d7b..1ade95497 100644 --- a/apps/vue/src/layouts/default/header/components/notify/data.ts +++ b/apps/vue/src/layouts/default/header/components/notify/data.ts @@ -1,3 +1,5 @@ +import { NotificationContentType } from "/@/api/messages/model/notificationsModel"; + export interface ListItem { id: string; avatar: string; @@ -12,6 +14,7 @@ export interface ListItem { clickClose?: boolean; extra?: string; color?: string; + contentType?: NotificationContentType; } export interface TabItem { diff --git a/apps/vue/src/layouts/default/header/components/notify/index.vue b/apps/vue/src/layouts/default/header/components/notify/index.vue index d16703f98..9ca63a84c 100644 --- a/apps/vue/src/layouts/default/header/components/notify/index.vue +++ b/apps/vue/src/layouts/default/header/components/notify/index.vue @@ -1,6 +1,37 @@