Browse Source

stash

master
kola-web 3 days ago
parent
commit
f6a4247b33
  1. 2
      AGENTS.md
  2. 2
      README.md
  3. 2
      dist.ps1
  4. 2
      project.config.json
  5. 182
      project.private.config.json
  6. 10
      src/app.json
  7. 24
      src/app.ts
  8. 8
      src/components/pageNavbar/index.scss
  9. 4
      src/components/pageNavbar/index.wxml
  10. 2
      src/components/referralFrom/index.ts
  11. 2
      src/components/timeOut/index.ts
  12. 760
      src/components/toast/index.scss
  13. 20
      src/components/toast/index.ts
  14. 252
      src/components/toast/index.wxml
  15. 4
      src/custom-tab-bar/index.scss
  16. 23
      src/custom-tab-bar/index.ts
  17. 2
      src/custom-tab-bar/index.wxml
  18. 5
      src/doctor/components/tabbar/index.json
  19. 76
      src/doctor/components/tabbar/index.scss
  20. 31
      src/doctor/components/tabbar/index.ts
  21. 34
      src/doctor/components/tabbar/index.wxml
  22. 4
      src/doctor/pages/d_changeDoctor/index.ts
  23. 6
      src/doctor/pages/d_changePhone/index.ts
  24. 10
      src/doctor/pages/d_createTask/index.ts
  25. 2
      src/doctor/pages/d_customExport/index.ts
  26. 4
      src/doctor/pages/d_exportList/index.ts
  27. 3
      src/doctor/pages/d_home/index.json
  28. 460
      src/doctor/pages/d_home/index.scss
  29. 821
      src/doctor/pages/d_home/index.ts
  30. 275
      src/doctor/pages/d_home/index.wxml
  31. 7
      src/doctor/pages/d_interactive/index.json
  32. 115
      src/doctor/pages/d_interactive/index.scss
  33. 26
      src/doctor/pages/d_interactive/index.ts
  34. 22
      src/doctor/pages/d_interactive/index.wxml
  35. 4
      src/doctor/pages/d_interactiveDoctor/index.json
  36. 621
      src/doctor/pages/d_interactiveDoctor/index.scss
  37. 260
      src/doctor/pages/d_interactiveDoctor/index.ts
  38. 273
      src/doctor/pages/d_interactiveDoctor/index.wxml
  39. 1
      src/doctor/pages/d_invite/index.scss
  40. 66
      src/doctor/pages/d_invite/index.ts
  41. 5
      src/doctor/pages/d_login/index.json
  42. 54
      src/doctor/pages/d_login/index.scss
  43. 60
      src/doctor/pages/d_login/index.ts
  44. 35
      src/doctor/pages/d_login/index.wxml
  45. 3
      src/doctor/pages/d_my/index.json
  46. 167
      src/doctor/pages/d_my/index.scss
  47. 39
      src/doctor/pages/d_my/index.ts
  48. 90
      src/doctor/pages/d_my/index.wxml
  49. 2
      src/doctor/pages/d_patient/index.json
  50. 250
      src/doctor/pages/d_patient/index.scss
  51. 6
      src/doctor/pages/d_patient/index.ts
  52. 199
      src/doctor/pages/d_patient/index.wxml
  53. 3
      src/doctor/pages/d_patientDetail/index.json
  54. 834
      src/doctor/pages/d_patientDetail/index.scss
  55. 12
      src/doctor/pages/d_patientDetail/index.ts
  56. 476
      src/doctor/pages/d_patientDetail/index.wxml
  57. 2
      src/doctor/pages/d_patientList/index.ts
  58. 16
      src/doctor/pages/d_taskDetail/index.ts
  59. 14
      src/doctor/pages/d_taskList/index.ts
  60. 2
      src/doctor/pages/d_trans/index.ts
  61. 4
      src/doctor/pages/d_transfer/index.ts
  62. 8
      src/doctor/pages/d_transferDetail/index.ts
  63. 4
      src/doctor/pages/d_transferLog/index.ts
  64. 131
      src/doctor/pages/d_userInfo/index.scss
  65. 8
      src/doctor/pages/d_userInfo/index.ts
  66. 28
      src/doctor/pages/d_userInfo/index.wxml
  67. 6
      src/gift/pages/conformOrder/index.ts
  68. 2
      src/gift/pages/dtpDurg/index.ts
  69. 10
      src/gift/pages/giftDetail/index.ts
  70. 6
      src/gift/pages/giftList/index.ts
  71. 2
      src/gift/pages/myGift/index.ts
  72. 18
      src/gift/pages/myHealthRecord/index.ts
  73. 2
      src/gift/pages/orderDetail/index.ts
  74. 2
      src/gift/pages/orderEnd/index.ts
  75. 4
      src/gift/pages/priceDetail/index.ts
  76. 2
      src/gift/pages/scoreRule/index.ts
  77. 8
      src/gift/pages/siteEdit/index.ts
  78. 2
      src/gift/pages/siteList/index.ts
  79. 4
      src/gift/pages/vipCert/index.ts
  80. 2
      src/gift/pages/vipPending/index.ts
  81. 2
      src/gift/pages/vipReject/index.json
  82. 108
      src/gift/pages/vipReject/index.scss
  83. 12
      src/gift/pages/vipReject/index.wxml
  84. BIN
      src/images/bg14.png
  85. BIN
      src/images/bg15.png
  86. BIN
      src/images/bg16.png
  87. BIN
      src/images/bg17.png
  88. BIN
      src/images/bg18.png
  89. BIN
      src/images/bg19.png
  90. BIN
      src/images/bg20.png
  91. BIN
      src/images/bg21.png
  92. BIN
      src/images/doctor/tabbar/1-active.png
  93. BIN
      src/images/doctor/tabbar/1.png
  94. BIN
      src/images/doctor/tabbar/2-active.png
  95. BIN
      src/images/doctor/tabbar/2.png
  96. BIN
      src/images/doctor/tabbar/3-active.png
  97. BIN
      src/images/doctor/tabbar/3.png
  98. BIN
      src/images/doctor/tabbar/4-active.png
  99. BIN
      src/images/doctor/tabbar/4.png
  100. BIN
      src/images/icon19.png
  101. Some files were not shown because too many files have changed in this diff Show More

2
AGENTS.md

@ -204,7 +204,7 @@ IGG4 重症肌无力(MG)患者社区微信小程序。两种用户角色: @@ -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`

2
README.md

@ -42,7 +42,7 @@ wx.showModal({ @@ -42,7 +42,7 @@ wx.showModal({
title: '',
confirmColor: '#cf5375',
})
// 医生端 confirmColor: '#62bed0',
// 医生端 confirmColor: 'rgba(22, 121, 203, 1)',
```
1)提供3中的3个路径链接;

2
dist.ps1

@ -6,3 +6,5 @@ svn add . --no-ignore --force @@ -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"

2
project.config.json

@ -69,7 +69,7 @@ @@ -69,7 +69,7 @@
],
"include": []
},
"appid": "wxc3cdb3c4d4f62cea",
"appid": "wx9404bbbdaf52c276",
"scripts": {
"beforeCompile": "pnpm run beforeCompile",
"beforePreview": "pnpm run beforeCompile",

182
project.private.config.json

@ -18,6 +18,186 @@ @@ -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"
}

10
src/app.json

