From 24395628389bcba57f759613a04f646c9fdbe16e Mon Sep 17 00:00:00 2001 From: wangyifeng <812766448@qq.com> Date: Tue, 20 May 2025 15:05:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=BE=A4=E8=81=8A=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E4=B8=AD=E7=BE=A4=E5=85=AC=E5=91=8A=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=85=A5=E5=92=8C=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components.d.ts | 1 + src/api/group.js | 5 + src/components/common/customModal.vue | 11 +- src/components/group/GroupPanel.vue | 47 ++- src/utils/auth.js | 2 +- src/views/message/inner/IndexContent.vue | 358 ++++++++++++++++++++++- 6 files changed, 403 insertions(+), 21 deletions(-) diff --git a/components.d.ts b/components.d.ts index 85c3e24..fd12a2c 100644 --- a/components.d.ts +++ b/components.d.ts @@ -65,6 +65,7 @@ declare module 'vue' { NPopover: typeof import('naive-ui')['NPopover'] NRadio: typeof import('naive-ui')['NRadio'] NSpin: typeof import('naive-ui')['NSpin'] + NTag: typeof import('naive-ui')['NTag'] NVirtualList: typeof import('naive-ui')['NVirtualList'] RevokeMessage: typeof import('./src/components/talk/message/RevokeMessage.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] diff --git a/src/api/group.js b/src/api/group.js index 473dcfd..4ec0302 100644 --- a/src/api/group.js +++ b/src/api/group.js @@ -77,6 +77,11 @@ export const ServeEditGroupNotice = (data) => { return post('/api/v1/group/notice/edit', data) } +// 删除群公告 +export const ServeDeleteGroupNotice = (data) => { + return post('/api/v1/group/notice/delete', data) +} + export const ServeGetGroupApplyList = (data) => { return get('/api/v1/group/apply/list', data) } diff --git a/src/components/common/customModal.vue b/src/components/common/customModal.vue index 6915374..bfee602 100644 --- a/src/components/common/customModal.vue +++ b/src/components/common/customModal.vue @@ -72,6 +72,11 @@ const props = defineProps({ // 自定义按钮样式 type: String, default: '' + }, + customCloseEvent: { + // 是否自定义关闭事件 + type: Boolean, + default: false } }) @@ -105,7 +110,11 @@ const state = reactive({ }) const handleCloseModal = () => { - show.value = false + if (props.customCloseEvent) { + emit('closeModal') + } else { + show.value = false + } } diff --git a/src/components/group/GroupPanel.vue b/src/components/group/GroupPanel.vue index 5db3975..d6a7227 100644 --- a/src/components/group/GroupPanel.vue +++ b/src/components/group/GroupPanel.vue @@ -9,7 +9,8 @@ import { ServeGroupDetail, ServeGetGroupMembers, ServeSecedeGroup, - ServeUpdateGroupCard + ServeUpdateGroupCard, + ServeGetGroupNotices } from '@/api/group' import { useInject } from '@/hooks' import customModal from '@/components/common/customModal.vue' @@ -34,12 +35,18 @@ const props = defineProps({ // 1: 单聊, 2: 群聊 type: Number, default: 0 + }, + groupNoticeContentChange: { + // 群公告内容变化 + type: String, + default: '' } }) watch(props, () => { loadDetail() loadMembers() + getGroupNotices() }) const editCardPopover = ref(false) @@ -74,7 +81,14 @@ const state = reactive({ showAllMember: false, // 是否显示全部成员 openGroupMemberSearch: false, //是否开启群成员搜索 isShowUserCardModal: false, //是否显示成员信息模态框 - userInfo: {} //当前打开的成员信息卡信息 + userInfo: {}, //当前打开的成员信息卡信息 + groupNoticeInfo: { + id: 0, + avatar: '', + updater_name: '', + updated_at: '', + content: '' + } //群公告信息 }) const members = ref([]) @@ -258,8 +272,33 @@ const showMemberInfo = (memberItem: any) => { //点击显示群公告模态框 const showGroupNoticeModal = () => { - emit('handleGroupNoticeModalShow', true) + emit('handleGroupNoticeModalShow', isAdmin.value || isLeader.value) } + +//获取群公告列表 +const getGroupNotices = () => { + ServeGetGroupNotices({ + group_id: props.gid + }).then((res) => { + console.log(res) + if (res.code == 200) { + if (res?.data?.items[0]?.id) { + state.groupNoticeInfo = res.data.items[0] + } else { + state.groupNoticeInfo = { + id: 0, + avatar: '', + updater_name: '', + updated_at: '', + content: '' + } + } + } else { + window['$message'].warning(res.msg) + } + }) +} +getGroupNotices()