Browse Source

复诊 页面部分开发

dev
kola-web 1 week ago
parent
commit
2312f7277f
  1. 18
      project.private.config.json
  2. 4
      src/app.json
  3. 51
      src/components/popup/index.scss
  4. 14
      src/components/popup/index.wxml
  5. 45
      src/components/toast/index.scss
  6. 13
      src/components/toast/index.wxml
  7. 161
      src/pages/d_interactiveDoctor/index.scss
  8. 2
      src/pages/d_interactiveDoctor/index.ts
  9. 44
      src/pages/d_interactiveDoctor/index.wxml
  10. 5
      src/patient/pages/follow/index.json
  11. 110
      src/patient/pages/follow/index.scss
  12. 8
      src/patient/pages/follow/index.ts
  13. 22
      src/patient/pages/follow/index.wxml
  14. 9
      src/patient/pages/followForm/index.json
  15. 172
      src/patient/pages/followForm/index.scss
  16. 23
      src/patient/pages/followForm/index.ts
  17. 69
      src/patient/pages/followForm/index.wxml
  18. 103
      src/patient/pages/index/index.scss
  19. 11
      src/patient/pages/index/index.ts
  20. 32
      src/patient/pages/index/index.wxml
  21. 157
      src/patient/pages/interactivePatient/index.scss
  22. 48
      src/patient/pages/interactivePatient/index.wxml
  23. 30
      src/patient/pages/my/index.scss
  24. 15
      src/patient/pages/my/index.wxml

18
project.private.config.json

