From 56534cdf67c63ef87e8953d4e38395f4fc262121 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Sat, 2 Nov 2024 17:03:59 +0800 Subject: [PATCH] =?UTF-8?q?completepage:=20=F0=9F=8D=BB=20=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E5=8A=9F=E8=83=BD=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/data.js | 6 +- src/api/v1/menu.ts | 5 + src/api/v1/message.ts | 32 +++-- src/enums/baseConstant.ts | 5 +- src/layout/components/lay-notice/data.ts | 29 +++- src/layout/components/lay-notice/index.vue | 9 +- src/store/message/messageUser.ts | 65 +++++++++ src/store/system/menu.ts | 7 + .../message-detail/detail-type.vue | 130 ++++++++++++++---- .../message-detail/index.vue | 39 +++--- .../message-detail/utils/columns.tsx | 9 ++ .../message-detail/utils/hooks.ts | 72 ++++++++++ .../message-detail/utils/types.ts | 26 ++++ .../files/files-dialog.vue | 4 +- src/views/{monitor => system}/files/index.vue | 4 +- .../files/utils/columns.ts | 0 .../{monitor => system}/files/utils/hooks.tsx | 4 +- .../{monitor => system}/files/utils/types.ts | 0 src/views/system/menu/utils/hooks.tsx | 4 +- 19 files changed, 377 insertions(+), 73 deletions(-) create mode 100644 src/store/message/messageUser.ts create mode 100644 src/views/message-management/message-detail/utils/columns.tsx create mode 100644 src/views/message-management/message-detail/utils/hooks.ts create mode 100644 src/views/message-management/message-detail/utils/types.ts rename src/views/{monitor => system}/files/files-dialog.vue (96%) rename src/views/{monitor => system}/files/index.vue (97%) rename src/views/{monitor => system}/files/utils/columns.ts (100%) rename src/views/{monitor => system}/files/utils/hooks.tsx (96%) rename src/views/{monitor => system}/files/utils/types.ts (100%) diff --git a/build/data.js b/build/data.js index 5a1f805..bc345a1 100644 --- a/build/data.js +++ b/build/data.js @@ -3,7 +3,7 @@ */ (async function requestPath() { // 获取基础paths对象 - const response = await fetch('http://localhost:7070/v3/api-docs/admin%E7%AE%A1%E7%90%86%E5%91%98%E6%8E%A5%E5%8F%A3%E8%AF%B7%E6%B1%82', { method: 'GET' }); + const response = await fetch('http://localhost:7070/v3/api-docs/%E9%BB%98%E8%AE%A4%E8%AF%B7%E6%B1%82%E6%8E%A5%E5%8F%A3', { method: 'GET' }); const json = await response.json(); const paths = json.paths; @@ -15,7 +15,7 @@ // 获取所有键 Object.keys(paths) - .filter(item => !item.includes('noAuth')) + .filter(item => !item.includes('noAuth') && !item.includes('noManage')) .forEach(key => { const pathKey = paths[key]; const { tags, description } = pathKey[Object.keys(pathKey)[0]]; @@ -76,7 +76,7 @@ async function add(data) { headers: { 'Content-Type': 'application/json', token: - 'eyJhbGciOiJIUzI1NiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAA_yWLywrCMBAA_2XPjeSxZEtP4s2L_7DpbqBCorUGLMV_N-BtGGYO2FqCCS6t1h0G0M8TJkfBhtFbHwdom76u0t0fb1y05yxlqed1Pc2P0q_7e-lS3JwUkQxhDgZzFMPZkUmWhTX6EYnh-wMBQi1DcgAAAA.II3lcc1R1pX8G6eaEVkCxxDXkscN4c6p89zn7FzFhaU', + 'eyJhbGciOiJIUzI1NiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAA_yWLywqFIBQA_-WsE9Sjt2xXuz7jmAYGWfiAIu6_X-HuhmHmhVwtjDDXGB_owN8XjKJH3iMayTuo2afFNffHSIdv-eSOEEMuicqZ2raX0Kx22g4ciRkUyBRpw6yxgq1S0SBXubnPBt8fEjhnWnMAAAA.YwSm-NO_6Kg1k1GRwucIt50Y70FbPHoldsdTPVHK_Y4', }, body: JSON.stringify(data), }); diff --git a/src/api/v1/menu.ts b/src/api/v1/menu.ts index f6e2f5d..a758cf2 100644 --- a/src/api/v1/menu.ts +++ b/src/api/v1/menu.ts @@ -23,6 +23,11 @@ export const fetchAssignRolesToRouter = (data: any) => { return http.request>('post', `routerRole/assignRolesToRouter`, { data }); }; +/** 菜单管理-批量为菜单添加角色 */ +export const fetchAssignAddBatchRolesToRouter = (data: any) => { + return http.request>('post', `routerRole/assignAddBatchRolesToRouter`, { data }); +}; + /** 菜单管理-清除选中菜单所有角色 */ export const fetchClearAllRolesSelect = (data: any) => { return http.request>('delete', `routerRole/clearAllRolesSelect`, { data }); diff --git a/src/api/v1/message.ts b/src/api/v1/message.ts index 135aec0..226b2b3 100644 --- a/src/api/v1/message.ts +++ b/src/api/v1/message.ts @@ -1,26 +1,16 @@ import { http } from '@/api/service/request'; import type { BaseResult, ResultTable } from '@/api/service/types'; -/** 系统消息---获取系统消息列表 */ +/** 系统消息---获取系统管理消息列表 */ export const fetchGetMessageList = (data: any) => { return http.request>('get', `message/getMessageList/${data.currentPage}/${data.pageSize}`, { params: data }); }; -/** 系统消息---获取系统消息列表 */ -export const fetchGetUserMessageList = (data: any) => { - return http.request>('get', `message/noManage/getUserMessageList/${data.currentPage}/${data.pageSize}`, { params: data }); -}; - /** 系统消息---根据消息id获取接收人信息 */ export const fetchGetReceivedUserinfoByMessageId = (data: any) => { return http.request>('get', `messageReceived/noManage/getReceivedUserinfoByMessageId`, { params: data }); }; -/** 系统消息---根据消息id查询消息详情 */ -export const fetchGetMessageDetailById = (data: any) => { - return http.request>('get', `message/noManage/getMessageDetailById`, { params: data }); -}; - /** 系统消息---添加系统消息 */ export const fetchAddMessage = (data: any) => { return http.request>('post', 'message/addMessage', { data }); @@ -35,3 +25,23 @@ export const fetchUpdateMessage = (data: any) => { export const fetchDeleteMessage = (data: any) => { return http.request>('delete', 'message/deleteMessage', { data }); }; + +/** 用户系统消息---根据消息id查询消息详情 */ +export const fetchGetMessageDetailById = (data: any) => { + return http.request>('get', `message/noManage/getMessageDetailById`, { params: data }); +}; + +/** 用户系统消息---用户获取系统消息列表 */ +export const fetchGetUserMessageList = (data: any) => { + return http.request>('get', `message/noManage/getUserMessageList/${data.currentPage}/${data.pageSize}`, { params: data }); +}; + +/** 系统消息---用户将消息标为已读 */ +export const fetchUpdateUserMarkAsRead = (data: any) => { + return http.request>('put', 'message/noManage/updateUserMarkAsRead', { data }); +}; + +/** 系统消息---用户删除系统消息 */ +export const fetchDeleteUserMessageByIds = (data: any) => { + return http.request>('delete', 'message/noManage/deleteUserMessageByIds', { data }); +}; diff --git a/src/enums/baseConstant.ts b/src/enums/baseConstant.ts index 3fd3904..208f0e2 100644 --- a/src/enums/baseConstant.ts +++ b/src/enums/baseConstant.ts @@ -35,8 +35,9 @@ export const enabledOrNotStatus = [ /** 是否已读 */ export const isReadStatus = [ - { value: true, label: $t('readAlready') }, - { value: false, label: $t('unread') }, + { value: '', label: $t('all') }, + { value: 'true', label: $t('readAlready') }, + { value: 'false', label: $t('unread') }, ]; /** diff --git a/src/layout/components/lay-notice/data.ts b/src/layout/components/lay-notice/data.ts index 5439606..d5f70c1 100644 --- a/src/layout/components/lay-notice/data.ts +++ b/src/layout/components/lay-notice/data.ts @@ -2,6 +2,7 @@ import { $t } from '@/plugins/i18n'; import { computed, ref } from 'vue'; import { fetchGetUserMessageList } from '@/api/v1/message'; import { throttle } from '@pureadmin/utils'; +import { useWebNotification } from '@vueuse/core'; export interface ListItem { messageId: string; @@ -27,6 +28,13 @@ const form = { status: false, currentPage: 1, pageSize: 100 }; // 响应内容 export const noticesData = ref([]); +// 通知消息数据 +export const noticesNum = ref(0); +export const notices = ref(noticesData); +// 选择的消息栏目 +export const activeKey = ref(noticesData.value[0]?.key); +export const getLabel = computed(() => item => item.name + (item.list.length > 0 ? `(${item.list.length})` : '')); + /** 获取所有消息 */ export const getAllMessageList = async () => { const baseResult = await fetchGetUserMessageList(form); @@ -82,14 +90,21 @@ export const getAllMessageList = async () => { { key: '2', name: $t('status.pureMessage'), list: notify, emptyText: $t('status.pureNoMessage') }, { key: '3', name: $t('status.systemMessage'), list: system, emptyText: $t('status.systemMessage') }, ]; -}; -// 通知消息数据 -export const noticesNum = ref(0); -export const notices = ref(noticesData); -// 选择的消息栏目 -export const activeKey = ref(noticesData.value[0]?.key); -export const getLabel = computed(() => item => item.name + (item.list.length > 0 ? `(${item.list.length})` : '')); + // 调用浏览器系统通知 + const { isSupported, show, close } = useWebNotification({ + title: system[0]?.title, + dir: 'auto', + lang: 'zh', + renotify: true, + tag: system[0]?.extra, + }); + if (system.length <= 0 || !isSupported.value) { + close(); + return; + } + await show(); +}; /** 计算消息数量 */ export const computedNoticesNum = throttle(async () => { diff --git a/src/layout/components/lay-notice/index.vue b/src/layout/components/lay-notice/index.vue index 999fd13..dad6e19 100644 --- a/src/layout/components/lay-notice/index.vue +++ b/src/layout/components/lay-notice/index.vue @@ -4,17 +4,24 @@ import { onMounted } from 'vue'; import { activeKey, computedNoticesNum, getLabel, notices, noticesNum } from './data'; import NoticeList from './components/NoticeList.vue'; import BellIcon from '@iconify-icons/ep/bell'; +import { useMessageTypeStore } from '@/store/message/messageType'; const { t } = useI18n(); +const messageTypeStore = useMessageTypeStore(); onMounted(() => { + messageTypeStore.getAllMessageTypeList(); computedNoticesNum(); });