From cda01c12203f63a5c18d2996baac89673dcf1104 Mon Sep 17 00:00:00 2001
From: lipenghui <mrkezhi@163.com>
Date: Mon, 5 Feb 2024 11:55:28 +0800
Subject: [PATCH] =?UTF-8?q?fix:1.=20=E6=96=B0=E5=BB=BA=E4=BC=9A=E8=AF=9D?=
 =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=88=97=E8=A1=A8=E9=80=89=E4=B8=AD=E6=96=B9?=
 =?UTF-8?q?=E5=BC=8F=E6=94=B9=E4=B8=BA=E4=BD=BF=E7=94=A8id=E8=8E=B7?=
 =?UTF-8?q?=E5=8F=96=EF=BC=9B2.=20=E4=BC=9A=E8=AF=9D=E5=88=97=E8=A1=A8?=
 =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=89=AF=E6=A0=87=E9=A2=98=EF=BC=9B3.=20?=
 =?UTF-8?q?=E8=A7=92=E8=89=B2=E4=B8=8E=E5=BA=94=E7=94=A8=E6=96=B0=E5=A2=9E?=
 =?UTF-8?q?=E6=98=AF=E5=A2=9E=E5=8A=A0contextCount=E5=AD=97=E6=AE=B5?=
 =?UTF-8?q?=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/api/base/message.ts                  |  1 +
 src/components/AppRoleDefault/index.d.ts |  2 ++
 src/components/AppRoleDefault/index.vue  |  3 +++
 src/components/AppSubMenuList/index.vue  |  2 +-
 src/store/moules/messageStore/index.d.ts |  3 ++-
 src/views/conversation/index.vue         |  4 ++--
 src/views/conversationNet/index.vue      |  4 ++--
 src/views/repository/index.vue           |  4 ++--
 src/views/role/index.vue                 | 21 +++++++++++++++++----
 src/views/textToImage/index.vue          |  4 ++--
 src/views/visualAnalysis/index.vue       |  4 ++--
 11 files changed, 36 insertions(+), 16 deletions(-)

