AI对话
@@ -28,12 +28,12 @@
返回平台搜索
-
-
-
![]()
-
升级产品
-
-
+
+
+
+
+
+
diff --git a/src/views/Jyh/AI/Home/components/ViewHistoryAside/BatchManageModal.vue b/src/views/Jyh/AI/Home/components/ViewHistoryAside/BatchManageModal.vue
index 5227dc9..a30a3a5 100644
--- a/src/views/Jyh/AI/Home/components/ViewHistoryAside/BatchManageModal.vue
+++ b/src/views/Jyh/AI/Home/components/ViewHistoryAside/BatchManageModal.vue
@@ -7,13 +7,13 @@
style="width: 100%"
placeholder="请输入搜索内容"
v-model="searchText"
- @change="handleSearch"
+ @change="handleSearch('dhls')"
>
-
@@ -38,12 +37,12 @@
handlePageSizeChange('scdh', num)"
+ @current-page-change="(num)=>handlePageChange('scdh', num)"
total-item-text="总计"
/>
@@ -54,13 +53,13 @@
style="width: 100%"
placeholder="请输入搜索内容"
v-model="searchText"
- @change="handleSearch"
+ @change="handleSearch('scdh')"
>
@@ -130,26 +129,22 @@ const checkable = ref(true);
const dhlsList = ref([]); // 对话历史数据
const collectionList = ref([]); // 收藏对话数据
-// 分页状态
-const pageSize = ref(10); // 每页显示条数
-const currentPage = ref(1); // 当前页码
-
-// 计算当前页数据(对话历史)
-const currentDhlsData = computed(() => {
- const filteredData = dhlsList.value.filter(row =>
- row.title.includes(searchText.value)
- );
- const start = (currentPage.value - 1) * pageSize.value;
- return filteredData.slice(start, start + pageSize.value);
+// 分页状态(每个标签页独立)
+const dhlsPagination = ref({
+ page: 1,
+ size: 10,
+ total: 0
});
-// 计算当前页数据(收藏对话)
-const currentCollectionData = computed(() => {
- const filteredData = collectionList.value.filter(row =>
- row.title.includes(searchText.value)
- );
- const start = (currentPage.value - 1) * pageSize.value;
- return filteredData.slice(start, start + pageSize.value);
+const collectionPagination = ref({
+ page: 1,
+ size: 10,
+ total: 0
+});
+
+// 当前激活的分页对象
+const activePagination = computed(() => {
+ return selectTab.value === 'dhls' ? dhlsPagination.value : collectionPagination.value;
});
// 接口调用 - 对话历史
@@ -159,16 +154,18 @@ const getQuestionHistory = async () => {
return;
}
try {
- const {data} = await axios.post(VITE_AI_API_HOST + '/api/conversationList', {
+ const { data } = await axios.post(import.meta.env.VITE_AI_API_HOST + '/api/conversationList', {
"userId": props.username,
"list_type": "history",
"is_manage": true,
- "page": currentPage.value,
- "size": pageSize.value,
+ "page": dhlsPagination.value.page,
+ "size": dhlsPagination.value.size,
"search": searchText.value
});
- if (data.conversationList) {
- dhlsList.value = data.conversationList
+ debugger
+ if (data.data.conversationList) {
+ dhlsList.value = data.data.conversationList;
+ dhlsPagination.value.total = data.data.pagination.total || 0;
}
} catch (error) {
Message.error('获取对话历史失败');
@@ -182,16 +179,17 @@ const getQuestionCollection = async () => {
return;
}
try {
- const {data} = await axios.post(VITE_AI_API_HOST + '/api/conversationList', {
+ const { data } = await axios.post(import.meta.env.VITE_AI_API_HOST + '/api/conversationList', {
"userId": props.username,
"list_type": "collection",
"is_manage": true,
- "page": currentPage.value,
- "size": pageSize.value,
+ "page": collectionPagination.value.page,
+ "size": collectionPagination.value.size,
"search": searchText.value
});
- if (data.conversationList) {
- collectionList.value = data.conversationList
+ if (data.data.conversationList) {
+ collectionList.value = data.data.conversationList;
+ collectionPagination.value.total = data.data.pagination.total || 0;
}
} catch (error) {
Message.error('获取收藏对话失败');
@@ -201,76 +199,65 @@ const getQuestionCollection = async () => {
// 打开模态框时加载数据
const openModal = async () => {
visible.value = true;
- await fetchData(); // 调用接口
- currentPage.value = 1; // 重置页码
+ // 重置分页状态
+ dhlsPagination.value = { page: 1, size: 10, total: 0 };
+ collectionPagination.value = { page: 1, size: 10, total: 0 };
+ // 加载当前标签页数据
+ initData()
};
-// 搜索时触发数据加载
-const handleSearch = async () => {
- currentPage.value = 1; // 搜索后重置到第一页
- await fetchData(); // 调用接口
+// 搜索处理
+const handleSearch = async (tabType) => {
+ // 重置当前标签页的分页到第一页
+ if (tabType === 'dhls') {
+ dhlsPagination.value.page = 1;
+ await getQuestionHistory();
+ } else {
+ collectionPagination.value.page = 1;
+ await getQuestionCollection();
+ }
};
-// 分页大小变化时触发数据加载
+// 分页大小变化
const handlePageSizeChange = async (size) => {
- pageSize.value = size;
- currentPage.value = 1; // 切换页大小后重置到第一页
- await fetchData(); // 调用接口
+ let tabType = selectTab.value
+ debugger
+ if (tabType === 'dhls') {
+ dhlsPagination.value.size = size;
+ dhlsPagination.value.page = 1; // 重置到第一页
+ await getQuestionHistory();
+ } else {
+ collectionPagination.value.size = size;
+ collectionPagination.value.page = 1; // 重置到第一页
+ await getQuestionCollection();
+ }
};
-// 页码变化时触发数据加载
+// 页码变化
const handlePageChange = async (page) => {
- currentPage.value = page;
- await fetchData(); // 调用接口
-};
-
-// 统一数据获取方法
-const fetchData = async () => {
- if (!props.username) {
- Message.error('请先登录');
- return;
- }
-
- // 构建公共参数
- const commonParams = {
- userId: props.username,
- is_manage: true,
- page: currentPage.value,
- size: pageSize.value,
- search: searchText.value,
- };
-
- // 获取对话历史
- const historyData = await axios.post(
- `${import.meta.env.VITE_AI_API_HOST}/api/conversationList`,
- { ...commonParams, list_type: 'history' }
- );
- if (historyData.data.conversationList) {
- dhlsList.value = historyData.data.conversationList;
- }
-
- // 获取收藏对话
- const collectionData = await axios.post(
- `${import.meta.env.VITE_AI_API_HOST}/api/conversationList`,
- { ...commonParams, list_type: 'collection' }
- );
- if (collectionData.data.conversationList) {
- collectionList.value = collectionData.data.conversationList;
+ debugger
+ let tabType = selectTab.value
+ if (tabType === 'dhls') {
+ dhlsPagination.value.page = page;
+ await getQuestionHistory();
+ } else {
+ collectionPagination.value.page = page;
+ await getQuestionCollection();
}
};
-
// 选中的行ID
const selectedRowKeys = ref([]);
// 复选框选中状态变化
const handleCheckChange = (tabType, checkedKeys) => {
- if (tabType === 'dhls') {
- selectedRowKeys.value = checkedKeys;
- } else {
- selectedRowKeys.value = checkedKeys;
- }
+ selectedRowKeys.value = checkedKeys;
};
+const initData = async () => {
+ await getQuestionCollection();
+ await getQuestionHistory();
+}
+
// 删除对话
const handleDelete = async (conversationIds, tabType) => {
if (!props.username) {
@@ -288,7 +275,8 @@ const handleDelete = async (conversationIds, tabType) => {
);
if (res.data.code === 20000) {
Message.success(res.data.message || '删除成功');
- await fetchData(); // 删除后重新加载数据
+ // 刷新当前标签页的数据
+ initData()
selectedRowKeys.value = []; // 清空选中项
} else {
Message.error(res.data.message || '删除失败');
@@ -310,8 +298,8 @@ const handleBatchDelete = () => {
Message.confirm({
title: '确认删除',
content: `确定要删除选中的 ${selectedRowKeys.value.length} 条对话吗?`,
- onConfirm: () => {
- handleDelete(selectedRowKeys.value, selectTab.value);
+ onConfirm: async () => {
+ await handleDelete(selectedRowKeys.value, selectTab.value === 'dhls' ? 'history' : 'collection');
}
});
};
diff --git a/src/views/Jyh/AI/Home/components/ViewHistoryAside/ViewHistoryAside.vue b/src/views/Jyh/AI/Home/components/ViewHistoryAside/ViewHistoryAside.vue
index af29c2e..c4cefc7 100644
--- a/src/views/Jyh/AI/Home/components/ViewHistoryAside/ViewHistoryAside.vue
+++ b/src/views/Jyh/AI/Home/components/ViewHistoryAside/ViewHistoryAside.vue
@@ -339,7 +339,7 @@ const toggleCollect = async (item) => {
try {
const res = await axios.post(`${VITE_AI_API_HOST}/api/toggleConversationCollect`, {
userId: props.username,
- conversationId: item.conversationId
+ conversationIdList: [item.conversationId]
});
if (res.data.code === 20000) {
diff --git a/src/views/Jyh/AI/Home/index.vue b/src/views/Jyh/AI/Home/index.vue
index 4909a29..ca3648d 100644
--- a/src/views/Jyh/AI/Home/index.vue
+++ b/src/views/Jyh/AI/Home/index.vue
@@ -277,8 +277,8 @@ const getAIAnswer = async (content) => {
let arr = JSON.parse(response.data[type]);
if(arr&&arr.length===1) {
messages.value[messages.value.length - 1].type = 'critical_software_info';
- messages.value[messages.value.length - 1].id = arr[0]?.id;
- messages.value[messages.value.length - 1].software_name = arr[0]?.software_name;
+ messages.value[messages.value.length - 1].id = arr[0]?.id || arr[0]?.ID;
+ messages.value[messages.value.length - 1].software_name = arr[0]?.software_name || arr[0]['软件名称'];
}
}
}
@@ -399,7 +399,7 @@ const getConversationDetail = async (convId: string) => {
conversationId: convId,
},
});
- const detail = response.data;
+ const detail = response.data.messages;
// 处理详情数据(如回显消息列表)
handleDetailResponse(detail);
} catch (error) {
@@ -410,8 +410,36 @@ const getConversationDetail = async (convId: string) => {
// 处理详情数据(示例:更新消息列表)
const handleDetailResponse = (detail: any) => {
+ debugger
// 假设接口返回消息列表为 messagesList
- messages.value = detail.messages || [];
+ messages.value = detail.map(i=>{
+ let messages = i;
+ if(i.role=== 'user') {
+ return messages
+ } else {
+ let type = i.type;
+ let table_name = i.table_name;
+ if(type==='text') {
+ messages.content = i.text;
+ messages.loading = false;
+ messages.type = 'text';
+ } else if(type==='df') {
+ messages.content = i.content;
+ messages.loading = false;
+ messages.type = 'df';
+ // 判断是否软件详情
+ if(table_name[0]==='critical_software_info'&&table_name.length===1) {
+ let arr = JSON.parse(i.content);
+ if(arr&&arr.length===1) {
+ messages.type = 'critical_software_info';
+ messages.id = arr[0]?.id || arr[0]?.ID;
+ messages.software_name = arr[0]?.software_name || arr[0]['软件名称'];
+ }
+ }
+ }
+ return messages
+ }
+ })
startChat.value = true; // 显示聊天界面
nextTick(() => {
conversationRef.value?.scrollTo({