@ -23,13 +23,27 @@
"miniprogram": { "miniprogram": {
"list": [ "list": [
{ {
"name": "医生端-眼突度-对比", "name": "复诊提醒-录入页",
"pathName": "pages/d_noteDiffData/index", "pathName": "patient/pages/followForm/index",
"query": "", "query": "",
"scene": null, "scene": null,
"launchMode": "default" "launchMode": "default"
}, },
{ {
"name": "复诊列表",
"pathName": "patient/pages/follow/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "医生端-眼突度-对比",
"pathName": "pages/d_noteDiffData/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "医生端-日记列表", "name": "医生端-日记列表",
"pathName": "pages/d_noteList/index", "pathName": "pages/d_noteList/index",
"query": "", "query": "",

4
src/app.json

@ -83,7 +83,9 @@
"pages/noteHistory/index", "pages/noteHistory/index",
"pages/noteDiff/index", "pages/noteDiff/index",
"pages/noteDiffEdit/index", "pages/noteDiffEdit/index",
"pages/imageProcessing/index" "pages/imageProcessing/index",
"pages/follow/index",
"pages/followForm/index"
] ]
}, },
{ {

51
src/components/popup/index.scss

@ -701,6 +701,57 @@
} }
} }
.popup19 {
.badge {
position: relative;
z-index: 1;
display: block;
width: 302rpx;
height: 278rpx;
margin: 0 auto -192rpx;
text-align: center;
}
.popup-container {
width: 670rpx;
box-sizing: border-box;
padding: 188rpx 48rpx 44rpx;
border-radius: 32rpx;
background: #fff linear-gradient(0deg, #fff, #fbeaf4 100%) no-repeat top center/100% 160rpx;
.title {
font-size: 44rpx;
color: rgba(33, 29, 46, 1);
font-weight: bold;
text-align: center;
}
.content {
margin-top: 28rpx;
font-size: 40rpx;
color: rgba(33, 29, 46, 1);
text-align: center;
}
.p-footer {
margin-top: 42rpx;
display: flex;
gap: 30rpx;
.sure {
flex: 1;
font-size: 36rpx;
border-radius: 100rpx;
height: 88rpx;
box-sizing: border-box;
}
.sure {
padding: 0;
background: linear-gradient(180deg, #e98ff8 0%, #b073ff 100%);
color: #ffffff;
display: flex;
align-items: center;
justify-content: center;
}
}
}
}
.close { .close {
margin: 48rpx auto 0; margin: 48rpx auto 0;
display: block; display: block;

14
src/components/popup/index.wxml

@ -244,15 +244,23 @@
<view class="popup18" wx:if="{{type==='popup18'}}"> <view class="popup18" wx:if="{{type==='popup18'}}">
<image class="badge" src="{{imageUrl}}icon156.png?t={{Timestamp}}"></image> <image class="badge" src="{{imageUrl}}icon156.png?t={{Timestamp}}"></image>
<view class="popup-container"> <view class="popup-container">
<view class="title"> <view class="title">是否替换已有基准照</view>
是否替换已有基准照
</view>
<view class="p-footer"> <view class="p-footer">
<view class="cancel" bind:tap="handleCancel">取消</view> <view class="cancel" bind:tap="handleCancel">取消</view>
<view class="sure" bind:tap="handleOk">确认替换</view> <view class="sure" bind:tap="handleOk">确认替换</view>
</view> </view>
</view> </view>
</view> </view>
<view class="popup19" wx:if="{{type==='popup19'}}">
<image class="badge" src="/images/icon173.png"></image>
<view class="popup-container">
<view class="title">档案已保存</view>
<view class="content">下次就医时可出示该卡给医生</view>
<view class="p-footer">
<view class="sure" bind:tap="handleOk">知道了</view>
</view>
</view>
</view>
<image <image
wx:if="{{params.close}}" wx:if="{{params.close}}"

45
src/components/toast/index.scss

@ -2772,3 +2772,48 @@
} }
} }
} }
.popup-follow-guide {
.badge {
position: relative;
z-index: 1;
display: block;
width: 412rpx;
height: 268rpx;
margin: 0 auto -200rpx;
text-align: center;
}
.popup-container {
width: 670rpx;
box-sizing: border-box;
padding: 208rpx 48rpx 44rpx;
border-radius: 32rpx;
background: #fff linear-gradient(0deg, #fff, #fbeaf4 100%) no-repeat top center/100% 160rpx;
.title {
font-size: 40rpx;
color: rgba(33, 29, 46, 1);
font-weight: bold;
text-align: center;
}
.p-footer {
margin-top: 42rpx;
display: flex;
gap: 30rpx;
.sure {
flex: 1;
font-size: 36rpx;
border-radius: 100rpx;
height: 88rpx;
box-sizing: border-box;
}
.sure {
padding: 0;
background: linear-gradient(180deg, #e98ff8 0%, #b073ff 100%);
color: #ffffff;
display: flex;
align-items: center;
justify-content: center;
}
}
}
}

13
src/components/toast/index.wxml

@ -853,6 +853,19 @@
<image class="guide" src="{{imageUrl}}bg59.png?t={{Timestamp}}"></image> <image class="guide" src="{{imageUrl}}bg59.png?t={{Timestamp}}"></image>
</view> </view>
</view> </view>
<view class="popup-follow-guide" wx:if="{{type==='followGuide'}}">
<image class="badge" src="/images/icon174.png"></image>
<view class="popup-container" bind:tap="handleCancel">
<view class="title">
记录复诊信息
<view></view>
持续更新健康情况
</view>
<view class="p-footer">
<view class="sure" bind:tap="handleOk">去记录</view>
</view>
</view>
</view>
<van-icon wx:if="{{params.close}}" class="popup-close" bind:tap="handleCancel" name="close" /> <van-icon wx:if="{{params.close}}" class="popup-close" bind:tap="handleCancel" name="close" />
</van-popup> </van-popup>

161
src/pages/d_interactiveDoctor/index.scss

@ -186,6 +186,44 @@ page {
} }
} }
} }
.follow-result {
margin-bottom: 32rpx;
padding: 32rpx;
border-radius: 32rpx;
background-color: #fff;
.title {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
}
.list {
margin-top: 20rpx;
padding: 24rpx;
background-color: rgba(246, 248, 249, 1);
border-radius: 16rpx;
.list-item {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
display: flex;
.blob {
font-weight: bold;
}
&::before {
margin-right: 20rpx;
margin-top: 20rpx;
display: inline-block;
flex-shrink: 0;
content: '';
width: 10rpx;
height: 10rpx;
border-radius: 50%;
background-color: #7d7d82;
}
&:not(:first-of-type) {
margin-top: 24rpx;
}
}
}
}
} }
} }
.doctor { .doctor {
@ -457,6 +495,129 @@ page {
} }
} }
} }
.follow {
margin-bottom: 32rpx;
padding: 26rpx 32rpx;
background-color: #fff;
border-radius: 32rpx;
.content {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
}
.f-footer {
margin-top: 24rpx;
display: flex;
gap: 30rpx;
.btn1,
.btn2 {
flex: 1;
font-size: 28rpx;
border-radius: 100rpx;
height: 76rpx;
box-sizing: border-box;
}
.btn1 {
color: #b982ff;
border: 1px solid #b982ff;
display: flex;
align-items: center;
justify-content: center;
}
.btn2 {
padding: 0;
background: linear-gradient(344deg, #ffbcf9 0%, #b982ff 100%);
color: #ffffff;
display: flex;
align-items: center;
justify-content: center;
}
}
}
.follow-form {
margin-bottom: 32rpx;
padding: 26rpx 32rpx;
background-color: #fff;
border-radius: 32rpx;
.content {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
}
.sub {
font-size: 28rpx;
color: rgba(105, 104, 110, 1);
}
.list {
.list-item {
margin-top: 24rpx;
padding: 18rpx 32rpx;
font-size: 28rpx;
color: rgba(105, 104, 110, 1);
line-height: 36rpx;
border-radius: 16rpx;
background-color: rgba(246, 248, 249, 1);
border: 1px solid rgba(246, 248, 249, 1);
box-sizing: border-box;
&.active {
border-color: rgba(185, 130, 255, 1);
background: rgba(250, 246, 255, 1);
color: rgba(185, 130, 255, 1);
}
}
}
.btn {
margin-top: 30rpx;
height: 76rpx;
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(180deg, #e98ff8 0%, #b073ff 100%);
border-radius: 64rpx 64rpx 64rpx 64rpx;
}
}
.follow-reset {
margin-bottom: 32rpx;
padding: 26rpx 32rpx;
background-color: #fff;
border-radius: 32rpx;
.content {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
}
.btn {
margin-top: 30rpx;
height: 76rpx;
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(180deg, #e98ff8 0%, #b073ff 100%);
border-radius: 64rpx 64rpx 64rpx 64rpx;
}
}
.follow-next {
margin-bottom: 32rpx;
padding: 26rpx 32rpx;
background-color: #fff;
border-radius: 32rpx;
.content {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
}
.btn {
margin-top: 30rpx;
height: 76rpx;
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(180deg, #e98ff8 0%, #b073ff 100%);
border-radius: 64rpx 64rpx 64rpx 64rpx;
}
}
} }
} }
.place { .place {

2
src/pages/d_interactiveDoctor/index.ts

@ -4,7 +4,7 @@ const app = getApp<IAppOption>()
interface IMessageItem { interface IMessageItem {
msgId: string msgId: string
msgContentType: '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' // 1:文本 2: 出诊时间 3: adl卡片 4: 语音 5: 欢迎语 6:补充真实姓名 7: 提醒完善信息 8: 复诊卡片 9:患者恢复复诊消息 msgContentType: '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | '13' | '14' | '15' // 1:文本 2: 出诊时间 3: adl卡片 4: 语音 5: 欢迎语 6:补充真实姓名 7: 提醒完善信息 8: 复诊卡片 9:患者恢复复诊消息 12:复诊提醒 13:复诊提醒-快速问答 14:复诊提醒-未复诊鼓励 15:复诊提醒-已复诊结果
msgContent: any msgContent: any
msgVisitTime: string msgVisitTime: string
msgVisitTimeType?: string msgVisitTimeType?: string

44
src/pages/d_interactiveDoctor/index.wxml

@ -69,6 +69,23 @@
<view class="item" wx:if="{{message.ReVisitInfo.other==1}}">9.其他</view> <view class="item" wx:if="{{message.ReVisitInfo.other==1}}">9.其他</view>
</view> </view>
</view> </view>
<view class="follow-result" wx:if="{{message.msgContentType==='15'}}">
<view class="title">医生您好,我刚刚完成了复诊记录:</view>
<view class="list">
<view class="list-item">
<view class="li-content">
<text class="blob">我最近一次复诊时间是:</text>
2025年6月11日
</view>
</view>
<view class="list-item">
<view class="li-content">
<text class="blob">我的方案是:</text>
生物制剂IGF-1R抗体(替妥尤单抗)第2次使用替妥尤单抗
</view>
</view>
</view>
</view>
</view> </view>
</view> </view>
<view class="doctor" wx:if="{{message.msgFromType==='2'}}"> <view class="doctor" wx:if="{{message.msgFromType==='2'}}">
@ -143,6 +160,33 @@
<view class="btn">已复诊</view> <view class="btn">已复诊</view>
</view> </view>
</view> </view>
<view class="follow" wx:elif="{{message.msgContentType==='12'}}">
<view class="content">
您好!出院后的康复需要我们双方共同努力,请问您最近有按照医生的提醒,定期到院复诊吗?
</view>
<view class="f-footer">
<view class="btn1">已复诊</view>
<view class="btn2">未复诊</view>
</view>
</view>
<view class="follow-form" wx:elif="{{message.msgContentType==='13'}}">
<view class="content">
请问您没能按时复诊的主要原因是?
<text class="sub">(多选)</text>
</view>
<view class="list">
<view class="list-item">症状感觉好转,觉得不用去了</view>
</view>
<view class="btn">提交</view>
</view>
<view class="follow-reset" wx:elif="{{message.msgContentType==='14'}}">
<view class="content">规范治疗可获得更好的疗效,减少复发。</view>
<view class="btn">提交</view>
</view>
<view class="follow-next" wx:elif="{{message.msgContentType==='15'}}">
<view class="content">坚持规范治疗,继续加油,愿身体稳步向好!</view>
<view class="btn">提交</view>
</view>
</view> </view>
<view class="avatar"> <view class="avatar">
<image class="a-img" mode="aspectFill" src="{{doctor.Img}}"></image> <image class="a-img" mode="aspectFill" src="{{doctor.Img}}"></image>

5
src/patient/pages/follow/index.json

@ -0,0 +1,5 @@
{
"navigationStyle": "default",
"navigationBarTitleText": "复诊记录",
"usingComponents": {}
}

110
src/patient/pages/follow/index.scss

@ -0,0 +1,110 @@
page {
background-color: rgba(246, 248, 249, 1);
}
.page {
padding: 48rpx 32rpx;
.card {
display: flex;
gap: 14rpx;
.aside {
flex-shrink: 0;
display: flex;
flex-direction: column;
align-items: center;
.line-top,
.line-bottom {
border-right: 1px dashed rgba(185, 130, 255, 1);
}
.line-bottom {
flex: 1;
}
.line-top {
height: 10rpx;
flex-shrink: 0;
}
.circle {
flex-shrink: 0;
position: relative;
width: 28rpx;
height: 28rpx;
background-color: rgba(185, 130, 255, 0.34);
border-radius: 50%;
&::after {
content: '';
display: block;
position: absolute;
width: 16rpx;
height: 16rpx;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: rgba(185, 130, 255, 1);
border-radius: 50%;
}
}
}
.container {
.date {
font-size: 36rpx;
color: rgba(33, 29, 46, 1);
}
.wrap {
margin-top: 24rpx;
padding: 30rpx;
background: linear-gradient(180deg, #f9f5ff 0%, #ffffff 21.88%, #ffffff 100%);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
.title {
margin-left: -30rpx;
display: flex;
align-items: center;
gap: 20rpx;
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
&::before {
content: '';
width: 8rpx;
height: 32rpx;
border-radius: 0 4rpx 4rpx 0;
background: #b982ff;
}
}
.list {
.list-item {
margin-top: 24rpx;
display: flex;
gap: 20rpx;
font-size: 32rpx;
color: rgba(105, 104, 110, 1);
&::before {
margin-top: 16rpx;
flex-shrink: 0;
content: '';
width: 10rpx;
height: 10rpx;
border-radius: 50%;
background-color: #7d7d82;
}
}
}
.next-date {
margin-top: 24rpx;
padding: 24rpx 32rpx;
background: #fff7e9;
border-radius: 16rpx 16rpx 16rpx 16rpx;
border: 2rpx solid #ffffff;
display: flex;
align-items: center;
gap: 16rpx;
.icon {
width: 36rpx;
height: 36rpx;
}
font-size: 32rpx;
color: rgba(248, 166, 26, 1);
}
}
}
}
}

8
src/patient/pages/follow/index.ts

@ -0,0 +1,8 @@
const _app = getApp<IAppOption>();
Page({
data: {},
onLoad() {},
});
export {}

22
src/patient/pages/follow/index.wxml

@ -0,0 +1,22 @@
<view class="page">
<view class="card">
<view class="aside">
<view class="line-top"></view>
<view class="circle"></view>
<view class="line-bottom"></view>
</view>
<view class="container">
<view class="date">复诊时间:2025-06-11</view>
<view class="wrap">
<view class="title">复诊方案</view>
<view class="list">
<view class="list-item">生物制剂IGF-1R抗体(替妥尤单抗) 第2次使用</view>
<view class="list-item">传统免疫抑制剂(如:吗替麦考酚酯、环孢素等、甲氨蝶呤)</view>
</view>
<view class="next-date">
<image class="icon" src="/images/icon172.png"></image>
下次复诊时间:2025-06-11</view>
</view>
</view>
</view>
</view>

9
src/patient/pages/followForm/index.json

@ -0,0 +1,9 @@
{
"navigationStyle": "default",
"navigationBarTitleText": "复诊提醒录入",
"usingComponents": {
"van-stepper": "@vant/weapp/stepper/index",
"van-icon": "@vant/weapp/icon/index",
"popup": "/components/popup/index"
}
}

172
src/patient/pages/followForm/index.scss

@ -0,0 +1,172 @@
page {
background-color: rgba(246, 248, 249, 1);
}
.page {
padding: 30rpx 30rpx 200rpx;
.card {
margin-bottom: 24rpx;
padding: 32rpx;
background-color: #fff;
border-radius: 24rpx;
.c-title {
margin-left: -32rpx;
font-size: 36rpx;
color: rgba(33, 29, 46, 1);
display: flex;
align-items: center;
gap: 22rpx;
&::before {
display: block;
content: '';
width: 8rpx;
height: 32rpx;
background: #b982ff;
}
.sub {
flex: 1;
text-align: right;
font-size: 28rpx;
color: rgba(185, 130, 255, 1);
}
}
.c-title1 {
font-size: 36rpx;
color: rgba(33, 29, 46, 1);
text-align: center;
}
.date {
margin-top: 24rpx;
padding: 0 32rpx;
height: 84rpx;
display: flex;
align-items: center;
justify-content: space-between;
border-radius: 16rpx;
background-color: rgba(246, 248, 249, 1);
color: rgba(173, 172, 178, 1);
.content {
font-size: 32rpx;
}
&.active {
color: rgba(33, 29, 46, 1);
}
}
.check-item {
margin-top: 24rpx;
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
padding: 18rpx 32rpx;
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
line-height: 48rpx;
border-radius: 16rpx;
background-color: rgba(246, 248, 249, 1);
border: 1px solid rgba(246, 248, 249, 1);
box-sizing: border-box;
&.active {
border-color: rgba(185, 130, 255, 1);
background: rgba(250, 246, 255, 1);
color: rgba(185, 130, 255, 1);
}
}
.step {
margin-top: 34rpx;
display: flex;
justify-content: center;
.stepper {
display: flex;
align-items: center;
gap: 10rpx;
}
.pm-input {
width: 120rpx;
background-color: #fff;
font-size: 48rpx;
color: rgba(33, 29, 46, 1);
display: flex;
align-items: baseline;
&::after {
display: inline-block;
content: '';
font-size: 28rpx;
}
}
.pm {
width: 80rpx;
height: 80rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
font-size: 24rpx;
color: rgba(107, 114, 128, 1);
background-color: rgba(246, 248, 249, 1);
}
}
.tip {
margin-top: 32rpx;
font-size: 28rpx;
color: rgba(248, 166, 26, 1);
text-align: center;
}
.radio-wrap {
margin-top: 24rpx;
display: flex;
gap: 32rpx;
.radio {
flex: 1;
height: 76rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
color: rgba(173, 172, 178, 1);
background: #f6f8f9;
border-radius: 64rpx 64rpx 64rpx 64rpx;
&.active {
background-color: rgba(185, 130, 255, 1);
color: #fff;
}
}
}
}
.page-footer {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
box-sizing: border-box;
padding: 20rpx 30rpx 80rpx;
display: flex;
align-items: center;
justify-content: space-between;
gap: 26rpx;
background-color: #fff;
box-shadow: 0 10rpx 10rpx rgba(204, 204, 204, 0.3);
.cancel {
flex: 1;
height: 88rpx;
background: #ffffff;
border-radius: 48rpx 48rpx 48rpx 48rpx;
border: 1px solid #b982ff;
font-size: 32rpx;
color: rgba(185, 130, 255, 1);
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
}
.submit {
flex: 1;
height: 88rpx;
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
background: linear-gradient(180deg, #e98ff8 0%, #b073ff 100%);
border-radius: 48rpx 48rpx 48rpx 48rpx;
display: flex;
align-items: center;
justify-content: center;
}
}
}

23
src/patient/pages/followForm/index.ts

@ -0,0 +1,23 @@
const _app = getApp<IAppOption>();
Page({
data: {
popupShow: false,
popupType: 'popup19',
popupParams: {},
},
onLoad() {},
// popup 确认(继续退出)
handlePopupOk() {
this.setData({ popupShow: false })
wx.navigateBack()
},
// popup 取消
handlePopupCancel() {
this.setData({ popupShow: false })
},
});
export {}

69
src/patient/pages/followForm/index.wxml

@ -0,0 +1,69 @@
<view class="page">
<view class="card">
<view class="c-title">您的复诊时间</view>
<picker mode="date">
<view class="date active">
<view class="content">年 / 月 / 日</view>
<van-icon name="arrow-down" />
</view>
</picker>
</view>
<view class="card">
<view class="c-title">您复诊后的方案是?(多选)</view>
<view class="check-item">1、激素静脉冲击治疗</view>
<view class="check-item active">2、生物制剂IGF-1R 抗体(替妥尤单抗)</view>
</view>
<view class="card">
<view class="c-title1">您是第几次使用替妥尤单抗?</view>
<view class="step">
<van-stepper
value="{{ 1 }}"
min="{{1}}"
max="{{99}}"
bind:change="onChange"
custom-class="stepper"
plus-class="pm"
minus-class="pm"
input-class="pm-input"
>
<view class="pm" slot="plus">
<van-icon name="plus" />
</view>
<view class="pm" slot="minus">
<van-icon name="minus" />
</view>
</van-stepper>
</view>
<view class="tip">注:替妥尤单抗常规疗程共 8 次注射(每3周1次)</view>
</view>
<view class="card">
<view class="c-title">
您的下次复诊时间
<view class="sub">配合就医建议周期</view>
</view>
<picker mode="date">
<view class="date active">
<view class="content">年 / 月 / 日</view>
<van-icon name="arrow-down" />
</view>
</picker>
<view class="radio-wrap">
<view class="radio active">21天后</view>
<view class="radio">1个月后</view>
<view class="radio">2个月后</view>
</view>
</view>
<view class="page-footer">
<view class="cancel">取消</view>
<view class="submit">提交</view>
</view>
</view>
<popup
id="popup"
show="{{popupShow}}"
type="{{popupType}}"
params="{{popupParams}}"
bind:ok="handlePopupOk"
bind:cancel="handlePopupCancel"
/>

103
src/patient/pages/index/index.scss

@ -100,6 +100,109 @@ page {
height: 48rpx; height: 48rpx;
} }
} }
.follow {
margin: $page-margin;
.empty {
height: 200rpx;
background: #f5f7f6;
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx dashed rgba(185, 130, 255, 1);
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
.icon {
width: 92rpx;
height: 92rpx;
}
.content {
font-size: 36rpx;
color: rgba(185, 130, 255, 1);
}
}
.f-container {
padding: 16rpx 20rpx 16rpx 40rpx;
background: linear-gradient(70deg, #e98ff8 0%, #b073ff 100%);
border-radius: 24rpx;
display: flex;
align-items: center;
gap: 42rpx;
.aside {
padding-top: 70rpx;
width: 150rpx;
height: 168rpx;
align-self: flex-end;
box-sizing: border-box;
display: flex;
align-items: baseline;
justify-content: center;
font-size: 28rpx;
color: rgba(34, 34, 34, 0.7);
.a-num {
font-size: 60rpx;
color: rgba(185, 130, 255, 1);
font-weight: bold;
}
}
.wrap {
padding-top: 30rpx;
.title {
display: flex;
align-items: center;
gap: 16rpx;
font-size: 28rpx;
color: rgba(255, 255, 255, 0.97);
.icon {
width: 36rpx;
height: 36rpx;
}
}
.content {
margin-top: 16rpx;
display: flex;
align-items: start;
gap: 10rpx;
.year {
margin-top: 10rpx;
padding-right: 10rpx;
font-size: 28rpx;
color: rgba(255, 255, 255, 0.6);
line-height: 28rpx;
border-right: 1px dashed rgba(255, 255, 255, 0.47);
}
.yd {
display: flex;
align-items: start;
gap: 10rpx;
line-height: 72rpx;
.yd-num {
font-size: 64rpx;
color: rgba(255, 255, 255, 1);
font-weight: bold;
}
.sub {
margin-top: 10rpx;
font-size: 28rpx;
color: rgba(255, 255, 255, 1);
}
}
.week {
margin-top: 28rpx;
margin-left: 10rpx;
width: 96rpx;
height: 36rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 24rpx;
color: rgba(255, 255, 255, 0.6);
background: rgba(255, 255, 255, 0.24);
border-radius: 88rpx 88rpx 88rpx 88rpx;
}
}
}
}
}
.kkd1 { .kkd1 {
margin: $page-margin; margin: $page-margin;
display: grid; display: grid;

11
src/patient/pages/index/index.ts

@ -40,6 +40,7 @@ Page({
// toastType: 'guideEnterInfo', // toastType: 'guideEnterInfo',
// toastType: 'guideEnterInfoJump', // toastType: 'guideEnterInfoJump',
// toastType: 'noteGuide', // toastType: 'noteGuide',
// toastType: 'followGuide',
toastShow: false, toastShow: false,
toastType: '', toastType: '',
@ -578,4 +579,14 @@ Page({
}, },
}) })
}, },
handleFollow() {
wx.navigateTo({
url: '/patient/pages/follow/index',
})
},
handleFollowEmpty() {
wx.navigateTo({
url: '/patient/pages/followForm/index',
})
},
}) })

