From ae08b222af90366b844c3b8291f122942bdd4c59 Mon Sep 17 00:00:00 2001 From: zoujiandong <10130823232@qq.com> Date: Fri, 19 Sep 2025 17:37:19 +0800 Subject: [PATCH] =?UTF-8?q?9.19=E8=87=AA=E5=AE=9A=E4=B9=89=E6=B6=88?= =?UTF-8?q?=E6=81=AF=EF=BC=8C=E8=81=8A=E5=A4=A9=E7=9B=B8=E5=85=B3=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 9 +- api/api.js | 18 +- pages.json | 60 ++ pages/my/my.vue | 2 +- pages_app/selectPatient/selectPatient.vue | 8 +- .../selectPatientSingle.vue | 4 +- pages_chat/article/article.vue | 668 ++++++++++++++ pages_chat/chat/message/message-custom.vue | 234 +++++ pages_chat/chat/message/message-input.vue | 316 ++++++- pages_chat/chat/message/message-item.vue | 40 +- pages_chat/groupMessage/groupMessage.vue | 292 +++++- pages_chat/groupSend/groupSend.vue | 347 +++++++ pages_chat/patientGroup/patientGroup.vue | 714 +++++++++++++++ pages_chat/quickReply/quickReply.vue | 279 ++++++ pages_chat/searchArticle/searchArticle.vue | 762 ++++++++++++++++ pages_chat/video/video.vue | 860 ++++++++++++++++++ static/im_icon_camera_on.png | Bin 0 -> 3779 bytes static/im_icon_images_on.png | Bin 0 -> 4388 bytes static/outpatient_true.png | Bin 0 -> 2566 bytes static/quck_message.png | Bin 0 -> 2499 bytes static/ytx_chatting_hospital.png | Bin 0 -> 1801 bytes static/ytx_chattingfooter_shopping.png | Bin 0 -> 2602 bytes 22 files changed, 4543 insertions(+), 70 deletions(-) create mode 100644 pages_chat/article/article.vue create mode 100644 pages_chat/chat/message/message-custom.vue create mode 100644 pages_chat/groupSend/groupSend.vue create mode 100644 pages_chat/patientGroup/patientGroup.vue create mode 100644 pages_chat/quickReply/quickReply.vue create mode 100644 pages_chat/searchArticle/searchArticle.vue create mode 100644 pages_chat/video/video.vue create mode 100644 static/im_icon_camera_on.png create mode 100644 static/im_icon_images_on.png create mode 100644 static/outpatient_true.png create mode 100644 static/quck_message.png create mode 100644 static/ytx_chatting_hospital.png create mode 100644 static/ytx_chattingfooter_shopping.png diff --git a/App.vue b/App.vue index e4cd2d0..4b2d614 100644 --- a/App.vue +++ b/App.vue @@ -331,6 +331,10 @@ export default { /** nim sdk 登录 */ nim.V2NIMLoginService.login(opts.account, opts.token).then(async () => { + console.log("登录成功"); + nim.V2NIMLoginService.on('onKickedOffline', (res) => { + console.log("被踢下线", res); + }); // #ifdef APP-PLUS /** 初始化音视频通话插件*/ nimCallKit.initConfig( @@ -345,6 +349,7 @@ export default { if (ret.code != 200) { // callkit init失败 } else { + nimCallKit.login( { account: opts.account, @@ -355,6 +360,7 @@ export default { // 登录失败 } else { // 登录成功 + } } ); @@ -396,7 +402,8 @@ export default { console.log("音视频通话插件退出失败", error); } // 退出登录 - uni.$UIKitNIM.V2NIMLoginService.logout().then(() => { + uni.$UIKitNIM.V2NIMLoginService.logout().then((res) => { + console.log("退出登录", res); uni.$UIKitStore.destroy(); customReLaunch({ url: "/pages/Login/index", diff --git a/api/api.js b/api/api.js index 329b707..195ce04 100644 --- a/api/api.js +++ b/api/api.js @@ -493,9 +493,21 @@ const api = { meetingV2Video(data){ return request('/expertAPI/meetingV2Video', data, 'post', false); }, - - - + listGroupSendMsg(data){ + return request('/expertAPI/listGroupSendMsg', data, 'post', false); + }, + addGroupSendMsg4YunXin(data){ + return request('/expertAPI/addGroupSendMsg4YunXin', data, 'post', false); + }, + quickReplyList(data){ + return request('/expertAPI/QuickReplyList', data, 'post', false); + }, + addQuickReply(data){ + return request('/expertAPI/addQuickReply', data, 'post', false); + }, + deleteQuickReply(data){ + return request('/expertAPI/deleteQuickReply', data, 'post', false); + }, } diff --git a/pages.json b/pages.json index fa5d51e..14dac99 100644 --- a/pages.json +++ b/pages.json @@ -1047,6 +1047,66 @@ } } }, + { + "path": "groupSend/groupSend", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "uni-app分页", + "app": { + "bounce": "none" + } + } + }, + { + "path": "patientGroup/patientGroup", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "uni-app分页", + "app": { + "bounce": "none" + } + } + }, + { + "path": "quickReply/quickReply", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "uni-app分页", + "app": { + "bounce": "none" + } + } + }, + { + "path": "article/article", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "uni-app分页", + "app": { + "bounce": "none" + } + } + }, + { + "path": "searchArticle/searchArticle", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "uni-app分页", + "app": { + "bounce": "none" + } + } + }, + { + "path": "video/video", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "uni-app分页", + "app": { + "bounce": "none" + } + } + }, { "path": "groupMessage/groupMessage", "style": { diff --git a/pages/my/my.vue b/pages/my/my.vue index 65839c4..f18e982 100644 --- a/pages/my/my.vue +++ b/pages/my/my.vue @@ -304,7 +304,7 @@ url="/pages_app/patientGroup/patientGroup" break; case 'groupMessage': - url="/pages_app/groupMessage/groupMessage" + url="/pages_chat/groupMessage/groupMessage" break; case 'qrcode': url="/pages_app/myCode/myCode" diff --git a/pages_app/selectPatient/selectPatient.vue b/pages_app/selectPatient/selectPatient.vue index 8c66861..375c7f7 100644 --- a/pages_app/selectPatient/selectPatient.vue +++ b/pages_app/selectPatient/selectPatient.vue @@ -88,7 +88,7 @@ const updateSelectedDetail = () => { selectedDetail.value = selectedIds.value.map(id => { const p = patientList.value.find(x => x.uuid === id) - return { uuid: id, realName: p?.realName || '', photo: p?.photo || '' } + return { uuid: id, realName: p?.realName || '', photo: p?.photo || '',nickName: p?.nickName || '' } }) } @@ -103,7 +103,7 @@ // 如果未选中,则选中 selectedIds.value.push(id) const p = patientList.value.find(x => x.uuid === id) - selectedDetail.value.push({ uuid: id, realName: p?.realName || '', photo: p?.photo || '' }) + selectedDetail.value.push({ uuid: id, realName: p?.realName || '', photo: p?.photo || '',nickName: p?.nickName || '' }) } } @@ -116,7 +116,9 @@ const pages = getCurrentPages() const curr = pages[pages.length - 1] const ec = curr?.getOpenerEventChannel?.() - ec?.emit && ec.emit('onPatientsSelected', payload) + ec?.emit && ec.emit('onPatientsSelected', payload); + console.log(selectedDetail.value) + uni.$emit('selectedChatPatientsSingle', { patients: selectedDetail.value }); } catch (e) {} // 兜底:使用本地存储 try { uni.setStorageSync('patientsSelectedPayload', payload) } catch (e) {} diff --git a/pages_app/selectPatientSingle/selectPatientSingle.vue b/pages_app/selectPatientSingle/selectPatientSingle.vue index 81e05cf..f616d18 100644 --- a/pages_app/selectPatientSingle/selectPatientSingle.vue +++ b/pages_app/selectPatientSingle/selectPatientSingle.vue @@ -88,7 +88,7 @@ const updateSelectedDetail = () => { selectedDetail.value = selectedIds.value.map(id => { const p = patientList.value.find(x => x.uuid === id) - return { uuid: id, realName: p?.realName || '', photo: p?.photo || '' } + return { uuid: id, realName: p?.realName || '', photo: p?.photo || '',nickname: p?.nickname || '' } }) } @@ -105,7 +105,7 @@ selectedIds.value.push(id) const p = patientList.value.find(x => x.uuid === id) selectedDetail.value.push({ uuid: id, realName: p?.realName || '', photo: p?.photo || '' }) - let payload = { uuid: id, realName: p?.realName || '', photo: p?.photo || '' } + let payload = { uuid: id, realName: p?.realName || '', photo: p?.photo || '',nickname: p?.nickname || '' } const pages = getCurrentPages() const curr = pages[pages.length - 1] const ec = curr?.getOpenerEventChannel?.() diff --git a/pages_chat/article/article.vue b/pages_chat/article/article.vue new file mode 100644 index 0000000..8ea9599 --- /dev/null +++ b/pages_chat/article/article.vue @@ -0,0 +1,668 @@ + + + + + diff --git a/pages_chat/chat/message/message-custom.vue b/pages_chat/chat/message/message-custom.vue new file mode 100644 index 0000000..f9dad6b --- /dev/null +++ b/pages_chat/chat/message/message-custom.vue @@ -0,0 +1,234 @@ + + + + + + \ No newline at end of file diff --git a/pages_chat/chat/message/message-input.vue b/pages_chat/chat/message/message-input.vue index f0b9784..5458aab 100644 --- a/pages_chat/chat/message/message-input.vue +++ b/pages_chat/chat/message/message-input.vue @@ -78,9 +78,9 @@
-
+
@@ -157,8 +157,54 @@
{{ t('albumText') }}
+
+
+ +
+
快捷回复
+
+
+
+ +
+
患教
+
+
+
+ +
+
出/停诊公告
+
+
+
+ +
+
商城
+
+ + -
{{ t('voiceCallText') }}
- + --> -
{{ t('videoCallText') }}
- -
--> +
@@ -208,12 +254,38 @@ > + + + + 温馨提示 + + + 图文科普 + + + + 视频科普 + + + + + + 温馨提示 + + + 纽娃复合营养素固体饮料 + + + + 更多商品正在准备中 + + + + diff --git a/pages_chat/patientGroup/patientGroup.vue b/pages_chat/patientGroup/patientGroup.vue new file mode 100644 index 0000000..5ee63ce --- /dev/null +++ b/pages_chat/patientGroup/patientGroup.vue @@ -0,0 +1,714 @@ + + + + + diff --git a/pages_chat/quickReply/quickReply.vue b/pages_chat/quickReply/quickReply.vue new file mode 100644 index 0000000..2391f12 --- /dev/null +++ b/pages_chat/quickReply/quickReply.vue @@ -0,0 +1,279 @@ +