Browse Source

活动用户和未读的用户排在前面

jackson 11 tháng trước cách đây
mục cha
commit
1c91c58a72

+ 10 - 0
src/store/index.ts

@@ -26,6 +26,7 @@ export default createStore({
       userId: 0,
       userName: '',
       nickname: '',
+      email: '',
     },  //当前聊天用户的信息
     isShowChat: false,
     isShowUserInfo: false,
@@ -48,6 +49,7 @@ export default createStore({
       state.userInfo = {...state.userInfo, ...obj}
       setLocalStorage('userInfo', state.userInfo)
     },
+
     setChatUserInfo(state, data) {
       state.chatUserInfo = data
     },
@@ -72,6 +74,14 @@ export default createStore({
           item.noReadNum++;
         }
       })
+      // 把未读的用户放在前面
+      const userList: Obj[] = state.userList.filter(item => item.noReadNum > 0)
+      state.userList = Array.from(new Set([...userList, ...state.userList]))
+    },
+    userListSort(state, obj: Obj) {
+      const i = state.userList.findIndex(item => item === obj)
+      state.userList.splice(i, 1)
+      state.userList.unshift(obj)
     },
   },
   actions: {},

+ 1 - 1
src/views/home/left/components/UserSearchList.vue

@@ -310,7 +310,7 @@ export default defineComponent({
       min-width: 20px;
       padding: 0 5px;
       color: #fff;
-      background: #999;
+      background: var(--van-button-primary-background-color);
       border-radius: 10px;
       text-align: center;
     }

+ 24 - 12
src/views/home/right/components/Chat.vue

@@ -282,6 +282,7 @@ export default defineComponent({
       nextTick(() => {
         scrollToBottom()
       })
+      store.commit('userListSort', store.state.chatUserInfo)
       if (store.state.chatUserInfo.isGroup === 1) {
         await sendMessageToUser(data)
       } else {
@@ -301,21 +302,32 @@ export default defineComponent({
       let chatUserInfo = store.state.chatUserInfo
       let userInfo = store.state.userInfo
       if (action.value === 'deleteFriend') {
-        await deleteFriend({id: chatUserInfo.friendId})
-        let i = store.state.userList.indexOf(chatUserInfo)
-        store.state.userList.splice(i, 1)
-        store.commit('setIsShowChat', false)
-        store.commit('setIsShowRight', false)
+        Dialog.confirm({
+          title: '温馨提示',
+          message: `确定删除${chatUserInfo.username}吗?`
+        }).then(async () => {
+          await deleteFriend({id: chatUserInfo.friendId})
+          let i = store.state.userList.indexOf(chatUserInfo)
+          store.state.userList.splice(i, 1)
+          store.commit('setIsShowChat', false)
+          store.commit('setIsShowRight', false)
+          Toast.success('删除成功')
+        })
       }
       if (action.value === 'exitGroup') { //如果自己是群主的话,那就解散群
-        await deleteExitGroup({
-          groupId: chatUserInfo.friendId,
-          username: userInfo.username
+        Dialog.confirm({
+          title: '温馨提示',
+          message: `确定离开${store.state.chatUserInfo.friendName}群吗?`
+        }).then(async () => {
+          await deleteExitGroup({
+            groupId: chatUserInfo.friendId,
+            username: userInfo.username
+          })
+          let i = store.state.userList.indexOf(chatUserInfo)
+          store.state.userList.splice(i, 1)
+          store.commit('setIsShowChat', false)
+          store.commit('setIsShowRight', false)
         })
-        let i = store.state.userList.indexOf(chatUserInfo)
-        store.state.userList.splice(i, 1)
-        store.commit('setIsShowChat', false)
-        store.commit('setIsShowRight', false)
       }
       if (action.value === 'createLink') {
         let {data} = await creatZoom({zoomName: store.state.userInfo.username})

+ 18 - 16
src/views/home/right/components/GroupInfo.vue

@@ -23,10 +23,8 @@
           <div class="common-pic">{{ store.state.chatUserInfo.username.charAt(0) }}</div>
           <div class="username">
             {{ item.username }}
-            <div class="remove"
-                 v-if="store.state.userInfo.username===admin&&item.IsAdmin===0" @click="removeUser(item,index)">
-              删除
-            </div>
+            <div class="remove" v-if="item.IsAdmin===1">群主</div>
+            <a class="remove" v-else-if="IsGroupLeader" @click="removeUser(item,index)">删除</a>
           </div>
         </li>
       </ul>
@@ -46,16 +44,16 @@
 
 <script lang="ts">
 import {defineComponent, onMounted, reactive, toRefs} from "vue";
-import {addGroupMember, groupMembers, deleteExitGroup} from "../../../../api"
+import {addGroupMember, groupMembers, deleteExitGroup, deleteFriend} from "../../../../api"
 import {useStore} from "vuex";
-import {Toast} from "vant"
+import {Dialog, Toast} from "vant"
 import {StrNumObj} from "../../../../interface";
 
 interface State {
   show: boolean,
   username: string,
   memberList: StrNumObj[],
-  admin: string,
+  IsGroupLeader: boolean,
 }
 
 export default defineComponent({
@@ -66,14 +64,14 @@ export default defineComponent({
       show: false,
       username: '',
       memberList: [],
-      admin: ''
+      IsGroupLeader: false
     })
 
     const store = useStore()
     const getGroupMembers = async () => {
       let {data} = await groupMembers({groupId: store.state.chatUserInfo.friendId})
       state.memberList = data
-      state.admin = data.find((item:StrNumObj) => item.IsAdmin === 1).username
+      state.IsGroupLeader = store.state.userInfo.username === data.find((item: StrNumObj) => item.IsAdmin === 1).username
     }
 
     const onClickLeft = () => {
@@ -95,14 +93,18 @@ export default defineComponent({
       Toast.success('添加成功')
     }
 
-    const removeUser = async (item: StrNumObj, index: number) => {
-      Toast.loading('删除中...')
-      await deleteExitGroup({
-        groupId: store.state.chatUserInfo.friendId,
-        username: item.username
+    const removeUser = (item: StrNumObj, index: number) => {
+      Dialog.confirm({
+        title: '温馨提示',
+        message: `确定删除${item.username}吗?`
+      }).then(async () => {
+        await deleteExitGroup({
+          groupId: store.state.chatUserInfo.friendId,
+          username: item.username
+        })
+        state.memberList.splice(index, 1)
+        Toast.success('删除成功')
       })
-      state.memberList.splice(index, 1)
-      Toast.success('删除成功')
     }
 
     onMounted(() => {