Эх сурвалжийг харах

Merge branch 'dev_suwenjiang' into follow

# Conflicts:
#	src/pages/profile/index.vue
qinyuyue 2 сар өмнө
parent
commit
506c57de1f

+ 2 - 2
.env.development

@@ -4,12 +4,12 @@ VITE_APP_ENV=development
 # VITE_APP_BASE_URL=http://101.126.146.250:8082/
 # 测试服
 # 黄文
-# VITE_APP_BASE_URL=http://192.168.1.44:8082/
+VITE_APP_BASE_URL=http://192.168.1.44:8082/
 # 畅哥
 # VITE_APP_BASE_URL=http://192.168.1.38:8082/
 
 # 张维
-VITE_APP_BASE_URL=http://192.168.1.73:8082/
+# VITE_APP_BASE_URL=http://192.168.1.73:8082/
 
 # VITE_APP_BASE_URL=http://192.168.1.204:8082
 VITE_APP_EMOJI_API=https://v.xiaoyaotravel.com/emoji/

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

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

+ 217 - 183
src/pages/chat/group-square.vue

@@ -1,130 +1,138 @@
 <template>
   <div class="w-full h-full">
     <ChatHeaderBar title="群聊广场" />
+
+    <ChatSearch
+      placeholder="搜索你想找的群聊"
+      v-model:searchString="groupName"
+      image="search"
+      @search="search"
+    ></ChatSearch>
+
     <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
-      <div
-        class="flex h-40 mt-62 mb-12 w-[92%] mx-auto items-center justify-between rounded-full border bg-[#fff]"
-      >
-        <input
-          type="text"
-          v-model="groupName"
-          class="ml-5 w-[80%] h-full pl-10 text-[13px]"
-          placeholder="搜索你想找的群聊"
-          @keydown.enter=""
-          style="outline: none; background: none"
-        />
-
-        <button
-          @click="search"
-          class="h-full border-l-[1px] flex justify-center items-center w-66 shrink-0 rounded-r-full"
+      <div class="h-[80vh]">
+        <van-tabs
+          class="w-full pl-0"
+          title-active-color="#FF9300"
+          title-inactive-color="#333333"
+          v-model:active="active"
+          @click-tab="onClickTab"
+          style="--van-tabs-bottom-bar-color: #ff9300; --van-tabs-bottom-bar-width: 16px"
+          swipeable
         >
-          <div style="color: white" class="w-16 h-16 shrink-0">
-            <img class="w-full h-full object-cover" src="~/assets/img/visa/search.svg" alt="" />
-          </div>
-        </button>
+          <van-tab
+            class="border-t-[1px]"
+            v-for="(el, i) in squareTabList"
+            :key="el.id"
+            :title="el?.typeName"
+          >
+            <div class="w-full h-full pl-16 box-border">
+              <Empty v-if="!groupSquareList?.length && !loading" title="暂无群聊" top="100" />
+
+              <!-- <van-list
+                v-else
+                v-model:loading="loading"
+                error-text="获取失败"
+                finished-text=""
+                :finished="finished"
+                :immediate-check="false"
+                @load="getLoadList"
+              > -->
+              <template v-if="queryParams.groupTypeId == el.id">
+                <van-cell
+                  v-for="(item, index) in groupSquareList"
+                  :key="item.id"
+                  style="--van-cell-horizontal-padding: 0; padding: 16px 16px 16px 0"
+                  center
+                  class="border-b-[1px] py-16 pl-0"
+                >
+                  <template #icon>
+                    <div style="" class="h-48 w-48 border rounded-full mr-12 overflow-hidden">
+                      <img class="w-full h-full object-cover" :src="item.groupAvatar" alt="" />
+                    </div>
+                  </template>
+                  <template #title>
+                    <div class="flex justify-start font-semibold text-xl text-black-3 mb-4">
+                      <h1 class="shrink-0 max-w-180 line-clamp-1">
+                        {{ item.groupName }}
+                      </h1>
+                      <span v-if="item?.memberCount" class="shrink-0">
+                        ({{ item.memberCount }})
+                      </span>
+                    </div>
+
+                    <van-tag
+                      style="--van-tag-padding: 4px; --van-tag-radius: 6px"
+                      color="#FEF4E6"
+                      text-color="#FF9300"
+                      type="primary"
+                    >
+                      {{ item?.belongTypeIdDictMap?.name }}
+                    </van-tag>
+                  </template>
+                  <template #label>
+                    <p class="w-212 line-clamp-1 text-black-6 text-base mt-5">
+                      {{ item?.description }}
+                    </p>
+                  </template>
+                  <template #value>
+                    <!-- codeShowStatus  v-if="item.state == 0" -->
+                    <van-button
+                      size="small"
+                      :color="chageState(item.codeShowStatus).color"
+                      round
+                      class="w-60 text-base font-semibold"
+                      plain
+                      style="--van-button-default-padding: 0"
+                      @click="handleJoinGroup(item)"
+                    >
+                      {{ chageState(item.codeShowStatus).text }}
+                    </van-button>
+                    <!-- <van-button
+                        v-if="item.codeShowStatus == 0"
+                        size="small"
+                        color="#fa8446"
+                        round
+                        class="w-60 text-base font-semibold"
+                        plain
+                        style="--van-button-default-padding: 0"
+                        @click="handleJoinGroup(item)"
+                      >
+                        加入
+                      </van-button>
+                      <van-button
+                        v-if="item.codeShowStatus == 1"
+                        size="small"
+                        color="#fa8446"
+                        round
+                        class="w-60 text-base font-semibold"
+                        plain
+                        style="--van-button-default-padding: 0"
+                        @click="handleJoinGroup(item)"
+                      >
+                        去聊天
+                      </van-button>
+                      <van-button
+                        v-if="item.codeShowStatus == 4"
+                        size="small"
+                        color="#999999"
+                        round
+                        class="w-60 text-base font-semibold"
+                        plain
+                        style="--van-button-default-padding: 0"
+                        @click="handleJoinGroup(item)"
+                      >
+                        已申请
+                      </van-button> -->
+                  </template>
+                </van-cell>
+              </template>
+              <!-- </van-list> -->
+            </div>
+          </van-tab>
+        </van-tabs>
       </div>
 
