diff --git a/backend/apps/chat/curd/chat.py b/backend/apps/chat/curd/chat.py index 7425863a..1310b669 100644 --- a/backend/apps/chat/curd/chat.py +++ b/backend/apps/chat/curd/chat.py @@ -4,7 +4,6 @@ from typing import List import orjson from sqlalchemy import and_ from sqlalchemy.orm import load_only -from sqlmodel import select from apps.chat.models.chat_model import Chat, ChatRecord, CreateChat, ChatInfo, RenameChat, ChatQuestion from apps.datasource.models.datasource import CoreDatasource @@ -13,8 +12,9 @@ from common.utils.utils import extract_nested_json def list_chats(session: SessionDep, current_user: CurrentUser) -> List[Chat]: - chart_list = session.exec( - select(Chat).where(Chat.create_by == current_user.id).order_by(Chat.create_time.desc())).all() + oid = current_user.oid if current_user.oid is not None else 1 + chart_list = session.query(Chat).filter(and_(Chat.create_by == current_user.id, Chat.oid == oid)).order_by( + Chat.create_time.desc()).all() return chart_list @@ -149,6 +149,7 @@ def create_chat(session: SessionDep, current_user: CurrentUser, create_chat_obj: chat = Chat(create_time=datetime.datetime.now(), create_by=current_user.id, + oid=current_user.oid if current_user.oid is not None else 1, brief=create_chat_obj.question.strip()[:20]) ds: CoreDatasource | None = None if create_chat_obj.datasource: diff --git a/frontend/src/views/chat/ChatToolBar.vue b/frontend/src/views/chat/ChatToolBar.vue new file mode 100644 index 00000000..e065d10a --- /dev/null +++ b/frontend/src/views/chat/ChatToolBar.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/frontend/src/views/chat/answer/BaseAnswer.vue b/frontend/src/views/chat/answer/BaseAnswer.vue index efb30e67..e4b2df6b 100644 --- a/frontend/src/views/chat/answer/BaseAnswer.vue +++ b/frontend/src/views/chat/answer/BaseAnswer.vue @@ -70,9 +70,9 @@ onMounted(() => { -
- {{ datetimeFormat(message.record?.create_time) }} -
- + @@ -296,9 +284,11 @@ import ChartAnswer from './answer/ChartAnswer.vue' import AnalysisAnswer from './answer/AnalysisAnswer.vue' import PredictAnswer from './answer/PredictAnswer.vue' import UserChat from './chat-block/UserChat.vue' +import ChartBlock from './chat-block/ChartBlock.vue' import RecommendQuestion from './RecommendQuestion.vue' import ChatListContainer from './ChatListContainer.vue' import ChatCreator from '@/views/chat/ChatCreator.vue' +import ChatToolBar from './ChatToolBar.vue' import { useI18n } from 'vue-i18n' import { endsWith, find, startsWith } from 'lodash-es' import icon_new_chat_outlined from '@/assets/svg/icon_new_chat_outlined.svg' @@ -308,7 +298,6 @@ import icon_screen_outlined from '@/assets/svg/icon_screen_outlined.svg' import icon_start_outlined from '@/assets/svg/icon_start_outlined.svg' import logo_fold from '@/assets/LOGO-fold.svg' import logo from '@/assets/LOGO.svg' -import { datetimeFormat } from '@/utils/utils.ts' import { useAssistantStore } from '@/stores/assistant' const assistantStore = useAssistantStore() @@ -839,63 +828,43 @@ defineExpose({ color: rgba(31, 35, 41, 1); } -.tool-container { +.tool-btns { display: flex; flex-direction: row; align-items: center; - justify-content: space-between; flex-wrap: wrap; - min-height: 22px; + column-gap: 16px; + row-gap: 8px; - margin-top: 12px; - margin-bottom: 12px; - - .tool-times { + .tool-btn { font-size: 14px; font-weight: 400; line-height: 22px; color: rgba(100, 106, 115, 1); + + .tool-btn-inner { + display: flex; + flex-direction: row; + align-items: center; + } + + &:hover { + background: rgba(31, 35, 41, 0.1); + } + &:active { + background: rgba(31, 35, 41, 0.1); + } } - .tool-btns { - display: flex; - flex-direction: row; - align-items: center; - flex-wrap: wrap; + .btn-text { + margin-left: 4px; + } - column-gap: 16px; - row-gap: 8px; - - .tool-btn { - font-size: 14px; - font-weight: 400; - line-height: 22px; - color: rgba(100, 106, 115, 1); - - .tool-btn-inner { - display: flex; - flex-direction: row; - align-items: center; - } - - &:hover { - background: rgba(31, 35, 41, 0.1); - } - &:active { - background: rgba(31, 35, 41, 0.1); - } - } - - .btn-text { - margin-left: 4px; - } - - .divider { - width: 1px; - height: 16px; - border-left: 1px solid rgba(31, 35, 41, 0.15); - } + .divider { + width: 1px; + height: 16px; + border-left: 1px solid rgba(31, 35, 41, 0.15); } }