| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 | 
							- <template>
 
- 	<view class="page" :style="{'min-height':h+'px', 'padding-top':mt+'px'}">
 
- 		<cus-header title='对话记录' bgColor="transparent"></cus-header>
 
- 		<div class="list" v-if="list.length">
 
- 			<div class="l_item" v-for="(item,index) in list" :key="index">
 
- 				<div class="time">{{item.date}}</div>
 
- 				<div v-for="(pre,idx) in item.items" :key="idx">
 
- 					<div class="pre adf my" v-if="pre.chatType===1">
 
- 						<div class="text my">{{pre.content}}</div>
 
- 						<image src="https://transcend.ringzle.com/xiaozhi-app/profile/2025/06/03/d6c9efaf-1f83-47fb-8059-4e84c6dcde7d.png"></image>
 
- 					</div>
 
- 					<div class="pre adf ai" v-else-if="pre.chatType===2">
 
- 						<image src="https://transcend.ringzle.com/xiaozhi-app/profile/2025/06/03/9cb78d90-5d88-4bcf-984d-be4c6edbd3de.png"></image>
 
- 						<div class="text ai">{{pre.content}}</div>
 
- 					</div>
 
- 				</div>
 
- 			</div>
 
- 		</div>
 
- 		<template v-else>
 
- 			<page-empty :height="'calc(100vh - 200rpx)'"></page-empty>
 
- 		</template>
 
- 	</view>
 
- </template>
 
- <script>
 
- 	import pageEmpty from '@/components/pageEmpty/index.vue' 
 
- 	export default {
 
- 		components:{pageEmpty},
 
- 		data(){
 
- 			return {
 
- 				agentId:'',
 
- 				deviceId:'',
 
- 				sessionId:'',
 
- 				list:[]
 
- 			}
 
- 		},
 
- 		onLoad(option) {
 
- 			this.agentId = option?.agentId;
 
- 			this.deviceId = option?.deviceId;
 
- 			this.sessionId = option?.sessionId;
 
- 			this.getList();
 
- 		},
 
- 		methods:{
 
- 			getList(){
 
- 				this.$api.get(`/agent/${this.agentId}/${this.deviceId}/chat-history/${this.sessionId}`).then(res=>{
 
- 					if(res.data.code!==0) return this.$showToast(res.data.msg)
 
- 					this.list = this.groupedMessages(res.data.data||[])
 
- 				})
 
- 			},
 
- 			groupedMessages(data) {
 
- 			    const groups = {};
 
- 			    data.forEach(msg => {
 
- 			        const dateKey = msg.createdAt; 
 
- 			        if (!groups[dateKey]) {
 
- 			          groups[dateKey] = {
 
- 			            date: dateKey,
 
- 			            items: []
 
- 			          }
 
- 			        }
 
- 			        groups[dateKey].items.push(msg);
 
- 			    });
 
- 			
 
- 			    return Object.values(groups).sort((a, b) => 
 
- 			        new Date(a.date) - new Date(b.date)
 
- 			    );
 
- 			}
 
- 		}
 
- 	}
 
- </script>
 
- <style scoped lang="less">
 
- 	.page{
 
- 		background: #F7F6F9;
 
- 		padding: 0 30rpx 40rpx;
 
- 		box-sizing: border-box;
 
- 		
 
- 		.list{
 
- 			.l_item{
 
- 				margin-top: 48rpx;
 
- 				.time{
 
- 					font-family: PingFangSC, PingFang SC;
 
- 					font-weight: 400;
 
- 					font-size: 24rpx;
 
- 					color: #8D8D8D;
 
- 					line-height: 24rpx;
 
- 					text-align: center;
 
- 				}
 
- 				.pre{
 
- 					margin-top: 32rpx;
 
- 					image{
 
- 						width: 78rpx;
 
- 						height: 78rpx;
 
- 						border-radius: 50%;
 
- 					}
 
- 					.text{
 
- 						max-width: calc(100% - 98rpx);
 
- 						padding: 24rpx;
 
- 						font-family: PingFangSC, PingFang SC;
 
- 						font-weight: 400;
 
- 						font-size: 28rpx;
 
- 						line-height: 48rpx;
 
- 						border-radius: 20rpx;
 
- 						box-sizing: border-box;
 
- 					}
 
- 					&.my{
 
- 						justify-content: flex-end;
 
- 						.text{
 
- 							background: #72832B;
 
- 							color: #FFFFFF;
 
- 						}
 
- 						image{
 
- 							margin-left: 20rpx;
 
- 						}
 
- 					}
 
- 					&.ai{
 
- 						.text{
 
- 							background: #FFFFFF;
 
- 							color: #252525;
 
- 						}
 
- 						image{
 
- 							margin-right: 20rpx;
 
- 						}
 
- 					}
 
- 				}
 
- 			}
 
- 		}
 
- 	}
 
- </style>
 
 
  |