소스 검색

fix: 1.修改群聊页面
2.修改群设置

suwenjiang 2 달 전
부모
커밋
9750619566

+ 4 - 4
.env.development

@@ -14,17 +14,17 @@ VITE_APP_ENV=development
 # VITE_APP_BASE_URL=http://cilicli.qicp.vip
 
 # 黄雯本地
-VITE_APP_BASE_URL=http://192.168.1.44:8082/
+# VITE_APP_BASE_URL=http://192.168.1.44:8082/
 # 本地socoket
-VITE_APP_IM_URL=ws://192.168.1.44:8082/system/message
+# VITE_APP_IM_URL=ws://192.168.1.44:8082/system/message
 # 花生壳
 # VITE_APP_BASE_URL=http://q9943037p3.goho.co
 # VITE_APP_IM_URL=ws://q9943037p3.goho.co/system/message
 
 # 张维本地
-# VITE_APP_BASE_URL=http://192.168.1.73:8082/
+VITE_APP_BASE_URL=http://192.168.1.73:8082/
 # 本地socoket
-# VITE_APP_IM_URL=ws://192.168.1.73:8082/system/message
+VITE_APP_IM_URL=ws://192.168.1.73:8082/system/message
 # 花生壳
 # VITE_APP_BASE_URL=http://4eqxwr.natappfree.cc
 # VITE_APP_IM_URL=ws://4eqxwr.natappfree.cc/system/message

+ 3 - 3
src/components/Profile/News/GroupChat.vue

@@ -15,11 +15,11 @@
 
       <div class="h-48 w-245 ml-12 flex flex-wrap">
         <h1 class="line-clamp-1 mb-8 w-full text-xl text-black-3 font-semibold">
-          {{ itemData?.groupName }}
+          {{ itemData?.groupRemark }}
         </h1>
         <p class="line-clamp-1 w-full h-20 text-base text-black/[0.6] leading-3xl">
-          <!-- {{ messageContentParse(itemData?.lastMessage?.messageContent) }} -->
-          {{ itemData?.lastMessage ? itemData?.lastMessage?.messageContent.messageContent : '' }}
+          {{ messageContentParse(itemData?.lastMessage?.messageContent) }}
+          <!-- {{ itemData?.lastMessage ? itemData?.lastMessage?.messageContent.messageContent : '' }} -->
         </p>
       </div>
 

+ 2 - 2
src/components/Profile/News/SingleChat.vue

@@ -53,8 +53,8 @@
           {{ itemData?.groupRemark }}
         </h1>
         <p class="line-clamp-1 w-full h-20 text-base text-black/[0.6] leading-3xl">
-          <!-- {{ messageContentParse(itemData?.lastMessage?.messageContent) }} -->
-          {{ itemData?.lastMessage ? itemData?.lastMessage?.messageContent.messageContent : '' }}
+          {{ messageContentParse(itemData?.lastMessage?.messageContent) }}
+          <!-- {{ itemData?.lastMessage ? itemData?.lastMessage?.messageContent.messageContent : '' }} -->
         </p>
       </div>
 

+ 49 - 35
src/pages/chat/chat-message/index.vue

@@ -3,48 +3,62 @@
     <div class="text-center text-sm text-[#000]/40 mb-16">{{ msg.createTime }}</div>
     <div class="chat-message__content">
       <van-image
-          v-if="msg.viewType === 1"
-          :src="defaultAvatar"
-          width="40px"
-          height="40px"
-          radius="100%"
-          class="mr-8"
+        v-if="msg.viewType === 1"
+        :src="defaultAvatar"
+        width="40px"
+        height="40px"
+        radius="100%"
+        class="mr-8"
       ></van-image>
-      <div class="flex flex-col" :class=" msg.viewType ?  'items-start' : 'items-end'">
-        <div v-if="showName && msg.viewType === 1" class="text-black-9 text-sm mb-2">{{msg.showName}}</div>
+      <div class="flex flex-col" :class="msg.viewType ? 'items-start' : 'items-end'">
+        <div v-if="showName && msg.viewType === 1" class="text-black-9 text-sm mb-2">
+          {{ msg.showName }}
+        </div>
         <div class="flex-grow-0 w-fit">