-      <van-tabs
-        class="w-full pl-0"
-        title-active-color="#FF9300"
-        title-inactive-color="#333333"
-        v-model:active="active"
-        @click-tab="onClickTab"
-        style="--van-tabs-bottom-bar-color: #ff9300; --van-tabs-bottom-bar-width: 16px"
-        swipeable
-      >
-        <van-tab
-          class="border-t-[1px]"
-          v-for="(item, index) in 10"
-          :key="index"
-          :title="`标签 ${item}`"
-        >
-          <div class="w-full h-[90%] pl-16 box-border">
-            <Empty v-if="!groupSquareList?.length && !loading" title="暂无群聊" top="100" />
-            <van-list
-              v-else-if="groupSquareList.length"
-              v-model:loading="loading"
-              error-text="获取失败"
-              finished-text=""
-              :finished="finished"
-              :immediate-check="false"
-              @load="getLoadList"
-            >
-              <van-cell
-                v-for="(item, index) in groupSquareList"
-                :key="item.id"
-                style="--van-cell-horizontal-padding: 0; padding: 16px 16px 16px 0"
-                center
-                class="border-b-[1px] py-16 pl-0"
-              >
-                <template #icon>
-                  <div class="h-48 w-48 border rounded-full mr-12">头像</div>
-                </template>
-                <template #title>
-                  <div class="flex justify-start font-semibold text-xl text-black-3 mb-4">
-                    <h1 class="shrink-0 max-w-180 line-clamp-1">
-                      {{ item.title }}
-                    </h1>
-                    <span class="shrink-0">({{ item.number }})</span>
-                  </div>
-
-                  <van-tag
-                    style="--van-tag-padding: 4px; --van-tag-radius: 6px"
-                    color="#FEF4E6"
-                    text-color="#FF9300"
-                    type="primary"
-                  >
-                    {{ item.tag }}
-                  </van-tag>
-                </template>
-                <template #label>
-                  <p class="w-212 line-clamp-1 text-black-6 text-base mt-5">
-                    {{ item.label }}
-                  </p>
-                </template>
-                <template #value>
-                  <van-button
-                    v-if="item.state == 0"
-                    size="small"
-                    color="#fa8446"
-                    round
-                    class="w-60 text-base font-semibold"
-                    plain
-                    style="--van-button-default-padding: 0"
-                    @click="handleJoinGroup(item)"
-                  >
-                    加入
-                  </van-button>
-                  <van-button
-                    v-if="item.state == 1"
-                    size="small"
-                    color="#fa8446"
-                    round
-                    class="w-60 text-base font-semibold"
-                    plain
-                    style="--van-button-default-padding: 0"
-                    @click="handleJoinGroup(item)"
-                  >
-                    去聊天
-                  </van-button>
-                  <van-button
-                    v-if="item.state == 2"
-                    size="small"
-                    color="#999999"
-                    round
-                    class="w-60 text-base font-semibold"
-                    plain
-                    style="--van-button-default-padding: 0"
-                    @click="handleJoinGroup(item)"
-                  >
-                    已申请
-                  </van-button>
-                </template>
-              </van-cell>
-            </van-list>
-          </div>
-        </van-tab>
-      </van-tabs>
       <!-- </div> -->
     </van-pull-refresh>
 
