diff --git a/.env.development b/.env.development index 4160666..cce72c5 100644 --- a/.env.development +++ b/.env.development @@ -1,7 +1,7 @@ MP_API_BASE_URL=https://patient.youcan365.com MP_IMAGE_URL=https://patient.youcan365.com MP_CACHE_PREFIX=development -MP_WX_APP_ID=wx6ee11733526b4f04 +MP_WX_APP_ID=wx1d8337a40c11d66c MP_CORP_ID=wwe3fb2faa52cf9dfb MP_TIM_SDK_APP_ID=1600123876 MP_INVITE_TEAMMATE_QRCODE=https://patient.youcan365.com/invite-teammate diff --git a/.env.ip b/.env.ip index 921439a..22cd3e5 100644 --- a/.env.ip +++ b/.env.ip @@ -1,7 +1,7 @@ MP_API_BASE_URL=http://192.168.60.2:8080 MP_IMAGE_URL=https://patient.youcan365.com MP_CACHE_PREFIX=development -MP_WX_APP_ID=wx6ee11733526b4f04 +MP_WX_APP_ID=wx1d8337a40c11d66c MP_CORP_ID=wwe3fb2faa52cf9dfb MP_TIM_SDK_APP_ID=1600123876 MP_INVITE_TEAMMATE_QRCODE=https://patient.youcan365.com/invite-teammate diff --git a/.env.localhost b/.env.localhost index 301ded7..3d46ace 100644 --- a/.env.localhost +++ b/.env.localhost @@ -1,7 +1,7 @@ MP_API_BASE_URL=http://localhost:8080 MP_IMAGE_URL=https://patient.youcan365.com MP_CACHE_PREFIX=development -MP_WX_APP_ID=wx6ee11733526b4f04 +MP_WX_APP_ID=wx1d8337a40c11d66c MP_CORP_ID=wwe3fb2faa52cf9dfb MP_TIM_SDK_APP_ID=1600123876 MP_INVITE_TEAMMATE_QRCODE=https://patient.youcan365.com/invite-teammate diff --git a/App.vue b/App.vue index 133cbaf..c711911 100644 --- a/App.vue +++ b/App.vue @@ -5,18 +5,21 @@ import { globalTimChatManager } from "@/utils/tim-chat.js"; export default { onLaunch: function () { // 需在 pinia 安装后再获取 store,避免 getActivePinia 报错 - const { account, login, initIMAfterLogin } = useAccountStore(); - + const { account, login, initIMAfterLogin, getDoctorInfo } = + useAccountStore(); + // 如果已有缓存的账户信息,尝试初始化 IM,否则重新登录 + debugger; if (account && account.openid) { console.log("App Launch: 已有登录信息,初始化 IM"); - initIMAfterLogin().catch(err => { - console.error('IM初始化失败:', err); + initIMAfterLogin().catch((err) => { + console.error("IM初始化失败:", err); }); + getDoctorInfo(); } else { console.log("App Launch: 无登录信息,开始登录"); - login().catch(err => { - console.error('自动登录失败:', err); + login().catch((err) => { + console.error("自动登录失败:", err); }); } }, @@ -40,7 +43,7 @@ export default { \ No newline at end of file + diff --git a/pages/message/index.vue b/pages/message/index.vue index af3b417..2dcb4b8 100644 --- a/pages/message/index.vue +++ b/pages/message/index.vue @@ -160,6 +160,7 @@ : '' " :userId="openid" + :teamId="teamId" :patientId="patientId" :corpId="corpId" :patientInfo="patientInfo" @@ -249,6 +250,7 @@ const patientInfo = ref({ // 患者ID const patientId = ref(""); +const teamId = ref(""); // 计算弹框显示状态 - 只有 pending 状态才显示接受问诊组件 const showConsultAccept = computed(() => orderStatus.value === "pending"); @@ -314,6 +316,8 @@ const fetchGroupOrderStatus = async () => { 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) { patientInfo.value = { @@ -1018,4 +1022,4 @@ onUnmounted(() => { \ No newline at end of file + diff --git a/pages/message/survey-list.vue b/pages/message/survey-list.vue index a95be47..0507766 100644 --- a/pages/message/survey-list.vue +++ b/pages/message/survey-list.vue @@ -102,6 +102,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(""); @@ -126,8 +143,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(); }); @@ -335,6 +355,7 @@ const sendSurvey = async (survey) => { const doctorInfo = accountStore.doctorInfo; userId.value = doctorInfo?.userid; + await ensureTeamId(); // 使用统一的消息发送助手 const success = await sendSurveyMessage( { @@ -348,6 +369,7 @@ const sendSurvey = async (survey) => { customerId: customerId.value, customerName: customerName.value, corpId: corpId, + teamId: teamId.value, } ); diff --git a/store/account.js b/store/account.js index a1f6506..19e2612 100644 --- a/store/account.js +++ b/store/account.js @@ -41,6 +41,7 @@ export default defineStore("accountStore", () => { async function loginByCode(phoneCode = '') { try { + debugger const { code } = await uni.login({ appid, provider: "weixin", @@ -82,13 +83,16 @@ export default defineStore("accountStore", () => { async function getDoctorInfo(data = {}) { try { + debugger const res = await api('getCorpMemberData', { ...data, weChatOpenId: account.value.openid, }); doctorInfo.value = res?.data || null; - - // 持久化医生信息 + if (doctorInfo.value.accountState && doctorInfo.value.accountState == "disable") { + uni.redirectTo({ url: "/pages/login/login" }); + return; + } if (res?.data) { cache.set(CACHE_KEYS.DOCTOR_INFO, res.data); } diff --git a/utils/send-message-helper.js b/utils/send-message-helper.js index 05f477a..19331d9 100644 --- a/utils/send-message-helper.js +++ b/utils/send-message-helper.js @@ -109,12 +109,16 @@ export async function sendArticleMessage(article, options = {}) { if (result?.success) { // 记录文章发送记录(异步,不阻塞) if (options.articleId && options.userId && options.customerId && options.corpId) { - api('addArticleSendRecord', { + const params = { articleId: options.articleId, userId: options.userId, customerId: options.customerId, corpId: options.corpId, - }).catch((err) => { + }; + if (options.teamId) { + params.teamId = options.teamId; + } + api('addArticleSendRecord', params).catch((err) => { console.error('记录文章发送失败:', err); }); } @@ -151,15 +155,20 @@ export async function sendSurveyMessage(survey, options = {}) { // 生成发送ID const sendSurveyId = generateRandomString(10); - // 创建问卷记录 - const createRecordRes = await api('createSurveyRecord', { + const recordParams = { corpId: options.corpId, userId: options.userId, surveryId: survey._id, memberId: options.customerId, customer: options.customerName, sendSurveyId: sendSurveyId, - }); + }; + if (options.teamId) { + recordParams.teamId = options.teamId; + } + + // 创建问卷记录 + const createRecordRes = await api('createSurveyRecord', recordParams); if (!createRecordRes?.success) { toast(createRecordRes?.message || '创建问卷记录失败');