|
@@ -103,6 +103,15 @@ const openPromptDialog = ref(false)
|
|
|
|
|
|
// 模型选择
|
|
|
const modelOptions = ref<LmConfigInfo[]>([])
|
|
|
+const modelLabel = computed(()=> {
|
|
|
+ const select = modelOptions.value.filter(i=>i.id === selectedModel.value)
|
|
|
+
|
|
|
+ if (select.length === 0) {
|
|
|
+ return "选择模型"
|
|
|
+ }
|
|
|
+
|
|
|
+ return select[0].modelName
|
|
|
+})
|
|
|
|
|
|
const { loading: loadingModels, doLoading: loadModel } = useLoading(async () => {
|
|
|
const data: { list: LmConfigInfo[]; total: number } = await assist.model.getList().catch(() => {
|
|
@@ -373,6 +382,9 @@ const scrollToBottom = () => {
|
|
|
// 会话管理模块
|
|
|
// 所有会话
|
|
|
const conversations = ref<LmSession[]>([])
|
|
|
+const displayConversations = computed(() => {
|
|
|
+ return [{ session_id: -1, title: '收藏夹' }, ...conversations.value]
|
|
|
+})
|
|
|
const { loading: loadConversations, doLoading: doLoadConversations } = useLoading(async () => {
|
|
|
const data: { list: LmSession[]; total: number } = await assist.session
|
|
|
.list({
|
|
@@ -386,13 +398,7 @@ const { loading: loadConversations, doLoading: doLoadConversations } = useLoadin
|
|
|
}
|
|
|
})
|
|
|
|
|
|
- conversations.value = [
|
|
|
- {
|
|
|
- session_id: -1,
|
|
|
- title: '收藏对话',
|
|
|
- },
|
|
|
- ...data.list,
|
|
|
- ]
|
|
|
+ conversations.value = data.list
|
|
|
})
|
|
|
|
|
|
onMounted(doLoadConversations)
|
|
@@ -473,11 +479,11 @@ const { loading: loadingDeleteConversation, doLoading: deleteConversation } = us
|
|
|
await doLoadConversations()
|
|
|
})
|
|
|
|
|
|
-const {loading: loadingDeleteAllConversion,doLoading: deleteAllConversion } = useLoading(async () => {
|
|
|
- const confirm = await ElMessageBox.confirm(`确定要删除所有对话吗?此操作不可恢复!`, "警告", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "error",
|
|
|
+const { loading: loadingDeleteAllConversion, doLoading: deleteAllConversion } = useLoading(async () => {
|
|
|
+ const confirm = await ElMessageBox.confirm(`确定要删除所有对话吗?此操作不可恢复!`, '警告', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'error',
|
|
|
})
|
|
|
|
|
|
if (confirm !== 'confirm') {
|
|
@@ -485,7 +491,7 @@ const {loading: loadingDeleteAllConversion,doLoading: deleteAllConversion } = us
|
|
|
}
|
|
|
|
|
|
const res = await assist.session
|
|
|
- .del(conversations.value.map((it)=>it.session_id))
|
|
|
+ .del(conversations.value.map((it) => it.session_id))
|
|
|
.then(() => true)
|
|
|
.catch(() => false)
|
|
|
.finally(() => (currentDeletingConversation.value = -1))
|
|
@@ -711,6 +717,11 @@ const { loading: exportConversationLoading, doLoading: exportConversation } = us
|
|
|
|
|
|
exportId.value = -1
|
|
|
})
|
|
|
+
|
|
|
+
|
|
|
+const isBlank = (str:string)=> {
|
|
|
+ return str == null || str.trim().length === 0
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
@@ -745,7 +756,7 @@ const { loading: exportConversationLoading, doLoading: exportConversation } = us
|
|
|
</div>
|
|
|
<el-scrollbar class="conversation-list" v-loading="loadConversations || loadingDeleteAllConversion">
|
|
|
<div
|
|
|
- v-for="conv in conversations"
|
|
|
+ v-for="conv in displayConversations"
|
|
|
:key="conv.session_id"
|
|
|
@click="editingConversationId !== conv.session_id ? selectConversation(conv.session_id) : () => {}"
|
|
|
:class="['conversation-item', { active: activeConversationId === conv.session_id, editing: editingConversationId === conv.session_id }]"
|
|
@@ -853,7 +864,7 @@ const { loading: exportConversationLoading, doLoading: exportConversation } = us
|
|
|
<el-avatar class="message-avatar" :icon="ChatDotRound" />
|
|
|
<div class="ai-message-content">
|
|
|
<div class="message-bubble ai-bubble">
|
|
|
- <Markdown v-if="message.render_content !== ''" :content="message.render_content" :plugins="plugins" class="markdown-content" />
|
|
|
+ <Markdown v-if="!isBlank(message.render_content)" :content="message.render_content" :plugins="plugins" class="markdown-content" />
|
|
|
<div v-else class="loading-container">
|
|
|
<div class="loading-dots">
|
|
|
<span class="dot"></span>
|
|
@@ -997,7 +1008,7 @@ const { loading: exportConversationLoading, doLoading: exportConversation } = us
|
|
|
<el-dropdown trigger="click" placement="top-start">
|
|
|
<button class="control-btn model-btn">
|
|
|
<el-icon><Setting /></el-icon>
|
|
|
- <span>模型</span>
|
|
|
+ <span>{{ modelLabel }}</span>
|
|
|
</button>
|
|
|
<template #dropdown>
|
|
|
<el-dropdown-menu>
|
|
@@ -1017,7 +1028,6 @@ const { loading: exportConversationLoading, doLoading: exportConversation } = us
|
|
|
<button class="control-btn prompt-btn" @click="openPromptDialog = true">
|
|
|
<el-icon><Document /></el-icon>
|
|
|
<span v-if="prompt">提示词:{{ prompt.length }}字</span>
|
|
|
- <span v-else>提示词</span>
|
|
|
</button>
|
|
|
</div>
|
|
|
|