@@ -150,18 +158,6 @@ definePageMeta({
   layout: false
 })
 
-onMounted(() => {
-  getTabList()
-  getList()
-})
-
-const queryParams = reactive({
-  pageNum: 1,
-  pageSize: 10,
-  groupName: '',
-  groupTypeId: ''
-})
-
 const groupName = ref('')
 const refreshing = ref(false)
 const loading = ref(false)
@@ -172,27 +168,40 @@ const squareTabList = ref([])
 
 const active = ref(0)
 
+const queryParams = reactive({
+  pageNum: 1,
+  pageSize: 10,
+  groupName: '',
+  groupTypeId: ''
+})
+
 // 获取切换的数据
 const onClickTab = ({ title }) => {
-  showToast(title)
-  active.value = squareTabList.value.find((item = item.name == title)).id
+  // showToast(title)
+  // groupSquareList.value = []
+  queryParams.groupTypeId = squareTabList.value.find((item) => item.typeName == title).id
+  // active.value = squareTabList.value.findIndex((item) => item.typeName == title)
+
+  // getList()
 }
 
 // 加入群聊
 const handleJoinGroup = (item) => {
-  if (item.state == 0) {
-    navigateTo('/chat/group', {
-      query: { groupId: item.id },
-      replace: true
-    })
+  if (item.codeShowStatus == 0) {
+    // navigateTo({
+    //   path: '/chat/group',
+    //   query: { groupId: item.id },
+    //   replace: true
+    // })
   }
-  if (item.state == 1) {
-    navigateTo('/chat/group', {
+  if (item.codeShowStatus == 1) {
+    navigateTo({
+      path: '/chat/group',
       query: { groupId: item.id },
       replace: true
     })
   }
-  if (item.state == 2) {
+  if (item.codeShowStatus == 2) {
     navigateTo('/chat/group', {
       query: { groupId: item.id },
       replace: true
@@ -202,6 +211,7 @@ const handleJoinGroup = (item) => {
 
 // 获取群聊列表
 function getLoadList() {
+  squareTabList.value = []
   queryParams.pageNum++
   finished.value = true
   getList()
@@ -211,13 +221,17 @@ const getTabList = async () => {
   try {
     let url = `/website/tourGroup/getGroupTypeFirst`
 
-    const {
-      data: { dataList, totalCount }
-    } = await request(url)
+    const { data } = await request(url)
 
-    if (Array.isArray(dataList) && dataList?.length) {
-      active.value = dataList[0].id
-      squareTabList.value = dataList
+    if (Array.isArray(data) && data?.length) {
+      squareTabList.value = [
+        {
+          typeName: '推荐',
+          id: ''
+        },
+        ...data
+      ]
+      getList()
     } else {
       groupSquareList.value = []
     }
@@ -226,58 +240,62 @@ const getTabList = async () => {
   }
 }
 
+function chageState(state) {
+  let item = {}
+  if (state == 0) {
+    item.text = '加入'
+    item.color = '#FF9300'
+  }
+
+  if (state == 1) {
+    item.text = '去聊天'
+    item.color = '#D9D9D9'
+  }
+
+  // if (state == 2) {
+  //   item.text = '此群异常,暂不能加入'
+
+  //   item.fn = () => {}
+  // }
+  // if (state == 3) {
+  //   item.text = '此群已解散'
+  // }
+  if (state == 4) {
+    item.text = '已申请'
+    item.color = '#D9D9D9'
+  }
+
+  return item
+}
+
 // 获取数据
 const getList = async () => {
   try {
-    let url = `/website/tourism/visa/list/page`
+    let url = `/website/tourGroup/list`
     loading.value = true
     let {
       data: { dataList, totalCount }
     } = await request(url, {
-      query: {
+      method: 'post',
+      body: {
         ...queryParams
       }
     })
 
     if (Array.isArray(dataList) && dataList?.length) {
-      // groupSquareList.value = groupSquareList.value.concat(dataList)
-      groupSquareList.value = [
-        {
-          id: 'square-1',
-          title: '分享家装心得',
-          label: '分享装修经验',
-          tag: '兴趣交流',
-          state: 0,
-          number: 71
-        },
-        {
-          id: 'square-1',
-          title: '分享家装心得',
-          label: '分享装修经验',
-          tag: '兴趣交流',
-          state: 2,
-          number: 340
-        },
-        {
-          id: 'square-1',
-          title: '分享家装心得',
-          label: '分享装修经验',
-          tag: '兴趣交流',
-          state: 1,
-          number: 71
-        }
-      ]
+      groupSquareList.value = groupSquareList.value.concat(dataList)
+      // groupSquareList.value = dataList
     } else {
       groupSquareList.value = []
     }
 
     loading.value = false
     refreshing.value = false
-    if (groupSquareList.value.length >= totalCount) {
-      finished.value = true
-    } else {
-      finished.value = false
-    }
+    // if (groupSquareList.value.length >= totalCount) {
+    //   finished.value = true
+    // } else {
+    finished.value = false
+    // }
   } catch (err) {
   } finally {
     refreshing.value = false
@@ -285,10 +303,26 @@ const getList = async () => {
   }
 }
 
+// watchEffect(
+//   [() => queryParams.groupTypeId],
+//   () => {
+//     finished.value = false
+//     groupSquareList.value = []
+//     getList()
+//   },
+//   {
+//     immediate: true
+//   }
+// )
+
+onMounted(() => {
+  getTabList()
+})
+
 // 搜索
 const search = () => {
-  groupSquareList.value = []
   queryParams.pageNum = 1
+  groupSquareList.value = []
   queryParams.groupName = groupName.value
   getList()
 }

+ 119 - 9
src/pages/chat/qr-results.vue

@@ -39,8 +39,69 @@
     ></van-cell> -->
 
     <div class="fixed bottom-0 left-0 w-full box-border pb-40 pt-16 bg-white px-16">
-      <van-button round type="primary" block color="#FF9300" @click="handleQrcode">
-        <template v-if="itemData?.bannedStatus == 1">立即聊天</template>
+      <!-- <van-button
+        round
+        type="primary"
+        block
+        :color="colorList[itemData?.codeShowStatus]"
+        @click="chageState(itemData?.codeShowStatus)?.fn"
+      >
+        {{ chageState(itemData?.codeShowStatus)?.text }}
+      </van-button> -->
+      <van-button
+        v-if="itemData?.codeShowStatus == 1"
+        round
+        type="primary"
+        block
+        color="#FF9300"
+        @click="
+          navigateTo({
+            path: '/chat/group',
+            query: {
+              groupId: itemData.value.id
+            },
+            replace: true
+          })
+        "
+      >
+        立即聊天
+      </van-button>
+
+      <template v-if="itemData?.codeShowStatus == 0">
+        <van-button round type="primary" block color="#FF9300" @click="handleQrcode">
+          加入
+        </van-button>
+      </template>
+      <van-button
+        v-if="itemData?.codeShowStatus == 4"
+        round
+        type="primary"
+        block
+        color="#D9D9D9"
+        @click=""
+      >
+        已申请
+      </van-button>
+
+      <van-button
+        v-if="itemData?.codeShowStatus == 2"
+        round
+        type="primary"
+        block
+        color="#D9D9D9"
+        @click=""
+      >
+        此群异常,暂不能加入
+      </van-button>
+      <van-button
+        v-if="itemData?.codeShowStatus == 3"
+        round
+        type="primary"
+        block
+        color="#D9D9D9"
+        @click=""
+      >
+        此群已解散
       </van-button>
     </div>
   </div>
@@ -48,6 +109,9 @@
 <script setup>
 const route = useRoute()
 
+const userInfoStore = useUserInfoStore()
+const { userInfo } = storeToRefs(userInfoStore)
+
 const itemData = ref({})
 
 definePageMeta({
@@ -76,15 +140,58 @@ async function getGroupInfo() {
   } catch (error) {}
 }
 
+// const colorList = ['#FF9300', '#FF9300', '#D9D9D9', '#D9D9D9', '#D9D9D9']
+
+// // 切换状态
+// function chageState(state) {
+//   let item = {}
+//   if (state == 0) {
+//     item.text = '加入'
+
+//     item.fn = handleQrcode
+//   }
+
+//   if (state == 1) {
+//     item.text = '立即聊天'
+
+//     item.fn = navigateTo({
+//       path: '/chat/group',
+//       query: {
+//         groupId: itemData.value.id
+//       },
+//       replace: true
+//     })
+//   }
+//   if (state == 2) {
+//     item.text = '此群异常,暂不能加入'
+
+//     item.fn = () => {}
+//   }
+//   if (state == 3) {
+//     item.text = '此群已解散'
+
+//     item.fn = () => {}
+//   }
+//   if (state == 4) {
+//     item.text = '已申请'
+
+//     item.fn = () => {}
+//   }
+
+//   return item
+// }
+
+// 申请加入群聊
 const handleQrcode = async () => {
   try {
-    let { data } = await request('/website/tourGroup/isJoinGroup', {
+    let { data } = await request('/website/tourMember/invite', {
       query: {
-        groupId: itemData.value.id
+        groupId: itemData.value.id,
+        userId: userInfo.value.userId
       }
     })
 
-    if (data) {
+    if (data == 3) {
       navigateTo({
         path: '/chat/group',
         query: {
@@ -92,15 +199,18 @@ const handleQrcode = async () => {
         },
         replace: true
       })
-    } else {
+    }
+    if (data == 2) {
+      itemData.value.codeShowStatus = 4
+    }
+
+    if (data == 1) {
       showDialog({
         width: 260,
         title: '提示',
         message: '该群聊异常,无法加入',
         confirmButtonColor: '#FF9300'
-      }).then(() => {
-        // on close
-      })
+      }).then(() => {})
     }
   } catch (error) {}
 }

+ 148 - 44
src/pages/chat/set.vue

@@ -11,15 +11,28 @@
         <van-row>
           <van-col
             style="width: 54px"
-            v-for="(item, index) in 14"
+            v-for="(item, index) in setData?.memberList"
             :key="index"
             span="4"
             class="mb-12 mr-10"
           >
             <div class="w-40 h-40 rounded-full border mx-auto overflow-hidden mb-4">
-              <img class="w-full h-full object-cover" src="" alt="" />
+              <img
+                v-if="item.headImageUrl"
+                class="w-full h-full object-cover"
+                :src="item.headImageUrl"
+                alt=""
+              />
+              <img
+                v-else
+                class="w-full h-full object-cover"
+                src="~/assets/img/default_avatar.png"
+                alt=""
+              />
             </div>
-            <p class="w-full line-clamp-1 lin text-sm text-center text-black-6">陈真82222222</p>
+            <p class="w-full line-clamp-1 lin text-sm text-center text-black-6">
+              {{ item.groupNickname ? item.groupNickname : userInfo.showName }}
+            </p>
           </van-col>
           <van-col span="4" class="mb-12 mr-10" @click="navigateTo('/chat/group-add')">
             <div
@@ -29,7 +42,7 @@
             </div>
             <p class="w-full line-clamp-1 lin text-sm text-center text-black-6">添加成员</p>
           </van-col>
-          <van-col v-if="isRankAndFiler(setData?.groupRole)" span="4 mb-12 mr-10">
+          <van-col v-if="isRankAndFiler(userGroupData?.groupRemark)" 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"
             >
@@ -56,9 +69,10 @@
           size="large"
           @click="
             openDialog({
-              // title: setData?.groupNickname ? '修改群名称' : '添加群名称',
+              // title: setData?.groupName ? '修改群名称' : '添加群名称',
               title: '修改群名称',
-              value: setData?.groupNickname,
+              value: setData?.groupName,
+              isRemark: 0,
               placeholder: '未命名',
               subTitle: '最多不能超过12个字'
             })
@@ -69,7 +83,7 @@
         >
           <template #value>
             <p class="w-full line-clamp-2 text-xl text-black/[0.4] leading-5xl">
-              {{ setData?.groupNickname ? setData?.groupNickname : '未命名' }}
+              {{ setData?.groupName ? setData?.groupName : '未命名' }}
             </p>
           </template>
         </van-cell>
@@ -78,7 +92,7 @@
             navigateTo({
               path: '/chat/qr-code',
               query: {
-                groupNickname: setData.groupNickname,
+                groupName: setData.groupName,
                 groupAvatar: setData.groupAvatar,
                 groupId: setData?.groupId
               }
@@ -97,7 +111,7 @@
         </van-cell>
 
         <van-cell
-          :clickable="isRankAndFiler(setData?.groupRole)"
+          :clickable="isRankAndFiler(userGroupData?.groupRemark)"
           @click="handleAnnouncement"
           size="large"
           center
@@ -108,24 +122,36 @@
 
         <van-cell size="large" center>
           <template #title>
-            <p class="w-full line-clamp-1">
-              群介绍:{{ '我们是一个设计讨论群,欢家多黄金时代...' }}
-            </p>
+            <p class="w-full line-clamp-1">群介绍:{{ setData?.description }}</p>
           </template>
         </van-cell>
-        <van-cell size="large" is-link center title="群聊类型">
+        <van-cell size="large" center title="群聊类型">
           <template #value>
-            <p class="w-full line-clamp-1">{{ setData?.typeName }}</p>
+            <p class="w-full line-clamp-1">{{ setData?.belongTypeIdDictMap?.name }}</p>
           </template>
         </van-cell>
         <van-cell
           @click="
-            openDialog({
-              title: '群备注',
-              value: setData?.groupRemark,
-              placeholder: '备注',
-              subTitle: '群备注仅自己可见'
-            })
+            changeState(userGroupData?.groupRole)
+              ? openDialog({
+                  title: '群备注',
+                  value: userGroupData?.remark,
+                  isRemark: 1,
+                  placeholder: '备注',
+                  subTitle: '群备注仅自己可见'
+                })
+              : showDialog({
+                  title: '群名称',
+                  message: setData.groupName,
+                  confirmButtonColor: '#FF9300',
+                  showCancelButton: false
+                })
+                  .then(() => {
+                    // on close
+                  })
+                  .catch(() => {
+                    // on cancel
+                  })
           "
           size="large"
           is-link
@@ -134,13 +160,17 @@
         >
           <template #value>
             <p class="w-full line-clamp-1">
-              {{ setData?.groupRemark ? setData?.groupRemark : '未设置' }}
+              {{ userGroupData?.remark ? userGroupData?.remark : '未设置' }}
             </p>
           </template>
         </van-cell>
       </van-cell-group>
 
-      <van-cell-group v-if="isRankAndFiler(setData?.groupRole)" style="margin-bottom: 12px" inset>
+      <van-cell-group
+        v-if="isRankAndFiler(userGroupData?.groupRemark)"
+        style="margin-bottom: 12px"
+        inset
+      >
         <van-cell size="large" center title="个人主页展示">
           <template #label>
             <!-- class="text-base text-black/[0.4]" -->
@@ -183,8 +213,9 @@
           @click="
             openDialog({
               title: '我在群里的昵称',
-              value: setData?.myGroupNickname ? setData?.myGroupNickname : setData?.Nickname,
+              value: userGroupData?.groupNickname,
               placeholder: '昵称',
+              isRemark: 2,
               subTitle: '昵称修改之后,只会在此群内显示,群内成员都可以看见'
             })
           "
@@ -195,7 +226,7 @@
         >
           <template #value>
             <p class="w-full line-clamp-1">
-              {{ setData?.myGroupNickname ? setData?.myGroupNickname : setData?.Nickname }}
+              {{ userGroupData?.groupNickname }}
             </p>
           </template>
         </van-cell>
@@ -220,7 +251,16 @@
       <van-cell-group style="margin-bottom: 12px" inset>
         <van-cell size="large" is-link center title="消息免打扰">
           <template #right-icon>
-            <van-switch v-model="isNotDisturb" active-color="#FF9300" inactive-color="#dcdee0" />
+            <van-switch
+              v-model="isNotDisturb"
+              @change="
+                (val) => {
+                  isNotDisturb = val
+                }
+              "
+              active-color="#FF9300"
+              inactive-color="#dcdee0"
+            />
           </template>
         </van-cell>
         <van-cell size="large" is-link center title="置顶聊天">
@@ -228,6 +268,7 @@
             <van-switch v-model="isTop" active-color="#FF9300" inactive-color="#dcdee0" />
           </template>
         </van-cell>
+        <van-cell size="large" is-link center title="设置当前聊天背景"></van-cell>
       </van-cell-group>
 
       <van-cell-group style="margin-bottom: 12px" inset>
@@ -274,7 +315,7 @@
           style="height: 40px; background: #f5f5f5; border-radius: 8px; margin-bottom: 30px"
           clearable
           :placeholder="dialogPlaceholder"
-          v-model="groupNickname"
+          v-model="groupName"
           maxlength="12"
         />
       </div>
@@ -284,13 +325,10 @@
 <script setup>
 const route = useRoute()
 const router = useRouter()
-console.log(route.query, '12312')
 
 const userInfoStore = useUserInfoStore()
 const { userInfo } = storeToRefs(userInfoStore)
 
-// console.log(userInfo.value, 'userInfo')
-
 definePageMeta({
   layout: false
 })
@@ -300,17 +338,25 @@ useSeoMeta({
 })
 
 onMounted(() => {
+  // userInfoStore.getUserInfo()
   getGroupSetData()
 })
 
 let setData = reactive({
   groupId: computed(() => route.query.groupId ?? ''),
-  userId: computed(() => route.query.userId ?? ''),
-  groupRole: 1,
-  groupAnnouncement:
-    '群公告模版 1.本群提倡友好理性交流,鼓励群友多发言,多互动 2.禁止无意义刷屏、发送广告信息以及谩骂等不良消息 3.为了保证群活跃不经常发言的群友,可能会被定时清理出群'
+  userId: computed(() => route.query.userId ?? '')
+  // groupRole: 1,
+  // groupAnnouncement:
+  //   '群公告模版 1.本群提倡友好理性交流,鼓励群友多发言,多互动 2.禁止无意义刷屏、发送广告信息以及谩骂等不良消息 3.为了保证群活跃不经常发言的群友,可能会被定时清理出群'
 })
-const groupNickname = ref('')
+
+watch([() => route.query.groupId, () => route.query.userId], () => {}, {
+  immediate: true
+})
+
+const userGroupData = ref(null)
+
+const groupName = ref('')
 
 // 是否显示到个人主页
 const showHomePage = ref(false)
@@ -319,6 +365,7 @@ const isTop = ref(false)
 
 // 弹出窗
 const showDialog = ref(false)
+const isRemark = ref(0) //0 群名称 1备注 2 我在群里的昵称
 const dialogTitle = ref('')
 const dialogPlaceholder = ref('')
 const dialogSubTitle = ref('')
@@ -327,14 +374,56 @@ const dialogSubTitle = ref('')
 const openDialog = (item) => {
   showDialog.value = true
   dialogTitle.value = item?.title
-  groupNickname.value = item?.value
+  isRemark.value = item.isRemark
+  groupName.value = item?.value
   dialogPlaceholder.value = item?.placeholder
   dialogSubTitle.value = item?.subTitle
 }
 // 弹窗确认的事件
 const confirm = () => {
-  setData.groupNickname = groupNickname.value
-  showDialog.value = false
+  if (userGroupData.value?.groupRole == 1 && isRemark.value == 0) {
+    changeGroupName()
+  } else {
+  }
+
+  if (isRemark.value == 1) changeTourMember({ groupId: setData.id, remark: groupName.value })
+
+  if (isRemark.value == 2)
+    changeGroupName({
+      groupId: setData.id,
+      groupNickname: groupName.value
+    })
+
+  // showDialog.value = false
+}
+
+// 修改群名称
+const changeGroupName = async () => {
+  try {
+    const { data } = await request('/website/tourGroup/updateGroup', {
+      method: 'post',
+      body: {
+        groupId: setData.id,
+        groupName: groupName.value
+      }
+    })
+
+    if (data) {
+      showSuccessToast('修改成功')
+    } else {
+      showFailToast('修改失败')
+    }
+  } catch (error) {}
+}
+
+// 修改备注名 和修改自己在群里的备注
+const changeTourMember = async (body) => {
+  try {
+    const { data } = await request('/website/tourMember/updateTourMember', {
+      method: 'post',
+      body
+    })
+  } catch (error) {}
 }
 
 const cancel = () => {
@@ -344,9 +433,14 @@ const cancel = () => {
 // 修改群名称
 const handleUpdGroupNickname = () => {}
 
+// 改变状态的公用方法
+const changeState = (state) => {
+  if (state == 1) return true
+  if (state == 0) return false
+}
+
 // 获取群设置的配置信息
 const getGroupSetData = async () => {
-  // /website/tourGroup/getGroupInfoAndMemberByGroupId
   const { data } = await request('/website/tourGroup/getGroupInfoAndMemberByGroupId', {
     query: {
       groupId: setData.groupId
@@ -354,6 +448,16 @@ const getGroupSetData = async () => {
   })
   if (typeof data == 'object') {
     setData = data
+    console.log(data.memberList, '555')
+    console.log(userInfo.value.userId, '555')
+
+    userGroupData.value = data.memberList.find((item) => item.userId == userInfo.value.userId)
+    console.log(userGroupData.value, '4444')
+
+    userGroupData.value.isNotDisturb == 0
+      ? (isNotDisturb.value = false)
+      : (isNotDisturb.value = true)
+    userGroupData.value.isTop == 0 ? (isTop.value = false) : (isTop.value = true)
   }
 }
 
@@ -392,12 +496,12 @@ const clearChatHistory = () => {
 
 // 点击公告
 const handleAnnouncement = () => {
-  console.log(!isRankAndFiler(setData?.groupRole))
+  console.log(!isRankAndFiler(userGroupData?.groupRemark))
 
-  if (!isRankAndFiler(setData?.groupRole) && !setData?.groupAnnouncement) {
+  if (!isRankAndFiler(userGroupData?.groupRemark) && !setData?.groupAnnouncement) {
     showConfirmDialog({
       width: 260,
-      message: `只有群主${setData?.groupNickname ? setData?.groupNickname : ''}或群管理员才能修改公告`,
+      message: `只有群主${setData?.groupName ? setData?.groupName : ''}或群管理员才能修改公告`,
       showCancelButton: false,
       confirmButtonColor: '#FF9300',
       confirmButtonText: '我知道了'
@@ -408,9 +512,9 @@ const handleAnnouncement = () => {
   navigateTo({
     path: '/chat/announcement',
     query: {
-      groupId: setData?.groupId ? setData?.groupId : 0,
-      userId: '1',
-      groupRole: setData?.groupRole
+      groupId: setData?.groupId,
+      userId: userInfo.value.userId,
+      groupRole: userGroupData?.groupRemark
     }
   })
 }

+ 4 - 7
src/pages/profile/my-news/index.vue

@@ -131,9 +131,7 @@
         <template v-for="(item, index) in pinnedList" :key="index">
           <ProfileNewsGroupChat
             :item-data="{ title: item }"
-            @on-chat-page="
-              onChatPage('/chat/group', { userId: userInfo.updateUserId, groupId: '2' })
-            "
+            @on-chat-page="onChatPage('/chat/group', { userId: userInfo.userId, groupId: '2' })"
             @on-no-bother="noBother(item)"
             @on-conv-delete="convDelete()"
           />
@@ -156,12 +154,12 @@
       </div>
 
       <ProfileNewsGroupChat
-        @on-chat-page="onChatPage('/chat/group', { userId: userInfo.updateUserId, groupId: 111 })"
+        @on-chat-page="onChatPage('/chat/group', { userId: userInfo.userId, groupId: 111 })"
         @on-no-bother="noBother()"
         @on-conv-delete="convDelete()"
       />
       <ProfileNewsSingleChat
-        @on-chat-page="onChatPage('/chat/single', { userId: userInfo.updateUserId, singleId: '2' })"
+        @on-chat-page="onChatPage('/chat/single', { userId: userInfo.userId, singleId: '2' })"
         @on-no-bother="noBother()"
         @on-conv-delete="convDelete()"
       />
@@ -199,7 +197,7 @@ const isConnected = computed(() => websocketStore.isConnected)
 
 // 连接 WebSocket
 const connectSocket = () => {
-  websocketStore.connect(`?userId=${userInfo.value.updateUserId}`)
+  websocketStore.connect(`?userId=${userInfo.value.userId}`)
 }
 
 // 发送测试消息
@@ -279,7 +277,6 @@ const onChatPage = (path, query) => {
   navigateTo({
     path,
     query
-    // params: query
   })
 }