|
@@ -4,12 +4,7 @@ |
|
@@ -4,12 +4,7 @@ |
4
|
<view class="imtopinfo">
|
4
|
<view class="imtopinfo">
|
5
|
<view class="flexJ">
|
5
|
<view class="flexJ">
|
6
|
<view class="flexA">
|
6
|
<view class="flexA">
|
7
|
- <image
|
|
|
8
|
- :src="![null, undefined, ''].includes(detailData?.doctor?.avatar) ? proxy.$h.downFile(detailData?.doctor?.avatar) : '/static/images/mAvatar.png'"
|
|
|
9
|
- @click="proxy.$h.previewImage(proxy.$h.downFile(detailData?.doctor?.avatar))"
|
|
|
10
|
- class="imtopinfo-avatar"
|
|
|
11
|
- mode="aspectFill"
|
|
|
12
|
- />
|
7
|
+ <image :src="![null, undefined, ''].includes(detailData?.doctor?.avatar) ? proxy.$h.downFile(detailData?.doctor?.avatar) : '/static/images/mAvatar.png'" class="imtopinfo-avatar" mode="aspectFill" />
|
13
|
<view class="imtopinfo-username">{{ detailData?.doctor?.nickname }}</view>
|
8
|
<view class="imtopinfo-username">{{ detailData?.doctor?.nickname }}</view>
|
14
|
<template v-if="history === 'err'">
|
9
|
<template v-if="history === 'err'">
|
15
|
<u-count-down :time="countdownTime * 1000" format="HH:mm:ss" @finish="finishCountDownHandler"></u-count-down>
|
10
|
<u-count-down :time="countdownTime * 1000" format="HH:mm:ss" @finish="finishCountDownHandler"></u-count-down>
|
|
@@ -44,7 +39,7 @@ |
|
@@ -44,7 +39,7 @@ |
44
|
<view class="more-btn" v-if="conversation?.type === 'GROUP'" @click="handleGetProfile">更多</view>
|
39
|
<view class="more-btn" v-if="conversation?.type === 'GROUP'" @click="handleGetProfile">更多</view>
|
45
|
<!-- <view class="more-btn" style="margin-top: 180rpx" @click="handleGetProfile">更多</view> -->
|
40
|
<!-- <view class="more-btn" style="margin-top: 180rpx" @click="handleGetProfile">更多</view> -->
|
46
|
<view class="TUIChat-container">
|
41
|
<view class="TUIChat-container">
|
47
|
- <scroll-view class="TUIChat-main" scroll-y="true" :scroll-with-animation="true" :refresher-triggered="triggered" :refresher-enabled="true" @refresherrefresh="handleRefresher" :scroll-top="scrollTop">
|
42
|
+ <scroll-view class="TUIChat-main" scroll-y="true" :refresher-triggered="triggered" :refresher-enabled="true" @refresherrefresh="handleRefresher" :scroll-top="scrollTop">
|
48
|
<view class="TUI-message-list" @touchstart="handleTouchStart" @click="dialogID = ''">
|
43
|
<view class="TUI-message-list" @touchstart="handleTouchStart" @click="dialogID = ''">
|
49
|
<!-- 用户信息卡片 -->
|
44
|
<!-- 用户信息卡片 -->
|
50
|
<!-- <UserInfoCard :detailData="detailData" /> -->
|
45
|
<!-- <UserInfoCard :detailData="detailData" /> -->
|
|
@@ -71,16 +66,12 @@ |
|
@@ -71,16 +66,12 @@ |
71
|
<MessageVideo :id="item.flow + '-' + item.ID" v-if="item.type === types.MSG_VIDEO" :data="handleVideoMessageShowContext(item)" :messageData="item" @longpress="handleItem($event, item)" />
|
66
|
<MessageVideo :id="item.flow + '-' + item.ID" v-if="item.type === types.MSG_VIDEO" :data="handleVideoMessageShowContext(item)" :messageData="item" @longpress="handleItem($event, item)" />
|
72
|
<MessageAudio :id="item.flow + '-' + item.ID" v-if="item.type === types.MSG_AUDIO" :data="handleAudioMessageShowContext(item)" :messageData="item" @longpress="handleItem($event, item)" />
|
67
|
<MessageAudio :id="item.flow + '-' + item.ID" v-if="item.type === types.MSG_AUDIO" :data="handleAudioMessageShowContext(item)" :messageData="item" @longpress="handleItem($event, item)" />
|
73
|
<MessageFace :id="item.flow + '-' + item.ID" v-if="item.type === types.MSG_FACE" :data="handleFaceMessageShowContext(item)" :messageData="item" @longpress="handleItem($event, item)" />
|
68
|
<MessageFace :id="item.flow + '-' + item.ID" v-if="item.type === types.MSG_FACE" :data="handleFaceMessageShowContext(item)" :messageData="item" @longpress="handleItem($event, item)" />
|
74
|
- <!-- <MessageCustom :id="item.flow + '-' + item.ID" v-if="item.type === types.MSG_CUSTOM" :data="handleCustomMessageShowContext(item)" :messageData="item" @longpress="handleItem($event, item)" /> -->
|
|
|
75
|
</MessageBubble>
|
69
|
</MessageBubble>
|
76
|
<MessageRevoked v-if="item.isRevoked" :data="item" @edit="handleEdit(item)" />
|
70
|
<MessageRevoked v-if="item.isRevoked" :data="item" @edit="handleEdit(item)" />
|
77
|
</view>
|
71
|
</view>
|
78
|
</template>
|
72
|
</template>
|
79
|
<template v-else>
|
73
|
<template v-else>
|
80
|
<view v-for="(item, index) in historyList" :key="item.ID" :id="'view' + item.ID">
|
74
|
<view v-for="(item, index) in historyList" :key="item.ID" :id="'view' + item.ID">
|
81
|
- <!-- <view class="time-container" v-if="item.showTime">{{ caculateTimeago(item.time * 1000) }}</view> -->
|
|
|
82
|
- <!-- <MessageTip v-if="!item.isRevoked && item.type === types.MSG_GRP_TIP" :data="handleTipMessageShowContext(item)" /> -->
|
|
|
83
|
- <!-- <MessageTip v-if="item.type === types.MSG_GRP_SYS_NOTICE" /> -->
|
|
|
84
|
<MessageBubble :data="item">
|
75
|
<MessageBubble :data="item">
|
85
|
<MessageText :id="item.flow + '-' + item.ID" v-if="item.chatType === 1" :data="item" :messageData="item" @longpress="handleItem($event, item)"></MessageText>
|
76
|
<MessageText :id="item.flow + '-' + item.ID" v-if="item.chatType === 1" :data="item" :messageData="item" @longpress="handleItem($event, item)"></MessageText>
|
86
|
<MessageImage :id="item.flow + '-' + item.ID" v-if="item.chatType === 2" :data="item.payload" :messageData="item" @longpress="handleItem($event, item)"></MessageImage>
|
77
|
<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 @@ |
|
@@ -100,7 +91,7 @@ |
100
|
<view @click="sendPrescriptionState = true" v-if="[null, undefined, ''].includes(detailData?.drugId)">发送处方单</view>
|
91
|
<view @click="sendPrescriptionState = true" v-if="[null, undefined, ''].includes(detailData?.drugId)">发送处方单</view>
|
101
|
<view @click="showPrescriptionDetailState = true">查看处方单</view>
|
92
|
<view @click="showPrescriptionDetailState = true">查看处方单</view>
|
102
|
</view>
|
93
|
</view>
|
103
|
- <TUIChatInput :text="text" :conversationData="conversation" :detailData="detailData" @scrollbottomHandler="scrollbottomHandler"></TUIChatInput>
|
94
|
+ <TUIChatInput :text="text" :conversationData="conversation" :detailData="detailData" @scrollbottomHandler="scrollbottomHandler" @sendMessagehandler="handleSendTextMessage"></TUIChatInput>
|
104
|
</template>
|
95
|
</template>
|
105
|
</view>
|
96
|
</view>
|
106
|
<!-- <view class="TUIChat" v-if="conversationType === 'system'">
|
97
|
<!-- <view class="TUIChat" v-if="conversationType === 'system'">
|
|
@@ -156,7 +147,7 @@ |
|
@@ -156,7 +147,7 @@ |
156
|
<script lang="ts">
|
147
|
<script lang="ts">
|
157
|
import { defineComponent, reactive, toRefs, computed, nextTick, watch, onMounted, shallowRef, getCurrentInstance, ComponentPublicInstance, ref, onUnmounted, onBeforeUnmount } from 'vue'
|
148
|
import { defineComponent, reactive, toRefs, computed, nextTick, watch, onMounted, shallowRef, getCurrentInstance, ComponentPublicInstance, ref, onUnmounted, onBeforeUnmount } from 'vue'
|
158
|
import { onReady, onLoad, onNavigationBarButtonTap, onUnload } from '@dcloudio/uni-app'
|
149
|
import { onReady, onLoad, onNavigationBarButtonTap, onUnload } from '@dcloudio/uni-app'
|
159
|
-import { updateSend_prescription_form, getConsultation_information_detail, getEndInformation, getReceive_diagnosis, getOrder_chat, getPrescription_detail_information } from '@/api'
|
150
|
+import { getConsultation_information_detail, getEndInformation, getReceive_diagnosis, getOrder_chat, getPrescription_detail_information } from '@/api'
|
160
|
// 消息元素组件
|
151
|
// 消息元素组件
|
161
|
import MessageBubble from './components/message-elements/message-bubble.vue'
|
152
|
import MessageBubble from './components/message-elements/message-bubble.vue'
|
162
|
import MessageText from './components/message-elements/message-text.vue'
|
153
|
import MessageText from './components/message-elements/message-text.vue'
|
|
@@ -171,7 +162,6 @@ import MessageRevoked from './components/message-elements/message-revoked.vue' |
|
@@ -171,7 +162,6 @@ import MessageRevoked from './components/message-elements/message-revoked.vue' |
171
|
import MessageSystem from './components/message-elements/message-system.vue'
|
162
|
import MessageSystem from './components/message-elements/message-system.vue'
|
172
|
// 底部消息发送组件
|
163
|
// 底部消息发送组件
|
173
|
import TUIChatInput from './components/message-input'
|
164
|
import TUIChatInput from './components/message-input'
|
174
|
-import UserInfoCard from '@/components/UserInfoCard'
|
|
|
175
|
import ConversationEnd from '@/components/ConversationEnd'
|
165
|
import ConversationEnd from '@/components/ConversationEnd'
|
176
|
import SendPrescription from '@/components/SendPrescription'
|
166
|
import SendPrescription from '@/components/SendPrescription'
|
177
|
import ViewPrescription from '@/components/ViewPrescription'
|
167
|
import ViewPrescription from '@/components/ViewPrescription'
|
|
@@ -180,7 +170,6 @@ import store from '../../TUICore/store' |
|
@@ -180,7 +170,6 @@ import store from '../../TUICore/store' |
180
|
import type { DiaLogEventType, Consultation_information_detailType, PrescriptionDetailType } from '../../../types'
|
170
|
import type { DiaLogEventType, Consultation_information_detailType, PrescriptionDetailType } from '../../../types'
|
181
|
import { emojiMap } from '../../utils/emojiMap'
|
171
|
import { emojiMap } from '../../utils/emojiMap'
|
182
|
import {
|
172
|
import {
|
183
|
- handleAvatar,
|
|
|
184
|
handleTextMessageShowContext,
|
173
|
handleTextMessageShowContext,
|
185
|
handleImageMessageShowContext,
|
174
|
handleImageMessageShowContext,
|
186
|
handleVideoMessageShowContext,
|
175
|
handleVideoMessageShowContext,
|
|
@@ -194,7 +183,6 @@ import { |
|
@@ -194,7 +183,6 @@ import { |
194
|
} from '../../utils/untis'
|
183
|
} from '../../utils/untis'
|
195
|
|
184
|
|
196
|
import { caculateTimeago } from '../../utils/date'
|
185
|
import { caculateTimeago } from '../../utils/date'
|
197
|
-import Vuex from 'vuex'
|
|
|
198
|
import { TUIChatServer } from '../../TUICore/server'
|
186
|
import { TUIChatServer } from '../../TUICore/server'
|
199
|
|
187
|
|
200
|
export default defineComponent({
|
188
|
export default defineComponent({
|
|
@@ -212,7 +200,6 @@ export default defineComponent({ |
|
@@ -212,7 +200,6 @@ export default defineComponent({ |
212
|
MessageSystem,
|
200
|
MessageSystem,
|
213
|
TUIChatInput,
|
201
|
TUIChatInput,
|
214
|
MessageOperate,
|
202
|
MessageOperate,
|
215
|
- UserInfoCard,
|
|
|
216
|
ConversationEnd,
|
203
|
ConversationEnd,
|
217
|
SendPrescription,
|
204
|
SendPrescription,
|
218
|
ViewPrescription,
|
205
|
ViewPrescription,
|
|
@@ -290,8 +277,6 @@ export default defineComponent({ |
|
@@ -290,8 +277,6 @@ export default defineComponent({ |
290
|
onLoad(async (options: DiaLogEventType) => {
|
277
|
onLoad(async (options: DiaLogEventType) => {
|
291
|
data.history = uni.getStorageSync('history')
|
278
|
data.history = uni.getStorageSync('history')
|
292
|
data.imUserId = uni.getStorageSync('ImUserId')
|
279
|
data.imUserId = uni.getStorageSync('ImUserId')
|
293
|
- console.log(uni.getStorageSync('history'), '聊天界面onload获取是否为历史记录')
|
|
|
294
|
- console.log(options, '聊天界面onload参数')
|
|
|
295
|
data.Event = options
|
280
|
data.Event = options
|
296
|
getDetailHandler()
|
281
|
getDetailHandler()
|
297
|
|
282
|
|
|
@@ -308,15 +293,7 @@ export default defineComponent({ |
|
@@ -308,15 +293,7 @@ export default defineComponent({ |
308
|
})
|
293
|
})
|
309
|
|
294
|
|
310
|
onBeforeUnmount(() => {
|
295
|
onBeforeUnmount(() => {
|
311
|
- console.log(uni.$TUIKit, 'im方法')
|
|
|
312
|
- uni.$TUIKit
|
|
|
313
|
- .logout()
|
|
|
314
|
- .then(res => {
|
|
|
315
|
- console.log(res, '成功')
|
|
|
316
|
- })
|
|
|
317
|
- .catch(err => {
|
|
|
318
|
- console.log(err, '错误')
|
|
|
319
|
- })
|
296
|
+ uni.$TUIKit.logout()
|
320
|
})
|
297
|
})
|
321
|
onUnmounted(() => {})
|
298
|
onUnmounted(() => {})
|
322
|
onUnload(() => {
|
299
|
onUnload(() => {
|
|
@@ -335,8 +312,8 @@ export default defineComponent({ |
|
@@ -335,8 +312,8 @@ export default defineComponent({ |
335
|
nextTick(() => {
|
312
|
nextTick(() => {
|
336
|
// const newLastMessage = newVal[newVal.length - 1]
|
313
|
// const newLastMessage = newVal[newVal.length - 1]
|
337
|
// const oldLastMessage = oldVal ? oldVal[oldVal.length - 1] : {}
|
314
|
// const oldLastMessage = oldVal ? oldVal[oldVal.length - 1] : {}
|
338
|
- data.oldMessageTime = messages.value[0].time
|
|
|
339
|
- handleShowTime()
|
315
|
+ // data.oldMessageTime = messages.value[0].time
|
|
|
316
|
+ // handleShowTime()
|
340
|
// if (oldVal && newLastMessage.ID !== oldLastMessage.ID) {
|
317
|
// if (oldVal && newLastMessage.ID !== oldLastMessage.ID) {
|
341
|
// handleScrollBottom() // 非从conversationList 首次进入
|
318
|
// handleScrollBottom() // 非从conversationList 首次进入
|
342
|
// }
|
319
|
// }
|
|
@@ -365,7 +342,7 @@ export default defineComponent({ |
|
@@ -365,7 +342,7 @@ export default defineComponent({ |
365
|
uni.addInterceptor('navigateBack', {
|
342
|
uni.addInterceptor('navigateBack', {
|
366
|
success() {
|
343
|
success() {
|
367
|
// 小程序无效 官网链接:https://uniapp.dcloud.io/api/interceptor.html
|
344
|
// 小程序无效 官网链接:https://uniapp.dcloud.io/api/interceptor.html
|
368
|
- uni.$TUIKit.TUIConversationServer.setMessageRead(data.conversation.conversationID)
|
345
|
+ // uni.$TUIKit.TUIConversationServer.setMessageRead(data.conversation.conversationID)
|
369
|
}
|
346
|
}
|
370
|
})
|
347
|
})
|
371
|
})
|
348
|
})
|
|
@@ -383,8 +360,8 @@ export default defineComponent({ |
|
@@ -383,8 +360,8 @@ export default defineComponent({ |
383
|
|
360
|
|
384
|
const scrollbottomHandler = () => {
|
361
|
const scrollbottomHandler = () => {
|
385
|
setTimeout(() => {
|
362
|
setTimeout(() => {
|
386
|
- data.scrollTop = 1000000
|
|
|
387
|
- }, 800)
|
363
|
+ data.scrollTop = Number(String(new Date().getTime()).slice(-5))
|
|
|
364
|
+ }, 500)
|
388
|
}
|
365
|
}
|
389
|
|
366
|
|
390
|
const imageFormatMap = new Map([
|
367
|
const imageFormatMap = new Map([
|
|
@@ -400,7 +377,7 @@ export default defineComponent({ |
|
@@ -400,7 +377,7 @@ export default defineComponent({ |
400
|
|
377
|
|
401
|
if (result?.orderState !== 30) proxy.$h.timeCallBack('对方已结束问诊即将返回', 2000)
|
378
|
if (result?.orderState !== 30) proxy.$h.timeCallBack('对方已结束问诊即将返回', 2000)
|
402
|
}
|
379
|
}
|
403
|
- }, 3000)
|
380
|
+ }, 5000)
|
404
|
|
381
|
|
405
|
const getDetailHandler = async () => {
|
382
|
const getDetailHandler = async () => {
|
406
|
const { result: timeData }: { result: { countdownTime: number } } = await getReceive_diagnosis({ id: data.Event.orderId })
|
383
|
const { result: timeData }: { result: { countdownTime: number } } = await getReceive_diagnosis({ id: data.Event.orderId })
|
|
@@ -473,9 +450,6 @@ export default defineComponent({ |
|
@@ -473,9 +450,6 @@ export default defineComponent({ |
473
|
|
450
|
|
474
|
if (result.records.length) {
|
451
|
if (result.records.length) {
|
475
|
result.records.map((_: any) => data.historyList.unshift(_))
|
452
|
result.records.map((_: any) => data.historyList.unshift(_))
|
476
|
-
|
|
|
477
|
- console.log(data.historyList, '历史记录')
|
|
|
478
|
-
|
|
|
479
|
return
|
453
|
return
|
480
|
}
|
454
|
}
|
481
|
uni.$u.toast('没有更多数据了')
|
455
|
uni.$u.toast('没有更多数据了')
|
|
@@ -495,7 +469,6 @@ export default defineComponent({ |
|
@@ -495,7 +469,6 @@ export default defineComponent({ |
495
|
content: '您确定要结束问诊吗',
|
469
|
content: '您确定要结束问诊吗',
|
496
|
success: async function (res: any) {
|
470
|
success: async function (res: any) {
|
497
|
if (res.confirm) {
|
471
|
if (res.confirm) {
|
498
|
- console.log('用户点击确定')
|
|
|
499
|
try {
|
472
|
try {
|
500
|
await getEndInformation({ id: data.Event.orderId })
|
473
|
await getEndInformation({ id: data.Event.orderId })
|
501
|
proxy.$h.backUrl(1)
|
474
|
proxy.$h.backUrl(1)
|
|
@@ -566,7 +539,6 @@ export default defineComponent({ |
|
@@ -566,7 +539,6 @@ export default defineComponent({ |
566
|
})
|
539
|
})
|
567
|
}
|
540
|
}
|
568
|
} else if (data.history === 'success') {
|
541
|
} else if (data.history === 'success') {
|
569
|
- console.log('下拉刷洗执行了')
|
|
|
570
|
getOrder_chatHandler(false)
|
542
|
getOrder_chatHandler(false)
|
571
|
}
|
543
|
}
|
572
|
setTimeout(() => {
|
544
|
setTimeout(() => {
|
|
@@ -582,10 +554,10 @@ export default defineComponent({ |
|
@@ -582,10 +554,10 @@ export default defineComponent({ |
582
|
|
554
|
|
583
|
// 发送消息
|
555
|
// 发送消息
|
584
|
const handleSendTextMessage = (e: any) => {
|
556
|
const handleSendTextMessage = (e: any) => {
|
585
|
- if (data.text.trimEnd()) {
|
|
|
586
|
- TUIServer.sendTextMessage(JSON.parse(JSON.stringify(data.text)))
|
557
|
+ if (e.trimEnd()) {
|
|
|
558
|
+ TUIServer.sendTextMessage(JSON.parse(JSON.stringify(e)))
|
587
|
}
|
559
|
}
|
588
|
- data.text = ' '
|
560
|
+ // data.text = ' '
|
589
|
}
|
561
|
}
|
590
|
// 右键消息,展示处理功能
|
562
|
// 右键消息,展示处理功能
|
591
|
const handleItem = (event: any, item: any) => {
|
563
|
const handleItem = (event: any, item: any) => {
|