mall_client/zyhs3_uniapp/pages/im/group/invitation-friends/invitation.vue

266 lines
8.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="box">
<view class="search">
<view class="search-bar">
<image class="pic" src="https://jw-uniapp.oss-cn-beijing.aliyuncs.com/static/assets/serach-icon.svg"></image>
<input class="inp" :value="userID" placeholder="请输入用户ID" @input="userIDInput" @confirm="getuserProfile" @blur="getuserProfile" @click="point" />
</view>
</view>
<view class="uni-list">
<checkbox-group @change="checkboxChange">
<label class="list" v-for="(item, index) of friendList" :key="index">
<view class="check">
<checkbox class="check-bok" :value="item.userID" :checked="item.checked" />
</view>
<view class="friend" v-if="item.profile">
<image class="friend-avatar" :src="item.profile.avatar || head"></image>
<view>
<view class="friend-nick">{{item.remark || item.profile.nick }}</view>
<view class="friend-userID">用户ID{{ item.userID }}</view>
</view>
</view>
</label>
</checkbox-group>
</view>
</view>
</template>
<script>
export default {
data() {
return {
userID: '',
friendList: '',
memberList: '',
seldata: [],
groupID: '',
head: 'https://jw-uniapp.oss-cn-beijing.aliyuncs.com/static/images/avatar.png'
};
},
components: {},
props: {},
/**
* 生命周期函数--监听页面加载
*/
onLoad(option) {
this.getFriend();
this.getGroupMemberList(option);
console.log(option);
this.groupID = option.groupID;
},
methods: {
point() {
this.setData({
friendList: ''
});
},
// 选择框
checkboxChange: function (e) {
var values = e.detail.value;
this.seldata = values;
// for(let item of this.friendList){
// console.log(item.userID,'66')
// if(values.includes(item.userID)){
// this.$set(item,'checked',true);
// console.log(item.userID,'1')
// }else{
// this.$set(item,'checked',false)
// console.log(item.userID,'2')
// }
// }
},
// 获取好友列表
getFriend() {
let promise = uni.$TUIKit.getFriendList();
promise
.then(imResponse => {
this.list = imResponse.data; // 好友列表
})
.catch(function (imError) {
console.warn('getFriendList error:', imError); // 获取好友列表失败的相关信息
});
},
// 获取群成员列表
getGroupMemberList(option) {
let promise = uni.$TUIKit.getGroupMemberList({ groupID: option.groupID, count: 300, offset: 0 }); // 从0开始拉取30个群成员
promise
.then(imResponse => {
console.log(imResponse.data.memberList); // 群成员列表
this.memberList = imResponse.data.memberList;
console.log(this.list);
this.list = this.list.filter(item => {
let idList = this.memberList.map(v => v.userID);
return !idList.includes(item.userID);
});
this.setData({
friendList: this.list
});
})
.catch(function (imError) {
console.warn('getGroupMemberList error:', imError);
});
},
// 点击右上角确定按钮
onNavigationBarButtonTap: function (e) {
console.log(this.groupID);
console.log(this.seldata);
if (this.seldata.length == 0) {
uni.showToast({
title: '请选择',
icon: 'none'
});
return;
}
let promise = uni.$TUIKit.addGroupMember({ groupID: this.groupID, userIDList: this.seldata });
console.log(promise, 'promisepromise');
console.log(promise.message);
promise
.then(function (imResponse) {
console.log(imResponse.data.successUserIDList); // 添加成功的群成员 userIDList
console.log(imResponse.data.failureUserIDList); // 添加失败的群成员 userIDList
console.log(imResponse.data.existedUserIDList); // 已在群中的群成员 userIDList
// 一个用户 userX 最多允许加入 N 个群,如果已经加入了 N 个群,此时再尝试添加 userX 为群成员,则 userX 不能正常加群
// SDK 将 userX 的信息放入 overLimitUserIDList供接入侧处理
console.log(imResponse.data.overLimitUserIDList); // 超过了“单个用户可加入群组数”限制的用户列表v2.10.2起支持
console.log(imResponse.data.group); // 添加后的群组信息
uni.showModal({
title: '提示',
content: '邀请成功',
success: res => {
if (res.confirm) {
console.log('用户点击确定');
uni.navigateBack({
delta: 2
});
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
})
.catch(function (imError) {
uni.showToast({
title: imError,
icon: 'error'
});
console.warn('addGroupMember error:', imError); // 错误信息
});
},
userIDInput(e) {
console.log(e.detail.value);
this.userID = e.detail.value;
},
getuserProfile() {
uni.$TUIKit
.getUserProfile({
userIDList: [this.userID]
})
.then(imRes => {
if (imRes.data.length > 0) {
console.log(imRes.data);
this.friendList = imRes.data;
} else {
uni.showToast({
title: '用户不存在',
icon: 'error'
});
this.userID = '';
}
});
}
}
};
</script>
<style scoped>
.box {
width: 100vw;
height: 100vh;
background-color: #f4f5f9;
}
.search {
width: 100%;
padding: 20rpx 0;
}
.search-bar {
display: flex;
flex-wrap: nowrap;
align-items: center;
margin-left: 40rpx;
width: 670rpx;
height: 80rpx;
background: #ffffff;
border-radius: 20rpx;
}
.pic {
display: inline-block;
margin-left: 24rpx;
width: 48rpx;
height: 48rpx;
}
.inp {
margin-left: 16rpx;
line-height: 40rpx;
font-size: 28rpx;
width: 100%;
display: inline-block;
}
.list {
display: flex;
flex-wrap: nowrap;
width: 750rpx;
height: 150rpx;
background-color: #ffffff;
border-bottom: 1px solid #eef0f3;
}
.check {
height: 150rpx;
line-height: 150rpx;
margin: 0 20rpx;
}
.choose {
margin-left: 40rpx;
margin-right: 40rpx;
margin-top: 52rpx;
margin-bottom: 50rpx;
width: 48rpx;
height: 48rpx;
}
.friend {
width: 622rpx;
display: flex;
align-items: center;
}
.friend-avatar {
width: 96rpx;
height: 96rpx;
margin-right: 24rpx;
}
.friend-nick {
color: #333333;
line-height: 50rpx;
font-size: 36rpx;
margin-bottom: 4rpx;
}
.friend-userID {
color: #999999;
line-height: 40rpx;
font-size: 28rpx;
}
</style>