ソースを参照

fix: 1.修改bug

suwenjiang 1 ヶ月 前
コミット
485529c5cd

+ 7 - 11
src/pages/chat/components/chat-message/audio-message/index.vue

@@ -1,8 +1,8 @@
 <script setup>
 const props = defineProps({
-  messageContent: String|Number, // 消息内容
-  viewType: Number, // 0发送 1接收
-});
+  messageContent: String | Number, // 消息内容
+  viewType: Number // 0发送 1接收
+})
 
 let videoUrl = ref('')
 let loading = ref(false)
@@ -11,10 +11,10 @@ const initMessage = () => {
   switch (props.viewType) {
     case 0: // 发送 上传
       uploadMessage()
-      break;
+      break
     case 1: // 接收
       videoUrl.value = props.messageContent
-      break;
+      break
   }
 }
 
@@ -31,9 +31,8 @@ const uploadMessage = async () => {
     })
     await handleResponse(res)
     // videoUrl.value = res.data?.fileUrl ?? '';
-    videoUrl.value = 'https://fastly.jsdelivr.net/npm/@vant/assets/cat.jpeg';
+    videoUrl.value = 'https://fastly.jsdelivr.net/npm/@vant/assets/cat.jpeg'
   } catch (e) {
-
   } finally {
     loading.value = false
   }