diff --git a/src/api/base/message.ts b/src/api/base/message.ts
index 8910284..0e5559f 100644
--- a/src/api/base/message.ts
+++ b/src/api/base/message.ts
@@ -11,6 +11,7 @@ export async function addMessage(data: {
   sort: number
   roleId?: string
   modelType: ModelTypeEnum
+  contextCount?: number | null // 携带上下文数量
 }) {
   return defHttp.post({
     url: `/open-chat/chat/conversation/save`,
diff --git a/src/components/AppRoleDefault/index.d.ts b/src/components/AppRoleDefault/index.d.ts
index 781a89a..4606952 100644
--- a/src/components/AppRoleDefault/index.d.ts
+++ b/src/components/AppRoleDefault/index.d.ts
@@ -6,6 +6,7 @@ export interface RoleData {
   remark: string
   type: number
   modelType: number
+  contextCount: number | null
 }
 
 interface RoleInfoAppModel {
@@ -16,6 +17,7 @@ interface RoleInfoAppModel {
   roleImg: string
   type: number
   modelType: number
+  contextCount: number | null
 }
 
 export interface AppGroup {
diff --git a/src/components/AppRoleDefault/index.vue b/src/components/AppRoleDefault/index.vue
index 07ca7d1..beb005b 100644
--- a/src/components/AppRoleDefault/index.vue
+++ b/src/components/AppRoleDefault/index.vue
@@ -13,6 +13,8 @@ const typeIndex = ref(0)
 // 角色
 function getRoleData() {
   getRole(1).then((res) => {
+    console.log('角色', res)
+
     roleList.value = res
   })
 }
@@ -20,6 +22,7 @@ getRoleData()
 // 应用
 function getAppData() {
   getAppList().then((res) => {
+    console.log('应用', res)
     application.value = res
   })
 }
diff --git a/src/components/AppSubMenuList/index.vue b/src/components/AppSubMenuList/index.vue
index e6f1e0f..73f17aa 100644
--- a/src/components/AppSubMenuList/index.vue
+++ b/src/components/AppSubMenuList/index.vue
@@ -79,7 +79,7 @@ function handleBlur(index: number, item: SubMenuItem, inputValue?: string) {
           {{ item.title }}
         </p>
         <p class="content truncate">
-          {{ item.content }}
+          {{ item.firstMsg }}
         </p>
         <div class="actions absolute">
           <SvgIcon
diff --git a/src/store/moules/messageStore/index.d.ts b/src/store/moules/messageStore/index.d.ts
index d2681ba..ad4a815 100644
--- a/src/store/moules/messageStore/index.d.ts
+++ b/src/store/moules/messageStore/index.d.ts
@@ -17,9 +17,10 @@ export interface ConversationData {
   updateTime: string
   updateUser: string
   userId: string
-  content: string
   actionType: SubMenuActionEnum
   modelType: string
+  contextCount: number | null // 上下文数量
+  firstMsg: string
 }
 
 export interface MessageStoreType {
diff --git a/src/views/conversation/index.vue b/src/views/conversation/index.vue
index 99ed242..ff58663 100644
--- a/src/views/conversation/index.vue
+++ b/src/views/conversation/index.vue
@@ -156,10 +156,10 @@ async function handleSend(value: string) {
     try {
       spinning.value = true
       messageStore.setMessageClear()
-      await addMessage({ type: MenuTypeEnum.TEXT_TO_TEXT, title: '新的对话', sort: subMenuList.value.length + 1, modelType: modelOptions[modelIndex.value].value })
+      const conversationId = await addMessage({ type: MenuTypeEnum.TEXT_TO_TEXT, title: '新的对话', sort: subMenuList.value.length + 1, modelType: modelOptions[modelIndex.value].value })
       await getConversationList()
       await nextTick()
-      subMenuActiveIndex.value = subMenuList.value.length - 1
+      subMenuActiveIndex.value = subMenuList.value.findIndex(v => v.id === conversationId)
       await handleSubMenuChange(subMenuActiveIndex.value)
       if (!conversationData.value) {
         message.error('对话发送,请稍后重试!')
diff --git a/src/views/conversationNet/index.vue b/src/views/conversationNet/index.vue
index 3031c76..6d756dc 100644
--- a/src/views/conversationNet/index.vue
+++ b/src/views/conversationNet/index.vue
@@ -156,10 +156,10 @@ async function handleSend(value: string) {
     try {
       spinning.value = true
       messageStore.setMessageClear()
-      await addMessage({ type: MenuTypeEnum.CONVERSATION_NET, title: '新的对话', sort: subMenuList.value.length + 1, modelType: modelOptions[modelIndex.value].value })
+      const conversationId = await addMessage({ type: MenuTypeEnum.CONVERSATION_NET, title: '新的对话', sort: subMenuList.value.length + 1, modelType: modelOptions[modelIndex.value].value })
       await getConversationList()
       await nextTick()
-      subMenuActiveIndex.value = subMenuList.value.length - 1
+      subMenuActiveIndex.value = subMenuList.value.findIndex(v => v.id === conversationId)
       await handleSubMenuChange(subMenuActiveIndex.value)
       if (!conversationData.value) {
         message.error('对话发送,请稍后重试!')
diff --git a/src/views/repository/index.vue b/src/views/repository/index.vue
index 46d39d7..04c868c 100644
--- a/src/views/repository/index.vue
+++ b/src/views/repository/index.vue
@@ -175,10 +175,10 @@ async function handleSend(value: string) {
     try {
       spinning.value = true
       messageStore.setMessageClear()
-      await addMessage({ type: MenuTypeEnum.REPOSITORY, title: '新的对话', sort: subMenuList.value.length + 1, modelType: modelOptions[modelIndex.value].value })
+      const conversationId = await addMessage({ type: MenuTypeEnum.REPOSITORY, title: '新的对话', sort: subMenuList.value.length + 1, modelType: modelOptions[modelIndex.value].value })
       await getConversationList()
       await nextTick()
-      subMenuActiveIndex.value = subMenuList.value.length - 1
+      subMenuActiveIndex.value = subMenuList.value.findIndex(v => v.id === conversationId)
       await handleSubMenuChange(subMenuActiveIndex.value)
       if (!conversationData.value) {
         message.error('对话发送,请稍后重试!')
diff --git a/src/views/role/index.vue b/src/views/role/index.vue
index e23fb06..8b234ba 100644
--- a/src/views/role/index.vue
+++ b/src/views/role/index.vue
@@ -308,17 +308,24 @@ async function handleRole(item: RoleData) {
     getHistoryMessage()
   }
   else {
-    await addMessage({
+    const conversationId = await addMessage({
       type: MenuTypeEnum.ROLE,
       title: item.roleName,
       roleId: item.id,
       sort: subMenuList.value.length + 1,
       modelType: item.modelType ? item.modelType : ModelTypeEnum.GPT3,
+      contextCount: item.contextCount,
     })
     await getConversationList()
     await nextTick()
     const index = subMenuList.value.findIndex(v => String(v.roleId) === item.id)
-    subMenuActiveIndex.value = index
+    if (index === -1) {
+      subMenuActiveIndex.value = subMenuList.value.findIndex(v => v.id === conversationId)
+    }
+    else {
+      subMenuActiveIndex.value = index
+    }
+
     await handleSubMenuChange(index)
     getHistoryMessage()
   }
@@ -335,17 +342,23 @@ async function handleApply(item: RoleInfoAppModel) {
     getHistoryMessage()
   }
   else {
-    await addMessage({
+    const conversationId = await addMessage({
       type: MenuTypeEnum.ROLE,
       title: item.roleName,
       roleId: item.id,
       sort: subMenuList.value.length + 1,
       modelType: item.modelType ? item.modelType : ModelTypeEnum.GPT3,
+      contextCount: item.contextCount,
     })
     await getConversationList()
     await nextTick()
     const index = subMenuList.value.findIndex(v => String(v.roleId) === item.id)
-    subMenuActiveIndex.value = index
+    if (index === -1) {
+      subMenuActiveIndex.value = subMenuList.value.findIndex(v => v.id === conversationId)
+    }
+    else {
+      subMenuActiveIndex.value = index
+    }
     await handleSubMenuChange(index)
     getHistoryMessage()
   }
diff --git a/src/views/textToImage/index.vue b/src/views/textToImage/index.vue
index f7d1f0f..338cf3e 100644
--- a/src/views/textToImage/index.vue
+++ b/src/views/textToImage/index.vue
@@ -160,10 +160,10 @@ async function handleSend(value: string) {
     try {
       spinning.value = true
       messageStore.setMessageClear()
-      await addMessage({ type: MenuTypeEnum.TEXT_TO_IMAGE, title: '新的对话', sort: subMenuList.value.length + 1, modelType: modelOptions[modelIndex.value].value })
+      const conversationId = await addMessage({ type: MenuTypeEnum.TEXT_TO_IMAGE, title: '新的对话', sort: subMenuList.value.length + 1, modelType: modelOptions[modelIndex.value].value })
       await nextTick()
       await getConversationList()
-      subMenuActiveIndex.value = subMenuList.value.length - 1
+      subMenuActiveIndex.value = subMenuList.value.findIndex(v => v.id === conversationId)
       await handleSubMenuChange(subMenuActiveIndex.value)
       if (!conversationData.value) {
         return
diff --git a/src/views/visualAnalysis/index.vue b/src/views/visualAnalysis/index.vue
index 12d63f9..7a57a5a 100644
--- a/src/views/visualAnalysis/index.vue
+++ b/src/views/visualAnalysis/index.vue
@@ -160,10 +160,10 @@ async function handleSend(value: string, fileUrl: string) {
     try {
       spinning.value = true
       messageStore.setMessageClear()
-      await addMessage({ type: MenuTypeEnum.VISUAL_ANALYSIS, title: '新的对话', sort: subMenuList.value.length + 1, modelType: modelOptions[modelIndex.value].value })
+      const conversationId = await addMessage({ type: MenuTypeEnum.VISUAL_ANALYSIS, title: '新的对话', sort: subMenuList.value.length + 1, modelType: modelOptions[modelIndex.value].value })
       await getConversationList()
       await nextTick()
-      subMenuActiveIndex.value = subMenuList.value.length - 1
+      subMenuActiveIndex.value = subMenuList.value.findIndex(v => v.id === conversationId)
       await handleSubMenuChange(subMenuActiveIndex.value)
       if (!conversationData.value) {
         message.error('对话发送,请稍后重试!')