作者 韩昌

优化im

1 <template> 1 <template>
2 - <view class="message-bubble" :class="[message.flow === 'in' ? '' : 'reverse']">  
3 - <image class="avatar" mode="aspectFill" :src="DialogUserAvatar || 'https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'" alt=""></image>  
4 - <!-- <image class="avatar" mode="aspectFill" :src="DialogUserAvatar || '/static/images/mAvatar.png'" alt=""></image> --> 2 + <view class="message-bubble" :class="[message.flow === 'in' ? '' : 'reverse']" v-if="![types.MSG_CUSTOM].includes(data.type)">
  3 + <image class="avatar" mode="aspectFill" :src="'https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'" alt=""></image>
5 <view> 4 <view>
6 - <view class="username" :style="{ textAlign: message.flow === 'in' ? 'left' : 'right' }">{{ DialogUserName }}</view>  
7 <view class="message-area"> 5 <view class="message-area">
8 <label class="name" v-if="message.flow === 'in'">{{ message.nick }}</label> 6 <label class="name" v-if="message.flow === 'in'">{{ message.nick }}</label>
9 <div :class="['content content-' + message.flow]"> 7 <div :class="['content content-' + message.flow]">
@@ -11,16 +9,16 @@ @@ -11,16 +9,16 @@
11 </div> 9 </div>
12 </view> 10 </view>
13 </view> 11 </view>
14 - <view class="message-label fail" v-if="message.status === 'fail'">!</view>  
15 - <view class="message-label" :class="[!message.isPeerRead && 'unRead']" v-if="message.conversationType === 'C2C' && message.flow == 'out' && message.status !== 'fail'"> 12 + <!-- <view class="message-label fail" v-if="message.status === 'fail'">!</view> -->
  13 + <!-- <view class="message-label" :class="[!message.isPeerRead && 'unRead']" v-if="message.conversationType === 'C2C' && message.flow == 'out' && message.status !== 'fail'">
