<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>