You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

355 lines
8.3 KiB

<template>
<view>
<cu-custom bgColor="bg-main-bar" :isBack="true">
<template #backText></template>
<template #content>{{title}}</template>
<template #right>
<view class="mr-10 f-16" @tap="save">{{type==3 ? '转发' : '完成'}}</view>
</template>
</cu-custom>
<user-select :type="type" :contact_id="contact_id" :user_ids="user_ids" :num="num" ref="userSelect"></user-select>
</view>
</template>
<script>
import userSelect from '@/components/message/user-select.vue';
import { useMsgStore } from '@/store/message';
import { storeToRefs } from 'pinia';
import pinia from '@/store/index'
const msgStore = useMsgStore(pinia)
const {appendContacts} = storeToRefs(msgStore);
export default {
components: {
userSelect
},
data() {
return {
title:'发起群聊',
contact_id:'',
selectUser:[],
userList: [],
changeUser: [], //选中的数据
user_ids: [], //
type: 1,
relayState: false,
scrollLeft:300,
content:'',
curMsg:{},
num:0
}
},
watch: {
relayState(val) {
if (val == true) {
uni.showToast({
icon: 'success',
title: '转发成功'
})
setTimeout(() => {
uni.navigateBack()
}, 2000)
}
}
},
onLoad(options) {
var pages = getCurrentPages(); //当前页
var beforePage = pages[pages.length - 2]; //上个页面
this.type = options.type ? options.type : 1;
this.contact_id = options.contact_id ? options.contact_id : '';
this.content = options.content ? options.content : '';
this.num = options.num ? options.num : 0;
if (options.type == 2) {
this.title="添加成员";
// 调用上一页的方法刷新
// #ifdef H5
this.user_ids = beforePage.user_ids
// #endif
// #ifndef H5
this.user_ids = beforePage.$vm.user_ids
// #endif
console.log(this.user_ids);
}else if (options.type == 3) {
this.title="转发聊天";
// 调用上一页的方法刷新
// #ifdef H5
this.curMsg = beforePage.curMsg
// #endif
// #ifndef H5
this.curMsg = beforePage.$vm.curMsg
// #endif
} else if (options.type == 4) {
this.title="选择提醒的人";
} else if(options.type == 5&&options.user_ids){
this.user_ids = JSON.parse(options.user_ids)
}else if(options.type == 6){
if(options.user_ids){
this.user_ids = JSON.parse(options.user_ids)
}
// console.log(this.user_ids);
}else{
this.title="发起群聊";
}
},
methods: {
// 转发
relay() {
let user_ids = this.changeUser.map(it => {
return it.id
})
if (!user_ids.length) {
uni.showToast({
title: "请选择至少一名人员",
icon: "none"
})
} else if (user_ids.length > 5) {
uni.showToast({
title: "转发的人数不能超过5人!",
icon: "none"
})
} else {
var pages = getCurrentPages(); //当前页
var beforePage = pages[pages.length - 2]; //上个页面
let toContactId = ''
let fromUser = ''
// 调用上一页的方法刷新
// #ifdef H5
fromUser = beforePage.fromUser
toContactId = beforePage.contact.id
// #endif
// #ifndef H5
fromUser = beforePage.$vm.fromUser
// #endif
let selectedItem = ''
if (this.type == 'relayCrm' || this.type == 'relayProject') {
// #ifdef H5
selectedItem = beforePage.message
// #endif
// #ifndef H5
selectedItem = beforePage.$vm.message
// #endif
} else {
selectedItem = uni.getStorageSync('selectedItem')
}
user_ids.forEach(it => {
let msg = {
id: this.$util.getUuid(),
is_group: 0,
fromUser,
extends: selectedItem.extends ? selectedItem.extends : '',
type: selectedItem.type,
toContactId: it,
content: selectedItem.content,
sendTime: new Date().getTime()
}
this.$api.msgApi.sendMessage(msg)
.then((res) => {
if (res.code !== 200) return
this.relayState = true
})
})
}
},
// 添加群成员
addGroupUser(user_ids) {
var pages = getCurrentPages(); //当前页
var beforePage = pages[pages.length - 2]; //上个页面
// 调用上一页的方法刷新
// #ifdef H5
beforePage.getsimpleMessage = false
let group_id = beforePage.group_id
// #endif
// #ifndef H5
beforePage.$vm.getsimpleMessage = false
let group_id = beforePage.$vm.group_id
// #endif
this.$api.msgApi.addGroupUser({
user_ids,
id: group_id
}).then(res => {
if (res.code == 200) {
uni.navigateBack()
}
})
},
// 添加群聊
addGroup(user_ids) {
this.$api.msgApi.addGroup({
user_ids
}).then(res => {
if (res.code == 200) {
setTimeout(() => {
uni.navigateBack()
}, 2000)
}
})
},
save(){
uni.showLoading({
title: '保存中...',
mask:true
});
this.changeUser=this.$refs.userSelect.changeUser;
this.selectUser=this.$refs.userSelect.selectUser;
// console.log(this.changeUser);
if(!this.changeUser.length){
return uni.showToast({
title:'请选择人员',
icon:'none'
})
}
try{
if(this.type==1){
this.$api.msgApi.addGroup({user_ids:this.changeUser}).then(res =>{
uni.hideLoading();
const data = res.data;
msgStore.appendContacts(data);
uni.navigateTo({
url:'/pages/message/chat?id='+data.id
})
})
}else if(this.type==2){
this.$api.msgApi.addGroupUser({user_ids:this.changeUser,id:this.contact_id}).then(res =>{
this.closePage();
})
}else if(this.type==3){
if(this.changeUser.length>5){
return uni.showToast({
title:'单次转发不能超过5人',
icon:'none'
})
}
this.$api.msgApi.forwardMessage({user_ids:this.changeUser,msg_id:this.curMsg.msg_id,content:this.content}).then(res =>{
this.closePage();
})
}else if(this.type==4){
const eventChannel = this.getOpenerEventChannel();
eventChannel.emit('getAtList',this.selectUser);
this.closePage();
}else if(this.type==5){
uni.setStorageSync('selectUser',this.selectUser)
this.closePage();
}else if(this.type==6){
uni.setStorageSync('selectUser1',this.selectUser)
this.closePage();
}else{
this.$api.msgApi.removeUser({user_ids:this.changeUser,id:this.contact_id}).then(res =>{
this.closePage();
})
}
}catch(e){
console.info(e);
this.closePage();
}
},
// 关闭加载动画返回上一个页面
closePage(){
uni.hideLoading();
uni.navigateBack();
},
// 监听提交
confirm: function(e) {
let arr = []
if (e) { //这个值为输入框输入的值
var brr = this.userList.filter(value => {
//遍历数组,返回值为true保留并复制到新数组,false则过滤掉
let data = value.realname ? value.realname : value.userInfo.displayName
if (data.includes(e.trim())) {
arr.push(value)
}
return data.includes(e.trim());
});
this.lists = arr
}
},
}
}
</script>
<style lang="scss" scoped>
.group-bg{
background-image: url(@/static/image/group.png);
}
.search-warp {
width: 750rpx;
padding: 15rpx 50rpx;
}
::v-deep .checklist-group{
display: grid !important;
.checklist-box{
padding:20rpx;
.checkbox__inner{
width:40rpx !important;
height:40rpx !important;
overflow:hidden;
.checkbox__inner-icon{
position: absolute;
top: -8px !important;
left: -4px !important;
height: 20px !important;
width: 20px !important;
border-right-width: 2px !important;
border-bottom-width: 2px !important;
}
}
.checklist-content{
margin-left:20rpx;
.checklist-text{
font-size:36rpx !important;
}
}
}
.is-checked{
.checkbox__inner{
background-color: #18bc37 !important;
border-color: #18bc37 !important;
}
.checklist-content{
.checklist-text{
color: #18bc37 !important;
}
}
}
}
.footer-opt{
position: fixed;
bottom:0;
left:0;
width:100%;
}
.scroll-view_H {
white-space: nowrap;
width: 100%;
}
.user-list-avatar{
float: left;
margin-top:10rpx;
.user-avatar{
width:70rpx;
height:70rpx;
flex: 0 0 auto;
border-radius: 8rpx;
margin-left: 15rpx;
display: inline-block;
&:last-child{
margin-right: 15rpx;
}
}
.select-num{
padding:10rpx;
}
}
</style>