|
|
@@ -1,4 +1,5 @@
|
|
|
<script setup lang="ts">
|
|
|
+import { ref } from 'vue';
|
|
|
import { onMounted, onUnmounted, nextTick } from 'vue';
|
|
|
import { Image, Input, Button } from 'ant-design-vue';
|
|
|
import { UserOutlined, RobotOutlined, SearchOutlined, CustomerServiceOutlined } from '@ant-design/icons-vue';
|
|
|
@@ -82,10 +83,10 @@ onUnmounted(() => {
|
|
|
// 获取搜索聊天记录列表
|
|
|
async function getSearchChatRecordList(keyword: string) {
|
|
|
if (loading.value) return;
|
|
|
-
|
|
|
+
|
|
|
loading.value = true;
|
|
|
isSearchMode.value = true;
|
|
|
-
|
|
|
+
|
|
|
try {
|
|
|
const patientId = (props.data as any)?.patientId || (props.data as any)?.id?.toString();
|
|
|
if (!patientId) {
|
|
|
@@ -94,19 +95,19 @@ async function getSearchChatRecordList(keyword: string) {
|
|
|
loading.value = false;
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 重置分页
|
|
|
currentPage.value = 1;
|
|
|
-
|
|
|
+
|
|
|
const res = await getConsultChatListMethod(currentPage.value, pageSize, patientId, {
|
|
|
keyWord: keyword,
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
if (res && res.data && res.data.length > 0) {
|
|
|
totalRecords.value = res?.total || 0;
|
|
|
// 搜索模式下,直接用搜索结果替换所有记录
|
|
|
searchMessages.value = res.data;
|
|
|
-
|
|
|
+
|
|
|
// 检查是否还有更多数据
|
|
|
if (searchMessages.value.length >= totalRecords.value || res.data.length < pageSize) {
|
|
|
hasMore.value = false;
|
|
|
@@ -164,7 +165,7 @@ async function loadMoreMessages() {
|
|
|
if (loading.value || !hasMore.value) return;
|
|
|
|
|
|
currentPage.value++;
|
|
|
-
|
|
|
+
|
|
|
// 如果是搜索模式,加载更多搜索结果
|
|
|
if (isSearchMode.value && searchKeyword.value) {
|
|
|
await loadMoreSearchMessages();
|
|
|
@@ -176,9 +177,9 @@ async function loadMoreMessages() {
|
|
|
// 加载更多搜索结果
|
|
|
async function loadMoreSearchMessages() {
|
|
|
if (loading.value) return;
|
|
|
-
|
|
|
+
|
|
|
loading.value = true;
|
|
|
-
|
|
|
+
|
|
|
try {
|
|
|
const patientId = (props.data as any)?.patientId || (props.data as any)?.id?.toString();
|
|
|
if (!patientId) {
|
|
|
@@ -187,15 +188,15 @@ async function loadMoreSearchMessages() {
|
|
|
loading.value = false;
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
const res = await getConsultChatListMethod(currentPage.value, pageSize, patientId, {
|
|
|
keyWord: searchKeyword.value,
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
if (res && res.data && res.data.length > 0) {
|
|
|
// 追加到搜索结果
|
|
|
searchMessages.value = [...searchMessages.value, ...res.data];
|
|
|
-
|
|
|
+
|
|
|
// 检查是否还有更多数据
|
|
|
if (searchMessages.value.length >= totalRecords.value || res.data.length < pageSize) {
|
|
|
hasMore.value = false;
|
|
|
@@ -301,7 +302,7 @@ watchDebounced(
|
|
|
console.error('缺少患者ID');
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (newVal && newVal.trim()) {
|
|
|
// 有搜索关键词,执行搜索
|
|
|
await getSearchChatRecordList(newVal.trim());
|
|
|
@@ -579,7 +580,7 @@ function handleClose() {
|
|
|
overflow-wrap: break-word;
|
|
|
width: 100%;
|
|
|
line-height: 1.5;
|
|
|
-
|
|
|
+
|
|
|
// Markdown 渲染样式
|
|
|
:deep(strong) {
|
|
|
font-weight: bold;
|