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: ‘’, *//群二维码

1
2
3
4
5
6
7
//操作二维码(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 的

1
2
3
4
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);
};

手机端修改

一旦手机端修改是否屏蔽的状态会有下推

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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修改需要通知移动端修改

1
2
3
4
5
6
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 修改参数就好了

查看群/个人资料

若点击“查看群资料”,默认切换至当前聊天室,然后打开当前群的群资料弹窗。

当前是否选折了查看的的用户

  • 已选折正常逻辑

    1
    2
    this.$parent.$refs.cardcontaininfo.curView = "modal2")//群
    this.showUserInfo(0, 3)//人
  • 未选折需要先选择同时注意时机问题

    • 群没事,由于群是根据存储在 vux selectid 进行渲染而在选折时就已经修改了 selectid

    • 个人用户就需要注意时机问题,不然可能导致查看的资料是之前选取那个人的 usercardinfo,由于会重新渲染 message.vue, 而showUserInfo() 的显示信息是根据 usercardinfo 获取的,但是 usercardinfo 的修改并不是一修改 slectedid 就会改变的,他的促发条件是聊天记录。这个时候我用的 eventbus

      1
      2
      3
      this.$store.commit('fillusercardinfo', other);
      Bus.$emit('newUserCard');
      //一旦修改 usercardinfo 代表着可以去展示用户资料了
棒棒糖