16 <span v-if="!message.isPeerRead">未读</span> 14 <span v-if="!message.isPeerRead">未读</span>
17 <span v-else>已读</span> 15 <span v-else>已读</span>
18 - </view> 16 + </view> -->
19 </view> 17 </view>
20 </template> 18 </template>
21 19
22 <script lang="ts" setup> 20 <script lang="ts" setup>
23 -import { defineComponent, watchEffect, reactive, toRefs, computed, ref, getCurrentInstance, ComponentPublicInstance } from 'vue' 21 +import { watchEffect, ref } from 'vue'
24 22
25 const props = defineProps({ 23 const props = defineProps({
26 data: { 24 data: {
@@ -30,17 +28,8 @@ const props = defineProps({ @@ -30,17 +28,8 @@ const props = defineProps({
30 } 28 }
31 } 29 }
32 }) 30 })
33 -const { proxy } = getCurrentInstance() as { proxy: ComponentPublicInstance }  
34 - 31 +const types = ref(uni.$TIM.TYPES)
35 const message = ref() 32 const message = ref()
36 -  
37 -const UserInfo = uni.getStorageSync('UserInfo')  
38 -  
39 -const InUserInfo = uni.getStorageSync('inUserInfo')  
40 -  
41 -const DialogUserName = computed(() => (message.value.flow === 'in' ? InUserInfo.nickName : UserInfo.nickname))  
42 -const DialogUserAvatar = computed(() => (message.value.flow === 'in' ? proxy.$h.downFile(InUserInfo.avatar) : proxy.$h.downFile(UserInfo.avatar)))  
43 -  
44 watchEffect(() => { 33 watchEffect(() => {
45 message.value = props.data 34 message.value = props.data
46 }) 35 })
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 <view v-else class="TUI-message-input-main"> 28 <view v-else class="TUI-message-input-main">
29 <AudioMessage></AudioMessage> 29 <AudioMessage></AudioMessage>
30 </view> 30 </view>
31 - <up-button 31 + <!-- <up-button
32 v-if="[10, '10', 21, '21'].includes(detailData.consultationWay)" 32 v-if="[10, '10', 21, '21'].includes(detailData.consultationWay)"
33 color="#05B8D2" 33 color="#05B8D2"
34 shape="circle" 34 shape="circle"
@@ -36,10 +36,10 @@ @@ -36,10 +36,10 @@
36 throttleTime="1500" 36 throttleTime="1500"
37 @click="handleSendTextMessage" 37 @click="handleSendTextMessage"
38 :customStyle="{ width: '122rpx', height: '74rpx', marginRight: '16rpx' }" 38 :customStyle="{ width: '122rpx', height: '74rpx', marginRight: '16rpx' }"
39 - ></up-button> 39 + ></up-button> -->
40 40
41 <view class="TUI-message-input-functions" hover-class="none"> 41 <view class="TUI-message-input-functions" hover-class="none">
42 - <!-- <image class="TUI-icon" @tap="handleEmoji" src="../../../../assets/icon/emoji.svg"></image> --> 42 + <image class="TUI-icon" @tap="handleEmoji" src="../../../../assets/icon/emoji.svg"></image>
43 <view @tap="handleExtensions"> 43 <view @tap="handleExtensions">
44 <image class="TUI-icon" src="../../../../assets/icon/more.svg"></image> 44 <image class="TUI-icon" src="../../../../assets/icon/more.svg"></image>
45 </view> 45 </view>
@@ -110,7 +110,7 @@ const TUIChatInput = defineComponent({ @@ -110,7 +110,7 @@ const TUIChatInput = defineComponent({
110 default: () => ({}) 110 default: () => ({})
111 } 111 }
112 }, 112 },
113 - emits: ['scrollbottomHandler'], 113 + emits: ['scrollbottomHandler', 'sendMessagehandler'],
114 setup(props, { emit }) { 114 setup(props, { emit }) {
115 const { proxy } = getCurrentInstance() as { proxy: ComponentPublicInstance } 115 const { proxy } = getCurrentInstance() as { proxy: ComponentPublicInstance }
116 116
@@ -146,11 +146,12 @@ const TUIChatInput = defineComponent({ @@ -146,11 +146,12 @@ const TUIChatInput = defineComponent({
146 146
147 // 发送消息 147 // 发送消息
148 const handleSendTextMessage = (e: any) => { 148 const handleSendTextMessage = (e: any) => {
149 - if (data.inputText.trimEnd()) {  
150 - uni.$TUIKit.TUIChatServer.sendTextMessage(JSON.parse(JSON.stringify(data.inputText)))  
151 - }  
152 - data.inputText = ' ' 149 + // if (data.inputText.trimEnd()) {
  150 + // uni.$TUIKit.TUIChatServer.sendTextMessage(JSON.parse(JSON.stringify(data.inputText)))
  151 + // }
  152 + emit('sendMessagehandler', data.inputText)
153 emit('scrollbottomHandler') 153 emit('scrollbottomHandler')
  154 + data.inputText = ' '
154 } 155 }
155 156
156 // 处理需要合并的数据 157 // 处理需要合并的数据
@@ -169,8 +170,7 @@ const TUIChatInput = defineComponent({ @@ -169,8 +170,7 @@ const TUIChatInput = defineComponent({
169 success(image) { 170 success(image) {
170 console.error(image) 171 console.error(image)
171 TUIServer.sendImageMessage(res, image) 172 TUIServer.sendImageMessage(res, image)
172 - emit('scrollbottomHandler')  
173 - 173 + emit('scrollbottomHandler')
174 } 174 }
175 }) 175 })
176 } 176 }
@@ -306,7 +306,7 @@ export default defineComponent({ @@ -306,7 +306,7 @@ export default defineComponent({
306 uni.addInterceptor('navigateBack', { 306 uni.addInterceptor('navigateBack', {
307 success() { 307 success() {
308 // 小程序无效 官网链接:https://uniapp.dcloud.io/api/interceptor.html 308 // 小程序无效 官网链接:https://uniapp.dcloud.io/api/interceptor.html
309 - uni.$TUIKit.TUIConversationServer.setMessageRead(data.conversation.conversationID) 309 + // uni.$TUIKit.TUIConversationServer.setMessageRead(data.conversation.conversationID)
310 } 310 }
311 }) 311 })
312 }) 312 })
@@ -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) => {
@@ -15,6 +15,7 @@ export const doctorPhoneEasyLogin = (data: doctorPhoneEasyLoginType) => request( @@ -15,6 +15,7 @@ export const doctorPhoneEasyLogin = (data: doctorPhoneEasyLoginType) => request(
15 export const outLogin = () => request({ url: '/doctor/outLogin', method: 'GET' }) // 退出登录 15 export const outLogin = () => request({ url: '/doctor/outLogin', method: 'GET' }) // 退出登录
16 export const getOrder_chat = (data: { id: string | number }) => request({ url: '/consultation/order_chat', method: 'GET', data }) // im聊天记录 16 export const getOrder_chat = (data: { id: string | number }) => request({ url: '/consultation/order_chat', method: 'GET', data }) // im聊天记录
17 export const getChangePhonePwdCode = (data: { type: string | number }) => request({ url: '/veterinary/getChangePhonePwdCode', method: 'GET', data }) // 发送修改手机号和密码验证码 type:1-修改手机号,2-修改密码 17 export const getChangePhonePwdCode = (data: { type: string | number }) => request({ url: '/veterinary/getChangePhonePwdCode', method: 'GET', data }) // 发送修改手机号和密码验证码 type:1-修改手机号,2-修改密码
  18 +export const getarticle = (data: { name: string }) => request({ url: '/article/article', method: 'GET', data }) // 协议与文章
18 19
19 // 首页 20 // 首页
20 export const getStart = () => request({ url: '/veterinary/start', method: 'GET' }) // 开屏页 21 export const getStart = () => request({ url: '/veterinary/start', method: 'GET' }) // 开屏页
1 <template> 1 <template>
2 - <view class="u-content"> 2 + <view style="padding: 24rpx">
3 <u-parse :content="content"></u-parse> 3 <u-parse :content="content"></u-parse>
4 </view> 4 </view>
5 </template> 5 </template>
@@ -7,6 +7,8 @@ @@ -7,6 +7,8 @@
7 <script setup lang="ts"> 7 <script setup lang="ts">
8 import { ref } from 'vue' 8 import { ref } from 'vue'
9 import { onLoad } from '@dcloudio/uni-app' 9 import { onLoad } from '@dcloudio/uni-app'
  10 +import { getarticle } from '../../api'
  11 +import { ArticleType } from '../../types'
10 12
11 interface EventType { 13 interface EventType {
12 title: string 14 title: string
@@ -14,18 +16,12 @@ interface EventType { @@ -14,18 +16,12 @@ interface EventType {
14 } 16 }
15 17
16 onLoad(async (e: EventType) => { 18 onLoad(async (e: EventType) => {
17 - console.log(e, 'event') 19 + uni.setNavigationBarTitle({ title: e.title })
18 20
19 - content.value = '富文本' 21 + const { result }: { result: ArticleType } = await getarticle({ name: e.title })
20 22
21 - uni.setNavigationBarTitle({ title: e.title }) 23 + content.value = result.content
22 }) 24 })
23 25
24 const content = ref('') 26 const content = ref('')
25 </script> 27 </script>
26 -  
27 -<style lang="scss" scoped>  
28 -.u-content {  
29 - padding: 24rpx;  
30 -}  
31 -</style>  
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 我已阅读并同意 9 我已阅读并同意
10 <text class="bluetext" @click="proxy.$h.jumpUrl(`/pages/login/agreement?title=用户协议&type=1`)">《用户协议》</text> 10 <text class="bluetext" @click="proxy.$h.jumpUrl(`/pages/login/agreement?title=用户协议&type=1`)">《用户协议》</text>
11 11
12 - <text class="bluetext" @click="proxy.$h.jumpUrl(`/pages/login/agreement?title=隐私协议&type=2`)">《隐私协议》</text> 12 + <text class="bluetext" @click="proxy.$h.jumpUrl(`/pages/login/agreement?title=隐私政策&type=2`)">《隐私政策》</text>
13 </text> 13 </text>
14 </view> 14 </view>
15 </view> 15 </view>
@@ -21,18 +21,18 @@ @@ -21,18 +21,18 @@
21 <view class="text mb24">处方药:</view> 21 <view class="text mb24">处方药:</view>
22 <view class="list br24"> 22 <view class="list br24">
23 <view 23 <view
24 - class="flexJ " 24 + class="flexJ"
25 v-for="(_, index) in props.isRenew === 'err' ? PrescriptionDetail?.drugList : PrescriptionDetail?.renewDrugList" 25 v-for="(_, index) in props.isRenew === 'err' ? PrescriptionDetail?.drugList : PrescriptionDetail?.renewDrugList"
26 :key="index" 26 :key="index"
27 - :style="index === (props.isRenew === 'err' ? PrescriptionDetail?.drugList : PrescriptionDetail?.renewDrugList)?.length ? 'margin-bottom: 42rpx' : 'margin-bottom: 0'" 27 + :style="index === (props.isRenew === 'err' ? PrescriptionDetail?.drugList : PrescriptionDetail?.renewDrugList)?.length as number - 1 ? 'margin-bottom: 0rpx' : 'margin-bottom: 42rpx'"
28 > 28 >
29 <view> 29 <view>
30 - <view class="blacktext" style="margin-bottom: 8rpx;">{{ _.name || '' }}</view>  
31 - <view class="graytext" style="margin-bottom: 16rpx;">{{ _.des || '' }}</view> 30 + <view class="blacktext" style="margin-bottom: 8rpx">{{ _.name || '' }}</view>
  31 + <view class="graytext">{{ _.des || '' }}</view>
32 </view> 32 </view>
33 <view> 33 <view>
34 - <view class="blacktext" style="margin-bottom: 8rpx;">¥{{ _.amount || 0 }}</view>  
35 - <view class="graytext" style="margin-bottom: 16rpx;">x{{ _.num || 0 }}</view> 34 + <view class="blacktext" style="margin-bottom: 8rpx">¥{{ _.amount || 0 }}</view>
  35 + <view class="graytext">x{{ _.num || 0 }}</view>
36 </view> 36 </view>
37 </view> 37 </view>
38 </view> 38 </view>
@@ -637,4 +637,17 @@ export interface GetUserCardType { @@ -637,4 +637,17 @@ export interface GetUserCardType {
637 doctorRealName?: string 637 doctorRealName?: string
638 doctorWXRealName?: string 638 doctorWXRealName?: string
639 [property: string]: any; 639 [property: string]: any;
  640 +}
  641 +
  642 +export interface ArticleType {
  643 + /**
  644 + * 文章内容
  645 + */
  646 + content: string;
  647 + id: string;
  648 + /**
  649 + * 文章标题
  650 + */
  651 + name: string;
  652 + [property: string]: any;
640 } 653 }