// TUIKit-WChat/Chat/index.js import logger from '../../utils/logger'; import constant from '../../utils/constant'; import { API } from './../../../utils/network/api' import { rpxTopx } from './../../../utils/util' const api = new API() // eslint-disable-next-line no-undef const app = getApp(); const inputStyle = ` --padding: 0px; `; let newInputStyle = ` --padding: 0px; position: absolute; `; const setNewInputStyle = (number) => { const height = number; newInputStyle = `--padding: ${height}px`; }; Component({ /** * 组件的属性列表 */ properties: { currentConversationID: { type: String, value: '', observer(currentConversationID) { this.setData({ conversationID: currentConversationID, }); }, }, order_inquiry_id: { type: String, value: '' }, inquiry_type: { type: String, value: '' }, unreadCount: { type: Number, value: '', observer(unreadCount) { this.setData({ unreadCount, }); }, }, hasCallKit: { type: Boolean, value: false, observer(hasCallKit) { this.setData({ hasCallKit, }); }, }, baseInfo: { type: Object, value: {}, observer(baseInfo) { this.setData({ "navbarData.title": baseInfo.patient_family_name }); }, } }, lifetimes: { attached() { if (app?.globalData?.reportType === constant.OPERATING_ENVIRONMENT) { this.setData({ showTips: true, message_rounds: 0 }); } //console.log("000") this.getNavbarHeight() // let _this = this // wx.onKeyboardHeightChange(res => { // let kb_height = res.height // console.log("键盘高度:", kb_height) // _this.setData({ // kb_height: kb_height // }) // console.log("111") // _this.getNavbarHeight(); // }) }, ready() { //修改为组件传值 // this.getInquiryMessageBasic() // console.log("app.globalData.scene from TUIchat ready: ", app.globalData.scene); let pages = getCurrentPages(); // console.log("pages:", pages) // console.log("pages.length:", pages.length) // console.log("pages:", pages[0]) if(pages.length == 1){ // console.log("navbarData.showCapsule"); this.setData({ "navbarData.showCapsule": 3 }) } this.setData({ finsh_btn: false }) } }, /** * 组件的初始数据 */ data: { conversationName: '', conversation: {}, messageList: [], isShow: false, showImage: false, showChat: true, conversationID: '', config: { sdkAppID: '', userID: '', userSig: '', type: 1, tim: null, }, unreadCount: 0, hasCallKit: false, viewData: { style: inputStyle, }, input_area_style:"", KeyboardHeight: 0, showTips: false, showGroupTips: false, showAll: false, navbarData: { showCapsule: 2, //是否显示左上角图标 1表示显示 0表示不显示 title: '', //导航栏 中间的标题 }, navbar_height: 120, dialog_visible: false, finsh_btn: false, KeysBoardsStatus: "down", message_rounds: 0, keysboards_height: 0, kb_height: 0, change_kb: false }, /** * 组件的方法列表 */ methods: { refreshMessageRounds(e){ // console.log("TUIchat refreshMessageRounds", e) let message_rounds = e.detail.message_rounds // console.log("TUIchat refreshMessageRounds message_rounds:", message_rounds) this.setData({ message_rounds: message_rounds }) }, getNavbarHeight(addHeight){ try { //console.log("getNavbarHeight: ", new Date().getTime()) let rect = null; if (wx.getMenuButtonBoundingClientRect) { rect = wx.getMenuButtonBoundingClientRect(); } // console.log("rect: ", rect) wx.getSystemInfo({ success: (res) => { // const { statusBarHeight } = wx.getSystemInfoSync(); // console.log("statusBarHeight: ", statusBarHeight); // console.log("${rect.height}px: ", `${rect.height}`); let height = Number.parseInt(res.statusBarHeight) + Number.parseInt(`${rect.height}`); let KeysBoardsStatus = this.data.KeysBoardsStatus if(KeysBoardsStatus == 'pull'){ height = height + rpxTopx(35) }else{ height = height + rpxTopx(70) } if(addHeight > 0){ height = height + addHeight } let kb_height = Number.parseInt(this.data.kb_height) let textarea_height = Number.parseInt(this.data.textarea_height) //console.log("getNavbarHeight 键盘高度:", kb_height) if(kb_height > 0){ //console.log("height 1: ", height) height = height + kb_height //console.log("height 2: ", height) } if(textarea_height > 0){ //console.log("height 1: ", height) height = height + textarea_height //console.log("height 2: ", height) } this.setData({ navbar_height: height }) //console.log(444) }, fail: (err) => { console.error('navbar 获取系统信息失败', err); }, }); } catch (error) { console.error(error) } }, //结束问诊 putDoctorInquiryFinish() { this.setData({ dialog_visible: true }) wx.hideKeyboard() }, cancelDialog(){ this.setData({ dialog_visible: false }) }, confirmDialog(){ let finsh_btn = this.data.finsh_btn if(finsh_btn){ return } this.setData({ finsh_btn: true }) api.putDoctorInquiryFinish({order_inquiry_id: this.data.order_inquiry_id}).then(response => { // console.log(response); // this.getInquiryMessageBasic(); //调用子组件中的跳到最新消息 this.getNavbarHeight() this.selectComponent('#MessageList').handleJumpNewMessage(); }).catch(errors => { console.error(errors); this.setData({ finsh_btn: false }) }) this.setData({ dialog_visible: false }) }, //获取问诊订单消息内页基础数据 getInquiryMessageBasic() { // 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); this.setData({ baseInfo: response.data, }) if(response.data.inquiry_status > 4){ wx.hideKeyboard() this.getNavbarHeight() } }).catch(errors => {console.error(errors);}) }, init() { console.warn("TUIChat js: init", this.data.conversationID) wx.$TUIKit.setMessageRead({ conversationID: this.data.conversationID }).then(() => { logger.log('| TUI-chat | setMessageRead | ok'); }); wx.$TUIKit.getConversationProfile(this.data.conversationID).then((res) => { const { conversation } = res.data; this.setData({ conversationName: this.getConversationName(conversation), conversation, isShow: conversation.type === wx.$TUIKitTIM.TYPES.CONV_GROUP, }); if (conversation.type !== wx.$TUIKitTIM.TYPES.CONV_GROUP) return; if (!this.data.showTips) { this.setData({ showGroupTips: true, }); } else { this.setData({ showAll: true, }); } }); }, getConversationName(conversation) { if (conversation.type === '@TIM#SYSTEM') { this.setData({ showChat: false, }); return '系统通知'; } if (conversation.type === wx.$TUIKitTIM.TYPES.CONV_C2C) { return conversation.remark || conversation.userProfile.nick || conversation.userProfile.userID; } if (conversation.type === wx.$TUIKitTIM.TYPES.CONV_GROUP) { return conversation.groupProfile.name || conversation.groupProfile.groupID; } }, sendMessage(event) { // 将自己发送的消息写进消息列表里面 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") if(this.data.baseInfo.inquiry_status == 4){ this.selectComponent('#MessageInput').handleClose(); } wx.hideKeyboard() this.getNavbarHeight() }, handleCall(event) { if (event.detail.conversationType === wx.$TUIKitTIM.TYPES.CONV_GROUP) { this.selectComponent('#TUIGroup').callShowMoreMember(event); } else { this.triggerEvent('handleCall', event.detail); } }, groupCall(event) { const { selectedUserIDList, type, groupID } = event.detail; const userIDList = selectedUserIDList; this.triggerEvent('handleCall', { userIDList, type, groupID }); }, goBack() { this.triggerEvent('showConversationList'); wx.$TUIKit.setMessageRead({ conversationID: this.data.conversationID, }).then(() => { wx.navigateBack(); }); }, showConversationList() { this.triggerEvent('showConversationList'); }, changeMemberCount(event) { this.selectComponent('#TUIGroup').updateMemberCount(event.detail.groupOptionsNumber); }, resendMessage(event) { this.selectComponent('#MessageInput').onInputValueChange(event); }, myhandleExtensions(e){ //console.log("myhandleExtensionsmyhandleExtensions: ", e); wx.hideKeyboard() let displayFlag = e.detail.displayFlag; // setTimeout(() => { if(displayFlag){ this.setData({ input_area_style: "position: absolute; bottom: 20px;" }) this.getNavbarHeight(100); this.selectComponent('#MessageList').handleJumpNewMessage(); }else{ this.setData({ input_area_style: "", }) this.getNavbarHeight(); } // }, 100); }, // 监听键盘,获取焦点时将输入框推到键盘上方 pullKeysBoards(event) { //console.log("pullKeysBoardspullKeysBoards") let value = event.detail.event.detail.value; let height = event.detail.event.detail.height; //console.log("pullKeysBoards value: ", height) setNewInputStyle(height); if(height){ this.setData({ kb_height: height }) } //console.log("333") this.setData({ 'viewData.style': newInputStyle, // input_area_style: "position: absolute; bottom: 52rpx;", KeysBoardsStatus: "pull" }); this.getNavbarHeight(); this.selectComponent('#MessageList').handleJumpNewMessage(); }, // 监听键盘,失去焦点时收起键盘 downKeysBoards(event) { //console.log("downKeysBoardsdownKeysBoards") // //console.log(event) let value = event.detail.event.detail.value; //console.log("downKeysBoards value: ", value) if(value){ this.setData({ 'viewData.style': inputStyle, KeysBoardsStatus: "down", kb_height: 0 }); }else{ this.setData({ 'viewData.style': inputStyle, input_area_style: "", KeysBoardsStatus: "down", kb_height: 0 }); } //console.log("444") this.getNavbarHeight(); }, inputBindLinechange(event){ console.log(event) let lineCount = event.detail.event.detail.lineCount; let height = event.detail.event.detail.height; if(height > 100){ return } let lineHeight = height / lineCount; this.setData({ textarea_height: lineHeight * (lineCount - 1) }) this.getNavbarHeight(); }, typing(event) { const { STRING_TEXT, FEAT_NATIVE_CODE } = constant; if (this.data.conversation.type === wx.$TUIKitTIM.TYPES.CONV_C2C) { if (event.detail.typingMessage.typingStatus === FEAT_NATIVE_CODE.ISTYPING_STATUS && event.detail.typingMessage.actionParam === constant.TYPE_INPUT_STATUS_ING) { this.setData({ conversationName: STRING_TEXT.TYPETYPING, }); setTimeout(() => { this.setData({ conversationName: this.getConversationName(this.data.conversation), }); }, (1000 * 30)); } else if (event.detail.typingMessage.typingStatus === FEAT_NATIVE_CODE.NOTTYPING_STATUS && event.detail.typingMessage.actionParam === constant.TYPE_INPUT_STATUS_END) { this.setData({ conversationName: this.getConversationName(this.data.conversation), }); } } }, handleReport() { const url = '/pages/TUI-User-Center/webview/webview?url=https://cloud.tencent.com/apply/p/xc3oaubi98g'; wx.navigateTo({ url, }); }, }, });