...
|
...
|
@@ -4,12 +4,7 @@ |
|
|
<view class="imtopinfo">
|
|
|
<view class="flexJ">
|
|
|
<view class="flexA">
|
|
|
<image
|
|
|
:src="![null, undefined, ''].includes(detailData?.doctor?.avatar) ? proxy.$h.downFile(detailData?.doctor?.avatar) : '/static/images/mAvatar.png'"
|
|
|
@click="proxy.$h.previewImage(proxy.$h.downFile(detailData?.doctor?.avatar))"
|
|
|
class="imtopinfo-avatar"
|
|
|
mode="aspectFill"
|
|
|
/>
|
|
|
<image :src="![null, undefined, ''].includes(detailData?.doctor?.avatar) ? proxy.$h.downFile(detailData?.doctor?.avatar) : '/static/images/mAvatar.png'" class="imtopinfo-avatar" mode="aspectFill" />
|
|
|
<view class="imtopinfo-username">{{ detailData?.doctor?.nickname }}</view>
|
|
|
<template v-if="history === 'err'">
|
|
|
<u-count-down :time="countdownTime * 1000" format="HH:mm:ss" @finish="finishCountDownHandler"></u-count-down>
|
...
|
...
|
@@ -44,7 +39,7 @@ |
|
|
<view class="more-btn" v-if="conversation?.type === 'GROUP'" @click="handleGetProfile">更多</view>
|
|
|
<!-- <view class="more-btn" style="margin-top: 180rpx" @click="handleGetProfile">更多</view> -->
|
|
|
<view class="TUIChat-container">
|
|
|
<scroll-view class="TUIChat-main" scroll-y="true" :scroll-with-animation="true" :refresher-triggered="triggered" :refresher-enabled="true" @refresherrefresh="handleRefresher" :scroll-top="scrollTop">
|
|
|
<scroll-view class="TUIChat-main" scroll-y="true" :refresher-triggered="triggered" :refresher-enabled="true" @refresherrefresh="handleRefresher" :scroll-top="scrollTop">
|
|
|
<view class="TUI-message-list" @touchstart="handleTouchStart" @click="dialogID = ''">
|
|
|
<!-- 用户信息卡片 -->
|
|
|
<!-- <UserInfoCard :detailData="detailData" /> -->
|
...
|
...
|
@@ -71,16 +66,12 @@ |
|
|
<MessageVideo :id="item.flow + '-' + item.ID" v-if="item.type === types.MSG_VIDEO" :data="handleVideoMessageShowContext(item)" :messageData="item" @longpress="handleItem($event, item)" />
|
|
|
<MessageAudio :id="item.flow + '-' + item.ID" v-if="item.type === types.MSG_AUDIO" :data="handleAudioMessageShowContext(item)" :messageData="item" @longpress="handleItem($event, item)" />
|
|
|
<MessageFace :id="item.flow + '-' + item.ID" v-if="item.type === types.MSG_FACE" :data="handleFaceMessageShowContext(item)" :messageData="item" @longpress="handleItem($event, item)" />
|
|
|
<!-- <MessageCustom :id="item.flow + '-' + item.ID" v-if="item.type === types.MSG_CUSTOM" :data="handleCustomMessageShowContext(item)" :messageData="item" @longpress="handleItem($event, item)" /> -->
|
|
|
</MessageBubble>
|
|
|
<MessageRevoked v-if="item.isRevoked" :data="item" @edit="handleEdit(item)" />
|
|
|
</view>
|
|
|
</template>
|
|
|
<template v-else>
|
|
|
<view v-for="(item, index) in historyList" :key="item.ID" :id="'view' + item.ID">
|
|
|
<!-- <view class="time-container" v-if="item.showTime">{{ caculateTimeago(item.time * 1000) }}</view> -->
|
|
|
<!-- <MessageTip v-if="!item.isRevoked && item.type === types.MSG_GRP_TIP" :data="handleTipMessageShowContext(item)" /> -->
|
|
|
<!-- <MessageTip v-if="item.type === types.MSG_GRP_SYS_NOTICE" /> -->
|
|
|
<MessageBubble :data="item">
|
|
|
<MessageText :id="item.flow + '-' + item.ID" v-if="item.chatType === 1" :data="item" :messageData="item" @longpress="handleItem($event, item)"></MessageText>
|
|
|
<MessageImage :id="item.flow + '-' + item.ID" v-if="item.chatType === 2" :data="item.payload" :messageData="item" @longpress="handleItem($event, item)"></MessageImage>
|
...
|
...
|
@@ -100,7 +91,7 @@ |
|
|
<view @click="sendPrescriptionState = true" v-if="[null, undefined, ''].includes(detailData?.drugId)">发送处方单</view>
|
|
|
<view @click="showPrescriptionDetailState = true">查看处方单</view>
|
|
|
</view>
|
|
|
<TUIChatInput :text="text" :conversationData="conversation" :detailData="detailData" @scrollbottomHandler="scrollbottomHandler"></TUIChatInput>
|
|
|
<TUIChatInput :text="text" :conversationData="conversation" :detailData="detailData" @scrollbottomHandler="scrollbottomHandler" @sendMessagehandler="handleSendTextMessage"></TUIChatInput>
|
|
|
</template>
|
|
|
</view>
|
|
|
<!-- <view class="TUIChat" v-if="conversationType === 'system'">
|
...
|
...
|
@@ -156,7 +147,7 @@ |
|
|
<script lang="ts">
|
|
|
import { defineComponent, reactive, toRefs, computed, nextTick, watch, onMounted, shallowRef, getCurrentInstance, ComponentPublicInstance, ref, onUnmounted, onBeforeUnmount } from 'vue'
|
|
|
import { onReady, onLoad, onNavigationBarButtonTap, onUnload } from '@dcloudio/uni-app'
|
|
|
import { updateSend_prescription_form, getConsultation_information_detail, getEndInformation, getReceive_diagnosis, getOrder_chat, getPrescription_detail_information } from '@/api'
|
|
|
import { getConsultation_information_detail, getEndInformation, getReceive_diagnosis, getOrder_chat, getPrescription_detail_information } from '@/api'
|
|
|
// 消息元素组件
|
|
|
import MessageBubble from './components/message-elements/message-bubble.vue'
|
|
|
import MessageText from './components/message-elements/message-text.vue'
|
...
|
...
|
@@ -171,7 +162,6 @@ import MessageRevoked from './components/message-elements/message-revoked.vue' |
|
|
import MessageSystem from './components/message-elements/message-system.vue'
|
|
|
// 底部消息发送组件
|
|
|
import TUIChatInput from './components/message-input'
|
|
|
import UserInfoCard from '@/components/UserInfoCard'
|
|
|
import ConversationEnd from '@/components/ConversationEnd'
|
|
|
import SendPrescription from '@/components/SendPrescription'
|
|
|
import ViewPrescription from '@/components/ViewPrescription'
|
...
|
...
|
@@ -180,7 +170,6 @@ import store from '../../TUICore/store' |
|
|
import type { DiaLogEventType, Consultation_information_detailType, PrescriptionDetailType } from '../../../types'
|
|
|
import { emojiMap } from '../../utils/emojiMap'
|
|
|
import {
|
|
|
handleAvatar,
|
|
|
handleTextMessageShowContext,
|
|
|
handleImageMessageShowContext,
|
|
|
handleVideoMessageShowContext,
|
...
|
...
|
@@ -194,7 +183,6 @@ import { |
|
|
} from '../../utils/untis'
|
|
|
|
|
|
import { caculateTimeago } from '../../utils/date'
|
|
|
import Vuex from 'vuex'
|
|
|
import { TUIChatServer } from '../../TUICore/server'
|
|
|
|
|
|
export default defineComponent({
|
...
|
...
|
@@ -212,7 +200,6 @@ export default defineComponent({ |
|
|
MessageSystem,
|
|
|
TUIChatInput,
|
|
|
MessageOperate,
|
|
|
UserInfoCard,
|
|
|
ConversationEnd,
|
|
|
SendPrescription,
|
|
|
ViewPrescription,
|
...
|
...
|
@@ -290,8 +277,6 @@ export default defineComponent({ |
|
|
onLoad(async (options: DiaLogEventType) => {
|
|
|
data.history = uni.getStorageSync('history')
|
|
|
data.imUserId = uni.getStorageSync('ImUserId')
|
|
|
console.log(uni.getStorageSync('history'), '聊天界面onload获取是否为历史记录')
|
|
|
console.log(options, '聊天界面onload参数')
|
|
|
data.Event = options
|
|
|
getDetailHandler()
|
|
|
|
...
|
...
|
@@ -308,15 +293,7 @@ export default defineComponent({ |
|
|
})
|
|
|
|
|
|
onBeforeUnmount(() => {
|
|
|
console.log(uni.$TUIKit, 'im方法')
|
|
|
uni.$TUIKit
|
|
|
.logout()
|
|
|
.then(res => {
|
|
|
console.log(res, '成功')
|
|
|
})
|
|
|
.catch(err => {
|
|
|
console.log(err, '错误')
|
|
|
})
|
|
|
uni.$TUIKit.logout()
|
|
|
})
|
|
|
onUnmounted(() => {})
|
|
|
onUnload(() => {
|
...
|
...
|
@@ -335,8 +312,8 @@ export default defineComponent({ |
|
|
nextTick(() => {
|
|
|
// const newLastMessage = newVal[newVal.length - 1]
|
|
|
// const oldLastMessage = oldVal ? oldVal[oldVal.length - 1] : {}
|
|
|
data.oldMessageTime = messages.value[0].time
|
|
|
handleShowTime()
|
|
|
// data.oldMessageTime = messages.value[0].time
|
|
|
// handleShowTime()
|
|
|
// if (oldVal && newLastMessage.ID !== oldLastMessage.ID) {
|
|
|
// handleScrollBottom() // 非从conversationList 首次进入
|
|
|
// }
|
...
|
...
|
@@ -365,7 +342,7 @@ export default defineComponent({ |
|
|
uni.addInterceptor('navigateBack', {
|
|
|
success() {
|
|
|
// 小程序无效 官网链接:https://uniapp.dcloud.io/api/interceptor.html
|
|
|
uni.$TUIKit.TUIConversationServer.setMessageRead(data.conversation.conversationID)
|
|
|
// uni.$TUIKit.TUIConversationServer.setMessageRead(data.conversation.conversationID)
|
|
|
}
|
|
|
})
|
|
|
})
|
...
|
...
|
@@ -383,8 +360,8 @@ export default defineComponent({ |
|
|
|
|
|
const scrollbottomHandler = () => {
|
|
|
setTimeout(() => {
|
|
|
data.scrollTop = 1000000
|
|
|
}, 800)
|
|
|
data.scrollTop = Number(String(new Date().getTime()).slice(-5))
|
|
|
}, 500)
|
|
|
}
|
|
|
|
|
|
const imageFormatMap = new Map([
|
...
|
...
|
@@ -400,7 +377,7 @@ export default defineComponent({ |
|
|
|
|
|
if (result?.orderState !== 30) proxy.$h.timeCallBack('对方已结束问诊即将返回', 2000)
|
|
|
}
|
|
|
}, 3000)
|
|
|
}, 5000)
|
|
|
|
|
|
const getDetailHandler = async () => {
|
|
|
const { result: timeData }: { result: { countdownTime: number } } = await getReceive_diagnosis({ id: data.Event.orderId })
|
...
|
...
|
@@ -473,9 +450,6 @@ export default defineComponent({ |
|
|
|
|
|
if (result.records.length) {
|
|
|
result.records.map((_: any) => data.historyList.unshift(_))
|
|
|
|
|
|
console.log(data.historyList, '历史记录')
|
|
|
|
|
|
return
|
|
|
}
|
|
|
uni.$u.toast('没有更多数据了')
|
...
|
...
|
@@ -495,7 +469,6 @@ export default defineComponent({ |
|
|
content: '您确定要结束问诊吗',
|
|
|
success: async function (res: any) {
|
|
|
if (res.confirm) {
|
|
|
console.log('用户点击确定')
|
|
|
try {
|
|
|
await getEndInformation({ id: data.Event.orderId })
|
|
|
proxy.$h.backUrl(1)
|
...
|
...
|
@@ -566,7 +539,6 @@ export default defineComponent({ |
|
|
})
|
|
|
}
|
|
|
} else if (data.history === 'success') {
|
|
|
console.log('下拉刷洗执行了')
|
|
|
getOrder_chatHandler(false)
|
|
|
}
|
|
|
setTimeout(() => {
|
...
|
...
|
@@ -582,10 +554,10 @@ export default defineComponent({ |
|
|
|
|
|
// 发送消息
|
|
|
const handleSendTextMessage = (e: any) => {
|
|
|
if (data.text.trimEnd()) {
|
|
|
TUIServer.sendTextMessage(JSON.parse(JSON.stringify(data.text)))
|
|
|
if (e.trimEnd()) {
|
|
|
TUIServer.sendTextMessage(JSON.parse(JSON.stringify(e)))
|
|
|
}
|
|
|
data.text = ' '
|
|
|
// data.text = ' '
|
|
|
}
|
|
|
// 右键消息,展示处理功能
|
|
|
const handleItem = (event: any, item: any) => {
|
...
|
...
|
|