32
src/patient/pages/index/index.wxml

@ -35,6 +35,38 @@
</view> </view>
<image class="more" src="{{imageUrl}}icon118.png?t={{Timestamp}}"></image> <image class="more" src="{{imageUrl}}icon118.png?t={{Timestamp}}"></image>
</view> </view>
<view class="follow">
<view class="empty" wx:if="{{true}}" bind:tap="handleFollowEmpty">
<image class="icon" src="/images/icon170.png"></image>
<view class="content">设置复诊提醒</view>
</view>
<view class="f-container" wx:if="{{false}}" bind:tap="handleFollow">
<view class="aside" style="background: url('/images/bg60.png') no-repeat top center/100%">
<view class="a-num">10</view>
<text wx:if="{{nextVisitDays !== 0}}">天</text>
</view>
<view class="wrap">
<view class="title">
<image class="icon" src="/images/icon171.png"></image>
复诊时间
</view>
<view class="content">
<view class="year">
20
<view></view>
26
</view>
<view class="yd">
<view class="yd-num">06</view>
<view class="sub">月</view>
<view class="yd-num">10</view>
<view class="sub">日</view>
</view>
<view class="week">星期三</view>
</view>
</view>
</view>
</view>
<view class="kkd1" wx:if="{{qolShow && hormoneShow}}"> <view class="kkd1" wx:if="{{qolShow && hormoneShow}}">
<view class="k-qol" catch:tap="handleAddQol"> <view class="k-qol" catch:tap="handleAddQol">
<view class="title" catch:tap="handleQuestionToast" data-type="1"> <view class="title" catch:tap="handleQuestionToast" data-type="1">

