271 lines
5.7 KiB
Vue
271 lines
5.7 KiB
Vue
<template>
|
||
<view class="TUI-Create-conversation-container">
|
||
<view class="tui-search-area">
|
||
<view class="tui-search-bar">
|
||
<image class="tui-searchcion"
|
||
src="https://jw-uniapp.oss-cn-beijing.aliyuncs.com/static/assets/serach-icon.svg"></image>
|
||
<input class="tui-search-bar-input" :value="groupID" placeholder="请输入群ID(5213)" @input="groupIDInput"
|
||
@confirm="searchGroupByID" @blur="searchGroupByID" />
|
||
</view>
|
||
</view>
|
||
<view class="tui-person-to-invite" v-if="searchGroup.groupID">
|
||
<image @tap="handleChoose" class="tui-normal-choose"
|
||
:src="isChoose ? 'https://jw-uniapp.oss-cn-beijing.aliyuncs.com/static/assets/single-choice-hover.svg' : 'https://jw-uniapp.oss-cn-beijing.aliyuncs.com/static/assets/single-choice-normal.svg'">
|
||
</image>
|
||
<view class="tui-person-profile">
|
||
<image class="tui-person-profile-avatar"
|
||
:src="groupAvatar || 'https://jw-uniapp.oss-cn-beijing.aliyuncs.com/static/images/gruopavatar.png'">
|
||
</image>
|
||
<view>
|
||
<view class="tui-person-profile-nick">{{ searchGroup.name }}</view>
|
||
<view class="tui-person-profile-userID">群ID:{{ searchGroup.groupID }}</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="tui-confirm-btn" @tap="bindConfirmJoin">确认加入</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
export default {
|
||
data() {
|
||
return {
|
||
groupID: '',
|
||
searchGroup: {
|
||
groupID: '',
|
||
name: ''
|
||
},
|
||
isChoose: false,
|
||
groupAvatar: ''
|
||
};
|
||
},
|
||
|
||
components: {},
|
||
props: {},
|
||
methods: {
|
||
goBack() {
|
||
uni.navigateBack({
|
||
delta: 1
|
||
});
|
||
},
|
||
|
||
groupIDInput(e) {
|
||
this.setData({
|
||
groupID: e.detail.value
|
||
});
|
||
},
|
||
|
||
searchGroupByID() {
|
||
uni.$TUIKit
|
||
.searchGroupByID(this.groupID)
|
||
.then(imResponse => {
|
||
if (imResponse.data.group.groupID !== '') {
|
||
this.searchGroup = imResponse.data.group;
|
||
if (imResponse.data.group.avatar !== 'FaceUrl') {
|
||
this.groupAvatar = imResponse.data.group.avatar;
|
||
}
|
||
}
|
||
})
|
||
.catch(imError => {
|
||
uni.hideLoading();
|
||
|
||
if (imError.code === 10007) {
|
||
uni.showToast({
|
||
title: '讨论组类型群不允许申请加群',
|
||
icon: 'none'
|
||
});
|
||
} else {
|
||
uni.showToast({
|
||
title: '未找到该群组',
|
||
icon: 'none'
|
||
});
|
||
}
|
||
});
|
||
},
|
||
|
||
handleChoose() {
|
||
this.isChoose = !this.isChoose;
|
||
this.setData({
|
||
searchGroup: this.searchGroup
|
||
});
|
||
},
|
||
|
||
bindConfirmJoin() {
|
||
|
||
|
||
if (this.isChoose) {
|
||
uni.$TUIKit
|
||
.joinGroup({
|
||
groupID: this.groupID,
|
||
type: this.searchGroup.type
|
||
})
|
||
.then(imResponse => {
|
||
switch (imResponse.data.status) {
|
||
case uni.$TUIKitTIM.TYPES.JOIN_STATUS_WAIT_APPROVAL:
|
||
// 等待管理员同意
|
||
console.log('等待管理员同意')
|
||
this.$msg('等待管理员同意');
|
||
break;
|
||
case uni.$TUIKitTIM.TYPES.JOIN_STATUS_SUCCESS:
|
||
// 加群成功
|
||
console.log('加群成功', imResponse.data.group); // 加入的群组资料
|
||
uni.redirectTo({
|
||
url: `/pages/im/chat/chat?conversationID=GROUP${this.searchGroup.groupID}`
|
||
});
|
||
break;
|
||
|
||
case uni.$TUIKitTIM.TYPES.JOIN_STATUS_ALREADY_IN_GROUP:
|
||
// 已经在群中
|
||
console.log('已经在群中'); // 加入的群组资料
|
||
this.$msg('已经在群中');
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
})
|
||
.catch(imError => {
|
||
console.warn('joinGroup error:', imError); // 申请加群失败的相关信息
|
||
});
|
||
} else {
|
||
uni.showToast({
|
||
title: '请选择相关群聊',
|
||
icon: 'error'
|
||
});
|
||
}
|
||
}
|
||
}
|
||
};
|
||
</script>
|
||
|
||
<style scoped>
|
||
.TUI-Create-conversation-container {
|
||
width: 100vw;
|
||
height: 100vh;
|
||
background-color: #f4f5f9;
|
||
}
|
||
|
||
.tui-navigatorbar {
|
||
position: absolute;
|
||
top: 0;
|
||
width: 750rpx;
|
||
height: 176rpx;
|
||
background-color: #5856d5;
|
||
}
|
||
|
||
.tui-navigatorbar-back {
|
||
position: absolute;
|
||
width: 48rpx;
|
||
height: 48rpx;
|
||
left: 24rpx;
|
||
bottom: 20rpx;
|
||
}
|
||
|
||
.conversation-title {
|
||
position: absolute;
|
||
width: 350rpx;
|
||
height: 88rpx;
|
||
line-height: 56rpx;
|
||
font-size: 36rpx;
|
||
color: #ffffff;
|
||
z-index: 100;
|
||
bottom: 0;
|
||
left: 200rpx;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
}
|
||
|
||
.tui-search-area {
|
||
position: absolute;
|
||
width: 750rpx;
|
||
height: 144rpx;
|
||
}
|
||
|
||
.tui-search-bar {
|
||
display: flex;
|
||
flex-wrap: nowrap;
|
||
align-items: center;
|
||
margin-left: 40rpx;
|
||
margin-top: 32rpx;
|
||
width: 670rpx;
|
||
height: 80rpx;
|
||
background: #ffffff;
|
||
border-radius: 40rpx;
|
||
border-radius: 40rpx;
|
||
}
|
||
|
||
.tui-searchcion {
|
||
display: inline-block;
|
||
margin-left: 24rpx;
|
||
width: 48rpx;
|
||
height: 48rpx;
|
||
}
|
||
|
||
.tui-search-bar-input {
|
||
margin-left: 16rpx;
|
||
line-height: 40rpx;
|
||
font-size: 28rpx;
|
||
width: 100%;
|
||
display: inline-block;
|
||
}
|
||
|
||
.tui-person-to-invite {
|
||
position: absolute;
|
||
display: flex;
|
||
flex-wrap: nowrap;
|
||
width: 750rpx;
|
||
height: 150rpx;
|
||
background-color: #ffffff;
|
||
}
|
||
|
||
.tui-normal-choose {
|
||
margin-left: 40rpx;
|
||
margin-right: 40rpx;
|
||
margin-top: 52rpx;
|
||
margin-bottom: 50rpx;
|
||
width: 48rpx;
|
||
height: 48rpx;
|
||
}
|
||
|
||
.tui-person-profile {
|
||
width: 622rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.tui-person-profile-avatar {
|
||
width: 96rpx;
|
||
height: 96rpx;
|
||
margin-right: 24rpx;
|
||
}
|
||
|
||
.tui-person-profile-nick {
|
||
color: #333333;
|
||
line-height: 50rpx;
|
||
font-size: 36rpx;
|
||
margin-bottom: 4rpx;
|
||
}
|
||
|
||
.tui-person-profile-userID {
|
||
color: #999999;
|
||
line-height: 40rpx;
|
||
font-size: 28rpx;
|
||
}
|
||
|
||
.tui-confirm-btn {
|
||
position: absolute;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
bottom: 100rpx;
|
||
width: 670rpx;
|
||
height: 96rpx;
|
||
background: #5856d5;
|
||
color: #ffffff;
|
||
border-radius: 48rpx;
|
||
border-radius: 48rpx;
|
||
margin-left: 40rpx;
|
||
line-height: 44rpx;
|
||
font-size: 32rpx;
|
||
}
|
||
</style> |