123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917 |
- <template>
- <div>
- <i class="icon icon-chat-setting" v-if="platform == 'daya'" @click="toggleShow"></i>
- <div class="manage" :class="[isH5 ? 'manage-h5' : '']" v-if="show" ref="dialog">
- <header class="manage-header">
- <i class="icon icon-back" v-if="isH5 && !currentTab" @click="toggleShow"></i>
- <aside class="manage-header-left">
- <i class="icon icon-back" v-if="currentTab" @click="setTab('')"></i>
- <main>
- <h1>{{ $t(`TUIChat.manage.${TabName}`) }}</h1>
- </main>
- </aside>
- <span>
- <i v-if="!isH5" class="icon icon-close" @click="toggleShow"></i>
- </span>
- </header>
- <main class="main" style="background-color: #f4f5f9; height: 100%" v-if="!currentTab">
- <ManageName class="space-top" :isAuth="isAuth" :isH5="isH5" :data="conversation.groupProfile" @update="updateProfile" style="background-color: #fff" />
- <div class="userInfo space-top" style="background-color: #fff">
- <header class="userInfo-header" @click="setTab('member')">
- <label>{{ $t(`TUIChat.manage.群成员`) }}</label>
- <p>
- <span> {{ groupDetail.memberNum || 0 }}{{ $t(`TUIChat.manage.人`) }} </span>
- <i class="icon icon-right"></i>
- </p>
- </header>
- <ol>
-
- <dl v-for="(item, index) in userInfo?.list?.slice(0, showUserNum)" :key="index">
- <dt>
- <img class="avatar" :src="item?.avatar || 'https://oss.dayaedu.com/news-info/07/1690787574969.png'" onerror="this.src='https://oss.dayaedu.com/news-info/07/1690787574969.png'" />
- </dt>
- <dd>{{ item?.nickname || item?.userID }}</dd>
- </dl>
-
- <dl v-if="currentUserDetail.groupRoleType === 'Owner'">
- <dt class="avatar" @click="toggleMask('add')">+</dt>
- </dl>
-
- </ol>
- </div>
- <ul class="content space-top" @click="editLableName = ''" style="background-color: #fff">
- <li @click.stop="setTab('notification')">
- <aside>
- <label>{{ $t(`TUIChat.manage.群公告`) }}</label>
- <article>{{ conversation.groupProfile.notification }}</article>
- </aside>
- <i class="icon icon-right end"></i>
- </li>
-
- {{ $t(`TUIChat.manage.群管理`) }}
- {{ $t(`TUIChat.manage.群ID`) }}
- {{ conversation.groupProfile.groupID }}
- {{ $t(`TUIChat.manage.群头像`) }}
- {{ $t(`TUIChat.manage.群类型`) }}
- {{
- $t(`TUIChat.manage.${typeName[conversation.groupProfile.type]}`)
- }}
- {{ $t(`TUIChat.manage.加群方式`) }}
- {{
- $t(
- `TUIChat.manage.${
- typeName[conversation.groupProfile.joinOption]
- }`
- )
- }}
- </ul>
- <div v-if="currentUserDetail.groupRoleType === 'Owner'" class="admin-content space-top" style="background-color: #fff; padding-top: 12px">
- <aside>
- <label>学生禁言</label>
- </aside>
- <Slider :open="groupDetail.configJson.mute" @change="setAllMuteTime" />
- </div>
- <ul class="footer space-top">
- <li v-if="currentUserDetail.groupRoleType === 'Owner' && userInfo?.list.length > 1" @click.stop="toggleMask('changeOwner')">移交群主</li>
- <li v-if="currentUserDetail.groupRoleType === 'Owner'" @click.stop="dismiss(conversation.groupProfile)">解散群聊</li>
- <li v-else @click.stop="quit(conversation.groupProfile)">退出群组</li>
- </ul>
- </main>
- <ManageMember v-else-if="currentTab === 'member'" :self="conversation.groupProfile.selfInfo" :list="userInfo.list" :total="~~conversation.groupProfile.memberCount" @more="getMember('more')" @del="submit" @handleMemberProfileShow="handleMemberProfileShow" />
-
- <MemeberProfile v-else-if="currentTab === 'profile'" :userInfo="currentMember" />
- <ManageNotification v-else-if="currentTab === 'notification'" :isAuth="isAuth" :data="conversation.groupProfile" @update="updateProfile" />
- <main class="admin" v-else-if="currentTab === 'admin'">
- <div class="admin-list" v-if="isAdmin">
- <label>{{ $t(`TUIChat.manage.群管理员`) }}</label>
- <ol>
- <dl v-for="(item, index) in member.admin" :key="index">
- <dt>
- <img class="avatar" :src="item?.avatar || 'https://oss.dayaedu.com/news-info/07/1690787574969.png'" onerror="this.src='https://oss.dayaedu.com/news-info/07/1690787574969.png'" />
- </dt>
- <dd>{{ item?.nick || item?.userID }}</dd>
- </dl>
- <dl>
- <dt class="avatar" @click="toggleMask('addAdmin')">+</dt>
- </dl>
- <dl>
- <dt class="avatar" v-if="member.admin.length > 0" @click="toggleMask('removeAdmin')">-</dt>
- </dl>
- </ol>
- </div>
- <div class="admin-content space-top" v-if="isSetMuteTime">
- <aside>
- <label>{{ $t(`TUIChat.manage.学生禁言`) }}</label>
- <p>
- {{ $t(`TUIChat.manage.学生禁言开启后,只允许群主和管理员发言。`) }}
- </p>
- </aside>
- <Slider :open="conversation.groupProfile.muteAllMembers" @change="setAllMuteTime" />
- </div>
- <div class="admin-list last" v-if="isSetMuteTime">
- <label>{{ $t(`TUIChat.manage.单独禁言人员`) }}</label>
- <ol>
- <dl v-for="(item, index) in member.muteMember" :key="index">
- <dt>
- <img class="avatar" :src="item?.avatar || 'https://oss.dayaedu.com/news-info/07/1690787574969.png'" onerror="this.src='https://oss.dayaedu.com/news-info/07/1690787574969.png'" />
- </dt>
- <dd>{{ item?.nick || item?.userID }}</dd>
- </dl>
- <dl>
- <dt class="avatar" @click="toggleMask('addMute')">+</dt>
- </dl>
- <dl>
- <dt class="avatar" v-if="member.muteMember.length > 0" @click="toggleMask('removeMute')">-</dt>
- </dl>
- </ol>
- </div>
- </main>
- <MaskTUI :show="mask" @update:show="(e) => (mask = e)">
- <Transfer :title="$t(`TUIChat.manage.${transferTitle}`)" :list="transferList" :isSearch="isSearch" :isRadio="isRadio" :selectedList="selectedList" @submit="submit" @cancel="cancel" @search="handleSearchMember" :isH5="isH5" />
- </MaskTUI>
- <DialogTUI :title="$t(`TUIChat.manage.删除成员`)" :show="delDialogShow" :isH5="isH5" :center="true" :isHeaderShow="!isH5" @submit="handleManage(userList, 'remove')" @update:show="(e) => (delDialogShow = e)">
- <p v-if="userList.length === 1" class="delDialog-title">
- {{ $t(`TUIChat.manage.确定从群聊中删除该成员?`) }}
- </p>
- <p v-if="userList.length > 1" class="delDialog-title">
- {{ $t(`TUIChat.manage.确定从群聊中删除所选成员?`) }}
- </p>
- </DialogTUI>
- <DialogTUI title="退出群聊" :show="quitDialogShow" :isH5="isH5" :center="true" :isHeaderShow="!isH5" @submit="handleManage([], 'quit')" @update:show="(e) => (quitDialogShow = e)">
- <p class="delDialog-title">是否退出群聊?</p>
- </DialogTUI>
- <DialogTUI title="解散群聊" :show="dimmisDialogShow" :isH5="isH5" :center="true" :isHeaderShow="!isH5" @submit="handleManage([], 'dismiss')" @update:show="(e) => (dimmisDialogShow = e)">
- <p class="delDialog-title">是否解散群聊?</p>
- </DialogTUI>
- </div>
- </div>
- </template>
- <script lang="ts">
- import TUIMessage from "../../../components/messageTUI/index";
- import { defineComponent, watchEffect, reactive, toRefs, computed, watch, ref, onMounted } from "vue";
- import { onClickOutside } from "@vueuse/core";
- import MaskTUI from "../../../components/maskTUI/mask.vue";
- import Transfer from "../../../components/transferTUI/index.vue";
- import Slider from "../../../components/sliderTUI/index.vue";
- import ManageName from "./manage-name.vue";
- import ManageNotification from "./manage-notification.vue";
- import ManageMember from "./manage-member.vue";
- import MemeberProfile from "./member-profile.vue";
- import DialogTUI from "../../../components/dialogTUi/index.vue";
- import { imGroupChangeGroupOwner, imGroupDetail, imGroupDismiss, imGroupMemberPage, imGroupMemberSaveImAll, imGroupMemberUserDetail, imGroupMuteAll, imGroupQuit, imUserFriendPage } from "../../../../api";
- import Vuex from "vuex";
- import { handleErrorPrompts } from "../../utils";
- import useClipboard from "vue-clipboard3";
- import { eventGlobal } from "@/helpers";
- const manage = defineComponent({
- components: {
- MaskTUI,
- Transfer,
- Slider,
- ManageName,
- ManageNotification,
- ManageMember,
- MemeberProfile,
- DialogTUI,
- },
- props: {
- userInfo: {
- type: Object,
- default: () => ({
- isGroup: false,
- list: [],
- }),
- },
- conversation: {
- type: Object,
- default: () => ({}),
- },
- show: {
- type: Boolean,
- default: () => false,
- },
- isH5: {
- type: Boolean,
- default: () => false,
- },
- },
- setup(props: any, ctx: any) {
- const types: any = manage.TUIServer.TUICore.TIM.TYPES;
- const { GroupServer } = manage;
- const { t } = manage.TUIServer.TUICore.config.i18n.useI18n();
- const data: any = reactive({
- conversation: {},
- userInfo: {
- isGroup: false,
- list: [],
- },
- isShowMuteTimeInput: false,
- editLableName: "",
- mask: false,
- currentTab: "",
- transferType: "",
- isSearch: false,
- isRadio: false,
- transferList: [],
- selectedList: [],
- isMuteTime: false,
- show: false,
- typeName: {
- [types.GRP_WORK]: "好友工作群",
- [types.GRP_PUBLIC]: "陌生人社交群",
- [types.GRP_MEETING]: "临时会议群",
- [types.GRP_AVCHATROOM]: "直播群",
- [types.JOIN_OPTIONS_FREE_ACCESS]: "自由加入",
- [types.JOIN_OPTIONS_NEED_PERMISSION]: "需要验证",
- [types.JOIN_OPTIONS_DISABLE_APPLY]: "禁止加群",
- },
- delDialogShow: false,
- quitDialogShow: false,
- dimmisDialogShow: false,
- userList: [],
- transferTitle: "",
- member: {
- admin: [],
- member: [],
- muteMember: [],
- },
- currentMember: {},
- classGroupDetail: {},
- page: 1,
- currentUserDetail: {} as any,
- groupDetail: {} as any,
- platform: "",
- });
- const dialog: any = ref();
- watchEffect(() => {
- data.conversation = props.conversation;
- data.userInfo = props.userInfo;
- data.show = props.show;
- });
- const VuexStore = ((window as any)?.TUIKitTUICore?.isOfficial && (Vuex as any)?.useStore()) || {};
- const TabName = computed(() => {
- let name = "";
- switch (data.currentTab) {
- case "notification":
- name = "群公告";
- break;
- case "member":
- name = "群成员";
- break;
- case "profile":
- name = "群成员";
- break;
- default:
- name = "群管理";
- break;
- }
- return name;
- });
- watch(
- () => data.userInfo.list,
- (newValue: any, oldValue: any) => {
- data.member = {
- admin: [],
- member: [],
- muteMember: [],
- };
-
-
-
- newValue.map((item: any) => {
- switch (item?.groupRoleType) {
- case "Admin":
- data.member.admin.push(item);
- break;
- case "Member":
- data.member.member.push(item);
- break;
- default:
- break;
- }
- return item;
- });
- const time: number = new Date().getTime();
- data.member.muteMember = newValue.filter((item: any) => item?.muteUntil * 1000 - time > 0);
- },
- { deep: true }
- );
- const isDismissGroupAuth = computed(() => {
- const { conversation } = data;
- const userRole = conversation?.groupProfile?.selfInfo.role;
- const groupType = conversation?.groupProfile?.type;
- const isOwner = userRole === types.GRP_MBR_ROLE_OWNER;
- const isWork = groupType === types.GRP_WORK;
- return isOwner && !isWork;
- });
- const isShowAddMember = computed(() => {
- const { conversation } = data;
- const groupType = conversation?.groupProfile?.type;
- const isWork = groupType === types.GRP_WORK;
- if (isWork) {
- return true;
- }
- return false;
- });
- const showUserNum = computed(() => {
- let num = 3;
- if (!isShowAddMember.value) {
- num += 1;
- }
- if ((data.conversation as any).groupProfile.selfInfo.role !== "Owner") {
- num += 1;
- }
- return num;
- });
- const isAuth = computed(() => {
- const { conversation } = data;
- const userRole = conversation?.groupProfile?.selfInfo.role;
- const isOwner = userRole === types.GRP_MBR_ROLE_OWNER;
- const isAdmin = userRole === types.GRP_MBR_ROLE_ADMIN;
- return isOwner || isAdmin;
- });
- const isAdmin = computed(() => {
- const { conversation } = data;
- const groupType = conversation?.groupProfile?.type;
- const userRole = conversation?.groupProfile?.selfInfo.role;
- const isOwner = userRole === types.GRP_MBR_ROLE_OWNER;
- const isWork = groupType === types.GRP_WORK;
- const isAVChatRoom = groupType === types.GRP_AVCHATROOM;
- if (!isWork && !isAVChatRoom && isOwner) {
- return true;
- }
- return false;
- });
- const isSetMuteTime = computed(() => {
- const { conversation } = data;
- const groupType = conversation?.groupProfile?.type;
- const isWork = groupType === types.GRP_WORK;
- if (isWork || !isAuth.value) {
- return false;
- }
- return true;
- });
- const getMember = async (type?: string) => {
- try {
- const { conversation } = data;
-
- const options: any = {
- groupId: conversation?.groupProfile?.groupID,
- rows: 100,
- page: type && type === "more" ? data.page + 1 : data.page,
-
- };
- await imGroupMemberPage(options).then((res: any) => {
- const rows = res.data.rows || [];
- rows.forEach((row: any) => {
- row.nick = row.nickname;
- });
- if (type && type === "more") {
- data.userInfo.list = [...data.userInfo.list, ...rows];
- } else {
- data.userInfo.list = rows;
- }
- });
-
- } catch {
-
- }
- };
- const addMember = async (userIDList: any) => {
- const { conversation } = data;
-
-
-
-
-
- const params: any = [];
- userIDList.forEach((id: any) => {
- params.push({
- groupId: conversation.groupProfile.groupID,
- imUserId: id,
- });
- });
-
-
- try {
- await imGroupMemberSaveImAll(params);
- getGroupDetail();
- getMember();
- } catch {
-
- }
- };
- const deleteMember = (user: any) => {
- const { conversation } = data;
- const options: any = {
- groupID: conversation.groupProfile.groupID,
- userIDList: [user.userID],
- };
- GroupServer.deleteGroupMember(options);
- };
- const changeOwner = async (userID: any) => {
-
-
-
-
-
-
- console.log(data.conversation.groupProfile, userID);
-
- await imGroupChangeGroupOwner({
- oldOwner: data.conversation.groupProfile.ownerID,
- groupId: data.conversation.groupProfile.groupID,
- newOwner: userID,
- });
- toggleShow();
- data.conversation.groupProfile = {};
- TUIMessage({
- message: "转交成功",
- isH5: false,
- type: "success",
- });
- };
- const quit = async (group: any) => {
- data.quitDialogShow = true;
- };
- const dismiss = async (group: any) => {
- data.dimmisDialogShow = true;
-
-
-
-
-
-
-
- };
- const handleAdmin = async (user: any) => {
- const { conversation } = data;
- let role = "";
- switch (user.role) {
- case types.GRP_MBR_ROLE_ADMIN:
- role = types.GRP_MBR_ROLE_MEMBER;
- break;
- case types.GRP_MBR_ROLE_MEMBER:
- role = types.GRP_MBR_ROLE_ADMIN;
- break;
- }
- const options: any = {
- groupID: conversation.groupProfile.groupID,
- userID: user.userID,
- role,
- };
- await GroupServer.setGroupMemberRole(options);
- getMember();
- };
- const setMemberMuteTime = async (userID: string, type?: string) => {
- const { conversation } = data;
- const options: any = {
- groupID: conversation.groupProfile.groupID,
- userID,
- muteTime: type === "add" ? 60 * 60 * 24 * 30 : 0,
- };
- await GroupServer.setGroupMemberMuteTime(options);
- if (type === "add") {
- (window as any)?.TUIKitTUICore?.isOfficial && VuexStore?.commit && VuexStore?.commit("handleTask", 4);
- }
- getMember();
- };
- const kickedOut = async (userIDList: any) => {
- const { conversation } = data;
- const options: any = {
- groupID: conversation.groupProfile.groupID,
- userIDList,
- reason: "",
- };
- await GroupServer.deleteGroupMember(options);
- getMember();
- };
- const edit = (labelName: string) => {
- data.editLableName = labelName;
- };
- const updateProfile = async (params: any) => {
- const { key, value } = params;
- const options: any = {
- groupID: data.conversation.groupProfile.groupID,
- [key]: value,
- };
- const res = await GroupServer.updateGroupProfile(options);
- const { conversation } = manage.TUIServer.store;
- conversation.groupProfile = res.data.group;
- manage.TUIServer.store.conversation = {};
- manage.TUIServer.store.conversation = conversation;
- data.editLableName = "";
- };
- const setTab = (tabName: string) => {
- data.currentTab = tabName;
- data.editLableName = "";
- if (data.currentTab === "member") {
- data.transferType = "remove";
- }
- if (!data.currentTab) {
- data.transferType = "";
- }
- };
- const handleSearchMember = async (value: string) => {
- let imResponse: any = {};
- let imMemberResponse: any = {};
- const options: any = {
- groupID: data.conversation.groupProfile.groupID,
- userIDList: [value],
- };
- switch (data.transferType) {
- case "add":
- try {
- imMemberResponse = await GroupServer.getGroupMemberProfile(options);
- data.transferList = data.transferList.filter((item: any) => item.userID !== imResponse.data[0]?.userID);
- data.transferList = [...data.transferList, ...imResponse.data];
- if (imMemberResponse?.data?.memberList.length > 0) {
- data.transferList = data.transferList.map((item: any) => {
- if (item.userID === imMemberResponse?.data?.memberList[0].userID) {
- item.isDisabled = true;
- }
- return item;
- });
- }
- } catch (error) {
- const message = t("TUIChat.manage.该用户不存在");
- handleErrorPrompts(message, props);
- }
- break;
- case "remove":
- try {
- imResponse = await GroupServer.getGroupMemberProfile(options);
- if (imResponse.data.memberList.length === 0) {
- const message = t("TUIChat.manage.该用户不在群组内");
- return handleErrorPrompts(message, props);
- }
- data.transferList = data.transferList.filter(
- (item: any) =>
-
- item.userID !== imResponse?.data?.memberList[0]?.userID
- );
- data.transferList = [
- ...data.transferList,
-
- ...imResponse?.data?.memberList,
- ];
- } catch (error) {
- const message = t("TUIChat.manage.该用户不存在");
- handleErrorPrompts(message, props);
- }
- break;
- default:
- break;
- }
- };
- const submit = (userList: any) => {
- console.log(userList, data.transferType, " data.transferType");
- if (data.transferType === "remove") {
- data.userList = userList;
- data.delDialogShow = !data.delDialogShow;
- } else {
- handleManage(userList, data.transferType);
- }
- data.mask = false;
- };
- const friendList = async () => {
- const list = await imUserFriendPage({ page: 1, rows: 999 });
- console.log(list, "lits");
- const fristList = list.data.rows || [];
- fristList.forEach((item: any) => {
- item.nick = item.friendNickname;
- });
- return fristList.filter((item: any) => !data.userInfo.list.some((infoItem: any) => infoItem.imUserId === item.imUserId));
- };
- const cancel = () => {
- toggleMask();
- };
- const toggleMask = async (type?: string) => {
- data.selectedList = [];
- switch (type) {
- case "add":
- data.isRadio = false;
- data.transferList = await friendList();
- data.transferTitle = "添加成员";
- break;
- case "remove":
- data.isRadio = false;
- data.transferList = data.userInfo.list.filter(
- (item: any) =>
-
- item.userID !== data.conversation?.groupProfile?.selfInfo.userID
- );
- data.transferTitle = "删除成员";
- break;
- case "addAdmin":
- data.isRadio = true;
- data.transferList = data.member.member;
- data.transferTitle = "新增管理员";
- break;
- case "removeAdmin":
- data.isRadio = true;
- data.transferList = data.member.admin;
- data.transferTitle = "移除管理员";
- break;
- case "changeOwner":
- data.isRadio = true;
- data.transferList = [...data.member.admin, ...data.member.member];
- data.transferTitle = "转让群组";
- console.log(data.transferList, "data.transferList");
- break;
- case "addMute":
- data.isRadio = true;
- data.transferList = data.member.member;
- if (data.conversation.groupProfile.selfInfo.role === "Owner") {
- data.transferList = [...data.member.admin, ...data.member.member];
- }
- data.transferTitle = "新增禁言用户";
- break;
- case "removeMute":
- data.isRadio = true;
- data.transferList = data.member.muteMember;
- data.transferTitle = "移除禁言用户";
- break;
- default:
- break;
- }
- data.transferType = type;
- data.mask = !data.mask;
- };
- onClickOutside(dialog, () => {
- data.show = false;
- });
- const toggleShow = () => {
- if (!GroupServer) {
- const message = t("TUIChat.manage.请先注册 TUIGroup 模块");
- return handleErrorPrompts(message, props);
- }
- data.show = !data.show;
- if (!data.show) {
- data.currentTab = "";
- }
- if (data.show) {
- getMember();
- }
- };
-
- const setAllMuteTime = async (value: boolean) => {
-
-
- try {
- await imGroupMuteAll({
- groupId: data.conversation.groupProfile.groupID,
- muteAll: value,
- });
- getGroupDetail();
- } catch {
-
- }
- };
- const handleManage = (userList: any, type: any) => {
- const userIDList: any = [];
- userList.map((item: any) => {
- userIDList.push(item.imUserId);
- return item;
- });
- switch (type) {
- case "add":
- addMember(userIDList);
- break;
- case "remove":
- kickedOut(userIDList);
- break;
- case "addAdmin":
- handleAdmin(userList[0]);
- break;
- case "removeAdmin":
- handleAdmin(userList[0]);
- break;
- case "changeOwner":
- changeOwner(userIDList[0]);
- break;
- case "addMute":
- setMemberMuteTime(userIDList[0], "add");
- break;
- case "removeMute":
- setMemberMuteTime(userIDList[0], "remove");
- break;
- case "quit":
-
- imGroupQuit({
- id: data.conversation.groupProfile.groupID,
- }).then(() => {
- eventGlobal.emit("removeGroup", data.conversation.groupProfile.groupID);
- manage.TUIServer.deleteConversation(data.conversation.conversationID);
- manage.TUIServer.store.conversation = {};
- toggleShow();
- });
- break;
- case "dismiss":
-
- imGroupDismiss({
- id: data.conversation.groupProfile.groupID,
- })
- .then(() => {
- eventGlobal.emit("removeGroup", data.conversation.groupProfile.groupID);
- manage.TUIServer.deleteConversation(data.conversation.conversationID);
- manage.TUIServer.store.conversation = {};
- toggleShow();
- })
- .catch((err: any) => {
- TUIMessage({
- message: err.message,
- isH5: false,
- type: "error",
- });
- });
- break;
- default:
- break;
- }
- };
- const handleGroupIDCopy = async () => {
- try {
- const { toClipboard } = useClipboard();
- await toClipboard(data?.conversation?.groupProfile?.groupID);
- } catch (error) {
- handleErrorPrompts(error, data.env);
- }
- };
- const handleMemberProfileShow = (user: any) => {
- data.currentMember = user;
- setTab("profile");
- };
- const getGroupMemberUserDetail = async () => {
- try {
- console.log(data?.conversation?.groupProfile, "data?.conversation?.groupProfile?");
- const res = await imGroupMemberUserDetail({
- groupId: data?.conversation?.groupProfile?.groupID,
- imUserId: data?.conversation?.groupProfile?.selfInfo.userID,
- });
- data.currentUserDetail = res.data;
- } catch {
-
- }
- };
-
- const getGroupDetail = async () => {
- try {
- const res = await imGroupDetail({ id: data?.conversation?.groupProfile?.groupID });
- const tdata = res.data;
- tdata.configJson = tdata.configJson ? JSON.parse(tdata.configJson) : {};
- data.groupDetail = tdata;
- } catch {
-
- }
- };
- watch(
- () => data.show,
- () => {
- if (data.show) {
- try {
- getGroupDetail();
- getGroupMemberUserDetail();
- } catch {
-
- }
- }
- }
- );
- onMounted(() => {
- try {
- data.platform = sessionStorage.getItem("platform") || "classroom";
- getGroupDetail();
- getGroupMemberUserDetail();
- console.log(data?.conversation, "data?.conversation?");
-
- } catch {
-
- }
- });
- return {
- ...toRefs(data),
- isDismissGroupAuth,
- isShowAddMember,
- isSetMuteTime,
- isAdmin,
- isAuth,
- addMember,
- deleteMember,
- changeOwner,
- quit,
- dismiss,
- handleAdmin,
- setMemberMuteTime,
- kickedOut,
- edit,
- updateProfile,
- setTab,
- TabName,
- getMember,
- handleSearchMember,
- submit,
- cancel,
- toggleMask,
- toggleShow,
- setAllMuteTime,
- handleManage,
- showUserNum,
- dialog,
- handleGroupIDCopy,
- handleMemberProfileShow,
- };
- },
- });
- export default manage;
- </script>
- <style lang="scss" scoped src="./style/index.scss"></style>
|