-          <TextMessage v-if="msg.type === 'text'" :message-content="msg.messageContent"
-                       :view-type="msg.viewType"></TextMessage>
-          <ImageMessage v-if="msg.type === 'image'" :message-content="msg.messageContent"
-                        :view-type="msg.viewType"></ImageMessage>
-          <AudioMessage v-if="msg.type === 'audio'" :message-content="msg.messageContent"
-                        :view-type="msg.viewType"></AudioMessage>
-          <LinkMessage v-if="msg.type === 'link'" :message-content="msg.messageContent"
-                       :view-type="msg.viewType"></LinkMessage>
+          <TextMessage
+            v-if="msg.type === 'text'"
+            :message-content="msg.messageContent"
+            :view-type="msg.viewType"
+          ></TextMessage>
+          <ImageMessage
+            v-if="msg.type === 'image'"
+            :message-content="msg.messageContent"
+            :view-type="msg.viewType"
+          ></ImageMessage>
+          <AudioMessage
+            v-if="msg.type === 'audio'"
+            :message-content="msg.messageContent"
+            :view-type="msg.viewType"
+          ></AudioMessage>
+          <LinkMessage
+            v-if="msg.type === 'link'"
+            :message-content="msg.messageContent"
+            :view-type="msg.viewType"
+          ></LinkMessage>
         </div>
       </div>
-<!--      <div class="self-center text-sm mx-5 text-black-9">发送中</div>-->
+      <!--      <div class="self-center text-sm mx-5 text-black-9">发送中</div>-->
       <van-image
-          v-if="msg.viewType === 0"
-          :src="userInfo?.headImageUrl || defaultAvatar"
-          width="40px"
-          height="40px"
-          radius="100%"
-          class="ml-8"
+        v-if="msg.viewType === 0"
+        :src="userInfo?.headImageUrl || defaultAvatar"
+        width="40px"
+        height="40px"
+        radius="100%"
+        class="ml-8"
       ></van-image>
     </div>
   </div>
 </template>
 <script setup>
-import defaultAvatar from "~/assets/img/default_avatar.png";
-import TextMessage from "~/pages/chat/chat-message/text-message/index.vue";
-import ImageMessage from "~/pages/chat/chat-message/image-message/index.vue";
-import AudioMessage from "~/pages/chat/chat-message/audio-message/index.vue";
-import LinkMessage from "~/pages/chat/chat-message/link-message/index.vue";
-import {findHyperlinks} from "~/pages/chat/chat-message/link-message/handle";
+import defaultAvatar from '~/assets/img/default_avatar.png'
+import TextMessage from '~/pages/chat/chat-message/text-message/index.vue'
+import ImageMessage from '~/pages/chat/chat-message/image-message/index.vue'
+import AudioMessage from '~/pages/chat/chat-message/audio-message/index.vue'
+import LinkMessage from '~/pages/chat/chat-message/link-message/index.vue'
+import { findHyperlinks } from '~/pages/chat/chat-message/link-message/handle'
 
