import PageContainerBehavior from "../../../../core/behavior/page-container.behavior"; import I18nBehavior from "../../../../i18n/behavior"; import { Post } from "../../../../lib/request/method"; // module/chats/pages/consultation-record/consultation-record.ts Page({ behaviors: [I18nBehavior, PageContainerBehavior], properties: {}, data: { i18n: { consultChat: { _: '聊天', title: '记录' }, }, //有item传过来不分页 //是否分页 isPage: false, page: 1, pageSize: 2, hasMore: true, isLoading: false, consultationList: [] as Array<{ id: number; startTime: string; endTime: string; manualTime: string; //转人工的时间 items: Array<{ id: number; //咨询记录id consultRecordId: number; //咨询记录id messageContent: string; sendTime: string; //发送时间 sendType: string; // 发送类型 1-患者 2-医生 3-系统 4-AI messageType: string; // 消息类型 1-文本 2-图片 isRead: string; }>; }>, }, observers: {}, onLoad(options: any) { console.log(options, "咨询记录数据"); if (options.item) { const item = JSON.parse(decodeURIComponent(options.item)); this.setData({ consultationList: item, isPage: false, }); } else { this.setData({ isPage: true, }); this.loadData(); } }, // 获取聊天记录的数据 async loadData() { if (this.data.isLoading || !this.data.hasMore) return; this.setData({ isLoading: true }); try { const res = await Post( `/consultManage/pageConsult?pageNum=${this.data.page}&pageSize=${this.data.pageSize}`, {} ); console.log("res=咨询记录列表", res.data.data); if (res.data && res.data.data && res.data.data.length > 0) { // 追加新数据到现有列表 const newList = this.data.page === 1 ? res.data.data : [...this.data.consultationList, ...res.data.data]; // 判断是否还有更多数据 // 方式1: 如果有 total 字段,通过比较已加载数量和总数判断 // 方式2: 如果返回的数据长度小于 pageSize,说明没有更多数据了 let hasMoreData = false; if (res.data.total !== undefined && res.data.total !== null) { hasMoreData = newList.length < res.data.total; } else { // 如果返回的数据长度等于 pageSize,可能还有更多数据 hasMoreData = res.data.data.length >= this.data.pageSize; } this.setData({ consultationList: newList, page: this.data.page + 1, hasMore: hasMoreData, isLoading: false, }); } else { // 没有数据时,第一页清空列表,后续页保留已有数据 this.setData({ ...(this.data.page === 1 && { consultationList: [] }), hasMore: false, isLoading: false, }); } } catch (error) { console.error("加载咨询记录失败", error); this.setData({ isLoading: false, }); } }, onScrollToLower() { console.log("onScrollToLower"); if (this.data.isPage) { this.loadData(); } }, //预览图片 previewImage(e: any) { const currentUrl = e.currentTarget.dataset.url; // 获取所有咨询记录中所有图片消息的 URL 列表 const urls: string[] = []; this.data?.consultationList?.forEach((consultation) => { consultation?.items?.forEach((item) => { if (item?.messageType === "2" && item?.messageContent) { urls.push(item?.messageContent); } }); }); wx.previewImage({ current: currentUrl, // 当前显示图片的链接 urls: urls.length > 0 ? urls : [currentUrl], // 需要预览的图片链接列表 fail: (err) => { console.error("预览图片失败", err); }, }); }, });