@@ -42,7 +41,6 @@ const uploadMessage = async () => {
 onMounted(() => {
   initMessage()
 })
-
 </script>
 
 <template>
@@ -57,6 +55,4 @@ onMounted(() => {
   </div>
 </template>
 
-<style scoped lang="scss">
-
-</style>
+<style scoped lang="scss"></style>

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

@@ -78,6 +78,7 @@
 </template>
 <script setup>
 const route = useRoute()
+const router = useRouter()
 definePageMeta({
   layout: false
 })
@@ -170,18 +171,17 @@ async function handlePass(isPass) {
     })
 
     if (data) {
-      navigateTo('/chat/group-chat', {
-        replace: true
-      })
+      router.back()
     }
   } catch (error) {}
 }
 // 取消 审核
 function handleCancel() {
   if (checked.value.length == 0) {
-    navigateTo('/chat/group-chat', {
-      replace: true
-    })
+    router.back()
+    // navigateTo('/chat/set', {
+    //   replace: true
+    // })
   } else {
     handlePass(3)
   }

+ 22 - 17
src/pages/chat/group-add.vue

@@ -130,6 +130,7 @@
 </template>
 <script setup>
 const route = useRoute()
+const router = useRouter()
 
 definePageMeta({
   layout: false
@@ -176,7 +177,7 @@ const toggle = (item) => {
 }
 // 搜索
 const search = () => {
-  finished.value = true
+  finished.value = false
   if (showName.value) {
     addDataList.value = filterDataList.value.filter((item) =>
       item.showName.includes(showName.value)
@@ -199,7 +200,7 @@ const getList = async () => {
   try {
     let url = `/website/tourMember/memberLit`
 
-    loading.value = true
+    // loading.value = true
     let { data } = await request(url, {
       query: {
         groupId: route.query.groupId
@@ -217,13 +218,15 @@ const getList = async () => {
 
     loading.value = false
     refreshing.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
+    // }
+    finished.value = false
   } catch (err) {
   } finally {
+    finished.value = false
     refreshing.value = false
     loading.value = false
   }
@@ -232,10 +235,10 @@ const getList = async () => {
 // 创建多人聊天
 async function handleCreateGroup() {
   try {
-    showLoadingToast({
-      message: '准备开始群聊...',
-      duration: 100000
-    })
+    // showLoadingToast({
+    //   message: '准备开始群聊...',
+    //   duration: 100000
+    // })
     let { data } = await request('/website/tourMember/invite', {
       method: 'post',
       body: {
@@ -244,15 +247,17 @@ async function handleCreateGroup() {
       }
     })
     if (data) {
-      navigateTo({
-        path: '/chat/group-chat',
-        query: data,
-        replace: true
-      })
+      getList()
+      router.back()
+      // navigateTo({
+      //   path: '/chat/group-chat',
+      //   query: data,
+      //   replace: true
+      // })
     }
   } catch (error) {
   } finally {
-    closeToast()
+    // closeToast()
   }
 }
 </script>

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

@@ -225,6 +225,10 @@ const sendImageMessage = async (file) => {
     formData.append('uploadFile', file)
     formData.append('asImage', true)
     formData.append('fieldName', 'messageContent')
+    showLoadingToast({
+      message: '图片上传中...',
+      duration: 1000000
+    })
     const { data } = await request('/website/tourMessage/upload', {
       method: 'post',
       body: formData
@@ -245,6 +249,8 @@ const sendImageMessage = async (file) => {
         showName: userInfo?.value.showName
       }
     }
+
+    closeToast()
     currConversationChatList.value.push(msg)
     await scrollToBottom()
     await chatsStore.sendSocketMessage(msg)
@@ -298,7 +304,7 @@ const loadMore = async () => {
       if (totalCount.value == currConversationChatList.value.length) {
         // 已经加载了全部
         moreDisabled.value = true
-        } else {
+      } else {
         await getChatList('more')
       }
     } else {

+ 8 - 8
src/pages/chat/group-member.vue

@@ -51,7 +51,7 @@
                 <template #title>
                   <div class="flex items-center">
                     <h1 class="text-xl text-black-3">
-                      {{ item?.showName }}
+                      {{ item?.groupNickname }}
                     </h1>
                   </div>
                 </template>
@@ -109,6 +109,7 @@
 </template>
 <script setup>
 const route = useRoute()
+const router = useRouter()
 
 const refreshing = ref(false)
 const loading = ref(false)
@@ -167,11 +168,9 @@ const getList = async () => {
         groupId: route.query.groupId
       }
     })
-    console.log(data?.memberList, '555')
 
     if (Array.isArray(data?.memberList) && data?.memberList?.length) {
       addDataList.value = data?.memberList
-      console.log(addDataList.value, '55')
 
       filterDataList.value = data?.memberList
     } else {
@@ -209,11 +208,12 @@ const handleRemove = async () => {
   })
 
   if (res && res?.success) {
-    navigateTo({
-      path: '/chat/set',
-      query: route.query.groupId,
-      replace: true
-    })
+    router.back()
+    // navigateTo({
+    //   path: '/chat/set',
+    //   query: route.query.groupId,
+    //   replace: true
+    // })
   }
 }
 

+ 47 - 23
src/pages/chat/qr-code.vue

@@ -3,21 +3,12 @@
     <ChatHeaderBar title="群聊二维码" />
     <div class="h-100"></div>
 
-    <div class="w-60 h-60 mx-auto rounded-full border overflow-hidden">
-      <img
-        class="w-full h-full object-cover"
-        v-if="queueParmars?.groupAvatar"
-        :src="queueParmars.groupAvatar"
-        alt=""
-      />
-      <img class="w-full h-full object-cover" v-else src="~/assets/img/default_avatar.png" alt="" />
+    <div class="w-full flex justify-center mx-auto">
+      <MultiHeader :size="60" v-if="groupInfo?.memberList" :imgUrls="groupInfo?.memberList" />
     </div>
-    <!-- :list="queueParmars?.groupAvatar"  -->
-
-    <!-- <ChatGroupAvatar class="mx-auto"></ChatGroupAvatar> -->
 
     <h1 title="" class="w-300 mt-16 mb-18 text-center mx-auto text-xl text-black-3 font-semibold">
-      群聊:{{ queueParmars?.groupName }}
+      群聊:{{ groupInfo?.groupName }}
     </h1>
 
     <div class="relative mb-21 w-220 h-220 bg-white rounded-lg mx-auto box-border">
@@ -29,28 +20,25 @@
       />
     </div>
 
-    <p class="w-full text-center text-sm text-black-6">该二维码7天内有效,重新进入将更新</p>
+    <!-- <p class="w-full text-center text-sm text-black-6">该二维码7天内有效,重新进入将更新</p> -->
   </div>
 </template>
 
 <script setup>
+import defaultAvatar from '~/assets/img/default_avatar.png'
+
 const route = useRoute()
+const router = useRouter()
 definePageMeta({
   layout: false
 })
 
-onMounted(() => {
-  getQrCode()
-})
-
 // getGroupQR
 const QRURI = ref(`${import.meta.env.VITE_APP_BASE_URL}website/tourGroup/getGroupQR`)
 const qrCode = ref('')
-const queueParmars = reactive({
-  groupId: computed(() => route.query?.groupId ?? ''),
-  groupName: computed(() => route.query?.groupName ?? ''),
-  groupAvatar: computed(() => route.query?.groupAvatar ?? '')
-})
+
+const groupId = ref(null) // 会话id
+const groupInfo = ref({})
 
 useSeoMeta({
   title: '群聊'
@@ -79,7 +67,7 @@ function getQrCode() {
       message: '加载中...',
       duration: 100000
     })
-    qrCode.value = QRURI.value + `?groupId=${queueParmars.groupId}&systemOs=1`
+    qrCode.value = QRURI.value + `?groupId=${groupId.value}&systemOs=1`
 
     closeToast()
   } catch (error) {
@@ -87,5 +75,41 @@ function getQrCode() {
     closeToast()
   }
 }
+
+// 获取群信息
+const getMemberList = async () => {
+  const { data } = await request('/website/tourGroup/getGroupInfoAndMemberByGroupId', {
+    query: {
+      groupId: groupId.value
+    }
+  })
+
+  if (data) {
+    groupInfo.value = data
+    if (Array.isArray(data?.memberList) && data?.memberList?.length) {
+      groupInfo.value.memberList = changeHeadImage(data?.memberList)
+    } else {
+      groupInfo.value.memberList = [defaultAvatar]
+    }
+  }
+}
+
+const changeHeadImage = (headerList) => {
+  let headImageList = headerList
+    .slice(0, 9)
+    .map((el) => (el?.headImageUrl ? el?.headImageUrl : defaultAvatar))
+
+  return headImageList
+}
+
+onMounted(() => {
+  if (route.query?.groupId) {
+    groupId.value = route.query?.groupId
+    getQrCode()
+    getMemberList()
+  } else {
+    router.back()
+  }
+})
 </script>
 <style lang="scss" scoped></style>

+ 17 - 35
src/pages/chat/set-sub/index.vue

@@ -8,15 +8,16 @@
     />
 
     <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
-      <div class="w-full min-h-400 pt-20">
+      <div class="w-full min-h-400">
         <!--  :title="`没有找到&quot;${searchString}&quot;相关的结果`"   v-if="!list?.length && !loading"-->
+
         <ChatEmpty
           v-if="!list?.length && !loading"
           image="search"
           title="输入关键词,搜索聊天记录"
         />
 
-        <template v-if="searchString && list?.length > 0">
+        <template v-if="list?.length > 0">
           <van-cell v-for="(item, index) in list" :key="item?.id">
             <template #icon>
               <div class="w-40 h-40 rounded-full mr-12 overflow-hidden">
@@ -45,43 +46,22 @@
             </template>
             <template #label>
               <van-highlight
+                v-if="item.messageType == 0"
                 :keywords="searchString"
                 :source-string="messageContentParse(item?.messageContent)"
                 class="w-full text-xl text-black-3 line-clamp-2"
                 highlight-class="custom-class"
               />
+
+              <img
+                v-if="item.messageType == 1"
+                class="w-100"
+                :src="messageContentParse(item?.messageContent)"
+                alt=""
+              />
             </template>
           </van-cell>
         </template>
-
-        <!-- <template v-if="!searchString && list?.length">
-          <p class="text-bsae text-center">按以下条件查找</p>
-          <div class="w-full flex justify-center mt-15">
-            <van-button
-              icon="contact-o"
-              type="primary"
-              color="#F6F6F6"
-              round
-              @click=""
-              size="small"
-              style="color: #333333; margin-right: 10px"
-            >
-              群成员
-            </van-button>
-            <van-button
-              icon="notes-o"
-              type="primary"
-              color="#F6F6F6"
-              color-text="#333333"
-              size="small"
-              round
-              @click=""
-              style="color: #333333"
-            >
-              日期
-            </van-button>
-          </div>
-        </template> -->
       </div>
     </van-pull-refresh>
   </div>
@@ -91,7 +71,7 @@ import { beforeTime, messageContentParse } from '~/utils/detalTime'
 
 const route = useRoute()
 
-const objectType = computed(() => route.query.objectType)
+const objectType = computed(() => route.query?.objectType)
 
 const queryParams = reactive({
   pageNum: 1,
@@ -130,7 +110,9 @@ const getList = async () => {
   try {
     loading.value = true
 
-    let { data } = await request('/website/tourMessage/getMessageByGroupId', {
+    let {
+      data: { dataList, totalCount }
+    } = await request('/website/tourMessage/getMessageByGroupIdPage', {
       query: {
         groupId: route.query.groupId,
         ...queryParams,
@@ -138,8 +120,8 @@ const getList = async () => {
       }
     })
 
-    if (Array.isArray(data.data) && data?.data?.length) {
-      list.value = list.value.concat(...data.data)
+    if (Array.isArray(dataList) && dataList?.length) {
+      list.value = list.value.concat(...dataList)
     } else {
       list.value = []
     }

+ 5 - 14
src/pages/chat/set.vue

@@ -122,8 +122,6 @@
             navigateTo({
               path: '/chat/qr-code',
               query: {
-                groupName: setData.groupName,
-                groupAvatar: setData.groupAvatar,
                 groupId: setData?.id
               }
             })
@@ -554,7 +552,8 @@ const confirm = () => {
 
   // 修改群昵称
   if (isRemark.value == 2)
-    changeGroupName({
+    changeTourMember({
+      groupId: setData.id,
       groupNickname: groupName.value
     })
 }
@@ -699,23 +698,15 @@ async function changeGroupBelongTypeIdIsNeedConfirm(body) {
 // 修改备注名 和修改自己在群里的备注
 const changeTourMember = async (body) => {
   try {
-    const { data } = await request('/website/tourMember/updateTourMember', {
+    const res = await request('/website/tourMember/updateTourMember', {
       method: 'post',
       body
     })
-    console.log(data, '修改自己在群里的备注')
 
-    if (data) {
+    if (res && res?.success) {
       //修改成功
-      getGroupSetData()
-      // if ((Object.keys(body)[1] = 'remark')) {
-      //   userGroupData.value.groupRemark = groupName.value
-      // } else {
-      //   userGroupData.value[Object.keys(body)[1]] = groupName.value
-      // }
       showSuccessToast('操作成功')
-    } else {
-      // showSuccessToast('操作失败')
+      getGroupSetData()
     }
   } catch (error) {}
 }

+ 12 - 9
src/pages/chat/single-chat.vue

@@ -198,6 +198,10 @@ const sendImageMessage = async (file) => {
     formData.append('uploadFile', file)
     formData.append('asImage', true)
     formData.append('fieldName', 'messageContent')
+    showLoadingToast({
+      message: '图片上传中...',
+      duration: 1000000
+    })
     const { data } = await request('/website/tourMessage/upload', {
       method: 'post',
       body: formData
@@ -218,6 +222,7 @@ const sendImageMessage = async (file) => {
         showName: userInfo?.value.showName
       }
     }
+    closeToast()
     currConversationChatList.value.push(msg)
     await scrollToBottom()
     await chatsStore.sendSocketMessage(msg)
@@ -331,18 +336,16 @@ watchEffect(() => {})
 
 // 会话好友的信息
 async function getAnnouncement() {
-  let { data } = await request('/website/tourGroup/getGroupInfoAndMemberByGroupId', {
+  let { data } = await request('/website/tourMember/getOneWayMember', {
     query: { groupId: groupId.value }
   })
 
-  if (data) {
-    if (Array.isArray(data.memberList) && data?.memberList?.length) {
-      data.memberList.map((el) => {
-        if (el.userId == userInfo.value.userId) {
-          memberInfo.value = el
-        }
-      })
-    }
+  if (Array.isArray(data) && data?.length) {
+    data.map((el) => {
+      if (el.partnerId == getUserId.value) {
+        memberInfo.value = el
+      }
+    })
   }
 }
 // async function getAnnouncement() {

+ 1 - 2
src/pages/profile/my-news/index.vue

@@ -443,8 +443,7 @@ const goDetails = (type, item) => {
       navigateTo({
         path: '/chat/single-chat',
         query: {
-          getUserId: item?.toUserId,
-          groupRemark: item?.groupRemark
+          getUserId: item?.toUserId
         }
       })
       break