<template>
	<div>
		<wd-swipe-action class="swipe_action">
			<div
				@click="cellClick"
				:class="['chatItem', props.data.is_top === 1 ? 'isTop' : '']"
			>
				<div class="avatarImg">
					<tm-badge
						:count="props.data.unread_num"
						:maxCount="99"
						color="#D03050"
					>
						<avatarModule
							:mode="props?.data?.group_type === 0 ? 1 : 2"
							:avatar="props?.data?.avatar"
							:groupType="props?.data?.group_type"
							:userName="props?.data?.name"
							:customStyle="{
								width: '96rpx',
								height: '96rpx',
							}"
							:customTextStyle="{
								fontSize: '32rpx',
								fontWeight: 'bold',
								color: '#fff',
								lineHeight: '44rpx',
							}"
						></avatarModule>
					</tm-badge>
				</div>
				<div class="chatInfo">
					<div class="chatInfo_1">
						<div class="name_center">
							<div class="text-[#000000] text-[32rpx]
              font-bold opacity-90 name_text">
                {{ formatNameText(props.data.name) }}
                <span v-if="props.data.talk_type === 2">（{{props.data.group_member_num}}）</span>
                <span v-if="props.data.group_type === 2" class="depTag tag">
                  部门
                </span>
                <span v-if="props.data.group_type === 3" class="projectTag tag">
                  项目
                </span>
                <span v-if="props.data.group_type === 4" class="companyTag tag">
                  公司
                </span>
              </div>

						</div>
						<div style="flex-shrink: 0;"
							class="text-[#000000] text-[28rpx] font-medium opacity-26 ml-[24rpx] time_right"
						>
							{{ beautifyTime(props.data.updated_at) }}
						</div>
					</div>
					<div class="chatInfo_2 w-full mr-[6rpx]">
						<div class="w-full chatInfo_2_1 textEllipsis">
							{{ props.data.msg_text }}
						</div>
					</div>
				</div>
			</div>
			<template #right>
				<div class="flex flex-row flex-row-center-end">
					<!-- 样式占位 -->
					<div style="width: 1px"></div>
					<div
						@click="handleTop"
						class="w-[156rpx] h-[154rpx] text-[#ffffff] bg-[#F09F1F] flex items-center justify-center"
					>
						{{ props.data.is_top === 1 ? "取消置顶" : "置顶" }}
					</div>
					<div
						@click="handleDelete"
						class="w-[156rpx] h-[154rpx] text-[#ffffff] bg-[#CF3050] flex items-center justify-center"
					>
						删除
					</div>
				</div>
			</template>
		</wd-swipe-action>
		<div
			v-if="props.index !== talkStore.talkItems.length - 1"
			class="divider"
		></div>
	</div>
</template>
<script setup>
import avatarModule from "@/components/avatar-module/index.vue";
import { ref, reactive, defineProps, computed } from "vue";
import dayjs from "dayjs";
import { beautifyTime } from "@/utils/datetime";
import { ServeClearTalkUnreadNum } from "@/api/chat";
import { useTalkStore, useDialogueStore } from "@/store";
import { useSessionMenu } from "@/hooks";

const talkStore = useTalkStore();
const { onToTopTalk, onRemoveTalk } = useSessionMenu();
const dialogueStore = useDialogueStore();
const props = defineProps({
	data: {
		type: Object,
		default: {},
		required: true,
	},
	index: {
		type: Number,
		default: -1,
		required: true,
	},
});

// 添加格式化方法
const formatNameText = (text, maxLength = 16) => {
  return text.length > maxLength ? `${text.slice(0, maxLength - 1)}...` : text;
};

const cellClick = () => {
	console.log(props.data);
	// 更新编辑信息
	dialogueStore.setDialogue(props.data);

	// 清空消息未读数
	if (props.data.unread_num > 0) {
		ServeClearTalkUnreadNum({
			talk_type: props.data.talk_type,
			receiver_id: props.data.receiver_id,
		}).then(() => {
			talkStore.updateItem({
				index_name: props.data.index_name,
				unread_num: 0,
			});
		});
	}
	uni.navigateTo({
		url: `/pages/dialog/index?sessionId=${props.data.id}&talkType=${props.data.talk_type}&receiverId=${props.data.receiver_id}&indexName=${props.data.index_name}`,
	});
};

const handleTop = () => {
	console.log(props.data, 1);
	onToTopTalk(props.data);
};

//点击删除会话
const handleDelete = () => {
	console.log(props.data);
	onRemoveTalk(props.data);
};
</script>
<style lang="scss" scoped>
::v-deep .swipe_action {
	// border: 1px solid #fff;
	// transform: translate3d(1px, 0px, 0px) !important;
}
.chatItem {
	width: 100%;
	height: 154rpx;
	padding: 30rpx 16rpx;
	display: flex;
	align-items: center;

	&.isTop {
		background-color: #f3f3f3;
	}
}

.chatInfo {
	flex: 1;
	margin-left: 20rpx;
}

.chatInfo_1 {
	display: flex;
	align-items: center;
	justify-content: space-between;
}

.chatInfo_2 {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-top: 6rpx;
}

.chatInfo_2_1 {
	font-size: 28rpx;
	color: rgba($color: #000000, $alpha: 0.4);
}
.tag{
  display: inline-flex;
  align-items: center;
  text-align: center;
  // margin-left: 10rpx;
  margin-top: 4rpx;
  vertical-align: top;
  height: 38rpx;
  line-height: 38rpx;
  padding: 0 10rpx;
  font-size: 24rpx;
  border-radius: 6rpx;
  font-weight: bold;
}
.companyTag {
	border: 1px solid #7a58de;
	color: #7a58de;
}
.depTag {
	border: 1px solid #377ec6;
	color: #377ec6;
}
.projectTag {
	border: 1px solid #c1681c;
	color: #c1681c;
}
.name_center{
  flex: 1;
  min-width: 0;
}
.name_text{
  display: inline-block;
  max-height: 88rpx; // 两行文字的高度
  line-height: 44rpx;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  word-break: break-all;
}
.time_right {
	/* white-space: nowrap;
	max-width: 146rpx; */
  flex: 0 0 auto; /* 不伸缩，保持内容宽度 */
  white-space: nowrap;
}

.textEllipsis {
	overflow: hidden;
	text-overflow: ellipsis;
	display: -webkit-box;
	-webkit-line-clamp: 1;
	-webkit-box-orient: vertical;
}

.divider {
	background-color: rgba(243, 243, 243, 1);
	height: 1rpx;
	margin: 0 18rpx;
}
</style>
