diff --git a/AGENTS.md b/AGENTS.md index 4f554db..b237a5e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -204,7 +204,7 @@ IGG4 重症肌无力(MG)患者社区微信小程序。两种用户角色: - **`noImplicitAny: false`** — 允许隐式 any - **`removeComments: true`**(tsconfig)— 编译输出移除注释 - **Prettier**:无分号、单引号、尾逗号、120 字符宽度;`.wxml` 按 HTML 解析,`.wxss` 按 CSS 解析,`.wxs` 按 babel 解析 -- **API URL 格式**:所有 API 调用使用 `?r=模块/动作` 格式(如 `?r=igg4/user/init-login`、`?r=igg4/account/info`) +- **API URL 格式**:所有 API 调用使用 `?r=模块/动作` 格式(如 `?r=zd/user/init-login`、`?r=zd/account/info`) - **默认分享**:患者端页面分享到 `/pages/index/index`,医生端页面分享到 `/doctor/pages/d_home/index`,标题:"重症肌无力加油站,重拾生活掌控感!" - **客服电话**:全局 `handleMakePhoneCall` 拨打 `4008102299` diff --git a/README.md b/README.md index 331427c..8546f6f 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ wx.showModal({ title: '', confirmColor: '#cf5375', }) -// 医生端 confirmColor: '#62bed0', +// 医生端 confirmColor: 'rgba(22, 121, 203, 1)', ``` 1)提供3中的3个路径链接; diff --git a/dist.ps1 b/dist.ps1 index d75626b..2c2950c 100644 --- a/dist.ps1 +++ b/dist.ps1 @@ -6,3 +6,5 @@ svn add . --no-ignore --force # Commit the changes with a message svn ci -m "版本更新" + +ssh hb127 "cd /data/wwwroot/default/igg4/shop/frontend/web/igg4 && svn up && exit" diff --git a/project.config.json b/project.config.json index 68ce1b9..37109e5 100644 --- a/project.config.json +++ b/project.config.json @@ -69,7 +69,7 @@ ], "include": [] }, - "appid": "wxc3cdb3c4d4f62cea", + "appid": "wx9404bbbdaf52c276", "scripts": { "beforeCompile": "pnpm run beforeCompile", "beforePreview": "pnpm run beforeCompile", diff --git a/project.private.config.json b/project.private.config.json index d6b6249..a20e8e0 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -18,6 +18,186 @@ "bigPackageSizeSupport": false }, "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", - "condition": {}, + "condition": { + "miniprogram": { + "list": [ + { + "name": "医生-邀约", + "pathName": "doctor/pages/d_invite/index", + "query": "", + "scene": null, + "launchMode": "default" + }, + { + "name": "患者-我的", + "pathName": "doctor/pages/d_my/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "医生-个人信息", + "pathName": "doctor/pages/d_userInfo/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "医生-医患互动", + "pathName": "doctor/pages/d_interactiveDoctor/index", + "query": "patientId=1313", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-互动", + "pathName": "doctor/pages/d_interactive/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "医生-患者详情", + "pathName": "doctor/pages/d_patientDetail/index", + "query": "id=1313", + "launchMode": "default", + "scene": null + }, + { + "name": "医生-患者列表", + "pathName": "doctor/pages/d_patient/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "医生-首页", + "pathName": "doctor/pages/d_home/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "医生-登录", + "pathName": "doctor/pages/d_login/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-问卷", + "pathName": "pages/qaForm/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-用药认证审核失败", + "pathName": "gift/pages/vipReject/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-审核中", + "pathName": "/pages/certPending/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-认证用药成功", + "pathName": "/pages/certReslove/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-认证用药身份", + "pathName": "pages/uploadCert/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-医生介绍", + "pathName": "pages/doctorDetail/index", + "query": "id=12", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-医患互动", + "pathName": "pages/interactivePatient/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-医院介绍", + "pathName": "pages/hospital/index", + "query": "id=12", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-就诊地图", + "pathName": "pages/doctor/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-活动详情", + "pathName": "pages/liveDetail/index", + "query": "id=108", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-活动", + "pathName": "pages/live/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-我的", + "pathName": "pages/my/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-首页", + "pathName": "pages/index/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-知识库", + "pathName": "pages/repository/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-录入个人信息", + "pathName": "pages/enterInfo/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-登录", + "pathName": "pages/login/index", + "query": "", + "launchMode": "default", + "scene": null + } + ] + } + }, "libVersion": "3.5.8" } \ No newline at end of file diff --git a/src/app.json b/src/app.json index 3b80c50..855a187 100644 --- a/src/app.json +++ b/src/app.json @@ -40,10 +40,6 @@ "pages/liveDetail/index", "pages/liveResult/index", "pages/signIn/index", - "pages/adl/index", - "pages/adlShare/index", - "pages/adlTest/index", - "pages/adlResult/index", "pages/smallPage/index", "pages/hospital/index", "pages/doctor/index", @@ -57,7 +53,7 @@ "pages/nrdlTable/index", "pages/interactivePatient/index", "pages/referral/index", - "pages/demo/index" + "pages/qaForm/index" ], "subpackages": [ { @@ -135,11 +131,11 @@ }, { "pagePath": "pages/repository/index", - "text": "知识库" + "text": "知识" }, { "pagePath": "pages/live/index", - "text": "会议课堂" + "text": "活动" }, { "pagePath": "pages/story/index", diff --git a/src/app.ts b/src/app.ts index c616f81..55c8f61 100644 --- a/src/app.ts +++ b/src/app.ts @@ -17,9 +17,15 @@ App({ globalData: { // dev // appid:wxc3cdb3c4d4f62cea - url: 'https://m.igg4.hbraas.com', - upFileUrl: 'https://m.igg4.hbraas.com/', + // url: 'https://m.igg4.hbraas.com', + // upFileUrl: 'https://m.igg4.hbraas.com/', imageUrl: 'https://m.igg4.hbraas.com/igg4/', + + // appid:wx9404bbbdaf52c276 + url: 'https://m.zd.hbraas.com', + upFileUrl: 'https://m.zd.hbraas.com/', + // imageUrl: 'https://m.zd.hbraas.com/zd/', + // pro // appid:wx96f45ca4f1fa36ec // url: 'https://m.igg4.hbsaas.com', @@ -136,7 +142,7 @@ App({ success(res) { wx.ajax({ method: 'GET', - url: '?r=igg4/user/init-login', + url: '?r=zd/user/init-login', data: { code: res.code, }, @@ -388,7 +394,7 @@ App({ } wx.ajax({ method: 'GET', - url: '?r=igg4/account/info', + url: '?r=zd/account/info', showMsg: false, }).then((res) => { res.UserType = res.UserType || 1 @@ -410,7 +416,7 @@ App({ ) { wx.ajax({ method: 'POST', - url: '?r=igg4/account/update-doctor', + url: '?r=zd/account/update-doctor', data: { inviteDoctorId: doctorId, inviteChannel: inviteChan, @@ -420,7 +426,7 @@ App({ if (recommendDoctorId && doctorId) { wx.ajax({ method: 'POST', - url: '?r=igg4/doctor-recommend/add-record', + url: '?r=zd/doctor-recommend/add-record', data: { recommendDoctorId: doctorId, beRecommendDoctorId: recommendDoctorId, @@ -433,9 +439,9 @@ App({ }) }, mpBehavior(data: { PageName: string; doctor?: boolean }) { - let url = '?r=igg4/mp-behavior/add' + let url = '?r=zd/mp-behavior/add' if (data.doctor) { - url = '?r=igg4/doctor/mp-behavior/add' + url = '?r=zd/doctor/mp-behavior/add' } delete data.doctor wx.ajax({ @@ -514,7 +520,7 @@ App({ clickPush() { wx.ajax({ method: 'POST', - url: '?r=igg4/nrdl/add-push-click-record', + url: '?r=zd/nrdl/add-push-click-record', }) }, watch: function (key, method) { diff --git a/src/components/pageNavbar/index.scss b/src/components/pageNavbar/index.scss index 8096c10..88351a6 100644 --- a/src/components/pageNavbar/index.scss +++ b/src/components/pageNavbar/index.scss @@ -6,11 +6,11 @@ margin-right: 40rpx; } .nav-img { - width: 356rpx; - height: 46rpx; + width: 278rpx; + height: 78rpx; } .drug-nav-img { - width: 199rpx; - height: 36rpx; + width: 278rpx; + height: 78rpx; } } diff --git a/src/components/pageNavbar/index.wxml b/src/components/pageNavbar/index.wxml index 863c010..8da1693 100644 --- a/src/components/pageNavbar/index.wxml +++ b/src/components/pageNavbar/index.wxml @@ -1,7 +1,7 @@ - - + + diff --git a/src/components/referralFrom/index.ts b/src/components/referralFrom/index.ts index 16ff776..624a751 100644 --- a/src/components/referralFrom/index.ts +++ b/src/components/referralFrom/index.ts @@ -112,7 +112,7 @@ Component({ } wx.ajax({ method: 'POST', - url: '?r=igg4/re-visit/save-record', + url: '?r=zd/re-visit/save-record', data: params, }).then(() => { if (recordId) { diff --git a/src/components/timeOut/index.ts b/src/components/timeOut/index.ts index a313c47..3c55333 100644 --- a/src/components/timeOut/index.ts +++ b/src/components/timeOut/index.ts @@ -84,7 +84,7 @@ Component({ handleAsideOut() { wx.ajax({ method: "POST", - url: "?r=igg4/score/send-score", + url: "?r=zd/score/send-score", data: { Type: this.data.asideType, Id: this.data.detailId, diff --git a/src/components/toast/index.scss b/src/components/toast/index.scss index a0a2b94..419a053 100644 --- a/src/components/toast/index.scss +++ b/src/components/toast/index.scss @@ -2809,3 +2809,763 @@ } } } + +.popup1 { + padding: 220rpx 0 0; + width: 630rpx; + box-sizing: border-box; + .container { + margin-top: -60rpx; + padding: 32rpx; + background: linear-gradient(180deg, #ebe4ff 0%, #ffffff 100%); + border-radius: 24rpx; + .user { + padding: 24rpx; + display: flex; + align-items: center; + border-radius: 24rpx; + background-color: #fff; + .avatar-wrapper { + flex-shrink: 0; + padding: 0; + margin: 0; + width: 108rpx; + height: 108rpx; + gap: 16rpx; + outline: none; + border: 2px solid #fff; + border-radius: 50%; + &::after { + border: none; + } + .avatar { + width: 100%; + height: 100%; + border-radius: 50%; + } + } + .wrap { + flex: 1; + padding-left: 24rpx; + .nickname { + font-size: 36rpx; + font-weight: bold; + color: rgba(1, 1, 5, 1); + } + .hostipal { + margin-top: 16rpx; + line-height: 1; + font-size: 28rpx; + color: rgba(173, 172, 178, 1); + .tag { + margin-left: 10rpx; + display: inline-block; + font-size: 24rpx; + color: rgba(255, 255, 255, 1); + padding: 2rpx 10rpx; + background: #8c75d0; + border-radius: 8rpx 8rpx 8rpx 8rpx; + } + } + } + } + } +} + +.popup2 { + width: 590rpx; + height: 880rpx; + .p-img { + width: 100%; + height: 100%; + } +} + +.popup3 { + width: 590rpx; + height: 880rpx; + .p-img { + width: 100%; + height: 100%; + } +} + +.popup4 { + width: 590rpx; + height: 620rpx; + .p-img { + width: 100%; + height: 100%; + } +} +.popup5 { + background-color: #fff; + .container { + padding: 64rpx 0 104rpx; + .title { + display: flex; + align-items: center; + justify-content: center; + font-size: 40rpx; + color: rgba(40, 48, 49, 1); + line-height: 64rpx; + gap: 8rpx; + .tag { + padding: 0 10rpx; + color: #fff; + background-color: rgba(140, 117, 208, 1); + border-radius: 12rpx; + line-height: 52rpx; + } + } + .content { + font-size: 40rpx; + color: rgba(40, 48, 49, 1); + text-align: center; + } + .btn { + margin: 612rpx auto 0; + font-size: 36rpx; + color: rgba(255, 255, 255, 1); + width: 590rpx; + height: 88rpx; + display: flex; + align-items: center; + justify-content: center; + background: linear-gradient(89deg, #8c75d0 0%, #b7bdff 100%); + border-radius: 100rpx 100rpx 100rpx 100rpx; + } + } +} + +.popup6 { + width: 590rpx; + height: 880rpx; + position: relative; + .p-img { + width: 100%; + height: 100%; + } + .code { + position: absolute; + top: 350rpx; + left: 50%; + transform: translateX(-50%); + width: 290rpx; + height: 290rpx; + } +} + +.popup7 { + .badge { + position: relative; + z-index: 1; + width: 126rpx; + height: 124rpx; + display: block; + margin: 0 auto; + } + .contaienr { + margin-top: -80rpx; + padding: 122rpx 0 0; + width: 540rpx; + border-radius: 24rpx; + box-sizing: border-box; + background: linear-gradient(353deg, #ffffff 0%, #f5eeff 100%); + box-shadow: inset 0rpx -1rpx 0rpx 0rpx #e5e6eb; + .content { + font-size: 36rpx; + color: #adacb2; + text-align: center; + } + .footer { + margin-top: 66rpx; + border-top: 1px solid #e5e6eb; + display: flex; + .sure, + .cancel { + flex: 1; + padding: 22rpx; + text-align: center; + font-size: 32rpx; + } + .cancel { + border-right: 1px solid #e5e6eb; + color: #211d2e; + } + .sure { + color: #b982ff; + } + } + } +} + +.popup8 { + width: 590rpx; + height: 880rpx; + position: relative; + .p-img { + width: 100%; + height: 100%; + } + .code { + position: absolute; + top: 372rpx; + left: 50%; + transform: translateX(-50%); + border-radius: 24rpx; + width: 300rpx; + height: 300rpx; + } +} + +.popup11 { + padding: 48rpx 50rpx 48rpx; + width: 650rpx; + box-sizing: border-box; + background-color: #fff; + border-radius: 24rpx; + .title { + margin-top: 24rpx; + font-size: 40rpx; + color: #211d2e; + font-weight: bold; + line-height: 56rpx; + text-align: center; + } + .content { + margin-top: 24rpx; + text-align: center; + .link { + font-size: 32rpx; + color: #b982ff; + } + } + .footer { + margin-top: 40rpx; + display: flex; + gap: 30rpx; + .sure, + .cancel { + flex: 1; + padding: 20rpx; + text-align: center; + font-size: 36rpx; + border-radius: 100rpx; + } + .cancel { + padding: 18rpx 0; + color: #b982ff; + border: 1px solid #b982ff; + } + .sure { + padding: 0; + background: linear-gradient(344deg, #ffbcf9 0%, #b982ff 100%); + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; + } + } +} + +.popup9 { + padding: 32rpx; + width: 530rpx; + height: 452rpx; + box-sizing: border-box; + background-color: #fff; + text-align: center; + .icon { + width: 128rpx; + height: 128rpx; + } + .title { + margin-top: 24rpx; + font-size: 38rpx; + color: #211d2e; + font-weight: bold; + line-height: 56rpx; + } + .btn { + margin: 36rpx auto 0; + width: 418rpx; + height: 88rpx; + line-height: 88rpx; + font-size: 32rpx; + color: #ffffff; + background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%); + border-radius: 100rpx 100rpx 100rpx 100rpx; + } +} + +.popup10, +.popup11 { + padding: 48rpx 50rpx 48rpx; + width: 650rpx; + box-sizing: border-box; + background-color: #fff; + border-radius: 24rpx; + .title { + margin-top: 24rpx; + font-size: 36rpx; + color: rgba(33, 33, 32, 1); + font-weight: bold; + line-height: 56rpx; + text-align: center; + } + .content { + margin-top: 24rpx; + text-align: center; + .link { + font-size: 36rpx; + color: rgba(22, 121, 203, 1); + } + } + .footer { + margin-top: 40rpx; + display: flex; + gap: 30rpx; + .sure, + .cancel { + flex: 1; + padding: 20rpx; + text-align: center; + font-size: 36rpx; + border-radius: 12rpx; + } + .cancel { + padding: 18rpx 0; + color: rgba(22, 121, 203, 1); + border: 1px solid rgba(22, 121, 203, 1); + } + .sure { + padding: 0; + background: linear-gradient( 90deg, #293B9F 0%, #1679CB 100%); + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; + } + } +} + +.popup12 { + .popup-container { + padding: 0 40rpx 40rpx; + width: 630rpx; + height: 860rpx; + box-sizing: border-box; + .container { + padding: 236rpx 0 0; + .c-header { + display: flex; + align-items: center; + justify-content: center; + .avatar { + width: 76rpx; + height: 76rpx; + border-radius: 50%; + } + .name { + margin-left: 20rpx; + font-size: 32rpx; + color: #211d2e; + font-weight: bold; + line-height: 44rpx; + } + } + .code { + margin: 60rpx auto 0; + display: block; + width: 260rpx; + height: 260rpx; + border-radius: 24rpx; + } + .tip { + margin-top: 60rpx; + text-align: center; + font-size: 32rpx; + color: #211d2e; + line-height: 44rpx; + } + } + } +} + +.popup13 { + .popup-container { + padding: 48rpx 32rpx 32rpx; + width: 670rpx; + height: 1124rpx; + background: linear-gradient(180deg, #f1e6ff 0%, #ffffff 12.03%, #ffffff 100%); + border-radius: 32rpx 32rpx 32rpx 32rpx; + border: 2rpx solid #ffffff; + box-sizing: border-box; + .title { + font-size: 44rpx; + color: #b982ff; + text-align: center; + font-weight: bold; + } + .scroll { + margin-top: 32rpx; + padding: 32rpx 32rpx 32rpx 0; + background: #f6f8f9; + border-radius: 32rpx 32rpx 32rpx 32rpx; + height: 824rpx; + overflow-y: auto; + box-sizing: border-box; + .s-title { + font-size: 36rpx; + line-height: 60rpx; + font-weight: bold; + margin-left: 32rpx; + color: #332c49; + border-radius: 0 32rpx 32rpx 0; + display: inline-block; + margin-top: 28rpx; + position: relative; + &::after { + position: absolute; + left: 0; + bottom: 6rpx; + content: ''; + width: 100%; + height: 16rpx; + background: linear-gradient(90deg, #b982ff 0%, rgba(185, 130, 255, 0) 100%); + opacity: 0.4; + } + &:first-of-type { + margin-top: 0; + } + } + .content { + margin-top: 32rpx; + padding: 0 32rpx; + font-size: 32rpx; + color: #69686e; + line-height: 48rpx; + .high { + color: #b982ff; + font-weight: bold; + } + } + .s-name { + margin-top: 32rpx; + padding: 0 32rpx; + font-size: 32rpx; + color: #211d2e; + line-height: 48rpx; + display: flex; + align-items: center; + gap: 8rpx; + &::before { + content: ''; + width: 8rpx; + height: 30rpx; + background: #b982ff; + border-radius: 2rpx 2rpx 2rpx 2rpx; + } + } + .row { + padding: 0 32rpx; + .col { + margin-top: 24rpx; + display: flex; + gap: 12rpx; + .order { + margin-top: 10rpx; + flex-shrink: 0; + width: 36rpx; + height: 36rpx; + text-align: center; + line-height: 36rpx; + font-size: 28rpx; + color: #ffffff; + border-radius: 50%; + background: linear-gradient(344deg, #ffbcf9 0%, #b982ff 100%); + } + .c-content { + font-size: 32rpx; + color: #69686e; + line-height: 48rpx; + .high { + color: #b982ff; + font-weight: bold; + } + } + } + } + } + .btn { + margin-top: 32rpx; + width: 606rpx; + height: 88rpx; + font-size: 36rpx; + color: #ffffff; + line-height: 88rpx; + text-align: center; + background: linear-gradient(344deg, #ffbcf9 0%, #b982ff 100%); + border-radius: 100rpx 100rpx 100rpx 100rpx; + } + } +} + +.popup14 { + .badge { + position: relative; + z-index: 1; + display: block; + width: 198rpx; + height: 198rpx; + margin: 0 auto -110rpx; + text-align: center; + } + .popup-container { + width: 670rpx; + box-sizing: border-box; + padding: 130rpx 58rpx 56rpx; + border-radius: 32rpx; + background: linear-gradient(180deg, #f1e6ff 0%, #ffffff 29.75%, #ffffff 100%); + .title { + font-size: 36rpx; + color: #211d2e; + font-weight: bold; + } + .content { + margin-top: 28rpx; + font-size: 36rpx; + color: #69686e; + line-height: 48rpx; + text-align: center; + } + .btn { + margin-top: 56rpx; + height: 88rpx; + line-height: 88rpx; + text-align: center; + font-size: 36rpx; + color: #ffffff; + background: linear-gradient(344deg, #ffbcf9 0%, #b982ff 100%); + border-radius: 100rpx; + } + } +} + +.popup15 { + .badge { + position: relative; + z-index: 1; + display: block; + width: 144rpx; + height: 144rpx; + margin: 0 auto -72rpx; + text-align: center; + } + .popup-container { + width: 670rpx; + box-sizing: border-box; + padding: 118rpx 48rpx 16rpx; + border-radius: 32rpx; + background: #fff; + .title { + font-size: 40rpx; + color: #211d2e; + font-weight: bold; + text-align: center; + } + .content { + margin-top: 20rpx; + font-size: 32rpx; + color: #69686e; + line-height: 48rpx; + text-align: center; + .date { + color: #b982ff; + } + } + .btn { + margin-top: 44rpx; + height: 88rpx; + line-height: 88rpx; + text-align: center; + font-size: 36rpx; + color: #ffffff; + background: linear-gradient(344deg, #ffbcf9 0%, #b982ff 100%); + border-radius: 100rpx; + } + .cancel { + padding: 32rpx; + font-size: 32rpx; + color: #b982ff; + text-align: center; + } + } +} + +.popup16 { + .badge { + position: relative; + z-index: 1; + display: block; + width: 144rpx; + height: 144rpx; + margin: 0 auto -72rpx; + text-align: center; + } + .popup-container { + width: 670rpx; + box-sizing: border-box; + padding: 118rpx 48rpx 44rpx; + border-radius: 32rpx; + background: #fff; + .title { + font-size: 40rpx; + color: #211d2e; + font-weight: bold; + text-align: center; + } + .p-footer { + margin-top: 52rpx; + display: flex; + gap: 30rpx; + .sure, + .cancel { + flex: 1; + font-size: 36rpx; + border-radius: 100rpx; + height: 88rpx; + box-sizing: border-box; + } + .cancel { + color: #b982ff; + border: 1px solid #b982ff; + display: flex; + align-items: center; + justify-content: center; + } + .sure { + padding: 0; + background: linear-gradient(344deg, #ffbcf9 0%, #b982ff 100%); + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; + } + } + } +} + +.popup17 { + .badge { + position: relative; + z-index: 1; + display: block; + width: 144rpx; + height: 144rpx; + margin: 0 auto -72rpx; + text-align: center; + } + .popup-container { + width: 670rpx; + box-sizing: border-box; + padding: 118rpx 48rpx 44rpx; + border-radius: 32rpx; + background: #fff; + .title { + font-size: 40rpx; + color: #211d2e; + font-weight: bold; + text-align: center; + } + .p-footer { + margin-top: 52rpx; + display: flex; + gap: 30rpx; + .sure, + .cancel { + flex: 1; + font-size: 36rpx; + border-radius: 100rpx; + height: 88rpx; + box-sizing: border-box; + } + .cancel { + color: #b982ff; + border: 1px solid #b982ff; + display: flex; + align-items: center; + justify-content: center; + } + .sure { + padding: 0; + background: linear-gradient(344deg, #ffbcf9 0%, #b982ff 100%); + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; + } + } + } +} + +.popup18 { + .badge { + position: relative; + z-index: 1; + display: block; + width: 144rpx; + height: 144rpx; + margin: 0 auto -72rpx; + text-align: center; + } + .popup-container { + width: 670rpx; + box-sizing: border-box; + padding: 118rpx 48rpx 44rpx; + border-radius: 32rpx; + background: #fff; + .title { + font-size: 40rpx; + color: #211d2e; + font-weight: bold; + text-align: center; + } + .p-footer { + margin-top: 52rpx; + display: flex; + gap: 30rpx; + .sure, + .cancel { + flex: 1; + font-size: 36rpx; + border-radius: 100rpx; + height: 88rpx; + box-sizing: border-box; + } + .cancel { + color: #b982ff; + border: 1px solid #b982ff; + display: flex; + align-items: center; + justify-content: center; + } + .sure { + padding: 0; + background: linear-gradient(344deg, #ffbcf9 0%, #b982ff 100%); + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; + } + } + } +} + +.close { + margin: 48rpx auto 0; + display: block; + width: 84rpx; + height: 84rpx; +} diff --git a/src/components/toast/index.ts b/src/components/toast/index.ts index b98247b..28edb92 100644 --- a/src/components/toast/index.ts +++ b/src/components/toast/index.ts @@ -60,6 +60,7 @@ Component({ settingsInfo: {}, userInfo: {}, openPatientList: {}, + popup1Check1: false, }, lifetimes: { attached() { @@ -72,6 +73,14 @@ Component({ methods: { timer: null as any, handleOk() { + const { type } = this.data + if (type === 'argument' && !this.data.popup1Check1) { + wx.showToast({ + title: '请同意隐私政策', + icon: 'none', + }) + return + } if (this.data.timeOut) { return } @@ -106,7 +115,7 @@ Component({ getSettingInfo() { wx.ajax({ method: 'GET', - url: '?r=igg4/drugs/setting-info', + url: '?r=zd/drugs/setting-info', data: {}, }).then((res) => { this.setData({ @@ -117,7 +126,7 @@ Component({ getOpenPatientList() { wx.ajax({ method: 'GET', - url: '?r=igg4/nrdl/open-patient-list', + url: '?r=zd/nrdl/open-patient-list', data: {}, }).then((res) => { this.setData({ @@ -135,5 +144,12 @@ Component({ url: '/pages/repositoryDetail/index?id=9', }) }, + handleSelectStatus(e) { + const { status } = e.currentTarget.dataset + this.triggerEvent('ok', { type: 'selectStatusComplete', status }) + }, + handlePhone(e) { + this.triggerEvent('phone', e.detail) + }, }, }) diff --git a/src/components/toast/index.wxml b/src/components/toast/index.wxml index 451d756..3a5df6e 100644 --- a/src/components/toast/index.wxml +++ b/src/components/toast/index.wxml @@ -824,4 +824,256 @@ 跳转中 {{params.time}}s + + + + + + {{params.Name}}医生 + + {{params.HospitalName}} + + {{params.HospitalClassificationName}}{{params.HospitalLevel}} + + + + + + + + + + + + + + + + + + + 可 + 转发 + 报告至 + + "文件传输助手"完成下载 + 继续 + + + + + + + + + + 要删除这张照片吗 ? + + 取消 + 确定 + + + + + + + + + 我已阅读并同意 + + 《隐私政策》 + + + 取消 + 确定 + + + + + + + + 文字包含不合规内容 + + 请修改后重新提交 + + 知道了 + + + 我已阅读并同意 + + 《用户协议》 + 《隐私政策》 + + 《个人信息共享知情同意书》 + + + 取消 + + + + + + + + + {{params.ConsultQwName}} + + + + 长按识别二维码 + + 添加客服人员 + + + + + + + 了解双通道/临采/院内用药 + + 什么是"双通道"? + + "双通道"是指除了医院,患者还能去 + 指定药店 + 买药,而且 + 报销比例和医院一样。 + + "双通道"报销需要注意以下两点 + + + 1 + + 外配处方通常存在 + 有效期 + ,我们要在有效期内去药店购药; + + + + 2 + + 药店必须是纳入"双通道"管理的 + 定点药店 + ,才能享受同等报销待遇。 + + + + 什么是"临采"? + + "临采"全称是临时采购,适用场景主要是:医院暂时缺货、有突发的治疗需求、或者有特种病例需要紧急用药的情况。 + + + 整个流程有 + 明确的时间限制 + ,是短期解决"缺药"问题的办法, + 不适合长期 + 常规用药。 + + + 什么是"院内用药"? + + 院内用药就是"在医院看诊-拿药-直接报销"的一站式全流程,也是最传统、最省心的方式,全程 + 自动报销 + 。 + + "院内用药"报销需满足两个条件 + + + 1 + + 医院必须是 + 医保定点机构 + ; + + + + 2 + + 医生开具的处方要符合药品说明书适应症和医保限定支付范围(即: + 中重度甲状腺眼病 + )。 + + + + + 了解更多详情 + + + + + + 访问直播活动页需切换至患者端 + 请问是否继续 + 继续 + + + + + + 确认删除记录? + + 删除 + {{params.recordDate}} + 记录 + 此操作不可逆,相关照片将永久删除 + + 确认删除 + 取消 + + + + + + 您的记录还未保存 + + 退出 + 保存记录 + + + + + + + + 您有裁剪的照片 + + 现在退出会被清空 + + + 取消 + 继续退出 + + + + + + + + 是否替换已有基准照 + + + 取消 + 确认替换 + + + + + diff --git a/src/custom-tab-bar/index.scss b/src/custom-tab-bar/index.scss index bad5962..118d83b 100644 --- a/src/custom-tab-bar/index.scss +++ b/src/custom-tab-bar/index.scss @@ -10,10 +10,10 @@ font-size: 24rpx; color: #CCCCCC; &.active{ - color: #CF5375; + color: rgba(14, 182, 109, 1); } &.drug-active{ - color: #25D9C8; + color: rgba(89, 86, 233, 1); } } } diff --git a/src/custom-tab-bar/index.ts b/src/custom-tab-bar/index.ts index b7b6f46..065a4c0 100644 --- a/src/custom-tab-bar/index.ts +++ b/src/custom-tab-bar/index.ts @@ -16,23 +16,17 @@ Component({ }, { pagePath: '/pages/repository/index', - text: 'MG全知道', + text: '知识', icon: 'story', iconActive: 'story-active', }, { pagePath: '/pages/live/index', - text: '周三大咖说', + text: '活动', icon: 'gift', iconActive: 'gift-active', }, { - pagePath: '/pages/story/index', - text: '向往的生活', - icon: 'class', - iconActive: 'class-active', - }, - { pagePath: '/pages/my/index', text: '我的', icon: 'my', @@ -69,7 +63,7 @@ Component({ }) wx.ajax({ method: 'GET', - url: '?r=igg4/common/get-config', + url: '?r=zd/common/get-config', }).then((res) => { this.setData({ config: res, @@ -82,7 +76,7 @@ Component({ onChange() {}, handleNav(e) { const { index } = e.currentTarget.dataset - const { list, config } = this.data + const { list } = this.data const pagePath = list[index].pagePath app.globalData.BeginnerCardId = '' this.setData({ @@ -94,15 +88,6 @@ Component({ url: pagePath, }) }) - } else if (pagePath == '/pages/repository/index' && config.picTextEbookStatus == 1) { - app.permissionVerification(2, 0, `/pages/repository/index`).then(() => { - const webviewUrl = encodeURIComponent( - `${app.globalData.url}/zdcare/#/cover?loginState=${app.globalData.loginState}`, - ) - wx.navigateTo({ - url: `/pages/webview/index?url=${webviewUrl}`, - }) - }) } else { wx.switchTab({ url: pagePath, diff --git a/src/custom-tab-bar/index.wxml b/src/custom-tab-bar/index.wxml index 23d9a92..aae9c63 100644 --- a/src/custom-tab-bar/index.wxml +++ b/src/custom-tab-bar/index.wxml @@ -1,4 +1,4 @@ - + () -// pages/story/a.ts Component({ - /** - * 组件的属性列表 - */ properties: { active: { type: Number, value: 1000, }, }, - - /** - * 组件的初始数据 - */ data: { imageUrl: app.globalData.imageUrl, Timestamp: app.globalData.Timestamp, - unReadCount: 0, - tablist: [ { name: '首页', @@ -42,28 +32,23 @@ Component({ }, lifetimes: { attached() { - // app.waitLogin().then((_res) => { - // this.getList() - // }) + this.getList() }, }, - /** - * 组件的方法列表 - */ methods: { - onChange(e) { - if (e.detail === this.data.active) return - const index = e.detail - const path = this.data.tablist[index].path + handleTab(e: any) { + const { index } = e.currentTarget.dataset + if (index === this.data.active) return + const tab = this.data.tablist[index] wx.reLaunch({ - url: path, + url: tab.path, }) }, getList() { wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/message-interact/get-interact-patient-list', - }).then((res) => { + url: '?r=zd/doctor/message-interact/get-interact-patient-list', + }).then((res: any) => { this.setData({ unReadCount: res.unReadCount, }) diff --git a/src/doctor/components/tabbar/index.wxml b/src/doctor/components/tabbar/index.wxml index c520070..a6cd1e2 100644 --- a/src/doctor/components/tabbar/index.wxml +++ b/src/doctor/components/tabbar/index.wxml @@ -1,22 +1,12 @@ - - - - - {{item.name}} - - + + + + + {{unReadCount > 99 ? '99+' : unReadCount}} + + + + {{item.name}} + + + diff --git a/src/doctor/pages/d_changeDoctor/index.ts b/src/doctor/pages/d_changeDoctor/index.ts index 273c7cf..a28de17 100644 --- a/src/doctor/pages/d_changeDoctor/index.ts +++ b/src/doctor/pages/d_changeDoctor/index.ts @@ -29,7 +29,7 @@ Page({ } wx.ajax({ method: 'POST', - url: '?r=igg4/login/send-verify-code', + url: '?r=zd/login/send-verify-code', data: { mobile, }, @@ -78,7 +78,7 @@ Page({ } wx.ajax({ method: 'POST', - url: '?r=igg4/doctor/login/change-doctor-login', + url: '?r=zd/doctor/login/change-doctor-login', data: { mobile: this.data.mobile, code: this.data.code, diff --git a/src/doctor/pages/d_changePhone/index.ts b/src/doctor/pages/d_changePhone/index.ts index 6ea7958..0a42954 100644 --- a/src/doctor/pages/d_changePhone/index.ts +++ b/src/doctor/pages/d_changePhone/index.ts @@ -15,7 +15,7 @@ Page({ getDetail() { wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/account/info', + url: '?r=zd/doctor/account/info', data: {}, }).then((res) => { this.setData({ @@ -44,7 +44,7 @@ Page({ } wx.ajax({ method: 'POST', - url: '?r=igg4/login/send-verify-code', + url: '?r=zd/login/send-verify-code', data: { mobile, }, @@ -86,7 +86,7 @@ Page({ } wx.ajax({ method: 'POST', - url: '?r=igg4/doctor/account/update-telephone', + url: '?r=zd/doctor/account/update-telephone', data: { mobile: this.data.mobile, code: this.data.code, diff --git a/src/doctor/pages/d_createTask/index.ts b/src/doctor/pages/d_createTask/index.ts index 9decce2..0b20dc0 100644 --- a/src/doctor/pages/d_createTask/index.ts +++ b/src/doctor/pages/d_createTask/index.ts @@ -80,7 +80,7 @@ Page({ getTemplate() { wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/task/get-template', + url: '?r=zd/doctor/task/get-template', data: {}, }).then((res) => { this.setData({ @@ -111,7 +111,7 @@ Page({ return wx .ajax({ method: 'GET', - url: '?r=igg4/doctor/task/filter-patient-num', + url: '?r=zd/doctor/task/filter-patient-num', data: { Search: this.data.Search, HasAdl: this.data.HasAdl, @@ -146,7 +146,7 @@ Page({ app.mpBehavior({ doctor: true, PageName: 'BTN_NEWMESSAGEPAGE1_CLEAR' }) wx.showModal({ title: '确认清空选项吗', - confirmColor: '#62bed0', + confirmColor: 'rgba(22, 121, 203, 1)', success: (res) => { if (res.confirm) { this.setData({ @@ -353,7 +353,7 @@ Page({ wx.showModal({ title: '确认创建群发任务', content: '将会按您创建的规则给所有符合条件患者发送消息', - confirmColor: '#62bed0', + confirmColor: 'rgba(22, 121, 203, 1)', success: (res) => { if (res.confirm) { const params = { @@ -386,7 +386,7 @@ Page({ } wx.ajax({ method: 'POST', - url: '?r=igg4/doctor/task/create', + url: '?r=zd/doctor/task/create', data: params, loading: true, }).then(() => { diff --git a/src/doctor/pages/d_customExport/index.ts b/src/doctor/pages/d_customExport/index.ts index 359cb8c..3d7dd5b 100644 --- a/src/doctor/pages/d_customExport/index.ts +++ b/src/doctor/pages/d_customExport/index.ts @@ -23,7 +23,7 @@ Page({ getList() { wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/doctor-stat/get-week-record-list', + url: '?r=zd/doctor/doctor-stat/get-week-record-list', data: { statId: this.data.id, count: 0, diff --git a/src/doctor/pages/d_exportList/index.ts b/src/doctor/pages/d_exportList/index.ts index 3ab79f7..b66a0c9 100644 --- a/src/doctor/pages/d_exportList/index.ts +++ b/src/doctor/pages/d_exportList/index.ts @@ -29,7 +29,7 @@ Page({ getList(newPage = 1) { wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/doctor-stat/get-week-list', + url: '?r=zd/doctor/doctor-stat/get-week-list', data: { page: newPage, }, @@ -67,7 +67,7 @@ Page({ const d_export_list_guide = wx.getStorageSync('d_export_list_guide') === '1' || false wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/adl-stat/download', + url: '?r=zd/doctor/adl-stat/download', data: { statId: id, }, diff --git a/src/doctor/pages/d_home/index.json b/src/doctor/pages/d_home/index.json index 50a6a3f..faff49e 100644 --- a/src/doctor/pages/d_home/index.json +++ b/src/doctor/pages/d_home/index.json @@ -2,8 +2,7 @@ "navigationStyle": "custom", "navigationBarTitleText": "首页", "usingComponents": { - "van-sticky": "@vant/weapp/sticky/index", - "navBar": "/components/navBar/navBar", + "pageNavbar": "/components/pageNavbar/index", "ec-canvas": "/components/ec-canvas/ec-canvas", "van-icon": "@vant/weapp/icon/index", "van-dialog": "@vant/weapp/dialog/index", diff --git a/src/doctor/pages/d_home/index.scss b/src/doctor/pages/d_home/index.scss index ecc4c8f..f9db751 100644 --- a/src/doctor/pages/d_home/index.scss +++ b/src/doctor/pages/d_home/index.scss @@ -1,23 +1,15 @@ page { - background-color: rgba(242, 244, 245, 1); padding-bottom: calc(140rpx + env(safe-area-inset-bottom)); } .page { - .page-title { - margin-left: 34rpx; - position: absolute; - display: block; - width: 346rpx !important; - height: 43.77rpx; - } .user { padding: 72rpx 30rpx 0; display: flex; gap: 20rpx; .avatar { flex-shrink: 0; - width: 104rpx; - height: 104rpx; + width: 112rpx; + height: 112rpx; border-radius: 50%; } .wrap { @@ -28,142 +20,23 @@ page { font-weight: bold; } .site { - display: flex; - flex-wrap: wrap; - align-items: center; - gap: 8rpx; - font-size: 24rpx; - color: rgba(154, 161, 162, 1); + font-size: 32rpx; + color: rgba(33, 33, 32, 0.4); .tag { + display: inline-block; padding: 0 12rpx; font-size: 22rpx; - color: rgba(229, 154, 41, 1); + color: #fff; border-radius: 8rpx; line-height: 28rpx; white-space: nowrap; - background-color: rgba(229, 154, 41, 0.29); - } - } - } - .export { - flex-shrink: 0; - .btn { - padding: 12rpx 24rpx; - font-size: 32rpx; - color: #ffffff; - background: #67baca; - border-radius: 48rpx 48rpx 48rpx 48rpx; - line-height: 1; - display: flex; - align-items: center; - gap: 12rpx; - box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(40, 48, 49, 0.1); - .icon { - width: 32rpx; - height: 32rpx; - } - } - .tip { - position: relative; - text-align: right; - margin-top: 14rpx; - margin-right: 17rpx; - font-size: 24rpx; - color: #9aa1a2; - .hover { - position: absolute; - bottom: -30rpx; - right: 0; - z-index: 10; - white-space: nowrap; - font-size: 28rpx; - line-height: 1; - color: #ffffff; - padding: 14rpx 32rpx; - background: linear-gradient(180deg, #ffc137 0%, #e6a004 100%); - border-radius: 32rpx; - box-shadow: -10rpx 6rpx 12rpx rgba(94, 65, 0, 0.3); - &::before { - position: absolute; - top: -10rpx; - right: 30rpx; - content: ''; - width: 0; - height: 0; - border-style: solid; - border-width: 0 36rpx 19rpx 36rpx; - border-color: transparent transparent #f4bb38 transparent; - } + background: linear-gradient(272deg, #ffd21e 0%, #ffb514 100%); } } } } - .transfer { - position: relative; - margin: 36rpx 30rpx 0; - padding: 20rpx 32rpx; - display: flex; - align-items: center; - justify-content: space-between; - gap: 10rpx; - background: linear-gradient(341deg, #ffffff 0%, #ffffff 42%, #e8f0f2 100%); - border-radius: 24rpx 24rpx 24rpx 24rpx; - border: 2rpx solid #ffffff; - .icon { - width: 44rpx; - height: 44rpx; - } - .name { - flex: 1; - font-size: 32rpx; - color: #283031; - } - .more { - width: 36rpx; - height: 36rpx; - } - - .hover { - position: absolute; - bottom: -50rpx; - right: 30%; - z-index: 10; - white-space: nowrap; - font-size: 28rpx; - line-height: 1; - color: #ffffff; - padding: 14rpx 32rpx; - background: linear-gradient(180deg, #ffc137 0%, #e6a004 100%); - border-radius: 32rpx; - box-shadow: -10rpx 6rpx 12rpx rgba(94, 65, 0, 0.3); - .num { - font-size: 36rpx; - } - &::before { - position: absolute; - top: -10rpx; - right: 70rpx; - content: ''; - width: 0; - height: 0; - border-style: solid; - border-width: 0 20rpx 19rpx 20rpx; - border-color: transparent transparent #f4bb38 transparent; - } - } - } - .data-tip { - padding-top: 20rpx; - padding-left: 32rpx; - font-size: 24rpx; - color: rgba(154, 161, 162, 1); - } .new-banner { - margin: 12rpx 30rpx 0; - padding: 32rpx; - background: linear-gradient(10deg, #ffffff 0%, #eaf1f3 100%); - border-radius: 24rpx 24rpx 24rpx 24rpx; - border: 2rpx solid #ffffff; + margin: 40rpx 40rpx 0; display: grid; grid-template-columns: repeat(2, 1fr); gap: 24rpx 26rpx; @@ -171,16 +44,18 @@ page { display: flex; gap: 16rpx; padding: 30rpx; - background-color: #62bed0; - border-radius: 16rpx; + background: #ffffff; + box-shadow: 0rpx 4rpx 26rpx 0rpx rgba(40, 48, 49, 0.07); + border-radius: 12rpx 12rpx 12rpx 12rpx; + border: 2rpx solid #f2f4f5; .icon { width: 84rpx; height: 84rpx; } .wrap { .title { - font-size: 24rpx; - color: #ffffff; + font-size: 28rpx; + color: rgba(33, 33, 32, 0.4); line-height: 28rpx; .question { margin-left: 8rpx; @@ -190,244 +65,23 @@ page { } .num { margin-top: 14rpx; - font-size: 38rpx; - color: #ffffff; + font-size: 48rpx; + color: rgba(33, 33, 32, 1); line-height: 1; font-weight: bold; .sub { - font-size: 24rpx; + font-size: 28rpx; } } } } } - .new-sub-banner { - margin: 48rpx 30rpx 0; - padding: 32rpx 32rpx 32rpx; - background: linear-gradient(10deg, #ffffff 0%, #eaf1f3 100%); - border-radius: 24rpx 24rpx 24rpx 24rpx; - border: 2rpx solid #ffffff; - position: relative; - .year { - position: absolute; - width: 156rpx; - height: 40rpx; - left: 50%; - top: -16rpx; - transform: translateX(-50%); - font-size: 28rpx; - color: #ffffff; - text-align: center; - line-height: 40rpx; - } - .n-container { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 24rpx 26rpx; - .item { - gap: 16rpx; - padding: 30rpx; - background-color: #ffffff; - box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(40, 48, 49, 0.07); - border-radius: 16rpx 16rpx 16rpx 16rpx; - border: 1rpx solid #f2f4f5; - .wrap { - .title { - font-size: 24rpx; - color: #9aa1a2; - line-height: 28rpx; - .question { - margin-left: 8rpx; - width: 20rpx; - height: 20rpx; - } - } - .num { - margin-top: 14rpx; - font-size: 38rpx; - color: #283031; - line-height: 1; - font-weight: bold; - .sub { - font-size: 24rpx; - } - } - } - } - } - .tip { - position: relative; - margin-top: 26rpx; - margin-bottom: -30rpx; - padding: 14rpx 32rpx; - display: inline-block; - border-radius: 48rpx; - font-size: 28rpx; - color: #ffffff; - line-height: 1; - background: linear-gradient(180deg, #ffc137 0%, #e6a004 100%); - &::after { - position: absolute; - top: -16rpx; - left: 40rpx; - content: ''; - width: 0; - height: 0; - border-style: solid; - border-width: 0 19rpx 19rpx 19rpx; - border-color: transparent transparent #f7bf3c transparent; - } - } - } - .banner { - margin: 48rpx 30rpx 0; - box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(40, 48, 49, 0.1); - border-radius: 24rpx 24rpx 24rpx 24rpx; - border: 2rpx solid #ffffff; - .header { - padding: 32rpx 48rpx; - display: flex; - justify-content: space-between; - align-items: center; - background: linear-gradient(81deg, #67baca 0%, #43a8bc 100%); - border-radius: 24rpx 24rpx 24rpx 0; - .h-item { - .name { - font-size: 22rpx; - color: rgba(255, 255, 255, 1); - display: flex; - align-items: center; - .icon { - margin-left: 10rpx; - width: 24rpx; - height: 24rpx; - } - } - .num { - margin-top: 16rpx; - font-size: 56rpx; - color: rgba(255, 255, 255, 1); - font-weight: bold; - line-height: 1; - } - } - } - .container { - position: relative; - z-index: 1; - padding: 32rpx 0 20rpx; - box-shadow: 0rpx 4rpx 14rpx 0rpx rgba(40, 48, 49, 0.1); - border-radius: 0 0 24rpx 24rpx; - .c-row { - display: flex; - align-items: center; - justify-content: space-between; - .item { - flex: 1; - text-align: center; - .name { - font-size: 22rpx; - color: rgba(154, 161, 162, 1); - display: flex; - align-items: center; - justify-content: center; - gap: 8rpx; - .icon { - width: 20rpx; - height: 20rpx; - } - } - .num { - margin-top: 12rpx; - font-size: 44rpx; - color: rgba(40, 48, 49, 1); - font-weight: bold; - line-height: 1; - } - } - .line { - height: 66rpx; - border-right: 2px dotted rgba(194, 201, 202, 1); - } - } - .c-row-line { - margin: 32rpx 20rpx; - width: 650rpx; - border-top: 1rpx dashed #d4d9da; - } - } - } - .page-container { margin: 0 30rpx; - .van-sticky-wrap--fixed { - background-color: #fff; - } .card { margin: 24rpx 0 0; padding-top: 15px; - background: #fff linear-gradient(to top, #ffffff 0%, #ffffff 89%, #e8f0f2 100%) no-repeat top center / 100% 752rpx; border-radius: 24rpx 24rpx 24rpx 24rpx; - border: 2rpx solid #ffffff; - .card-title { - padding: 15rpx 30rpx 30rpx 0; - display: flex; - align-items: center; - justify-content: space-between; - .wrap { - display: flex; - align-items: center; - font-size: 32rpx; - color: rgba(40, 48, 49, 1); - font-weight: bold; - .icon { - width: 24rpx; - height: 30rpx; - } - } - .fold { - font-size: 28rpx; - color: rgba(154, 161, 162, 1); - display: flex; - align-items: center; - gap: 10rpx; - .icon { - width: 24rpx; - height: 24rpx; - } - } - } - .fold-container { - max-height: 0; - overflow: hidden; - transition: max-height 0.3s; - &.unfold-container { - max-height: 1800rpx; - } - } - .navbar { - display: flex; - padding: 12rpx 0; - .nav { - flex: 1; - text-align: center; - font-size: 32rpx; - color: rgba(103, 113, 114, 1); - &.active { - color: rgba(98, 190, 208, 1); - font-weight: bold; - &::after { - margin: 4rpx auto 0; - display: block; - content: ''; - width: 54rpx; - height: 8rpx; - border-radius: 8rpx 8rpx 0 0; - background-color: rgba(98, 190, 208, 1); - } - } - } - } .switch { margin: 15rpx 30rpx; padding: 8rpx; @@ -445,100 +99,42 @@ page { border-radius: 62rpx; &.active { color: #fff; - background-color: rgba(98, 190, 208, 1); + background-color: rgba(39, 66, 164, 1); } } } .chart { + margin-top: 48rpx; + padding: 32rpx 0; + border: 2rpx solid #f2f4f5; + border-radius: 12rpx; .chart-header { - padding: 15rpx 30rpx; + padding: 0 30rpx; display: flex; justify-content: space-between; align-items: center; .select-year { padding: 10rpx 28rpx; border-radius: 34rpx; - background-color: #f2f4f5; - font-size: 32rpx; - color: rgba(40, 48, 49, 1); + font-size: 36rpx; + color: rgba(33, 33, 32, 1); + border: 1px solid #f3f3f3; .icon { width: 24rpx; height: 24rpx; } } .tip { - font-size: 24rpx; + font-size: 32rpx; color: rgba(154, 161, 162, 1); } } - .chat-data-panel { - padding: 15rpx 30rpx; - gap: 14rpx; - display: grid; - grid-template-columns: repeat(auto-fill, minmax(200rpx, 1fr)); - .panel { - flex: 1; - padding: 28rpx 0 18rpx; - text-align: center; - background: #ffffff; - box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(40, 48, 49, 0.07); - border-radius: 12rpx 12rpx 12rpx 12rpx; - border: 1rpx solid #f2f4f5; - .name { - font-size: 24rpx; - color: rgba(154, 161, 162, 1); - .icon { - width: 20rpx; - height: 20rpx; - } - } - .num { - margin-top: 8rpx; - font-size: 40rpx; - font-weight: bold; - color: rgba(40, 48, 49, 1); - line-height: 1; - } - } - } - .chart-title { - padding: 15rpx 30rpx 15rpx 0; - display: flex; - align-items: center; - gap: 4rpx; - font-size: 32rpx; - color: rgba(40, 48, 49, 1); - font-weight: bold; - .icon { - width: 24rpx; - height: 30rpx; - } - .q-icon { - width: 24rpx; - height: 24rpx; - } - &.no-top { - margin-top: 0; - } - } - .chart-tip { - padding: 0 30rpx; - font-size: 24rpx; - color: rgba(154, 161, 162, 1); - } .chart-container { - padding: 15rpx 30rpx; + padding: 15rpx 30rpx 0; width: 100%; height: 546rpx; box-sizing: border-box; } - .tip { - padding: 20rpx; - text-align: center; - font-size: 20rpx; - color: #677172; - line-height: 32rpx; - } } } } diff --git a/src/doctor/pages/d_home/index.ts b/src/doctor/pages/d_home/index.ts index 88b2242..286d046 100644 --- a/src/doctor/pages/d_home/index.ts +++ b/src/doctor/pages/d_home/index.ts @@ -6,8 +6,6 @@ let echarts: any = null Page({ data: { - fold4: false, - fold5: false, top: 0, bottom: 0, ec: { @@ -22,24 +20,11 @@ Page({ detail: {}, tab1: 0, - tab2: 0, - tab3: 0, year1: dayjs().format('YYYY'), - year2: dayjs().format('YYYY'), - year3: dayjs().format('YYYY'), - - adlReadStatus: false, - statDate: '', }, ecDataTrendComponent1_1: null as any, ecDataTrendComponent1_2: null as any, - ecDataTrendComponent2_1: null as any, - ecDataTrendComponent2_2: null as any, - ecDataTrendComponent3_1: null as any, - ecDataTrendComponent3_2: null as any, - ecDataTrendComponent4_1: null as any, - ecDataTrendComponent5_1: null as any, async onLoad() { const SystemInfo = app.globalSystemInfo if (SystemInfo) { @@ -55,17 +40,12 @@ Page({ this.getDoctorInfo() this.getDetail() this.getList1_1() - this.getList2_1() - this.getList3_1() - this.getList4_1() - this.getList5_1() - this.getAdlStatus() }) }, getDoctorInfo() { wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/account/info', + url: '?r=zd/doctor/account/info', data: {}, }).then((res) => { this.setData({ @@ -77,7 +57,7 @@ Page({ getDetail() { wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/doctor-stat/get-last-month', + url: '?r=zd/doctor/doctor-stat/get-last-month', data: {}, }).then((res) => { this.setData({ @@ -112,7 +92,7 @@ Page({ getList1_1() { wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/doctor-stat/get-month-list', + url: '?r=zd/doctor/doctor-stat/get-month-list', data: { statYear: this.data.year1, }, @@ -123,7 +103,7 @@ Page({ getList1_2() { wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/doctor-stat/get-month-list', + url: '?r=zd/doctor/doctor-stat/get-month-list', data: { statYear: this.data.year1, }, @@ -158,7 +138,7 @@ Page({ width: '0', }, textStyle: { - color: 'rgba(103, 113, 114, 1)', + color: 'rgba(33, 33, 32, 0.30)', fontSize: '12', }, data: [], @@ -178,7 +158,7 @@ Page({ }, axisLabel: { fontSize: 10, - color: 'rgba(40, 48, 49, 1)', + color: 'rgba(33, 33, 32, 0.30)', }, data: x, }, @@ -189,7 +169,7 @@ Page({ minInterval: 1, axisLabel: { fontSize: 10, - color: 'rgba(40, 48, 49, 1)', + color: 'rgba(33, 33, 32, 0.30)', formatter(value) { return Math.abs(value) }, @@ -203,13 +183,13 @@ Page({ stack: 'a', label: { show: true, - color: '#000', + color: 'rgba(33, 33, 32, 1)', fontSize: 10, overflow: 'truncate', width: 30, position: 'top', }, - color: 'rgba(103, 186, 202, 1)', + color: 'rgba(0, 194, 255, 1)', data: y1, }, ], @@ -321,777 +301,32 @@ Page({ }) }, - handleTab2(e) { - const { index } = e.currentTarget.dataset - this.setData({ - tab2: index, - }) - if (index === 0) { - this.getList2_1() - } else if (index === 1) { - this.getList2_2() - } - }, - handleSelectYear2() { - this.handleTab2({ - currentTarget: { - dataset: { - index: this.data.tab2, - }, - }, - }) - }, - getList2_1() { - wx.ajax({ - method: 'GET', - url: '?r=igg4/doctor/doctor-stat/get-month-list', - data: { - statYear: this.data.year2, + handleQuestion(e) { + const { id } = e.currentTarget.dataset + const toastParams = { + 1: { + content: `累计邀约患者数`, + title: '累计邀约', }, - }).then(async (res) => { - this.initChart2_1(res.list) - }) - }, - getList2_2() { - wx.ajax({ - method: 'GET', - url: '?r=igg4/doctor/doctor-stat/get-month-list', - data: { - statYear: this.data.year2, + 2: { + content: `今年至少完成 1 次ADL 测评的患者数`, + title: `${dayjs().format('YY')}年激活`, }, - }).then((res) => { - this.initChart2_2(res.list) - }) - }, - initChart2_1(list: any[]) { - return new Promise((reslove) => { - this.ecDataTrendComponent2_1 = this.selectComponent('#chart2_1') - this.ecDataTrendComponent2_1.init((canvas, width, height, dpr) => { - const chart = echarts.init(canvas, null, { - width, - height, - devicePixelRatio: dpr, // new - }) - canvas.setChart(chart) - const x: string[] = [] - const y1: string[] = [] - list.forEach((item) => { - x.push(item.StatMonth) - y1.push(item.MonthActivePCount) - }) - - const option = { - legend: { - bottom: 0, - itemWidth: 8, - itemHeight: 8, - icon: 'circle', - lineStyle: { - width: '0', - }, - textStyle: { - color: 'rgba(103, 113, 114, 1)', - fontSize: '12', - }, - data: [], - }, - grid: { - top: '10%', - left: '3%', - right: '4%', - bottom: '30', - containLabel: true, - }, - xAxis: [ - { - type: 'category', - axisTick: { - show: false, - }, - axisLabel: { - fontSize: 10, - color: 'rgba(40, 48, 49, 1)', - }, - data: x, - }, - ], - yAxis: [ - { - type: 'value', - minInterval: 1, - axisLabel: { - fontSize: 10, - color: 'rgba(40, 48, 49, 1)', - formatter(value) { - return Math.abs(value) - }, - }, - }, - ], - series: [ - { - name: '患者数', - type: 'bar', - stack: 'a', - label: { - show: true, - color: '#000', - fontSize: 10, - overflow: 'truncate', - width: 30, - position: 'top', - }, - color: 'rgba(103, 186, 202, 1)', - data: y1, - }, - ], - dataZoom: { - type: 'inside', // 有type这个属性,滚动条在最下面,也可以不行,写y:36,这表示距离顶端36px,一般就是在图上面。 - startValue: x.length - 6, - endValue: x.length - 1, - filterMode: 'none', - }, - } - - chart.setOption(option) - reslove(chart) - return chart - }) - }) + }[id] + Dialog.alert({ + title: toastParams.title || '提示说明', + messageAlign: 'left', + message: toastParams.content, + zIndex: 10000, + confirmButtonColor: '#62bed0', + } as any) }, - initChart2_2(list: any[]) { - this.ecDataTrendComponent2_2 = this.selectComponent('#chart2_2') - this.ecDataTrendComponent2_2.init((canvas, width, height, dpr) => { - const chart = echarts.init(canvas, null, { - width, - height, - devicePixelRatio: dpr, // new - }) - canvas.setChart(chart) - const x: string[] = [] - const y1: string[] = [] - list.forEach((item) => { - x.push(item.StatMonth) - y1.push(item.YearActivePCount) - }) - - const option = { - legend: { - bottom: 0, - itemWidth: 8, - itemHeight: 8, - icon: 'circle', - lineStyle: { - width: '0', - }, - textStyle: { - color: 'rgba(103, 113, 114, 1)', - fontSize: '12', - }, - data: [], - }, - grid: { - top: '10%', - left: '3%', - right: '4%', - bottom: '30', - containLabel: true, - }, - xAxis: [ - { - type: 'category', - axisTick: { - show: false, - }, - axisLabel: { - fontSize: 10, - color: 'rgba(40, 48, 49, 1)', - }, - data: x, - }, - ], - yAxis: [ - { - type: 'value', - minInterval: 1, - axisLabel: { - fontSize: 10, - color: 'rgba(40, 48, 49, 1)', - formatter(value) { - return Math.abs(value) - }, - }, - }, - ], - series: [ - { - name: '患者数', - type: 'bar', - stack: 'a', - label: { - show: true, - color: '#000', - fontSize: 10, - overflow: 'truncate', - width: 30, - position: 'top', - }, - color: 'rgba(103, 186, 202, 1)', - data: y1, - }, - ], - dataZoom: { - type: 'inside', // 有type这个属性,滚动条在最下面,也可以不行,写y:36,这表示距离顶端36px,一般就是在图上面。 - startValue: x.length - 6, - endValue: x.length - 1, - filterMode: 'none', - }, - } - chart.setOption(option) - return chart - }) - }, - - handleTab3(e) { - const { index } = e.currentTarget.dataset - this.setData({ - tab3: index, - }) - if (index === 0) { - this.getList3_1() - } else if (index === 1) { - this.getList3_2() - } - }, - handleSelectYear3() { - this.handleTab3({ - currentTarget: { - dataset: { - index: this.data.tab3, - }, - }, - }) - }, - getList3_1() { - wx.ajax({ - method: 'GET', - url: '?r=igg4/doctor/doctor-stat/get-month-list', - data: { - statYear: this.data.year3, - }, - }).then(async (res) => { - this.initChart3_1(res.list) - }) - }, - getList3_2() { - wx.ajax({ - method: 'GET', - url: '?r=igg4/doctor/doctor-stat/get-month-list', - data: { - statYear: this.data.year3, - }, - }).then((res) => { - this.initChart3_2(res.list) - }) - }, - initChart3_1(list: any[]) { - return new Promise((reslove) => { - this.ecDataTrendComponent3_1 = this.selectComponent('#chart3_1') - this.ecDataTrendComponent3_1.init((canvas, width, height, dpr) => { - const chart = echarts.init(canvas, null, { - width, - height, - devicePixelRatio: dpr, // new - }) - canvas.setChart(chart) - const x: string[] = [] - const y1: string[] = [] - list.forEach((item) => { - x.push(item.StatMonth) - y1.push(item.MonthRegularAssessPCount) - }) - - const option = { - legend: { - bottom: 0, - itemWidth: 8, - itemHeight: 8, - icon: 'circle', - lineStyle: { - width: '0', - }, - textStyle: { - color: 'rgba(103, 113, 114, 1)', - fontSize: '12', - }, - data: [], - }, - grid: { - top: '10%', - left: '3%', - right: '4%', - bottom: '30', - containLabel: true, - }, - xAxis: [ - { - type: 'category', - axisTick: { - show: false, - }, - axisLabel: { - fontSize: 10, - color: 'rgba(40, 48, 49, 1)', - }, - data: x, - }, - ], - yAxis: [ - { - type: 'value', - minInterval: 1, - axisLabel: { - fontSize: 10, - color: 'rgba(40, 48, 49, 1)', - formatter(value) { - return Math.abs(value) - }, - }, - }, - ], - series: [ - { - name: '患者数', - type: 'bar', - stack: 'a', - label: { - show: true, - color: '#000', - fontSize: 10, - overflow: 'truncate', - width: 30, - position: 'top', - }, - color: 'rgba(103, 186, 202, 1)', - data: y1, - }, - ], - dataZoom: { - type: 'inside', // 有type这个属性,滚动条在最下面,也可以不行,写y:36,这表示距离顶端36px,一般就是在图上面。 - startValue: x.length - 6, - endValue: x.length - 1, - filterMode: 'none', - }, - } - - chart.setOption(option) - reslove(chart) - return chart - }) - }) - }, - initChart3_2(list: any[]) { - this.ecDataTrendComponent3_2 = this.selectComponent('#chart3_2') - this.ecDataTrendComponent3_2.init((canvas, width, height, dpr) => { - const chart = echarts.init(canvas, null, { - width, - height, - devicePixelRatio: dpr, // new - }) - canvas.setChart(chart) - const x: string[] = [] - const y1: string[] = [] - list.forEach((item) => { - x.push(item.StatMonth) - y1.push(item.RegularAssessPCount) - }) - - const option = { - legend: { - bottom: 0, - itemWidth: 8, - itemHeight: 8, - icon: 'circle', - lineStyle: { - width: '0', - }, - textStyle: { - color: 'rgba(103, 113, 114, 1)', - fontSize: '12', - }, - data: [], - }, - grid: { - top: '10%', - left: '3%', - right: '4%', - bottom: '30', - containLabel: true, - }, - xAxis: [ - { - type: 'category', - axisTick: { - show: false, - }, - axisLabel: { - fontSize: 10, - color: 'rgba(40, 48, 49, 1)', - }, - data: x, - }, - ], - yAxis: [ - { - type: 'value', - minInterval: 1, - axisLabel: { - fontSize: 10, - color: 'rgba(40, 48, 49, 1)', - formatter(value) { - return Math.abs(value) - }, - }, - }, - ], - series: [ - { - name: '患者数', - type: 'bar', - stack: 'a', - label: { - show: true, - color: '#000', - fontSize: 10, - overflow: 'truncate', - width: 30, - position: 'top', - }, - color: 'rgba(103, 186, 202, 1)', - data: y1, - }, - ], - dataZoom: { - type: 'inside', // 有type这个属性,滚动条在最下面,也可以不行,写y:36,这表示距离顶端36px,一般就是在图上面。 - startValue: x.length - 6, - endValue: x.length - 1, - filterMode: 'none', - }, - } - - chart.setOption(option) - return chart - }) - }, - - getList4_1() { - wx.ajax({ - method: 'GET', - url: '?r=igg4/doctor/doctor-stat/get-month-list', - data: {}, - }).then((res) => { - this.initChart4_1(res.list) - }) - }, - initChart4_1(list: any[]) { - this.ecDataTrendComponent4_1 = this.selectComponent('#chart4_1') - this.ecDataTrendComponent4_1.init((canvas, width, height, dpr) => { - const chart = echarts.init(canvas, null, { - width, - height, - devicePixelRatio: dpr, // new - }) - canvas.setChart(chart) - const x: string[] = [] - const y1: string[] = [] - list.forEach((item) => { - x.push(item.StatMonth) - y1.push(item.YearAdlStandardRate) - }) - - const option = { - legend: { - bottom: 0, - itemWidth: 8, - itemHeight: 8, - icon: 'circle', - lineStyle: { - width: '0', - }, - textStyle: { - color: '#283031', - fontSize: '12', - fontWeight: 'bold', - }, - data: [ - { - name: '疗效达标率', - }, - ], - }, - grid: { - top: '10%', - left: '3%', - right: '4%', - bottom: '30', - containLabel: true, - }, - xAxis: [ - { - type: 'category', - axisTick: { - show: false, - }, - axisLabel: { - fontSize: 10, - color: 'rgba(40, 48, 49, 1)', - }, - data: x, - }, - ], - yAxis: [ - { - type: 'value', - minInterval: 1, - splitNumber: 5, - axisLabel: { - fontSize: 10, - color: 'rgba(40, 48, 49, 1)', - formatter(value) { - return `${Math.abs(value)}%` - }, - }, - }, - ], - series: [ - { - name: '疗效达标率', - type: 'line', - stack: '', - color: 'rgba(226, 219, 65, 1)', - label: { - normal: { - show: true, - position: 'top', - color: 'rgba(40, 48, 49, 1)', - fontSize: 10, - formatter: '{c}%', - }, - }, - barGap: '-100%', - data: y1, - }, - ], - dataZoom: { - type: 'inside', // 有type这个属性,滚动条在最下面,也可以不行,写y:36,这表示距离顶端36px,一般就是在图上面。 - startValue: x.length - 6, - endValue: x.length - 1, - filterMode: 'none', - }, - } - - chart.setOption(option) - return chart - }) - }, - - getList5_1() { - wx.ajax({ - method: 'GET', - url: '?r=igg4/doctor/doctor-stat/get-month-list', - data: {}, - }).then((res) => { - this.initChart5_1(res.list) - }) - }, - initChart5_1(list: any[]) { - this.ecDataTrendComponent5_1 = this.selectComponent('#chart5_1') - this.ecDataTrendComponent5_1.init((canvas, width, height, dpr) => { - const chart = echarts.init(canvas, null, { - width, - height, - devicePixelRatio: dpr, // new - }) - canvas.setChart(chart) - const x: string[] = [] - const y1: string[] = [] - list.forEach((item) => { - x.push(item.StatMonth) - y1.push(item.YearDoubleStandardRate) - }) - - const option = { - legend: { - bottom: 0, - itemWidth: 8, - itemHeight: 8, - icon: 'circle', - lineStyle: { - width: '0', - }, - textStyle: { - color: '#283031', - fontSize: '12', - fontWeight: 'bold', - }, - data: [ - { - name: '双达标率', - }, - ], - }, - grid: { - top: '10%', - left: '3%', - right: '4%', - bottom: '30', - containLabel: true, - }, - xAxis: [ - { - type: 'category', - axisTick: { - show: false, - }, - axisLabel: { - fontSize: 10, - color: 'rgba(40, 48, 49, 1)', - }, - data: x, - }, - ], - yAxis: [ - { - type: 'value', - minInterval: 1, - splitNumber: 5, - axisLabel: { - fontSize: 10, - color: 'rgba(40, 48, 49, 1)', - formatter(value) { - return `${Math.abs(value)}%` - }, - }, - }, - ], - series: [ - { - name: '双达标率', - type: 'line', - stack: '', - color: 'rgba(226, 219, 65, 1)', - label: { - normal: { - show: true, - position: 'top', - color: 'rgba(40, 48, 49, 1)', - fontSize: 10, - formatter: '{c}%', - }, - }, - barGap: '-100%', - data: y1, - }, - ], - dataZoom: { - type: 'inside', // 有type这个属性,滚动条在最下面,也可以不行,写y:36,这表示距离顶端36px,一般就是在图上面。 - startValue: x.length - 6, - endValue: x.length - 1, - filterMode: 'none', - }, - } - - chart.setOption(option) - return chart - }) - }, - - handleQuestion(e) { - const { id } = e.currentTarget.dataset - const toastParams = { - 1: { - content: `累计邀约患者数`, - title: '累计邀约', - }, - 2: { - content: `今年至少完成 1 次ADL 测评的患者数`, - title: `${dayjs().format('YY')}年激活`, - }, - 3: { - content: `本月新邀约患者数`, - title: '本月新增', - }, - 4: { - content: `今年末次ADL评估:\n①ADL增加≥2分;\n②ADL总分≥5分;\n③ADL总分2-4分,延髓评分+呼吸评分≥2分;\n④激素≥20mg/d,以上条件任意满足一条的患者数;`, - title: '需随访', - }, - 5: { - content: `1.数据统计截至到上月月底 \n 2.近 3 个月内完成ADL 测评≥3 次患者数/今年激活患者数`, - title: 'ADL规律评估率', - }, - 6: { - content: `单月复诊患者数/今年需随访患者数`, - title: '复诊率', - }, - 7: { - content: `今年末次ADL测评为 0 或1 患者数/今年激活患者数`, - title: '疗效达标率', - }, - 8: { - content: `今年末次ADL 测评为 0 或 1 且激素用量≤5mg/d患者数/今年激活患者数`, - title: '双达标率', - }, - }[id] - Dialog.alert({ - title: toastParams.title || '提示说明', - messageAlign: 'left', - message: toastParams.content, - zIndex: 10000, - confirmButtonColor: '#62bed0', - } as any) - }, - handleFoldToggle4() { - this.setData({ - fold4: !this.data.fold4, - }) - }, - handleFoldToggle5() { - this.setData({ - fold5: !this.data.fold5, - }) - }, - handleExport() { - app.mpBehavior({ doctor: true, PageName: 'BTN_DOCTORADLREPORTENTRY' }) - wx.navigateTo({ - url: '/doctor/pages/d_exportList/index', - }) - }, - getAdlStatus() { - wx.ajax({ method: 'GET', url: '?r=igg4/doctor/doctor-stat/get-last-week', data: {} }).then((res) => { - if (!res) return - this.setData({ - adlReadStatus: res.readStatus == 0, - statDate: res.statDate, - }) - }) - }, - handlePatient(e) { - const { type, name } = e.currentTarget.dataset + handlePatient(e) { + const { type, name } = e.currentTarget.dataset wx.navigateTo({ url: `/doctor/pages/d_patientList/index?type=${type}&name=${name}`, }) }, - handleTransfer() { - app.mpBehavior({ doctor: true, PageName: 'BTN_DOCTORHOMEPAGERECOMMENDEDREFERRAL' }) - wx.navigateTo({ - url: '/doctor/pages/d_transfer/index', - }) - }, - handleTransferLog() { - wx.navigateTo({ - url: '/doctor/pages/d_transferLog/index', - }) - }, }) diff --git a/src/doctor/pages/d_home/index.wxml b/src/doctor/pages/d_home/index.wxml index 8c925ed..569b4c1 100644 --- a/src/doctor/pages/d_home/index.wxml +++ b/src/doctor/pages/d_home/index.wxml @@ -1,10 +1,5 @@ - - - - + + @@ -14,36 +9,14 @@ {{hospital.HospitalClassificationName}}{{hospital.HospitalLevelName}} - - - - 报告中心 - - - 每周五报告更新 - 您的ADL报告(截至 {{statDate}})已生成 - - - - - - 推荐转诊 - - 您推荐的医生有患者复诊 - 统计数据截止到昨天 - + 累计邀约 - + {{detail.InvitePCount}} @@ -52,16 +25,11 @@ - + {{detail.yr}}年激活 - + {{detail.YearActivePCount}} @@ -69,120 +37,6 @@ - - - - - 本月新增 - - - - {{detail.MonthInvitePCount}} - - - - - - - - - 需随访 - - - - {{detail.YearNeedFollowPCount}} - - - - - - - - {{detail.year}}年 - - - - - - ADL规律评估率 - - - - {{detail.MonthRegularAssessRate}} - % - - - - - - - 复诊率 - - - - {{detail.MonthReVisitRate}} - % - - - - - - - 疗效达标率 - - - - {{detail.YearAdlStandardRate}} - % - - - - - - - 双达标率 - - - - {{detail.YearDoubleStandardRate}} - % - - - - - - 您已超过全国{{detail.YearAdlStandardSortRate}}%的医生 - @@ -206,7 +60,7 @@ model:value="{{year1}}" > {{year1}}年 - + 统计数据截止昨天 @@ -222,121 +76,6 @@ - - - - 月度激活患者数 - - - 累计激活患者数 - - - - - - {{year2}}年 - - - 统计数据截止昨天 - - - - - - - - - - - - - - - - - 月度规律评估患者数 - - - 累计规律评估患者数 - - - - - - {{year3}}年 - - - 统计数据截止昨天 - - - - - - - - - - - - - - - - - - - 疗效达标率 - - - {{ fold4? '展开' : '收起' }} - - - - - - - - - 未次ADL 0或1的患者数/年激活患者数 - - - - - - - - 双达标率 - - - {{ fold5? '展开' : '收起' }} - - - - - - - - - 未次ADL 0或1且激素≤5mg/天的患者数/年激活患者数 - - - diff --git a/src/doctor/pages/d_interactive/index.json b/src/doctor/pages/d_interactive/index.json index 15fca3b..48f4b2f 100644 --- a/src/doctor/pages/d_interactive/index.json +++ b/src/doctor/pages/d_interactive/index.json @@ -1,9 +1,6 @@ { - "navigationStyle": "custom", + "navigationBarTitleText": "互动", "usingComponents": { - "tabbar": "../../components/tabbar/index", - "navBar": "/components/navBar/navBar", - "van-icon": "@vant/weapp/icon/index", - "van-popup": "@vant/weapp/popup/index" + "tabbar": "../../components/tabbar/index" } } diff --git a/src/doctor/pages/d_interactive/index.scss b/src/doctor/pages/d_interactive/index.scss index b6ae878..2e3e494 100644 --- a/src/doctor/pages/d_interactive/index.scss +++ b/src/doctor/pages/d_interactive/index.scss @@ -1,5 +1,5 @@ page { - background-color: rgba(242, 244, 245, 1); + background-color: rgba(246, 248, 249, 1); padding-bottom: calc(140rpx + env(safe-area-inset-bottom)); } .page { @@ -7,22 +7,21 @@ page { .page-header { position: sticky; top: 0; - padding: 30rpx; - box-shadow: 0rpx 8rpx 16rpx 0rpx rgba(40, 48, 49, 0.04); + padding: 32rpx 40rpx; z-index: 10; + background-color: rgba(246, 248, 249, 1); .wrap { display: flex; align-items: center; .search { flex: 1; - padding: 18rpx 32rpx; + padding: 12rpx 32rpx; display: flex; align-items: center; gap: 16rpx; - background: linear-gradient(to top, #ffffff 0%, #ebf3f4 100%); - box-shadow: 0rpx 8rpx 8rpx 0rpx rgba(40, 48, 49, 0.04); + background: rgba(243, 243, 243, 1); border-radius: 140rpx 140rpx 140rpx 140rpx; - border: 2rpx solid #ffffff; + border: 2rpx solid rgba(255, 255, 255, 1); .icon { width: 40rpx; height: 40rpx; @@ -37,68 +36,24 @@ page { } .clear { margin-left: 32rpx; - width: 44rpx; - height: 44rpx; - } - } - .navbar { - margin-top: 32rpx; - display: flex; - justify-content: space-between; - align-items: center; - .nav { - position: relative; - flex: 1; - text-align: center; - font-size: 32rpx; - color: rgba(103, 113, 114, 1); - transition: all 0.3s; - .dot { - padding: 0 4rpx; - position: absolute; - left: 50%; - transform: translateX(35rpx); - top: 0; - min-width: 18rpx; - height: 26rpx; - font-size: 18rpx; - line-height: 26rpx; - color: rgba(255, 255, 255, 1); - border-radius: 50%; - background: rgba(215, 108, 108, 1); - } - &.active { - font-size: 32rpx; - color: rgba(98, 190, 208, 1); - font-weight: bold; - &::after { - position: absolute; - bottom: -30rpx; - left: 50%; - transform: translateX(-50%); - content: ''; - width: 52rpx; - height: 8rpx; - border-radius: 24rpx 24rpx 0 0; - background: #62bed0; - } - } + width: 56rpx; + height: 56rpx; } } } .list { - margin: 30rpx; + margin: 30rpx 40rpx; .list-item { margin-bottom: 24rpx; - padding: 30rpx; + padding: 32rpx; border-radius: 24rpx; background-color: #fff; display: flex; .avatar { flex-shrink: 0; position: relative; - width: 92rpx; - height: 92rpx; + width: 112rpx; + height: 112rpx; .a-img { width: 100%; height: 100%; @@ -107,50 +62,42 @@ page { .dot { position: absolute; top: 0; - right: 0; - width: 18rpx; - height: 18rpx; + right: 10rpx; + transform: translateX(50%); + padding: 0 5rpx; + min-width: 32rpx; + height: 32rpx; + text-align: center; + font-size: 20rpx; + color: #ffffff; border: 2rpx solid #ffffff; - border-radius: 50%; - background: #d76c6c; + border-radius: 16rpx; + background: #ef3939; + box-sizing: border-box; } } .wrap { flex: 1; - padding-left: 24rpx; + padding-left: 28rpx; .w-header { display: flex; align-items: center; justify-content: space-between; .name { - font-size: 32rpx; + font-size: 40rpx; color: rgba(40, 48, 49, 1); font-weight: bold; } .date { - font-size: 24rpx; - color: rgba(154, 161, 162, 1); - } - } - .tags { - margin-top: 12rpx; - display: flex; - flex-wrap: wrap; - gap: 12rpx; - .tag { - padding: 4rpx 16rpx; - border-radius: 8rpx; - border-color: rgba(242, 244, 245, 1); - font-size: 22rpx; - color: rgba(103, 113, 114, 1); - background-color: rgba(242, 244, 245, 1); + font-size: 32rpx; + color: rgba(33, 33, 32, 0.40); } } .content { - margin-top: 20rpx; - max-width: 18em; - font-size: 28rpx; - color: rgba(154, 161, 162, 1); + margin-top: 16rpx; + max-width: 15em; + font-size: 32rpx; + color: rgba(33, 33, 32, 0.70); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; diff --git a/src/doctor/pages/d_interactive/index.ts b/src/doctor/pages/d_interactive/index.ts index 601c838..c0cc513 100644 --- a/src/doctor/pages/d_interactive/index.ts +++ b/src/doctor/pages/d_interactive/index.ts @@ -14,11 +14,12 @@ Page({ }, onShow() { app.waitLogin().then((_res) => { + app.mpBehavior({ doctor: true, PageName: 'PG_DoctorIMList' }) this.getList() }) }, handleTapSearch() { - app.mpBehavior({ doctor:true, PageName: 'BTN_DOCTORINTERACTIONSEARCH' }) + app.mpBehavior({ doctor: true, PageName: 'BTN_DoctorIMListSearch' }) }, handleSearch() { this.setData({ @@ -39,19 +40,9 @@ Page({ this.getList() }, getList(newPage = 1) { - const { active } = this.data - if (active == '' && newPage == 1) { - app.mpBehavior({ doctor:true, PageName: 'PG_DOCTORINTERACTIONALL' }) - } - if (active == '1' && newPage == 1) { - app.mpBehavior({ doctor:true, PageName: 'PG_DOCTORINTERACTIONREAD' }) - } - if (active == '2' && newPage == 1) { - app.mpBehavior({ doctor:true, PageName: 'PG_DOCTORINTERACTIONUNREAD' }) - } wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/message-interact/get-interact-patient-list', + url: '?r=zd/doctor/message-interact/get-interact-patient-list', data: { page: newPage, search: this.data.search, @@ -68,9 +59,6 @@ Page({ count: res.count, }, }) - - const header = this.selectComponent('#tabbar') - header.getList() //子组件的方法 }) }, onReachBottom() { @@ -80,7 +68,7 @@ Page({ } }, handleDetail(e) { - app.mpBehavior({ doctor:true, PageName: 'BTN_DOCTORINTERACTIONVIEW' }) + app.mpBehavior({ doctor: true, PageName: 'BTN_DoctorIMList' }) const { index } = e.currentTarget.dataset const { list } = this.data const listItem: any = list[index] @@ -99,12 +87,12 @@ Page({ wx.showModal({ title: '提示', content: '确认清空消息吗?', - confirmColor: '#62bed0', + confirmColor: '#8c75d0', success: (res) => { if (res.confirm) { wx.ajax({ method: 'POST', - url: '?r=igg4/doctor/message-interact/read-history', + url: '?r=zd/doctor/message-interact/read-history', data: {}, }).then((_res) => { this.setData({ @@ -116,8 +104,6 @@ Page({ } }), }) - const header = this.selectComponent('#tabbar') - header.getList() //子组件的方法 }) } }, diff --git a/src/doctor/pages/d_interactive/index.wxml b/src/doctor/pages/d_interactive/index.wxml index 951960e..f834411 100644 --- a/src/doctor/pages/d_interactive/index.wxml +++ b/src/doctor/pages/d_interactive/index.wxml @@ -1,24 +1,20 @@ - - + - + - + @@ -37,7 +33,7 @@ - + {{item.unReadCount> 99 ? '99+' : item.unReadCount}} @@ -45,15 +41,11 @@ {{item.Telephone}} {{item.msgCreateTime}} - - - {{tag}} - - {{item.msgContent}} - + + diff --git a/src/doctor/pages/d_interactiveDoctor/index.json b/src/doctor/pages/d_interactiveDoctor/index.json index a2aaccb..5a53c3c 100644 --- a/src/doctor/pages/d_interactiveDoctor/index.json +++ b/src/doctor/pages/d_interactiveDoctor/index.json @@ -2,6 +2,8 @@ "navigationBarTitleText": "互动", "usingComponents": { "van-icon": "@vant/weapp/icon/index", - "van-popup": "@vant/weapp/popup/index" + "navBar": "/components/navBar/navBar", + "van-popup": "@vant/weapp/popup/index", + "toast": "/components/toast/index" } } diff --git a/src/doctor/pages/d_interactiveDoctor/index.scss b/src/doctor/pages/d_interactiveDoctor/index.scss index 398bf38..40202be 100644 --- a/src/doctor/pages/d_interactiveDoctor/index.scss +++ b/src/doctor/pages/d_interactiveDoctor/index.scss @@ -3,168 +3,47 @@ page { } .page { height: 100vh; + box-sizing: border-box; overflow: hidden; display: flex; flex-direction: column; justify-content: space-between; .page-header { + margin: 32rpx 30rpx 0; padding-bottom: 30rpx; - border-radius: 0 0 24rpx 24rpx; - background-color: #fff; + background: #ffffff; + box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(0, 0, 0, 0.08); + border-radius: 24rpx 24rpx 24rpx 24rpx; .user { flex-shrink: 0; padding: 36rpx 30rpx 0; display: flex; - align-items: center; justify-content: space-between; + align-items: center; .avatar { - width: 104rpx; - height: 104rpx; + width: 120rpx; + height: 120rpx; border-radius: 50%; } .wrap { flex: 1; - padding: 0 20rpx; + padding: 0 16rpx; .name { - display: flex; - justify-content: space-between; - align-items: center; font-size: 40rpx; - color: rgba(40, 48, 49, 1); + color: rgba(33, 33, 32, 1); font-weight: bold; - .tip { - display: block; - padding: 2rpx 16rpx; - font-size: 24rpx; - color: #fff; - border-radius: 0 30rpx 30rpx 30rpx; - background-color: #67baca; - } - .detail { - flex-shrink: 0; - font-size: 28rpx; - color: rgba(103, 186, 202, 1); - font-weight: normal; - } } - .tags { + .date { margin-top: 20rpx; - display: flex; - flex-wrap: wrap; - gap: 12rpx; - .tag { - padding: 4rpx 16rpx; - font-size: 22rpx; - color: rgba(103, 113, 114, 1); - border-radius: 8rpx; - background-color: rgba(242, 244, 245, 1); - } + font-size: 32rpx; + color: rgba(33, 33, 32, 0.7); } } - } - .adl { - margin: 32rpx 30rpx 0; - background: #ffffff; - box-shadow: 0rpx 8rpx 32rpx 0rpx rgba(40, 48, 49, 0.04); - border-radius: 24rpx 24rpx 24rpx 24rpx; - border: 2rpx solid #f8f9f9; - .a-header { - display: flex; - align-items: flex-start; - flex-direction: column; - .content { - border-radius: 24rpx 0 24rpx 0; - padding: 14rpx 28rpx; - font-size: 28rpx; - line-height: 1; - color: rgba(98, 190, 208, 1); - background-color: rgba(242, 248, 249, 1); - } - .box { - width: 40rpx; - height: 40rpx; - background-color: rgba(242, 248, 249, 1); - } - } - .a-content { - position: relative; - z-index: 1; - margin-top: -40rpx; - padding: 32rpx 30rpx; - background-color: #fff; - border-radius: 24rpx; - .row { - display: flex; - align-items: center; - gap: 20rpx; - &:first-of-type { - margin-bottom: 24rpx; - } - .label { - flex-shrink: 0; - font-size: 28rpx; - color: rgba(154, 161, 162, 1); - } - .num { - min-width: 3em; - font-size: 28rpx; - color: rgba(40, 48, 49, 1); - } - .tag { - display: flex; - align-items: center; - background-color: rgba(232, 245, 248, 1); - border-radius: 12rpx; - .t-label { - padding: 8rpx 12rpx; - font-size: 24rpx; - color: rgba(255, 255, 255, 1); - background-color: rgba(103, 186, 202, 1); - border-radius: 12rpx; - display: flex; - align-items: center; - gap: 8rpx; - flex-shrink: 0; - .icon { - width: 24rpx; - height: 24rpx; - } - } - .t-content { - padding: 0 16rpx 0 8rpx; - display: flex; - align-items: center; - font-size: 28rpx; - color: rgba(103, 186, 202, 1); - display: flex; - align-items: center; - gap: 4rpx; - flex-shrink: 0; - .icon { - width: 24rpx; - height: 28rpx; - } - } - &.tag-warn { - background-color: rgba(227, 220, 64, 0.1); - .t-label { - background-color: rgba(225, 217, 45, 1); - } - .t-content { - color: rgba(225, 217, 45, 1); - } - } - &.tag-error { - background-color: rgba(248, 234, 234, 1); - .t-label { - background-color: rgba(215, 108, 108, 1); - } - .t-content { - color: rgba(215, 108, 108, 1); - } - } - } - } + .detail { + flex-shrink: 0; + font-size: 32rpx; + color: rgba(22, 121, 203, 1); + font-weight: normal; } } } @@ -197,106 +76,15 @@ page { display: flex; flex-direction: column; align-items: start; - .guide { - margin-bottom: 32rpx; - padding: 32rpx 30rpx; - border-radius: 0 32rpx 32rpx; - background: linear-gradient(13deg, #ffffff 8%, #e8f0f1 100%); - border: 2rpx solid #ffffff; - .title { - font-size: 32rpx; - color: rgba(40, 48, 49, 1); - font-weight: bold; - } - .sub-title { - font-size: 28rpx; - color: rgba(154, 161, 162, 1); - margin-bottom: 30rpx; - } - .list { - .l-item { - display: flex; - align-items: center; - gap: 16rpx; - margin-bottom: 30rpx; - .order { - flex-shrink: 0; - width: 28rpx; - height: 28rpx; - font-size: 24rpx; - display: flex; - align-items: center; - justify-content: center; - color: rgba(255, 255, 255, 1); - border-radius: 6rpx; - background: #67baca; - } - .content { - font-size: 32rpx; - color: rgba(40, 48, 49, 1); - } - } - } - .tip { - font-size: 28rpx; - color: rgba(103, 113, 114, 1); - display: flex; - align-items: center; - .icon { - width: 44rpx; - height: 44rpx; - } - } - } .message { margin-bottom: 32rpx; padding: 26rpx 32rpx; background-color: #fff; - border-radius: 0 32rpx 32rpx; + border-radius: 32rpx; font-size: 32rpx; color: rgba(40, 48, 49, 1); white-space: pre-line; } - .referral-replay { - margin-bottom: 32rpx; - padding: 18rpx 32rpx; - border-radius: 32rpx; - background-color: #fff; - .title { - font-size: 32rpx; - color: #283031; - line-height: 48rpx; - } - .sub-title { - margin-top: 32rpx; - font-size: 32rpx; - color: #67baca; - font-weight: bold; - display: flex; - align-items: center; - &::before { - margin-right: 8rpx; - content: ''; - width: 6rpx; - height: 32rpx; - background-color: #67baca; - border-radius: 84rpx; - } - } - .r-list { - margin-top: 12rpx; - .item { - padding: 24rpx 0; - font-size: 32rpx; - color: #283031; - line-height: 36rpx; - border-bottom: 1px solid #eaeced; - &:last-of-type { - border: none; - } - } - } - } } } .doctor { @@ -321,26 +109,24 @@ page { .guide { margin-bottom: 32rpx; padding: 32rpx 30rpx; - border-radius: 32rpx 0 32rpx 32rpx; - background: linear-gradient(13deg, #ffffff 8%, #e8f0f1 100%); + border-radius: 32rpx 32rpx; + background: rgba(248, 248, 248, 1); border: 2rpx solid #ffffff; .title { - font-size: 32rpx; - color: rgba(40, 48, 49, 1); + font-size: 40rpx; + color: rgba(33, 33, 32, 1); font-weight: bold; } - .sub-title { - font-size: 28rpx; - color: rgba(154, 161, 162, 1); - margin-bottom: 30rpx; - } .list { .l-item { + margin-top: 24rpx; display: flex; - align-items: center; gap: 16rpx; - margin-bottom: 30rpx; + &:last-of-type { + margin-bottom: 0; + } .order { + margin-top: 6rpx; flex-shrink: 0; width: 28rpx; height: 28rpx; @@ -350,42 +136,32 @@ page { justify-content: center; color: rgba(255, 255, 255, 1); border-radius: 6rpx; - background: #67baca; + background: linear-gradient(90deg, #293b9f 0%, #1679cb 100%); } .content { - font-size: 32rpx; - color: rgba(40, 48, 49, 1); + font-size: 36rpx; + color: rgba(33, 33, 32, 1); } } } - .tip { - font-size: 28rpx; - color: rgba(103, 113, 114, 1); - display: flex; - align-items: center; - .icon { - width: 44rpx; - height: 44rpx; - } - } } .message { margin-bottom: 32rpx; padding: 26rpx 32rpx; - background: #67baca; - border-radius: 32rpx 0 32rpx 32rpx; - font-size: 32rpx; - color: #fff; + background: rgba(248, 248, 248, 1); + border-radius: 32rpx; + font-size: 36rpx; + color: rgba(33, 33, 32, 1); white-space: pre-line; } .week { margin-bottom: 32rpx; padding: 26rpx 32rpx; background-color: #fff; - border-radius: 32rpx 0 32rpx 32rpx; + border-radius: 32rpx; .w-title { font-size: 32rpx; - color: rgba(40, 48, 49, 1); + color: rgba(33, 29, 46, 1); text-align: right; } .w-container { @@ -408,7 +184,7 @@ page { justify-content: center; font-size: 32rpx; color: rgba(255, 255, 255, 1); - background-color: rgba(103, 186, 202, 1); + background-color: rgba(22, 121, 203, 1); } .content { width: 156rpx; @@ -417,8 +193,8 @@ page { align-items: center; justify-content: center; font-size: 32rpx; - color: rgba(40, 48, 49, 1); - background-color: rgba(242, 244, 245, 1); + color: rgba(33, 33, 32, 1); + background-color: rgba(205, 232, 255, 1); } &:first-of-type { .label { @@ -439,157 +215,23 @@ page { &:not(:last-of-type) { border-bottom: 2rpx solid #fff; } + &:nth-of-type(2n) { + .label { + background-color: rgba(85, 164, 230, 1); + } + .content { + background-color: rgba(232, 243, 253, 1); + } + } } } } .adl { + position: relative; margin-bottom: 32rpx; - padding: 32rpx 156rpx 34rpx 30rpx; - border-radius: 0 32rpx 32rpx; - background: linear-gradient(141deg, #edfcff 0%, #d4f3f9 100%); - border: 2rpx solid #fff; - .title { - width: 324rpx; - height: 40rpx; - } - .sub-title { - margin-top: 18rpx; - line-height: 1; - font-size: 28rpx; - color: rgba(255, 255, 255, 0.8); - } - .btn { - margin-top: 20rpx; - width: 220rpx; - height: 56rpx; - text-align: center; - line-height: 56rpx; - font-size: 28rpx; - color: #e04775; - background: #ffffff; - border-radius: 102rpx 102rpx 102rpx 102rpx; - } - .tip { - margin-top: 10rpx; - font-size: 24rpx; - color: #fff; - } - } - .audio { - margin-bottom: 32rpx; - padding: 22rpx 24rpx; - border-radius: 32rpx 0 32rpx 32rpx; - background: #67baca; - min-width: 218rpx; - font-size: 32rpx; - color: #fff; - display: flex; - align-items: center; - justify-content: flex-end; - gap: 12rpx; - box-sizing: border-box; - .icon { - width: 32rpx; - height: 40rpx; - } - } - .info { - margin-bottom: 32rpx; - padding: 26rpx 32rpx; - background-color: #fff; - border-radius: 32rpx 0 32rpx 32rpx; - .content { - font-size: 28rpx; - color: #283031; - } - .btn { - margin-top: 24rpx; - padding: 22rpx; - font-size: 32rpx; - color: #283031; - line-height: 40rpx; - text-align: center; - background: #67baca; - color: #ffffff; - border-radius: 104rpx 104rpx 104rpx 104rpx; - border: 1rpx solid #f8f9f9; - } - } - .referral { - margin-bottom: 32rpx; - width: 502rpx; - height: 262rpx; - background: linear-gradient(223deg, #59b0c2 0%, #94e2f1 100%); - box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.07); - border-radius: 24rpx 24rpx 24rpx 24rpx; - .r-header { - padding: 20rpx 24rpx 0 32rpx; - display: flex; - .title { - font-size: 32rpx; - color: #ffffff; - line-height: 48rpx; - } - .icon { - flex-shrink: 0; - width: 138rpx; - height: 122rpx; - } - } - .r-footer { - padding: 32rpx; - background: linear-gradient(11deg, #ffffff 8%, rgba(255, 255, 255, 0.79) 100%); - border-radius: 24rpx 24rpx 24rpx 24rpx; - border: 2rpx solid #ffffff; - .btn { - width: 438rpx; - height: 64rpx; - font-size: 32rpx; - color: #fff; - text-align: center; - line-height: 64rpx; - background: #67baca; - border-radius: 104rpx 104rpx 104rpx 104rpx; - } - } - } - .trans { - margin-bottom: 32rpx; - padding: 32rpx; - width: 508rpx; - box-sizing: border-box; - background: linear-gradient(223deg, #59b0c2 0%, #94e2f1 100%); - box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.07); - border-radius: 24rpx 24rpx 24rpx 24rpx; - .user { - padding: 24rpx 32rpx; - display: flex; - gap: 24rpx; - border-radius: 24rpx; - background-color: #fff; - .u-avatar { - width: 112rpx; - height: 112rpx; - flex-shrink: 0; - border-radius: 50%; - } - .wrap { - .name { - font-size: 40rpx; - color: #283031; - } - .content { - margin-top: 12rpx; - font-size: 28rpx; - color: #9aa1a2; - line-height: 36rpx; - } - } - } - .tip { - margin-top: 24rpx; - font-size: 32rpx; - color: #ffffff; + adl-img { + width: 498rpx; + height: 250rpx; } } } @@ -603,36 +245,133 @@ page { padding: 32rpx 30rpx calc(32rpx + env(safe-area-inset-bottom)); box-sizing: border-box; display: flex; - gap: 28rpx; - border-radius: 32rpx 32rpx 0 0; + gap: 20rpx; box-shadow: 0rpx 8rpx 16rpx 0rpx rgba(40, 48, 49, 0.04); border: 2rpx solid #ffffff; background-color: #fff; .send { flex: 1; + padding: 8rpx 8rpx 8rpx 32rpx; + box-sizing: border-box; display: flex; align-items: center; - justify-content: center; - font-size: 32rpx; - color: rgba(40, 48, 49, 1); - height: 76rpx; - background: #ffffff; - box-shadow: 0rpx 8rpx 16rpx 0rpx rgba(40, 48, 49, 0.04); - border-radius: 140rpx 140rpx 140rpx 140rpx; - border: 2rpx solid #f2f4f5; - .icon { - width: 36rpx; - height: 36rpx; + justify-content: space-between; + border-radius: 12rpx; + background: #f6f6f6; + .content { + padding: 10rpx 0; + flex: 1; + color: rgba(34, 34, 34, 0.3); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .btn { + flex-shrink: 0; + width: 188rpx; + height: 80rpx; + line-height: 80rpx; + font-size: 32rpx; + color: #ffffff; + text-align: center; + background: linear-gradient(90deg, #293b9f 0%, #1679cb 100%); + border-radius: 12rpx; } } + .short-send { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + font-size: 36rpx; + color: #fff; + height: 96rpx; + background: linear-gradient(90deg, #293b9f 0%, #1679cb 100%); + border-radius: 12rpx; + } .send-date { + text-align: center; flex-shrink: 0; - font-size: 24rpx; - color: #283031; + font-size: 28rpx; + color: rgba(33, 33, 32, 1); text-align: center; .icon { - width: 40rpx; - height: 40rpx; + width: 52rpx; + height: 52rpx; + } + } + } +} + +.custom-input { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + padding: 30rpx; + box-sizing: border-box; + border-radius: 32rpx 32rpx 0 0; + background-color: #fff; + .icon { + position: relative; + width: 36rpx; + height: 36rpx; + overflow: visible; + &::after { + content: ''; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 60rpx; + height: 60rpx; + background-color: transparent; + } + } + .wrap { + margin-top: 14rpx; + position: relative; + padding: 32rpx 32rpx 24rpx; + border-radius: 24rpx; + background-color: #f6f8f9; + .textarea { + width: 100%; + display: block; + height: 300rpx; + box-sizing: border-box; + padding-bottom: 80rpx; + background-color: transparent; + font-size: 32rpx; + .ka-container { + padding: 30rpx 62rpx; + display: flex; + align-items: center; + justify-content: space-between; + background-color: transparent; + .stat { + font-size: 28rpx; + color: #adacb2; + &.red { + color: #ef3939; + } + } + .send-btn { + width: 128rpx; + height: 64rpx; + text-align: center; + line-height: 64rpx; + font-size: 32rpx; + color: #ffffff; + background: linear-gradient(90deg, #293b9f 0%, #1679cb 100%); + border-radius: 111rpx 111rpx 111rpx 111rpx; + } + } + } + } + &.custom-input-max { + .wrap { + .textarea { + height: 43vh; } } } @@ -640,11 +379,11 @@ page { .popup-message { padding: 30rpx; - background-color: rgba(242, 244, 245, 1); + background-color: rgba(255, 255, 255, 1); .title { padding: 0 32rpx 32rpx; - font-size: 36rpx; - color: rgba(40, 48, 49, 1); + font-size: 40rpx; + color: rgba(33, 33, 32, 1); font-weight: bold; text-align: center; } @@ -652,30 +391,34 @@ page { max-height: 50vh; overflow-y: auto; overflow-x: hidden; + &::-webkit-scrollbar { + display: none; + } .l-item { margin-bottom: 24rpx; padding: 30rpx; - font-size: 32rpx; - color: rgba(40, 48, 49, 1); - border-radius: 24rpx; - background-color: #fff; + font-size: 36rpx; + color: rgba(33, 33, 32, 1); + box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(0, 0, 0, 0.08); + border-radius: 24rpx 24rpx 24rpx 24rpx; + border: 2rpx solid #f4f3f3; &.active { - color: #fff; - background-color: rgba(103, 186, 202, 1); + color: rgba(255, 255, 255, 1); + background-color: rgba(22, 121, 203, 1); } } } .submit { margin-top: 24rpx; width: 690rpx; - height: 84rpx; + height: 96rpx; font-size: 36rpx; color: rgba(255, 255, 255, 1); font-weight: bold; - background: #67baca; + background: linear-gradient(90deg, #293b9f 0%, #1679cb 100%); display: flex; align-items: center; justify-content: center; - border-radius: 64rpx 64rpx 64rpx 64rpx; + border-radius: 12rpx; } } diff --git a/src/doctor/pages/d_interactiveDoctor/index.ts b/src/doctor/pages/d_interactiveDoctor/index.ts index 5431005..6ae2e5d 100644 --- a/src/doctor/pages/d_interactiveDoctor/index.ts +++ b/src/doctor/pages/d_interactiveDoctor/index.ts @@ -4,15 +4,16 @@ const app = getApp() interface IMessageItem { msgId: string - msgContentType: '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' // 1:文本 2: 出诊时间 3: adl卡片 4: 语音 5: 欢迎语 6:补充真实姓名 7: 提醒完善信息 8: 复诊卡片 9:患者恢复复诊消息 + msgContentType: '1' | '2' | '5' | '10' | '11' | '12' msgContent: any msgVisitTime: string msgVisitTimeType?: string - msgFromType: '1' | '2' // 1: 患者 2: 医生 + msgFromType: '1' | '2' isPlay?: boolean - msgCreateTime: string // 消息创建时间 - msgCreateTimeName?: string // 消息创建时间 + msgCreateTime: string + msgCreateTimeName?: string showTime?: boolean + msgCustomSendStatus?: number | string } interface Item { @@ -22,12 +23,22 @@ interface Item { Page({ data: { + pageTop: 0, + + popupShow: false, + popupType: 'popup9', + popupParams: {} as any, + doctor: {} as any, patientId: '', messageListShow: false, patientDetail: {}, + inputShow: false, + maxTextArea: false, + focus: false, + isLoad: false, isFinish: false, scrollTop: 0, @@ -40,36 +51,32 @@ Page({ week: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'], timeDay: { 1: '上午', 2: '下午' }, - }, - innerAudioContext: null as WechatMiniprogram.InnerAudioContext | null, + customMessage: '', + }, onLoad(options) { - this.innerAudioContext = wx.createInnerAudioContext({ - useWebAudioImplement: true, - }) + const menuButton = wx.getMenuButtonBoundingClientRect() + const pageTop = menuButton.bottom + 8 + this.setData({ pageTop }) + this.setData({ patientId: options.patientId, }) }, onShow() { app.waitLogin().then((_res) => { - app.mpBehavior({ doctor: true, PageName: 'PG_DOCTORINTERACTIONDETAIL' }) + app.mpBehavior({ doctor: true, PageName: 'PG_DoctorIMDetail' }) this.getDoctorDetail() this.getPatientDetail() this.getMessageList() this.getWordList() }) }, - onUnload() { - if (this.innerAudioContext) { - this.innerAudioContext.stop() - } - }, getDoctorDetail() { wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/account/info', + url: '?r=zd/doctor/account/info', data: {}, }).then((res) => { this.setData({ @@ -80,7 +87,7 @@ Page({ getPatientDetail() { wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/message-interact/get-patient-info', + url: '?r=zd/doctor/message-interact/get-patient-info', data: { patientId: this.data.patientId, }, @@ -89,7 +96,10 @@ Page({ res.LastAdlTimeName = dayjs(res.LastAdlTime).from(dayjs().format('YYYY-MM-DD')).replace(' ', '') } this.setData({ - patientDetail: res, + patientDetail: { + ...res, + BecomePatientTime: dayjs(res.BecomePatientTime).format('YYYY-MM-DD'), + }, }) }) }, @@ -101,30 +111,19 @@ Page({ const nextMsgId = this.data.nextMsgId wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/message-interact/doctor-get-message-list', + url: '?r=zd/doctor/message-interact/doctor-get-message-list', data: { nextMsgId, patientId: this.data.patientId, }, }).then((res) => { res.messageList.map((item) => { - if (item.msgContentType === '4') { - item.msgContent = JSON.parse(item.msgContent) - } if (item.msgContentType === '2') { item.msgVisitTime = item.msgVisitTimeType == 2 ? item.msgVisitTime : JSON.parse(item.msgVisitTime) } if (item.msgContentType === '5') { item.welcomeMsg = JSON.parse(item.welcomeMsg) } - if (item.msgContentType === '9') { - item.ReVisitInfo = JSON.parse(item.ReVisitInfo) - item.ReVisitInfo.visitDateName = dayjs(item.ReVisitInfo.visitDate).format('YYYY年M月DD日') - } - if (item.msgContentType === '10') { - item.msgContentInfo = JSON.parse(item.msgContentInfo) - } - return item }) if (!this.data.nextMsgId && !res.messageList.length) { @@ -162,7 +161,7 @@ Page({ getWordList() { wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/message-interact/get-common-word-list', + url: '?r=zd/doctor/message-interact/get-common-word-list', data: {}, }).then((res) => { this.setData({ @@ -171,7 +170,7 @@ Page({ }) }, handleSendDate() { - app.mpBehavior({ doctor: true, PageName: 'BTN_DOCTORINTERACTIONDETAILMYCLINICTIME' }) + app.mpBehavior({ doctor: true, PageName: 'BTN_DoctorIMDetailClinicHours' }) const { messageList, doctor: { Clinic }, @@ -181,7 +180,7 @@ Page({ title: '完善出诊时间?', content: '您还没有录入出诊时间', confirmText: '录入', - confirmColor: '#62bed0', + confirmColor: 'rgba(22, 121, 203, 1)', success: (res) => { if (res.confirm) { wx.navigateTo({ @@ -195,7 +194,7 @@ Page({ wx.showModal({ title: '提示', content: '将您的出诊时间发送给患者?', - confirmColor: '#62bed0', + confirmColor: 'rgba(22, 121, 203, 1)', success: (res) => { if (res.confirm) { this.setData({ @@ -215,7 +214,7 @@ Page({ this.filterCreateTime() wx.ajax({ method: 'POST', - url: '?r=igg4/doctor/message-interact/send-visit-time', + url: '?r=zd/doctor/message-interact/send-visit-time', data: { patientId: this.data.patientId, }, @@ -226,7 +225,7 @@ Page({ }) }, handleSendShow() { - app.mpBehavior({ doctor: true, PageName: 'BTN_DOCTORINTERACTIONDETAILSENDMESSAGE' }) + app.mpBehavior({ doctor: true, PageName: 'BTN_DoctorIMDetailSendMessage' }) this.setData({ messageListShow: true, }) @@ -236,6 +235,17 @@ Page({ messageListShow: false, }) }, + handleInputShow() { + this.setData({ + inputShow: true, + focus: true, + }) + }, + toggleMaxTextarea() { + this.setData({ + maxTextArea: !this.data.maxTextArea, + }) + }, handleWord(e) { const { index } = e.currentTarget.dataset this.setData({ @@ -263,64 +273,13 @@ Page({ this.handleView() wx.ajax({ method: 'POST', - url: '?r=igg4/doctor/message-interact/send-word-message', + url: '?r=zd/doctor/message-interact/send-word-message', data: { patientId: this.data.patientId, wordId, }, }) }, - handleSendUserConform(e) { - const { id } = e.currentTarget.dataset - const title = { - 6: '发送后患者将收到补充姓名通知', - 7: '发送后患者将收到完善信息通知', - }[id] - wx.showModal({ - title, - confirmColor: '#62bed0', - success: (res) => { - if (res.confirm) { - this.handleSendUser(id) - } - }, - }) - }, - handleSendUser(id) { - const { messageList } = this.data - const content = { - 6: '请完善您的真实姓名,以便我清楚了解您的病情', - 7: '请完善您的个人信息,以便我清楚了解您的病情', - }[id] - this.setData({ - messageList: [ - ...messageList, - { - msgId: '', - msgContentType: id, - msgContent: content, - msgVisitTime: '', - msgFromType: '2', - msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), - }, - ], - }) - this.filterCreateTime() - this.handlePopupMessageClose() - this.handleView() - const url = { - 6: '?r=igg4/doctor/message-interact/send-remind-name', - 7: '?r=igg4/doctor/message-interact/send-remind-init', - }[id] - wx.ajax({ - method: 'POST', - url, - data: { - patientId: this.data.patientId, - }, - }) - }, - formatTime(date: string) { let msgCreateTimeName = '' if (dayjs().format('YYYY-MM-DD') === dayjs(date).format('YYYY-MM-DD')) { @@ -363,83 +322,80 @@ Page({ }) }, handlePatientDetail() { - app.mpBehavior({ doctor: true, PageName: 'BTN_DOCTORINTERACTIONDETAILPATIENTFILE' }) + app.mpBehavior({ doctor: true, PageName: 'BTN_DoctorIMDetailPatient' }) wx.navigateTo({ url: `/doctor/pages/d_patientDetail/index?id=${this.data.patientId}`, }) }, - handleAudio(e) { - const { index } = e.currentTarget.dataset - const { messageList } = this.data - const messageItem = messageList[index] - const { url } = messageItem.msgContent[0] - if (this.innerAudioContext) { - if (messageItem.isPlay) { - this.innerAudioContext.stop() - messageItem.isPlay = false + handleHideKeyboard() { + if (this.data.inputShow) { + this.setData({ + inputShow: false, + focus: false, + }) + } + }, + handleConfirm() { + const { customMessage } = this.data + this.handleHideKeyboard() + this.handleSendCustomMessage(customMessage) + }, + handleSendCustomMessage(customMessage: string) { + if (!customMessage) return + const { messageList, patientId } = this.data + wx.ajax({ + method: 'POST', + url: '?r=zd/doctor/message-interact/send-text-message', + data: { + text: customMessage, + patientId, + }, + loading: true, + }).then((res) => { + if (res.errcode == 10001) { this.setData({ - messageList, + popupShow: true, + popupType: 'popup9', + popupParams: { + message: res.errmsg, + }, }) return } - this.innerAudioContext.stop() - this.innerAudioContext.src = url - this.innerAudioContext.play() - messageItem.isPlay = true - this.innerAudioContext.onEnded(() => { - messageItem.isPlay = false - this.setData({ - messageList, - }) - }) - this.innerAudioContext.onStop(() => { - messageItem.isPlay = false - this.setData({ - messageList, - }) - }) + const pushMessage: IMessageItem[] = [ + { + msgId: '', + msgContentType: '12', + msgContent: customMessage, + msgVisitTime: '', + msgFromType: '2', + msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), + }, + ] this.setData({ - messageList, + customMessage: '', + messageList: [...messageList, ...pushMessage], }) - } + this.filterCreateTime() + this.handleView() + }) }, - handleAdl() { - wx.showToast({ - title: '患者点击此按钮可进入ADL测评页面', - icon: 'none', + handlePopupOk() { + this.setData({ + popupShow: false, }) }, - handleReferral() { - wx.showModal({ - title: '', - content: '您将给患者发送复诊时间填写卡片?', - confirmText: '发送', - confirmColor: '#62bed0', - success: (res) => { - if (res.confirm) { - wx.ajax({ - method: 'POST', - url: '?r=igg4/doctor/message-interact/send-re-visit', - data: { - patientId: this.data.patientId, - }, - }).then(() => { - this.setData({ - messageList: [ - ...this.data.messageList, - { - msgId: '', - msgContentType: '8', - msgVisitTime: '', - msgContent: '', - msgFromType: '2', - msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), - }, - ], - }) - this.handleView() - }) - } + handlePopupCancel() { + this.setData({ + popupShow: false, + }) + }, + handleBack() { + wx.navigateBack({ + fail() { + wx.reLaunch({ + url: '/doctor/pages/d_home/index', + }) }, }) }, diff --git a/src/doctor/pages/d_interactiveDoctor/index.wxml b/src/doctor/pages/d_interactiveDoctor/index.wxml index b1dc9e4..5f592e3 100644 --- a/src/doctor/pages/d_interactiveDoctor/index.wxml +++ b/src/doctor/pages/d_interactiveDoctor/index.wxml @@ -1,122 +1,14 @@ - + - - {{patientDetail.patientName}} - - 提醒补充真实姓名 - - - - 患者档案 - - - - - - {{tag}} - - - - - - - 最近一次测评:{{patientDetail.LastAdlTimeName}} - - - - - 最新ADL评分 - {{patientDetail.AdlScore}} - - - - 已达标 - - - - - {{patientDetail.TotalScoreChange}} - - - - - - 接近达标 - - - - - {{patientDetail.TotalScoreChange}} - - - - - - 待达标 - - - - - {{patientDetail.TotalScoreChange}} - - - - - 最新激素用量 - {{patientDetail.SteroidDailyDose}}mg - - - - 已达标 - - - - - {{patientDetail.SteroidDailyDoseChange}}mg - - - - - - 待达标 - - - - - {{patientDetail.SteroidDailyDoseChange}}mg - - + {{patientDetail.patientName}} + 注册时间:{{patientDetail.BecomePatientTime}} + 查看档案 @@ -143,47 +35,23 @@ - {{message.msgContent}} - - 我最近一次复诊时间是{{message.ReVisitInfo.visitDateName}} - 我的方案是 - - 1.激素 - - 2.传统免疫抑制剂(如他克莫司、吗 替麦考酚酯等) - - 3.静脉输注丙种球蛋白 - 4.血浆置换 - - 5.B细胞抑制剂(如:利妥昔单抗、泰 它西普、伊奈利珠单抗) - - 6.FcRn拮抗剂(如:艾加莫德) - - 7.C5补体抑制剂(如:依库珠单抗) - - 8.中药或中成药 - 9.其他 - - + {{message.msgContent}} - {{message.welcomeMsg.title}} - {{message.welcomeMsg.questionDes}} + 以下是门诊常见提问,您也可以在对话框下方的"快速提问"里查询更多: {{index+1}} {{item.question}} - - {{message.welcomeMsg.guideClick}} - - - {{message.msgContent}} + + {{message.msgContent}} + 以下是我的出诊时间 @@ -196,70 +64,12 @@ - - - ADL+激素双达标 - 点击进入ADL - 建议您定期做ADL测评 - - - {{message.msgContent[0].duration}}'' - - - - - {{message.msgContent}} - 提交您的真实姓名 - - - {{message.msgContent}} - 完善个人信息 - - - - 您最近有按照医生的 提醒,定期复诊吗? - - - - 已复诊 - - - - - - - {{message.msgContentInfo.doctorName}} - {{message.msgContentInfo.hospitalName}} - - - 推荐好医生给你,建议2周内复诊 + + - + @@ -267,22 +77,51 @@ - 发送消息 - - - 完善个人信息 + + {{customMessage || '输入文字'}} + 快捷回复 + 发送消息 - - 我的出诊时间 - - - - 复诊提醒 + + 出诊时间 + + + + + + + + + - 发送消息 + 快捷回复 发送 + + diff --git a/src/doctor/pages/d_invite/index.scss b/src/doctor/pages/d_invite/index.scss index 446a9ba..0e922fe 100644 --- a/src/doctor/pages/d_invite/index.scss +++ b/src/doctor/pages/d_invite/index.scss @@ -1,5 +1,4 @@ page{ - background-color: #c65174; } .page { position: relative; diff --git a/src/doctor/pages/d_invite/index.ts b/src/doctor/pages/d_invite/index.ts index 7f027a6..4504463 100644 --- a/src/doctor/pages/d_invite/index.ts +++ b/src/doctor/pages/d_invite/index.ts @@ -28,7 +28,7 @@ Page({ getDetail() { wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/account/info', + url: '?r=zd/doctor/account/info', data: {}, }).then((res) => { this.setData({ @@ -47,6 +47,68 @@ Page({ doctorId: id, }, }).then((res) => { + res = { + info: { id: 'doctor_mini', title: '医生码海报', desc: '医生小程序码海报' }, + body: { + bgImg: + 'https://picsissiok-10049618.cos.ap-shanghai.myqcloud.com/c40aa612270160a657112c56a933d54e_17558553039736.png', + width: '750', + height: '1448', + }, + elements: [ + { + id: 'avatar', + desc: '医生头像', + type: 0, + picType: 'avatar', + src: 'https://picsissiok-10049618.cos.ap-shanghai.myqcloud.com/6e61b32196f54f20f66dd45c33ade450_17693963483779.png', + width: '128', + height: '128', + left: '70', + top: '256', + shape: 'circle', + }, + { + id: 'doctorName', + desc: '医生姓名', + type: 1, + text: '云南大学附属医院\n内分泌科医生', + font: '', + 'font-size': '40', + 'font-weight': 'bold', + width: '384', + color: 'rgba(33, 29, 46, 1)', + 'single-line': true, + left: '234', + top: '256', + }, + { + id: 'hospitalName', + desc: '医院名称', + type: 1, + text: '中南大学湘雅医院', + font: '', + 'font-size': '32', + color: 'rgba(115, 114, 121, 1)', + 'single-line': true, + left: '234', + width: '384', + top: '344', + lineHeight: '36', + }, + { + id: 'minicode', + desc: '医生小程序码', + type: 0, + picType: 'minicode', + src: '', + width: '238', + height: '238', + halign: 'center', + top: '640', + }, + ], + } this.setData({ params: res, }) @@ -54,7 +116,7 @@ Page({ }, getQrCode() { this.setData({ - qrCode: `${app.globalData.url}?r=igg4/doctor/account/mp-info&loginState=${app.globalData.loginState}`, + qrCode: `${app.globalData.url}?r=zd/doctor/account/mp-info&loginState=${app.globalData.loginState}`, }) }, handleDownload() { diff --git a/src/doctor/pages/d_login/index.json b/src/doctor/pages/d_login/index.json index 03743bf..79ab5aa 100644 --- a/src/doctor/pages/d_login/index.json +++ b/src/doctor/pages/d_login/index.json @@ -1,9 +1,8 @@ { - "navigationBarTitleText": "登录", - "navigationStyle": "custom", + "navigationBarTitleText": "", "usingComponents": { "van-divider": "@vant/weapp/divider/index", "van-icon": "@vant/weapp/icon/index", - "navBar": "/components/navBar/navBar" + "toast": "/components/toast/index" } } diff --git a/src/doctor/pages/d_login/index.scss b/src/doctor/pages/d_login/index.scss index 3948d3d..a58d5dc 100644 --- a/src/doctor/pages/d_login/index.scss +++ b/src/doctor/pages/d_login/index.scss @@ -1,32 +1,39 @@ .page { min-height: 100vh; - padding: 460rpx 0 80rpx 0; + padding: 36rpx 0 80rpx 0; box-sizing: border-box; .container { - padding: 0 50rpx; + padding: 0 40rpx; + .page-logo { + margin: 0 auto; + display: block; + width: 223rpx; + height: 280rpx; + } .c-title { - font-size: 36rpx; - color: rgba(32, 33, 33, 1); + margin-top: 56rpx; + font-size: 40rpx; + color: rgba(33, 33, 32, 1); font-weight: bold; } .content { margin-top: 30rpx; font-size: 32rpx; - color: rgba(32, 33, 33, 1); + color: rgba(33, 33, 32, 0.70); line-height: 56rpx; .link { - color: rgba(67, 168, 188, 1); + color: rgba(22, 121, 203, 1); } } } .phone { margin: 44rpx 48rpx 0; padding: 24rpx 20rpx; - border-radius: 64rpx; - background: rgba(103, 186, 202, 1); + border-radius: 12rpx; + background: linear-gradient( 90deg, #293B9F 0%, #1679CB 100%); font-size: 32rpx; color: rgba(255, 255, 255, 1); - line-height: 1; + line-height: 48rpx; &::after { border: none; outline: none; @@ -34,17 +41,18 @@ } .tel-code { margin: 16rpx auto 0; - width: 278rpx; - height: 52rpx; - background: #f7f7fa; - border-radius: 24rpx 24rpx 24rpx 24rpx; + width: 294rpx; + height: 56rpx; + border-radius: 92rpx 92rpx 92rpx 92rpx; + background: rgba(243, 243, 243, 1); display: flex; align-items: center; justify-content: center; - font-size: 28rpx; - color: rgba(161, 164, 172, 1); + gap: 12rpx; + font-size: 32rpx; + color: rgba(22, 121, 203, 1); .icon { - width: 40rpx; + width: 27rpx; height: 40rpx; } } @@ -55,7 +63,7 @@ margin-bottom: 32rpx; display: flex; justify-content: space-between; - border-radius: 64rpx; + border-radius: 12rpx; background: rgba(247, 247, 247, 1); border: 1rpx solid rgba(237, 239, 240, 1); .input { @@ -66,7 +74,7 @@ color: #000; } .input-placeholade { - color: rgba(194, 201, 202, 1); + color: rgba(33, 33, 32, 0.40); } .code { margin-left: 24rpx; @@ -74,7 +82,7 @@ width: 262rpx; border-radius: 24rpx; font-size: 32rpx; - color: rgba(103, 186, 202, 1); + color: rgba(22, 121, 203, 1); display: flex; align-items: center; justify-content: center; @@ -83,12 +91,12 @@ .submit { margin-top: 32px; padding: 24rpx 20rpx; - background: rgba(103, 186, 202, 1); - border-radius: 64rpx; + border-radius: 12rpx; + background: linear-gradient( 90deg, #293B9F 0%, #1679CB 100%); font-size: 32rpx; color: #ffffff; text-align: center; - line-height: 1; + line-height: 48rpx; } } .divider { @@ -108,7 +116,7 @@ height: 32rpx; } .link { - color: rgba(67, 168, 188, 1); + color: rgba(22, 121, 203, 1); } } .partient { diff --git a/src/doctor/pages/d_login/index.ts b/src/doctor/pages/d_login/index.ts index a2e435c..32da3a9 100644 --- a/src/doctor/pages/d_login/index.ts +++ b/src/doctor/pages/d_login/index.ts @@ -3,6 +3,12 @@ let timer = null as null | number Page({ data: { + popupShow: false, + popupType: 'popup11', + popupParams: { + close: false, + } as any, + mobile: '', code: '', codeText: '发送验证码', @@ -38,7 +44,7 @@ Page({ } wx.ajax({ method: 'POST', - url: '?r=igg4/login/send-verify-code', + url: '?r=zd/login/send-verify-code', data: { mobile, }, @@ -63,6 +69,22 @@ Page({ }, 1000) }) }, + handleDocRule(customPhone = false) { + const { check } = this.data + return new Promise((resolve) => { + if (check) { + return resolve(true) + } + this.setData({ + popupShow: true, + popupType: 'popup11', + popupParams: { + close: false, + customPhone, + }, + }) + }) + }, handleSubmit() { app.mpBehavior({ PageName: 'BTN_DOCTORLOGIN' }) if (!this.data.mobile) { @@ -80,15 +102,12 @@ Page({ return } if (!this.data.check) { - wx.showToast({ - icon: 'none', - title: '请同意用户协议', - }) + this.handleDocRule(true) return } wx.ajax({ method: 'POST', - url: '?r=igg4/doctor/login/reg-login', + url: '?r=zd/doctor/login/reg-login', data: { mobile: this.data.mobile, code: this.data.code, @@ -99,18 +118,12 @@ Page({ }, handleWxSubmit(e: WechatMiniprogram.CustomEvent) { app.mpBehavior({ PageName: 'BTN_DOCTORQUICKPATIENTLOGIN' }) - if (!this.data.check) { - wx.showToast({ - icon: 'none', - title: '请同意用户协议', - }) - return - } + this.handlePopupCancel() const { iv, encryptedData } = e.detail if (iv && encryptedData) { wx.ajax({ method: 'POST', - url: '?r=igg4/doctor/login/wx-reg-login', + url: '?r=zd/doctor/login/wx-reg-login', data: { iv: encodeURIComponent(iv), encryptedData: encodeURIComponent(encryptedData), @@ -120,6 +133,10 @@ Page({ }) } }, + handleNoDoc() { + app.mpBehavior({ PageName: 'BTN_DOCTORQUICKPATIENTLOGIN' }) + this.handleDocRule() + }, submitCallback() { app.globalData.loginType = 2 app.globalData.isLogin = true @@ -147,6 +164,21 @@ Page({ check: !this.data.check, }) }, + handlePopupOk() { + const { popupType } = this.data + if (popupType == 'popup11') { + this.setData({ + check: true, + popupShow: false, + }) + this.handleSubmit() + } + }, + handlePopupCancel() { + this.setData({ + popupShow: false, + }) + }, handleBack() { wx.navigateBack() }, diff --git a/src/doctor/pages/d_login/index.wxml b/src/doctor/pages/d_login/index.wxml index dfad4d5..2b37ea5 100644 --- a/src/doctor/pages/d_login/index.wxml +++ b/src/doctor/pages/d_login/index.wxml @@ -1,25 +1,23 @@ - - + + 尊敬的医生您好 - gMG 给力加油站是中国罕见病联盟/北京罕见病诊疗与保障学会发起的gMG患者健康全程管理平台; + “愈见昕生”是北京白求恩公益基金会发起的 IgG4-RD 患者健康管理平台。 - 在您加入gMG 给力加油站平台之前,请您阅读并充分理解 - 《隐私协议保护政策》 - ,了解您的权益及相关数据处理方法,我们将严格按照法律法规及 - 《隐私协议保护政策》 - 的相关规定,保证您的个人信息不受侵犯。 + 加入平台前,请您仔细阅读 + 《隐私保护协议》 + ,了解您的权益及个人信息处理方式。我们将严格依法保护您的个人信息安全。 - + - 或者 + 或者 - + 手机号验证码 @@ -45,11 +43,11 @@ 立即加入 - + - 我特此同意依照此 - 《隐私协议保护政策》 + 我同意依照此 + 《隐私政策》 规定收集我的个人敏感信息 @@ -58,3 +56,12 @@ + + diff --git a/src/doctor/pages/d_my/index.json b/src/doctor/pages/d_my/index.json index 02e5c98..e516894 100644 --- a/src/doctor/pages/d_my/index.json +++ b/src/doctor/pages/d_my/index.json @@ -1,8 +1,7 @@ { - "navigationStyle": "custom", + "navigationBarTitleText": "我的", "usingComponents": { "van-icon": "@vant/weapp/icon/index", - "navBar": "/components/navBar/navBar", "tabbar": "../../components/tabbar/index", "text-expandsion": "/components/text-expandsion/index" } diff --git a/src/doctor/pages/d_my/index.scss b/src/doctor/pages/d_my/index.scss index 900e51e..3619d97 100644 --- a/src/doctor/pages/d_my/index.scss +++ b/src/doctor/pages/d_my/index.scss @@ -4,137 +4,88 @@ page { } .page { min-height: 100vh; - .container { - margin: 160rpx 30rpx 0; - padding: 0 30rpx 40rpx; - background: #fff linear-gradient(to top, #ffffff 0%, #e8f0f1 100%) no-repeat top center/100% 200rpx; - border-radius: 24rpx 24rpx 24rpx 24rpx; - border: 2rpx solid #ffffff; + padding-top: 40rpx; + .user-info { + display: flex; + padding: 0 40rpx 0; .avatar { - margin-top: -50rpx; - width: 128rpx; - height: 128rpx; - .avatar-user { - width: 100%; - height: 100%; - border-radius: 50%; - } + flex-shrink: 0; + width: 104rpx; + height: 104rpx; + border-radius: 50%; + margin-right: 24rpx; } - .name { - margin: -55rpx 0 0 150rpx; - font-size: 40rpx; - color: rgba(40, 48, 49, 1); - font-weight: bold; - line-height: 1; - } - .card { - margin-top: 52rpx; - padding: 32rpx; - background: #ffffff; - box-shadow: 0rpx 8rpx 32rpx 0rpx rgba(40, 48, 49, 0.04); - border-radius: 24rpx 24rpx 24rpx 24rpx; - border: 2rpx solid #f8f9f9; - .content { - display: flex; - align-items: start; - gap: 8rpx; - font-size: 32rpx; + .user-detail { + .name { + font-size: 40rpx; color: rgba(40, 48, 49, 1); - line-height: 1; + font-weight: bold; + margin-bottom: 12rpx; + } + .hospital { + font-size: 32rpx; + color: rgba(33, 33, 32, 0.4); .tag { - flex-shrink: 0; - padding: 4rpx 12rpx; + display: inline-block; + margin-left: 12rpx; + padding: 0 12rpx; font-size: 22rpx; - color: rgba(229, 154, 41, 1); + color: rgba(255, 255, 255, 1); + background: linear-gradient(272deg, #ffd21e 0%, #ffb514 100%); border-radius: 8rpx; - background-color: rgba(229, 154, 41, 0.29); - } - } - .c-row { - margin-top: 32rpx; - display: flex; - align-items: center; - gap: 12rpx; - font-size: 32rpx; - color: rgba(40, 48, 49, 1); - line-height: 1; - .icon { - flex-shrink: 0; - width: 32rpx; - height: 32rpx; } } } - .row { - margin-top: 32rpx; - .r-title { - width: 128rpx; - height: 32rpx; - } - .r-content { - margin-top: 16rpx; - font-size: 28rpx; - color: rgba(154, 161, 163, 1); - white-space: pre-line; - } + } + .invite-card { + margin: 40rpx 40rpx 0; + .i-img { + width: 100%; + height: 164rpx; } } - .invite { - padding: 22rpx 30rpx 36rpx 168rpx; - margin: 24rpx 30rpx 0; - display: flex; - align-items: center; - justify-content: space-between; + .menu-list { + margin: 32rpx 30rpx 0; + background: #fff; border-radius: 24rpx; - border: 2rpx solid #ffffff; - .wrap { - .title { - font-size: 36rpx; - color: rgba(40, 48, 49, 1); - } - .content { - font-size: 28rpx; - color: rgba(154, 161, 163, 1); - } - } - .btn { - width: 198rpx; - height: 64rpx; + overflow: hidden; + .menu-item { display: flex; align-items: center; - justify-content: center; - font-size: 32rpx; - color: rgba(255, 255, 255, 1); - background: #62bed0; - border-radius: 136rpx 136rpx 136rpx 136rpx; - } - } - .list { - margin: 24rpx 30rpx 0; - .list-item { - padding: 30rpx; - display: flex; justify-content: space-between; - align-items: center; - background: #ffffff; - border-radius: 24rpx 24rpx 24rpx 24rpx; - .left { + padding: 30rpx; + border-bottom: 1rpx solid #f2f4f5; + &:last-child { + border-bottom: none; + } + .menu-left { display: flex; - gap: 20rpx; align-items: center; - .icon { - width: 48rpx; - height: 48rpx; + .menu-icon { + width: 44rpx; + height: 44rpx; + margin-right: 20rpx; } - .name { + .menu-name { font-size: 32rpx; - color: rgba(40, 48, 49, 1); + color: rgba(33, 33, 32, 1); } } - .more { - color: #d4d9da; + .menu-arrow { + color: rgba(173, 172, 178, 1); font-size: 32rpx; } } } + .logout-btn { + margin: 40rpx 30rpx; + height: 88rpx; + display: flex; + align-items: center; + justify-content: center; + font-size: 32rpx; + color: rgba(33, 33, 32, 1); + background: #fff; + border-radius: 44rpx; + } } diff --git a/src/doctor/pages/d_my/index.ts b/src/doctor/pages/d_my/index.ts index 6063a7d..36a27a8 100644 --- a/src/doctor/pages/d_my/index.ts +++ b/src/doctor/pages/d_my/index.ts @@ -24,7 +24,7 @@ Page({ getDetail() { wx.ajax({ method: 'GET', - url: '?r=igg4/doctor/account/info', + url: '?r=zd/doctor/account/info', data: {}, }).then((res) => { let weekName = '' @@ -60,6 +60,43 @@ Page({ url, }) }, + handlePrivacy() { + wx.navigateTo({ + url: '/pages/privacyAgreement/index', + }) + }, + handleFollow() { + wx.navigateTo({ + url: '/pages/thePublic/index', + }) + }, + handleFeedback() { + wx.navigateTo({ + url: '/pages/comIns/index', + }) + }, + handleLogout() { + wx.showModal({ + title: '确认退出?', + confirmColor: 'rgba(22, 121, 203, 1)', + success: (res) => { + if (res.confirm) { + wx.ajax({ + method: 'POST', + url: '?r=zd/doctor/account/reg-logout', + data: {}, + }).then((_res) => { + app.globalData.loginType = 1 + app.globalData.anyWhere = true + app.globalData.first = true + wx.reLaunch({ + url: '/pages/login/index', + }) + }) + } + }, + }) + }, onShareAppMessage() { return { title: '重症肌无力加油站,重拾生活掌控感!', diff --git a/src/doctor/pages/d_my/index.wxml b/src/doctor/pages/d_my/index.wxml index 567cf22..fdba768 100644 --- a/src/doctor/pages/d_my/index.wxml +++ b/src/doctor/pages/d_my/index.wxml @@ -1,66 +1,50 @@ - - - - - - - {{doctor.Name}} - - + +