This commit is contained in:
haomingming
2023-05-06 10:18:46 +08:00
parent 97a504c6d2
commit 7b9b80be8d
18 changed files with 318 additions and 164 deletions
@@ -9,7 +9,6 @@ Component({
type: Object,
value: {},
observer(newVal) {
console.log("observerobserverobserverobserver")
// console.log(newVal)
this.setData({
renderDom: parseText(newVal),
@@ -96,7 +96,8 @@ Component({
ChangYongYu: [],
dialog_visible: false,
dialog_message: "在线开处方需先进行多点执业认证",
message_rounds: 0
message_rounds: 0,
networkstatus: "wifi"
},
lifetimes: {
@@ -132,6 +133,27 @@ Component({
text: '按住说话',
});
});
let _this = this
wx.onNetworkStatusChange(function (res) {
// console.log("onNetworkStatusChange from wenzhen: ")
// console.log(res.isConnected)
// console.log(res.networkType)
// wx.showToast({
// title: '网络类型:'+res.networkType,
// })
_this.setData({
networkstatus: res.networkType
})
})
console.log("pageLifetimes show")
wx.getNetworkType({
success (res) {
const networkType = res.networkType
_this.setData({
networkstatus: networkType
})
}
})
},
},
@@ -139,7 +161,7 @@ Component({
show(){
//获得常用语
let words = wx.getStorageSync('words');
console.log("words from chat: ", words);
// console.log("words from chat: ", words);
if(words){
this.setData({
message: words,
@@ -147,6 +169,18 @@ Component({
})
wx.setStorageSync('words', "");
}
console.log("pageLifetimes show")
let _this = this
wx.getNetworkType({
success (res) {
const networkType = res.networkType
_this.setData({
networkstatus: networkType
})
}
})
}
},
@@ -323,13 +357,23 @@ Component({
// 发送图片消息
handleSendImageMessage(file) {
let networkstatus = this.data.networkstatus
console.log("networkstatus: ", networkstatus)
if(networkstatus === 'none'){
wx.showToast({
title: '请检查您的网络',
icon: 'error'
})
return
}
let _this = this;
let conversationID = this.data.conversation.conversationID
let promise = wx.$TUIKit.getConversationProfile(conversationID);
promise.then(function(imResponse) {
console.log("getConversationProfile 正在执行")
// console.log("getConversationProfile 正在执行")
// 获取成功
console.log(imResponse.data.conversation); // 会话资料
// console.log(imResponse.data.conversation); // 会话资料
_this.setData({
conversation: imResponse.data.conversation
})
@@ -340,7 +384,7 @@ Component({
Promise.all([promise]).then(res => {
// 获取最后一条消息
let last_message = this.data.conversation.lastMessage;
console.log("last_message: ", last_message);
// console.log("last_message: ", last_message);
let cloudCustomData = "";
let cloudCustomDataJson = "";
if(last_message.cloudCustomData){
@@ -412,7 +456,7 @@ Component({
},
handleCommonFunctions(e) {
console.log("handleCommonFunctions: ", e)
// console.log("handleCommonFunctions: ", e)
switch (e.target.dataset.key) {
case '0':
this.setData({
@@ -434,11 +478,11 @@ Component({
break;
case '11'://在线开方
let _this = this;
console.log("开始订阅消息");
// console.log("开始订阅消息");
wx.requestSubscribeMessage({
tmplIds: ['kUy70xHlr7ADo4aIHiictM4Te7MSec3E5kHsYvFQu40'],
success (res) {
console.log(res);
// console.log(res);
let order_inquiry_id = _this.data.order_inquiry_id
api.getDoctorPrescriptionCheck({order_inquiry_id: order_inquiry_id}).then(response => {
let status = response.data.status
@@ -604,6 +648,17 @@ Component({
},
sendTextMessage(msg, flag) {
let networkstatus = this.data.networkstatus
console.log("networkstatus: ", networkstatus)
if(networkstatus === 'none'){
wx.showToast({
title: '请检查您的网络',
icon: 'error'
})
return
}
wx.aegis.reportEvent({
name: 'messageType',
ext1: 'messageType-text',
@@ -614,9 +669,9 @@ Component({
let conversationID = this.data.conversation.conversationID
let promise = wx.$TUIKit.getConversationProfile(conversationID);
promise.then(function(imResponse) {
console.log("getConversationProfile 正在执行")
// console.log("getConversationProfile 正在执行")
// 获取成功
console.log(imResponse.data.conversation); // 会话资料
// console.log(imResponse.data.conversation); // 会话资料
_this.setData({
conversation: imResponse.data.conversation
})
@@ -625,10 +680,10 @@ Component({
});
Promise.all([promise]).then(res => {
console.log("getConversationProfile 执行完毕")
// console.log("getConversationProfile 执行完毕")
//获取最后一条消息
let last_message = this.data.conversation.lastMessage;
console.log("last_message: ", last_message);
// console.log("last_message: ", last_message);
let cloudCustomData = "";
let cloudCustomDataJson = "";
if(last_message.cloudCustomData){
@@ -659,8 +714,8 @@ Component({
patient_family_data: patient_family_data
});
console.log("mycloudCustomData: ", mycloudCustomData);
console.log("text: ", text);
// console.log("mycloudCustomData: ", mycloudCustomData);
// console.log("text: ", text);
const message = wx.$TUIKit.createTextMessage({
to,
conversationType: this.data.conversation.type,
@@ -850,6 +905,15 @@ Component({
},
$sendTIMMessage(message) {
console.log("$sendTIMMessage: ",message)
let networkstatus = this.data.networkstatus
if(networkstatus === 'none'){
wx.showToast({
title: '请检查您的网络',
icon: 'error'
})
return
}
this.triggerEvent('sendMessage', {
message,
});
@@ -857,7 +921,14 @@ Component({
offlinePushInfo: {
disablePush: true,
},
}).then(() => {
}).then((res) => {
console.log("sendMessage:", res)
if(res.code === 0){
this.triggerEvent('refreshMessageStatus', {
message,
});
}
const firstSendMessage = wx.getStorageSync('isFirstSendMessage');
if (firstSendMessage) {
wx.aegis.reportEvent({
@@ -140,22 +140,23 @@ Component({
this.setData({
list_first_loading: true
})
console.log("showshowshowshowshowshowshow")
// console.log("showshowshowshowshowshowshow")
},
hide(){
this.setData({
list_first_loading: false
})
console.log("hidehidehidehidehidehidehidehidehidehidehide")
// console.log("hidehidehidehidehidehidehidehidehidehidehide")
}
},
methods: {
// 刷新消息列表
refresh() {
console.log("refresh.......")
// console.log("refresh.......")
this.setData({
autoToButtom: false
autoToButtom: false,
list_first_loading: true
})
if (this.data.isCompleted) {
this.setData({
@@ -171,9 +172,13 @@ Component({
});
}, 2000);
},
pcrefresh(){
console.log("pcrefresh")
wx.startPullDownRefresh()
},
// 获取消息列表
getMessageList(conversation) {
console.log("getMessageListgetMessageListgetMessageList")
// console.log("getMessageListgetMessageListgetMessageList")
if (!this.data.isCompleted) {
wx.$TUIKit.getMessageList({
conversationID: conversation.conversationID,
@@ -227,7 +232,8 @@ Component({
}
},
refreshMessageRounds(message){
console.log("messageList refreshMessageRounds message: ", message);
try {
// console.log("messageList refreshMessageRounds message: ", message);
let cloudCustomData = "";
let cloudCustomDataJson = "";
if(message.cloudCustomData){
@@ -243,7 +249,7 @@ Component({
if(payloadData){
let title = payloadData.title
//问诊已开始,重置message_rounds = 0
if(title.indexOf("问诊已开始") > -1){
if(title && title.indexOf("问诊已开始") > -1){
this.setData({
message_rounds: 0
})
@@ -256,10 +262,10 @@ Component({
}
let now_message_rounds = this.data.message_rounds
console.log("now_message_rounds: ", now_message_rounds)
// console.log("now_message_rounds: ", now_message_rounds)
if(cloudCustomDataJson){
let message_rounds = cloudCustomDataJson.message_rounds;
console.log("message_rounds: ", message_rounds)
// console.log("message_rounds: ", message_rounds)
if(message_rounds > now_message_rounds){
this.setData({
message_rounds: message_rounds
@@ -269,6 +275,10 @@ Component({
this.triggerEvent('refreshMessageRounds', myEventOption)
}
}
} catch (error) {
console.error(error)
}
},
checkShowAvatar(message, refreshBaseInfo){
// console.log("checkShowAvatar ");
@@ -294,7 +304,7 @@ Component({
},
// 历史消息渲染
$handleMessageRender(messageList, currentMessageList) {
console.log("handleMessageRenderhandleMessageRenderhandleMessageRender");
// console.log("handleMessageRenderhandleMessageRenderhandleMessageRender");
// this.showHistoryMessageTime(currentMessageList);
if (messageList.length > 0) {
if (this.data.conversation.type === '@TIM#SYSTEM') {
@@ -311,7 +321,7 @@ Component({
},
// 系统消息去重
filterRepateSystemMessage(messageList) {
console.log("filterRepateSystemMessage")
// console.log("filterRepateSystemMessage")
const noRepateMessage = [];
for (let index = 0; index < messageList.length; index++) {
if (!noRepateMessage.some(item => item && item.ID === messageList[index].ID)) {
@@ -342,7 +352,7 @@ Component({
$onMessageReceived(value) {
let autoToButtom = this.data.autoToButtom;
console.log("autoToButtom:", autoToButtom)
// console.log("autoToButtom:", autoToButtom)
const message = value.data[0];
//更新会话数
this.refreshMessageRounds(message)
@@ -355,8 +365,8 @@ Component({
wx.$TUIKit.setMessageRead({ conversationID: this.data.conversation.conversationID }).then(() => {
logger.log('| MessageList | setMessageRead | ok');
});
console.log('| MessageList | setMessageRead | ok');
console.log('message cloudCustomData', message.cloudCustomData);
// console.log('| MessageList | setMessageRead | ok');
// console.log('message cloudCustomData', message.cloudCustomData);
const { BUSINESS_ID_TEXT, MESSAGE_TYPE_TEXT } = constant;
// this.messageTimeForShow(message);
@@ -430,11 +440,11 @@ Component({
}
let jumpAim = `ID-${this.filterSystemMessageID(this.data.messageList[this.data.messageList.length - 1].ID)}`;
console.log("jumpAim:", jumpAim);
// console.log("jumpAim:", jumpAim);
console.log("message.from: ", message.from)
console.log("conversation: ", this.data.conversation)
console.log("conversation: ", this.data.conversation.lastMessage.from)
// console.log("message.from: ", message.from)
// console.log("conversation: ", this.data.conversation)
// console.log("conversation: ", this.data.conversation.lastMessage.from)
if(autoToButtom && message.conversationID === this.data.conversation.conversationID){
this.setData({
jumpAim: jumpAim
@@ -445,8 +455,8 @@ Component({
},
// 自己的消息上屏
updateMessageList(message) {
console.log("自己的消息上屏 updateMessageList: ", message);
console.log(message);
// console.log("自己的消息上屏 updateMessageList: ", message);
// console.log(message);
//自己的消息有头像
if(!this.checkShowAvatar(message, false)){
message.no_avatar = true;
@@ -474,7 +484,7 @@ Component({
this.data.messageList.push(message);
}
} else {
console.log(message)
// console.log(message)
this.data.messageList.push(message);
}
this.setData({
@@ -487,6 +497,16 @@ Component({
});
});
},
refreshMessageStatus(message){
console.log("MessageList refreshMessageStatus", message)
this.setData({
messageList: this.data.messageList,
}, () => {
this.setData({
messageList: this.data.messageList,
});
});
},
// 兼容 scrollView
filterSystemMessageID(messageID) {
const index = messageID.indexOf('@TIM#');
@@ -506,7 +526,7 @@ Component({
if (this.data.messageList[index].status === 'success') {
const { index } = e.currentTarget.dataset;
let message = this.data.messageList[index];
console.log(message)
// console.log(message)
if(message.type === 'TIMCustomElem'){
return
}
@@ -521,7 +541,7 @@ Component({
},
// 更新 messagelist
updateMessageByID(deleteMessageID) {
console.log("updateMessageByIDupdateMessageByIDupdateMessageByID")
// console.log("updateMessageByIDupdateMessageByIDupdateMessageByID")
const { messageList } = this.data;
const deleteMessageArr = messageList.filter(item => item.ID === deleteMessageID);
this.setData({
@@ -624,7 +644,7 @@ Component({
},
// 消息跳转到最新
handleJumpNewMessage() {
console.log("handleJumpNewMessage")
// console.log("handleJumpNewMessage")
this.setData({
jumpAim: `ID-${this.filterSystemMessageID(this.data.messageList[this.data.messageList.length - 1].ID)}`,
showDownJump: false,
@@ -633,7 +653,7 @@ Component({
},
// 消息跳转到最近未读
handleJumpUnreadMessage() {
console.log("handleJumpUnreadMessage")
// console.log("handleJumpUnreadMessage")
if (this.data.unreadCount > 15) {
this.getMessageList(this.data.conversation);
this.setData({
@@ -650,11 +670,11 @@ Component({
},
//myscroll 自定义滑动事件
myscroll(e){
console.log(e.detail.deltaY,e.detail.scrollTop)
// console.log(e.detail.deltaY,e.detail.scrollTop)
},
// 滑动到最底部置跳转事件为false
scrollHandler() {
console.log("触底了")
// console.log("触底了")
this.setData({
jumpAim: `ID-${this.filterSystemMessageID(this.data.messageList[this.data.messageList.length - 1].ID)}`,
showDownJump: false,
@@ -667,14 +687,14 @@ Component({
},
// 展示消息时间
messageTimeForShow(message) {
console.log("messageTimeForShow")
// console.log("messageTimeForShow")
// const interval = 5 * 60 * 1000;
const interval = 5 * 60;
const nowTime = Math.floor(message.time / 10) * 10 * 1000;
console.log("nowTime: ", nowTime)
// console.log("nowTime: ", nowTime)
if (this.data.messageList.length > 0) {
const lastTime = this.data.messageList.slice(-1)[0].time * 1000;
console.log("nowTime - lastTime=", (nowTime - lastTime))
// console.log("nowTime - lastTime=", (nowTime - lastTime))
if (nowTime - lastTime > interval) {
Object.assign(message, {
isShowTime: true,
@@ -683,7 +703,7 @@ Component({
let messageTime = this.cachMessageTime(nowTime);
message.messageTime = messageTime[0];
message.showMessageTime = messageTime[1];
console.log("dayjs(nowTime): ", dayjs(nowTime))
// console.log("dayjs(nowTime): ", dayjs(nowTime))
this.setData({
messageTime: this.cachMessageTime(nowTime)[0],
showMessageTime: true,
@@ -13,6 +13,7 @@
"FileMessage": "../MessageElements/FileMessage/index",
"MergerMessage": "../MessageElements/MergerMessage/index",
"RevokeMessage": "../MessageElements/RevokeMessage/index",
"van-loading": "@vant/weapp/loading/index"
"van-loading": "@vant/weapp/loading/index",
"van-icon": "@vant/weapp/icon/index"
}
}
@@ -2,8 +2,8 @@
<scroll-view class="message-list-container" scroll-y="true" scroll-into-view="{{jumpAim}}" refresher-enabled="{{true}}" bindrefresherrefresh="refresh" refresher-triggered="{{triggered}}" lower-threshold="200" bindscrolltolower="scrollHandler" bindscrolltoupper="refresh" upper-threshold="100">
<view class="no-message" wx:if="{{isCompleted}}">没有更多啦</view>
<view style="width: 100%;text-align: center;position: absolute;top: 50%;">
<van-loading size="24px" wx:if="{{list_first_loading}}">加载中...</van-loading>
<view style="width: 100%;text-align: center;position: absolute;top: 20rpx;">
<van-loading size="24px" wx:if="{{list_first_loading}}" vertical color="#1989fa">加载中...</van-loading>
</view>
<view class="t-message" wx:if="{{conversation.type !== '@TIM#SYSTEM'}}" wx:for="{{messageList}}" wx:key="index" data-index ='{{index}}'>
<view class="time-pop-mask" data-value="{{item.time}}" wx:if="{{item.showMessageTime}}">
@@ -40,9 +40,14 @@
<TipMessage wx:if="{{item.type === 'TIMGroupTipElem'}}" message="{{item}}"/>
<view wx:if="{{item.type !== 'TIMGroupTipElem'}}" class="{{item.flow === 'out' ? 't-self-message':'t-recieve-message'}}" >
<image class="t-message-avatar" wx:if="{{item.flow === 'in' && !item.no_avatar }}" src="{{item.avatar || 'https://gdxz-hospital.oss-cn-chengdu.aliyuncs.com/applet/doctor/static/images/default_photo.png'}}" data-value="{{item}}" bindtap="getMemberProfile" />
<view class="read-receipts" wx:if="{{conversation.type === 'C2C' && item.flow==='out' }}">
<!-- <view wx:if="{{item.isPeerRead}}" >已读</view>
<view wx:else>未读</view> -->
<!-- <view class="read-receipts" wx:if="{{conversation.type === 'C2C' && item.flow==='out' }}">
<view wx:if="{{item.isPeerRead}}" >已读</view>
<view wx:else>未读</view>
</view> -->
<view class="message_send_status" wx:if="{{conversation.type === 'C2C' && item.flow==='out' }}">
<van-loading type="spinner" wx:if="{{item.status == 'unSend'}}" size="24px" />
<van-icon name="fail" color="red" wx:if="{{item.status == 'fail'}}" />
<!-- <van-icon name="success" color="green" wx:if="{{item.status == 'success'}}" /> -->
</view>
<view wx:if="{{item.flow === 'out' && item.ID === errorMessageID || item.status === 'fail'}}" class="t-message-error-box">
<image class="t-message-error" wx:if="{{showMessageError}}" src='../../../../static/images/tuikit-msg-error.png' bindtap="ResendMessage" />
@@ -62,6 +62,13 @@
color: #6e7981;
margin-right: 10px
}
.message_send_status {
line-height: 42px;
height: 42px;
font-size: 12px;
color: #6e7981;
margin-right: 10px
}
.no-message {
text-align: center;
position: fixed;
+20 -16
View File
@@ -81,7 +81,7 @@ Component({
}
this.getNavbarHeight()
wx.onKeyboardHeightChange(res => {
console.log("键盘高度:", res.height)
// console.log("键盘高度:", res.height)
this.setData({
keysboards_height: res.height
})
@@ -98,7 +98,7 @@ Component({
// console.log("pages.length:", pages.length)
// console.log("pages:", pages[0])
if(pages.length == 1){
console.log("navbarData.showCapsule");
// console.log("navbarData.showCapsule");
this.setData({
"navbarData.showCapsule": 3
})
@@ -149,9 +149,9 @@ Component({
*/
methods: {
refreshMessageRounds(e){
console.log("TUIchat refreshMessageRounds", e)
// console.log("TUIchat refreshMessageRounds", e)
let message_rounds = e.detail.message_rounds
console.log("TUIchat refreshMessageRounds message_rounds", message_rounds)
// console.log("TUIchat refreshMessageRounds message_rounds", message_rounds)
this.setData({
message_rounds: message_rounds
})
@@ -161,18 +161,18 @@ Component({
if (wx.getMenuButtonBoundingClientRect) {
rect = wx.getMenuButtonBoundingClientRect();
}
console.log("rect: ", rect)
// console.log("rect: ", rect)
wx.getSystemInfo({
success: (res) => {
const { statusBarHeight } = wx.getSystemInfoSync();
console.log("statusBarHeight: ", statusBarHeight);
console.log("${rect.height}px: ", `${rect.height}`);
// console.log("statusBarHeight: ", statusBarHeight);
// console.log("${rect.height}px: ", `${rect.height}`);
let height = Number.parseInt(statusBarHeight) + Number.parseInt(`${rect.height}`) + 50;
if(addHeight){
height = height + addHeight
}
let keysboards_height = this.data.keysboards_height
console.log("getNavbarHeight 键盘高度:", keysboards_height)
// console.log("getNavbarHeight 键盘高度:", keysboards_height)
if(keysboards_height){
height = height + keysboards_height
}
@@ -198,7 +198,7 @@ Component({
},
confirmDialog(){
api.putDoctorInquiryFinish({order_inquiry_id: this.data.order_inquiry_id}).then(response => {
console.log(response);
// console.log(response);
this.getInquiryMessageBasic();
//调用子组件中的跳到最新消息
this.selectComponent('#MessageList').handleJumpNewMessage();
@@ -209,9 +209,9 @@ Component({
},
//获取问诊订单消息内页基础数据
getInquiryMessageBasic() {
console.log("order_inquiry_id: ", this.data.order_inquiry_id);
// console.log("order_inquiry_id: ", this.data.order_inquiry_id);
api.getInquiryMessageBasic({order_inquiry_id: this.data.order_inquiry_id}).then(response => {
console.log(response);
// console.log(response);
this.setData({
baseInfo: response.data,
})
@@ -260,11 +260,15 @@ Component({
this.selectComponent('#MessageList').updateMessageList(event.detail.message);
this.getNavbarHeight();
},
refreshMessageStatus(message) {
console.log("TUIchat refreshMessageStatus", message)
this.selectComponent('#MessageList').refreshMessageStatus(message);
},
showMessageErrorImage(event) {
this.selectComponent('#MessageList').sendMessageError(event);
},
triggerClose() {
console.log("message-list triggerClose")
// console.log("message-list triggerClose")
if(this.data.baseInfo.inquiry_status == 4){
this.selectComponent('#MessageInput').handleClose();
}
@@ -301,7 +305,7 @@ Component({
this.selectComponent('#MessageInput').onInputValueChange(event);
},
myhandleExtensions(e){
console.log("myhandleExtensionsmyhandleExtensions: ", e);
// console.log("myhandleExtensionsmyhandleExtensions: ", e);
wx.hideKeyboard()
let displayFlag = e.detail.displayFlag;
setTimeout(() => {
@@ -321,7 +325,7 @@ Component({
},
// 监听键盘,获取焦点时将输入框推到键盘上方
pullKeysBoards(event) {
console.log("pullKeysBoardspullKeysBoards")
// console.log("pullKeysBoardspullKeysBoards")
setNewInputStyle(event.detail.event.detail.height);
this.getNavbarHeight();
@@ -334,8 +338,8 @@ Component({
},
// 监听键盘,失去焦点时收起键盘
downKeysBoards(event) {
console.log("downKeysBoardsdownKeysBoards")
console.log(event)
// console.log("downKeysBoardsdownKeysBoards")
// console.log(event)
let value = event.detail.event.detail.value;
this.getNavbarHeight();
if(value){
+1
View File
@@ -36,6 +36,7 @@
<view class="input-area" style="{{input_area_style}}" wx:if="{{baseInfo.inquiry_status==4}}">
<view class="message-input" style="{{viewData.style}}" wx:if="{{showChat}}">
<MessageInput bind:myhandleExtensions="myhandleExtensions" id="MessageInput" inquiry_type="{{inquiry_type}}" baseInfo="{{baseInfo}}" order_inquiry_id="{{order_inquiry_id}}" conversation="{{conversation}}" hasCallKit="{{hasCallKit}}" bind:sendMessage="sendMessage" bind:downKeysBoards="downKeysBoards" bind:pullKeysBoards="pullKeysBoards" bind:showMessageErrorImage="showMessageErrorImage"
bind:refreshMessageStatus="refreshMessageStatus"
bind:handleCall="handleCall" message_rounds="{{message_rounds}}"></MessageInput>
</view>
</view>
File diff suppressed because one or more lines are too long