feat: 增加会话改名和删除的接口
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import { getRequest, postRequest, ResponseModel } from '@utils/request'
|
import { getRequest, postRequest, patchRequest, deleteRequest, ResponseModel } from '@utils/request'
|
||||||
|
|
||||||
// 创建会话 的请求参数和响应数据结构
|
// 创建会话 的请求参数和响应数据结构
|
||||||
export interface CreateSessionRequest {
|
export interface CreateSessionRequest {
|
||||||
@@ -83,3 +83,40 @@ export const getSessionMessages = async (params: SessionMessagesRequest) => {
|
|||||||
})
|
})
|
||||||
return res.data as SessionMessagesResponse
|
return res.data as SessionMessagesResponse
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// PATCH /api/sessions/{session_id} 的请求参数和响应数据结构
|
||||||
|
export interface UpdateSessionRequest {
|
||||||
|
session_id: string
|
||||||
|
title: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface UpdateSessionResponse {
|
||||||
|
success: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新会话信息 的函数实现
|
||||||
|
export const updateSession = async (params: UpdateSessionRequest) => {
|
||||||
|
const res: ResponseModel = await patchRequest(`/nianxx/api/sessions/${params.session_id}`, {
|
||||||
|
title: params.title,
|
||||||
|
})
|
||||||
|
return res.data as UpdateSessionResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// DELETE /api/sessions/{session_id} 的请求参数和响应数据结构
|
||||||
|
export interface DeleteSessionRequest {
|
||||||
|
session_id: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DeleteSessionResponse {
|
||||||
|
success: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除会话 的函数实现
|
||||||
|
export const deleteSession = async (params: DeleteSessionRequest) => {
|
||||||
|
const res: ResponseModel = await deleteRequest(`/nianxx/api/sessions/${params.session_id}`)
|
||||||
|
return res.data as DeleteSessionResponse
|
||||||
|
}
|
||||||
@@ -163,6 +163,32 @@ export const getRequest = <ResponseModel>(url: string, params?: any, options?: a
|
|||||||
}) as Promise<ResponseModel>
|
}) as Promise<ResponseModel>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 封装基于 request 的 PATCH 请求
|
||||||
|
export const patchRequest = <ResponseModel>(url: string, data?: any, options?: any): Promise<ResponseModel> => {
|
||||||
|
return instance.request({
|
||||||
|
url,
|
||||||
|
method: 'patch',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
data,
|
||||||
|
...(options || {}),
|
||||||
|
}) as Promise<ResponseModel>
|
||||||
|
}
|
||||||
|
|
||||||
|
// 封装基于 request 的 DELETE 请求
|
||||||
|
export const deleteRequest = <ResponseModel>(url: string, data?: any, options?: any): Promise<ResponseModel> => {
|
||||||
|
return instance.request({
|
||||||
|
url,
|
||||||
|
method: 'delete',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
data,
|
||||||
|
...(options || {}),
|
||||||
|
}) as Promise<ResponseModel>
|
||||||
|
}
|
||||||
|
|
||||||
export default instance
|
export default instance
|
||||||
|
|
||||||
/// 响应模型
|
/// 响应模型
|
||||||
|
|||||||
@@ -36,46 +36,40 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 重命名对话框 -->
|
|
||||||
<el-dialog v-model="renameDialogFormVisible" title="重命名对话" width="500">
|
|
||||||
<el-form :model="newMessageName">
|
|
||||||
<el-form-item label="对话名称" :label-width="formLabelWidth">
|
|
||||||
<el-input v-model="newMessageName" autocomplete="off" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<template #footer>
|
|
||||||
<div class="dialog-footer">
|
|
||||||
<el-button @click="renameDialogFormVisible = false">取消</el-button>
|
|
||||||
<el-button type="primary" @click="submitNameChange">
|
|
||||||
确定
|
|
||||||
</el-button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-dialog>
|
|
||||||
|
|
||||||
<!-- 删除确认对话框 -->
|
|
||||||
<el-dialog v-model="deleteDialogVisible" title="温馨提示" width="500" center>
|
|
||||||
<span>
|
|
||||||
您确定删除该会话吗?删除后将无法恢复!<br />
|
|
||||||
</span>
|
|
||||||
<template #footer>
|
|
||||||
<div class="dialog-footer">
|
|
||||||
<el-button @click="deleteDialogVisible = false">取消</el-button>
|
|
||||||
<el-button type="primary" @click="submitDelete">
|
|
||||||
确定
|
|
||||||
</el-button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-dialog>
|
|
||||||
|
|
||||||
</aside>
|
</aside>
|
||||||
|
|
||||||
|
<!-- 重命名对话框 -->
|
||||||
|
<el-dialog v-model="renameDialogFormVisible" title="重命名对话" width="500">
|
||||||
|
<el-form :model="newMessageName">
|
||||||
|
<el-form-item label="对话名称" :label-width="formLabelWidth">
|
||||||
|
<el-input v-model="newMessageName" autocomplete="off" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button @click="renameDialogFormVisible = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="submitNameChange">确定</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<!-- 删除确认对话框 -->
|
||||||
|
<el-dialog v-model="deleteDialogVisible" title="温馨提示" width="500">
|
||||||
|
<span>您确定删除该会话吗?删除后将无法恢复!</span>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button @click="deleteDialogVisible = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="submitDelete">确定</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted, defineEmits } from 'vue'
|
import { ref, onMounted, defineEmits } from 'vue'
|
||||||
import { RiAddLine, RiArrowRightSLine, RiArrowDownSLine } from '@remixicon/vue'
|
import { RiAddLine, RiArrowRightSLine, RiArrowDownSLine } from '@remixicon/vue'
|
||||||
import { getSessionList } from '../../api/SessionsApi';
|
import { getSessionList, deleteSession, updateSession } from '../../api/SessionsApi';
|
||||||
|
|
||||||
const deleteDialogVisible = ref(false)
|
const deleteDialogVisible = ref(false)
|
||||||
const renameDialogFormVisible = ref(false)
|
const renameDialogFormVisible = ref(false)
|
||||||
@@ -99,6 +93,10 @@ const emit = defineEmits(['new-chat', 'select-chat'])
|
|||||||
/// 添加新对话
|
/// 添加新对话
|
||||||
const addNewChat = () => {
|
const addNewChat = () => {
|
||||||
console.log('add new chat')
|
console.log('add new chat')
|
||||||
|
updateNewChat()
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateNewChat = () => {
|
||||||
// 触发新对话事件
|
// 触发新对话事件
|
||||||
emit('new-chat')
|
emit('new-chat')
|
||||||
// 清空选择的历史消息ID
|
// 清空选择的历史消息ID
|
||||||
@@ -126,15 +124,28 @@ const deleteHistoryMessage = (conversationId: string) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// 提交重命名
|
/// 提交重命名
|
||||||
const submitNameChange = () => {
|
const submitNameChange = async () => {
|
||||||
console.log('submit name change', newMessageName.value)
|
console.log('submit name change', newMessageName.value)
|
||||||
renameDialogFormVisible.value = false
|
renameDialogFormVisible.value = false
|
||||||
|
const res = await updateSession({
|
||||||
|
session_id: selectedConversationId.value,
|
||||||
|
title: newMessageName.value
|
||||||
|
})
|
||||||
|
if (res && res.success) {
|
||||||
|
updateNewChat()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 提交删除
|
/// 提交删除
|
||||||
const submitDelete = () => {
|
const submitDelete = async () => {
|
||||||
console.log('submit delete')
|
console.log('submit delete')
|
||||||
deleteDialogVisible.value = false
|
deleteDialogVisible.value = false
|
||||||
|
const res = await deleteSession({
|
||||||
|
session_id: selectedConversationId.value
|
||||||
|
})
|
||||||
|
if (res && res.success) {
|
||||||
|
updateNewChat()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 页面加载时获取历史会话列表
|
/// 页面加载时获取历史会话列表
|
||||||
|
|||||||
Reference in New Issue
Block a user