@ -40,10 +40,6 @@ @@ -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 @@ @@ -57,7 +53,7 @@
"pages/nrdlTable/index",
"pages/interactivePatient/index",
"pages/referral/index",
"pages/demo/index"
"pages/qaForm/index"
],
"subpackages": [
{
@ -135,11 +131,11 @@ @@ -135,11 +131,11 @@
},
{
"pagePath": "pages/repository/index",
"text": "知识"
"text": "知识"
},
{
"pagePath": "pages/live/index",
"text": "会议课堂"
"text": "活动"
},
{
"pagePath": "pages/story/index",

24
src/app.ts

@ -17,9 +17,15 @@ App<IAppOption>({ @@ -17,9 +17,15 @@ App<IAppOption>({
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<IAppOption>({ @@ -136,7 +142,7 @@ App<IAppOption>({
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<IAppOption>({ @@ -388,7 +394,7 @@ App<IAppOption>({
}
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<IAppOption>({ @@ -410,7 +416,7 @@ App<IAppOption>({
) {
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<IAppOption>({ @@ -420,7 +426,7 @@ App<IAppOption>({
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<IAppOption>({ @@ -433,9 +439,9 @@ App<IAppOption>({
})
},
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<IAppOption>({ @@ -514,7 +520,7 @@ App<IAppOption>({
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) {

8
src/components/pageNavbar/index.scss

@ -6,11 +6,11 @@ @@ -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;
}
}

4
src/components/pageNavbar/index.wxml

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
<van-nav-bar title="" custom-style="background:transparent;">
<view class="navbar" slot="left">
<van-icon wx:if="{{back}}" class="back-icon" name="arrow-left" color="#333333" size="22" bind:tap="handleBack" />
<image wx:if="{{drug}}" class="drug-nav-img" src="{{imageUrl}}1.5/page-title.png?t={{Timestamp}}"></image>
<image wx:else class="nav-img" src="{{imageUrl}}1/page-title.png?t={{Timestamp}}"></image>
<image wx:if="{{drug}}" class="drug-nav-img" src="/images/title1.png"></image>
<image wx:else class="nav-img" src="/images/title1.png"></image>
</view>
</van-nav-bar>

2
src/components/referralFrom/index.ts

@ -112,7 +112,7 @@ Component({ @@ -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) {

2
src/components/timeOut/index.ts

@ -84,7 +84,7 @@ Component({ @@ -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,

760
src/components/toast/index.scss

@ -2809,3 +2809,763 @@ @@ -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;
}

20
src/components/toast/index.ts

@ -60,6 +60,7 @@ Component({ @@ -60,6 +60,7 @@ Component({
settingsInfo: {},
userInfo: {},
openPatientList: {},
popup1Check1: false,
},
lifetimes: {
attached() {
@ -72,6 +73,14 @@ Component({ @@ -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({ @@ -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({ @@ -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({ @@ -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)
},
},
})

252
src/components/toast/index.wxml

@ -824,4 +824,256 @@ @@ -824,4 +824,256 @@
<view class="footer">跳转中 {{params.time}}s</view>
</view>
</view>
<view
class="popup1"
style="background: url('{{imageUrl}}bg4.png?t={{Timestamp}}') no-repeat top center/100% 304rpx"
wx:if="{{type==='popup1'}}"
>
<view class="container">
<view class="user">
<button class="avatar-wrapper">
<image class="avatar" src="{{params.Img}}"></image>
</button>
<view class="wrap">
<view class="nickname">{{params.Name}}医生</view>
<view class="hostipal">
{{params.HospitalName}}
<view class="tag" wx:if="{{params.HospitalClassificationName || params.HospitalLevel}}">
{{params.HospitalClassificationName}}{{params.HospitalLevel}}
</view>
</view>
</view>
</view>
</view>
</view>
<view class="popup2" wx:if="{{type==='popup2'}}">
<image class="p-img" src="{{imageUrl}}bg5.png?t={{Timestamp}}" show-menu-by-longpress></image>
</view>
<view class="popup3" wx:if="{{type==='popup3'}}">
<image class="p-img" src="{{imageUrl}}bg6.png?t={{Timestamp}}" show-menu-by-longpress></image>
</view>
<view class="popup4" wx:if="{{type==='popup4'}}">
<image class="p-img" src="{{imageUrl}}bg7.png?t={{Timestamp}}" show-menu-by-longpress></image>
</view>
<view class="popup5" wx:if="{{type==='popup5'}}">
<view
class="container"
style="background: url('{{imageUrl}}bg9.png?t={{Timestamp}}') no-repeat bottom center/100% 804rpx"
>
<view class="title">
<view class="tag">转发</view>
报告至
</view>
<view class="content">"文件传输助手"完成下载</view>
<view class="btn" bind:tap="handleOk">继续</view>
</view>
</view>
<view class="popup6" wx:if="{{type==='popup6'}}">
<image class="p-img" src="{{imageUrl}}bg32.png?t={{Timestamp}}"></image>
<image class="code" src="{{params.qrCode}}" show-menu-by-longpress></image>
</view>
<view class="popup7" wx:if="{{type==='popup7'}}">
<image class="badge" src="{{imageUrl}}icon78.png?t={{Timestamp}}"></image>
<view class="contaienr">
<view class="content">要删除这张照片吗 ?</view>
<view class="footer">
<view class="cancel" bind:tap="handleCancel">取消</view>
<view class="sure" bind:tap="handleOk">确定</view>
</view>
</view>
</view>
<view class="popup8" wx:if="{{type==='popup8'}}">
<image class="p-img" src="{{imageUrl}}bg23.png?t={{Timestamp}}"></image>
<image class="code" src="{{params.subscribe_img}}" show-menu-by-longpress></image>
</view>
<view class="popup11" wx:if="{{type==='popup11'}}">
<view class="title">我已阅读并同意</view>
<view class="content">
<text class="link" bind:tap="routerTo" data-url="/doc/pages/doc1/index">《隐私政策》</text>
</view>
<view class="footer">
<view class="cancel" bind:tap="handleCancel">取消</view>
<view wx:if="{{params.customPhone}}" class="sure" bind:tap="handleOk">确定</view>
<button wx:else class="sure" open-type="getPhoneNumber" bindgetphonenumber="handlePhone">确定</button>
</view>
</view>
<view class="popup9" wx:if="{{type==='popup9'}}">
<image class="icon" src="{{imageUrl}}icon100.png?t={{Timestamp}}"></image>
<view class="title">
文字包含不合规内容
<view></view>
请修改后重新提交
</view>
<view class="btn" bind:tap="handleOk">知道了</view>
</view>
<view class="popup10" wx:if="{{type==='popup10'}}">
<view class="title">我已阅读并同意</view>
<view class="content">
<text class="link" bind:tap="routerTo" data-path="/doc/pages/doc2/index?active=1">《用户协议》</text>
<text class="link" bind:tap="routerTo" data-path="/doc/pages/doc2/index">《隐私政策》</text>
<view></view>
<text class="link" bind:tap="routerTo" data-path="/doc/pages/doc2/index?active=2">《个人信息共享知情同意书》</text>
</view>
<view class="footer">
<view class="cancel" bind:tap="handleCancel">取消</view>
<button class="sure" open-type="getPhoneNumber" bindgetphonenumber="handlePhone">确定</button>
</view>
</view>
<view class="popup12" wx:if="{{type==='popup12'}}">
<view
class="popup-container"
style="background: url('{{imageUrl}}bg29.png?t={{Timestamp}}') no-repeat top center/100%"
>
<view class="container">
<view class="c-header">
<image class="avatar" src="{{params.ConsultQwAvatar}}"></image>
<view class="name">{{params.ConsultQwName}}</view>
</view>
<image class="code" mode="aspectFill" src="{{params.ConsultQwImg}}" show-menu-by-longpress></image>
<view class="tip">
长按识别二维码
<view></view>
添加客服人员
</view>
</view>
</view>
</view>
<view class="popup13" wx:if="{{type==='popup13'}}">
<view class="popup-container">
<view class="title">了解双通道/临采/院内用药</view>
<view class="scroll">
<view class="s-title">什么是"双通道"?</view>
<view class="content">
"双通道"是指除了医院,患者还能去
<text class="high">指定药店</text>
买药,而且
<text class="high">报销比例和医院一样。</text>
</view>
<view class="s-name">"双通道"报销需要注意以下两点</view>
<view class="row">
<view class="col">
<view class="order">1</view>
<view class="c-content">
外配处方通常存在
<text class="high">有效期</text>
,我们要在有效期内去药店购药;
</view>
</view>
<view class="col">
<view class="order">2</view>
<view class="c-content">
药店必须是纳入"双通道"管理的
<text class="high">定点药店</text>
,才能享受同等报销待遇。
</view>
</view>
</view>
<view class="s-title">什么是"临采"?</view>
<view class="content">
"临采"全称是临时采购,适用场景主要是:医院暂时缺货、有突发的治疗需求、或者有特种病例需要紧急用药的情况。
</view>
<view class="content">
整个流程有
<text class="high">明确的时间限制</text>
,是短期解决"缺药"问题的办法,
<text class="high">不适合长期</text>
常规用药。
</view>
<view class="s-title">什么是"院内用药"?</view>
<view class="content">
院内用药就是"在医院看诊-拿药-直接报销"的一站式全流程,也是最传统、最省心的方式,全程
<text class="high">自动报销</text>
</view>
<view class="s-name">"院内用药"报销需满足两个条件</view>
<view class="row">
<view class="col">
<view class="order">1</view>
<view class="c-content">
医院必须是
<text class="high">医保定点机构</text>
</view>
</view>
<view class="col">
<view class="order">2</view>
<view class="c-content">
医生开具的处方要符合药品说明书适应症和医保限定支付范围(即:
<text class="high">中重度甲状腺眼病</text>
)。
</view>
</view>
</view>
</view>
<view class="btn" bind:tap="handleOk">了解更多详情</view>
</view>
</view>
<view class="popup14" wx:if="{{type==='popup14'}}">
<image class="badge" src="{{imageUrl}}icon131.png?t={{Timestamp}}"></image>
<view class="popup-container">
<view class="title">访问直播活动页需切换至患者端</view>
<view class="content">请问是否继续</view>
<view class="btn" bind:tap="handleOk">继续</view>
</view>
</view>
<view class="popup15" wx:if="{{type==='popup15'}}">
<image class="badge" src="{{imageUrl}}icon155.png?t={{Timestamp}}"></image>
<view class="popup-container">
<view class="title">确认删除记录?</view>
<view class="content">
删除
<text class="date">{{params.recordDate}}</text>
记录
<view>此操作不可逆,相关照片将永久删除</view>
</view>
<view class="btn" bind:tap="handleOk">确认删除</view>
<view class="cancel" bind:tap="handleCancel">取消</view>
</view>
</view>
<view class="popup16" wx:if="{{type==='popup16'}}">
<image class="badge" src="{{imageUrl}}icon156.png?t={{Timestamp}}"></image>
<view class="popup-container">
<view class="title">您的记录还未保存</view>
<view class="p-footer">
<view class="cancel" bind:tap="handleCancel">退出</view>
<view class="sure" bind:tap="handleOk">保存记录</view>
</view>
</view>
</view>
<view class="popup17" wx:if="{{type==='popup17'}}">
<image class="badge" src="{{imageUrl}}icon156.png?t={{Timestamp}}"></image>
<view class="popup-container">
<view class="title">
您有裁剪的照片
<view></view>
现在退出会被清空
</view>
<view class="p-footer">
<view class="cancel" bind:tap="handleCancel">取消</view>
<view class="sure" bind:tap="handleOk">继续退出</view>
</view>
</view>
</view>
<view class="popup18" wx:if="{{type==='popup18'}}">
<image class="badge" src="{{imageUrl}}icon156.png?t={{Timestamp}}"></image>
<view class="popup-container">
<view class="title">
是否替换已有基准照
</view>
<view class="p-footer">
<view class="cancel" bind:tap="handleCancel">取消</view>
<view class="sure" bind:tap="handleOk">确认替换</view>
</view>
</view>
</view>
<image
wx:if="{{params.close}}"
class="close"
src="{{imageUrl}}icon11.png?t={{Timestamp}}"
bind:tap="handleCancel"
></image>
</van-popup>

4
src/custom-tab-bar/index.scss

@ -10,10 +10,10 @@ @@ -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);
}
}
}

23
src/custom-tab-bar/index.ts

@ -16,23 +16,17 @@ Component({ @@ -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({ @@ -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({ @@ -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({ @@ -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,

2
src/custom-tab-bar/index.wxml

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
<van-tabbar active="{{ active }}" active-color="#CF5375" bind:change="onChange" inactive-color="#CCCCCC">
<van-tabbar active="{{ active }}" active-color="rgba(14, 182, 109, 1)" bind:change="onChange" inactive-color="#CCCCCC">
<block wx:for="{{list}}" wx:key="*this">
<van-tabbar-item
class="tab-item"

5
src/doctor/components/tabbar/index.json

@ -1,7 +1,4 @@ @@ -1,7 +1,4 @@
{
"component": true,
"usingComponents": {
"van-tabbar": "@vant/weapp/tabbar/index",
"van-tabbar-item": "@vant/weapp/tabbar-item/index"
}
"usingComponents": {}
}

76
src/doctor/components/tabbar/index.scss

@ -1,9 +1,71 @@ @@ -1,9 +1,71 @@
.tabbar-item {
width: 25%;
font-size: 20rpx;
color: rgba(103, 113, 114, 1);
.icon {
width: 45rpx;
height: 45rpx;
.tabbar {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
padding: 0 0 calc(env(safe-area-inset-bottom) + 12rpx);
display: flex;
justify-content: space-between;
background-color: #fff;
box-shadow: 0rpx 3rpx 27rpx 0rpx rgba(40, 48, 49, 0.1);
.tab-item {
position: relative;
padding-top: 10rpx;
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.icon-wrap {
position: relative;
width: 48rpx;
height: 48rpx;
.icon {
display: block;
width: 100%;
height: 100%;
}
.icon-active {
display: none;
width: 100%;
height: 100%;
}
.dot {
position: absolute;
top: -8rpx;
right: -16rpx;
padding: 0 8rpx;
min-width: 32rpx;
height: 32rpx;
text-align: center;
font-size: 20rpx;
line-height: 32rpx;
color: #ffffff;
border: 2rpx solid #ffffff;
border-radius: 16rpx;
background: #ef3939;
box-sizing: border-box;
}
}
.name {
margin-top: 8rpx;
font-size: 22rpx;
color: rgba(103, 113, 114, 1);
line-height: 21rpx;
}
&.active {
.icon-wrap {
.icon {
display: none;
}
.icon-active {
display: block;
}
}
.name {
color: rgba(98, 190, 208, 1);
}
}
}
}

31
src/doctor/components/tabbar/index.ts

@ -1,26 +1,16 @@ @@ -1,26 +1,16 @@
const app = getApp<IAppOption>()
// 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({ @@ -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,
})

34
src/doctor/components/tabbar/index.wxml

@ -1,22 +1,12 @@ @@ -1,22 +1,12 @@
<van-tabbar
active="{{ active }}"
bind:change="onChange"
inactive-color="rgba(103, 113, 114, 1)"
active-color="rgba(98, 190, 208, 1)"
>
<van-tabbar-item
class="tabbar-item"
wx:for="{{tablist}}"
wx:key="name"
info="{{index===2 && unReadCount>0 ? unReadCount : ''}}"
>
<image slot="icon" src="{{imageUrl}}/doctor/tabbar/{{index+1}}.png?t={{Timestamp}}" mode="aspectFit" class="icon" />
<image
slot="icon-active"
src="{{imageUrl}}/doctor/tabbar/{{index+1}}-active.png?t={{Timestamp}}"
mode="aspectFit"
class="icon"
/>
{{item.name}}
</van-tabbar-item>
</van-tabbar>
<view class="tabbar">
<block wx:for="{{tablist}}" wx:key="name">
<view class="tab-item {{active===index && 'active'}}" bind:tap="handleTab" data-index="{{index}}">
<view class="icon-wrap">
<view class="dot" wx:if="{{index===2 && unReadCount>0}}">{{unReadCount > 99 ? '99+' : unReadCount}}</view>
<image class="icon" src="{{imageUrl}}/doctor/tabbar/{{index+1}}.png?t={{Timestamp}}"></image>
<image class="icon-active" src="{{imageUrl}}/doctor/tabbar/{{index+1}}-active.png?t={{Timestamp}}"></image>
</view>
<view class="name">{{item.name}}</view>
</view>
</block>
</view>

4
src/doctor/pages/d_changeDoctor/index.ts

@ -29,7 +29,7 @@ Page({ @@ -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({ @@ -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,

6
src/doctor/pages/d_changePhone/index.ts

@ -15,7 +15,7 @@ Page({ @@ -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({ @@ -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({ @@ -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,

10
src/doctor/pages/d_createTask/index.ts

@ -80,7 +80,7 @@ Page({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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(() => {

2
src/doctor/pages/d_customExport/index.ts

@ -23,7 +23,7 @@ Page({ @@ -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,

4
src/doctor/pages/d_exportList/index.ts

@ -29,7 +29,7 @@ Page({ @@ -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({ @@ -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,
},

3
src/doctor/pages/d_home/index.json

@ -2,8 +2,7 @@ @@ -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",

460
src/doctor/pages/d_home/index.scss

@ -1,23 +1,15 @@ @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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;
}
}
}
}

821
src/doctor/pages/d_home/index.ts

@ -6,8 +6,6 @@ let echarts: any = null @@ -6,8 +6,6 @@ let echarts: any = null
Page({
data: {
fold4: false,
fold5: false,
top: 0,
bottom: 0,
ec: {
@ -22,24 +20,11 @@ Page({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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',
})
},
})

275
src/doctor/pages/d_home/index.wxml

@ -1,10 +1,5 @@ @@ -1,10 +1,5 @@
<view
class="page"
style="padding-top: {{top+25}}px;background: url({{imageUrl}}/doctor/home-bg.png?t={{Timestamp}}) no-repeat top center / 100% 740rpx"
>
<navBar background="{{background}}" slotLeft="{{true}}" fixed home="{{false}}">
<image slot="left" class="page-title" src="{{imageUrl}}/doctor/home-title.png?t={{Timestamp}}"></image>
</navBar>
<view class="page">
<pageNavbar></pageNavbar>
<view class="user">
<image class="avatar" mode="aspectFill" src="{{doctor.Img}}"></image>
<view class="wrap">
@ -14,36 +9,14 @@ @@ -14,36 +9,14 @@
<view class="tag">{{hospital.HospitalClassificationName}}{{hospital.HospitalLevelName}}</view>
</view>
</view>
<view class="export" bind:tap="handleExport">
<view class="btn">
<image class="icon" src="{{imageUrl}}/doctor/export.png?t={{Timestamp}}"></image>
报告中心
</view>
<view class="tip">
每周五报告更新
<view class="hover" wx:if="{{adlReadStatus}}">您的ADL报告(截至 {{statDate}})已生成</view>
</view>
</view>
</view>
<view class="transfer" bind:tap="handleTransfer">
<image class="icon" src="{{imageUrl}}icon23.png?t={{Timestamp}}"></image>
<view class="name">推荐转诊</view>
<image class="more" src="{{imageUrl}}icon24.png?t={{Timestamp}}"></image>
<view class="hover" wx:if="{{doctor.TipStatus==1}}" catch:tap="handleTransferLog">您推荐的医生有患者复诊</view>
</view>
<view class="data-tip">统计数据截止到昨天</view>
<view class="new-banner">
<view class="item" bind:tap="handlePatient" data-type="1" data-name="累计邀约患者">
<image class="icon" src="{{imageUrl}}5/d_home_icon1.png?t={{Timestamp}}"></image>
<image class="icon" src="/images/icon53.png"></image>
<view class="wrap">
<view class="title">
累计邀约
<image
catch:tap="handleQuestion"
data-id="1"
class="question"
src="{{imageUrl}}/doctor/icon-question.png?t={{Timestamp}}"
></image>
<van-icon catch:tap="handleQuestion" data-id="1" name="question" color="rgba(33, 33, 32, 0.30)" />
</view>
<view class="num">
{{detail.InvitePCount}}
@ -52,16 +25,11 @@ @@ -52,16 +25,11 @@
</view>
</view>
<view class="item" bind:tap="handlePatient" data-type="3" data-name="{{detail.yr}}年激活患者">
<image class="icon" src="{{imageUrl}}5/d_home_icon2.png?t={{Timestamp}}"></image>
<image class="icon" src="/images/icon54.png"></image>
<view class="wrap">
<view class="title">
{{detail.yr}}年激活
<image
catch:tap="handleQuestion"
data-id="2"
class="question"
src="{{imageUrl}}/doctor/icon-question.png?t={{Timestamp}}"
></image>
<van-icon catch:tap="handleQuestion" data-id="2" name="question" color="rgba(33, 33, 32, 0.30)" />
</view>
<view class="num">
{{detail.YearActivePCount}}
@ -69,120 +37,6 @@ @@ -69,120 +37,6 @@
</view>
</view>
</view>
<view class="item" bind:tap="handlePatient" data-type="2" data-name="本月新增患者">
<image class="icon" src="{{imageUrl}}5/d_home_icon3.png?t={{Timestamp}}"></image>
<view class="wrap">
<view class="title">
本月新增
<image
catch:tap="handleQuestion"
data-id="3"
class="question"
src="{{imageUrl}}/doctor/icon-question.png?t={{Timestamp}}"
></image>
</view>
<view class="num">
{{detail.MonthInvitePCount}}
<text class="sub">人</text>
</view>
</view>
</view>
<view class="item" bind:tap="handlePatient" data-type="4" data-name="需随访患者">
<image class="icon" src="{{imageUrl}}5/d_home_icon4.png?t={{Timestamp}}"></image>
<view class="wrap">
<view class="title">
需随访
<image
catch:tap="handleQuestion"
data-id="4"
class="question"
src="{{imageUrl}}/doctor/icon-question.png?t={{Timestamp}}"
></image>
</view>
<view class="num">
{{detail.YearNeedFollowPCount}}
<text class="sub">人</text>
</view>
</view>
</view>
</view>
<view class="new-sub-banner">
<view class="year" style="background: url('{{imageUrl}}/5/year-bg.png?t={{Timestamp}}') no-repeat top center/100%">
{{detail.year}}年
</view>
<view class="n-container">
<view class="item" bind:tap="handlePatient" data-type="6" data-name="ADL规律评估患者">
<view class="wrap">
<view class="title">
ADL规律评估率
<image
catch:tap="handleQuestion"
data-id="5"
class="question"
src="{{imageUrl}}/doctor/icon-question1.png?t={{Timestamp}}"
></image>
</view>
<view class="num">
{{detail.MonthRegularAssessRate}}
<text class="sub">%</text>
</view>
</view>
</view>
<view class="item" bind:tap="handlePatient" data-type="5" data-name="复诊患者">
<view class="wrap">
<view class="title">
复诊率
<image
catch:tap="handleQuestion"
data-id="6"
class="question"
src="{{imageUrl}}/doctor/icon-question1.png?t={{Timestamp}}"
></image>
</view>
<view class="num">
{{detail.MonthReVisitRate}}
<text class="sub">%</text>
</view>
</view>
</view>
<view class="item" bind:tap="handlePatient" data-type="7" data-name="疗效达标患者">
<view class="wrap">
<view class="title">
疗效达标率
<image
catch:tap="handleQuestion"
data-id="7"
class="question"
src="{{imageUrl}}/doctor/icon-question1.png?t={{Timestamp}}"
></image>
</view>
<view class="num">
{{detail.YearAdlStandardRate}}
<text class="sub">%</text>
</view>
</view>
</view>
<view class="item" bind:tap="handlePatient" data-type="8" data-name="双达标患者">
<view class="wrap">
<view class="title">
双达标率
<image
catch:tap="handleQuestion"
data-id="8"
class="question"
src="{{imageUrl}}/doctor/icon-question1.png?t={{Timestamp}}"
></image>
</view>
<view class="num">
{{detail.YearDoubleStandardRate}}
<text class="sub">%</text>
</view>
</view>
</view>
</view>
<view class="tip" wx:if="{{detail.YearAdlStandardSortRate>0}}">
您已超过全国{{detail.YearAdlStandardSortRate}}%的医生
</view>
</view>
<view class="page-container">
<view class="card">
@ -206,7 +60,7 @@ @@ -206,7 +60,7 @@
model:value="{{year1}}"
>
{{year1}}年
<image class="icon" src="{{imageUrl}}/doctor/triangle-down.png?t={{Timestamp}}"></image>
<image class="icon" src="/images/icon55.png"></image>
</picker>
<view class="tip">统计数据截止昨天</view>
</view>
@ -222,121 +76,6 @@ @@ -222,121 +76,6 @@
</block>
</view>
</view>
<view class="card">
<view class="switch">
<view class="switch-item {{tab2===0 && 'active'}}" bind:tap="handleTab2" data-index="{{0}}">
月度激活患者数
</view>
<view class="switch-item {{tab2===1 && 'active'}}" bind:tap="handleTab2" data-index="{{1}}">
累计激活患者数
</view>
</view>
<view class="chart">
<view class="chart-header">
<picker
class="select-year"
mode="date"
fields="year"
start="{{startData}}"
end="{{endDate}}"
bind:change="handleSelectYear2"
model:value="{{year2}}"
>
{{year2}}年
<image class="icon" src="{{imageUrl}}/doctor/triangle-down.png?t={{Timestamp}}"></image>
</picker>
<view class="tip">统计数据截止昨天</view>
</view>
<block wx:if="{{tab2===0}}">
<view class="chart-container">
<ec-canvas id="chart2_1" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
</block>
<block wx:if="{{tab2===1}}">
<view class="chart-container">
<ec-canvas id="chart2_2" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
</block>
</view>
</view>
<view class="card">
<view class="switch">
<view class="switch-item {{tab3===0 && 'active'}}" bind:tap="handleTab3" data-index="{{0}}">
月度规律评估患者数
</view>
<view class="switch-item {{tab3===1 && 'active'}}" bind:tap="handleTab3" data-index="{{1}}">
累计规律评估患者数
</view>
</view>
<view class="chart">
<view class="chart-header">
<picker
class="select-year"
mode="date"
fields="year"
start="{{startData}}"
end="{{endDate}}"
bind:change="handleSelectYear3"
model:value="{{year3}}"
>
{{year3}}年
<image class="icon" src="{{imageUrl}}/doctor/triangle-down.png?t={{Timestamp}}"></image>
</picker>
<view class="tip">统计数据截止昨天</view>
</view>
<block wx:if="{{tab3===0}}">
<view class="chart-container">
<ec-canvas id="chart3_1" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
</block>
<block wx:if="{{tab3===1}}">
<view class="chart-container">
<ec-canvas id="chart3_2" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
</block>
</view>
</view>
<view class="card">
<view class="card-title" bind:tap="handleFoldToggle4">
<view class="wrap">
<image class="icon" src="{{imageUrl}}/doctor/icon-title-lable.png?t={{Timestamp}}"></image>
疗效达标率
</view>
<view class="fold">
{{ fold4? '展开' : '收起' }}
<image class="icon" src="{{imageUrl}}/doctor/icon-circle-{{fold4?'down':'up'}}.png?t={{Timestamp}}"></image>
</view>
</view>
<view class="fold-container {{fold4? '':'unfold-container'}}">
<view class="chart">
<view class="chart-container">
<ec-canvas id="chart4_1" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
<view class="tip">未次ADL 0或1的患者数/年激活患者数</view>
</view>
</view>
</view>
<view class="card">
<view class="card-title" bind:tap="handleFoldToggle5">
<view class="wrap">
<image class="icon" src="{{imageUrl}}/doctor/icon-title-lable.png?t={{Timestamp}}"></image>
双达标率
</view>
<view class="fold">
{{ fold5? '展开' : '收起' }}
<image class="icon" src="{{imageUrl}}/doctor/icon-circle-{{fold5?'down':'up'}}.png?t={{Timestamp}}"></image>
</view>
</view>
<view class="fold-container {{fold5? '':'unfold-container'}}">
<view class="chart">
<view class="chart-container">
<ec-canvas id="chart5_1" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
<view class="tip">未次ADL 0或1且激素≤5mg/天的患者数/年激活患者数</view>
</view>
</view>
</view>
</view>
</view>

7
src/doctor/pages/d_interactive/index.json

@ -1,9 +1,6 @@ @@ -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"
}
}

115
src/doctor/pages/d_interactive/index.scss

@ -1,5 +1,5 @@ @@ -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 { @@ -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 { @@ -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 { @@ -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;

26
src/doctor/pages/d_interactive/index.ts

@ -14,11 +14,12 @@ Page({ @@ -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({ @@ -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({ @@ -68,9 +59,6 @@ Page({
count: res.count,
},
})
const header = this.selectComponent('#tabbar')
header.getList() //子组件的方法
})
},
onReachBottom() {
@ -80,7 +68,7 @@ Page({ @@ -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({ @@ -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({ @@ -116,8 +104,6 @@ Page({
}
}),
})
const header = this.selectComponent('#tabbar')
header.getList() //子组件的方法
})
}
},

22
src/doctor/pages/d_interactive/index.wxml

@ -1,24 +1,20 @@ @@ -1,24 +1,20 @@
<view class="page">
<view
class="page-header"
style="background:#fff url({{imageUrl}}/doctor/d_patient-bg.png?t={{Timestamp}}) no-repeat top center/100% 456rpx"
>
<navBar title="互动" back home="{{false}}" bind:back="handleBack"></navBar>
<view class="page-header">
<view class="wrap">
<view class="search">
<image class="icon" src="{{imageUrl}}/doctor/icon-search.png?t={{Timestamp}}"></image>
<image class="icon" src="{{imageUrl}}icon43.png?t={{Timestamp}}"></image>
<input
type="text"
class="input"
placeholder-class="input-place"
placeholder="搜索姓名、手机号"
placeholder="可根据姓名、手机号搜索患者"
model:value="{{search}}"
confirm-type="search"
bindconfirm="handleSearch"
bind:tap="handleTapSearch"
/>
</view>
<image class="clear" src="{{imageUrl}}/doctor/icon-clear.png?t={{Timestamp}}" bind:tap="hancleClaer"></image>
<!-- <image class="clear" src="{{imageUrl}}icon47.png?t={{Timestamp}}" bind:tap="hancleClaer"></image> -->
</view>
<!-- <view class="navbar"> -->
<!-- <view class="nav {{!active && 'active'}}" bind:tap="handleNav" data-active=""> -->
@ -37,7 +33,7 @@ @@ -37,7 +33,7 @@
<view class="list-item" wx:for="{{list}}" wx:key="index" bind:tap="handleDetail" data-index="{{index}}">
<view class="avatar">
<image class="a-img" src="{{item.userAvatar}}"></image>
<view class="dot" wx:if="{{item.msgReadStatus==='2'}}"></view>
<view class="dot" wx:if="{{item.unReadCount>0}}">{{item.unReadCount> 99 ? '99+' : item.unReadCount}}</view>
</view>
<view class="wrap">
<view class="w-header">
@ -45,15 +41,11 @@ @@ -45,15 +41,11 @@
<view class="name" wx:else>{{item.Telephone}}</view>
<view class="date">{{item.msgCreateTime}}</view>
</view>
<view class="tags">
<view class="tag" wx:for="{{item.Tags}}" wx:for-item="tag" wx:for-index="tIndex" wx:key="tIndex">
{{tag}}
</view>
</view>
<view class="content">{{item.msgContent}}</view>
</view>
</view>
<pagination pagination="{{pagination}}"></pagination>
</view>
</view>
<tabbar id="tabbar" active="{{2}}"></tabbar>
<tabbar active="{{2}}"></tabbar>

4
src/doctor/pages/d_interactiveDoctor/index.json

@ -2,6 +2,8 @@ @@ -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"
}
}

621
src/doctor/pages/d_interactiveDoctor/index.scss

@ -3,168 +3,47 @@ page { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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;
}
}

260
src/doctor/pages/d_interactiveDoctor/index.ts

@ -4,15 +4,16 @@ const app = getApp<IAppOption>() @@ -4,15 +4,16 @@ const app = getApp<IAppOption>()
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 { @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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',
})
},
})
},

273
src/doctor/pages/d_interactiveDoctor/index.wxml

@ -1,122 +1,14 @@ @@ -1,122 +1,14 @@
<view class="page">
<view class="page" bind:tap="handleHideKeyboard">
<view class="page-header">
<view class="user">
<image class="avatar" src="{{patientDetail.userAvatar}}"></image>
<view class="wrap">
<view class="name">
<view class="left">
{{patientDetail.patientName}}
<view
class="tip"
wx:if="{{patientDetail.patientNameInit==='2'}}"
bind:tap="handleSendUserConform"
data-id="6"
>
提醒补充真实姓名
</view>
</view>
<view class="detail" bind:tap="handlePatientDetail">
患者档案
<van-icon name="arrow" />
</view>
</view>
<view class="tags">
<view class="tag" wx:for="{{patientDetail.Tags}}" wx:for-item="tag" wx:for-index="tIndex" wx:key="tIndex">
{{tag}}
</view>
</view>
</view>
</view>
<view class="adl" wx:if="{{patientDetail.LastAdlTime}}">
<view class="a-header">
<view class="content">最近一次测评:{{patientDetail.LastAdlTimeName}}</view>
<view class="box"></view>
</view>
<view class="a-content">
<view class="row" wx:if="{{patientDetail.AdlScore}}">
<view class="label">最新ADL评分</view>
<view class="num">{{patientDetail.AdlScore}}</view>
<view class="tag" wx:if="{{patientDetail.AdlScore<=1}}">
<view class="t-label">
<image class="icon" src="{{imageUrl}}/doctor/icon-success.png?t={{Timestamp}}"></image>
已达标
</view>
<view class="t-content" wx:if="{{patientDetail.TotalScoreChange*1!=0}}">
<image
wx:if="{{patientDetail.TotalScoreChange<=0}}"
class="icon"
src="{{imageUrl}}/doctor/icon-down-success.png?t={{Timestamp}}"
></image>
<image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-success.png?t={{Timestamp}}"></image>
{{patientDetail.TotalScoreChange}}
</view>
</view>
<view class="tag tag-warn" wx:elif="{{patientDetail.AdlScore<=5}}">
<view class="t-label">
<image class="icon" src="{{imageUrl}}/doctor/icon-warn.png?t={{Timestamp}}"></image>
接近达标
</view>
<view class="t-content" wx:if="{{patientDetail.TotalScoreChange*1!=0}}">
<image
wx:if="{{patientDetail.TotalScoreChange<=0}}"
class="icon"
src="{{imageUrl}}/doctor/icon-down-warn.png?t={{Timestamp}}"
></image>
<image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-warn.png?t={{Timestamp}}"></image>
{{patientDetail.TotalScoreChange}}
</view>
</view>
<view class="tag tag-error" wx:else>
<view class="t-label">
<image class="icon" src="{{imageUrl}}/doctor/icon-error.png?t={{Timestamp}}"></image>
待达标
</view>
<view class="t-content" wx:if="{{patientDetail.TotalScoreChange*1!=0}}">
<image
wx:if="{{patientDetail.TotalScoreChange<=0}}"
class="icon"
src="{{imageUrl}}/doctor/icon-down-error.png?t={{Timestamp}}"
></image>
<image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-error.png?t={{Timestamp}}"></image>
{{patientDetail.TotalScoreChange}}
</view>
</view>
</view>
<view class="row" wx:if="{{patientDetail.SteroidDailyDose}}">
<view class="label">最新激素用量</view>
<view class="num">{{patientDetail.SteroidDailyDose}}mg</view>
<view class="tag" wx:if="{{patientDetail.SteroidDailyDose<=5}}">
<view class="t-label">
<image class="icon" src="{{imageUrl}}/doctor/icon-success.png?t={{Timestamp}}"></image>
已达标
</view>
<view class="t-content" wx:if="{{patientDetail.SteroidDailyDoseChange*1!=0}}">
<image
wx:if="{{patientDetail.SteroidDailyDoseChange<=0}}"
class="icon"
src="{{imageUrl}}/doctor/icon-down-success.png?t={{Timestamp}}"
></image>
<image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-success.png?t={{Timestamp}}"></image>
{{patientDetail.SteroidDailyDoseChange}}mg
</view>
</view>
<view class="tag tag-error" wx:else>
<view class="t-label">
<image class="icon" src="{{imageUrl}}/doctor/icon-error.png?t={{Timestamp}}"></image>
待达标
</view>
<view class="t-content" wx:if="{{patientDetail.SteroidDailyDoseChange*1!=0}}">
<image
wx:if="{{patientDetail.SteroidDailyDoseChange<=0}}"
class="icon"
src="{{imageUrl}}/doctor/icon-down-error.png?t={{Timestamp}}"
></image>
<image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-error.png?t={{Timestamp}}"></image>
{{patientDetail.SteroidDailyDoseChange}}mg
</view>
</view>
<view class="left">{{patientDetail.patientName}}</view>
</view>
<view class="date">注册时间:{{patientDetail.BecomePatientTime}}</view>
</view>
<view class="detail" bind:tap="handlePatientDetail">查看档案</view>
</view>
</view>
<view class="page-container" id="page-container">
@ -143,47 +35,23 @@ @@ -143,47 +35,23 @@
<image class="a-img" src="{{patientDetail.userAvatar}}"></image>
</view>
<view class="p-container">
<view class="message" wx:if="{{message.msgContentType==='1'}}">{{message.msgContent}}</view>
<view class="referral-replay" wx:if="{{message.msgContentType==='9'}}">
<view class="title">我最近一次复诊时间是{{message.ReVisitInfo.visitDateName}}</view>
<view class="sub-title">我的方案是</view>
<view class="r-list">
<view class="item" wx:if="{{message.ReVisitInfo.hormone==1}}">1.激素</view>
<view class="item" wx:if="{{message.ReVisitInfo.traditionalInhibitor==1}}">
2.传统免疫抑制剂(如他克莫司、吗 替麦考酚酯等)
</view>
<view class="item" wx:if="{{message.ReVisitInfo.gammaGlobulin==1}}">3.静脉输注丙种球蛋白</view>
<view class="item" wx:if="{{message.ReVisitInfo.plasmaExchange==1}}">4.血浆置换</view>
<view class="item" wx:if="{{message.ReVisitInfo.bCellInhibitor==1}}">
5.B细胞抑制剂(如:利妥昔单抗、泰 它西普、伊奈利珠单抗)
</view>
<view class="item" wx:if="{{message.ReVisitInfo.fcRnAntagonists==1}}">6.FcRn拮抗剂(如:艾加莫德)</view>
<view class="item" wx:if="{{message.ReVisitInfo.c5ComplementInhibitor==1}}">
7.C5补体抑制剂(如:依库珠单抗)
</view>
<view class="item" wx:if="{{message.ReVisitInfo.chineseMedicine==1}}">8.中药或中成药</view>
<view class="item" wx:if="{{message.ReVisitInfo.other==1}}">9.其他</view>
</view>
</view>
<view class="message">{{message.msgContent}}</view>
</view>
</view>
<view class="doctor" wx:if="{{message.msgFromType==='2'}}">
<view class="d-container">
<view class="guide" wx:if="{{message.msgContentType==='5'}}">
<view class="title">{{message.welcomeMsg.title}}</view>
<view class="sub-title">{{message.welcomeMsg.questionDes}}</view>
<view class="title">以下是门诊常见提问,您也可以在对话框下方的"快速提问"里查询更多:</view>
<view class="list">
<view class="l-item" wx:for="{{message.welcomeMsg.hotQuestion}}" wx:key="questionId">
<view class="order">{{index+1}}</view>
<view class="content">{{item.question}}</view>
</view>
</view>
<view class="tip">
{{message.welcomeMsg.guideClick}}
<image class="icon" src="{{imageUrl}}/doctor/icon-down1.png?t={{Timestamp}}"></image>
</view>
</view>
<view class="message" wx:elif="{{message.msgContentType==='1'}}">{{message.msgContent}}</view>
<block wx:elif="{{message.msgContentType==='1'|| message.msgContentType==='11' || message.msgContentType==='12'}}">
<view class="message">{{message.msgContent}}</view>
</block>
<view class="week" wx:elif="{{message.msgContentType==='2'}}">
<view class="w-title">以下是我的出诊时间</view>
<view class="w-container">
@ -196,70 +64,12 @@ @@ -196,70 +64,12 @@
</block>
</view>
</view>
<view
class="adl"
wx:elif="{{message.msgContentType==='3'}}"
style="padding-top: {{top+25}}px;background: url({{imageUrl}}/doctor/d_interactive-adl-bg.png?t={{Timestamp}}) no-repeat bottom right / 268rpx 222rpx,#D74D75;"
>
<image
class="title"
src="{{imageUrl}}/doctor/d_interactiveTitle1.png?t={{Timestamp}}"
mode="aspectFit"
></image>
<view class="sub-title">ADL+激素双达标</view>
<view class="btn" bind:tap="handleAdl">点击进入ADL</view>
<view class="tip">建议您定期做ADL测评</view>
</view>
<view
class="audio"
wx:elif="{{message.msgContentType==='4'}}"
bind:tap="handleAudio"
data-index="{{mIndex}}"
>
{{message.msgContent[0].duration}}''
<image
class="icon"
wx:if="{{message.isPlay}}"
src="{{imageUrl}}/doctor/audio-left.gif?t={{Timestamp}}"
mode="aspectFit"
></image>
<image
class="icon"
wx:else
src="{{imageUrl}}/doctor/audio-left.png?t={{Timestamp}}"
mode="aspectFit"
></image>
</view>
<view class="info" wx:elif="{{message.msgContentType==='6'}}">
<view class="content">{{message.msgContent}}</view>
<view class="btn">提交您的真实姓名</view>
</view>
<view class="info" wx:elif="{{message.msgContentType==='7'}}">
<view class="content">{{message.msgContent}}</view>
<view class="btn">完善个人信息</view>
</view>
<view class="referral" wx:elif="{{message.msgContentType==='8'}}">
<view class="r-header">
<view class="title">您最近有按照医生的 提醒,定期复诊吗?</view>
<image class="icon" src="{{imageUrl}}5/hostipal.png?t={{Timestamp}}"></image>
</view>
<view class="r-footer">
<view class="btn">已复诊</view>
</view>
</view>
<view class="trans" wx:elif="{{message.msgContentType==='10'}}">
<view class="user">
<image class="u-avatar" mode="aspectFill" src="{{message.msgContentInfo.doctorImg}}"></image>
<view class="wrap">
<view class="name">{{message.msgContentInfo.doctorName}}</view>
<view class="content">{{message.msgContentInfo.hospitalName}}</view>
</view>
</view>
<view class="tip">推荐好医生给你,建议2周内复诊</view>
<view class="adl" wx:elif="{{message.msgContentType==='10'}}">
<image class="adl-img" src="/images/bg20.png"></image>
</view>
</view>
<view class="avatar">
<image class="a-img" mode="aspectFill" src="{{imageUrl}}/5/doctor.png?t={{Timestamp}}"></image>
<image class="a-img" mode="aspectFill" src="{{doctor.Img}}"></image>
</view>
</view>
</view>
@ -267,22 +77,51 @@ @@ -267,22 +77,51 @@
</scroll-view>
</view>
<view class="page-footer">
<view class="send" bind:tap="handleSendShow">发送消息</view>
<view class="send-date" wx:if="{{patientDetail.patientInit==='2'}}" bind:tap="handleSendUserConform" data-id="7">
<image class="icon" src="{{imageUrl}}/3/icon-user.png?t={{Timestamp}}"></image>
<view>完善个人信息</view>
<view class="send" wx:if="{{doctor.IsOpenOneToOne==1}}">
<view class="content" catch:tap="handleInputShow">{{customMessage || '输入文字'}}</view>
<view class="btn" catch:tap="handleSendShow">快捷回复</view>
</view>
<view wx:else class="short-send" bind:tap="handleSendShow">发送消息</view>
<view class="send-date" bind:tap="handleSendDate">
<image class="icon" src="{{imageUrl}}/3/icon-send-date.png?t={{Timestamp}}"></image>
<view>我的出诊时间</view>
</view>
<view class="send-date" bind:tap="handleReferral">
<image class="icon" src="{{imageUrl}}5/icon-referral.png?t={{Timestamp}}"></image>
<view style="color: #67baca">复诊提醒</view>
<image class="icon" src="/images/icon56.png"></image>
<view>出诊时间</view>
</view>
</view>
</view>
<view wx:if="{{inputShow}}" class="custom-input {{maxTextArea && 'custom-input-max'}}">
<image
wx:if="{{maxTextArea}}"
class="icon"
src="{{imageUrl}}icon98.png?t={{Timestamp}}"
catch:tap="toggleMaxTextarea"
></image>
<image wx:else class="icon" src="{{imageUrl}}icon97.png?t={{Timestamp}}" catch:tap="toggleMaxTextarea"></image>
<view class="wrap" catch:tap="catchFooterInput">
<textarea
class="textarea"
model:value="{{customMessage}}"
focus="{{focus}}"
hold-keyboard
disable-default-padding
confirm-type="send"
adjust-keyboard-to="bottom"
maxlength="{{500}}"
placeholder="输入文字"
bind:blur="bindblur"
bindconfirm="handleConfirm"
>
<keyboard-accessory class="ka" hold-keyboard="{{true}}" style="background-color: #fff;">
<cover-view class="ka-container">
<cover-view class="stat {{customMessage.length==500 && 'red'}}">{{customMessage.length}}/500</cover-view>
<cover-view class="send-btn" bind:tap="handleConfirm">发送</cover-view>
</cover-view>
</keyboard-accessory>
</textarea>
<view class="w-footer"></view>
</view>
</view>
<van-popup
show="{{ messageListShow }}"
style="--popup-close-icon-color: #283031"
@ -292,7 +131,7 @@ @@ -292,7 +131,7 @@
closeable
>
<view class="popup-message">
<view class="title">发送消息</view>
<view class="title">快捷回复</view>
<view class="list">
<view
class="l-item {{wordIndex===index && 'active'}}"
@ -307,3 +146,11 @@ @@ -307,3 +146,11 @@
<view class="submit" bind:tap="handleSendWord">发送</view>
</view>
</van-popup>
<toast
show="{{popupShow}}"
type="{{popupType}}"
params="{{popupParams}}"
bind:ok="handlePopupOk"
bind:cancel="handlePopupCancel"
></toast>

1
src/doctor/pages/d_invite/index.scss

@ -1,5 +1,4 @@ @@ -1,5 +1,4 @@
page{
background-color: #c65174;
}
.page {
position: relative;

66
src/doctor/pages/d_invite/index.ts

@ -28,7 +28,7 @@ Page({ @@ -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({ @@ -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({ @@ -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() {

5
src/doctor/pages/d_login/index.json

@ -1,9 +1,8 @@ @@ -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"
}
}

54
src/doctor/pages/d_login/index.scss

@ -1,32 +1,39 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -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 @@ @@ -108,7 +116,7 @@
height: 32rpx;
}
.link {
color: rgba(67, 168, 188, 1);
color: rgba(22, 121, 203, 1);
}
}
.partient {

60
src/doctor/pages/d_login/index.ts

@ -3,6 +3,12 @@ let timer = null as null | number @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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({ @@ -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()
},

35
src/doctor/pages/d_login/index.wxml

@ -1,25 +1,23 @@ @@ -1,25 +1,23 @@
<view class="page" style="background: url({{imageUrl}}/bg4.png?t={{Timestamp}}) no-repeat top center / 100% 648rpx">
<navBar title="" fixed home="{{false}}" back="{{back}}" bind:back="handleBack"></navBar>
<view class="page">
<view class="container">
<image class="page-logo" src="/images/bg19.png"></image>
<view class="c-title">尊敬的医生您好</view>
<view class="content">gMG 给力加油站是中国罕见病联盟/北京罕见病诊疗与保障学会发起的gMG患者健康全程管理平台;</view>
<view class="content">“愈见昕生”是北京白求恩公益基金会发起的 IgG4-RD 患者健康管理平台。</view>
<view class="content">
在您加入gMG 给力加油站平台之前,请您阅读并充分理解
<text class="link" bind:tap="handleLink">《隐私协议保护政策》</text>
,了解您的权益及相关数据处理方法,我们将严格按照法律法规及
<text class="link" bind:tap="handleLink">《隐私协议保护政策》</text>
的相关规定,保证您的个人信息不受侵犯。
加入平台前,请您仔细阅读
<text class="link" bind:tap="handleLink">《隐私保护协议》</text>
,了解您的权益及个人信息处理方式。我们将严格依法保护您的个人信息安全。
</view>
</view>
<button wx:if="{{check}}" class="phone" open-type="getPhoneNumber" bindgetphonenumber="handleWxSubmit">
手机号快捷登录
</button>
<button wx:else class="phone" bind:tap="handleWxSubmit">手机号快捷登录</button>
<button wx:else class="phone" bind:tap="handleNoDoc">手机号快捷登录</button>
<view class="divider">
<van-divider contentPosition="center" textColor="rgba(207, 209, 213, 1)">或者</van-divider>
<van-divider contentPosition="center" textColor="rgba(33, 33, 32, 0.70)">或者</van-divider>
</view>
<view class="tel-code" bind:tap="handleTelCode">
<image class="icon" src="{{imageUrl}}/icon14.png?t={{Timestamp}}"></image>
<image class="icon" src="/images/icon51.png"></image>
手机号验证码
</view>
<view class="form" wx:if="{{showForm}}">
@ -45,11 +43,11 @@ @@ -45,11 +43,11 @@
<view class="submit" bind:tap="handleSubmit">立即加入</view>
</view>
<view class="check">
<image wx:if="{{check}}" class="icon" src="{{imageUrl}}icon12.png?t={{Timestamp}}" bind:tap="handleCheck"></image>
<image wx:if="{{check}}" class="icon" src="/images/icon52.png" bind:tap="handleCheck"></image>
<image wx:else class="icon" src="{{imageUrl}}icon13.png?t={{Timestamp}}" bind:tap="handleCheck"></image>
<view class="p">
特此同意依照此
<text class="link" bind:tap="handleLink">《隐私协议保护政策》</text>
我同意依照此
<text class="link" bind:tap="handleLink">《隐私政策》</text>
规定收集我的个人敏感信息
</view>
</view>
@ -58,3 +56,12 @@ @@ -58,3 +56,12 @@
<van-icon name="arrow" />
</view>
</view>
<toast
show="{{popupShow}}"
type="{{popupType}}"
params="{{popupParams}}"
bind:ok="handlePopupOk"
bind:phone="handleWxSubmit"
bind:cancel="handlePopupCancel"
></toast>

3
src/doctor/pages/d_my/index.json

@ -1,8 +1,7 @@ @@ -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"
}

167
src/doctor/pages/d_my/index.scss

@ -4,137 +4,88 @@ page { @@ -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;
}
}

39
src/doctor/pages/d_my/index.ts

@ -24,7 +24,7 @@ Page({ @@ -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({ @@ -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: '重症肌无力加油站,重拾生活掌控感!',

90
src/doctor/pages/d_my/index.wxml

@ -1,66 +1,50 @@ @@ -1,66 +1,50 @@
<view
class="page"
style="padding-top: {{top+5}}px;background: url({{imageUrl}}/doctor/my-bg.png?t={{Timestamp}}) no-repeat top center / 100% 740rpx"
>
<navBar title="" fixed home="{{false}}"></navBar>
<view class="container">
<view class="avatar">
<image class="avatar-user" mode="aspectFill" src="{{doctor.Img}}"></image>
</view>
<view class="name">{{doctor.Name}}</view>
<view class="card">
<view class="content">
<view class="page">
<view class="user-info">
<image class="avatar" mode="aspectFill" src="{{doctor.Img}}"></image>
<view class="user-detail">
<view class="name">{{doctor.Name}}</view>
<view class="hospital">
{{hospital.Name}}
<view class="tag">{{hospital.HospitalClassificationName}}{{hospital.HospitalLevelName}}</view>
</view>
<view
class="c-row"
wx:if="{{hospital.ProvinceName || hospital.CityName || hospital.CountyName || hospital.Address}}"
>
<image class="icon" src="{{imageUrl}}/doctor/icon-site.png?t={{Timestamp}}"></image>
{{hospital.ProvinceName}}{{hospital.CityName}}{{hospital.CountyName}}{{hospital.Address}}
</view>
<view class="c-row" wx:if="{{hospital.Telephone}}">
<image class="icon" src="{{imageUrl}}/doctor/icon-phone.png?t={{Timestamp}}"></image>
{{hospital.Telephone}}
<view class="tag" wx:if="{{hospital.HospitalClassificationName || hospital.HospitalLevelName}}">
{{hospital.HospitalClassificationName}}{{hospital.HospitalLevelName}}
</view>
</view>
</view>
<view class="row" wx:if="{{doctor.Introduce}}">
<image class="r-title" src="{{imageUrl}}/doctor/my-title1.png?t={{Timestamp}}"></image>
<view class="r-content">
<text-expandsion
text="{{doctor.Introduce}}"
color="rgba(154, 161, 163, 1)"
expend-color="#62BED0"
></text-expandsion>
</view>
<view class="invite-card" data-url="/doctor/pages/d_invite/index" bind:tap="handleRouter">
<image class="i-img" src="/images/bg21.png"></image>
</view>
<view class="menu-list">
<view class="menu-item" bind:tap="handleRouter" data-url="/doctor/pages/d_userInfo/index">
<view class="menu-left">
<image class="menu-icon" src="/images/icon57.png"></image>
<view class="menu-name">个人信息</view>
</view>
<van-icon class="menu-arrow" name="arrow" />
</view>
<view class="row" wx:if="{{doctor.weekName}}">
<image class="r-title" src="{{imageUrl}}/doctor/my-title2.png?t={{Timestamp}}"></image>
<view class="r-content pre-line">{{doctor.weekName}}</view>
<view class="menu-item" bind:tap="handlePrivacy">
<view class="menu-left">
<image class="menu-icon" src="/images/icon58.png"></image>
<view class="menu-name">隐私协议</view>
</view>
<van-icon class="menu-arrow" name="arrow" />
</view>
</view>
<view
class="invite"
style="background: url({{imageUrl}}/doctor/my-code.png?t={{Timestamp}}) no-repeat center left / 208rpx 152rpx,linear-gradient( 265deg, #E8F0F1 0%, #FFFFFF 100%);"
data-url="/doctor/pages/d_invite/index"
bind:tap="handleRouter"
>
<view class="wrap">
<view class="title">出示邀约码</view>
<view class="content">邀请患者加入你吧</view>
<view class="menu-item" bind:tap="handleFollow">
<view class="menu-left">
<image class="menu-icon" src="/images/icon59.png"></image>
<view class="menu-name">关注公众号</view>
</view>
<van-icon class="menu-arrow" name="arrow" />
</view>
<view class="btn">邀请患者</view>
</view>
<view class="list">
<view class="list-item" bind:tap="handleRouter" data-url="/doctor/pages/d_userInfo/index">
<view class="left">
<image class="icon" src="{{imageUrl}}/doctor/my-list-icon1.png?t={{Timestamp}}"></image>
<view class="name">个人信息</view>
<view class="menu-item" bind:tap="handleFeedback">
<view class="menu-left">
<image class="menu-icon" src="/images/icon60.png"></image>
<view class="menu-name">问题反馈</view>
</view>
<van-icon class="more" name="arrow" />
<van-icon class="menu-arrow" name="arrow" />
</view>
</view>
<view class="logout-btn" bind:tap="handleLogout">退出登录</view>
</view>
<tabbar active="{{3}}"></tabbar>

2
src/doctor/pages/d_patient/index.json

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
{
"navigationStyle": "custom",
"navigationBarTitleText": "患者列表",
"usingComponents": {
"tabbar": "../../components/tabbar/index",
"navBar": "/components/navBar/navBar",

250
src/doctor/pages/d_patient/index.scss

@ -11,18 +11,16 @@ page { @@ -11,18 +11,16 @@ page {
top: 0;
padding: 30rpx;
box-shadow: 0rpx 8rpx 16rpx 0rpx rgba(40, 48, 49, 0.04);
border-radius: 0 0 32rpx 32rpx;
z-index: 10;
background-color: #fff;
.search {
padding: 18rpx 32rpx;
padding: 16rpx 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;
.icon {
width: 40rpx;
@ -31,11 +29,11 @@ page { @@ -31,11 +29,11 @@ page {
.input {
flex: 1;
font-size: 28rpx;
font-size: 32rpx;
}
.input-place {
color: rgba(173, 179, 180, 1);
color: rgba(33, 33, 32, 0.3);
}
}
.navbar {
@ -43,13 +41,22 @@ page { @@ -43,13 +41,22 @@ page {
display: flex;
justify-content: space-between;
align-items: center;
gap: 16rpx;
overflow-y: scroll;
&::-webkit-scrollbar {
display: none;
}
.nav {
position: relative;
flex: 1;
padding: 6rpx 32rpx;
text-align: center;
font-size: 32rpx;
color: rgba(103, 113, 114, 1);
font-size: 36rpx;
color: rgba(34, 34, 34, 0.7);
transition: all 0.3s;
white-space: nowrap;
border-radius: 80rpx 80rpx 80rpx 80rpx;
border: 2rpx solid #f4f3f3;
.dot {
padding: 0 4rpx;
position: absolute;
@ -65,9 +72,10 @@ page { @@ -65,9 +72,10 @@ page {
background: rgba(215, 108, 108, 1);
}
&.active {
font-size: 32rpx;
color: rgba(98, 190, 208, 1);
color: rgba(22, 121, 203, 1);
font-weight: bold;
background-color: rgba(232, 244, 255, 1);
border-color: rgba(232, 244, 255, 1);
&::after {
position: absolute;
bottom: -30rpx;
@ -77,7 +85,6 @@ page { @@ -77,7 +85,6 @@ page {
width: 52rpx;
height: 8rpx;
border-radius: 24rpx 24rpx 0 0;
background: #62bed0;
}
}
}
@ -134,15 +141,18 @@ page { @@ -134,15 +141,18 @@ page {
.list-item {
margin-top: 24rpx;
padding: 36rpx 34rpx;
padding: 28rpx;
display: flex;
background: #ffffff;
border: 1px solid #f4f3f3;
border-radius: 24rpx 24rpx 24rpx 24rpx;
display: flex;
border: 2rpx solid #f4f3f3;
box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(0, 0, 0, 0.08);
.avatar {
flex-shrink: 0;
.avatar-img {
width: 100rpx;
height: 100rpx;
width: 111rpx;
height: 111rpx;
border-radius: 50%;
}
}
@ -154,59 +164,13 @@ page { @@ -154,59 +164,13 @@ page {
align-items: center;
justify-content: space-between;
.name {
font-size: 32rpx;
color: #283031;
font-size: 40rpx;
color: rgba(40, 48, 49, 1);
font-weight: bold;
}
.send {
padding: 8rpx 22rpx;
font-size: 24rpx;
color: #67baca;
line-height: 1;
border-radius: 32rpx 32rpx 32rpx 32rpx;
border: 2rpx solid rgba(103, 186, 202, 0.26);
display: flex;
align-items: center;
gap: 8rpx;
.icon {
width: 28rpx;
height: 28rpx;
}
}
}
.tags {
margin-top: 16rpx;
display: flex;
flex-wrap: wrap;
gap: 12rpx;
.tag {
padding: 4rpx 16rpx;
font-size: 22rpx;
color: #e59a29;
line-height: 28rpx;
background: #fff5df;
border-radius: 8rpx 8rpx 8rpx 8rpx;
}
}
.content {
margin-top: 24rpx;
display: flex;
align-items: center;
flex-wrap: wrap;
font-size: 28rpx;
color: #283031;
gap: 14rpx;
.line {
flex-shrink: 0;
width: 2rpx;
height: 32rpx;
background-color: #eaeced;
}
.blod {
font-weight: bold;
}
&.disable {
color: #9aa1a2;
.disease {
font-size: 32rpx;
color: rgba(22, 121, 203, 1);
}
}
.replay-date {
@ -214,156 +178,14 @@ page { @@ -214,156 +178,14 @@ page {
font-size: 28rpx;
color: #9aa1a2;
}
}
}
}
}
.popup {
padding: 92rpx 30rpx calc(30rpx + env(safe-area-inset-bottom));
.form {
max-height: 60vh;
overflow-y: auto;
overflow-x: hidden;
.form-item {
margin-bottom: 48rpx;
.f-title {
font-size: 36rpx;
color: rgba(40, 48, 49, 1);
font-weight: bold;
}
.select {
margin-top: 24rpx;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16rpx;
.s-item {
padding: 18rpx 0;
text-align: center;
border-radius: 12rpx;
font-size: 28rpx;
color: rgba(103, 113, 114, 1);
background: #f2f4f5;
&.active {
color: #fff;
background-color: rgba(103, 186, 202, 1);
}
}
}
.custom {
margin-top: 16rpx;
display: flex;
align-items: center;
gap: 12rpx;
.c-item {
padding: 18rpx 24rpx;
display: flex;
align-items: center;
.remark {
margin-top: 34rpx;
padding-top: 24rpx;
border-top: 1px solid rgba(244, 243, 243, 1);
font-size: 32rpx;
color: rgba(103, 113, 114, 1);
border-radius: 12rpx;
background-color: rgba(242, 244, 245, 1);
.input {
padding: 0;
margin: 0;
width: 3em;
font-size: 32rpx;
line-height: 1;
}
.input-place {
color: rgba(194, 201, 202, 1);
line-height: 1;
}
color: rgba(33, 33, 32, 1);
}
}
.date {
margin-top: 24rpx;
display: flex;
align-items: center;
justify-content: space-between;
.picker {
flex: 1;
.d-item {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
padding: 18rpx 32rpx;
background: #f7f8f9;
border-radius: 12rpx 12rpx 12rpx 12rpx;
.icon {
width: 32rpx;
height: 32rpx;
}
.content {
font-size: 32rpx;
color: #677172;
&:empty::after {
content: attr(data-place);
color: rgba(194, 201, 202, 1);
}
}
}
}
.sion {
flex-shrink: 0;
margin: 0 14rpx;
font-size: 32rpx;
color: #677172;
}
}
}
}
.p-footer {
margin-top: 32rpx;
display: flex;
justify-content: space-between;
align-items: center;
gap: 26rpx;
.reset {
flex: 1;
height: 84rpx;
font-size: 36rpx;
color: rgba(103, 186, 202, 1);
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
background: #ffffff;
border-radius: 98rpx 98rpx 98rpx 98rpx;
border: 2rpx solid #67baca;
}
.submit {
flex: 1;
height: 84rpx;
font-size: 36rpx;
color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
background: rgba(103, 186, 202, 1);
border-radius: 98rpx 98rpx 98rpx 98rpx;
}
}
}

6
src/doctor/pages/d_patient/index.ts

@ -110,9 +110,9 @@ Page({ @@ -110,9 +110,9 @@ Page({
search: this.data.Search,
}
const url = {
0: '?r=igg4/doctor/patient/get-need-follow-list',
1: '?r=igg4/doctor/patient/get-no-standard-list',
2: '?r=igg4/doctor/patient/get-my-list',
0: '?r=zd/doctor/patient/get-need-follow-list',
1: '?r=zd/doctor/patient/get-no-standard-list',
2: '?r=zd/doctor/patient/get-my-list',
}[active] as string
wx.ajax({
method: 'GET',

199
src/doctor/pages/d_patient/index.wxml

@ -1,12 +1,8 @@ @@ -1,12 +1,8 @@
<wxs src="./index.wxs" module="tools" />
<view class="page">
<view
class="page-header"
style="background:#fff url({{imageUrl}}/doctor/d_patient-bg.png?t={{Timestamp}}) no-repeat top center/100% 456rpx"
>
<navBar title="患者列表" back home="{{false}}" bind:back="handleBack"></navBar>
<view class="page-header">
<view class="search">
<image class="icon" src="{{imageUrl}}/doctor/icon-search.png?t={{Timestamp}}"></image>
<image class="icon" src="/images/icon43.png"></image>
<input
type="text"
model:value="{{Search}}"
@ -19,30 +15,11 @@ @@ -19,30 +15,11 @@
/>
</view>
<view class="navbar">
<view class="nav {{active===0 && 'active'}}" bind:tap="handleNav" data-active="{{0}}">
需随访患者
<view class="dot" wx:if="{{unReadCount>0}}">{{unReadCount}}</view>
</view>
<view class="nav {{active===1 && 'active'}}" bind:tap="handleNav" data-active="{{1}}">未达标患者</view>
<view class="nav {{active===2 && 'active'}}" bind:tap="handleNav" data-active="{{2}}">
我的患者
<view class="dot" wx:if="{{unReadCount>0}}">{{unReadCount}}</view>
</view>
<view class="nav {{active===0 && 'active'}}" bind:tap="handleNav" data-active="{{0}}">疾病基础</view>
<view class="nav {{active===1 && 'active'}}" bind:tap="handleNav" data-active="{{1}}">复发/活动期</view>
<view class="nav {{active===2 && 'active'}}" bind:tap="handleNav" data-active="{{2}}">伊奈利珠单抗用药患者</view>
</view>
</view>
<view class="total-line">
<view class="wrap">
<view class="user">
患者数:
<text class="num">{{total}}</text>
</view>
</view>
<view class="btn" bind:tap="handleSendGroup">群发管理</view>
<!-- <view class="btn"> -->
<!-- 导出 -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-export.png?t={{Timestamp}}"></image> -->
<!-- </view> -->
</view>
<view class="list">
<view class="list-item" wx:for="{{list}}" wx:key="index" bind:tap="handleDetail" data-index="{{index}}">
<view class="avatar">
@ -51,172 +28,12 @@ @@ -51,172 +28,12 @@
<view class="container">
<view class="title">
<view class="name">{{item.Name}}</view>
<view class="send" wx:if="{{item.IsCurrent==1}}" catch:tap="handleSend" data-index="{{index}}">
<image class="icon" src="{{imageUrl}}5/icon-message.png?t={{Timestamp}}"></image>
消息
</view>
</view>
<view class="tags">
<view class="tag" wx:if="{{item.LastAdlTime}}">最近一次ADL:{{item.LastAdlTimeName}}</view>
<view class="tag" wx:if="{{item.LastAdlNeedFollowStatus==1}}">需随访</view>
</view>
<view class="content" wx:if="{{item.AdlScore || item.SteroidDailyDose}}">
<view wx:if="{{item.LastAdlTime}}">
ADL评分:
<text class="blod">{{item.AdlScore}}</text>
</view>
<view class="line" wx:if="{{item.AdlScore || item.SteroidDailyDose}}"></view>
<view wx:if="{{item.SteroidDailyDose}}">
激素用量:
<text class="blod">{{item.SteroidDailyDose}}</text>
mg/d
</view>
<view class="disease">病程{{'<'}}1年</view>
</view>
<view class="content disable" wx:else>无ADL记录</view>
<view class="replay-date" wx:if="{{item.LastReVisitDate}}">复诊时间:{{item.LastReVisitDate}}</view>
<view class="replay-date">邀约时间:2025-12-30</view>
<view class="remark">备注:111111111111111111111</view>
</view>
</view>
<!-- <view class="list-item" wx:for="{{list}}" wx:key="index" bind:tap="handleDetail" data-index="{{index}}"> -->
<!-- <view class="user"> -->
<!-- <view class="avatar"> -->
<!-- <image class="avatar-img" src="{{item.UserImg}}"></image> -->
<!-- </view> -->
<!-- <view class="wrap"> -->
<!-- <view class="w-header"> -->
<!-- <view class="name">{{item.Name}}</view> -->
<!-- <image -->
<!-- wx:if="{{item.Gender==='1'}}" -->
<!-- class="icon" -->
<!-- src="{{imageUrl}}/doctor/icon-man.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <image -->
<!-- wx:if="{{item.Gender==='2'}}" -->
<!-- class="icon" -->
<!-- src="{{imageUrl}}/doctor/icon-woman.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <view class="tel">{{item.Telephone}}</view> -->
<!-- <view class="send" catch:tap="handleSend" data-index="{{index}}">发消息</view> -->
<!-- </view> -->
<!-- <view class="w-tags"> -->
<!-- <image -->
<!-- wx:if="{{item.UserType===4}}" -->
<!-- class="label" -->
<!-- src="{{imageUrl}}/doctor/drug-label.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <view class="tag" wx:for="{{item.Tags}}" wx:for-item="tag" wx:for-index="tIndex" wx:key="tIndex"> -->
<!-- {{tag}} -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
<!-- <view class="adl" wx:if="{{item.LastAdlTime}}"> -->
<!-- <view class="a-header"> -->
<!-- <view class="content">最近一次测评:{{item.LastAdlTimeName}}</view> -->
<!-- <view class="box"></view> -->
<!-- </view> -->
<!-- <view class="a-content"> -->
<!-- <view class="row" wx:if="{{item.AdlScore}}"> -->
<!-- <view class="label">最新ADL评分</view> -->
<!-- <view class="num">{{item.AdlScore}}</view> -->
<!-- <view class="tag" wx:if="{{item.AdlScore<=1}}"> -->
<!-- <view class="t-label"> -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-success.png?t={{Timestamp}}"></image> -->
<!-- 已达标 -->
<!-- </view> -->
<!-- <view class="t-content" wx:if="{{item.TotalScoreChange*1!=0}}"> -->
<!-- <image -->
<!-- wx:if="{{item.TotalScoreChange<=0}}" -->
<!-- class="icon" -->
<!-- src="{{imageUrl}}/doctor/icon-down-success.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-success.png?t={{Timestamp}}"></image> -->
<!-- {{item.TotalScoreChange}} -->
<!-- </view> -->
<!-- </view> -->
<!-- <view class="tag tag-warn" wx:elif="{{item.AdlScore<=5}}"> -->
<!-- <view class="t-label"> -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-warn.png?t={{Timestamp}}"></image> -->
<!-- 接近达标 -->
<!-- </view> -->
<!-- <view class="t-content" wx:if="{{item.TotalScoreChange*1!=0}}"> -->
<!-- <image -->
<!-- wx:if="{{item.TotalScoreChange<=0}}" -->
<!-- class="icon" -->
<!-- src="{{imageUrl}}/doctor/icon-down-warn.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-warn.png?t={{Timestamp}}"></image> -->
<!-- {{item.TotalScoreChange}} -->
<!-- </view> -->
<!-- </view> -->
<!-- <view class="tag tag-error" wx:else> -->
<!-- <view class="t-label"> -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-error.png?t={{Timestamp}}"></image> -->
<!-- 待达标 -->
<!-- </view> -->
<!-- <view class="t-content" wx:if="{{item.TotalScoreChange*1!=0}}"> -->
<!-- <image -->
<!-- wx:if="{{item.TotalScoreChange<=0}}" -->
<!-- class="icon" -->
<!-- src="{{imageUrl}}/doctor/icon-down-error.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-error.png?t={{Timestamp}}"></image> -->
<!-- {{item.TotalScoreChange}} -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
<!-- <view class="row" wx:if="{{item.SteroidDailyDose}}"> -->
<!-- <view class="label">最新激素用量</view> -->
<!-- <view class="num">{{item.SteroidDailyDose}}mg</view> -->
<!-- <view class="tag" wx:if="{{item.SteroidDailyDose<=5}}"> -->
<!-- <view class="t-label"> -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-success.png?t={{Timestamp}}"></image> -->
<!-- 已达标 -->
<!-- </view> -->
<!-- <view class="t-content" wx:if="{{item.SteroidDailyDoseChange*1!=0}}"> -->
<!-- <image -->
<!-- wx:if="{{item.SteroidDailyDoseChange<=0}}" -->
<!-- class="icon" -->
<!-- src="{{imageUrl}}/doctor/icon-down-success.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-success.png?t={{Timestamp}}"></image> -->
<!-- {{item.SteroidDailyDoseChange}}mg -->
<!-- </view> -->
<!-- </view> -->
<!-- <view class="tag tag-error" wx:else> -->
<!-- <view class="t-label"> -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-error.png?t={{Timestamp}}"></image> -->
<!-- 待达标 -->
<!-- </view> -->
<!-- <view class="t-content" wx:if="{{item.SteroidDailyDoseChange*1!=0}}"> -->
<!-- <image -->
<!-- wx:if="{{item.SteroidDailyDoseChange<=0}}" -->
<!-- class="icon" -->
<!-- src="{{imageUrl}}/doctor/icon-down-error.png?t={{Timestamp}}" -->
<!-- ></image> -->
<!-- <image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-error.png?t={{Timestamp}}"></image> -->
<!-- {{item.SteroidDailyDoseChange}}mg -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
<!-- </view> -->
<!-- <view class="adl-none" wx:else> -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-adl-none.png?t={{Timestamp}}"></image> -->
<!-- 还未做ADL测评 -->
<!-- </view> -->
<!-- <view class="drug" wx:if="{{item.LastUseDrugsTime}}"> -->
<!-- <view class="label">最近用药</view> -->
<!-- <view class="content"> -->
<!-- {{item.LastUseDrugsTime}} -->
<!-- <block wx:if="{{item.LastUseDrugsTimeName}}">({{item.LastUseDrugsTimeName}})</block> -->
<!-- </view> -->
<!-- </view> -->
<!-- <view class="drug-none" wx:else> -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-drug-none.png?t={{Timestamp}}"></image> -->
<!-- 暂无用药数据 -->
<!-- </view> -->
<!-- </view> -->
<pagination pagination="{{pagination}}"></pagination>
</view>
</view>

3
src/doctor/pages/d_patientDetail/index.json

@ -1,7 +1,6 @@ @@ -1,7 +1,6 @@
{
"navigationStyle": "custom",
"navigationBarTitleText": "患者档案",
"usingComponents": {
"navBar": "/components/navBar/navBar",
"van-icon": "@vant/weapp/icon/index",
"van-popup": "@vant/weapp/popup/index",
"ec-canvas": "/components/ec-canvas/ec-canvas",

834
src/doctor/pages/d_patientDetail/index.scss

@ -1,769 +1,109 @@ @@ -1,769 +1,109 @@
page {
background-color: rgba(242, 244, 245, 1);
padding-bottom: calc(140rpx + env(safe-area-inset-bottom));
}
.page {
width: 100vw;
overflow-x: hidden;
min-height: 100vh;
padding-bottom: 200rpx;
.banner {
margin: 40rpx 30rpx 32rpx;
padding: 36rpx 20rpx;
margin: 40rpx 40rpx 0;
padding: 48rpx 32rpx;
display: flex;
background: #ffffff;
border-radius: 24rpx 24rpx 24rpx 24rpx;
position: relative;
.watermark {
position: absolute;
top: 80rpx;
z-index: 2;
font-size: 36rpx;
line-height: 58rpx;
color: rgba(0, 0, 0, 0.05);
transform: rotate(-12deg);
text-align: center;
.p {
white-space: wrap;
border-radius: 12rpx 12rpx 12rpx 12rpx;
border: 1px solid #f4f3f3;
.avatar {
flex-shrink: 0;
.avatar-img {
width: 112rpx;
height: 112rpx;
border-radius: 50%;
}
}
.banner-container {
.user {
display: flex;
.avatar {
.avatar-img {
width: 100rpx;
height: 100rpx;
border-radius: 50%;
}
}
.wrap {
padding-left: 20rpx;
.w-header {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 8rpx;
.name {
font-size: 32rpx;
color: rgba(40, 48, 49, 1);
font-weight: bold;
}
.icon {
width: 32rpx;
height: 32rpx;
}
.tel {
position: relative;
z-index: 3;
font-size: 32rpx;
color: rgba(154, 161, 162, 1);
display: flex;
align-items: center;
.tel-icon {
margin-left: 10rpx;
width: 32rpx;
height: 32rpx;
}
}
.send {
margin-left: 32rpx;
width: 92rpx;
height: 32rpx;
font-size: 22rpx;
color: rgba(103, 186, 202, 1);
text-align: center;
border: 1px solid #67baca;
border-radius: 58rpx 58rpx 58rpx 58rpx;
}
}
.w-tags {
margin-top: 28rpx;
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 12rpx;
.label {
width: 164rpx;
height: 40rpx;
}
.tag {
padding: 6rpx 16rpx;
font-size: 24rpx;
line-height: 28rpx;
color: rgba(103, 113, 114, 1);
background-color: rgba(242, 244, 245, 1);
border-radius: 8rpx;
}
}
}
}
.adl {
margin-top: 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;
.a-header {
display: flex;
align-items: flex-start;
flex-direction: column;
.content {
position: relative;
.sub-content1 {
position: relative;
z-index: 1;
border-radius: 24rpx 0 24rpx 0;
padding: 14rpx 28rpx;
font-size: 28rpx;
color: rgba(98, 190, 208, 1);
background-color: rgba(242, 248, 249, 1);
}
.sub-content2 {
position: absolute;
right: 20rpx;
top: 0;
transform: translateX(100%);
border-radius: 0 0 24rpx 0;
padding: 14rpx 28rpx 14rpx 40rpx;
font-size: 28rpx;
color: #e59a29;
background-color: #fff5df;
}
}
.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);
width: 6em;
}
.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);
}
}
}
}
.d-row {
margin-top: 22rpx;
display: flex;
gap: 20rpx;
.label {
flex-shrink: 0;
width: 6em;
font-size: 28rpx;
color: rgba(154, 161, 162, 1);
}
.content {
min-width: 3em;
font-size: 28rpx;
color: rgba(40, 48, 49, 1);
}
}
.wrap {
margin-left: 24rpx;
.name {
font-size: 44rpx;
color: rgba(33, 33, 32, 1);
.tel-icon {
margin-left: 10rpx;
width: 32rpx;
height: 32rpx;
}
}
.info-card {
position: relative;
.content {
margin-top: 16rpx;
padding: 32rpx 30rpx;
border-radius: 24rpx;
box-shadow: 0rpx 8rpx 32rpx 0rpx rgba(40, 48, 49, 0.04);
border: 2rpx solid #f8f9f9;
background-color: #fff;
display: grid;
gap: 32rpx 22rpx;
grid-template-columns: repeat(auto-fit, minmax(40%, 1fr));
.ic-item {
display: flex;
.label {
font-size: 28rpx;
color: #9aa1a2;
white-space: nowrap;
}
.content {
font-size: 28rpx;
color: #283031;
white-space: nowrap;
}
}
.edit {
position: absolute;
bottom: 0;
right: 0;
padding: 6rpx 18rpx;
display: flex;
align-items: center;
font-size: 28rpx;
color: #fff;
border-radius: 32rpx 0 24rpx 0;
background-color: #67baca;
.icon {
width: 32rpx;
height: 32rpx;
}
}
}
.b-footer {
margin: 32rpx auto 0;
display: flex;
align-items: center;
justify-content: center;
.send {
margin: 0 42rpx;
width: 200rpx;
height: 60rpx;
font-size: 32rpx;
color: rgba(98, 190, 208, 1);
display: flex;
align-items: center;
justify-content: center;
background: #ffffff;
border-radius: 64rpx 64rpx 64rpx 64rpx;
border: 2rpx solid #62bed0;
}
.remark {
width: 200rpx;
height: 60rpx;
font-size: 32rpx;
color: rgba(98, 190, 208, 1);
display: flex;
align-items: center;
justify-content: center;
background: #ffffff;
border-radius: 64rpx 64rpx 64rpx 64rpx;
border: 2rpx solid #62bed0;
}
font-size: 32rpx;
color: rgba(33, 33, 32, 1);
line-height: 52rpx;
}
}
}
.chart-container {
margin: 30rpx;
padding: 30rpx;
border-radius: 24rpx;
background-color: #fff;
position: relative;
.watermark {
position: absolute;
top: 80rpx;
z-index: 2;
font-size: 36rpx;
line-height: 58rpx;
color: rgba(0, 0, 0, 0.05);
transform: rotate(-12deg);
text-align: center;
.p {
max-width: 90vw;
white-space: wrap;
}
}
.container {
.c-nav {
position: relative;
z-index: 3;
display: flex;
padding: 8rpx;
border-radius: 98rpx;
background-color: #f2f4f5;
.nav-item {
flex: 1;
padding: 12rpx;
font-size: 32rpx;
color: #677172;
text-align: center;
&.active {
color: #fff;
border-radius: 62rpx;
background-color: #62bed0;
}
}
}
.filter {
position: relative;
z-index: 3;
margin-top: 32rpx;
display: flex;
gap: 16rpx;
align-items: center;
border-radius: 80rpx 80rpx 80rpx 80rpx;
.type {
padding: 10rpx 32rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: rgba(103, 113, 114, 1);
background-color: rgba(242, 244, 245, 1);
border-radius: 34rpx;
.icon {
width: 24rpx;
height: 24rpx;
}
}
.range {
padding: 10rpx 32rpx;
display: flex;
align-items: center;
font-size: 28rpx;
color: rgba(103, 113, 114, 1);
border-radius: 34rpx;
background-color: rgba(242, 244, 245, 1);
.icon {
width: 24rpx;
height: 24rpx;
}
.container {
margin: 32rpx 40rpx;
padding: 0 32rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(0, 0, 0, 0.08);
border-radius: 12rpx 12rpx 12rpx 12rpx;
border: 2rpx solid #f4f3f3;
.row {
display: flex;
justify-content: space-between;
padding: 30rpx 0;
border-bottom: 1px solid rgba(244, 243, 243, 1);
&.row-vetical {
display: block;
.content {
margin-top: 24rpx;
text-align: left;
}
}
.card {
margin: 32rpx 0 0;
padding: 20rpx;
background: #ffffff;
box-shadow: 0rpx 8rpx 32rpx 0rpx rgba(40, 48, 49, 0.04);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #f8f9f9;
.pie {
height: 376rpx;
}
.line {
border-top: 1px dashed rgba(242, 244, 245, 1);
}
.w-header {
padding-top: 32rpx;
display: flex;
justify-content: space-between;
.title {
font-size: 32rpx;
color: #484848;
}
.legend {
display: flex;
align-items: center;
gap: 25rpx;
.item {
font-size: 20rpx;
color: #4f4f4f;
display: flex;
align-items: center;
.logo {
margin-right: 8rpx;
width: 16rpx;
height: 16rpx;
border-radius: 50%;
background-color: #cf5375;
&.hormone {
background-color: #3192a1;
}
}
.icon {
margin-right: 8rpx;
width: 17rpx;
height: 24rpx;
}
}
}
}
.column {
height: 400rpx;
}
.label {
font-size: 36rpx;
color: rgba(33, 33, 32, 1);
font-weight: bold;
}
.module {
margin-top: 30rpx;
.module-header {
display: flex;
.date {
flex-shrink: 0;
font-size: 24rpx;
color: #333333;
}
.tags {
margin-left: 14rpx;
flex: 1;
display: flex;
flex-wrap: nowrap;
overflow-x: scroll;
white-space: nowrap;
&::-webkit-scrollbar {
display: none;
}
.tag1 {
margin-left: 14rpx;
padding: 0 12rpx;
background: #d86687;
border-radius: 6rpx;
font-size: 24rpx;
line-height: 36rpx;
text-align: center;
color: #ffffff;
}
.tag2 {
margin-left: 14rpx;
padding: 0 12rpx;
background: #0b184f;
border-radius: 6rpx;
font-size: 24rpx;
line-height: 36rpx;
text-align: center;
color: #ffffff;
}
.tag3 {
margin-left: 14rpx;
padding: 0 12rpx;
background: #24d8c8;
border-radius: 6rpx;
font-size: 24rpx;
line-height: 36rpx;
text-align: center;
color: #ffffff;
}
}
}
.module-container {
margin-top: 24rpx;
display: flex;
.aside {
margin-right: 30rpx;
padding-left: 14rpx;
border-right: 1px dashed #dddddd;
}
.m-card {
flex: 1;
box-shadow: 0 4rpx 29rpx 0rpx rgba(207, 83, 116, 0.25);
border-radius: 24rpx;
.card-header {
padding: 20rpx 18rpx 4rpx 48rpx;
border-radius: 24rpx 24rpx 0 0;
display: flex;
align-items: center;
justify-content: space-between;
box-shadow: 8rpx 8rpx 16rpx 0rpx rgba(143, 217, 226, 0.1);
&.grade1 {
background: linear-gradient(90deg, #26dac9 7%, rgba(143, 217, 226, 0) 70%, rgba(143, 217, 226, 0) 100%);
}
&.grade2 {
background: linear-gradient(
90deg,
rgba(235, 111, 87, 1) 7%,
rgba(143, 217, 226, 0) 70%,
rgba(143, 217, 226, 0) 100%
);
}
&.grade3 {
background: linear-gradient(
90deg,
rgba(207, 83, 117, 1) 7%,
rgba(143, 217, 226, 0) 70%,
rgba(143, 217, 226, 0) 100%
);
}
.num {
display: flex;
align-items: baseline;
font-size: 96rpx;
line-height: 1;
color: #ffffff;
letter-spacing: 4rpx;
.sub {
font-size: 24rpx;
color: #fff;
}
}
.num-detail {
display: flex;
.n-item {
width: 73rpx;
&.active {
.box {
background-color: #cf5375;
}
}
.box {
width: 45rpx;
height: 45rpx;
width: 45rpx;
height: 45rpx;
font-size: 32rpx;
color: #fff;
text-align: center;
line-height: 45rpx;
background: #333333;
border-radius: 12rpx 12rpx 12rpx 12rpx;
}
.name {
font-size: 24rpx;
line-height: 48rpx;
color: rgba(51, 51, 51, 0.5);
}
}
}
.status {
font-size: 24rpx;
color: #989898;
text-align: right;
.s-num {
font-size: 32rpx;
}
.s-core {
font-size: 24rpx;
color: #989898;
// background: #484848;
border-radius: 6rpx;
}
}
}
.card-container {
padding: 8rpx 23rpx 20rpx;
border-radius: 0 0 24rpx 24rpx;
background-color: #fff;
.cc-title {
text-indent: 22rpx;
font-size: 24rpx;
color: rgba(79, 79, 79, 1);
}
.cc-content {
margin-top: 12rpx;
padding: 16rpx 20rpx;
border-radius: 24rpx;
background-color: rgba(249, 249, 249, 1);
.line {
font-size: 24rpx;
color: #666666;
line-height: 36rpx;
.dot {
color: #666666;
font-weight: bold;
}
.red {
color: #cf5375;
}
.green {
color: #25d9c8;
}
}
}
.fold {
margin-top: 16rpx;
.fold-header {
display: flex;
justify-content: flex-end;
font-size: 24rpx;
color: rgba(204, 204, 204, 1);
}
.fold-container {
padding-top: 10rpx;
height: 500rpx;
overflow: hidden;
transition: all 0.5s;
&.hide {
padding: 0;
height: 0;
}
.fold-img {
width: 100%;
}
.scurt {
width: 100%;
border: 1px solid rgba(0, 0, 0, 0.1);
box-sizing: border-box;
.s-header {
display: flex;
height: 40rpx;
margin-bottom: -1px;
border-bottom: 1rpx solid rgba(0, 0, 0, 0.1);
.none {
flex-shrink: 0;
width: 226rpx;
background-color: rgba(228, 228, 228, 1);
}
.bar {
flex: 1;
display: flex;
.num {
flex: 1;
text-align: center;
font-size: 24rpx;
color: #fff;
line-height: 40rpx;
}
}
}
.s-body {
display: flex;
.s-aside {
width: 28rpx;
background-color: rgba(102, 102, 102, 0.15);
flex-shrink: 0;
.sa-item {
display: flex;
text-align: center;
justify-content: center;
align-items: center;
font-size: 18rpx;
color: rgba(102, 102, 102, 1);
line-height: 1;
overflow: hidden;
&:not(:last-of-type) {
margin-bottom: -1px;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}
}
.sa-item1 {
height: 158rpx;
}
.sa-item2 {
height: 54rpx;
}
.sa-item3 {
height: 106rpx;
}
.sa-item4 {
height: 108rpx;
}
}
.s-container {
flex: 1;
.sc-row {
display: flex;
height: 54rpx;
overflow: hidden;
.sc-title {
width: 198rpx;
font-size: 18rpx;
color: rgba(102, 102, 102, 1);
text-align: center;
line-height: 53rpx;
}
.sc-col {
margin-left: -1px;
border-left: 1px solid rgba(0, 0, 0, 0.1);
flex: 1;
text-align: center;
.icon {
margin-top: 11rpx;
width: 32rpx;
height: 32rpx;
}
}
}
.sc-row:not(:last-of-type) {
margin-bottom: -1px;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}
.sc-row:nth-of-type(2n-1) {
background-color: rgba(217, 217, 217, 0.2);
}
}
}
}
}
}
}
}
.drug-card {
margin-top: 30rpx;
flex: 1;
box-shadow: 0 4rpx 29rpx 0rpx rgba(207, 83, 116, 0.25);
border-radius: 24rpx;
.d-header {
border-radius: 24rpx 0 0 0;
padding: 20rpx 50rpx;
display: flex;
align-items: center;
justify-content: space-between;
background: linear-gradient(95deg, #26dac9 7%, rgba(143, 217, 226, 0) 100%);
.name {
font-size: 28rpx;
color: #ffffff;
}
.status {
font-size: 22rpx;
color: #5b6363;
.num {
font-size: 22rpx;
color: #cf5375;
}
}
}
.content {
padding: 20rpx 50rpx;
font-size: 22rpx;
color: #666666;
}
}
}
.content {
text-align: right;
max-width: 6em;
font-size: 36rpx;
color: rgba(33, 33, 32, 1);
}
}
}
.footer {
padding: 0 40rpx;
position: fixed;
bottom: calc(env(safe-area-inset-bottom) + 32rpx);
left: 0;
width: 100%;
box-sizing: border-box;
display: flex;
align-items: center;
gap: 30rpx;
.remark {
flex: 1;
height: 96rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 12rpx;
font-size: 36rpx;
color: rgba(22, 121, 203, 1);
border: 1px solid rgba(22, 121, 203, 1);
}
.send {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
font-size: 36rpx;
color: rgba(255, 255, 255, 1);
height: 96rpx;
background: linear-gradient(90deg, #293b9f 0%, #1679cb 100%);
border-radius: 12rpx 12rpx 12rpx 12rpx;
}
}
}
.popup-remark {
@ -788,14 +128,14 @@ page { @@ -788,14 +128,14 @@ page {
}
.submit {
margin-top: 32rpx;
height: 84rpx;
height: 96rpx;
display: flex;
justify-content: center;
align-items: center;
background: #67baca;
background: linear-gradient( 90deg, #293B9F 0%, #1679CB 100%);
font-size: 36rpx;
color: #fff;
border-radius: 64rpx 64rpx 64rpx 64rpx;
border-radius: 12rpx;
}
}
.popup-edit {

12
src/doctor/pages/d_patientDetail/index.ts

@ -190,7 +190,7 @@ Page({ @@ -190,7 +190,7 @@ Page({
getDoctorDetail() {
wx.ajax({
method: 'GET',
url: '?r=igg4/doctor/account/info',
url: '?r=zd/doctor/account/info',
data: {},
}).then((res) => {
this.setData({
@ -209,7 +209,7 @@ Page({ @@ -209,7 +209,7 @@ Page({
return wx
.ajax({
method: 'GET',
url: '?r=igg4/doctor/patient/info',
url: '?r=zd/doctor/patient/info',
data: { patientId: this.data.id },
})
.then((res) => {
@ -270,7 +270,7 @@ Page({ @@ -270,7 +270,7 @@ Page({
getGraph() {
wx.ajax({
method: 'GET',
url: '?r=igg4/doctor/patient/adl-graph',
url: '?r=zd/doctor/patient/adl-graph',
data: {
patientId: this.data.id,
StartDate: this.data.StartDate,
@ -930,7 +930,7 @@ Page({ @@ -930,7 +930,7 @@ Page({
}
wx.ajax({
method: 'POST',
url: '?r=igg4/doctor/patient/remark',
url: '?r=zd/doctor/patient/remark',
data: {
PatientId: this.data.id,
DoctorRemark: this.data.remark,
@ -966,7 +966,7 @@ Page({ @@ -966,7 +966,7 @@ Page({
const { detail } = this.data
wx.ajax({
method: 'POST',
url: '?r=igg4/doctor/patient/update',
url: '?r=zd/doctor/patient/update',
data: {
PatientId: detail.PatientId, //患者Id
AntibodyType: detail.AntibodyType, //抗体类型 1:AChR 2:Musk 3:LRP4 4:RYR
@ -1010,7 +1010,7 @@ Page({ @@ -1010,7 +1010,7 @@ Page({
const { detail, EndDate, StartDate, type } = this.data
wx.ajax({
method: 'GET',
url: '?r=igg4/doctor/patient/adl-list',
url: '?r=zd/doctor/patient/adl-list',
data: {
DateType: type,
PatientId: detail.PatientId,

476
src/doctor/pages/d_patientDetail/index.wxml

@ -1,452 +1,46 @@ @@ -1,452 +1,46 @@
<view
class="page"
style="background: url({{imageUrl}}/doctor/d_patient-detail-bg.png?t={{Timestamp}}) no-repeat top center/100% 640rpx"
>
<navBar background="{{background}}" title="患者档案" back bind:back="handleBack"></navBar>
<view class="page">
<view class="banner">
<view class="watermark">
<view class="p">本页面内容涉及患者个人信息</view>
<view class="p">仅用于{{hospital.Name}}{{doctor.Name}}医生进行患者随访管理</view>
<view class="p">不可用于其他用途</view>
<view class="p">【gMG给力加油站】</view>
<view class="avatar">
<image class="avatar-img" src="{{detail.UserImg}}"></image>
</view>
<view class="banner-container">
<view class="user">
<view class="avatar">
<image class="avatar-img" src="{{detail.UserImg}}"></image>
</view>
<view class="wrap">
<view class="w-header">
<view class="name">{{showTel ? detail.Name : detail.hideName}}</view>
<image
wx:if="{{detail.Gender==='1'}}"
class="icon"
src="{{imageUrl}}/doctor/icon-man.png?t={{Timestamp}}"
></image>
<image
wx:if="{{detail.Gender==='2'}}"
class="icon"
src="{{imageUrl}}/doctor/icon-woman.png?t={{Timestamp}}"
></image>
<view class="tel" bind:tap="handleToggleTel">
{{showTel ? detail.Telephone : '***********'}}
<image wx:if="{{showTel}}" class="tel-icon" src="{{imageUrl}}/5/eye2.png?t={{Timestamp}}"></image>
<image wx:else class="tel-icon" src="{{imageUrl}}/5/eye1.png?t={{Timestamp}}"></image>
</view>
</view>
<view class="w-tags">
<image
wx:if="{{detail.UserType===4}}"
class="label"
src="{{imageUrl}}/doctor/drug-label.png?t={{Timestamp}}"
></image>
<view class="tag" wx:for="{{detail.Tags}}" wx:for-item="tag" wx:for-index="tIndex" wx:key="tIndex">
{{tag}}
</view>
</view>
</view>
</view>
<view class="adl" wx:if="{{detail.LastAdlTime}}">
<view class="a-header">
<view class="content">
<view class="sub-content1">最近一次测评:{{detail.LastAdlTimeName}}</view>
<view class="sub-content2" wx:if="{{detail.LastAdlNeedFollowStatus==1}}">需随访</view>
</view>
<view class="box"></view>
</view>
<view class="a-content">
<view class="row" wx:if="{{detail.AdlScore}}">
<view class="label">最新ADL评分</view>
<view class="num">{{detail.AdlScore}}</view>
<view class="tag" wx:if="{{detail.AdlScore<=1}}">
<view class="t-label">
<image class="icon" src="{{imageUrl}}/doctor/icon-success.png?t={{Timestamp}}"></image>
已达标
</view>
<view class="t-content" wx:if="{{detail.TotalScoreChange*1!=0}}">
<image
wx:if="{{detail.TotalScoreChange<=0}}"
class="icon"
src="{{imageUrl}}/doctor/icon-down-success.png?t={{Timestamp}}"
></image>
<image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-success.png?t={{Timestamp}}"></image>
{{detail.TotalScoreChange}}
</view>
</view>
<view class="tag tag-warn" wx:elif="{{detail.AdlScore<=5}}">
<view class="t-label">
<image class="icon" src="{{imageUrl}}/doctor/icon-warn.png?t={{Timestamp}}"></image>
接近达标
</view>
<view class="t-content" wx:if="{{detail.TotalScoreChange*1!=0}}">
<image
wx:if="{{detail.TotalScoreChange<=0}}"
class="icon"
src="{{imageUrl}}/doctor/icon-down-warn.png?t={{Timestamp}}"
></image>
<image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-warn.png?t={{Timestamp}}"></image>
{{detail.TotalScoreChange}}
</view>
</view>
<view class="tag tag-error" wx:else>
<view class="t-label">
<image class="icon" src="{{imageUrl}}/doctor/icon-error.png?t={{Timestamp}}"></image>
待达标
</view>
<view class="t-content" wx:if="{{detail.TotalScoreChange*1!=0}}">
<image
wx:if="{{detail.TotalScoreChange<=0}}"
class="icon"
src="{{imageUrl}}/doctor/icon-down-error.png?t={{Timestamp}}"
></image>
<image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-error.png?t={{Timestamp}}"></image>
{{detail.TotalScoreChange}}
</view>
</view>
</view>
<view class="row" wx:if="{{detail.SteroidDailyDose}}">
<view class="label">最新激素用量</view>
<view class="num">{{detail.SteroidDailyDose}}mg</view>
<view class="tag" wx:if="{{detail.SteroidDailyDose<=5}}">
<view class="t-label">
<image class="icon" src="{{imageUrl}}/doctor/icon-success.png?t={{Timestamp}}"></image>
已达标
</view>
<view class="t-content" wx:if="{{detail.SteroidDailyDoseChange*1!=0}}">
<image
wx:if="{{detail.SteroidDailyDoseChange<=0}}"
class="icon"
src="{{imageUrl}}/doctor/icon-down-success.png?t={{Timestamp}}"
></image>
<image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-success.png?t={{Timestamp}}"></image>
{{detail.SteroidDailyDoseChange}}mg
</view>
</view>
<view class="tag tag-error" wx:else>
<view class="t-label">
<image class="icon" src="{{imageUrl}}/doctor/icon-error.png?t={{Timestamp}}"></image>
待达标
</view>
<view class="t-content" wx:if="{{detail.SteroidDailyDoseChange*1!=0}}">
<image
wx:if="{{detail.SteroidDailyDoseChange<=0}}"
class="icon"
src="{{imageUrl}}/doctor/icon-down-error.png?t={{Timestamp}}"
></image>
<image wx:else class="icon" src="{{imageUrl}}/doctor/icon-up-error.png?t={{Timestamp}}"></image>
{{detail.SteroidDailyDoseChange}}mg
</view>
</view>
</view>
<view class="d-row" wx:if="{{detail.LastUseDrugsTime}}">
<view class="label">最近用药</view>
<view class="content">
{{detail.LastUseDrugsTime}}
<block wx:if="{{detail.LastUseDrugsTimeName}}">({{detail.LastUseDrugsTimeName}})</block>
</view>
</view>
<view class="d-row" wx:if="{{detail.DoctorRemark}}">
<view class="label">备注</view>
<view class="content">{{detail.DoctorRemark}}</view>
</view>
</view>
</view>
<view class="info-card">
<view class="ic-item">
<view class="label">抗体类型:</view>
<view class="content">{{antibodyTypeRangeList[detail.AntibodyType-1].value}}</view>
</view>
<view class="ic-item">
<view class="label">既往发生危象:</view>
<view class="content">{{previousConvulsionRangeList[detail.PreviousConvulsion-1].value}}</view>
</view>
<view class="ic-item">
<view class="label">胸腺异常:</view>
<view class="content">{{thyroidAbnormalRangeList[detail.ThyroidAbnormal-1].value}}</view>
</view>
<view class="ic-item">
<view class="label">医保类型:</view>
<view class="content">{{medicalInsuranceTypeRangeList[detail.MedicalInsuranceType-1].value}}</view>
</view>
<view class="ic-item">
<view class="label">免疫抑制剂:</view>
<view class="content">
{{traditionalImmunosuppressantRangeList[detail.TraditionalImmunosuppressant-1].value}}
</view>
</view>
<view class="edit" bind:tap="handleEditUser" wx:if="{{detail.IsCurrent==1}}">
<image class="icon" src="{{imageUrl}}/3/icon-edit-white.png?t={{Timestamp}}"></image>
编辑
</view>
<view class="wrap">
<view class="name" bind:tap="handleToggleTel">
{{showTel ? detail.Name : detail.hideName}}
<image wx:if="{{showTel}}" class="tel-icon" src="{{imageUrl}}/5/eye2.png?t={{Timestamp}}"></image>
<image wx:else class="tel-icon" src="{{imageUrl}}/5/eye1.png?t={{Timestamp}}"></image>
</view>
<view class="b-footer">
<view class="send" bind:tap="handleSend" wx:if="{{detail.IsCurrent==1}}">发消息</view>
<view class="remark" bind:tap="handleRemark">备注</view>
<view class="content">
<view>18岁以下 | {{showTel ? detail.Telephone : '***********'}}</view>
<view>邀约时间:2025-12-09 15:05:58</view>
</view>
</view>
</view>
<view class="chart-container">
<view class="watermark">
<view class="p">本页面内容涉及患者个人信息</view>
<view class="p">仅用于{{hospital.Name}}{{doctor.Name}}医生进行患者随访管理</view>
<view class="p">不可用于其他用途</view>
<view class="p">【gMG给力加油站】</view>
<view class="container">
<view class="row">
<view class="label">IgG4相关性疾病病程</view>
<view class="content">4年</view>
</view>
<view class="container">
<view class="c-nav">
<view class="nav-item {{nav ==='0' && 'active'}}" data-index="0" bind:tap="handleNav">双达标测评报告</view>
<view class="nav-item {{nav ==='1' && 'active'}}" data-index="1" bind:tap="handleNav">双达标笔记</view>
</view>
<view class="filter">
<picker class="type" mode="selector" range="{{typeRange}}" range-key="value" bind:change="handleTypeChange">
{{typeName}}
<image class="icon" src="{{imageUrl}}/doctor/triangle-down.png?t={{Timestamp}}"></image>
</picker>
<view class="range">
<picker
mode="date"
end="{{EndDate}}"
fields="{{fields[type]}}"
mode="date"
model:value="{{StartDate}}"
bindchange="handleChange"
>
{{StartDate}}
</picker>
~
<picker
mode="date"
start="{{StartDate}}"
fields="{{fields[type]}}"
mode="date"
model:value="{{EndDate}}"
bindchange="handleChange"
>
{{EndDate}}
</picker>
<image class="icon" src="{{imageUrl}}/doctor/triangle-down.png?t={{Timestamp}}"></image>
</view>
</view>
<view hidden="{{nav!=='0'}}">
<view class="card">
<view class="w-header">
<view class="title">ADL评分记录曲线</view>
<view class="legend">
<view class="item">
<view class="logo"></view>
ADL分数
</view>
<view class="item">
<image class="icon" src="{{imageUrl}}double-standard/adl-cure.png?t={{Timestamp}}"></image>
用药时间
</view>
</view>
</view>
<view class="column">
<ec-canvas id="chart3" type="2d" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
<view class="w-header">
<view class="title">激素日用量记录曲线</view>
<view class="legend">
<view class="item">
<view class="logo hormone"></view>
激素用量
</view>
</view>
</view>
<view class="column">
<ec-canvas id="chart4" type="2d" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
</view>
<view class="card">
<view class="pie">
<ec-canvas id="chart1" type="2d" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
<view class="line"></view>
<view class="pie">
<ec-canvas id="chart2" type="2d" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
</view>
</view>
<view hidden="{{nav !== '1'}}">
<view class="module" wx:for="{{adlList}}" wx:key="index">
<view class="module-header">
<view class="date">{{item.CreateTime || item.InjectionDate}}</view>
<view class="tags">
<view class="tag3" wx:if="{{item.IsInsuranceProject==1}}">商保项目记录</view>
</view>
</view>
<view class="module-container">
<view class="aside"></view>
<view style="flex: 1">
<view
class="m-card"
bind:tap="handleAdlDetail"
data-id="{{item.Id}}"
data-isi="{{item.IsInsuranceProject}}"
data-index="{{index}}"
>
<view class="card-header grade{{item.grade}}">
<view class="num">
{{item.TotalScore}}
<view class="sub">分</view>
</view>
<view class="num-detail">
<view class="n-item {{item.MedullaTypeScore >=7 && 'active'}}">
<view class="box">{{item.MedullaTypeScore}}</view>
<view class="name">延髓</view>
</view>
<view class="n-item {{item.BreathTypeScore>=3 && 'active'}}">
<view class="box">{{item.BreathTypeScore}}</view>
<view class="name">呼吸</view>
</view>
<view class="n-item {{item.LimbsTypeScore>=5 && 'active'}}">
<view class="box">{{item.LimbsTypeScore}}</view>
<view class="name">四肢</view>
</view>
<view class="n-item {{item.EyeTypeScore >=5 && 'active'}}">
<view class="box">{{item.EyeTypeScore}}</view>
<view class="name">眼睛</view>
</view>
</view>
</view>
<view class="card-container">
<view class="cc-title">注意事项</view>
<view class="cc-content">
<view class="line" wx:if="{{item.TotalScore < 5}}">
1 总分
<text decode="true ">&lt;</text>
<text class="red">5分</text>
,日常请注意观察
</view>
<view class="line" wx:elif="{{item.TotalScore >= 5}}">
1 总分
<text decode="true ">&gt;=</text>
<text class="red">5分</text>
,您的症状控制欠佳,建议必要时就医
</view>
<block wx:if="{{item.LastTotalScore !== null}}">
<view class="line" wx:if="{{item.TotalScore - item.LastTotalScore < 0 }}">
2 较上次得分变化
<text class="green">{{item.TotalScore - item.LastTotalScore }},有进步,加油!</text>
</view>
<view class="line" wx:elif="{{item.TotalScore - item.LastTotalScore == 0 }}">
2 与上次得分一致,请继续保持
</view>
<view class="line" wx:elif="{{item.TotalScore - item.LastTotalScore == 1 }}">
2 较上次得分变化
<text class="red">+{{item.TotalScore - item.LastTotalScore }},请继续关注!</text>
</view>
<view class="line" wx:elif="{{item.TotalScore - item.LastTotalScore >= 0 }}">
2 较上次得分变化
<text class="red">+{{item.TotalScore - item.LastTotalScore }},需要重点关注!</text>
</view>
</block>
<view class="line" wx:if="{{item.EyeTypeScore / item.TotalScore < 0.5}}">
{{item.LastTotalScore === null ? 2 : 3}} 您的眼肌类占比
<text decode="true ">&lt;</text>
50%,以全身症状为主,应注意休息警惕病情加重
</view>
<view class="line" wx:elif="{{item.EyeTypeScore / item.TotalScore > 0.5}}">
{{item.LastTotalScore === null ? 2 : 3}} 您的眼肌类占比
<text decode="true ">&gt;</text>
50%,危象风险不高,请继续关注
</view>
<view class="line" wx:elif="{{item.EyeTypeScore / item.TotalScore == 0.5}}">
{{item.LastTotalScore === null ? 2 : 3}} 您的眼肌类占比=50%,危象风险不高,请继续关注
</view>
</view>
<view class="fold" wx:if="{{item.ResultsImgUrl}}">
<view class="fold-header" catch:tap="handleFold" data-index="{{index}}">
{{item.fold ? '展开':'收起'}}详细评测报告
<van-icon name="arrow-{{!item.fold ? 'up' : 'down'}}" />
</view>
<view class="fold-container {{item.fold && 'hide'}}">
<!-- <image class="fold-img" mode="widthFix" src="{{item.ResultsImgUrl}}" show-menu-by-longpress></image> -->
<view class="scurt">
<view class="s-header">
<view class="none"></view>
<view
class="bar"
style="background: url({{imageUrl}}/1/adl-scurt.png?t={{Timestamp}}) no-repeat center / 100% 100% ;"
>
<view class="num">0分</view>
<view class="num">1分</view>
<view class="num">2分</view>
<view class="num">3分</view>
</view>
</view>
<view class="s-body">
<view class="s-aside">
<view class="sa-item sa-item1">延髓</view>
<view class="sa-item sa-item2">呼吸</view>
<view class="sa-item sa-item3">四肢</view>
<view class="sa-item sa-item4">眼肌</view>
</view>
<view class="s-container">
<view class="sc-row" wx:for="{{tableData}}" wx:for-item="subItem" wx:key="index">
<view class="sc-title">{{subItem.title}}</view>
<view class="sc-col">
<image
wx:if="{{item[subItem.key] == 0}}"
class="icon"
src="{{imageUrl}}1/adl-scurt-icon.png?t={{Timestamp}}"
></image>
</view>
<view class="sc-col">
<image
wx:if="{{item[subItem.key] == 1}}"
class="icon"
src="{{imageUrl}}1/adl-scurt-icon.png?t={{Timestamp}}"
></image>
</view>
<view class="sc-col">
<image
wx:if="{{item[subItem.key] == 2}}"
class="icon"
src="{{imageUrl}}1/adl-scurt-icon.png?t={{Timestamp}}"
></image>
</view>
<view class="sc-col">
<image
wx:if="{{item[subItem.key] == 3}}"
class="icon"
src="{{imageUrl}}1/adl-scurt-icon.png?t={{Timestamp}}"
></image>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view
class="drug-card"
wx:if="{{item.SteroidDailyDose}}"
bind:tap="handleAdlDetail"
data-id="{{item.Id}}"
data-isi="{{item.IsInsuranceProject}}"
data-index="{{index}}"
>
<view class="d-header">
<view class="name">激素用量</view>
<view class="status">
本次激素用量为
<text class="num">{{item.SteroidDailyDose}}mg</text>
/天
</view>
</view>
<view class="content" wx:if="{{item.SteroidDailyDose>5}}">距离达标还需努力,请遵医嘱规律治疗</view>
<view class="content" wx:else>恭喜达标,您的激素用量已少于95% 的患友</view>
</view>
</view>
</view>
</view>
<pagination pagination="{{pagination}}"></pagination>
</view>
<view class="row">
<view class="label">疾病阶段</view>
<view class="content">稳定期</view>
</view>
<view class="row">
<view class="label">正在使用的药物</view>
<view class="content">糖皮质激素 免疫抑制剂</view>
</view>
<view class="row row-vetical">
<view class="label">正在使用的药物</view>
<view class="content">糖皮质激素 免疫抑制剂</view>
</view>
<view class="row">
<view class="label">备注</view>
<view class="content">无</view>
</view>
</view>
<view class="footer">
<view class="remark" bind:tap="handleRemark">备注</view>
<view class="send" bind:tap="handleSend" wx:if="{{detail.IsCurrent==1}}">发消息</view>
</view>
</view>

2
src/doctor/pages/d_patientList/index.ts

@ -38,7 +38,7 @@ Page({ @@ -38,7 +38,7 @@ Page({
}
wx.ajax({
method: 'GET',
url: '?r=igg4/doctor/patient/get-stat-patient-list',
url: '?r=zd/doctor/patient/get-stat-patient-list',
data: {
page: newPage,
...params,

16
src/doctor/pages/d_taskDetail/index.ts

@ -33,7 +33,7 @@ Page({ @@ -33,7 +33,7 @@ Page({
getTemplate() {
wx.ajax({
method: 'GET',
url: '?r=igg4/doctor/task/get-template',
url: '?r=zd/doctor/task/get-template',
data: {},
}).then((res) => {
const templateObj = {}
@ -48,7 +48,7 @@ Page({ @@ -48,7 +48,7 @@ Page({
getDetail() {
wx.ajax({
method: 'GET',
url: '?r=igg4/doctor/task/detail',
url: '?r=zd/doctor/task/detail',
data: {
TaskId: this.data.id,
},
@ -127,12 +127,12 @@ Page({ @@ -127,12 +127,12 @@ Page({
const { Id } = detail
wx.showModal({
title: '确认取消发送?',
confirmColor: '#62bed0',
confirmColor: 'rgba(22, 121, 203, 1)',
success: (res) => {
if (res.confirm) {
wx.ajax({
method: 'POST',
url: '?r=igg4/doctor/task/cancel',
url: '?r=zd/doctor/task/cancel',
data: {
TaskId: Id,
},
@ -148,12 +148,12 @@ Page({ @@ -148,12 +148,12 @@ Page({
const { Id } = detail
wx.showModal({
title: '确认停止发送?',
confirmColor: '#62bed0',
confirmColor: 'rgba(22, 121, 203, 1)',
success: (res) => {
if (res.confirm) {
wx.ajax({
method: 'POST',
url: '?r=igg4/doctor/task/stop',
url: '?r=zd/doctor/task/stop',
data: {
TaskId: Id,
},
@ -169,12 +169,12 @@ Page({ @@ -169,12 +169,12 @@ Page({
const { Id } = detail
wx.showModal({
title: '确认删除?',
confirmColor: '#62bed0',
confirmColor: 'rgba(22, 121, 203, 1)',
success: (res) => {
if (res.confirm) {
wx.ajax({
method: 'POST',
url: '?r=igg4/doctor/task/delete',
url: '?r=zd/doctor/task/delete',
data: {
TaskId: Id,
},

14
src/doctor/pages/d_taskList/index.ts

@ -39,7 +39,7 @@ Page({ @@ -39,7 +39,7 @@ Page({
getList(newPage = 1) {
wx.ajax({
method: 'GET',
url: '?r=igg4/doctor/task/list',
url: '?r=zd/doctor/task/list',
data: {
page: newPage,
},
@ -156,12 +156,12 @@ Page({ @@ -156,12 +156,12 @@ Page({
const { Id } = list[index]
wx.showModal({
title: '确认取消发送?',
confirmColor: '#62bed0',
confirmColor: 'rgba(22, 121, 203, 1)',
success: (res) => {
if (res.confirm) {
wx.ajax({
method: 'POST',
url: '?r=igg4/doctor/task/cancel',
url: '?r=zd/doctor/task/cancel',
data: {
TaskId: Id,
},
@ -178,12 +178,12 @@ Page({ @@ -178,12 +178,12 @@ Page({
const { Id } = list[index]
wx.showModal({
title: '确认停止发送?',
confirmColor: '#62bed0',
confirmColor: 'rgba(22, 121, 203, 1)',
success: (res) => {
if (res.confirm) {
wx.ajax({
method: 'POST',
url: '?r=igg4/doctor/task/stop',
url: '?r=zd/doctor/task/stop',
data: {
TaskId: Id,
},
@ -200,12 +200,12 @@ Page({ @@ -200,12 +200,12 @@ Page({
const { Id } = list[index]
wx.showModal({
title: '确认删除?',
confirmColor: '#62bed0',
confirmColor: 'rgba(22, 121, 203, 1)',
success: (res) => {
if (res.confirm) {
wx.ajax({
method: 'POST',
url: '?r=igg4/doctor/task/delete',
url: '?r=zd/doctor/task/delete',
data: {
TaskId: Id,
},

2
src/doctor/pages/d_trans/index.ts

@ -12,7 +12,7 @@ Page({ @@ -12,7 +12,7 @@ Page({
handleLoginOut() {
wx.ajax({
method: 'POST',
url: '?r=igg4/doctor/account/reg-logout',
url: '?r=zd/doctor/account/reg-logout',
data: {},
}).then((_res) => {
app.globalData.loginType = 1

4
src/doctor/pages/d_transfer/index.ts

@ -31,7 +31,7 @@ Page({ @@ -31,7 +31,7 @@ Page({
const { search, ProvinceId, CityId } = this.data
wx.ajax({
method: 'GET',
url: '?r=igg4/doctor/doctor-recommend/get-doctor-list',
url: '?r=zd/doctor/doctor-recommend/get-doctor-list',
data: {
page: newPage,
search,
@ -80,7 +80,7 @@ Page({ @@ -80,7 +80,7 @@ Page({
const { list } = this.data
const { index } = e.currentTarget.dataset
const item: any = list[index]
const url = `${app.globalData.url}?r=igg4/doctor/doctor-recommend/get-rec-code&loginState=${app.globalData.loginState}&recommendDoctorId=${item.doctorId}`
const url = `${app.globalData.url}?r=zd/doctor/doctor-recommend/get-rec-code&loginState=${app.globalData.loginState}&recommendDoctorId=${item.doctorId}`
app.mpBehavior({ doctor: true, PageName: 'BTN_DOCTORRECOMMENDEDREFERRALPAGERECOMMENDCODE' })
this.setData({
toastShow: true,

8
src/doctor/pages/d_transferDetail/index.ts

@ -29,8 +29,8 @@ Page({ @@ -29,8 +29,8 @@ Page({
const { id, type } = this.data
const url =
type == '1'
? '?r=igg4/doctor/doctor-recommend/get-rec-stat-doctor'
: '?r=igg4/doctor/doctor-recommend/get-be-rec-stat-doctor'
? '?r=zd/doctor/doctor-recommend/get-rec-stat-doctor'
: '?r=zd/doctor/doctor-recommend/get-be-rec-stat-doctor'
wx.ajax({
method: 'GET',
url,
@ -47,8 +47,8 @@ Page({ @@ -47,8 +47,8 @@ Page({
const { id, type } = this.data
const url =
type == '1'
? '?r=igg4/doctor/doctor-recommend/get-rec-record-list'
: '?r=igg4/doctor/doctor-recommend/get-be-rec-record-list'
? '?r=zd/doctor/doctor-recommend/get-rec-record-list'
: '?r=zd/doctor/doctor-recommend/get-be-rec-record-list'
wx.ajax({
method: 'GET',
url,

4
src/doctor/pages/d_transferLog/index.ts

@ -38,8 +38,8 @@ Page({ @@ -38,8 +38,8 @@ Page({
getList(newPage = 1) {
const { active } = this.data
const url = {
0: '?r=igg4/doctor/doctor-recommend/get-rec-stat-list',
1: '?r=igg4/doctor/doctor-recommend/get-be-rec-stat-list',
0: '?r=zd/doctor/doctor-recommend/get-rec-stat-list',
1: '?r=zd/doctor/doctor-recommend/get-be-rec-stat-list',
}[active]
if (newPage == 1) {
app.mpBehavior({

131
src/doctor/pages/d_userInfo/index.scss

@ -2,90 +2,69 @@ page { @@ -2,90 +2,69 @@ page {
background: #f2f4f5;
}
.page {
padding: 164rpx 30rpx 40rpx;
padding: 40rpx 30rpx;
.container {
position: relative;
padding: 92rpx 30rpx 64rpx;
background: #ffffff;
border-radius: 24rpx 24rpx 24rpx 24rpx;
.avatar {
position: absolute;
top: -90rpx;
left: 50%;
transform: translateX(-50%);
border-radius: 24rpx;
padding: 0 30rpx;
.row {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.avatar-user {
flex-shrink: 0;
width: 156rpx;
height: 156rpx;
border-radius: 50%;
padding: 30rpx 0;
gap: 20rpx;
border-bottom: 1rpx solid #f2f4f5;
&:last-child {
border-bottom: none;
}
.edit {
margin-top: -15rpx;
padding: 8rpx 24rpx;
background: #f2f4f5;
border-radius: 108rpx 108rpx 108rpx 108rpx;
font-size: 24rpx;
color: rgba(40, 48, 49, 1);
display: flex;
align-items: center;
line-height: 1;
.icon {
margin-right: 8rpx;
width: 24rpx;
height: 24rpx;
}
}
}
.row {
margin-top: 64rpx;
display: flex;
justify-content: space-between;
.label {
flex-shrink: 0;
font-size: 32rpx;
color: rgba(154, 161, 162, 1);
width: 6em;
width: 5em;
font-size: 36rpx;
color: rgba(33, 33, 32, 0.30);
line-height: 48rpx;
}
.content {
flex: 1;
font-size: 36rpx;
color: rgba(33, 33, 32, 1);
line-height: 48rpx;
word-break: break-all;
.avatar-small {
width: 128rpx;
height: 128rpx;
border-radius: 50%;
}
.edit-text {
font-size: 36rpx;
color: rgba(22, 121, 203, 1);
}
}
.switch-row {
flex: 1;
display: flex;
justify-content: flex-end;
.switch {
transform: scale(0.8);
}
}
.content {
flex: 1;
font-size: 32rpx;
color: rgba(40, 48, 49, 1);
}
.option {
flex-shrink: 0;
display: flex;
align-items: center;
.change {
font-size: 32rpx;
color: rgba(98, 190, 208, 1);
}
.icon {
color: #d4d9da;
}
}
}
}
.switch-btn {
margin: 64rpx 0;
margin-top: 64rpx;
font-size: 36rpx;
color: rgba(255, 255, 255, 1);
display: flex;
align-items: center;
justify-content: center;
height: 84rpx;
background: #67baca;
border-radius: 64rpx 64rpx 64rpx 64rpx;
background: rgba(22, 121, 203, 1);
border-radius: 64rpx;
&.logout {
margin-top: 32rpx;
background: #fff;
color: rgba(22, 121, 203, 1);
border: 2rpx solid rgba(22, 121, 203, 1);
}
}
}
@ -94,8 +73,8 @@ page { @@ -94,8 +73,8 @@ page {
.title {
display: flex;
justify-content: center;
font-size: 36rpx;
color: rgba(40, 48, 49, 1);
font-size: 40rpx;
color: rgba(33, 33, 32, 1);
font-weight: bold;
}
.textarea {
@ -105,7 +84,7 @@ page { @@ -105,7 +84,7 @@ page {
height: 180rpx;
box-sizing: border-box;
background: #f7f8f9;
border-radius: 24rpx 24rpx 24rpx 24rpx;
border-radius: 12rpx;
border: 2rpx solid #f8f9f9;
font-size: 32rx;
}
@ -114,37 +93,37 @@ page { @@ -114,37 +93,37 @@ page {
.w-row {
display: grid;
grid-template-columns: 156rpx repeat(2, 1fr);
background-color: rgba(242, 244, 245, 1);
background-color: rgba(232, 243, 253, 1);
&:nth-of-type(2n) {
background-color: rgba(247, 248, 249, 1);
background-color: rgba(205, 232, 255, 1);
}
&:not(:last-of-type) {
border-bottom: 1px solid #fff;
}
&:first-of-type {
border-radius: 24rpx 24rpx 0 0;
border-radius: 12rpx 12rpx 0 0;
.name {
border-radius: 24rpx 0 0 0;
border-radius: 12rpx 0 0 0;
}
}
&:last-of-type {
border-radius: 0 0 24rpx 24rpx;
border-radius: 0 0 12rpx 12rpx;
.name {
border-radius: 0 0 0 24rpx;
border-radius: 0 0 0 12rpx;
}
}
.name {
height: 76rpx;
font-size: 32rpx;
font-size: 36rpx;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
background-color: rgba(103, 186, 202, 1);
background-color: rgba(85, 164, 230, 1);
}
.item {
position: relative;
font-size: 32rpx;
font-size: 36rpx;
color: rgba(103, 113, 114, 1);
display: flex;
align-items: center;
@ -159,7 +138,7 @@ page { @@ -159,7 +138,7 @@ page {
display: none;
}
&.active {
background-color: rgba(237, 252, 255, 1);
// background-color: rgba(237, 252, 255, 1);
.icon {
display: block;
}
@ -169,14 +148,14 @@ page { @@ -169,14 +148,14 @@ page {
}
.submit {
margin-top: 32rpx;
height: 84rpx;
height: 96rpx;
display: flex;
justify-content: center;
align-items: center;
background: #67baca;
background: linear-gradient( 90deg, #293B9F 0%, #1679CB 100%);
font-size: 36rpx;
color: #fff;
border-radius: 64rpx 64rpx 64rpx 64rpx;
border-radius: 12rpx;
}
}

8
src/doctor/pages/d_userInfo/index.ts

@ -64,7 +64,7 @@ Page({ @@ -64,7 +64,7 @@ Page({
getDetail() {
wx.ajax({
method: 'GET',
url: '?r=igg4/doctor/account/info',
url: '?r=zd/doctor/account/info',
data: {},
}).then((res) => {
const { ClinicList } = this.data
@ -164,7 +164,7 @@ Page({ @@ -164,7 +164,7 @@ Page({
}
wx.ajax({
method: 'POST',
url: '?r=igg4/doctor/account/update-info',
url: '?r=zd/doctor/account/update-info',
data: {
Introduce: this.data.doctor.Introduce,
Clinic,
@ -209,12 +209,12 @@ Page({ @@ -209,12 +209,12 @@ Page({
handleLoginOut() {
wx.showModal({
title: '确认退出?',
confirmColor: '#62bed0',
confirmColor: 'rgba(22, 121, 203, 1)',
success: (res) => {
if (res.confirm) {
wx.ajax({
method: 'POST',
url: '?r=igg4/doctor/account/reg-logout',
url: '?r=zd/doctor/account/reg-logout',
data: {},
}).then((_res) => {
app.globalData.loginType = 1

28
src/doctor/pages/d_userInfo/index.wxml

@ -1,26 +1,22 @@ @@ -1,26 +1,22 @@
<view class="page">
<view class="container">
<view class="avatar">
<image class="avatar-user" mode="aspectFill" src="{{doctor.Img}}"></image>
<!-- <view class="edit"> -->
<!-- <image class="icon" src="{{imageUrl}}/doctor/icon-edit.png?t={{Timestamp}}"></image> -->
<!-- 更换 -->
<!-- </view> -->
<view class="row">
<view class="label">头像</view>
<view class="content">
<image class="avatar-small" mode="aspectFill" src="{{doctor.Img}}"></image>
</view>
</view>
<view class="row">
<view class="label">姓名</view>
<view class="content">{{doctor.Name}}</view>
<view class="option"></view>
</view>
<view class="row" bind:tap="handleChangePhone">
<view class="row">
<view class="label">电话</view>
<view class="content">{{doctor.Telephone}}</view>
<view class="option"><view class="change">更换</view></view>
</view>
<view class="row">
<view class="label">医院</view>
<view class="content">{{hospital.Name}}</view>
<view class="option"></view>
</view>
<view class="row">
<view class="label">多院区出诊</view>
@ -34,21 +30,15 @@ @@ -34,21 +30,15 @@
</view>
</view>
<view class="row" bind:tap="handleWeek">
<view class="label">门诊时间</view>
<view class="content pre-line">{{doctor.weekName || '暂无'}}</view>
<view class="option"><van-icon class="icon" name="arrow" /></view>
<view class="label">出诊时间</view>
<view class="content">{{doctor.weekName || '暂无'}}<text class="edit-text">编辑</text></view>
</view>
<view class="row" bind:tap="handleBrief">
<view class="label">个人简介</view>
<view class="content">{{doctor.Introduce || '暂无'}}</view>
<view class="option"><van-icon class="icon" name="arrow" /></view>
<view class="content">{{doctor.Introduce || '暂无'}}<text class="edit-text">编辑</text></view>
</view>
</view>
<view class="switch-btn" bind:tap="handleSwitch">切换账号</view>
<view class="switch-btn" bind:tap="handleLoginOut">
退出登录
</view>
</view>
<van-popup

6
src/gift/pages/conformOrder/index.ts

@ -28,7 +28,7 @@ Page({ @@ -28,7 +28,7 @@ Page({
getDefaultAddress() {
wx.ajax({
method: "GET",
url: "?r=igg4/patient-address/get-default-address",
url: "?r=zd/patient-address/get-default-address",
data: {},
}).then((res) => {
this.setData({
@ -39,7 +39,7 @@ Page({ @@ -39,7 +39,7 @@ Page({
getDetail() {
wx.ajax({
method: "GET",
url: "?r=igg4/gift-order/get-order-detail",
url: "?r=zd/gift-order/get-order-detail",
data: {
orderId: this.data.id,
},
@ -70,7 +70,7 @@ Page({ @@ -70,7 +70,7 @@ Page({
}
wx.ajax({
method: "POST",
url: "?r=igg4/gift-order/confirm-order",
url: "?r=zd/gift-order/confirm-order",
data: {
orderId: this.data.id,
addressId: this.data.addressDetail.addressId,

2
src/gift/pages/dtpDurg/index.ts

@ -17,7 +17,7 @@ Page({ @@ -17,7 +17,7 @@ Page({
getDetail() {
wx.ajax({
method: "GET",
url: "?r=igg4/dtp-pharmacy/detail",
url: "?r=zd/dtp-pharmacy/detail",
data: {
Id: this.data.id,
},

10
src/gift/pages/giftDetail/index.ts

@ -33,7 +33,7 @@ Page({ @@ -33,7 +33,7 @@ Page({
setView() {
wx.ajax({
method: "POST",
url: "?r=igg4/gift-spu/set-visit-num",
url: "?r=zd/gift-spu/set-visit-num",
data: { spuId: this.data.id },
showMsg: false,
});
@ -41,7 +41,7 @@ Page({ @@ -41,7 +41,7 @@ Page({
getDetail() {
wx.ajax({
method: "GET",
url: "?r=igg4/gift-spu/get-detail",
url: "?r=zd/gift-spu/get-detail",
data: {
spuId: this.data.id,
},
@ -60,7 +60,7 @@ Page({ @@ -60,7 +60,7 @@ Page({
getProtocol() {
wx.ajax({
method: "GET",
url: "?r=igg4/agreement/get-user-agreement",
url: "?r=zd/agreement/get-user-agreement",
data: {},
}).then((res) => {
this.setData({
@ -71,7 +71,7 @@ Page({ @@ -71,7 +71,7 @@ Page({
setProtocol() {
wx.ajax({
method: "POST",
url: "?r=igg4/agreement/set-user-agreement",
url: "?r=zd/agreement/set-user-agreement",
data: {},
});
},
@ -135,7 +135,7 @@ Page({ @@ -135,7 +135,7 @@ Page({
}
wx.ajax({
method: "POST",
url: "?r=igg4/gift-order/place-order",
url: "?r=zd/gift-order/place-order",
data: {
giftId: this.data.specVecItem.giftId,
count: this.data.num,

6
src/gift/pages/giftList/index.ts

@ -34,7 +34,7 @@ Page({ @@ -34,7 +34,7 @@ Page({
getScore() {
wx.ajax({
method: "GET",
url: "?r=igg4/patient-score/get-self-score",
url: "?r=zd/patient-score/get-self-score",
data: {},
}).then((res) => {
this.setData({
@ -45,7 +45,7 @@ Page({ @@ -45,7 +45,7 @@ Page({
getCateList() {
wx.ajax({
method: "GET",
url: "?r=igg4/gift-spu/get-cate-all-list",
url: "?r=zd/gift-spu/get-cate-all-list",
data: {},
}).then((res) => {
this.setData({
@ -63,7 +63,7 @@ Page({ @@ -63,7 +63,7 @@ Page({
getList(newPage = 1) {
wx.ajax({
method: "POST",
url: `?r=igg4/gift-spu/get-list&page=${newPage}`,
url: `?r=zd/gift-spu/get-list&page=${newPage}`,
data: {
cateId: this.data.cateId ? [this.data.cateId] : [],
},

2
src/gift/pages/myGift/index.ts

@ -17,7 +17,7 @@ Page({ @@ -17,7 +17,7 @@ Page({
getList(newPage = 1) {
wx.ajax({
method: "POST",
url: "?r=igg4/gift-order/get-order-list",
url: "?r=zd/gift-order/get-order-list",
data: {
page: newPage,
},

18
src/gift/pages/myHealthRecord/index.ts

@ -147,7 +147,7 @@ Page({ @@ -147,7 +147,7 @@ Page({
getCale() {
wx.ajax({
method: 'GET',
url: '?r=igg4/adl/cale',
url: '?r=zd/adl/cale',
data: {
Month: this.data.calendarDate,
},
@ -194,7 +194,7 @@ Page({ @@ -194,7 +194,7 @@ Page({
getMedicationAlertAdl() {
wx.ajax({
method: 'GET',
url: '?r=igg4/medication/medication-alert-adl',
url: '?r=zd/medication/medication-alert-adl',
data: {},
}).then((res) => {
this.setData({
@ -295,7 +295,7 @@ Page({ @@ -295,7 +295,7 @@ Page({
const { BeginMonth, EndMonth, Type, Num } = this.data
wx.ajax({
method: 'GET',
url: '?r=igg4/adl/composite-list',
url: '?r=zd/adl/composite-list',
data: {
Type: Number(Type) === 4 ? 2 : 1,
DateType: Number(Type) === 4 ? '' : Number(Type),
@ -350,7 +350,7 @@ Page({ @@ -350,7 +350,7 @@ Page({
const { BeginMonth, EndMonth, Type, Num } = this.data
wx.ajax({
method: 'GET',
url: '?r=igg4/adl/list',
url: '?r=zd/adl/list',
data: {
Type: Number(Type) === 4 ? 2 : 1,
DateType: Number(Type) === 4 ? '' : Number(Type),
@ -390,7 +390,7 @@ Page({ @@ -390,7 +390,7 @@ Page({
const { BeginMonth, EndMonth, Type, Num } = this.data
wx.ajax({
method: 'GET',
url: '?r=igg4/medication/list',
url: '?r=zd/medication/list',
data: {
Type: Number(Type) === 4 ? 2 : 1,
DateType: Number(Type) === 4 ? '' : Number(Type),
@ -430,7 +430,7 @@ Page({ @@ -430,7 +430,7 @@ Page({
const { BeginMonth, EndMonth, Type, Num } = this.data
wx.ajax({
method: 'GET',
url: '?r=igg4/adl/list',
url: '?r=zd/adl/list',
data: {
Type: Number(Type) === 4 ? 2 : 1,
DateType: Number(Type) === 4 ? '' : Number(Type),
@ -455,7 +455,7 @@ Page({ @@ -455,7 +455,7 @@ Page({
if (Number(Type) != 4) {
wx.ajax({
method: 'GET',
url: '?r=igg4/adl/graph',
url: '?r=zd/adl/graph',
data: {
Type: Number(Type) === 4 ? 2 : 1,
DateType: Number(Type) === 4 ? '' : Number(Type),
@ -996,7 +996,7 @@ Page({ @@ -996,7 +996,7 @@ Page({
if (res.confirm) {
wx.ajax({
method: 'POST',
url: '?r=igg4/adl/delete',
url: '?r=zd/adl/delete',
data: {
Id: id,
},
@ -1053,7 +1053,7 @@ Page({ @@ -1053,7 +1053,7 @@ Page({
if (res.confirm) {
wx.ajax({
method: 'POST',
url: '?r=igg4/medication/delete',
url: '?r=zd/medication/delete',
data: {
Id: id,
},

2
src/gift/pages/orderDetail/index.ts

@ -16,7 +16,7 @@ Page({ @@ -16,7 +16,7 @@ Page({
getDetail() {
wx.ajax({
method: "GET",
url: "?r=igg4/gift-order/get-order-detail",
url: "?r=zd/gift-order/get-order-detail",
data: {
orderId: this.data.id,
},

2
src/gift/pages/orderEnd/index.ts

@ -16,7 +16,7 @@ Page({ @@ -16,7 +16,7 @@ Page({
getDetail() {
wx.ajax({
method: "GET",
url: "?r=igg4/gift-order/get-order-detail",
url: "?r=zd/gift-order/get-order-detail",
data: {
orderId: this.data.id,
},

4
src/gift/pages/priceDetail/index.ts

@ -19,7 +19,7 @@ Page({ @@ -19,7 +19,7 @@ Page({
getDetail() {
wx.ajax({
method: "GET",
url: "?r=igg4/patient-score/get-self-score",
url: "?r=zd/patient-score/get-self-score",
data: {},
}).then((res) => {
this.setData({
@ -30,7 +30,7 @@ Page({ @@ -30,7 +30,7 @@ Page({
getList(newPage = 1) {
wx.ajax({
method: "GET",
url: "?r=igg4/patient-score/get-self-record-list",
url: "?r=zd/patient-score/get-self-record-list",
data: { page: newPage },
}).then((res) => {
let list = res.page == 1 ? res.list : [...this.data.list, ...res.list];

2
src/gift/pages/scoreRule/index.ts

@ -19,7 +19,7 @@ Page({ @@ -19,7 +19,7 @@ Page({
getDetail() {
wx.ajax({
method: "GET",
url: "?r=igg4/patient-score/get-score-explain",
url: "?r=zd/patient-score/get-score-explain",
data: {},
}).then((res) => {
this.setData({

8
src/gift/pages/siteEdit/index.ts

@ -44,7 +44,7 @@ Page({ @@ -44,7 +44,7 @@ Page({
getDetail() {
wx.ajax({
method: "GET",
url: "?r=igg4/patient-address/get-address-detail",
url: "?r=zd/patient-address/get-address-detail",
data: {
addressId: this.data.addressId,
},
@ -182,7 +182,7 @@ Page({ @@ -182,7 +182,7 @@ Page({
getLocationInfo() {
wx.ajax({
method: "GET",
url: "?r=igg4/nrdl-hospital/location-info",
url: "?r=zd/nrdl-hospital/location-info",
data: {
lat: this.data.LAT,
lng: this.data.LNG,
@ -236,7 +236,7 @@ Page({ @@ -236,7 +236,7 @@ Page({
};
wx.ajax({
method: "POST",
url: "?r=igg4/patient-address/save-address",
url: "?r=zd/patient-address/save-address",
data: params,
}).then(() => {
wx.navigateBack();
@ -250,7 +250,7 @@ Page({ @@ -250,7 +250,7 @@ Page({
if (res.confirm) {
wx.ajax({
method: "POST",
url: "?r=igg4/patient-address/del-address",
url: "?r=zd/patient-address/del-address",
data: {
addressId: this.data.addressId,
},

2
src/gift/pages/siteList/index.ts

@ -17,7 +17,7 @@ Page({ @@ -17,7 +17,7 @@ Page({
getList(newPage = 1) {
wx.ajax({
method: "GET",
url: "?r=igg4/patient-address/get-list",
url: "?r=zd/patient-address/get-list",
data: {
page: newPage,
},

4
src/gift/pages/vipCert/index.ts

@ -35,7 +35,7 @@ Page({ @@ -35,7 +35,7 @@ Page({
handleAiPass(imgUrl: string) {
wx.ajax({
method: "POST",
url: "?r=igg4/common/medicine-image-verify",
url: "?r=zd/common/medicine-image-verify",
data: {
ImageUrl: imgUrl,
},
@ -85,7 +85,7 @@ Page({ @@ -85,7 +85,7 @@ Page({
wx.ajax({
method: "POST",
url: "?r=igg4/account/upload-use-drugs-audit-img",
url: "?r=zd/account/upload-use-drugs-audit-img",
data: {
diagnoseImg,
aiPass: this.data.aiPass,

2
src/gift/pages/vipPending/index.ts

@ -17,7 +17,7 @@ Page({ @@ -17,7 +17,7 @@ Page({
getCode() {
wx.ajax({
method: "GET",
url: "?r=igg4/common/get-channel-wx-code",
url: "?r=zd/common/get-channel-wx-code",
data: {
ChannelType: "11",
Id: "",

2
src/gift/pages/vipReject/index.json

@ -1,7 +1,5 @@ @@ -1,7 +1,5 @@
{
"navigationBarTitleText": "",
"navigationStyle": "custom",
"disableSwipeBack": true,
"usingComponents": {
"navBar": "/components/navBar/navBar",
"van-icon": "@vant/weapp/icon/index",

108
src/gift/pages/vipReject/index.scss

@ -2,86 +2,28 @@ @@ -2,86 +2,28 @@
position: relative;
box-sizing: border-box;
background-color: #fff;
.bg {
width: 100%;
}
.page-container {
position: absolute;
top: 0;
left: 0;
width: 100%;
min-height: 100vh;
display: flex;
flex-direction: column;
padding-bottom: 76rpx;
.navbar {
flex-shrink: 0;
padding: 0 20rpx 0;
display: flex;
align-items: center;
font-size: 40rpx;
color: #cf5375;
font-style: italic;
font-weight: bold;
.icon {
flex-shrink: 0;
margin-right: 9rpx;
width: 42rpx;
height: 46rpx;
}
}
.tip {
position: relative;
margin: 180rpx auto 0;
width: 510rpx;
padding: 20rpx 70rpx;
box-sizing: border-box;
background-color: #bb232c;
border-radius: 24rpx;
word-break: break-all;
.icon {
margin-right: 16rpx;
width: 48rpx;
height: 48rpx;
vertical-align: bottom;
}
.text {
font-size: 26rpx;
color: #fff;
line-height: 48rpx;
}
&::after {
position: absolute;
// bottom: -13.5px;
bottom: 0;
left: 50%;
transform: translate(-50%, 90%);
content: "";
width: 0;
height: 0;
border-style: solid;
border-width: 12.5px 8px 0 8px;
border-color: #bb232c transparent transparent transparent;
}
}
.page-icon {
margin: 58rpx auto 0;
display: block;
width: 280rpx;
height: 280rpx;
width: 240rpx;
height: 240rpx;
border-radius: 50%;
}
.page-title {
margin-top: 64rpx;
font-size: 56rpx;
color: #333333;
color: #222222;
font-weight: bold;
text-align: center;
}
.sub-title {
margin-top: 32rpx;
font-size: 32rpx;
color: #aaa;
font-size: 36rpx;
color: rgba(34, 34, 34, 0.7);
text-align: center;
}
.footer {
@ -97,45 +39,25 @@ @@ -97,45 +39,25 @@
.next {
flex: 1;
text-align: center;
height: 88rpx;
line-height: 88rpx;
height: 96rpx;
line-height: 96rpx;
text-align: center;
border: 2rpx solid #e04775;
border-radius: 24rpx;
font-size: 34rpx;
border-radius: 16rpx;
font-size: 40rpx;
font-weight: bold;
background-color: #e04775;
background: linear-gradient(0deg, #0eb66d, #00d277);
color: #fff;
}
}
.divider {
margin: 48rpx auto 0;
width: 300rpx;
}
.ohter {
margin-top: 48rpx;
margin-top: 200rpx;
display: flex;
justify-content: center;
.col {
margin: 0 48rpx;
padding: 0 20rpx;
height: 48rpx;
border-radius: 24rpx;
background: #eeeeee;
font-size: 24rpx;
color: #666666;
display: flex;
align-items: center;
justify-content: center;
&::after {
border: none;
outline: none;
}
.icon {
margin-right: 12rpx;
width: 48rpx;
height: 48rpx;
}
padding: 16rpx 88rpx;
font-size: 36rpx;
color: rgba(14, 182, 109, 1);
border: 1px dashed rgba(14, 182, 109, 0.21);
}
}
}

12
src/gift/pages/vipReject/index.wxml

@ -1,23 +1,13 @@ @@ -1,23 +1,13 @@
<view class="page">
<image class="bg" mode="widthFix" src="{{imageUrl}}1/login-bg.png?t={{Timestamp}}"></image>
<view class="page-container">
<navBar title="" back="{{true}}" bind:back="handleBack"></navBar>
<view class="tip">
<image class="icon" src="{{imageUrl}}1/warn.png?t={{Timestamp}}"></image>
<text class="text">未通过原因:{{userInfo.UseDrugsRejectReason}}</text>
</view>
<image class="page-icon" src="{{imageUrl}}1/cert-reject.png?t={{Timestamp}}"></image>
<image class="page-icon" src="/images/icon50.png"></image>
<view class="page-title">审核未通过</view>
<view class="sub-title">很遗憾您的审核未通过</view>
<view class="footer">
<view class="next" bind:tap="handleSubmit">重新提交</view>
</view>
<view class="viewider">
<van-divider contentPosition="center" textColor="#aaaaaa">或者</van-divider>
</view>
<view class="ohter">
<view class="col" bind:tap="handleVisitors">
<image class="icon" src="{{imageUrl}}1/look.png?t={{Timestamp}}"></image>
回到首页
</view>
</view>

BIN
src/images/bg14.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

BIN
src/images/bg15.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
src/images/bg16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 KiB

BIN
src/images/bg17.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

BIN
src/images/bg18.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
src/images/bg19.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
src/images/bg20.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

BIN
src/images/bg21.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

BIN
src/images/doctor/tabbar/1-active.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 829 B

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
src/images/doctor/tabbar/1.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 565 B

BIN
src/images/doctor/tabbar/2-active.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
src/images/doctor/tabbar/2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
src/images/doctor/tabbar/3-active.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
src/images/doctor/tabbar/3.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/images/doctor/tabbar/4-active.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
src/images/doctor/tabbar/4.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 888 B

BIN
src/images/icon19.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 800 B

After

Width:  |  Height:  |  Size: 553 B

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save