<template>
  <div>
    <wd-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="flex items-center">
              <div class="text-[#000000] text-[32rpx] font-bold opacity-90">
                {{ props.data.name }}
              </div>
              <div>
                <div v-if="props.data.group_type === 2" class="depTag">
                  部门
                </div>
                <div v-if="props.data.group_type === 3" class="projectTag">
                  项目
                </div>
                <div v-if="props.data.group_type === 4" class="companyTag">
                  公司
                </div>
              </div>
            </div>
            <div class="text-[#000000] text-[28rpx] font-medium opacity-26">
              {{ 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
            @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 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,
  })
}

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

//点击删除会话
const handleDelete = () => {
  console.log(props.data)
  onRemoveTalk(props.data)
}
</script>
<style lang="scss" scoped>
.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: #000000;
  opacity: 40%;
}

.companyTag {
  width: 76rpx;
  height: 38rpx;
  line-height: 38rpx;
  border: 1px solid #7a58de;
  font-size: 24rpx;
  text-align: center;
  border-radius: 6rpx;
  color: #7a58de;
  font-weight: bold;
  margin-left: 12rpx;
}

.depTag {
  width: 76rpx;
  height: 38rpx;
  line-height: 38rpx;
  border: 1px solid #377ec6;
  font-size: 24rpx;
  text-align: center;
  border-radius: 6rpx;
  color: #377ec6;
  font-weight: bold;
  margin-left: 12rpx;
}

.projectTag {
  width: 76rpx;
  height: 38rpx;
  line-height: 38rpx;
  border: 1px solid #c1681c;
  font-size: 24rpx;
  text-align: center;
  border-radius: 6rpx;
  color: #c1681c;
  font-weight: bold;
  margin-left: 12rpx;
}

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