qrcode 分支
需求:私信拉粉丝群 功能已实现但设计稿不详
card2 判断是否为为未加群逻辑
card2 都是解析连接的
先判断该链接是否为群
//判断是否是群链 群连接 weibo.com/p/230491${群id}
为群再使用群id获取群成员列表遍历是否在该群中,不在该群便弹出二维码。
添加了 modal4
主要是二维码的模态框
** 二维码配置*
** 详情见 https://github.com/davidshimjs/qrcodejs*
** npm i qrcodejs2 https://www.npmjs.com/package/qrcodejs2*
vux 添加
qrcode: '', *//群二维码
//操作二维码(qrcode)
exqrcode(state, val) {
state.qrcode = val;
},
emptyqrcode(state) {
state.qrcode = null;
},
sync_double 分支
1、群消息免打扰
1-1 群消息免打扰功能,Web和App进行设置两边数据同步。【完成1】
1-2 右键出现气泡,气泡第一条:“查看群资料”,点击打开群信息弹窗,第二条:“群消息免打扰”/“打开群消息通知”,第三条“删除对话”,和线上逻辑一致。【完成1】
1-3 若点击“查看群资料”,回默认切换至当前聊天室,然后打开当前群的群资料弹窗。【完成1】
1-4 设置为“群消息免打扰”后,userlist第二条栏目显示规则:
[x条未读]+最新的一条消息+橙点(没有未读时显示免打扰icon【此icon还未使用最新设计稿icon】)【完成0.8】
2、群消息免打扰功能【调整icon位置及大小未作】【完成0】
3、群标题文案
3-1 群标题文案位置左移,UI上需要调整。【完成1】
3-2 鼠标碰到当前区域,鼠标变成手指icon。【完成1】
4、原关闭该群提醒功能【完成0】
双端消息同步
屏蔽消息状态码不在 pc/mobile 分开,都是用 mobile 的状态码
所以第一次渲染 chatlist 时所拿取的信息的是 mobile 的
export const getchatlist = obj => {
//获取聊天列表 special_source 标记请求来源 默认为 0 手机端 3
return axios.get(`/webim/2/direct_messages/contacts.json?special_source=3`, obj).then(res => res.data);
};
手机端修改
一旦手机端修改是否屏蔽的状态会有下推
else if (type == 'groupchat_remind_settings') { //群消息免打扰双端同步
let {
list,
i
} = this.listHandle(cometdMsg.gid);
this.$store.commit('update' + list, { //更改chatlist 此时不置顶联系人
notTop: true,
i,
param: {
remindSetting: cometdMsg.settings.mobile
}
});
this.cgProcessPoll(); //结束当前消息处理
}
根据其id判断在列表的位置并修改屏蔽状态
pc 端修改
一旦pc修改需要通知移动端修改
export const setnotice = obj => { //更改用户私信群设置
return axios.post(`/webim/2/notice_center/discussion_group/set_push_settings.json`, qs.stringify(obj)).then(res => res.data);
// return axios.post(`/webim/groupchat/update_user_settings.json`, qs.stringify(obj)).then(res => res.data);
};
//switch 提醒设置,1:关闭;2:打开;3:屏蔽
//call_from pc:表示更改PC端私信群提醒设置 mobile 手机端
所以全局搜 setnotice 修改参数就好了
查看群/个人资料
若点击“查看群资料”,默认切换至当前聊天室,然后打开当前群的群资料弹窗。
当前是否选折了查看的的用户
已选折正常逻辑
javascriptthis.$parent.$refs.cardcontaininfo.curView = "modal2")//群 this.showUserInfo(0, 3)//人
未选折需要先选择同时注意时机问题
群没事,由于群是根据存储在 vux selectid 进行渲染而在选折时就已经修改了 selectid
个人用户就需要注意时机问题,不然可能导致查看的资料是之前选取那个人的 usercardinfo,由于会重新渲染 message.vue, 而showUserInfo() 的显示信息是根据 usercardinfo 获取的,但是 usercardinfo 的修改并不是一修改 slectedid 就会改变的,他的促发条件是聊天记录。这个时候我用的 eventbus
javascriptthis.$store.commit('fillusercardinfo', other); Bus.$emit('newUserCard'); //一旦修改 usercardinfo 代表着可以去展示用户资料了