| | |
| | | color="#1c86ff" |
| | | class="flex items-center box-border mb-3 justify-center add_room cursor-pointer w-[124px] h-[32.88px] rounded-s-md text-white opacity-100" |
| | | > |
| | | 新建聊天室 |
| | | 新建对话 |
| | | </el-button> |
| | | </div> |
| | | <div |
| | |
| | | :key="index" |
| | | @click="roomClick(item)" |
| | | > |
| | | <div class="ywicon icon-xiaoxi1 flex-0 mr-2.5"></div> |
| | | <div class="ywifont ywicon-xiaoxi1 flex-0 mr-2.5"></div> |
| | | <div class="flex-auto text-ellipsis text-nowrap text-sm group-hover:text-[#0084ff]">{{ item.title }}</div> |
| | | <div class="text-gray-100 flex items-center space-x-2 ml-1"> |
| | | <!-- <div class="ywicon invisible icon-bianji group-hover:visible !text-sm"></div> --> |
| | | <!-- <div class="ywifont invisible ywicon-bianji group-hover:visible !text-sm"></div> --> |
| | | |
| | | <el-popconfirm title="确定删除聊天记录?" @confirm.stop="confirmDeleteChatRoom(item)" width="180"> |
| | | <template #reference> |
| | | <div class="ywicon invisible icon-shanchu3 group-hover:visible"></div> |
| | | <div class="ywifont invisible ywicon-shanchu3 group-hover:visible"></div> |
| | | </template> |
| | | </el-popconfirm> |
| | | </div> |
| | |
| | | |
| | | <script setup lang="ts"> |
| | | import { Search } from '@element-plus/icons-vue'; |
| | | import { computed, onMounted, reactive, ref, watch } from 'vue'; |
| | | import type { ChatRoomItem } from './types'; |
| | | import { CreateHistoryGroup, DeleteHistoryGroups, GetHistoryGroups } from '/@/api/ai/chat'; |
| | | import router from '/@/router'; |
| | | import { activeRoomId, chatRoomList } from '/@/stores/chatRoom'; |
| | | import { DateFilter, dateFilterMap } from '/@/model/types/date'; |
| | | import { debounce, getRecentDateRange } from '/@/utils/util'; |
| | | import moment from 'moment'; |
| | | import { computed, onMounted, ref, watch } from 'vue'; |
| | | import type { ChatRoomItem } from './types'; |
| | | import { DeleteHistoryGroups } from '/@/api/ai/chat'; |
| | | import { useSearch } from '/@/hooks/useSearch'; |
| | | import { gotoRoute } from '/@/utils/route'; |
| | | import { DateFilter, dateFilterMap } from '/@/model/types/date'; |
| | | import { activeRoomId, chatRoomList, gotoAnswerPage, newChatRoomClick } from '/@/stores/chatRoom'; |
| | | import { debounce, getRecentDateRange } from '/@/utils/util'; |
| | | |
| | | const chatRoomRef = ref<HTMLDivElement>(null); |
| | | const queryParams = ref({ |
| | | title: '', |
| | | }); |
| | | |
| | | const gotoAnswerPage = (room: ChatRoomItem) => { |
| | | if (room.isInitial) { |
| | | gotoRoute({ |
| | | name: 'Home', |
| | | query: { |
| | | id: room.id, |
| | | }, |
| | | }); |
| | | } else { |
| | | gotoRoute({ |
| | | name: 'AskAnswer', |
| | | query: { |
| | | id: room.id, |
| | | }, |
| | | }); |
| | | } |
| | | |
| | | activeRoomId.value = room.id; |
| | | }; |
| | | |
| | | const newChatRoomClick = async () => { |
| | | const res = await CreateHistoryGroup({ |
| | | group_title: 'chat room', |
| | | }); |
| | | |
| | | const newRoom = { |
| | | id: res.history_group_id, |
| | | isInitial: true, |
| | | title: 'chat room', |
| | | }; |
| | | if (!chatRoomList.value) { |
| | | chatRoomList.value = [newRoom]; |
| | | } else { |
| | | chatRoomList.value.unshift(newRoom); |
| | | } |
| | | gotoAnswerPage(newRoom); |
| | | }; |
| | | |
| | | const roomClick = (room: ChatRoomItem) => { |
| | | activeRoomId.value = room.id; |
| | | |
| | | gotoAnswerPage(room); |
| | | }; |
| | | |
| | |
| | | //#endregion |
| | | |
| | | onMounted(async () => { |
| | | const res = await GetHistoryGroups(); |
| | | |
| | | const resData = (res?.groups || []) as any[]; |
| | | // 按最晚时间到最早时间 |
| | | chatRoomList.value = resData |
| | | ?.toSorted((a, b) => { |
| | | return b.create_time.localeCompare(a.create_time); |
| | | }) |
| | | .map((item) => { |
| | | return { |
| | | id: item.group_id, |
| | | title: item.group_title, |
| | | createTime: item.create_time, |
| | | isInitial: Number(item.chat_count) === 0, |
| | | }; |
| | | }); |
| | | if (!chatRoomList.value || chatRoomList.value.length === 0 ) { |
| | | newChatRoomClick(); |
| | | } else { |
| | | roomClick(chatRoomList.value[0]); |
| | | } |
| | | // const res = await GetHistoryGroups(); |
| | | // const resData = (res?.groups || []) as any[]; |
| | | // // 按最晚时间到最早时间 |
| | | // chatRoomList.value = resData |
| | | // ?.toSorted((a, b) => { |
| | | // return b.create_time.localeCompare(a.create_time); |
| | | // }) |
| | | // .map((item) => { |
| | | // return { |
| | | // id: item.group_id, |
| | | // title: item.group_title, |
| | | // createTime: item.create_time, |
| | | // isInitial: Number(item.chat_count) === 0, |
| | | // }; |
| | | // }); |
| | | // if (!chatRoomList.value || chatRoomList.value.length === 0) { |
| | | // newChatRoomClick(); |
| | | // } else { |
| | | // const toClickRoom = activeChatRoom.value ?? chatRoomList.value[0]; |
| | | // roomClick(toClickRoom); |
| | | // } |
| | | }); |
| | | </script> |
| | | <style scoped lang="scss"> |