diff --git a/src/api/v1/emailTemplate.ts b/src/api/v1/email/emailTemplate.ts similarity index 100% rename from src/api/v1/emailTemplate.ts rename to src/api/v1/email/emailTemplate.ts diff --git a/src/api/v1/emailUsers.ts b/src/api/v1/email/emailUsers.ts similarity index 100% rename from src/api/v1/emailUsers.ts rename to src/api/v1/email/emailUsers.ts diff --git a/src/api/v1/quartzExecuteLog.ts b/src/api/v1/log/quartzExecuteLog.ts similarity index 100% rename from src/api/v1/quartzExecuteLog.ts rename to src/api/v1/log/quartzExecuteLog.ts diff --git a/src/api/v1/userLoginLog.ts b/src/api/v1/log/userLoginLog.ts similarity index 100% rename from src/api/v1/userLoginLog.ts rename to src/api/v1/log/userLoginLog.ts diff --git a/src/api/v1/menu.ts b/src/api/v1/menu/menu.ts similarity index 100% rename from src/api/v1/menu.ts rename to src/api/v1/menu/menu.ts diff --git a/src/api/v1/menuIcon.ts b/src/api/v1/menu/menuIcon.ts similarity index 94% rename from src/api/v1/menuIcon.ts rename to src/api/v1/menu/menuIcon.ts index 8edf7ab..b29944c 100644 --- a/src/api/v1/menuIcon.ts +++ b/src/api/v1/menu/menuIcon.ts @@ -21,7 +21,7 @@ export const fetchDeleteMenuIcon = (data: any) => { return http.request>('delete', 'menuIcon/deleteMenuIcon', { data }); }; -/** 系统菜单图标---根据iconName搜索menuIc */ +/** 系统菜单图标---根据iconName搜索menuIcon */ export const fetchGetIconNameList = (data: any) => { return http.request>('get', 'menuIcon/noManage/getIconNameList', { params: data }); }; diff --git a/src/api/v1/message/messageReceived.ts b/src/api/v1/message/messageReceived.ts new file mode 100644 index 0000000..735cb7d --- /dev/null +++ b/src/api/v1/message/messageReceived.ts @@ -0,0 +1,17 @@ +import { http } from '@/api/service/request'; +import type { BaseResult, ResultTable } from '@/api/service/types'; + +/** 管理员操作用户消息---获取系统管理消息列表 */ +export const fetchGetMessageReceivedList = (data: any) => { + return http.request>('get', `messageReceived/getMessageReceivedList/${data.currentPage}/${data.pageSize}`, { params: data }); +}; + +/** 管理员操作用户消息---将用户消息标为已读 */ +export const fetchMarkMessageReceivedAsRead = (data: any) => { + return http.request>('put', 'messageReceived/markMessageReceivedAsRead', { data }); +}; + +/** 管理员操作用户消息---管理删除用户消息 */ +export const fetchDeleteMessageReceivedByIds = (data: any) => { + return http.request>('delete', 'messageReceived/deleteMessageReceivedByIds', { data }); +}; diff --git a/src/api/v1/message.ts b/src/api/v1/message/messageSend.ts similarity index 66% rename from src/api/v1/message.ts rename to src/api/v1/message/messageSend.ts index 19f5a56..9e9b485 100644 --- a/src/api/v1/message.ts +++ b/src/api/v1/message/messageSend.ts @@ -30,18 +30,3 @@ export const fetchDeleteMessage = (data: any) => { 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', 'messageReceived/noManage/updateUserMarkAsRead', { data }); -}; - -/** 系统消息---用户删除系统消息 */ -export const fetchDeleteUserMessageByIds = (data: any) => { - return http.request>('delete', 'message/noManage/deleteUserMessageByIds', { data }); -}; diff --git a/src/api/v1/messageType.ts b/src/api/v1/message/messageType.ts similarity index 100% rename from src/api/v1/messageType.ts rename to src/api/v1/message/messageType.ts diff --git a/src/api/v1/message/messageUser.ts b/src/api/v1/message/messageUser.ts new file mode 100644 index 0000000..2055ace --- /dev/null +++ b/src/api/v1/message/messageUser.ts @@ -0,0 +1,17 @@ +import { http } from '@/api/service/request'; +import type { BaseResult, ResultTable } from '@/api/service/types'; + +/** 用户系统消息---用户获取系统消息列表 */ +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', 'messageReceived/noManage/updateUserMarkAsRead', { data }); +}; + +/** 系统消息---用户删除系统消息 */ +export const fetchDeleteUserMessageByIds = (data: any) => { + return http.request>('delete', 'message/noManage/deleteUserMessageByIds', { data }); +}; diff --git a/src/api/v1/schedulers.ts b/src/api/v1/schedulers/schedulers.ts similarity index 100% rename from src/api/v1/schedulers.ts rename to src/api/v1/schedulers/schedulers.ts diff --git a/src/api/v1/schedulersGroup.ts b/src/api/v1/schedulers/schedulersGroup.ts similarity index 100% rename from src/api/v1/schedulersGroup.ts rename to src/api/v1/schedulers/schedulersGroup.ts diff --git a/src/api/v1/adminUser.ts b/src/api/v1/system/adminUser.ts similarity index 100% rename from src/api/v1/adminUser.ts rename to src/api/v1/system/adminUser.ts diff --git a/src/api/v1/dept.ts b/src/api/v1/system/dept.ts similarity index 100% rename from src/api/v1/dept.ts rename to src/api/v1/system/dept.ts diff --git a/src/api/v1/power.ts b/src/api/v1/system/power.ts similarity index 100% rename from src/api/v1/power.ts rename to src/api/v1/system/power.ts diff --git a/src/api/v1/role.ts b/src/api/v1/system/role.ts similarity index 100% rename from src/api/v1/role.ts rename to src/api/v1/system/role.ts diff --git a/src/api/v1/system.ts b/src/api/v1/system/system.ts similarity index 100% rename from src/api/v1/system.ts rename to src/api/v1/system/system.ts diff --git a/src/components/SelectIcon/Select.vue b/src/components/SelectIcon/Select.vue index 58f2905..4f0071d 100644 --- a/src/components/SelectIcon/Select.vue +++ b/src/components/SelectIcon/Select.vue @@ -1,6 +1,6 @@ + + diff --git a/src/views/message-management/message-received/utils/columns.tsx b/src/views/message-management/message-received/utils/columns.tsx new file mode 100644 index 0000000..01f65a3 --- /dev/null +++ b/src/views/message-management/message-received/utils/columns.tsx @@ -0,0 +1,58 @@ +import { $t } from '@/plugins/i18n'; +import { ElTag } from 'element-plus'; + +// 表格列 +export const columns: TableColumnList = [ + { type: 'selection', align: 'left' }, + { type: 'index', index: (index: number) => index + 1, label: '序号', width: 60 }, + // 消息标题 + { label: $t('title'), prop: 'title' }, + // 消息简介 + { label: $t('summary'), prop: 'summary' }, + // 发送人昵称 + { label: $t('sendNickname'), prop: 'sendNickname' }, + // 接受人昵称 + { label: $t('receivedUserNickname'), prop: 'receivedUserNickname' }, + // 消息类型 + { label: $t('messageType'), prop: 'messageType', slot: 'messageType' }, + // 编辑器类型 + { label: $t('editorType'), prop: 'editorType' }, + // 封面 + { label: $t('cover'), prop: 'cover', slot: 'cover', width: 80 }, + // 消息等级 + { + label: $t('level'), + prop: 'level', + formatter({ level }) { + return ( + + {$t(level)} + + ); + }, + width: 100, + }, + // 消息等级详情 + { label: $t('extra'), prop: 'extra', slot: 'extra' }, + // 0:未读 1:已读 + { + label: $t('status'), + prop: 'status', + formatter({ status }) { + return status ? ( + + {$t('readAlready')} + + ) : ( + + {$t('unread')} + + ); + }, + width: 80, + }, + { label: $t('table.updateTime'), prop: 'updateTime', sortable: true, width: 160 }, + { label: $t('table.createTime'), prop: 'createTime', sortable: true, width: 160 }, + { label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 130 }, + { label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', width: 130 }, +]; diff --git a/src/views/message-management/message-received/utils/hooks.ts b/src/views/message-management/message-received/utils/hooks.ts new file mode 100644 index 0000000..7178b0c --- /dev/null +++ b/src/views/message-management/message-received/utils/hooks.ts @@ -0,0 +1,64 @@ +import { addDialog } from '@/components/BaseDialog/index'; +import { h, ref } from 'vue'; +import { message, messageBox } from '@/utils/message'; +import { $t } from '@/plugins/i18n'; +import DeleteBatchDialog from '@/components/Table/DeleteBatchDialog.vue'; +import { useMessageReceivedStore } from '@/store/message/messageReceived'; + +// 删除ids +export const selectIds = ref([]); +const messageReceivedStore = useMessageReceivedStore(); + +/** 搜索初始化系统消息 */ +export async function onSearch() { + messageReceivedStore.loading = true; + await messageReceivedStore.getMessageReceivedList(); + messageReceivedStore.loading = false; +} + +/** 管理员操作用户消息---将用户消息标为已读 */ +export const markMessageReceivedAsRead = async () => { + // 是否确认标为已读 + let result = await messageBox({ + title: $t('markAsRead'), + showMessage: false, + confirmMessage: undefined, + cancelMessage: $t('cancel'), + }); + if (!result) return; + + result = await messageReceivedStore.markMessageReceivedAsRead(selectIds.value); + if (!result) return; + await onSearch(); +}; + +/** 批量删除 */ +export const onDeleteBatch = async () => { + const ids = selectIds.value; + const formDeletedBatchRef = ref(); + + addDialog({ + title: $t('deleteBatchTip'), + width: '30%', + props: { formInline: { confirmText: '' } }, + draggable: true, + fullscreenIcon: true, + closeOnClickModal: false, + contentRenderer: () => h(DeleteBatchDialog, { ref: formDeletedBatchRef }), + beforeSure: (done, { options }) => { + formDeletedBatchRef.value.formDeletedBatchRef.validate(async (valid: any) => { + if (!valid) return; + + const text = options.props.formInline.confirmText.toLowerCase(); + if (text === 'yes' || text === 'y') { + // 删除数据 + const result = await messageReceivedStore.deleteMessageReceivedByIds(ids); + if (!result) return; + + await onSearch(); + done(); + } else message($t('deleteBatchTip'), { type: 'warning' }); + }); + }, + }); +}; diff --git a/src/views/message-management/message/index.vue b/src/views/message-management/message-send/index.vue similarity index 94% rename from src/views/message-management/message/index.vue rename to src/views/message-management/message-send/index.vue index 23c8c62..086a831 100644 --- a/src/views/message-management/message/index.vue +++ b/src/views/message-management/message-send/index.vue @@ -1,27 +1,27 @@