diff --git a/.prettierrc b/.prettierrc index 5f406b8..170b4a2 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,28 +1,35 @@ { - "$schema":"https://json.schemastore.org/prettierrc.json", + "$schema": "https://json.schemastore.org/prettierrc.json", "printWidth": 120, "tabWidth": 2, "useTabs": false, "semi": true, - "singleQuote": false, + "singleQuote": true, "bracketSpacing": true, "trailingComma": "all", "arrowParens": "always", "endOfLine": "auto", "htmlWhitespaceSensitivity": "ignore", "singleAttributePerLine": false, + "jsxSingleQuote": true, "overrides": [ { "files": "*.wxml", - "options": { "parser": "html" } + "options": { + "parser": "html" + } }, { "files": "*.wxss", - "options": { "parser": "css" } + "options": { + "parser": "css" + } }, { "files": "*.wxs", - "options": { "parser": "babel" } + "options": { + "parser": "babel" + } } ] } diff --git a/README.md b/README.md index 2d97ef6..d5848f6 100644 --- a/README.md +++ b/README.md @@ -35,16 +35,22 @@ wx.showModal({ 病历编辑页面 /module1/pages/entryCases/index?id=病例id 聊天室互动页 /module1/pages/chatRoom/index?id=聊天室id - v1.6 -1、申请绑定邀约需求; -2、小红点需求; - 一级医生:待处理病病历;聊天室消息; - 核心医生:待处理病历,病历更新,聊天室消息,医生待审核; - 三级医生:待处理病历,病历更新,聊天室消息,医生待审核; -3、聊天室左上角图片+新增; -4、新手引导图; -5、超级医生首页,新增病历更新项;逻辑与三级医生首页逻辑一致; -6、合作的医生卡片点击区域有问题; -7、隐私协议内容更新; -8、聊天室有最新消息时,增加push通知,我记得咱们当时有一个6个小时内的不重复发送。不知道这个push是否增加了。 + +1. 申请绑定邀约需求; +2. 小红点需求; + 一级医生:待处理病病历;聊天室消息; + 核心医生:待处理病历,病历更新,聊天室消息,医生待审核; + 三级医生:待处理病历,病历更新,聊天室消息,医生待审核; +3. 聊天室左上角图片+新增; +4. 新手引导图; +5. 超级医生首页,新增病历更新项;逻辑与三级医生首页逻辑一致; +6. 合作的医生卡片点击区域有问题; +7. 隐私协议内容更新; +8. 聊天室有最新消息时,增加push通知,我记得咱们当时有一个6个小时内的不重复发送。不知道这个push是否增加了。 + +v1.7 + +1. 帮助手册:个人中心提供帮助手册入口; +2. 医生增加成2个手机号登录的功能; +3. 对话框列表,提供病例悬浮按钮,点击后半屏浮层,浮层内可展示病例内容;底部提供更多操作按钮,点击与顶部点击病例跳转一致;(邀约医生无此按钮) diff --git a/project.config.json b/project.config.json index 95dd3fc..e0a1e8e 100644 --- a/project.config.json +++ b/project.config.json @@ -49,6 +49,10 @@ { "value": "/echart/components/ec-canvas/echarts.js", "type": "file" + }, + { + "value": "src/images/help/*", + "type": "glob" } ] }, diff --git a/project.private.config.json b/project.private.config.json index 89b6006..e5757c2 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -1,253 +1,260 @@ -{ - "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", - "projectname": "wutian-miniprogram", - "setting": { - "compileHotReLoad": true, - "urlCheck": true - }, - "condition": { - "miniprogram": { - "list": [ - { - "name": "绑定医生结果页", - "pathName": "module1/pages/setApplicationDoctorResult/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "选择绑定医生", - "pathName": "module1/pages/setApplicationDoctor/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "医生绑定申请记录", - "pathName": "module1/pages/applicationRecords/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "module1/pages/chatRoom/index", - "pathName": "module1/pages/chatRoom/index", - "query": "id=28", - "launchMode": "default", - "scene": null - }, - { - "name": "注销", - "pathName": "module1/pages/loginOut/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "module1/pages/doctorHome/index", - "pathName": "module1/pages/doctorHome/index", - "query": "id=100", - "launchMode": "default", - "scene": null - }, - { - "name": "医生认证-选择医生", - "pathName": "module1/pages/setInfoDoctor/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "学习窗", - "pathName": "module1/pages/chatRoom/index", - "query": "id=4", - "launchMode": "default", - "scene": null - }, - { - "name": "病历详情", - "pathName": "module1/pages/casesDetail/index", - "query": "id=25", - "launchMode": "default", - "scene": null - }, - { - "name": "邀约码", - "pathName": "pages/start/index", - "query": "scene=doctorId%3D2%26inviteChan%3D1", - "launchMode": "default", - "scene": 1047 - }, - { - "name": "指派医生", - "pathName": "module1/pages/setDoctor/index", - "query": "id=5", - "launchMode": "default", - "scene": null - }, - { - "name": "医生审核详情", - "pathName": "module1/pages/auditDoctorDetail/index", - "query": "id=5", - "launchMode": "default", - "scene": null - }, - { - "name": "医生认证结果页", - "pathName": "module1/pages/setInfoResult/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "选择医院", - "pathName": "module1/pages/sHostipal/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "学习窗信息", - "pathName": "module1/pages/chatRoomInfo/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "学习窗列表", - "pathName": "pages/chatRoomList/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "病历反馈", - "pathName": "module1/pages/casesFeedback/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "录入病历结果", - "pathName": "module1/pages/entryCasesResult/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "录入病历", - "pathName": "module1/pages/entryCases/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "病历", - "pathName": "pages/cases/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "组织架构4", - "pathName": "module1/pages/org4/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "组织架构3", - "pathName": "module1/pages/org3/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "医院活跃排行榜", - "pathName": "module1/pages/doctorRankList/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "更换手机号", - "pathName": "module1/pages/changePhone/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "个人信息", - "pathName": "module1/pages/userInfo/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "我的", - "pathName": "pages/my/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "首页", - "pathName": "pages/home/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "医生审核列表", - "pathName": "module1/pages/auditDoctorList/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "创建医院结果页", - "pathName": "module1/pages/cHostipalResult/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "创建医院", - "pathName": "module1/pages/cHostipal/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "医生认证", - "pathName": "module1/pages/setInfo/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "邀约下级医生", - "pathName": "module1/pages/invite/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "注册隐私协议", - "pathName": "module1/pages/loginProtool/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "登录", - "pathName": "module1/pages/login/index", - "query": "", - "launchMode": "default", - "scene": null - } - ] - } - }, - "libVersion": "3.6.3" +{ + "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", + "projectname": "wutian-miniprogram", + "setting": { + "compileHotReLoad": true, + "urlCheck": true + }, + "condition": { + "miniprogram": { + "list": [ + { + "name": "帮助中心", + "pathName": "module1/pages/help/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "绑定医生结果页", + "pathName": "module1/pages/setApplicationDoctorResult/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "选择绑定医生", + "pathName": "module1/pages/setApplicationDoctor/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "医生绑定申请记录", + "pathName": "module1/pages/applicationRecords/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "module1/pages/chatRoom/index", + "pathName": "module1/pages/chatRoom/index", + "query": "id=28", + "launchMode": "default", + "scene": null + }, + { + "name": "注销", + "pathName": "module1/pages/loginOut/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "module1/pages/doctorHome/index", + "pathName": "module1/pages/doctorHome/index", + "query": "id=100", + "launchMode": "default", + "scene": null + }, + { + "name": "医生认证-选择医生", + "pathName": "module1/pages/setInfoDoctor/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "学习窗", + "pathName": "module1/pages/chatRoom/index", + "query": "id=4", + "launchMode": "default", + "scene": null + }, + { + "name": "病历详情", + "pathName": "module1/pages/casesDetail/index", + "query": "id=25", + "launchMode": "default", + "scene": null + }, + { + "name": "邀约码", + "pathName": "pages/start/index", + "query": "scene=doctorId%3D2%26inviteChan%3D1", + "launchMode": "default", + "scene": 1047 + }, + { + "name": "指派医生", + "pathName": "module1/pages/setDoctor/index", + "query": "id=5", + "launchMode": "default", + "scene": null + }, + { + "name": "医生审核详情", + "pathName": "module1/pages/auditDoctorDetail/index", + "query": "id=5", + "launchMode": "default", + "scene": null + }, + { + "name": "医生认证结果页", + "pathName": "module1/pages/setInfoResult/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "选择医院", + "pathName": "module1/pages/sHostipal/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "学习窗信息", + "pathName": "module1/pages/chatRoomInfo/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "学习窗列表", + "pathName": "pages/chatRoomList/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "病历反馈", + "pathName": "module1/pages/casesFeedback/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "录入病历结果", + "pathName": "module1/pages/entryCasesResult/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "录入病历", + "pathName": "module1/pages/entryCases/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "病历", + "pathName": "pages/cases/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "组织架构4", + "pathName": "module1/pages/org4/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "组织架构3", + "pathName": "module1/pages/org3/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "医院活跃排行榜", + "pathName": "module1/pages/doctorRankList/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "更换手机号", + "pathName": "module1/pages/changePhone/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "个人信息", + "pathName": "module1/pages/userInfo/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "我的", + "pathName": "pages/my/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "首页", + "pathName": "pages/home/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "医生审核列表", + "pathName": "module1/pages/auditDoctorList/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "创建医院结果页", + "pathName": "module1/pages/cHostipalResult/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "创建医院", + "pathName": "module1/pages/cHostipal/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "医生认证", + "pathName": "module1/pages/setInfo/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "邀约下级医生", + "pathName": "module1/pages/invite/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "注册隐私协议", + "pathName": "module1/pages/loginProtool/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "登录", + "pathName": "module1/pages/login/index", + "query": "", + "launchMode": "default", + "scene": null + } + ] + } + }, + "libVersion": "3.6.3" } \ No newline at end of file diff --git a/src/app.json b/src/app.json index ec29386..76cffc8 100644 --- a/src/app.json +++ b/src/app.json @@ -38,7 +38,8 @@ "pages/loginOut/index", "pages/applicationRecords/index", "pages/setApplicationDoctor/index", - "pages/setApplicationDoctorResult/index" + "pages/setApplicationDoctorResult/index", + "pages/help/index" ] } ], diff --git a/src/echart/components/homeLevel1/index.scss b/src/echart/components/homeLevel1/index.scss index 2bc1e8e..8b2b876 100644 --- a/src/echart/components/homeLevel1/index.scss +++ b/src/echart/components/homeLevel1/index.scss @@ -3,7 +3,6 @@ .user { display: flex; gap: 24rpx; - align-items: center; .avatar { flex-shrink: 0; width: 112rpx; @@ -215,7 +214,7 @@ } .cooperate { margin-top: 24rpx; - background: linear-gradient(180deg, #f1feff 0%, #ffffff 100%); + background: #ffffff linear-gradient(180deg, #f1feff 0%, #ffffff 100%) no-repeat top center/100% 200rpx; border-radius: 16rpx 16rpx 16rpx 16rpx; border: 2rpx solid #ffffff; &-header { @@ -380,7 +379,7 @@ .cooperate-none { margin-top: 24rpx; - background: linear-gradient(180deg, #f1feff 0%, #ffffff 100%); + background: #ffffff linear-gradient(180deg, #f1feff 0%, #ffffff 100%) no-repeat top center/100% 200rpx; border-radius: 16rpx 16rpx 16rpx 16rpx; border: 2rpx solid #ffffff; &-header { diff --git a/src/echart/components/homeLevel2/index.scss b/src/echart/components/homeLevel2/index.scss index a5a6028..4acee39 100644 --- a/src/echart/components/homeLevel2/index.scss +++ b/src/echart/components/homeLevel2/index.scss @@ -305,7 +305,7 @@ .cooperate, .invite { margin-top: 24rpx; - background: linear-gradient(180deg, #f1feff 0%, #ffffff 100%); + background: #ffffff linear-gradient(180deg, #f1feff 0%, #ffffff 100%) no-repeat top center/100% 200rpx; border-radius: 16rpx 16rpx 16rpx 16rpx; border: 2rpx solid #ffffff; &-header { @@ -494,7 +494,7 @@ .cooperate-none, .invite-none { margin-top: 24rpx; - background: linear-gradient(180deg, #f1feff 0%, #ffffff 100%); + background: #ffffff linear-gradient(180deg, #f1feff 0%, #ffffff 100%) no-repeat top center/100% 200rpx; border-radius: 16rpx 16rpx 16rpx 16rpx; border: 2rpx solid #ffffff; &-header { diff --git a/src/images/chat-room-aside.png b/src/images/chat-room-aside.png new file mode 100644 index 0000000..10eb4ad Binary files /dev/null and b/src/images/chat-room-aside.png differ diff --git a/src/images/chat-room-case-card-bg.png b/src/images/chat-room-case-card-bg.png new file mode 100644 index 0000000..ceb5726 Binary files /dev/null and b/src/images/chat-room-case-card-bg.png differ diff --git a/src/images/help/bg.png b/src/images/help/bg.png new file mode 100644 index 0000000..9ac52d3 Binary files /dev/null and b/src/images/help/bg.png differ diff --git a/src/images/help/m1-container1.png b/src/images/help/m1-container1.png new file mode 100644 index 0000000..c75b354 Binary files /dev/null and b/src/images/help/m1-container1.png differ diff --git a/src/images/help/m1-title1.png b/src/images/help/m1-title1.png new file mode 100644 index 0000000..a7920e2 Binary files /dev/null and b/src/images/help/m1-title1.png differ diff --git a/src/images/help/m2-card1-row3-photo1.png b/src/images/help/m2-card1-row3-photo1.png new file mode 100644 index 0000000..52b3d17 Binary files /dev/null and b/src/images/help/m2-card1-row3-photo1.png differ diff --git a/src/images/help/m2-title1.png b/src/images/help/m2-title1.png new file mode 100644 index 0000000..3ecdf24 Binary files /dev/null and b/src/images/help/m2-title1.png differ diff --git a/src/images/help/m3-card1-step1-photo1.png b/src/images/help/m3-card1-step1-photo1.png new file mode 100644 index 0000000..a1ad1fa Binary files /dev/null and b/src/images/help/m3-card1-step1-photo1.png differ diff --git a/src/images/help/m3-card1-step3-photo1.png b/src/images/help/m3-card1-step3-photo1.png new file mode 100644 index 0000000..7693a35 Binary files /dev/null and b/src/images/help/m3-card1-step3-photo1.png differ diff --git a/src/images/help/m3-card2-step1-photo1.png b/src/images/help/m3-card2-step1-photo1.png new file mode 100644 index 0000000..516e139 Binary files /dev/null and b/src/images/help/m3-card2-step1-photo1.png differ diff --git a/src/images/help/m3-card3-row1-photo1.png b/src/images/help/m3-card3-row1-photo1.png new file mode 100644 index 0000000..93f3d3f Binary files /dev/null and b/src/images/help/m3-card3-row1-photo1.png differ diff --git a/src/images/help/m3-card3-row2-photo1.png b/src/images/help/m3-card3-row2-photo1.png new file mode 100644 index 0000000..e45657d Binary files /dev/null and b/src/images/help/m3-card3-row2-photo1.png differ diff --git a/src/images/help/m3-card3-row2-photo2.png b/src/images/help/m3-card3-row2-photo2.png new file mode 100644 index 0000000..88a218b Binary files /dev/null and b/src/images/help/m3-card3-row2-photo2.png differ diff --git a/src/images/help/m3-card3-row2-photo3.png b/src/images/help/m3-card3-row2-photo3.png new file mode 100644 index 0000000..a82ece3 Binary files /dev/null and b/src/images/help/m3-card3-row2-photo3.png differ diff --git a/src/images/help/m3-card4-row2-photo1.png b/src/images/help/m3-card4-row2-photo1.png new file mode 100644 index 0000000..15ec89e Binary files /dev/null and b/src/images/help/m3-card4-row2-photo1.png differ diff --git a/src/images/help/m3-title1.png b/src/images/help/m3-title1.png new file mode 100644 index 0000000..924ebc2 Binary files /dev/null and b/src/images/help/m3-title1.png differ diff --git a/src/images/help/m4-card1-step1-photo1.png b/src/images/help/m4-card1-step1-photo1.png new file mode 100644 index 0000000..c84b584 Binary files /dev/null and b/src/images/help/m4-card1-step1-photo1.png differ diff --git a/src/images/help/m4-card3-step1-photo1.png b/src/images/help/m4-card3-step1-photo1.png new file mode 100644 index 0000000..8adbf5d Binary files /dev/null and b/src/images/help/m4-card3-step1-photo1.png differ diff --git a/src/images/help/m4-card4-step1-photo1.png b/src/images/help/m4-card4-step1-photo1.png new file mode 100644 index 0000000..d50c91c Binary files /dev/null and b/src/images/help/m4-card4-step1-photo1.png differ diff --git a/src/images/help/m4-title1.png b/src/images/help/m4-title1.png new file mode 100644 index 0000000..d0944dc Binary files /dev/null and b/src/images/help/m4-title1.png differ diff --git a/src/images/icon-case.png b/src/images/icon-case.png new file mode 100644 index 0000000..7e04fb1 Binary files /dev/null and b/src/images/icon-case.png differ diff --git a/src/images/my-list-icon4.png b/src/images/my-list-icon4.png new file mode 100644 index 0000000..2ba7233 Binary files /dev/null and b/src/images/my-list-icon4.png differ diff --git a/src/images/send-case-badge.png b/src/images/send-case-badge.png new file mode 100644 index 0000000..951f55c Binary files /dev/null and b/src/images/send-case-badge.png differ diff --git a/src/module1/pages/casesDetail/index.json b/src/module1/pages/casesDetail/index.json index 947aeaf..0d352dd 100644 --- a/src/module1/pages/casesDetail/index.json +++ b/src/module1/pages/casesDetail/index.json @@ -4,8 +4,8 @@ "usingComponents": { "doctorAvatar": "/components/doctorAvatar/index", "van-dialog": "@vant/weapp/dialog/index", - "customAudioBar": "/components/customAudioBar/index", "van-icon": "@vant/weapp/icon/index", + "customAudioBar": "/components/customAudioBar/index", "customAudioText":"/components/customAudioText/index" } } diff --git a/src/module1/pages/chatRoom/index.json b/src/module1/pages/chatRoom/index.json index 2427e50..40ab15b 100644 --- a/src/module1/pages/chatRoom/index.json +++ b/src/module1/pages/chatRoom/index.json @@ -6,6 +6,8 @@ "van-popup": "@vant/weapp/popup/index", "customRecord": "/components/customRecord/index", "uploadFile": "/components/uploadFile/index", - "doctorAvatar":"/components/doctorAvatar/index" + "doctorAvatar":"/components/doctorAvatar/index", + "customAudioBar": "/components/customAudioBar/index", + "customAudioText":"/components/customAudioText/index" } } diff --git a/src/module1/pages/chatRoom/index.scss b/src/module1/pages/chatRoom/index.scss index 503c375..274fa56 100644 --- a/src/module1/pages/chatRoom/index.scss +++ b/src/module1/pages/chatRoom/index.scss @@ -229,6 +229,70 @@ page { height: 40rpx; } } + .case-card { + margin-bottom: 32rpx; + width: 502rpx; + height: 364rpx; + box-sizing: border-box; + .c-header { + padding: 20rpx 20rpx 20rpx 32rpx; + display: flex; + align-items: center; + justify-content: space-between; + .c-status { + font-size: 24rpx; + color: #ffffff; + } + .c-id { + font-size: 24rpx; + color: #fff; + } + } + .c-container { + margin: 10rpx 8rpx 0; + padding: 32rpx 26rpx 32rpx; + width: 486rpx; + height: 276rpx; + box-sizing: border-box; + background: linear-gradient(174deg, #ffffff 0%, #ebfdff 100%); + border-radius: 24rpx 24rpx 24rpx 24rpx; + display: flex; + flex-direction: column; + justify-content: space-between; + .c-row { + display: flex; + .c-label { + flex-shrink: 0; + width: 5em; + font-size: 28rpx; + color: #999999; + } + .c-content { + font-size: 28rpx; + color: #141515; + .line { + margin: 0 6rpx; + display: inline-block; + color: #cdcdcd; + } + .wrap { + display: flex; + flex-wrap: wrap; + gap: 12rpx; + .tag { + padding: 0 8rpx; + font-size: 22rpx; + color: rgba(0, 180, 197, 1); + line-height: 32rpx; + background: #ffffff; + border-radius: 4rpx 4rpx 4rpx 4rpx; + border: 1px solid #bfeff4; + } + } + } + } + } + } } } .patient { @@ -343,6 +407,70 @@ page { height: 40rpx; } } + .case-card { + margin-bottom: 32rpx; + width: 502rpx; + height: 364rpx; + box-sizing: border-box; + .c-header { + padding: 20rpx 20rpx 20rpx 32rpx; + display: flex; + align-items: center; + justify-content: space-between; + .c-status { + font-size: 24rpx; + color: #ffffff; + } + .c-id { + font-size: 24rpx; + color: #fff; + } + } + .c-container { + margin: 10rpx 8rpx 0; + padding: 32rpx 26rpx 32rpx; + width: 486rpx; + height: 276rpx; + box-sizing: border-box; + background: linear-gradient(174deg, #ffffff 0%, #ebfdff 100%); + border-radius: 24rpx 24rpx 24rpx 24rpx; + display: flex; + flex-direction: column; + justify-content: space-between; + .c-row { + display: flex; + .c-label { + flex-shrink: 0; + width: 5em; + font-size: 28rpx; + color: #999999; + } + .c-content { + font-size: 28rpx; + color: #141515; + .line { + margin: 0 6rpx; + display: inline-block; + color: #cdcdcd; + } + .wrap { + display: flex; + flex-wrap: wrap; + gap: 12rpx; + .tag { + padding: 0 8rpx; + font-size: 22rpx; + color: rgba(0, 180, 197, 1); + line-height: 32rpx; + background: #ffffff; + border-radius: 4rpx 4rpx 4rpx 4rpx; + border: 1px solid #bfeff4; + } + } + } + } + } + } } } .place { @@ -440,6 +568,30 @@ page { height: 0; } +.slidearea { + width: 30rpx; + position: fixed; + right: 0; + top: 0; + height: calc(100vh - env(safe-area-inset-bottom) - 120rpx); + z-index: 10; + .mview { + position: relative; + width: 30rpx; + height: 30rpx; + .slidebar { + position: absolute; + top: 15rpx; + left: 40rpx; + padding-right: 34rpx; + transform: translate(-100%, -50%); + width: 96rpx; + height: 106rpx; + white-space: nowrap; + } + } +} + .popup1 { padding: 48rpx 32rpx; width: 580rpx; @@ -493,3 +645,973 @@ page { border-radius: 60rpx 60rpx 60rpx 60rpx; } } + +.popup2 { + .badge { + position: relative; + z-index: 1; + display: block; + margin: 0 auto; + width: 158rpx; + height: 158rpx; + } + .popup-container { + margin-top: -79rpx; + padding: 90rpx 0 0; + width: 580rpx; + border-radius: 32rpx; + background-color: #fff; + .p-title { + font-size: 36rpx; + color: #141515; + font-weight: bold; + text-align: center; + padding-bottom: 40rpx; + } + .p-footer { + display: flex; + align-items: center; + justify-content: space-between; + line-height: 88rpx; + text-align: center; + .cancel { + flex: 1; + border-top: 1px solid #e0e0e0; + border-right: 1px solid #e0e0e0; + font-size: 32rpx; + color: #141515; + } + .ok { + flex: 1; + border-top: 1px solid #e0e0e0; + font-size: 32rpx; + color: #00b4c5; + } + } + } +} + +.popup3 { + .p-header { + padding: 30rpx 30rpx 10rpx; + display: flex; + justify-content: space-between; + align-items: center; + .close { + font-size: 34rpx; + } + .more { + font-size: 32rpx; + color: #00b4c5; + } + } + .p-container { + padding: 24rpx 24rpx; + max-height: 70vh; + overflow-y: auto; + .detail-card { + padding-bottom: 16rpx; + position: relative; + border-radius: 16rpx 16rpx 16rpx 16rpx; + border: 2rpx solid #ffffff; + background-color: #fffdfd; + .li-options { + display: flex; + justify-content: space-between; + .quality { + width: 136rpx; + height: 50rpx; + } + .gather { + padding: 12rpx 32rpx; + width: 48rpx; + height: 48rpx; + } + } + .li-header { + padding: 32rpx 32rpx 0 0; + display: flex; + justify-content: space-between; + &::before { + flex-shrink: 0; + content: ""; + width: 10rpx; + height: 40rpx; + background: #00b4c5; + border-radius: 0rpx 0rpx 0rpx 0rpx; + } + .wrap { + flex: 1; + padding-left: 22rpx; + display: flex; + flex-wrap: wrap; + gap: 24rpx; + .id { + font-size: 28rpx; + color: rgba(20, 21, 21, 1); + } + .status { + font-size: 28rpx; + &.status1 { + color: rgba(0, 180, 197, 1); + } + &.status2 { + color: rgba(247, 121, 0, 1); + } + &.status3 { + color: rgba(153, 153, 153, 1); + } + &.status4 { + color: #54e2b4; + } + } + } + .fold { + flex-shrink: 0; + display: flex; + align-items: center; + font-size: 28rpx; + color: rgba(153, 153, 153, 1); + .icon { + margin-left: 14rpx; + width: 32rpx; + height: 32rpx; + } + } + } + .li-row { + padding: 16rpx 32rpx; + display: flex; + line-height: 32rpx; + .label { + flex-shrink: 0; + font-size: 28rpx; + color: rgba(153, 153, 153, 1); + width: 5em; + } + .content { + font-size: 28rpx; + color: rgba(20, 21, 21, 1); + .line { + color: rgba(205, 205, 205, 1); + } + .new { + margin-right: 12rpx; + display: inline-block; + padding: 0 8rpx; + font-size: 24rpx; + color: #fff; + background: linear-gradient(177deg, #f77900 0%, #ed4f39 88%); + border-radius: 0rpx 8rpx 0rpx 8rpx; + } + .reject { + padding: 0 8rpx; + display: inline-block; + font-size: 24rpx; + color: rgba(153, 153, 153, 1); + line-height: 32rpx; + border: 1px solid rgba(224, 224, 224, 1); + border-radius: 4rpx; + } + } + .tags { + display: flex; + gap: 12rpx; + .tag { + padding: 2rpx 8rpx; + font-size: 22rpx; + color: rgba(0, 180, 197, 1); + line-height: 32rpx; + border: 1px solid #bfeff4; + border-radius: 4rpx; + } + } + } + .user { + padding: 16rpx 32rpx; + display: flex; + gap: 24rpx; + align-items: center; + .avatar { + flex-shrink: 0; + width: 112rpx; + height: 112rpx; + } + .wrap { + .w-header { + display: flex; + align-items: baseline; + gap: 16rpx; + .name { + font-size: 36rpx; + color: #141515; + } + .desc { + font-size: 28rpx; + color: rgba(20, 21, 21, 1); + } + } + .w-footer { + margin-top: 12rpx; + .hostipal { + margin-right: 12rpx; + display: inline; + font-size: 28rpx; + color: rgba(20, 21, 21, 1); + } + .tag { + margin-right: 12rpx; + display: inline-block; + padding: 0 8rpx; + border-radius: 4rpx; + background-color: rgba(0, 180, 197, 1); + font-size: 24rpx; + color: #fff; + } + .site { + display: inline-block; + padding: 0 8rpx; + font-size: 24rpx; + line-height: 32rpx; + color: rgba(148, 87, 30, 1); + border-radius: 4rpx; + background-color: rgba(250, 229, 206, 1); + } + } + } + } + .cases { + margin: 16rpx 32rpx 0; + padding: 32rpx; + background-color: rgba(246, 246, 246, 1); + border-radius: 16rpx; + overflow: hidden; + max-height: 1000px; + transition: all 0.5s; + &.fold { + padding: 0; + max-height: 0; + } + > view:not(:last-of-type) { + margin-bottom: 32rpx; + } + .tags { + display: flex; + align-items: flex-start; + margin-bottom: 32rpx; + .t-label { + width: 3em; + font-size: 28rpx; + color: rgba(153, 153, 153, 1); + } + .wrap { + display: flex; + flex-wrap: wrap; + gap: 12rpx; + .tag { + padding: 0 8rpx; + font-size: 22rpx; + color: rgba(0, 180, 197, 1); + line-height: 32rpx; + background: #ffffff; + border-radius: 4rpx 4rpx 4rpx 4rpx; + border: 1px solid #bfeff4; + } + } + .edit-tag { + flex-shrink: 0; + margin-left: 20rpx; + font-size: 22rpx; + color: rgba(0, 180, 197, 1); + display: flex; + align-items: center; + gap: 5rpx; + .icon { + width: 32rpx; + height: 32rpx; + } + } + } + .photos { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 12rpx; + .photo { + width: 100%; + height: 128rpx; + border-radius: 8rpx; + } + } + .remark { + .r-title { + font-size: 32rpx; + color: rgba(20, 21, 21, 1); + font-weight: bold; + line-height: 1; + } + .r-content { + margin-top: 24rpx; + border: 32rpx solid #fff; + font-size: 28rpx; + color: rgba(133, 133, 133, 1); + line-height: 50rpx; + border-radius: 16rpx; + background-color: #fff; + white-space: pre-line; + max-height: 400rpx; + overflow-y: auto; + } + } + .audio-list { + .audio-row { + display: flex; + gap: 28rpx; + align-items: center; + &:not(:last-of-type) { + margin-bottom: 24rpx; + } + .audio-bar { + flex: 1; + border-radius: 104rpx; + background-color: #fff; + } + .options { + flex-shrink: 0; + gap: 20rpx; + display: flex; + align-items: center; + .del { + width: 36rpx; + height: 36rpx; + } + .trans { + font-size: 28rpx; + color: rgba(128, 128, 128, 1); + } + } + } + } + .files { + .f-title { + font-size: 32rpx; + color: #000; + font-weight: bold; + line-height: 1; + } + .file-list { + margin-top: 24rpx; + .fl-row { + margin-top: 24rpx; + display: flex; + align-content: inherit; + justify-content: space-between; + .wrap { + flex: 1; + padding: 20rpx 24rpx; + border-radius: 16rpx; + background: #ffffff; + display: flex; + align-items: center; + .icon { + flex-shrink: 0; + width: 56rpx; + height: 56rpx; + } + .name { + flex: 1; + margin-left: 30rpx; + font-size: 32rpx; + color: rgba(128, 128, 128, 1); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 13em; + } + .preview { + font-size: 32rpx; + color: #01b4c5; + } + } + } + } + } + } + } + .feedback-card { + margin-top: 24rpx; + padding-bottom: 16rpx; + position: relative; + border-radius: 16rpx 16rpx 16rpx 16rpx; + border: 2rpx solid #ffffff; + background: #fffdfd linear-gradient(to bottom, #e5f5f7 0%, #ffffff 100%) no-repeat top center/100% 200rpx; + .li-options { + margin-bottom: -32rpx; + display: flex; + justify-content: space-between; + height: 60rpx; + .quality { + width: 136rpx; + height: 44rpx; + } + } + .li-row { + padding: 32rpx 32rpx 16rpx 0; + display: flex; + justify-content: space-between; + line-height: 32rpx; + &.li-row-first { + align-items: center; + &::before { + margin-right: 22rpx; + flex-shrink: 0; + content: ""; + width: 10rpx; + height: 40rpx; + background: #00b4c5; + border-radius: 0rpx 0rpx 0rpx 0rpx; + } + } + .label { + flex-shrink: 0; + font-size: 28rpx; + color: rgba(153, 153, 153, 1); + width: 5em; + } + .content { + flex: 1; + font-size: 28rpx; + color: rgba(20, 21, 21, 1); + .line { + color: rgba(205, 205, 205, 1); + } + .new { + margin-right: 12rpx; + display: inline-block; + padding: 0 8rpx; + font-size: 24rpx; + color: #fff; + background: linear-gradient(177deg, #f77900 0%, #ed4f39 88%); + border-radius: 0rpx 8rpx 0rpx 8rpx; + } + .reject { + padding: 0 8rpx; + display: inline-block; + font-size: 24rpx; + color: rgba(153, 153, 153, 1); + line-height: 32rpx; + border: 1px solid rgba(224, 224, 224, 1); + border-radius: 4rpx; + } + } + .fold { + flex-shrink: 0; + display: flex; + align-items: center; + font-size: 28rpx; + color: rgba(153, 153, 153, 1); + .icon { + margin-left: 14rpx; + width: 32rpx; + height: 32rpx; + } + } + + .tags { + display: flex; + gap: 12rpx; + .tag { + padding: 2rpx 8rpx; + font-size: 22rpx; + color: rgba(0, 180, 197, 1); + line-height: 32rpx; + border: 1px solid #bfeff4; + border-radius: 4rpx; + } + } + } + .user { + padding: 16rpx 32rpx; + display: flex; + gap: 24rpx; + .avatar { + flex-shrink: 0; + width: 112rpx; + height: 112rpx; + } + .wrap { + .w-header { + display: flex; + align-items: baseline; + gap: 16rpx; + .name { + font-size: 36rpx; + color: #141515; + } + .desc { + font-size: 28rpx; + color: rgba(20, 21, 21, 1); + } + } + .w-footer { + margin-top: 12rpx; + .hostipal { + margin-right: 12rpx; + display: inline; + font-size: 28rpx; + color: rgba(20, 21, 21, 1); + } + .tag { + margin-right: 12rpx; + display: inline-block; + padding: 0 8rpx; + border-radius: 4rpx; + background-color: rgba(0, 180, 197, 1); + font-size: 24rpx; + color: #fff; + } + .site { + display: inline-block; + padding: 0 8rpx; + font-size: 24rpx; + line-height: 32rpx; + color: rgba(148, 87, 30, 1); + border-radius: 4rpx; + background-color: rgba(250, 229, 206, 1); + } + .specialty { + margin-top: 14rpx; + display: flex; + gap: 12rpx; + flex-wrap: wrap; + .wf-label { + flex-shrink: 0; + width: 48rpx; + height: 32rpx; + } + .wf-tag { + flex-shrink: 0; + padding: 0 8rpx; + font-size: 22rpx; + color: rgba(0, 180, 197, 1); + line-height: 32rpx; + border: 1px solid rgba(191, 239, 244, 1); + } + } + } + } + } + .cases { + margin: 16rpx 32rpx 0; + padding: 32rpx; + background-color: rgba(246, 246, 246, 1); + border-radius: 16rpx; + overflow: hidden; + max-height: 1000px; + transition: all 0.5s; + &.fold { + padding: 0; + max-height: 0; + } + > view:not(:last-of-type) { + margin-bottom: 32rpx; + } + .photos { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 12rpx; + .photo { + width: 100%; + height: 128rpx; + border-radius: 8rpx; + } + } + .remark { + .r-title { + font-size: 32rpx; + color: rgba(20, 21, 21, 1); + font-weight: bold; + line-height: 1; + } + .r-content { + margin-top: 24rpx; + border: 32rpx solid #fff; + font-size: 28rpx; + color: rgba(133, 133, 133, 1); + line-height: 50rpx; + border-radius: 16rpx; + background-color: #fff; + white-space: pre-line; + max-height: 400rpx; + overflow-y: auto; + } + } + .audio-list { + .audio-row { + display: flex; + gap: 28rpx; + align-items: center; + &:not(:last-of-type) { + margin-bottom: 24rpx; + } + .audio-bar { + flex: 1; + border-radius: 104rpx; + background-color: #fff; + } + .options { + flex-shrink: 0; + gap: 20rpx; + display: flex; + align-items: center; + .del { + width: 36rpx; + height: 36rpx; + } + .trans { + font-size: 28rpx; + color: rgba(128, 128, 128, 1); + } + } + } + } + .files { + .f-title { + font-size: 32rpx; + color: #000; + font-weight: bold; + line-height: 1; + } + .file-list { + margin-top: 24rpx; + .fl-row { + margin-top: 24rpx; + display: flex; + align-content: inherit; + justify-content: space-between; + .wrap { + flex: 1; + padding: 20rpx 24rpx; + border-radius: 16rpx; + background: #ffffff; + display: flex; + align-items: center; + .icon { + flex-shrink: 0; + width: 56rpx; + height: 56rpx; + } + .name { + flex: 1; + margin-left: 30rpx; + font-size: 32rpx; + color: rgba(128, 128, 128, 1); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 13em; + } + .preview { + font-size: 32rpx; + color: #01b4c5; + } + } + } + } + } + } + } + .doctor-card { + margin-top: 24rpx; + margin-bottom: 20rpx; + background: linear-gradient(180deg, #e5f5f7 0%, #ffffff 50%); + box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.1); + border-radius: 16rpx 16rpx 16rpx 16rpx; + border: 2rpx solid #ffffff; + .dc-header { + padding: 34rpx 32rpx 0 0; + display: flex; + justify-content: space-between; + align-items: center; + .status { + padding: 4rpx 28rpx; + font-size: 24rpx; + color: rgba(0, 180, 197, 1); + border-radius: 0 32rpx 32rpx 0; + background-color: rgba(215, 237, 238, 1); + } + .date { + font-size: 28rpx; + color: rgba(20, 21, 21, 1); + } + } + .doctor { + padding: 32rpx; + display: flex; + gap: 24rpx; + &:last-of-type { + margin-bottom: 0; + } + .avatar { + flex-shrink: 0; + position: relative; + width: 112rpx; + height: 112rpx; + } + .wrap { + padding-top: 8rpx; + flex: 1; + .w-header { + display: flex; + align-items: baseline; + gap: 16rpx; + line-height: 1; + .name { + font-size: 36rpx; + color: rgba(20, 21, 21, 1); + font-weight: bold; + } + .label { + font-size: 28rpx; + color: rgba(20, 21, 21, 1); + } + .line { + width: 1px; + height: 24rpx; + background-color: rgba(205, 205, 205, 1); + } + } + .w-container { + margin-top: 24rpx; + .hostipal { + margin-right: 12rpx; + font-size: 28rpx; + color: rgba(20, 21, 21, 1); + } + .tag { + margin-right: 12rpx; + display: inline-block; + padding: 0 8rpx; + border-radius: 4rpx; + font-size: 24rpx; + color: rgba(255, 255, 255, 1); + line-height: 32rpx; + background-color: rgba(0, 180, 197, 1); + } + .site { + display: inline-block; + padding: 0 8rpx; + font-size: 24rpx; + color: rgba(148, 87, 30, 1); + line-height: 32rpx; + border-radius: 4rpx; + background-color: rgba(250, 229, 206, 1); + } + } + .w-footer { + margin-top: 16rpx; + display: flex; + gap: 12rpx; + flex-wrap: wrap; + .wf-label { + flex-shrink: 0; + width: 48rpx; + height: 32rpx; + } + .wf-tag { + flex-shrink: 0; + padding: 0 8rpx; + font-size: 22rpx; + color: rgba(0, 180, 197, 1); + line-height: 32rpx; + border: 1px solid rgba(191, 239, 244, 1); + } + } + } + } + } + .footer { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + padding: 32rpx 32rpx calc(env(safe-area-inset-bottom) + 32rpx); + box-sizing: border-box; + background-color: #fff; + display: flex; + align-items: center; + justify-content: space-between; + gap: 60rpx; + box-shadow: 0 10rpx 10rpx 10rpx #fffdfd; + .wrap { + flex-shrink: 0; + display: flex; + align-items: center; + justify-content: center; + gap: 30rpx; + &.all-wrap { + flex: 1; + .w-item { + flex: 1; + } + } + .w-item { + position: relative; + text-align: center; + .icon { + width: 48rpx; + height: 48rpx; + } + .name { + font-size: 24rpx; + color: rgba(153, 153, 153, 1); + white-space: nowrap; + } + .tip { + position: fixed; + transform: translate(-50%, -110%); + left: 50%; + border-radius: 12rpx; + width: 686rpx; + box-sizing: border-box; + padding: 18rpx 24rpx; + background-color: rgba(255, 247, 232, 1); + .t-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 20rpx; + font-size: 28rpx; + color: rgba(255, 125, 0, 1); + .date { + flex-shrink: 0; + } + } + .content { + margin-top: 12rpx; + font-size: 28rpx; + color: rgba(255, 125, 0, 1); + text-align: left; + } + // &::after { + // position: absolute; + // bottom: -12rpx; + // left: 50%; + // transform: translateX(-50%); + // content: ""; + // width: 0; + // height: 0; + // border-style: solid; + // border-width: 27rpx 27rpx 0 27rpx; + // border-color: rgba(255, 247, 232, 1) transparent transparent transparent; + // } + } + .more { + position: absolute; + top: -20rpx; + transform: translateY(-100%); + background-color: #fff; + box-shadow: 0 4rpx 24rpx rgba(0, 0, 0, 0.1); + border-radius: 8rpx; + .m-item { + padding: 0 24rpx; + display: flex; + align-items: center; + gap: 20rpx; + .icon { + flex-shrink: 0; + width: 36rpx; + height: 36rpx; + } + .name { + padding: 24rpx 0; + white-space: nowrap; + font-size: 28rpx; + color: rgba(20, 21, 21, 1); + } + } + .m-item:not(:first-of-type) { + .name { + border-top: 1px solid #f3f3f3; + } + } + &::after { + position: absolute; + bottom: -12rpx; + left: 20rpx; + content: ""; + width: 0; + height: 0; + border-style: solid; + border-width: 27rpx 27rpx 0 27rpx; + border-color: #fff transparent transparent transparent; + } + } + } + } + .btn-wrap { + flex: 1; + .btn1 { + height: 88rpx; + font-size: 32rpx; + text-align: center; + line-height: 88rpx; + color: rgba(255, 255, 255, 1); + background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%); + border-radius: 68rpx 68rpx 68rpx 68rpx; + } + .btn2 { + display: flex; + align-items: center; + border-radius: 82rpx; + .l-btn, + .r-btn { + flex: 1; + padding: 24rpx 14rpx; + font-size: 32rpx; + text-align: center; + line-height: 40rpx; + } + .l-btn { + border-radius: 82rpx 0 0 82rpx; + color: rgba(0, 180, 197, 1); + border: 1px solid #00b4c5; + border-right: none; + line-height: 36rpx; + } + .r-btn { + border-radius: 0 82rpx 82rpx 0; + color: rgba(255, 255, 255, 1); + background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%); + } + } + } + .one-wrap { + position: relative; + display: flex; + justify-content: space-between; + align-items: center; + gap: 24rpx; + .cancel { + width: 332rpx; + height: 84rpx; + font-size: 32rpx; + color: rgba(1, 180, 197, 1); + text-align: center; + line-height: 84rpx; + border-radius: 96rpx 96rpx 96rpx 96rpx; + border: 1px solid #01b4c5; + } + .sure { + width: 330rpx; + height: 88rpx; + font-size: 32rpx; + color: rgba(255, 255, 255, 1); + text-align: center; + line-height: 88rpx; + background: linear-gradient(90deg, #00b4c5 0%, #54e2b4 100%); + border-radius: 84rpx 84rpx 84rpx 84rpx; + } + } + } + } +} diff --git a/src/module1/pages/chatRoom/index.ts b/src/module1/pages/chatRoom/index.ts index d5a46cc..7676790 100644 --- a/src/module1/pages/chatRoom/index.ts +++ b/src/module1/pages/chatRoom/index.ts @@ -4,7 +4,7 @@ const app = getApp(); interface IMessageItem { msgId: string; - contentType: "1" | "2" | "3" | "4" | "5" | "6"; // 1:文本 2: 语音 3. 图片 4. 视频 5. 提示信息 + contentType: "1" | "2" | "3" | "4" | "5" | "6" | "7"; // 1:文本 2: 语音 3. 图片 4. 视频 5. 提示信息 6. 撤回消息 7. 病例卡片 content: any; fromDoctorId: string; doctorImg: string; @@ -25,6 +25,8 @@ Page({ id: "", show1: false, + show2: false, + show3: false, focus: false, fold: true, @@ -54,12 +56,20 @@ Page({ record: true, canInvite: false, + + sliderTop: 0, + + // caseDetail + caseFold: false, + detail: {} as any, }, innerAudioContext: null as WechatMiniprogram.InnerAudioContext | null, videoContext: null as WechatMiniprogram.VideoContext | null, onLoad(options) { + const systemInfo = wx.getSystemInfoSync(); this.setData({ id: options.id, + sliderTop: systemInfo.screenHeight - 260, }); this.videoContext = wx.createVideoContext("video"); this.innerAudioContext = wx.createInnerAudioContext({ @@ -145,6 +155,8 @@ Page({ this.getInvite(); this.WebIMLogin(); + + this.getCaseDetail(); }); }, handleRoomDetail() { @@ -322,6 +334,7 @@ Page({ const { index } = e.currentTarget.dataset; const { messageList } = this.data; const message = messageList[index]; + this.senIMRecallMessage(message); this.delMessage(message); this.senRecallMessage(index); }, @@ -356,6 +369,53 @@ Page({ messageList, }); }, + senIMRecallMessage(message) { + const { chatGroupInfo, userInfo } = this.data; + const option = { + mid: message.uniqueCode, + to: chatGroupInfo.ChatGroupId, + chatType: "groupChat", + ext: userInfo.Name, + }; + wx.WebIM.conn.recallMessage(option); + }, + senRecallCallback(message) { + const { messageList } = this.data; + const { mid } = message; + let mIndex: number | null = null; + const newMessageList = messageList.filter((item, index) => { + if (item.uniqueCode === mid) { + mIndex = index; + return false; + } + return true; + }); + this.setData({ + messageList: newMessageList, + }); + if (mIndex) { + this.senRecallCallbackPush(mIndex, message); + } + }, + senRecallCallbackPush(index, extMessage) { + const { userInfo, messageList } = this.data; + const message: IMessageItem = { + msgId: "", + contentType: "6", + content: `${extMessage.ext}撤回了一条消息`, + fromDoctorId: userInfo.DoctorId, + createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), + isSelf: 1, + isRead: 2, + doctorImg: userInfo.Img, + doctorName: userInfo.Name, + hospitalName: userInfo.HospitalName, + }; + messageList.splice(index, 1, message); + this.setData({ + messageList, + }); + }, WebIMLogin() { const { chatDoctor } = this.data; wx.WebIM.conn @@ -420,6 +480,9 @@ Page({ this.handleView(); } }, + onRecallMessage: (message) => { + this.senRecallCallback(message); + }, }); }, formatMessage(message: IMessageItem) { @@ -604,4 +667,118 @@ Page({ messageList, }); }, + handleConformSendCase() { + this.setData({ + show2: true, + }); + }, + handleCancelSendCase() { + this.setData({ + show2: false, + }); + }, + handleSendCase() { + const { userInfo } = this.data; + const message: IMessageItem = { + msgId: "", + contentType: "7", + content: "病历", + fromDoctorId: userInfo.DoctorId, + createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), + isSelf: 1, + isRead: 2, + doctorImg: userInfo.Img, + doctorName: userInfo.Name, + hospitalName: userInfo.HospitalName, + }; + this.WebIMSendMessage(message); + this.handleCancelSendCase(); + }, + + handleCase() { + this.setData({ + show3: true, + }); + }, + handleCaseDetailClose() { + this.setData({ + show3: false, + }); + }, + getCaseDetail() { + wx.ajax({ + method: "GET", + url: "?r=takeda/case/get-case-detail", + data: { + caseId: this.data.case.caseId, + }, + }).then((res) => { + res.feedbackList.map((item) => { + item.fold = false; + return item; + }); + this.setData({ + detail: res, + dealDoctorInfo: res.dealCaseInfo.dealDoctorInfo, + dealInfo: res.dealCaseInfo.dealInfo, + deptId: res.caseDeptId[0], + labelIds: res.caseLabels.map((item) => item.labelId), + }); + }); + }, + handleFold() { + this.setData({ + caseFold: !this.data.caseFold, + }); + }, + handleFeedBackFold(e) { + const { index } = e.currentTarget.dataset; + const { detail } = this.data; + const feedbackList = detail.feedbackList; + feedbackList[index].fold = !feedbackList[index].fold; + this.setData({ + detail: { + ...detail, + feedbackList, + }, + }); + }, + handlePreviewFile(e) { + app.mpBehavior({ PageName: "BTN_CASEDETAILFILEPREVIEW" }); + const { item } = e.currentTarget.dataset; + wx.downloadFile({ + url: item.url, + success(res) { + wx.openDocument({ + filePath: res.tempFilePath, + showMenu: true, + fail() { + wx.showToast({ + title: "该文件无法预览", + icon: "none", + }); + }, + }); + }, + }); + }, + handlePreviewName(e) { + const { item } = e.currentTarget.dataset; + wx.showModal({ + title: "文件名", + content: item.name, + confirmColor: "#00B4C5", + cancelColor: "#141515", + showCancel: false, + confirmText: "关闭", + }); + }, + handleImagePreview(e) { + const { url, parent } = e.currentTarget.dataset; + const urls = parent.map((item) => item.url); + wx.previewImage({ + urls, + current: url, + }); + }, }); diff --git a/src/module1/pages/chatRoom/index.wxml b/src/module1/pages/chatRoom/index.wxml index a2e08f5..2e487e7 100644 --- a/src/module1/pages/chatRoom/index.wxml +++ b/src/module1/pages/chatRoom/index.wxml @@ -1,3 +1,4 @@ + @@ -86,6 +87,40 @@ + + + 病例{{detail.caseStatusName}} + ID:{{detail.caseNo}} + + + + 提交时间 + {{detail.createTime}} + + + 提交人 + + {{detail.createDoctorInfo.doctorName}} + | + {{detail.createDoctorInfo.hospitalName}} {{detail.createDoctorInfo.doctorTitleName || + detail.createDoctorInfo.doctorOtherTitle}} + + + + 标签 + + + {{item.labelName}} + + + + + @@ -125,6 +160,40 @@ + + + 病例{{detail.caseStatusName}} + ID:{{detail.caseNo}} + + + + 提交时间 + {{detail.createTime}} + + + 提交人 + + {{detail.createDoctorInfo.doctorName}} + | + {{detail.createDoctorInfo.hospitalName}} {{detail.createDoctorInfo.doctorTitleName || + detail.createDoctorInfo.doctorOtherTitle}} + + + + 标签 + + + {{item.labelName}} + + + + + @@ -177,6 +246,12 @@ + + + + + + + 用户须知 @@ -206,3 +287,271 @@ 确定 + + + + + + 发送病历卡片到学习窗 + + 取消 + 确定 + + + + + + + + + + 更多操作 + + + + + + ID:{{detail.caseNo}} + {{detail.caseStatusName}} + {{detail.caseStatusName}} + {{detail.caseStatusName}} + {{detail.caseStatusName}} + 已公开 + + + {{caseFold ? '展开' : '收起'}} + + + + + 提交时间 + {{detail.createTime}} + + + + + + {{detail.createDoctorInfo.doctorName}} + + {{detail.createDoctorInfo.doctorTitleName || detail.createDoctorInfo.doctorOtherTitle}} + + + + {{detail.createDoctorInfo.hospitalName}} + + {{detail.createDoctorInfo.hospitalClassificationName}}{{detail.createDoctorInfo.hospitalLevelName}} + + + {{detail.createDoctorInfo.cityName}}{{detail.createDoctorInfo.countyName?'/':''}}{{detail.createDoctorInfo.countyName}} + + + + + + + 标签 + + {{item.labelName}} + + + + + + + 病历备注 + {{detail.description}} + + + + + + + 转文字 + + + + + + 病历相关文件 + + + + + {{item.name}} + 预览 + + + + + + + + + + 已提交给 + 提交时间:{{dealInfo.createTime}} + + + + + + {{dealDoctorInfo.doctorName}} + {{dealDoctorInfo.doctorTitleName || dealDoctorInfo.doctorOtherTitle}} + + + {{item.DepartmentName}} + + + + {{dealDoctorInfo.hospitalName}} + {{dealDoctorInfo.hospitalClassificationName}}{{dealDoctorInfo.hospitalLevelName}} + + {{dealDoctorInfo.cityName}}{{dealDoctorInfo.countyName?'/':''}}{{dealDoctorInfo.countyName}} + + + + + + {{item.SpecialtyName}} + + + + + + + + diff --git a/src/module1/pages/help/index.json b/src/module1/pages/help/index.json new file mode 100644 index 0000000..8a28242 --- /dev/null +++ b/src/module1/pages/help/index.json @@ -0,0 +1,5 @@ +{ + "navigationBarTitleText": "帮助中心", + "navigationStyle": "default", + "usingComponents": {} +} diff --git a/src/module1/pages/help/index.scss b/src/module1/pages/help/index.scss new file mode 100644 index 0000000..aad7d34 --- /dev/null +++ b/src/module1/pages/help/index.scss @@ -0,0 +1,92 @@ +page { + background-color: #f1feff; +} +.page { + padding: 500rpx 0 80rpx; + .module { + .m-title { + margin: 34rpx auto 0; + display: block; + width: 670rpx; + max-height: 150rpx; + } + .m1-contaienr1 { + margin: 32rpx 32rpx 0; + width: 686rpx; + height: 546rpx; + } + .m-card { + margin: 26rpx 32rpx 0; + background-color: #fff; + border-radius: 24rpx; + .c-title { + padding: 32rpx 32rpx 16rpx 0; + font-size: 36rpx; + color: #141515; + font-weight: bold; + line-height: 56rpx; + &::before { + content: ''; + margin-right: 20rpx; + display: inline-block; + width: 12rpx; + height: 40rpx; + background-color: #00b4c5; + vertical-align: -4rpx; + } + } + .c-title-line { + margin: 0 32rpx; + border-top: 1px dashed #00b4c5; + } + .c-container { + padding: 36rpx 32rpx 44rpx; + .list { + .row { + display: flex; + gap: 16rpx; + .order { + margin-top: 10rpx; + flex-shrink: 0; + width: 40rpx; + height: 40rpx; + text-align: center; + line-height: 40rpx; + font-size: 32rpx; + color: #fff; + background: #00b4c5; + border-radius: 50%; + } + .content { + line-height: 56rpx; + font-size: 32rpx; + color: #4f5050; + } + } + } + .photo { + margin-top: 32rpx; + width: 622rpx; + } + .mt24 { + margin-top: 24rpx; + } + .mt32 { + margin-top: 32rpx; + } + .ml56 { + margin-left: 56rpx; + } + .step { + font-size: 28rpx; + color: #4f5050; + line-height: 56rpx; + .emphasis { + color: #00b4c5; + font-weight: bold; + } + } + } + } + } +} diff --git a/src/module1/pages/help/index.ts b/src/module1/pages/help/index.ts new file mode 100644 index 0000000..067b6bb --- /dev/null +++ b/src/module1/pages/help/index.ts @@ -0,0 +1,8 @@ +const _app = getApp(); + +Page({ + data: {}, + onLoad() {}, +}); + +export {} diff --git a/src/module1/pages/help/index.wxml b/src/module1/pages/help/index.wxml new file mode 100644 index 0000000..470ffa0 --- /dev/null +++ b/src/module1/pages/help/index.wxml @@ -0,0 +1,312 @@ + + + + + + + + + 1. 一级医生如何入驻平台 + + + + + 1 + 扫描核心医生专属邀约码进入医生端登录页 + + + 2 + 登录成功,进入医生认证页后,提交认证信息,等待核心医生审核 + + + 3 + 核心医生核通过后,一级医生即可顺利进入小程序首页 + + + + + + + 2. 核心医生如何入驻平台 + + + + + 1 + 医生提供手机号,由系统工作人员录入白名单 + + + 2 + 已录入系统白名单的医生扫描专属医生小程序码,进入医生端登录页 + + + 3 + 输入白名单的手机号和验证码即可识别成功即可顺利进入平台; + + + + + + 3. 质控医生如何入驻平台 + + + + + 1 + 医生提供手机号,由系统工作人员录入白名单 + + + 2 + 已录入系统白名单的医生扫描专属医生小程序码,进入医生端登录页 + + + 3 + 输入白名单的手机号和验证码即可识别成功即可顺利进入平台; + + + + + + 4. 超级医生如何入驻平台 + + + + + 1 + 医生提供手机号,由系统工作人员录入白名单 + + + 2 + 已录入系统白名单的医生扫描专属医生小程序码,进入医生端登录页 + + + 3 + 输入白名单的手机号和验证码即可识别成功即可顺利进入平台 + + + + + + + + + 1. 一级医生录入病历的完整流程 + + + + 入口 + :首页 - 点击下方“+”按钮 - 录入病历 + + + + + 操作流程: + + + (1) + 点击 ”+” 按钮,进入录入病历页 + + + (2) + 上传病历图片、病历相关文件、病历语音、 + + + + + 关键说明: + + 上传病历图片时,需进行图片模糊操作,防止病人隐私泄露 + + + + + + 2. 选择合作的核心医生提交病历 + + + + 入口 + :录入病例页 - 点击下方“保存并提交”按钮 - 邀请合作医生提交病例 + + + + + 操作流程: + + + (1) + 点击 ”保存并提交” 按钮,进入邀请合作医生页 + + + (2) + 选择合作的核心医生,点击 ”确认提交” 按钮,即可将病历提交给核心医生 + + + + + + 3. 核心医生收到病例通知并处理 + + + + + 1 + + 病历提交给核心医生后,核心医生收到push通知,点击通知或点击首页待处理病历进入病历列表查看病历,可对病历进行操作 + + + + + 2 + 登录成功,进入医生认证页后,提交认证信息,等待核心医生审核 + + + + 病历反馈成功 + :质控医生收到push,可查看信息,对病历进行处理 + + + + 病历被驳回 + :一级医生收到push,可查看驳回原因,对病历进行修改后,重新选择核心医生进行病历提交;点击病历左下方”更多操作”可进行删除或重新编辑 + + + + 3 + 核心医生反馈成功的病例,病历状态会更新为讨论中,后续可以对该病历持续讨论 + + + + + + 4. 质控医生收到病例通知并处理 + + + + + 1 + + 病历提交给质控医生后,质控医生收到push通知,点击通知或点击首页待处理病历进入病历列表查看病历,可对病历进行操作 + + + + 2 + 质控医生可对病历进行反馈或驳回 + + + 病历反馈成功 + 核心医生和一级医生收到push,可查看信息 + + + 病历被驳回 + 核心医生收到push,查看驳回原因后,会选择对病历反馈新内容,还是重新选择质控医生进行提交病历 + + + + 3 + + 质控医生反馈成功的病例,后续可以对该病历持续讨论,并提供更多操作功能包括:归档或公开。归档后病历完成的标志,归档病历不再支持做更多反馈,病历标记为公开后,本科室的医生均可在病历列表顶部”公开”类内进行查看。 + + + + + + + + + + 1. 如何创建聊天室 + + + + 入口 + :讨论中的病历详情 - 点击左下方创建学习窗 + + + + + 操作流程: + + 点击 ”创建学习窗” 按钮,即可成功创建学习窗 + + + + 关键说明: + + + (1) + 参与病历讨论的核心医生和质控医生可进行创建学习窗操作 + + + (2) + 病例有初次反馈后才可以创建学习窗; + + + + + + 2. 聊天室内的功能内容 + + + + 入口 + :学习窗列表 - 学习窗详情 + + + + 关键说明: + + + (1) + 学习窗内,可发送文字、语音、照片、视频 + + + (2) + 学习窗内的内容可撤回; + + + + + + 3. 如何邀约更多医生进入 + + + + 入口 + :学习窗详情 - 点击“+”按钮 - 选择医生进行邀约 + + + + + 关键说明: + + + (1) + 参与病历讨论的核心医生和质控医生可进行创建学习窗操作 + + + (2) + 无质控医生参与反馈的病例,核心医生可创建学习窗,如病历有质控医生参与反馈,则只有质控医生可创建学习窗 + + + + + + 4. 质控医生收到病例通知并处理 + + + + 入口 + :学习窗详情 - 点击右上方“详情” - 查看病历详情 + + + + + 关键说明: + + 学习窗内可查看病历详情,以帮助医生在讨论病历时,可随时查看病历相关内容 + + + + + diff --git a/src/pages/my/index.ts b/src/pages/my/index.ts index 6a05cc8..bd004f0 100644 --- a/src/pages/my/index.ts +++ b/src/pages/my/index.ts @@ -63,9 +63,11 @@ Page({ url: "/module1/pages/invite/index", }); }, - - handleBZSC() { + handleHelp() { app.mpBehavior({ PageName: "BTN_MYHELPMANUAL" }); + wx.navigateTo({ + url: "/module1/pages/help/index", + }); }, }); diff --git a/src/pages/my/index.wxml b/src/pages/my/index.wxml index 6c05feb..9d58837 100644 --- a/src/pages/my/index.wxml +++ b/src/pages/my/index.wxml @@ -57,6 +57,13 @@ + + + + + + +