yangyin
2024-11-26 2e949e1e25db238f021ba6c1f033b79b1a13af69
src/layout/component/sidebar/components/ChatRecord.vue
@@ -49,8 +49,7 @@
               <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="ywifont invisible ywicon-bianji group-hover:visible !text-sm"></div> -->
                  <div class="ywifont invisible ywicon-bianji group-hover:visible !text-sm" @click.stop="editChat(item)"></div>
                  <el-popconfirm title="确定删除聊天记录?" @confirm.stop="confirmDeleteChatRoom(item)" width="180">
                     <template #reference>
                        <div class="ywifont invisible ywicon-shanchu3 group-hover:visible"></div>
@@ -65,23 +64,19 @@
<script setup lang="ts">
import { Search } from '@element-plus/icons-vue';
import { computed, onMounted, onUnmounted, reactive, ref, watch } from 'vue';
import type { ChatRoomItem } from './types';
import { CreateHistoryGroup, DeleteHistoryGroups, GetHistoryGroups } from '/@/api/ai/chat';
import router from '/@/router';
import { activeChatRoom, activeRoomId, chatRoomList, gotoAnswerPage, newChatRoomClick } from '/@/stores/chatRoom';
import { DateFilter, dateFilterMap } from '/@/model/types/date';
import { debounce, getRecentDateRange } from '/@/utils/util';
import { ElMessage, ElMessageBox } from 'element-plus';
import moment from 'moment';
import { computed, onMounted, ref, watch } from 'vue';
import type { ChatRoomItem } from './types';
import { DeleteHistoryGroups, setHistoryGroupTitle } from '/@/api/ai/chat';
import { useSearch } from '/@/hooks/useSearch';
import { gotoRoute } from '/@/utils/route';
import emitter from '/@/utils/mitt';
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 roomClick = (room: ChatRoomItem) => {
   activeRoomId.value = room.id;
@@ -103,7 +98,32 @@
   roomClick(chatRoomList.value[0]);
   chatRoomRef.value.firstElementChild?.scrollIntoView();
};
const editChat = (room: ChatRoomItem) => {
   ElMessageBox.prompt('', '重命名', {
      confirmButtonText: '确认',
      cancelButtonText: '取消',
      inputPattern: /^[\s\S]*.*[^\s][\s\S]*$/,
      inputValue: room.title,
      inputErrorMessage: '请输入新的名称',
   })
      .then(async (edit) => {
         const res = await setHistoryGroupTitle({
            history_group_id: room.id,
            title: edit.value,
         });
         if (res.json_ok) {
            const foundIndex = chatRoomList.value.findIndex((item) => item.id === activeRoomId.value);
            chatRoomList.value[foundIndex].title = edit.value;
            chatRoomRef.value.firstElementChild?.scrollIntoView();
         }
      })
      .catch(({ value }) => {
         ElMessage({
            type: 'info',
            message: '取消修改',
         });
      });
};
//#region ====================== 日期筛选 ======================
const activeDateFilter = ref<DateFilter>(DateFilter.All);
@@ -150,31 +170,28 @@
//#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 {
      const toClickRoom = activeChatRoom.value ?? chatRoomList.value[0];
      roomClick(toClickRoom);
   }
   // 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">
.set-input {