diff --git a/pages/message/article-list.vue b/pages/message/article-list.vue index b9df060..ee835f9 100644 --- a/pages/message/article-list.vue +++ b/pages/message/article-list.vue @@ -122,8 +122,24 @@ const pageParams = ref({ groupId: "", patientId: "", corpId: "", + teamId: "", }); +const ensureTeamId = async () => { + if (pageParams.value.teamId) return pageParams.value.teamId; + if (!pageParams.value.groupId) return ""; + try { + const res = await api("getGroupListByGroupId", { groupId: pageParams.value.groupId }, false); + const team = res?.data?.team || {}; + const resolved = res?.data?.teamId || team.teamId || team._id || ""; + if (resolved) pageParams.value.teamId = resolved; + return pageParams.value.teamId; + } catch (err) { + console.error("ensureTeamId failed:", err); + return ""; + } +}; + const isSelectMode = ref(false); const selectEventName = ref(""); @@ -383,11 +399,13 @@ const sendArticle = async (article) => { // 3. 记录文章发送记录 try { + await ensureTeamId(); await api("addArticleSendRecord", { articleId: article._id, userId: doctorInfo.userid, customerId: pageParams.value.patientId, corpId: corpId, + teamId: pageParams.value.teamId, }); } catch (recordError) { console.error("记录文章发送失败:", recordError); @@ -426,6 +444,10 @@ onLoad((options) => { if (options.corpId) { pageParams.value.corpId = options.corpId; } + if (options.teamId) { + pageParams.value.teamId = options.teamId; + } + ensureTeamId(); }); onMounted(() => { diff --git a/pages/message/components/chat-input.vue b/pages/message/components/chat-input.vue index 391e1bf..3dc193d 100644 --- a/pages/message/components/chat-input.vue +++ b/pages/message/components/chat-input.vue @@ -76,6 +76,7 @@ const props = defineProps({ formatTime: { type: Function, required: true }, groupId: { type: String, default: "" }, userId: { type: String, default: "" }, + teamId: { type: String, default: "" }, patientId: { type: String, default: "" }, corpId: { type: String, default: "" }, }); @@ -375,14 +376,14 @@ const showFollowUpTasks = () => { // 跳转到宣教文章页面 const goToArticleList = () => { uni.navigateTo({ - url: `/pages/message/article-list?groupId=${props.groupId}&patientId=${props.patientId}&corpId=${props.corpId}`, + url: `/pages/message/article-list?groupId=${props.groupId}&patientId=${props.patientId}&corpId=${props.corpId}&teamId=${props.teamId}`, }); }; // 跳转到问卷列表页面 const goToSurveyList = () => { uni.navigateTo({ - url: `/pages/message/survey-list?groupId=${props.groupId}&patientId=${props.patientId}&corpId=${props.corpId}&customerName=${props.patientInfo.name}`, + url: `/pages/message/survey-list?groupId=${props.groupId}&patientId=${props.patientId}&corpId=${props.corpId}&teamId=${props.teamId}&customerName=${props.patientInfo.name}`, }); }; @@ -466,4 +467,4 @@ onUnmounted(() => { \ No newline at end of file + diff --git a/pages/message/index.vue b/pages/message/index.vue index a4061d8..4692a2b 100644 --- a/pages/message/index.vue +++ b/pages/message/index.vue @@ -149,24 +149,25 @@ /> - + :userId="openid" + :teamId="teamId" + :patientId="patientId" + :corpId="corpId" + :patientInfo="patientInfo" + @scrollToBottom="() => scrollToBottom(true)" + @messageSent="() => scrollToBottom(true)" + @endConsult="handleEndConsult" + /> @@ -246,7 +247,8 @@ const patientInfo = ref({ }); // 患者ID -const patientId = ref(""); +const patientId = ref(""); +const teamId = ref(""); // 计算弹框显示状态 - 只有 pending 状态才显示接受问诊组件 const showConsultAccept = computed(() => orderStatus.value === "pending"); @@ -299,18 +301,20 @@ function isSystemMessage(message) { } // 获取群组订单状态 -const fetchGroupOrderStatus = async () => { - try { - const result = await api("getGroupListByGroupId", { - groupId: groupId.value, - }); - - if (result.success && result.data) { - orderStatus.value = result.data.orderStatus || ""; - - // 更新导航栏标题为团队名称 - const teamName = result.data.team?.name || "群聊"; - updateNavigationTitle(teamName); +const fetchGroupOrderStatus = async () => { + try { + const result = await api("getGroupListByGroupId", { + groupId: groupId.value, + }); + + if (result.success && result.data) { + orderStatus.value = result.data.orderStatus || ""; + + // 更新导航栏标题为团队名称 + const teamName = result.data.team?.name || "群聊"; + updateNavigationTitle(teamName); + + teamId.value = result.data.teamId || result.data.team?.teamId || result.data.team?._id || ""; // 更新患者信息 if (result.data.patient) { @@ -326,12 +330,12 @@ const fetchGroupOrderStatus = async () => { patientId.value = result.data.patientId.toString(); } - console.log("获取群组订单状态:", { - orderStatus: orderStatus.value, - teamName: teamName, - patientInfo: patientInfo.value, - groupId: groupId.value, - }); + console.log("获取群组订单状态:", { + orderStatus: orderStatus.value, + teamName: teamName, + patientInfo: patientInfo.value, + groupId: groupId.value, + }); } else { console.error("获取群组订单状态失败:", result.message); } @@ -979,4 +983,4 @@ onUnmounted(() => { \ No newline at end of file + diff --git a/pages/message/survey-list.vue b/pages/message/survey-list.vue index 380b2de..8c07d96 100644 --- a/pages/message/survey-list.vue +++ b/pages/message/survey-list.vue @@ -101,6 +101,23 @@ const timChatManager = globalTimChatManager; // 从上一页传递的客户信息 const customerId = ref(""); const customerName = ref(""); +const teamId = ref(""); +const groupId = ref(""); + +const ensureTeamId = async () => { + if (teamId.value) return teamId.value; + if (!groupId.value) return ""; + try { + const res = await api("getGroupListByGroupId", { groupId: groupId.value }, false); + const team = res?.data?.team || {}; + const resolved = res?.data?.teamId || team.teamId || team._id || ""; + if (resolved) teamId.value = resolved; + return teamId.value; + } catch (err) { + console.error("ensureTeamId failed:", err); + return ""; + } +}; // 搜索关键词 const searchName = ref(""); @@ -125,8 +142,11 @@ const selectEventName = ref(""); onLoad((options) => { isSelectMode.value = String(options?.select || '') === '1'; selectEventName.value = String(options?.eventName || ''); + groupId.value = options?.groupId || ""; customerId.value = options?.patientId || ""; customerName.value = options?.customerName || ""; + teamId.value = options?.teamId || ""; + ensureTeamId(); getCategoryList(); loadSurveyList(); }); @@ -337,6 +357,8 @@ const sendSurvey = async (survey) => { // 生成发送ID const sendSurveyId = generateRandomString(10); + await ensureTeamId(); + // 创建问卷记录 const createRecordRes = await api("createSurveyRecord", { corpId: corpId, @@ -345,6 +367,7 @@ const sendSurvey = async (survey) => { memberId: customerId.value, customer: customerName.value, sendSurveyId: sendSurveyId, + teamId: teamId.value, }); if (!createRecordRes.success) {