From 5bcdbf80cd17b9049f39b52b942a93cee4ba8589 Mon Sep 17 00:00:00 2001 From: wangdongbo <949818794@qq.com> Date: Thu, 5 Feb 2026 11:26:53 +0800 Subject: [PATCH] no message --- .env.development | 2 +- .env.localhost | 2 +- manifest.json | 2 +- pages.json | 4 +- pages/message/chat.scss | 54 +++++++++++++++-------- pages/message/components/chat-input.vue | 5 ++- pages/message/hooks/use-group-avatars.js | 7 +-- pages/message/hooks/use-group-chat.js | 13 ++++-- static/default-patient-avatar.png | Bin 0 -> 3694 bytes static/doctor-avatar.png | 0 10 files changed, 58 insertions(+), 31 deletions(-) create mode 100644 static/default-patient-avatar.png delete mode 100644 static/doctor-avatar.png diff --git a/.env.development b/.env.development index 4c5632d..44fa76f 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ MP_API_BASE_URL=https://patient.youcan365.com MP_CACHE_PREFIX=development -MP_WX_APP_ID=wx93af55767423938e +MP_WX_APP_ID=wx6ee11733526b4f04 MP_TIM_SDK_APP_ID=1600123876 MP_CORP_ID=wwe3fb2faa52cf9dfb diff --git a/.env.localhost b/.env.localhost index 6d3e2b3..5c8f00a 100644 --- a/.env.localhost +++ b/.env.localhost @@ -1,5 +1,5 @@ MP_API_BASE_URL=http://localhost:8080 MP_CACHE_PREFIX=development -MP_WX_APP_ID=wx93af55767423938e +MP_WX_APP_ID=wx6ee11733526b4f04 MP_TIM_SDK_APP_ID=1600123876 MP_CORP_ID=wwe3fb2faa52cf9dfb diff --git a/manifest.json b/manifest.json index 8a40fb3..3ca1e82 100644 --- a/manifest.json +++ b/manifest.json @@ -50,7 +50,7 @@ "quickapp" : {}, /* 小程序特有相关 */ "mp-weixin" : { - "appid" : "wx93af55767423938e", + "appid" : "wx6ee11733526b4f04", "setting" : { "urlCheck" : false }, diff --git a/pages.json b/pages.json index 9cfcb68..a9e6d7c 100644 --- a/pages.json +++ b/pages.json @@ -41,14 +41,14 @@ { "path": "pages/login/login", "style": { - "navigationBarTitleText": "柚健康", + "navigationBarTitleText": "健康柚", "navigationStyle": "custom" } }, { "path": "pages/login/redirect-page", "style": { - "navigationBarTitleText": "柚健康" + "navigationBarTitleText": "健康柚" } }, { diff --git a/pages/message/chat.scss b/pages/message/chat.scss index 552ff47..a7e418e 100644 --- a/pages/message/chat.scss +++ b/pages/message/chat.scss @@ -382,22 +382,23 @@ $primary-color: #0877F1; background: #fff; border-top: 1rpx solid #e0e0e0; position: relative; - z-index: 200; // 确保输入区域在评价卡片之上,但在弹窗之下 - // padding: 32rpx 16rpx 28rpx 16rpx; + z-index: 200; + padding-bottom: env(safe-area-inset-bottom); } .input-toolbar { display: flex; - align-items: flex-end; - padding: 28rpx 0 28rpx 0; + align-items: center; + padding: 16rpx 20rpx; gap: 12rpx; - padding-left: 20rpx; - padding-right: 20rpx; } -.voice-toggle-btn{ + +.voice-toggle-btn { + width: 56rpx; height: 56rpx; display: flex; align-items: center; + justify-content: center; flex-shrink: 0; padding: 0; } @@ -407,6 +408,7 @@ $primary-color: #0877F1; height: 56rpx; display: flex; align-items: center; + justify-content: center; flex-shrink: 0; padding: 0; } @@ -418,7 +420,7 @@ $primary-color: #0877F1; font-weight: 600; border: none; border-radius: 40rpx; - height: 64rpx; + height: 56rpx; min-width: 112rpx; padding: 0 32rpx; box-shadow: 0 2rpx 8rpx rgba(56, 118, 246, 0.08); @@ -441,18 +443,33 @@ $primary-color: #0877F1; align-items: center; justify-content: center; min-width: 0; - max-width: calc(100vw - 280rpx); } -.text-input, -.voice-input-btn { +.text-input { flex: 1; - padding: 26rpx 46rpx; + padding: 16rpx 24rpx; background-color: #f3f5fa; border-radius: 20rpx; - margin: 0 16rpx; + margin: 0; font-size: 28rpx; - min-height: 80rpx; + min-height: 56rpx; + max-height: 200rpx; + border: none; + outline: none; + box-sizing: border-box; + line-height: 1.5; + color: #333; + vertical-align: middle; +} + +.voice-input-btn { + flex: 1; + padding: 16rpx 24rpx; + background-color: #f3f5fa; + border-radius: 20rpx; + margin: 0; + font-size: 28rpx; + min-height: 56rpx; max-height: 200rpx; border: none; outline: none; @@ -462,13 +479,13 @@ $primary-color: #0877F1; } .voice-input-btn { - height: 80rpx; + height: 56rpx; display: flex; align-items: center; justify-content: center; - padding: 0 46rpx; + padding: 0 24rpx; text-align: center; - line-height: 80rpx; + line-height: 56rpx; } .more-panel { @@ -1031,6 +1048,7 @@ $primary-color: #0877F1; .text-input:-ms-input-placeholder, .text-input::placeholder { line-height: 1.5; + vertical-align: middle; } .voice-input-btn::-webkit-input-placeholder, @@ -1038,7 +1056,7 @@ $primary-color: #0877F1; .voice-input-btn::-moz-placeholder, .voice-input-btn:-ms-input-placeholder, .voice-input-btn::placeholder { - line-height: 80rpx; + line-height: 56rpx; text-align: center; } diff --git a/pages/message/components/chat-input.vue b/pages/message/components/chat-input.vue index 18cc19a..6b80d4e 100644 --- a/pages/message/components/chat-input.vue +++ b/pages/message/components/chat-input.vue @@ -152,6 +152,9 @@ const sendTextMessage = async () => { await sendMessage("text", inputText.value); inputText.value = ""; + + // 收起键盘 + uni.hideKeyboard(); }; @@ -333,7 +336,7 @@ const goToArticleList = () => { const morePanelButtons = [ { text: "照片", icon: "/static/icon/zhaopian.png", action: showImagePicker }, - { text: "宣教", icon: "/static/icon/xuanjiaowenzhang.png", action: goToArticleList }, + // { text: "宣教", icon: "/static/icon/xuanjiaowenzhang.png", action: goToArticleList }, ]; function handleInputFocus() { diff --git a/pages/message/hooks/use-group-avatars.js b/pages/message/hooks/use-group-avatars.js index a4749cf..3173d82 100644 --- a/pages/message/hooks/use-group-avatars.js +++ b/pages/message/hooks/use-group-avatars.js @@ -9,7 +9,8 @@ import useTeamStore from '@/store/team.js' export default function useGroupAvatars() { const groupAvatarMap = ref({}) // { groupID: [avatarUrl1, avatarUrl2, ...] } const teamStore = useTeamStore() - const patientDefaultAvatar = '/static/default-avatar.svg' + const patientDefaultAvatar = '/static/default-patient-avatar.png' + const teamMemberDefaultAvatar = '/static/default-avatar.svg' /** * 获取单个群聊的头像列表 @@ -36,10 +37,10 @@ export default function useGroupAvatars() { // 提取头像列表(过滤掉空头像,使用默认头像替代) const avatarList = Object.values(memberMap) .map(member => { - // 如果成员有头像且不为空,使用成员头像;否则使用默认头像 + // 如果成员有头像且不为空,使用成员头像;否则使用团队成员默认头像 return (member.avatar && member.avatar.trim() !== '') ? member.avatar - : patientDefaultAvatar + : teamMemberDefaultAvatar }) // 添加患者默认头像 diff --git a/pages/message/hooks/use-group-chat.js b/pages/message/hooks/use-group-chat.js index 7d4a0fc..0a9718a 100644 --- a/pages/message/hooks/use-group-chat.js +++ b/pages/message/hooks/use-group-chat.js @@ -1,7 +1,9 @@ import { ref, computed } from 'vue' import { onShow, onUnload } from '@dcloudio/uni-app' +import { storeToRefs } from 'pinia' import api from '@/utils/api.js' import useTeamStore from '@/store/team.js' +import useAccountStore from '@/store/account.js' /** * 群聊hook - 管理群聊成员和头像 @@ -13,6 +15,7 @@ export default function useGroupChat(groupID) { const teamMemberIds = ref([]) // 存储团队成员的userId列表 const patientId = ref('') // 存储患者ID const teamStore = useTeamStore() + const { openid } = storeToRefs(useAccountStore()) // 群聊成员映射 const chatMember = computed(() => { @@ -45,8 +48,9 @@ export default function useGroupChat(groupID) { const member = chatMember.value[userId] if (!member) { // 如果找不到成员信息,根据是否为团队成员返回默认头像 - // 团队成员和患者都使用 default-avatar.svg - return '/static/default-avatar.svg' + // 患者(userId为当前账户openid)使用 default-patient-avatar.png + // 其他情况使用 default-avatar.svg + return userId === openid.value ? '/static/default-patient-avatar.png' : '/static/default-avatar.svg' } // 如果有头像且不为空字符串,返回头像 @@ -54,8 +58,9 @@ export default function useGroupChat(groupID) { return member.avatar } - // 否则使用默认头像 - return '/static/default-avatar.svg' + // 否则根据是否为团队成员返回默认头像 + // 患者使用 default-patient-avatar.png,团队成员使用 default-avatar.svg + return member.isTeamMember ? '/static/default-avatar.svg' : '/static/default-patient-avatar.png' } // 获取群聊信息和成员头像 diff --git a/static/default-patient-avatar.png b/static/default-patient-avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..6cfacfe4cf266e79d5fd0631b21439853a344b1d GIT binary patch literal 3694 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