diff --git a/littleApp_child/app.js b/littleApp_child/app.js index 84a65b9..5da8d0b 100644 --- a/littleApp_child/app.js +++ b/littleApp_child/app.js @@ -116,7 +116,7 @@ App({ from: message.from, to: message.to }, - username: '', + username: message.from, yourname: message.from, msg: { type: 'txt', @@ -134,6 +134,7 @@ App({ data: that.globalData.unrederMsg[messageFrom + myName], success: function () { console.log('setStorage success') + disp.fire("em.xmpp.unreadspot", message); } }) console.log('消息打印',messageFrom + myName,that.globalData.unrederMsg[messageFrom + myName]) @@ -167,7 +168,7 @@ App({ from: message.from, to: message.to }, - username: '', + username: message.from, yourname: message.from, msg: { type: 'img', @@ -186,6 +187,7 @@ App({ data: that.globalData.unrederMsg[messageFrom + myName], success: function () { console.log('setStorage success') + disp.fire("em.xmpp.unreadspot", message); } }) } @@ -210,7 +212,7 @@ App({ from: message.from, to: message.to }, - username: '', + username: message.from, yourname: message.from, msg: { type: 'audio', @@ -231,6 +233,7 @@ App({ data: that.globalData.unrederMsg[messageFrom+ myName], success: function () { console.log('setStorage success') + disp.fire("em.xmpp.unreadspot", message); } }) } diff --git a/littleApp_child/pages/chatroom/chatroom.js b/littleApp_child/pages/chatroom/chatroom.js index 52f151a..ce5a403 100644 --- a/littleApp_child/pages/chatroom/chatroom.js +++ b/littleApp_child/pages/chatroom/chatroom.js @@ -45,6 +45,7 @@ Page({ kfName:'', memberHxName:'', memberName:'', + unTotleReadCount:0, chatMsg: [], username:'', bubbles:false, @@ -62,7 +63,7 @@ Page({ */ onLoad: function (options) { let self=this; - console.log(options) + var options=JSON.parse(options.username) networkUtil._post(api.addBabyChatroom,{doctorId:options.doctorId},function(res){ console.log(res) self.setData({ @@ -74,14 +75,14 @@ Page({ kfName:res.data.data.kfName, memberHxName:res.data.data.memberHxName, memberName:res.data.data.memberName, - username:'150346790928385' + username:res.data.data.chatroomId }) self.initChat() },function(res){ },'application/json') - + self.initChat() disp.on('em.xmpp.error.sendMsgErr', function(err) { curMsgMid = err.data.mid isFail = true @@ -431,7 +432,7 @@ Page({ from: msg.from, to: msg.to }, - username: '', + username: msg.from, yourname: msg.from, msg: { type: type, @@ -551,7 +552,7 @@ Page({ }, onRender(){ wx.pageScrollTo({ - scrollTop: 5000, + scrollTop: 50000, duration: 300, success: function(){console.log('滚动成功')}, fail: function(){console.log('滚动失败')} @@ -879,6 +880,8 @@ Page({ var id = WebIM.conn.getUniqueId(); var msg = new WebIM.message(msgType.AUDIO, id); var dataObj = JSON.parse(res.data); + msg.from = myName; + // 接收消息对象 msg.set({ apiUrl: WebIM.config.apiURL, @@ -913,7 +916,7 @@ Page({ from: msg.from, to: msg.to }, - username: '', + username: msg.from, yourname: msg.from, msg: { type: 'audio', diff --git a/littleApp_child/pages/chatroom/chatroom.wxml b/littleApp_child/pages/chatroom/chatroom.wxml index b931957..67240eb 100644 --- a/littleApp_child/pages/chatroom/chatroom.wxml +++ b/littleApp_child/pages/chatroom/chatroom.wxml @@ -14,8 +14,9 @@ {{ item.username===doctorHxName?doctorName:item.username===kfHxName?kfName:item.username===memberHxName?memberName:'' }} - - + + + = 1){ + wx.vibrateLong({ + success:function() { + console.log('震动调取成功') + }, + }) + } + }); }, /** @@ -106,37 +135,39 @@ Page({ }, chat(e){ var self=this; - var doctorId = e.target.dataset.doctorid; + var doctorId = e.currentTarget.dataset.doctorid; console.log(doctorId) networkUtil._post(api.addBabyChatroom,{doctorId:doctorId},function(res){ - console.log(res) - self.setData({ - doctorHxName:res.data.data.doctorHxName, - doctorName:res.data.data.doctorName, - kfHxName:res.data.data.kfHxName, - kfName:res.data.data.kfName, - memberHxName:res.data.data.memberHxName, - memberName:res.data.data.memberName, - username:'150346790928385' - }) + if(res.data.errorcode==0){ + self.data.unTotleReadCount = 0; + console.log(res) + var nameList={ + doctorHxName:res.data.data.doctorHxName, + doctorName:res.data.data.doctorName, + kfHxName:res.data.data.kfHxName, + kfName:res.data.data.kfName, + memberHxName:res.data.data.memberHxName, + memberName:res.data.data.memberName, + username:res.data.data.chatroomId, + doctorId:doctorId + } + console.log(nameList) + + console.log(self.data.unTotleReadCount) + if(self.data.unTotleReadCount >= 1){ + wx.vibrateLong({ + success:function() { + console.log('震动调取成功') + }, + }) + } + wx.redirectTo({ + url: '../chatroom/chatroom?username='+ JSON.stringify(nameList), + }) + } },function(res){ },'application/json') - var nameList={ - memberId:self.memberId, - serviceId:self.serviceId, - doctorHxName:self.doctorHxName, - doctorName:self.doctorName, - kfHxName:self.kfHxName, - kfName:self.kfName, - memberHxName:self.memberHxName, - memberName:self.memberName, - doctorId:self.doctorId - } - console.log(nameList) - wx.navigateTo({ - url: '../chatroom/chatroom?username='+ JSON.stringify(nameList), - }) }, godoctor: function(e) { var doctorId = e.currentTarget.dataset.doctorid; @@ -186,7 +217,7 @@ Page({ self.setData({ hospitalName: hospitalName, index: e.detail.value, - list:doctors + list:self.getChatList(doctors) }) //self.getDoctorsFromServer() }, @@ -268,4 +299,27 @@ Page({ }) }, + + getChatList(data){ + console.log(111) + var member = data || this.data.list; + var myName = wx.getStorageSync("hxName"); + for(let i = 0; i < member.length; i++){ + console.log(member[i].chartroomId,myName) + //let newChatMsgs = wx.getStorageSync('150455922524161' + myName) || []; + //let historyChatMsgs = wx.getStorageSync("rendered_" + '150455922524161' + myName) || []; + let newChatMsgs = wx.getStorageSync(member[i].chartroomId + myName) || []; + let historyChatMsgs = wx.getStorageSync("rendered_" + member[i].chartroomId + myName) || []; + let curChatMsgs = historyChatMsgs.concat(newChatMsgs); + let item = member[i]; + if(curChatMsgs.length){ + item.unReadCount = newChatMsgs.length; + if(item.unReadCount > 99) { + item.unReadCount = "99+"; + } + this.data.unTotleReadCount += item.unReadCount + } + } + return member; + } }) \ No newline at end of file diff --git a/littleApp_child/pages/doctorLists/doctorLists.wxml b/littleApp_child/pages/doctorLists/doctorLists.wxml index d3ac436..12bf7a8 100644 --- a/littleApp_child/pages/doctorLists/doctorLists.wxml +++ b/littleApp_child/pages/doctorLists/doctorLists.wxml @@ -29,14 +29,14 @@ 专家咨询 - + {{item.name}}{{item.positional}} 专家介绍 - + {{item.unReadCount}} diff --git a/littleApp_child/pages/doctorLists/doctorLists.wxss b/littleApp_child/pages/doctorLists/doctorLists.wxss index e33b6a0..eba7ae9 100644 --- a/littleApp_child/pages/doctorLists/doctorLists.wxss +++ b/littleApp_child/pages/doctorLists/doctorLists.wxss @@ -15,7 +15,19 @@ page { padding-right: 15px; padding-top: 15px; } - +.massage_box_txt{ + float:right; + width: 50rpx; + height: 50rpx; + text-align: center; + border-radius: 50%; + background-color: indianred; + font-size: 15px; + color: #fff; + position: absolute; + right:20px; + top:10px; +} .top_content_view { background: #fff; border: 1px solid #d8dbd2; @@ -95,6 +107,7 @@ line-height: 40px; .icon_name_view { display: flex; padding-left: 15px; + position: relative; } .icon { diff --git a/littleApp_child/pages/home/home.js b/littleApp_child/pages/home/home.js index ec338e2..e53412f 100644 --- a/littleApp_child/pages/home/home.js +++ b/littleApp_child/pages/home/home.js @@ -13,6 +13,7 @@ var app = getApp() //聊天控件 let WebIM = wx.WebIM = require("../../utils/WebIM.js").default; +let disp = require("../../utils/broadcast"); var timeCount = 60; var timer; @@ -32,6 +33,7 @@ Page({ item_small: 0, // 首页类型 1登录 2用户首页 3欢迎页 pageType: 0, + unTotleReadCount:0, time: '0s', list: [], userInfo: '', @@ -83,10 +85,15 @@ Page({ riskDise:false }, /*---------生命周期--------*/ - onLoad: function() { + onLoad: function(options) { this.calculatePageSize() + // 网络监听 this.networkStatusChange() + var that = this + disp.on("em.xmpp.unreadspot", function(){ + that.getUnreaderMsgNum() + }) if (app.globalData.token == null || app.globalData.token == ''||wx.getStorageSync("access_token") == null||!wx.getStorageSync("access_token")) { this.welcomePage() } else { @@ -115,6 +122,7 @@ Page({ if (wx.getStorageSync("access_token") != null&&wx.getStorageSync("access_token")) { console.log(wx.getStorageSync("access_token")) this.connectWebIM() + } if (app.globalData.token.length > 0 && this.data.pageType != 2) { this.getUserInfo() @@ -126,6 +134,7 @@ Page({ if (!app.globalData.token && this.data.pageType != 1) { this.welcomePage() } + this.getUnreaderMsgNum() }, onUnload: function() { // 移除监听 @@ -805,8 +814,7 @@ Page({ }, //专家咨询 consultation(){ - console.log(this.data.userData) - if(this.data.userData.disStatus == 0){ + if(this.data.riskGuide){ var my = wx.getStorageSync('hxName') var nameList = { myName: my, @@ -818,21 +826,46 @@ Page({ wx.navigateTo({ url: '../doctorLists/doctorLists?username='+ JSON.stringify(nameList), }) - }else if(this.data.userData.disStatus == 1){ - var my = wx.getStorageSync('hxName') - var serviceId = this.data.userData.disData.serviceId; - var nameList = { - myName: my, - your: this.data.userData.disData.doctorHxName, - serviceId:serviceId, - memberId:this.data.userData.disData.memberId, - doctorId:this.data.userData.disData.doctorId - } - wx.setStorageSync('serviceId',serviceId) - console.log(nameList) - wx.navigateTo({ - url: '../doctorLists/doctorLists?username='+ JSON.stringify(nameList), + }else{ + wx.showModal({ + title: '温馨提示', + content: '您还没有开通该项服务哦', + confirmText: '立即开通', + success: function(res) { + if (res.confirm) { + wx.navigateTo({ + url: '../vipService/vipService', + }) + } + } + }) + } + }, + // 获取未读总数 + getUnreaderMsgNum(){ + var that = this + var num = 0 + var myName = wx.getStorageSync("hxName"); + WebIM.conn.listRooms({ + success: function(rooms){ + console.log(rooms) + rooms.map((item) => { + wx.getStorage({ + key: item.roomId + myName, + success (res) { + var unreadMas =res.data + if(unreadMas){ + num += unreadMas.length; + } + console.log(num) + that.setData({unTotleReadCount:num}) + } + }) + }) + }, + error: function(){ + + } }) } -}, }) \ No newline at end of file diff --git a/littleApp_child/pages/home/home.wxml b/littleApp_child/pages/home/home.wxml index 2d9e296..226ca0d 100644 --- a/littleApp_child/pages/home/home.wxml +++ b/littleApp_child/pages/home/home.wxml @@ -101,6 +101,7 @@ 眼保健记录 + {{unTotleReadCount}} 专家咨询 diff --git a/littleApp_child/pages/home/home.wxss b/littleApp_child/pages/home/home.wxss index 8f4b205..c229d0f 100644 --- a/littleApp_child/pages/home/home.wxss +++ b/littleApp_child/pages/home/home.wxss @@ -11,7 +11,19 @@ page{ background: #48C17B; position: relative; } - +.unreadCount{ + width: 46rpx; + height: 46rpx; + text-align: center; + border-radius: 50%; + background-color: indianred; + z-index: 10; + font-size: 15px; + color: #fff; + position: absolute; + right:10px; + top:0px; +} .promptText { background: #f4879b; font: bold; @@ -203,6 +215,7 @@ page{ flex-direction: column; align-items: center; justify-content: center; + position: relative; } .foundation_item_small_image { diff --git a/littleApp_child/source/kefu.png b/littleApp_child/source/kefu.png new file mode 100644 index 0000000000000000000000000000000000000000..89189aec4b1e72900e7e597e36f08aa479a73829 GIT binary patch literal 11576 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 qX4283o7y2D5=1-P#9C&8!2ba