157
src/patient/pages/interactivePatient/index.scss

@ -332,6 +332,125 @@ page {
} }
} }
} }
.follow {
margin-bottom: 32rpx;
padding: 26rpx 32rpx;
background-color: #fff;
border-radius: 32rpx;
.content {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
}
.f-footer {
margin-top: 24rpx;
display: flex;
gap: 30rpx;
.btn1,
.btn2 {
flex: 1;
font-size: 28rpx;
border-radius: 100rpx;
height: 76rpx;
box-sizing: border-box;
}
.btn1 {
color: #b982ff;
border: 1px solid #b982ff;
display: flex;
align-items: center;
justify-content: center;
}
.btn2 {
padding: 0;
background: linear-gradient(344deg, #ffbcf9 0%, #b982ff 100%);
color: #ffffff;
display: flex;
align-items: center;
justify-content: center;
}
}
}
.follow-form {
margin-bottom: 32rpx;
padding: 26rpx 32rpx;
background-color: #fff;
border-radius: 32rpx;
.content {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
}
.list {
.list-item {
margin-top: 24rpx;
padding: 18rpx 32rpx;
font-size: 28rpx;
color: rgba(105, 104, 110, 1);
line-height: 36rpx;
border-radius: 16rpx;
background-color: rgba(246, 248, 249, 1);
border: 1px solid rgba(246, 248, 249, 1);
box-sizing: border-box;
&.active {
border-color: rgba(185, 130, 255, 1);
background: rgba(250, 246, 255, 1);
color: rgba(185, 130, 255, 1);
}
}
}
.btn {
margin-top: 30rpx;
height: 76rpx;
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(180deg, #e98ff8 0%, #b073ff 100%);
border-radius: 64rpx 64rpx 64rpx 64rpx;
}
}
.follow-reset {
margin-bottom: 32rpx;
padding: 26rpx 32rpx;
background-color: #fff;
border-radius: 32rpx;
.content {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
}
.btn {
margin-top: 30rpx;
height: 76rpx;
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(180deg, #e98ff8 0%, #b073ff 100%);
border-radius: 64rpx 64rpx 64rpx 64rpx;
}
}
.follow-next {
margin-bottom: 32rpx;
padding: 26rpx 32rpx;
background-color: #fff;
border-radius: 32rpx;
.content {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
}
.btn {
margin-top: 30rpx;
height: 76rpx;
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(180deg, #e98ff8 0%, #b073ff 100%);
border-radius: 64rpx 64rpx 64rpx 64rpx;
}
}
} }
} }
.patient { .patient {
@ -462,6 +581,44 @@ page {
} }
} }
} }
.follow-result {
margin-bottom: 32rpx;
padding: 32rpx;
border-radius: 32rpx;
background-color: #fff;
.title {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
}
.list {
margin-top: 20rpx;
padding: 24rpx;
background-color: rgba(246, 248, 249, 1);
border-radius: 16rpx;
.list-item {
font-size: 32rpx;
color: rgba(33, 29, 46, 1);
display: flex;
.blob {
font-weight: bold;
}
&::before {
margin-right: 20rpx;
margin-top: 20rpx;
display: inline-block;
flex-shrink: 0;
content: '';
width: 10rpx;
height: 10rpx;
border-radius: 50%;
background-color: #7d7d82;
}
&:not(:first-of-type) {
margin-top: 24rpx;
}
}
}
}
} }
} }
.status { .status {

48
src/patient/pages/interactivePatient/index.wxml

@ -12,7 +12,7 @@
<view class="wrap"> <view class="wrap">
<view class="name">{{doctorDetail.doctorName}}</view> <view class="name">{{doctorDetail.doctorName}}</view>
<view class="content"> <view class="content">
<div class="c-name">{{doctorDetail.hospitalName}}</div> <view class="c-name">{{doctorDetail.hospitalName}}</view>
<view class="tag">{{doctorDetail.hospitalClassificationName}}{{doctorDetail.hospitalLevelName}}</view> <view class="tag">{{doctorDetail.hospitalClassificationName}}{{doctorDetail.hospitalLevelName}}</view>
</view> </view>
</view> </view>
@ -104,6 +104,35 @@
<view class="content">{{message.msgContent}}</view> <view class="content">{{message.msgContent}}</view>
<view class="btn" bind:tap="handleFillUserInfo">完善个人信息</view> <view class="btn" bind:tap="handleFillUserInfo">完善个人信息</view>
</view> </view>
<!-- 复诊提醒 -->
<view class="follow" wx:elif="{{message.msgContentType==='12'}}">
<view class="content">
您好!出院后的康复需要我们双方共同努力,请问您最近有按照医生的提醒,定期到院复诊吗?
</view>
<view class="f-footer">
<view class="btn1">已复诊</view>
<view class="btn2">未复诊</view>
</view>
</view>
<!-- 复诊提醒-快速问答 -->
<view class="follow-form" wx:elif="{{message.msgContentType==='13'}}">
<view class="content">
请问您没能按时复诊的主要原因是?
<text class="sub">(多选)</text>
</view>
<view class="list">
<view class="list-item">症状感觉好转,觉得不用去了</view>
</view>
<view class="btn">提交</view>
</view>
<view class="follow-reset" wx:elif="{{message.msgContentType==='14'}}">
<view class="content">规范治疗可获得更好的疗效,减少复发。</view>
<view class="btn">提交</view>
</view>
<view class="follow-next" wx:elif="{{message.msgContentType==='15'}}">
<view class="content">坚持规范治疗,继续加油,愿身体稳步向好!</view>
<view class="btn">提交</view>
</view>
</view> </view>
</view> </view>
<view class="patient" wx:if="{{message.msgFromType==='1'}}"> <view class="patient" wx:if="{{message.msgFromType==='1'}}">
@ -141,6 +170,23 @@
<view class="item" wx:if="{{message.ReVisitInfo.other==1}}">9.其他</view> <view class="item" wx:if="{{message.ReVisitInfo.other==1}}">9.其他</view>
</view> </view>
</view> </view>
<view class="follow-result" wx:if="{{message.msgContentType==='15'}}">
<view class="title">医生您好,我刚刚完成了复诊记录:</view>
<view class="list">
<view class="list-item">
<view class="li-content">
<text class="blob">我最近一次复诊时间是:</text>
2025年6月11日
</view>
</view>
<view class="list-item">
<view class="li-content">
<text class="blob">我的方案是:</text>
生物制剂IGF-1R抗体(替妥尤单抗)第2次使用替妥尤单抗
</view>
</view>
</view>
</view>
</view> </view>
<view class="avatar"> <view class="avatar">
<image class="a-img" mode="aspectFill" src="{{zdUserInfo.UserImg}}"></image> <image class="a-img" mode="aspectFill" src="{{zdUserInfo.UserImg}}"></image>

30
src/patient/pages/my/index.scss

@ -43,8 +43,36 @@ page {
} }
} }
} }
.kkd {
margin-top: 34rpx;
display: flex;
align-items: center;
gap: 30rpx;
.kkd-item {
padding: 32rpx;
display: flex;
align-items: center;
gap: 24rpx;
font-size: 36rpx;
color: rgba(33, 29, 46, 1);
background: linear-gradient(180deg, #fbefff 0%, #ffffff 100%);
box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(0, 0, 0, 0.06);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 1px solid #ffffff;
.icon {
width: 84rpx;
height: 84rpx;
}
&:last-of-type {
background: linear-gradient(180deg, #e3e6ff 0%, #ffffff 100%);
box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(0, 0, 0, 0.06);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 1px solid #ffffff;
}
}
}
.options-list { .options-list {
margin-top: 52rpx; margin-top: 32rpx;
padding: 16rpx 28rpx; padding: 16rpx 28rpx;
background: #ffffff; background: #ffffff;
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05); box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);

15
src/patient/pages/my/index.wxml

@ -24,16 +24,17 @@
</view> </view>
</view> </view>
</view> </view>
<view class="options-list"> <view class="kkd">
<view bind:tap="routerTo" class="row" data-url="/patient/pages/qolReport/index"> <view class="kkd-item" bind:tap="routerTo" data-url="/patient/pages/qolReport/index">
<view class="col"> <image class="icon" src="/images/icon175.png"></image>
<image class="icon" src="{{imageUrl}}icon104.png?t={{Timestamp}}"></image> 健康档案
我的健康报告
</view> </view>
<view class="more"> <view class="kkd-item" bind:tap="routerTo" data-url="/patient/pages/follow/index">
<van-icon name="arrow" /> <image class="icon" src="/images/icon175.png"></image>
复诊记录
</view> </view>
</view> </view>
<view class="options-list">
<view bind:tap="routerTo" class="row" data-url="/patient/pages/myLive/index"> <view bind:tap="routerTo" class="row" data-url="/patient/pages/myLive/index">
<view class="col"> <view class="col">
<image class="icon" src="{{imageUrl}}icon32.png?t={{Timestamp}}"></image> <image class="icon" src="{{imageUrl}}icon32.png?t={{Timestamp}}"></image>

Loading…
Cancel
Save