-const userInfoStore = useUserInfoStore();
-const {userInfo} = storeToRefs(userInfoStore);
+const userInfoStore = useUserInfoStore()
+const { userInfo } = storeToRefs(userInfoStore)
 
 const props = defineProps({
   message: Object,
@@ -52,11 +66,11 @@ const props = defineProps({
     type: Boolean,
     default: false
   }
-});
+})
 const msg = computed(() => {
   try {
     console.log(props.message, 'propsprops')
-    const {createTime, getUserId, sendUserId, messageContent, messageType} = props.message
+    const { createTime, getUserId, sendUserId, messageContent, messageType } = props.message
     return {
       messageContent: messageContent,
       type: getMessageType(messageType, messageContent),
@@ -71,7 +85,7 @@ const msg = computed(() => {
 })
 const getMessageType = (messageType, messageContent) => {
   const types = ['text', 'image', 'audio', 'video', 'link']
-  if(messageType === 0 && findHyperlinks(messageContent)) return types[4]
+  if (messageType === 0 && findHyperlinks(messageContent)) return types[4]
   return types[messageType]
 }
 </script>
@@ -94,4 +108,4 @@ const getMessageType = (messageType, messageContent) => {
     }
   }
 }
-</style>
+</style>

+ 21 - 16
src/pages/chat/chat-message/link-message/index.vue

@@ -1,17 +1,16 @@
 <script setup>
-import {findHyperlinks} from "~/pages/chat/chat-message/link-message/handle";
+import { findHyperlinks } from '~/pages/chat/chat-message/link-message/handle'
 
 const props = defineProps({
   messageContent: String | Number, // 消息内容
-  viewType: Number, // 0发送 1接收
-});
-
+  viewType: Number // 0发送 1接收
+})
 
 let linkInfo = ref(null) // hostname、mainParts、isInStation、url
 
 const initMessage = () => {
   try {
-    linkInfo.value = findHyperlinks(props.messageContent) ?? null;
+    linkInfo.value = findHyperlinks(props.messageContent) ?? null
   } catch (e) {
     console.error(e, 'initMessage')
   }
@@ -28,22 +27,30 @@ onMounted(() => {
         {{ messageContent }}
       </div>
       <template v-if="linkInfo">
-        <NuxtLink :to="linkInfo.url" target="_blank" class="bg-[#FFF] p-12 rounded-[4px] mt-12 flex flex-row">
+        <NuxtLink
+          :to="linkInfo.url"
+          target="_blank"
+          class="bg-[#FFF] p-12 rounded-[4px] mt-12 flex flex-row"
+        >
           <div class="flex-1 min-w-0 mr-10">
             <div class="text-black-3 text-base text-ellipsis text-nowrap overflow-hidden ...">
-              {{linkInfo.mainParts}}
+              {{ linkInfo.mainParts }}
             </div>
             <div class="text-black-9 text-sm text-ellipsis text-nowrap overflow-hidden ...">
-              {{linkInfo.hostname}}
+              {{ linkInfo.hostname }}
             </div>
           </div>
           <div class="ml-auto w-40 h-40 rounded-2 bg-[#F1F1F1] grid place-items-center">
-            <img src="../../../../assets/img/chat/link-icon.png" height="24" width="25" alt=""/>
+            <img src="~/assets/img/chat/link-icon.png" height="24" width="25" alt="" />
           </div>
         </NuxtLink>
       </template>
     </div>
-    <div class="bg-[#F3F3F3] rounded-[25px] px-12 py-4 text-black-9 mt-4 text-sm w-max grid place-items-center">转自 第三方链接</div>
+    <div
+      class="bg-[#F3F3F3] rounded-[25px] px-12 py-4 text-black-9 mt-4 text-sm w-max grid place-items-center"
+    >
+      转自 第三方链接
+    </div>
   </div>
 </template>
 
@@ -53,7 +60,7 @@ onMounted(() => {
     max-width: 250px;
     padding: 12px;
     box-sizing: border-box;
-    background: #F3F3F3;
+    background: #f3f3f3;
     color: #000000;
     color: rgba(0, 0, 0, 0.9);
     font-size: 14px;
@@ -63,18 +70,16 @@ onMounted(() => {
 
   &.link-message--accept {
     .link-message__content {
-      background: #F3F3F3;
+      background: #f3f3f3;
       border-radius: 0 12px 12px 12px;
     }
   }
 
   &.link-message--send {
     .link-message__content {
-      background: #FEF4E6;
+      background: #fef4e6;
       border-radius: 12px 0 12px 12px;
     }
   }
-
-
 }
-</style>
+</style>

+ 1 - 1
src/pages/chat/create-group.vue

@@ -271,7 +271,7 @@ async function handleCreateGroup() {
       // })
 
       navigateTo({
-        path: '/chat/group',
+        path: '/chat/group-chat',
         query: {
           groupId: data
         },

+ 2 - 2
src/pages/chat/examine.vue

@@ -170,7 +170,7 @@ async function handlePass(isPass) {
     })
 
     if (data) {
-      navigateTo('/chat/group', {
+      navigateTo('/chat/group-chat', {
         replace: true
       })
     }
@@ -179,7 +179,7 @@ async function handlePass(isPass) {
 // 取消 审核
 function handleCancel() {
   if (checked.value.length == 0) {
-    navigateTo('/chat/group', {
+    navigateTo('/chat/group-chat', {
       replace: true
     })
   } else {

+ 7 - 10
src/pages/chat/group-add.vue

@@ -142,7 +142,7 @@ onMounted(() => {
 const refreshing = ref(false)
 const loading = ref(false)
 const finished = ref(false)
-// 被选中成员
+
 const checked = ref([])
 const showName = ref('')
 const checkboxRefs = ref([])
@@ -184,7 +184,6 @@ const search = () => {
   } else {
     addDataList.value = filterDataList.value
   }
-  finished.value = false
 }
 
 // 刷新
@@ -214,17 +213,15 @@ const getList = async () => {
       filterDataList.value = data
     } else {
       addDataList.value = []
-      filterDataList.value = []
     }
 
     loading.value = false
     refreshing.value = false
-    finished.value = false
-    // if (addDataList.value.length >= totalCount) {
-    //   finished.value = true
-    // } else {
-    //   finished.value = false
-    // }
+    if (addDataList.value.length >= totalCount) {
+      finished.value = true
+    } else {
+      finished.value = false
+    }
   } catch (err) {
   } finally {
     refreshing.value = false
@@ -248,7 +245,7 @@ async function handleCreateGroup() {
     })
     if (data) {
       navigateTo({
-        path: '/chat/group',
+        path: '/chat/group-chat',
         query: data,
         replace: true
       })

+ 21 - 15
src/pages/chat/group-all.vue

@@ -39,14 +39,18 @@
             {{ item?.showName }}
           </p>
         </van-col>
-        <!-- <van-col span="4" class="mb-12 mr-10" @click="navigateTo('/chat/group-add')">
+        <van-col
+          span="4"
+          class="mb-12 mr-10"
+          @click="navigateTo(`/chat/group-add?groupId=${groupId}`)"
+        >
           <div
             class="w-40 h-40 rounded-full flex justify-center items-center bg-[#F3F3F3] border mx-auto overflow-hidden mb-4"
           >
             <van-icon name="plus" size="20" />
           </div>
           <p class="w-full line-clamp-1 lin text-sm text-center text-black-6">添加成员</p>
-        </van-col> -->
+        </van-col>
         <van-col v-if="isRankAndFiler(setData?.groupRole)" span="4 mb-12 mr-10">
           <div
             class="w-40 h-40 rounded-full flex justify-center items-center bg-[#F3F3F3] border mx-auto overflow-hidden mb-4"
@@ -78,11 +82,9 @@
   </div>
 </template>
 <script setup>
+const userInfoStore = useUserInfoStore()
+const { userInfo } = storeToRefs(userInfoStore)
 const route = useRoute()
-const queryParams = reactive({
-  groupRole: computed(() => route.query?.groupRole ?? '')
-})
-
 const loading = ref(false)
 const showName = ref('')
 
@@ -97,6 +99,7 @@ const groupMember = ref([])
 const searchMember = ref([])
 
 const setData = ref(null)
+const groupId = ref(route.query.groupId)
 
 // 搜索
 const search = () => {
@@ -107,22 +110,25 @@ const search = () => {
   }
 }
 
-// 获取群设置的配置信息
+// 获取群设置的配置信息   ///website/tourGroup/getGroupInfoAndMemberByGroupId
 const getList = async () => {
   try {
     loading.value = true
     let { data } = await request('/website/tourMember/getTourMemberInfoList', {
       query: {
-        groupId: route.query.groupId
+        groupId: groupId.value
       }
     })
 
-    if (Array.isArray(data?.memberList) && data.memberList?.length) {
-      showName.value
-        ? (searchMember.value = data?.memberList)
-        : (groupMember.value = data?.memberList)
-    } else {
-      showName.value ? (searchMember.value = []) : (groupMember.value = [])
+    if (data) {
+      setData.value = data
+      if (Array.isArray(data?.memberList) && data.memberList?.length) {
+        showName.value
+          ? (searchMember.value = data?.memberList)
+          : (groupMember.value = data?.memberList)
+      } else {
+        showName.value ? (searchMember.value = []) : (groupMember.value = [])
+      }
     }
 
     loading.value = false
@@ -142,7 +148,7 @@ definePageMeta({
 })
 
 useSeoMeta({
-  title: '群成员'
+  title: '群'
 })
 </script>
 <style lang="scss" scoped></style>

+ 105 - 76
src/pages/chat/group-chat.vue

@@ -3,37 +3,52 @@
     <van-nav-bar @click-left="router.back()" @click-right="onClickRight">
       <template #left>
         <div>
-          <van-icon name="arrow-left" color="black" size="18"/>
+          <van-icon name="arrow-left" color="black" size="18" />
         </div>
       </template>
       <template #title>
-        <div class="text-2xl text-black-3 text-semibold">
-          <div class="inline-block w-220 line-clamp-1">
-            {{ title }}
+        <div class="text-2xl text-black-3 text-semibold flex items-center">
+          <div style="min-width: 50px; max-width: 200px" class="inline-block line-clamp-1">
+            {{ groupInfo?.groupName }}
           </div>
-          <!-- <span class="ml-7 iconfont icon-close-remind text-black-9" style="font-size: 16px"></span> -->
+          <span
+            v-if="groupMemberInfo.isNotDisturb"
+            class="ml-7 iconfont icon-close-remind text-black-9"
+            style="font-size: 16px"
+          ></span>
         </div>
       </template>
       <template #right>
-        <van-icon name="ellipsis" color="black" size="18"/>
+        <van-icon name="ellipsis" color="black" size="18" />
       </template>
     </van-nav-bar>
+
+    <van-notice-bar
+      v-if="groupInfo?.groupNotice?.messageContent"
+      left-icon="volume-o"
+      mode="link"
+      :text="groupInfo?.groupNotice?.messageContent"
+    ></van-notice-bar>
+
     <template v-if="showPage">
       <van-list
-          ref="chatListRef"
-          class="flex-1 overflow-y-auto px-12 flex flex-col"
-          :finished="true"
-          finished-text=""
+        ref="chatListRef"
+        class="flex-1 overflow-y-auto px-12 flex flex-col"
+        :finished="true"
+        finished-text=""
       >
         <template v-for="(message, index) in currConversationChatList" :key="index">
-          <ChatMessage :show-name="true" :message="message" ></ChatMessage>
+          <ChatMessage :show-name="true" :message="message"></ChatMessage>
         </template>
       </van-list>
       <!--  <van-pull-refresh v-model="refreshing" @refresh="loadMore" class="flex-1">
             </van-pull-refresh>-->
-      <!--      <div class="fixed bottom-0 left-0 right-0 w-full">-->
-      <ChatInput :operates="['image', 'share-group']" @focus="scrollToBottom" @send="handleSendMessage"></ChatInput>
-      <!--      </div>-->
+
+      <ChatInput
+        :operates="['image', 'share-group']"
+        @focus="scrollToBottom"
+        @send="handleSendMessage"
+      ></ChatInput>
     </template>
     <template v-else>
       <div class="flex-1 grid place-items-center text-black-9">
@@ -41,7 +56,7 @@
         <div v-else class="grid place-items-center">
           <div v-if="groupId">创建成功</div>
           <div v-else class="grid place-items-center">
-            <div  class="mb-10">创建会话失败</div>
+            <div class="mb-10">创建会话失败</div>
             <van-button size="small" @click="initGroupId">点击重试</van-button>
           </div>
         </div>
@@ -51,47 +66,49 @@
 </template>
 <script setup>
 import ChatMessage from './chat-message'
-import ChatInput from "./chat-input";
-import {findHyperlinks} from "~/pages/chat/chat-message/link-message/handle";
-import {XYWebSocket} from "~/utils/XYWebSocket";
-import {isValidJson} from "~/utils";
+import ChatInput from './chat-input'
+import { findHyperlinks } from '~/pages/chat/chat-message/link-message/handle'
+import { XYWebSocket } from '~/utils/XYWebSocket'
+import { isValidJson } from '~/utils'
 
 const route = useRoute()
 const router = useRouter()
 
-const chatsStore = useChatsStore();
-const userInfoStore = useUserInfoStore();
+const chatsStore = useChatsStore()
+const userInfoStore = useUserInfoStore()
 
-const {userInfo} = storeToRefs(userInfoStore);
-// 单聊的标题
-const title = computed(() => route.query.groupRemark)
+const { userInfo } = storeToRefs(userInfoStore)
+// 群聊的标题
+const groupInfo = ref({})
+// 每个成员的信息
+const groupMemberInfo = ref({})
 
 // 聊天列表
-const chatListRef = ref(null);
+const chatListRef = ref(null)
 
-const pageLoading = ref(true);
-const getUserId = ref(null); // 消息接收者的用户id
+const pageLoading = ref(true)
+const getUserId = ref(null) // 消息接收者的用户id
 const sendUserId = computed(() => userInfo?.value.pass) // 消息发送者:当前登录用户的加密id
-const groupId = ref(route.query?.groupId); // 会话ID
+const groupId = ref(route.query?.groupId) // 会话ID
 const showPage = computed(() => groupId.value)
 
 const initGroupId = async () => {
   try {
-/*    if (!groupId.value) return;
+    /*    if (!groupId.value) return;
     pageLoading.value = true;
     const res = await chatsStore.getCurrConversationId(getUserId.value)
     await handleResponse(res)
     groupId.value = res.data;*/
     await getChatList('init')
+    // await getAnnouncement()
   } catch (e) {
-
   } finally {
-    pageLoading.value = false;
+    pageLoading.value = false
   }
 }
 
 let pageNum = ref(0)
-const currConversationChatList = ref([]);
+const currConversationChatList = ref([])
 /**
  * 加载当前聊天信息
  * @param type init|more
@@ -99,25 +116,26 @@ const currConversationChatList = ref([]);
  */
 const getChatList = async (type = 'init') => {
   try {
-    const page = type === 'init' ? 1 : pageNum.value + 1;
+    const page = type === 'init' ? 1 : pageNum.value + 1
     const res = await chatsStore.getChatHistory({
       pageNum: page,
       pageSize: 100,
-      groupId: groupId.value,
+      groupId: groupId.value
     })
-    pageNum.value = page;
-    await handleResponse(res);
+    pageNum.value = page
+    await handleResponse(res)
     currConversationChatList.value = handleChatList(res.data?.data)
     console.log(currConversationChatList.value, 'currConversationChatList')
     if (type === 'init') await scrollToBottom()
   } catch (e) {
     console.error(e)
   } finally {
-
   }
 }
 const handleChatList = (list = []) => {
-  return (list ?? []).filter(o => isValidJson(o.messageContent)).map(o => JSON.parse(o.messageContent));
+  return (list ?? [])
+    .filter((o) => isValidJson(o.messageContent))
+    .map((o) => JSON.parse(o.messageContent))
 }
 
 // 发送文本消息
@@ -138,7 +156,7 @@ const sendTextMessage = async (text) => {
       }
     }
     const isLink = !!findHyperlinks(text)
-    if (isLink) msg.messageType = 4;
+    if (isLink) msg.messageType = 4
     currConversationChatList.value.push(msg)
     await scrollToBottom()
     const res = await chatsStore.sendSocketMessage(msg)
@@ -146,7 +164,6 @@ const sendTextMessage = async (text) => {
   } catch (e) {
     console.log(e, '2')
   } finally {
-
   }
 }
 
@@ -157,7 +174,7 @@ const sendImageMessage = async (file) => {
     formData.append('uploadFile', file)
     formData.append('asImage', true)
     formData.append('fieldName', 'messageContent')
-    const {data} = await request('/website/tourMessage/upload', {
+    const { data } = await request('/website/tourMessage/upload', {
       method: 'post',
       body: formData
     })
@@ -180,44 +197,37 @@ const sendImageMessage = async (file) => {
   } catch (e) {
     console.error(e, '??')
   } finally {
-
   }
 }
 
-const handleSendMessage = async ({type, messageContent}) => {
+const handleSendMessage = async ({ type, messageContent }) => {
   try {
     switch (type) {
       case 'text':
         await sendTextMessage(messageContent)
-        break;
+        break
       case 'image':
         await sendImageMessage(messageContent)
-        break;
+        break
 
       default:
-
-        break;
+        break
     }
-
   } catch (e) {
-
   } finally {
-
   }
 }
 
 const scrollToBottom = async () => {
   setTimeout(async () => {
-    await nextTick(); // 确保DOM已经更新
-    const listElement = chatListRef.value?.$el;
+    await nextTick() // 确保DOM已经更新
+    const listElement = chatListRef.value?.$el
     if (listElement) {
-      const scrollContainer = listElement;
-      scrollContainer.scrollTop = scrollContainer.scrollHeight;
+      const scrollContainer = listElement
+      scrollContainer.scrollTop = scrollContainer.scrollHeight
     }
   }, 200)
-};
-
-
+}
 
 // 加载更多
 const refreshing = ref(false)
@@ -225,19 +235,20 @@ const loadMore = async () => {
   try {
     refreshing.value = true
     await getChatList('more')
-  } catch (e) { } finally {
+  } catch (e) {
+  } finally {
     refreshing.value = false
   }
 }
 
 const onClickRight = () => {
-  groupId.value && navigateTo({
-    path: '/chat/set',
-    query: {groupId: groupId.value}
-  })
+  groupId.value &&
+    navigateTo({
+      path: '/chat/set',
+      query: { groupId: groupId.value }
+    })
 }
 
-
 // 本地生成一个唯一消息id
 function getLocalId() {
   const random = Math.floor(Math.random() * 10000)
@@ -246,9 +257,10 @@ function getLocalId() {
 
 onMounted(() => {
   initGroupId()
+  getAnnouncement()
   XYWebSocket.SocketEventsBus.on(XYWebSocket.SocketEvents.chatEvent, async (chat) => {
-    const isCurrGroupId = chat.groupId && chat.groupId === groupId.value;
-    const isOtherUserMessage = chat.sendUserId && chatsStore.isRealMessage(chat.sendUserId);
+    const isCurrGroupId = chat.groupId && chat.groupId === groupId.value
+    const isOtherUserMessage = chat.sendUserId && chatsStore.isRealMessage(chat.sendUserId)
     if (isCurrGroupId && isOtherUserMessage) {
       currConversationChatList.value.push(chat)
       await scrollToBottom()
@@ -256,6 +268,24 @@ onMounted(() => {
   })
 })
 
+// 查寻群公告
+async function getAnnouncement() {
+  let { data } = await request('/website/tourGroup/getGroupInfoAndMemberByGroupId', {
+    query: { groupId: groupId.value }
+  })
+
+  if (data) {
+    groupInfo.value = data
+    if (Array.isArray(data.memberList) && data.memberList?.lenght) {
+      data.memberList.map((el) => {
+        if (el.userId == userInfo.value.userId) {
+          groupMemberInfo.value = el
+        }
+      })
+    }
+  }
+}
+
 // 用户删除消息
 const delMessage = (messageId) => {
   showConfirmDialog({
@@ -263,19 +293,18 @@ const delMessage = (messageId) => {
     message: '是否删除这条消息?',
     confirmButtonColor: '#FF9300'
   })
-      .then(async () => {
-        const res = await request('/website/tourMessage/delMessage', {
-          method: 'post',
-          body: {
-            messageId: [messageId]
-          }
-        })
-
-        if (res && res?.success) {
+    .then(async () => {
+      const res = await request('/website/tourMessage/delMessage', {
+        method: 'post',
+        body: {
+          messageId: [messageId]
         }
       })
-      .catch(() => {
-      })
+
+      if (res && res?.success) {
+      }
+    })
+    .catch(() => {})
 }
 
 definePageMeta({

+ 2 - 2
src/pages/chat/group-square.vue

@@ -154,13 +154,13 @@ const handleJoinGroup = (item) => {
   }
   if (item.codeShowStatus == 1) {
     navigateTo({
-      path: '/chat/group',
+      path: '/chat/group-chat',
       query: { groupId: item.id },
       replace: true
     })
   }
   if (item.codeShowStatus == 2) {
-    navigateTo('/chat/group', {
+    navigateTo('/chat/group-chat', {
       query: { groupId: item.id },
       replace: true
     })

+ 4 - 4
src/pages/chat/qr-results.vue

@@ -74,7 +74,7 @@
         color="#FF9300"
         @click="
           navigateTo({
-            path: '/chat/group',
+            path: '/chat/group-chat',
             query: {
               groupId: itemData.value.id
             },
@@ -227,7 +227,7 @@ const changeHeadImage = (headerList) => {
 //     item.text = '立即聊天'
 
 //     item.fn = navigateTo({
-//       path: '/chat/group',
+//       path: '/chat/group-chat',
 //       query: {
 //         groupId: itemData.value.id
 //       },
@@ -258,7 +258,7 @@ const handleQrcode = async () => {
   if (itemData.value.bannedStatus) {
     if (showIsExist.value) {
       navigateTo({
-        path: '/chat/group',
+        path: '/chat/group-chat',
         query: {
           groupId: itemData.value.id
         },
@@ -314,7 +314,7 @@ const handleQrcode = async () => {
 
   //   if (data == 3) {
   //     navigateTo({
-  //       path: '/chat/group',
+  //       path: '/chat/group-chat',
   //       query: {
   //         groupId: itemData.value.id
   //       },

+ 3 - 3
src/pages/chat/set.vue

@@ -31,7 +31,7 @@
               />
             </div>
             <p class="w-full line-clamp-1 lin text-sm text-center text-black-6">
-              {{ item.groupNickname ? item.groupNickname : userInfo.showName }}
+              {{ item.groupNickname }}
             </p>
           </van-col>
           <van-col
@@ -306,7 +306,7 @@
             />
           </template>
         </van-cell>
-        <!-- <van-cell
+        <van-cell
           @click="
             navigateTo({
               path: '/chat/background',
@@ -319,7 +319,7 @@
           is-link
           center
           title="设置当前聊天背景"
-        ></van-cell> -->
+        ></van-cell>
       </van-cell-group>
 
       <van-cell-group style="margin-bottom: 12px" inset>

+ 1 - 1
src/pages/chat/single-add.vue

@@ -238,7 +238,7 @@ async function handleCreateGroup() {
     })
     if (data) {
       navigateTo({
-        path: '/chat/group',
+        path: '/chat/group-chat',
         query: data,
         replace: true
       })

+ 1 - 1
src/pages/profile/interaction-message/index.vue

@@ -72,7 +72,7 @@
               "
               :item-data="{
                 ...item,
-                messageContent: messageContentParse(item?.messageContent).messageContent
+                messageContent: messageContentParse(item?.messageContent)
               }"
               :user-info="userInfo"
               @on-add-reply="addReply(item, item.reviewId)"

+ 3 - 3
src/pages/profile/my-news/_index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="w-full">
-<!--    <audio
+    <!--    <audio
       class="fixed top-0 left-0"
       ref="audioRef"
       :src="audioTips"
@@ -187,7 +187,7 @@
               updateTime: item?.lastMessage ? createTimeSplit(item?.lastMessage?.updateTime) : ''
             }"
             @on-chat-page="
-              onChatPage('/chat/group', { userId: user.userId, groupId: item?.groupId })
+              onChatPage('/chat/group-chat', { userId: user.userId, groupId: item?.groupId })
             "
             @on-no-bother="noBother(item)"
             @on-is-top="onIsTop(item)"
@@ -241,7 +241,7 @@
           updateTime: item?.lastMessage ? createTimeSplit(item?.lastMessage?.updateTime) : ''
         }"
         @on-chat-page="
-          onChatPage('/chat/group', {
+          onChatPage('/chat/group-chat', {
             userId: userInfo.userId,
             groupId: item?.groupId
           })

+ 8 - 10
src/utils/detalTime.js

@@ -117,17 +117,15 @@ export function formatTimestamp(timestamp) {
   return `${year}年${padZero(month)}月${padZero(day)}日`
 }
 
+import { isValidJson } from './index'
+
 // 消息的内容转换
 export function messageContentParse(messageContent) {
-  try {
-    let content = {}
-    if (messageContent) {
-      content = JSON.parse(messageContent)
-      return content.messageContent
-    } else {
-      return ''
-    }
-  } catch (error) {
-    console.log(error)
+  let content = {}
+  if (isValidJson(messageContent)) {
+    content = JSON.parse(messageContent)
+    return content.messageContent
+  } else {
+    return ''
   }
 }