Browse Source

3.0联调

2.0
kola-web 2 weeks ago
parent
commit
8c232f808b
  1. 1
      README.md
  2. 11
      project.private.config.json
  3. 3
      src/app.json
  4. 13
      src/app.ts
  5. 4
      src/components/pickerArea/index.ts
  6. 68
      src/components/popup/index.scss
  7. 12
      src/components/popup/index.wxml
  8. 1
      src/components/popupDoctor/index.scss
  9. 2
      src/doctor/pages/changeTel/index.ts
  10. 3
      src/doctor/pages/login/index.json
  11. 5
      src/doctor/pages/login/index.scss
  12. 5
      src/doctor/pages/login/index.ts
  13. 7
      src/doctor/pages/login/index.wxml
  14. 2
      src/doctor/pages/my/index.json
  15. 1
      src/doctor/pages/my/index.scss
  16. 4
      src/doctor/pages/my/index.ts
  17. 10
      src/doctor/pages/my/index.wxml
  18. 4
      src/doctor/pages/userInfo/index.ts
  19. BIN
      src/images/bg21.png
  20. BIN
      src/images/icon17.png
  21. BIN
      src/images/icon91.png
  22. BIN
      src/images/icon92.png
  23. BIN
      src/images/icon93.png
  24. BIN
      src/images/icon94.png
  25. BIN
      src/images/icon95.png
  26. BIN
      src/images/icon96.png
  27. BIN
      src/images/index-title2.png
  28. BIN
      src/images/index-title3.png
  29. 2
      src/pages/applyFrom/index.ts
  30. 2
      src/pages/applyFromResult/index.ts
  31. 1
      src/pages/ask/index.json
  32. 1
      src/pages/ask/index.scss
  33. 2
      src/pages/ask/index.ts
  34. 1
      src/pages/ask/index.wxml
  35. 2
      src/pages/index/index.ts
  36. 4
      src/pages/knowledge/index.ts
  37. 2
      src/pages/knowledgeDetail/index.ts
  38. 2
      src/pages/knowledgeDetailVideo/index.ts
  39. 21
      src/pages/my/index.ts
  40. 12
      src/pages/my/index.wxml
  41. 2
      src/pages/start/index.ts
  42. 1
      src/patient/pages/askPatient/index.json
  43. 13
      src/patient/pages/askPatient/index.scss
  44. 12
      src/patient/pages/askPatient/index.ts
  45. 5
      src/patient/pages/askPatient/index.wxml
  46. 1
      src/patient/pages/changeTel/index.scss
  47. 4
      src/patient/pages/changeTel/index.wxml
  48. 3
      src/patient/pages/coltStat/index.ts
  49. 26
      src/patient/pages/course/index.ts
  50. 28
      src/patient/pages/course/index.wxml
  51. 21
      src/patient/pages/entryInfo/index.ts
  52. 8
      src/patient/pages/entryInfo/index.wxml
  53. 2
      src/patient/pages/family/index.ts
  54. 5
      src/patient/pages/family/index.wxml
  55. 12
      src/patient/pages/familyList/index.ts
  56. 8
      src/patient/pages/familyList/index.wxml
  57. 8
      src/patient/pages/familyScan/index.scss
  58. 5
      src/patient/pages/familyScan/index.ts
  59. 10
      src/patient/pages/familyScan/index.wxml
  60. 353
      src/patient/pages/file/index.scss
  61. 5
      src/patient/pages/file/index.ts
  62. 217
      src/patient/pages/file/index.wxml
  63. 281
      src/patient/pages/index/index.scss
  64. 30
      src/patient/pages/index/index.ts
  65. 189
      src/patient/pages/index/index.wxml
  66. 2
      src/patient/pages/injectDate/index.ts
  67. 2
      src/patient/pages/knowledge/index.ts
  68. 2
      src/patient/pages/knowledgeDetail/index.ts
  69. 2
      src/patient/pages/knowledgeDetailVideo/index.ts
  70. 6
      src/patient/pages/login/index.ts
  71. 2
      src/patient/pages/my/index.ts
  72. 4
      src/patient/pages/revisitRecord/index.json
  73. 42
      src/patient/pages/revisitRecord/index.scss
  74. 52
      src/patient/pages/revisitRecord/index.ts
  75. 25
      src/patient/pages/revisitRecord/index.wxml
  76. 3
      src/patient/pages/selectDoctorList/index.json
  77. 4
      src/patient/pages/selectDoctorList/index.scss
  78. 65
      src/patient/pages/selectDoctorList/index.ts
  79. 28
      src/patient/pages/selectDoctorList/index.wxml
  80. 2
      src/patient/pages/selectHostipal/index.scss
  81. 110
      src/patient/pages/selectHostipal/index.ts
  82. 28
      src/patient/pages/selectHostipal/index.wxml
  83. 12
      src/patient/pages/userInfo/index.scss
  84. 6
      src/patient/pages/userInfo/index.ts
  85. 4
      src/patient/pages/userInfo/index.wxml
  86. 2
      typings/index.d.ts

1
README.md

@ -19,5 +19,6 @@ https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c @@ -19,5 +19,6 @@ https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c
wx.showModal({
title: '确认解绑?',
confirmColor: 'rgba(246, 74, 58, 1)',
// confirmColor: 'rgba(29, 107, 255, 1)',
})
```

11
project.private.config.json

@ -23,13 +23,20 @@ @@ -23,13 +23,20 @@
"miniprogram": {
"list": [
{
"name": "医生-修改手机号",
"pathName": "doctor/pages/changeTel/index",
"name": "患者-我的复诊记录",
"pathName": "patient/pages/revisitRecord/index",
"query": "",
"scene": null,
"launchMode": "default"
},
{
"name": "医生-修改手机号",
"pathName": "doctor/pages/changeTel/index",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "医生-账号管理",
"pathName": "doctor/pages/userInfo/index",
"query": "",

3
src/app.json

@ -50,7 +50,8 @@ @@ -50,7 +50,8 @@
"pages/knowledgeDetailVideo/index",
"pages/blood/index",
"pages/bloodDetail/index",
"pages/bloodAdd/index"
"pages/bloodAdd/index",
"pages/revisitRecord/index"
]
},
{

13
src/app.ts

@ -100,9 +100,7 @@ App<IAppOption>({ @@ -100,9 +100,7 @@ App<IAppOption>({
return new Promise((resolve) => {
const checkLogin = () => {
if (this.globalData.loginState) {
if (type === 'any') {
resolve()
} else if (this.checkLoginType(type)) {
if (this.checkLoginType(type)) {
resolve()
}
return
@ -114,19 +112,23 @@ App<IAppOption>({ @@ -114,19 +112,23 @@ App<IAppOption>({
checkLogin()
})
},
checkLoginType(type: 0 | 1 | 2) {
checkLoginType(type: 0 | 1 | 2 | 'any') {
const { loginType, isLogin, isReg } = this.globalData.initLoginInfo
if (type === 0) {
if (type === 'any') {
return true
}
if (isLogin !== 1) {
if (type === 0) {
return true
}
wx.reLaunch({
url: '/pages/index/index',
})
return false
}
if (isReg !== 1) {
const typePageUrl = {
1: '/patient/pages/entryInfo/index',
@ -146,6 +148,7 @@ App<IAppOption>({ @@ -146,6 +148,7 @@ App<IAppOption>({
wx.reLaunch({
url: typePageUrl,
})
return false
}
return true

4
src/components/pickerArea/index.ts

@ -14,7 +14,7 @@ Component({ @@ -14,7 +14,7 @@ Component({
data: {
imageUrl: app.globalData.imageUrl,
Timestamp:app.globalData.Timestamp,
Timestamp: app.globalData.Timestamp,
show: false,
options: [],
@ -60,7 +60,7 @@ Component({ @@ -60,7 +60,7 @@ Component({
})
})
},
onFinish(e) {
onFinish(e: any) {
this.triggerEvent('change', e.detail.selectedOptions)
this.setData({
show: false,

68
src/components/popup/index.scss

@ -129,12 +129,13 @@ @@ -129,12 +129,13 @@
margin-top: 16rpx;
line-height: 28rpx;
.content {
display: inline;
margin-right: 8rpx;
display: inline-block;
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
}
.tag {
vertical-align: 2rpx;
display: inline-block;
font-size: 20rpx;
color: rgba(255, 255, 255, 1);
@ -1049,6 +1050,71 @@ @@ -1049,6 +1050,71 @@
}
}
.popup17 {
.icon {
position: relative;
z-index: 1;
margin: 0 auto;
display: block;
width: 144rpx;
height: 144rpx;
}
.container {
margin-top: -94rpx;
padding: 108rpx 32rpx 32rpx;
width: 604rpx;
background: linear-gradient(7deg, #ffffff 19%, #ffe8e4 100%);
border-radius: 24rpx 24rpx 24rpx 24rpx;
box-sizing: border-box;
.title{
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
text-align: center;
}
.hostipal{
margin-top: 32rpx;
font-size: 36rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
text-align: center;
}
.address{
margin-top: 12rpx;
text-align: center;
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
}
.footer {
margin-top: 32rpx;
display: flex;
gap: 26rpx;
.cancel {
flex: 1;
padding: 22rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
color: rgba(246, 74, 58, 1);
border-radius: 84rpx;
border: 1px solid #f64a3a;
}
.submit {
flex: 1;
padding: 22rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
color: #fff;
background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%);
border-radius: 84rpx;
border: 1px solid #f64a3a;
}
}
}
}
.close {
margin: 32rpx auto 0;
display: block;

12
src/components/popup/index.wxml

@ -298,6 +298,18 @@ @@ -298,6 +298,18 @@
</view>
</view>
</view>
<view class="popup17" wx:elif="{{type==='selectHostipal'}}">
<image class="icon" src="{{imageUrl}}icon23.png?t={{Timestamp}}"></image>
<view class="container">
<view class="title">确认为您的检查医院?</view>
<view class="hostipal">{{params.hospitalName}}</view>
<view class="address">{{params.provinceName}}{{params.cityName}}{{params.countyName}}{{params.address}}</view>
<view class="footer">
<view class="cancel" bind:tap="handleCancel">取消</view>
<view class="submit" bind:tap="handleOk">确定</view>
</view>
</view>
</view>
<image
wx:if="{{params.close}}"
class="close"

1
src/components/popupDoctor/index.scss

@ -66,6 +66,7 @@ @@ -66,6 +66,7 @@
}
}
.tag {
vertical-align: 2rpx;
display: inline-block;
font-size: 20rpx;
color: rgba(255, 255, 255, 1);

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

@ -58,7 +58,7 @@ Page({ @@ -58,7 +58,7 @@ Page({
handleSubmit() {
wx.showModal({
title: '确定修改此手机号?',
confirmColor: 'rgba(246, 74, 58, 1)',
confirmColor: 'rgba(29, 107, 255, 1)',
success: (res) => {
if (!res.confirm) return
const { mobile, code } = this.data

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

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
{
"navigationStyle": "custom",
"usingComponents": {
"van-divider": "@vant/weapp/divider/index"
"van-divider": "@vant/weapp/divider/index",
"navbar": "/components/navbar/index"
}
}

5
src/doctor/pages/login/index.scss

@ -117,6 +117,11 @@ page { @@ -117,6 +117,11 @@ page {
margin-top: -8rpx;
transform: scale(0.8);
}
.wx-checkbox-input.wx-checkbox-input-checked {
background: rgba(28, 107, 255, 1);
border-color: rgba(28, 107, 255, 1);
color: #ffffff;
}
}
.link {
color: rgba(28, 107, 255, 1);

5
src/doctor/pages/login/index.ts

@ -100,7 +100,7 @@ Page({ @@ -100,7 +100,7 @@ Page({
}
},
submitCallback() {
app.getUserInfo(2).then(() => {
app.updateLoginInfo(() => {
wx.reLaunch({
url: `/doctor/pages/index/index`,
})
@ -111,6 +111,9 @@ Page({ @@ -111,6 +111,9 @@ Page({
showTel: !this.data.showTel,
})
},
handleBack() {
wx.navigateBack()
},
})
export {}

7
src/doctor/pages/login/index.wxml

@ -1,3 +1,6 @@ @@ -1,3 +1,6 @@
<navbar fixed title="" custom-style="background:{{background}}" back>
<van-icon name="arrow-left" slot="left" size="18px" color="#000" bind:tap="handleBack" />
</navbar>
<view
class="page"
style="padding-top: {{pageTop + 60}}px;background:url('{{imageUrl}}bg19.png?t={{Timestamp}}') no-repeat top center/100% 618rpx;"
@ -42,14 +45,14 @@ @@ -42,14 +45,14 @@
<view class="signature">
<view class="row">
<checkbox model:checked="{{check1}}" class="checkbox" color="rgba(28, 107, 255, 1)"></checkbox>
<checkbox model:checked="{{check1}}" class="checkbox" color="#fff"></checkbox>
<view class="r-content">
我已阅读并同意
<text class="link">《个人信息及隐私协议政策》</text>
</view>
</view>
<view class="row">
<checkbox model:checked="{{check2}}" class="checkbox" color="rgba(28, 107, 255, 1)"></checkbox>
<checkbox model:checked="{{check2}}" class="checkbox" color="#fff"></checkbox>
<view class="r-content">
我已阅读并同意
<text class="link">《个人信息共享知情同意书》</text>

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

@ -2,6 +2,6 @@ @@ -2,6 +2,6 @@
"navigationStyle": "custom",
"usingComponents": {
"popup": "/components/popup/index",
"patient-tab-bar":"/patient/components/patient-tab-bar/index"
"doctor-tab-bar": "/doctor/components/doctor-tab-bar/index"
}
}

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

@ -46,6 +46,7 @@ page { @@ -46,6 +46,7 @@ page {
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
.tag {
margin-left: 10rpx;
display: inline-block;
padding: 0 8rpx;
font-size: 24rpx;

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

@ -34,7 +34,7 @@ Page({ @@ -34,7 +34,7 @@ Page({
const avatarUrl = data.data.Url
wx.ajax({
method: 'POST',
url: '?r=wtx/user/update-avatar',
url: '?r=wtx/doctor/account/update-avatar',
data: {
Avatar: avatarUrl,
},
@ -46,7 +46,7 @@ Page({ @@ -46,7 +46,7 @@ Page({
icon: 'none',
})
this.setData({
'userInfo.Avatar': avatarUrl,
'userInfo.doctorAvatar': avatarUrl,
})
})
.catch(() => {

10
src/doctor/pages/my/index.wxml

@ -4,15 +4,15 @@ @@ -4,15 +4,15 @@
>
<view class="user">
<button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
<image class="avatar" src="{{userInfo.Img}}"></image>
<image class="avatar" src="{{userInfo.doctorAvatar}}"></image>
</button>
<view class="wrap">
<view class="name">
<text class="nickname">{{userInfo.Name}}</text>
<text class="nickname">{{userInfo.doctorName}}</text>
</view>
<view class="hostipal">
{{userInfo.HospitalName}}
<view class="tag">随访医院</view>
{{userInfo.hospitalName}}
<view class="tag">{{userInfo.hospitalClassificationName}}{{userInfo.hospitalLevelName}}</view>
</view>
</view>
<image class="code" src="{{imageUrl}}icon88.png?t={{Timestamp}}"></image>
@ -35,4 +35,4 @@ @@ -35,4 +35,4 @@
<popup model:show="{{popupShow}}" type="{{popupType}}" params="{{popupParams}}" bind:cancel="handlePopupCancel"></popup>
<patient-tab-bar></patient-tab-bar>
<doctor-tab-bar></doctor-tab-bar>

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

@ -11,7 +11,7 @@ Page({ @@ -11,7 +11,7 @@ Page({
handleLoginOut() {
wx.showModal({
title: '确定退出登录吗?',
confirmColor: 'rgba(246, 74, 58, 1)',
confirmColor: 'rgba(29, 107, 255, 1)',
success: (res) => {
if (res.confirm) {
wx.ajax({
@ -19,7 +19,7 @@ Page({ @@ -19,7 +19,7 @@ Page({
url: '?r=wtx/doctor/account/reg-logout',
data: {},
}).then(() => {
app.startLogin(() => {
app.updateLoginInfo(() => {
wx.reLaunch({
url: '/pages/index/index',
})

BIN
src/images/bg21.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
src/images/icon17.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/images/icon91.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

BIN
src/images/icon92.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 721 B

BIN
src/images/icon93.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
src/images/icon94.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
src/images/icon95.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
src/images/icon96.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 770 B

BIN
src/images/index-title2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 84 KiB

BIN
src/images/index-title3.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 61 KiB

2
src/pages/applyFrom/index.ts

@ -20,7 +20,7 @@ Page({ @@ -20,7 +20,7 @@ Page({
Argument: false,
},
onLoad() {
app.waitLogin().then(() => {
app.waitLogin({ type: 0 }).then(() => {
app.mpBehavior({ PageName: 'PG_PREAPPLY' })
app.getUserInfo().then((userInfo) => {
if (userInfo.ApplyIntentionId) {

2
src/pages/applyFromResult/index.ts

@ -6,7 +6,7 @@ Page({ @@ -6,7 +6,7 @@ Page({
background: 'transparent',
},
onLoad() {
app.waitLogin().then(() => {
app.waitLogin({ type: 0 }).then(() => {
this.getCodeImg()
})
},

1
src/pages/ask/index.json

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
{
"navigationStyle": "custom",
"usingComponents": {
"van-overlay": "@vant/weapp/overlay/index",
"van-loading": "@vant/weapp/loading/index",
"navbar": "/components/navbar/index"
}

1
src/pages/ask/index.scss

@ -442,6 +442,7 @@ page { @@ -442,6 +442,7 @@ page {
}
.page-footer {
position: relative;
z-index: 2;
flex-shrink: 0;
padding: 18rpx 30rpx calc(env(safe-area-inset-bottom) + 30rpx);
border-radius: 24rpx 24rpx 0 0;

2
src/pages/ask/index.ts

@ -45,7 +45,7 @@ Page({ @@ -45,7 +45,7 @@ Page({
userInfo: {},
},
onLoad(options) {
app.waitLogin().then(() => {
app.waitLogin({ type: 0 }).then(() => {
app.mpBehavior({ PageName: 'PG_FAQ' })
app.getUserInfo().then((userInfo) => {
this.setData({

1
src/pages/ask/index.wxml

@ -85,6 +85,7 @@ @@ -85,6 +85,7 @@
<view id="place" class="place"></view>
</scroll-view>
</view>
<van-overlay show="{{ expend }}" bind:click="handleFooter"></van-overlay>
<view class="page-footer {{expend && 'expend'}}" catch:tap="handleFooter">
<view class="title">
<image class="icon" src="{{imageUrl}}icon11.png?t={{Timestamp}}"></image>

2
src/pages/index/index.ts

@ -27,7 +27,7 @@ Page({ @@ -27,7 +27,7 @@ Page({
guideList: ['2-1', '2-2', '2-3'],
},
onLoad() {
app.waitLogin().then(() => {
app.waitLogin({ type: 0 }).then(() => {
app.getUserInfo().then((userInfo) => {
this.setData({
userInfo,

4
src/pages/knowledge/index.ts

@ -12,8 +12,8 @@ Page({ @@ -12,8 +12,8 @@ Page({
},
},
onShow() {
app.waitLogin().then(() => {
app.mpBehavior({ PageName: 'PG_EDUCATION' })
app.waitLogin({ type: 0 }).then(() => {
app.mpBehavior({ PageName: 'PG_EDUCATION' })
this.getList()
})
},

2
src/pages/knowledgeDetail/index.ts

@ -14,7 +14,7 @@ Page({ @@ -14,7 +14,7 @@ Page({
this.setData({
id: options.id,
})
app.waitLogin().then(() => {
app.waitLogin({ type: 0 }).then(() => {
this.handleView()
})
},

2
src/pages/knowledgeDetailVideo/index.ts

@ -23,7 +23,7 @@ Page({ @@ -23,7 +23,7 @@ Page({
id: options.id,
activeId: options.id,
})
app.waitLogin().then(() => {
app.waitLogin({ type: 0 }).then(() => {
this.handleView()
})
},

21
src/pages/my/index.ts

@ -9,7 +9,7 @@ Page({ @@ -9,7 +9,7 @@ Page({
showPatient: false,
},
onShow() {
app.waitLogin().then(() => {
app.waitLogin({ type: 0 }).then(() => {
app.mpBehavior({ PageName: 'BTN_MY_NAV' })
app.getUserInfo().then((userInfo) => {
this.setData({
@ -75,24 +75,15 @@ Page({ @@ -75,24 +75,15 @@ Page({
popupShow: false,
})
},
routerTo(e) {
const { url } = e.currentTarget.dataset
routerTo(e: any) {
const { url, pname } = e.currentTarget.dataset
if (pname) {
app.mpBehavior({ PageName: pname })
}
wx.navigateTo({
url,
})
},
handleNone(e: any) {
const { index } = e.currentTarget.dataset
const PageName = {
1: 'BTN_MY_SWITCHPATIENT',
2: 'BTN_MY_SWITCH_DOCTOR',
}[index]
app.mpBehavior({ PageName })
this.setData({
popupShow: true,
popupType: 'stayTuned',
})
},
})
export {}

12
src/pages/my/index.wxml

@ -31,10 +31,16 @@ @@ -31,10 +31,16 @@
></image>
</view>
<view class="list">
<view class="list-header" bind:tap="handleNone">
<view class="list-header">
<view class="name">切换身份</view>
</view>
<view wx:if="{{showPatient}}" class="item" bind:tap="routerTo" data-url="/patient/pages/login/index">
<view
wx:if="{{showPatient}}"
class="item"
bind:tap="routerTo"
data-url="/patient/pages/login/index"
data-pname="BTN_MY_SWITCHPATIENT"
>
<image class="icon" src="{{imageUrl}}icon13.png?t={{Timestamp}}"></image>
<view class="wrap">
<view class="name">我已开启基因治疗</view>
@ -42,7 +48,7 @@ @@ -42,7 +48,7 @@
</view>
<image class="icon2" src="{{imageUrl}}icon12.png?t={{Timestamp}}"></image>
</view>
<view class="item" bind:tap="handleNone" data-index="2">
<view class="item" bind:tap="routerTo" data-url="/doctor/pages/login/index" data-pname="BTN_MY_SWITCH_DOCTOR">
<image class="icon" src="{{imageUrl}}icon14.png?t={{Timestamp}}"></image>
<view class="wrap">
<view class="name">我是医生</view>

2
src/pages/start/index.ts

@ -23,7 +23,7 @@ Page({ @@ -23,7 +23,7 @@ Page({
return
}
wx.reLaunch({
url: '/patient/pages/entryInfo/login',
url: '/pages/index/index',
})
}
if (initLoginInfo.loginType === 2) {

1
src/patient/pages/askPatient/index.json

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
{
"navigationStyle": "custom",
"usingComponents": {
"van-overlay": "@vant/weapp/overlay/index",
"van-loading": "@vant/weapp/loading/index",
"navbar": "/components/navbar/index",
"popup": "/components/popup/index"

13
src/patient/pages/askPatient/index.scss

@ -125,8 +125,10 @@ page { @@ -125,8 +125,10 @@ page {
position: absolute;
top: 68rpx;
left: 0;
padding: 0 8rpx;
width: 84rpx;
height: 28rpx;
box-sizing: border-box;
line-height: 28rpx;
font-size: 20rpx;
color: rgba(255, 255, 255, 1);
@ -134,6 +136,8 @@ page { @@ -134,6 +136,8 @@ page {
background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%);
border-radius: 35rpx 35rpx 35rpx 35rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.d-container {
@ -293,15 +297,20 @@ page { @@ -293,15 +297,20 @@ page {
}
.page-footer {
position: relative;
z-index: 2;
flex-shrink: 0;
transition: all 0.3s;
height: calc(112rpx + env(safe-area-inset-bottom));
box-sizing: border-box;
box-shadow: 0rpx 2rpx 28rpx 0rpx rgba(0, 0, 0, 0.08);
border-radius: 24rpx 24rpx 24rpx;
border-radius: 24rpx 24rpx 0 0;
background-color: rgba(247, 247, 250, 1);
&.expend {
height: 50vh;
.options{
padding-bottom: 50rpx;
}
.container {
margin-top: -20rpx;
}
@ -334,7 +343,7 @@ page { @@ -334,7 +343,7 @@ page {
position: relative;
z-index: 1;
border-radius: 24rpx 24rpx 0 0;
padding: 32rpx 30rpx calc(env(safe-area-inset-bottom) + 30rpx);
padding: 0 30rpx calc(env(safe-area-inset-bottom) + 30rpx);
background-color: rgba(247, 247, 250, 1);
.tabs {
margin-top: 12rpx;

12
src/patient/pages/askPatient/index.ts

@ -13,10 +13,9 @@ interface IMessageItem { @@ -13,10 +13,9 @@ interface IMessageItem {
msgCreateTimeName?: string // 消息创建时间
showTime?: boolean
questionId?: string // 问题ID
Reference?: string // 参考资料
LikeTimes?: number // 点赞次数
IsLike?: boolean // 是否点赞
HasAnswer?: boolean // 是否有答案
doctorId?: string
doctorName?: string
doctorAvatar?: string
}
Page({
@ -191,10 +190,13 @@ Page({ @@ -191,10 +190,13 @@ Page({
{
msgId: new Date().getTime().toString(),
msgContentType: '2',
msgContent: aName,
msgContent: aName.answer,
msgVisitTime: '',
msgFromType: '2',
msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
doctorId: aName.answer,
doctorName: aName.doctorName,
doctorAvatar: aName.doctorAvatar,
},
],
})

5
src/patient/pages/askPatient/index.wxml

@ -54,9 +54,9 @@ @@ -54,9 +54,9 @@
<image
class="a-img"
mode="aspectFill"
src="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567"
src="{{message.doctorAvatar}}"
></image>
<view class="label">刘湖飞</view>
<view class="label">{{message.doctorName}}</view>
</view>
<view class="d-container">
<view class="message" wx:if="{{message.msgContentType==='2'}}">{{message.msgContent }}</view>
@ -118,6 +118,7 @@ @@ -118,6 +118,7 @@
<view id="place" class="place"></view>
</scroll-view>
</view>
<van-overlay show="{{ expend }}" bind:click="handleFooter"></van-overlay>
<view class="page-footer {{expend && 'expend'}}" catch:tap="handleFooter">
<view class="options">
<view class="title">

1
src/patient/pages/changeTel/index.scss

@ -21,6 +21,7 @@ page { @@ -21,6 +21,7 @@ page {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10rpx;
.input {
padding: 32rpx 0;
font-size: 32rpx;

4
src/patient/pages/changeTel/index.wxml

@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
<input
type="number"
class="input"
model:value="{{mobile}}"
maxlength="11"
placeholder-class="place-input"
placeholder="请输入新手机号"
@ -18,9 +19,10 @@ @@ -18,9 +19,10 @@
<input
type="number"
class="input"
model:value="{{code}}"
maxlength="6"
placeholder-class="place-input"
placeholder="请输入短信验证码"
placeholder="请输入验证码"
/>
<view class="btn" bind:tap="getCode">{{codeText}}</view>
</view>

3
src/patient/pages/coltStat/index.ts

@ -436,6 +436,9 @@ Page({ @@ -436,6 +436,9 @@ Page({
tabActve: active,
})
},
handleBack() {
wx.navigateBack()
},
})
export {}

26
src/patient/pages/course/index.ts

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
const _app = getApp<IAppOption>()
const app = getApp<IAppOption>()
Page({
data: {
@ -12,8 +12,30 @@ Page({ @@ -12,8 +12,30 @@ Page({
},
current: 0,
periodInfo1: {},
periodInfo2: {},
periodInfo3: {},
periodInfo4: {},
},
onShow() {
app.waitLogin({ type: 1 }).then(() => {
this.getPeriodInfo(1, 'periodInfo1')
})
},
getPeriodInfo(period: 1 | 2 | 3 | 4, key: string) {
wx.ajax({
method: 'GET',
url: '?r=wtx/treatment/get-period-info',
data: {
period,
},
}).then((res) => {
this.setData({
[key]: res,
})
})
},
onLoad() {},
handleSwiperChange(e) {
this.setData({
current: e.detail.current,

28
src/patient/pages/course/index.wxml

@ -29,15 +29,19 @@ @@ -29,15 +29,19 @@
<view class="row" bind:tap="handleSelectHostipal">
<view class="aside">
<view class="slow-line"></view>
<!-- <image class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> -->
<image class="radio" src="{{imageUrl}}icon29.png?t={{Timestamp}}"></image>
<image
wx:if="{{periodInfo1.hospitalName}}"
class="radio"
src="{{imageUrl}}icon29.png?t={{Timestamp}}"
></image>
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image>
<view class="line"></view>
</view>
<view class="container">
<view class="c-body">
<view class="wrap">
<view class="content">1.您的诊前检查医院</view>
<view class="hostipl-name">唐山市人民医院</view>
<view class="hostipl-name" wx:if="{{periodInfo1.hospitalName}}">{{periodInfo1.hospitalName}}</view>
</view>
<image class="icon" src="{{imageUrl}}icon30.png?t={{Timestamp}}"></image>
</view>
@ -47,7 +51,12 @@ @@ -47,7 +51,12 @@
<view class="row" bind:tap="handleCasesAdd">
<view class="aside">
<view class="slow-line"></view>
<image class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image>
<image
wx:if="{{periodInfo1.isMedicalHistory===1}}"
class="radio"
src="{{imageUrl}}icon29.png?t={{Timestamp}}"
></image>
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image>
<view class="line"></view>
</view>
<view class="container">
@ -62,7 +71,12 @@ @@ -62,7 +71,12 @@
<view class="row" bind:tap="handlePreDiagnosisReport">
<view class="aside">
<view class="slow-line"></view>
<image class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image>
<image
wx:if="{{periodInfo1.isExamReport===1}}"
class="radio"
src="{{imageUrl}}icon29.png?t={{Timestamp}}"
></image>
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image>
<view class="line"></view>
</view>
<view class="container">
@ -240,7 +254,7 @@ @@ -240,7 +254,7 @@
</view>
</view>
</view>
<view class="next" bind:tap="handleNext">
<view class="next" bind:tap="handleNext">
下一阶段
<image class="icon" src="{{imageUrl}}icon48.png?t={{Timestamp}}"></image>
</view>
@ -322,7 +336,7 @@ @@ -322,7 +336,7 @@
</view>
</view>
</view>
<view class="row" bind:tap="handleInhibitorsManage">
<view class="row" bind:tap="handleInhibitorsManage">
<view class="aside">
<view class="slow-line"></view>
<image class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image>

21
src/patient/pages/entryInfo/index.ts

@ -1,12 +1,15 @@ @@ -1,12 +1,15 @@
import dayjs from 'dayjs'
const app = getApp<IAppOption>()
Page({
data: {
relationType: '',
relationType: '0',
name: '',
birthMonth: '',
provinceId: '',
cityId: '',
endDate: dayjs().format('YYYY-MM'),
provinceName: '',
cityName: '',
@ -96,7 +99,21 @@ Page({ @@ -96,7 +99,21 @@ Page({
})
},
handleBack() {
wx.navigateBack()
wx.ajax({
method: 'POST',
url: '?r=wtx/user/reg-logout',
data: {},
}).then(() => {
app.updateLoginInfo(() => {
wx.navigateBack({
fail() {
wx.reLaunch({
url: '/pages/index/index',
})
},
})
})
})
},
})

8
src/patient/pages/entryInfo/index.wxml

@ -28,14 +28,14 @@ @@ -28,14 +28,14 @@
model:value="{{name}}"
placeholder-class="place-input"
type="text"
placeholder="请输入{{relationType == 1 ? '您' : '亲友'}}的姓名"
placeholder="请输入{{relationType == 2 ? '亲友' : '您'}}的姓名"
/>
</view>
</view>
<view class="form-row">
<picker mode="date" model:value="{{birthMonth}}" fields="month">
<picker mode="date" end="{{endDate}}" model:value="{{birthMonth}}" fields="month">
<view class="picker-content">
<view class="value" data-place="请选择{{relationType == 1 ? '您' : '亲友'}}的出生年月">{{birthMonth}}</view>
<view class="value" data-place="请选择{{relationType == 2 ? '亲友' : '您'}}的出生年月">{{birthMonth}}</view>
<view class="tril"></view>
</view>
</picker>
@ -44,7 +44,7 @@ @@ -44,7 +44,7 @@
<pickerArea mode="region" value="{{CityId}}" level="city" level="{{2}}" bind:change="handleAreaChange">
<view class="picker-content">
<!-- prettier-ignore -->
<view class="value" data-place="请选择{{relationType == 1 ? '您' : '亲友'}}的所住地">{{provinceName ? provinceName+ '/' : provinceName }}{{cityName}}</view>
<view class="value" data-place="请选择{{relationType == 2 ? '亲友' : '您'}}的所住地">{{provinceName ? provinceName+ '/' : provinceName }}{{cityName}}</view>
<view class="tril"></view>
</view>
</pickerArea>

2
src/patient/pages/family/index.ts

@ -6,7 +6,7 @@ Page({ @@ -6,7 +6,7 @@ Page({
qrCode: '',
},
onLoad() {
app.waitLogin().then(() => {
app.waitLogin({type:1}).then(() => {
this.getMpInfo()
this.getQrCode()
})

5
src/patient/pages/family/index.wxml

@ -6,10 +6,7 @@ @@ -6,10 +6,7 @@
style="padding-top:{{pageTop}}px;background: url('{{imageUrl}}bg6.png?t={{Timestamp}}') no-repeat top center/100% 668rpx"
>
<view class="container">
<image
class="avatar"
src="{{mpInfo.Avatar}}"
></image>
<image class="avatar" src="{{mpInfo.Avatar}}"></image>
<view class="name">{{mpInfo.PatientName}}</view>
<image class="title" src="{{imageUrl}}title8.png?t={{Timestamp}}"></image>
<view class="content">

12
src/patient/pages/familyList/index.ts

@ -6,7 +6,7 @@ Page({ @@ -6,7 +6,7 @@ Page({
list: [],
},
onLoad() {
app.waitLogin().then(() => {
app.waitLogin({ type: 1 }).then(() => {
this.getList()
app.getUserInfo(1).then((res) => {
this.setData({
@ -26,24 +26,24 @@ Page({ @@ -26,24 +26,24 @@ Page({
})
})
},
handleUnbind() {
handleUnbind(e) {
const { id } = e.currentTarget.dataset
wx.showModal({
title: '确认解绑?',
confirmColor: 'rgba(246, 74, 58, 1)',
success: (res) => {
if (res.confirm) {
this.handleUnbinOk()
this.handleUnbinOk(id)
}
},
})
},
handleUnbinOk() {
const { UserId } = this.data.userInfo
handleUnbinOk(id) {
wx.ajax({
method: 'POST',
url: '?r=wtx/account/unbind-user',
data: {
UserId,
UserId: id,
},
loading: true,
}).then(() => {

8
src/patient/pages/familyList/index.wxml

@ -2,12 +2,14 @@ @@ -2,12 +2,14 @@
<view class="card" wx:for="{{list}}" wx:key="UserId">
<view class="wrap">
<view class="w-header">
<view class="name" wx:if="{{item.RelationType === '1'}}">{{userInfo.PatientName}}</view>
<view class="name" wx:if="{{item.RelationType == 1}}">{{userInfo.PatientName}}</view>
<view class="name" wx:else>{{userInfo.PatientName}}亲友</view>
<view class="tag" wx:if="{{item.RelationType === '1'}}">本人</view>
<view class="tag" wx:if="{{item.UserId == userInfo.UserId}}">本人</view>
</view>
<view class="date">绑定时间:{{item.BindPatientTime}}</view>
</view>
<view wx:if="{{item.RelationType === '2'}}" class="unbind" bind:tap="handleUnbind">解绑</view>
<view wx:if="{{item.IsRootUser != 1 && item.UserId != userInfo.UserId}}" class="unbind" bind:tap="handleUnbind" data-id="{{item.UserId}}">
解绑
</view>
</view>
</view>

8
src/patient/pages/familyScan/index.scss

@ -116,12 +116,12 @@ @@ -116,12 +116,12 @@
background-color: #f9f7fa;
.icon {
width: 122rpx;
height: 106rpx;
height: 102rpx;
}
.icon-active {
display: none;
width: 122rpx;
height: 106rpx;
height: 102rpx;
}
.name {
margin-top: 14rpx;
@ -131,7 +131,7 @@ @@ -131,7 +131,7 @@
}
.active {
.name {
color: #E04775;
color: #f23a2f;
}
.icon {
display: none;
@ -203,7 +203,7 @@ @@ -203,7 +203,7 @@
.submit {
color: #fff;
background-color: #E04775;
background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%);
}
}
}

5
src/patient/pages/familyScan/index.ts

@ -20,7 +20,7 @@ Page({ @@ -20,7 +20,7 @@ Page({
},
onShow() {
app.waitLogin().then(() => {
if (app.globalData.initLoginInfo.loginType === 2) {
if (app.globalData.initLoginInfo.isLogin === 1 && app.globalData.initLoginInfo.loginType === 2) {
wx.reLaunch({
url: '/doctor/pages/index/index',
})
@ -87,7 +87,8 @@ Page({ @@ -87,7 +87,8 @@ Page({
},
loading: true,
}).then(() => {
app.updateLoginInfo().then(() => {
app.globalData.waitBindDoctorId = ''
app.updateLoginInfo(() => {
wx.reLaunch({
url: '/pages/start/index',
})

10
src/patient/pages/familyScan/index.wxml

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
<view class="page">
<navBar fixed></navBar>
<image class="bg" mode="aspectFill" src="{{imageUrl}}bg18.png?t={{Timestamp}}"></image>
<image class="bg" mode="aspectFill" src="{{imageUrl}}start.png?t={{Timestamp}}"></image>
<view class="page-container" wx:if="{{reload}}">
<view
@ -60,13 +60,13 @@ @@ -60,13 +60,13 @@
data-type="1"
wx:if="{{!mpPatientInfo.HasSelf}}"
>
<image class="icon" src="{{imageUrl}}icon78.png?t={{Timestamp}}"></image>
<image class="icon-active" src="{{imageUrl}}icon79.png?t={{Timestamp}}"></image>
<image class="icon" src="{{imageUrl}}icon59.png?t={{Timestamp}}"></image>
<image class="icon-active" src="{{imageUrl}}icon75.png?t={{Timestamp}}"></image>
<view class="name">本人</view>
</view>
<view bind:tap="handleSwitchType" class="item {{RelationType > 1 && 'active' }}" data-type="2">
<image class="icon" src="{{imageUrl}}icon80.png?t={{Timestamp}}"></image>
<image class="icon-active" src="{{imageUrl}}icon81.png?t={{Timestamp}}"></image>
<image class="icon" src="{{imageUrl}}icon60.png?t={{Timestamp}}"></image>
<image class="icon-active" src="{{imageUrl}}icon76.png?t={{Timestamp}}"></image>
<view class="name">亲友</view>
</view>
</view>

353
src/patient/pages/file/index.scss

@ -2,7 +2,7 @@ page { @@ -2,7 +2,7 @@ page {
background-color: rgba(246, 246, 246, 1);
}
.page {
padding: 40rpx;
padding: 40rpx 40rpx 200rpx;
.user {
padding-top: 34rpx;
display: flex;
@ -24,21 +24,42 @@ page { @@ -24,21 +24,42 @@ page {
flex: 1;
.w-header {
display: flex;
justify-content: space-between;
align-items: center;
gap: 16rpx;
.name {
font-size: 36rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
}
.age {
padding: 0 14rpx;
border-radius: 20rpx;
background-color: rgba(32, 196, 255, 1);
display: flex;
align-items: center;
gap: 6rpx;
font-size: 24rpx;
color: rgba(255, 255, 255, 1);
line-height: 32rpx;
.icon {
width: 36rpx;
height: 36rpx;
width: 28rpx;
height: 28rpx;
}
}
.date {
flex-shrink: 0;
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
.site {
padding: 0 14rpx;
border-radius: 20rpx;
background-color: rgba(248, 166, 133, 1);
display: flex;
align-items: center;
gap: 6rpx;
font-size: 24rpx;
color: rgba(255, 255, 255, 1);
line-height: 32rpx;
.icon {
width: 28rpx;
height: 28rpx;
}
}
}
.w-footer {
@ -82,7 +103,7 @@ page { @@ -82,7 +103,7 @@ page {
.container0 {
padding: 8rpx 0 0;
.card {
.card1 {
margin-top: 24rpx;
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
@ -145,6 +166,7 @@ page { @@ -145,6 +166,7 @@ page {
padding: 16rpx 0;
display: flex;
gap: 32rpx;
line-height: 56rpx;
.label {
width: 4em;
font-size: 32rpx;
@ -169,13 +191,170 @@ page { @@ -169,13 +191,170 @@ page {
text-align: center;
}
}
.card2 {
margin-top: 24rpx;
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
background: linear-gradient(346deg, #ffffff 0%, #fff9f9 85%, #ffebe9 100%);
padding-bottom: 32rpx;
.c-header {
padding: 32rpx 16rpx 0 0;
display: flex;
align-items: center;
justify-content: space-between;
.left {
display: flex;
align-items: center;
gap: 16rpx;
.title {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
display: flex;
align-items: center;
gap: 22rpx;
&::before {
content: '';
width: 8rpx;
height: 32rpx;
border-radius: 0 32rpx 32rpx 0;
background: #f64a3a;
}
}
.fold-icon {
width: 60rpx;
height: 60rpx;
}
}
}
.c-body {
margin: 24rpx 32rpx 0;
padding: 16rpx 0 0;
background: #f6f6f6;
border-radius: 24rpx 24rpx 24rpx 24rpx;
position: relative;
.row {
padding: 16rpx 32rpx;
display: flex;
gap: 32rpx;
line-height: 56rpx;
.label {
width: 6em;
font-size: 32rpx;
color: rgba(161, 164, 172, 1);
}
.content {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
}
}
.options {
display: flex;
align-items: center;
border-top: 1px solid rgba(232, 233, 237, 1);
.item {
flex: 1;
padding: 22rpx 0;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
color: rgba(246, 74, 58, 1);
text-align: center;
&:first-of-type {
border-right: 1px solid rgba(232, 233, 237, 1);
}
}
}
}
}
.card3,
.card4 {
margin-top: 24rpx;
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
background: linear-gradient(346deg, #ffffff 0%, #fff9f9 85%, #ffebe9 100%);
padding-bottom: 32rpx;
.c-header {
padding: 32rpx 16rpx 0 0;
display: flex;
align-items: center;
justify-content: space-between;
.left {
display: flex;
align-items: center;
gap: 16rpx;
.title {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
display: flex;
align-items: center;
gap: 22rpx;
&::before {
content: '';
width: 8rpx;
height: 32rpx;
border-radius: 0 32rpx 32rpx 0;
background: #f64a3a;
}
}
.fold-icon {
width: 60rpx;
height: 60rpx;
}
}
}
.c-body {
margin: 24rpx 32rpx 0;
padding: 16rpx 0 0;
background: #f6f6f6;
border-radius: 24rpx 24rpx 24rpx 24rpx;
position: relative;
.row {
padding: 16rpx 32rpx;
display: flex;
gap: 32rpx;
line-height: 56rpx;
.label {
width: 4em;
font-size: 32rpx;
color: rgba(161, 164, 172, 1);
}
.content {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
}
}
.options {
display: flex;
align-items: center;
border-top: 1px solid rgba(232, 233, 237, 1);
.item {
flex: 1;
padding: 22rpx 0;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
color: rgba(246, 74, 58, 1);
text-align: center;
&:first-of-type {
border-right: 1px solid rgba(232, 233, 237, 1);
}
}
}
}
}
}
.container1 {
padding: 8rpx 0 0;
.card {
.c1_card1 {
margin-top: 24rpx;
padding: 16rpx 32rpx;
background: linear-gradient(349deg, #ffffff 60%, #fff1ef 100%);
background: linear-gradient(180deg, #fffaf9 0%, #ffffff 14%, #ffffff 100%);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
.row {
@ -193,12 +372,76 @@ page { @@ -193,12 +372,76 @@ page {
}
}
}
.c1_card2 {
margin-top: 24rpx;
padding: 0 32rpx;
background: linear-gradient(180deg, #fffaf9 0%, #ffffff 14%, #ffffff 100%);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
.row {
padding: 32rpx 0;
border-bottom: 1px solid rgba(247, 247, 250, 1);
.wrap {
display: flex;
gap: 32rpx;
.label {
width: 9em;
font-size: 32rpx;
color: rgba(161, 164, 172, 1);
}
.content {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
}
}
.remark {
margin-top: 24rpx;
padding: 22rpx 32rpx;
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
border-radius: 12rpx;
background-color: rgba(247, 247, 250, 1);
}
}
.row1 {
padding: 32rpx 0;
border-bottom: 1px solid rgba(247, 247, 250, 1);
.wrap {
display: flex;
align-items: center;
gap: 32rpx;
.label {
width: 11em;
font-size: 32rpx;
color: rgba(161, 164, 172, 1);
}
.line {
width: 1px;
height: 88rpx;
background-color: rgba(247, 247, 250, 1);
}
.content {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
}
}
.remark {
margin-top: 24rpx;
padding: 22rpx 32rpx;
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
border-radius: 12rpx;
background-color: rgba(247, 247, 250, 1);
}
}
}
}
.container2 {
.date-card {
margin-top: 32rpx;
padding: 18rpx 32rpx;
background: linear-gradient(19.87deg, #ffffff 55.08%, #ffe8e6 129.24%);
background: linear-gradient(355deg, #ffffff 0%, #ffebe9 100%);
box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.08);
border-radius: 84rpx 84rpx 84rpx 84rpx;
border: 2px solid #ffffff;
display: flex;
@ -213,25 +456,95 @@ page { @@ -213,25 +456,95 @@ page {
color: rgba(1, 1, 5, 1);
}
}
.notic {
position: relative;
margin-top: 32rpx;
height: 168rpx;
box-sizing: border-box;
padding: 24rpx 32rpx;
.title {
font-size: 32rpx;
color: rgba(255, 255, 255, 1);
font-weight: bold;
}
.content {
margin-top: 6rpx;
font-size: 28rpx;
color: rgba(255, 255, 255, 1);
}
.sub-content {
margin-top: 6rpx;
padding: 0 10rpx;
height: 36rpx;
display: inline-block;
font-size: 28rpx;
border-radius: 6rpx;
color: rgba(246, 74, 58, 1);
background-color: #fff;
}
.badge {
position: absolute;
right: 6rpx;
top: -14rpx;
width: 180rpx;
height: 180rpx;
border-radius: 50%;
box-shadow: inset 0rpx -1rpx 0rpx 0rpx rgba(255, 255, 255, 0.25);
}
}
.card {
position: relative;
margin-top: 32rpx;
border-radius: 24rpx;
border: 1px solid #ffffff;
background: rgba(255, 244, 243, 1);
.c-header {
padding: 22rpx;
text-align: center;
font-size: 32rpx;
color: rgba(246, 74, 58, 1);
}
.c-calendar {
padding: 40rpx 0 0;
position: relative;
z-index: 1;
padding: 40rpx 32rpx 0;
background-color: #fff;
border-radius: 24rpx;
.lengend {
padding: 32rpx 0;
display: flex;
align-items: center;
gap: 32rpx;
border-top: 1px solid rgba(247, 247, 250, 1);
.l-item {
display: flex;
align-items: center;
gap: 12rpx;
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
.dot {
width: 12rpx;
height: 12rpx;
border-radius: 50%;
&.dot1 {
background-color: rgba(246, 74, 58, 1);
}
&.dot2 {
background-color: rgba(255, 163, 112, 1);
}
&.dot3 {
background-color: rgba(255, 207, 135, 1);
}
}
}
}
}
.c-sub-card {
position: absolute;
bottom: -24rpx;
left: 40rpx;
width: 590rpx;
height: 636rpx;
background: #e2e3e6;
border-radius: 24rpx 24rpx 24rpx 24rpx;
}
}
.btn {
margin: 32rpx 0 0;
margin: 52rpx 0 0;
padding: 20rpx;
font-size: 32rpx;
line-height: 48rpx;

5
src/patient/pages/file/index.ts

@ -26,6 +26,11 @@ Page({ @@ -26,6 +26,11 @@ Page({
nav,
})
},
handleRevisitRecord() {
wx.navigateTo({
url: '/patient/pages/revisitRecord/index',
})
},
})
export {}

217
src/patient/pages/file/index.wxml

@ -11,16 +11,22 @@ @@ -11,16 +11,22 @@
</view>
<view class="wrap">
<view class="w-header">
<view class="name">
刘能
<image class="icon" src="{{imageUrl}}icon54.png?t={{Timestamp}}"></image>
<!-- <image class="icon" src="{{imageUrl}}icon55.png?t={{Timestamp}}"></image> -->
<view class="name">刘能</view>
<view class="age">
<image class="icon" src="/images/icon91.png"></image>
32岁
</view>
<view class="site">
<image class="icon" src="/images/icon92.png"></image>
北京
</view>
<view class="date">入组时间:2025年6月12日</view>
</view>
<view class="w-footer">
<view class="info">32岁 | 北京</view>
<view class="more">查看详细档案 ></view>
<view class="info">入组时间:2025年6月12日</view>
<view class="more">
查看档案
<van-icon name="arrow" />
</view>
</view>
</view>
</view>
@ -30,13 +36,13 @@ @@ -30,13 +36,13 @@
<view class="nav {{nav==2 && 'active'}}" bindtap="handleNav" data-nav="2">随访日历</view>
</view>
<view class="container0" wx:if="{{nav==0}}">
<view class="card">
<view class="card1">
<view class="c-header">
<view class="left">
<view class="title">随访期</view>
<image class="fold-icon" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image>
</view>
<view class="btn">添加随访记录</view>
<view class="btn" bind:tap="handleRevisitRecord">添加随访记录</view>
</view>
<view class="c-body">
<image wx:if="{{true}}" class="status" src="{{imageUrl}}icon42.png?t={{Timestamp}}"></image>
@ -61,9 +67,105 @@ @@ -61,9 +67,105 @@
<van-icon name="arrow" />
</view>
</view>
<view class="card2">
<view class="c-header">
<view class="left">
<view class="title">注射日</view>
<image class="fold-icon" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image>
</view>
</view>
<view class="c-body">
<view class="row">
<view class="label">注射日期</view>
<view class="content">2025-06-01</view>
</view>
<view class="row">
<view class="label">BBM-H901</view>
<view class="content">
<view>体重 45kg</view>
<view>用药 89ml</view>
<view>预期用药 45 瓶</view>
</view>
</view>
<view class="options">
<view class="item">
诊疗阶段详情
<van-icon name="arrow" />
</view>
<view class="item">
查看全部
<van-icon name="arrow" />
</view>
</view>
</view>
</view>
<view class="card3">
<view class="c-header">
<view class="left">
<view class="title">基因治疗中心检查</view>
<image class="fold-icon" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image>
</view>
</view>
<view class="c-body">
<view class="row">
<view class="label">日期</view>
<view class="content">2025-06-01</view>
</view>
<view class="row">
<view class="label">诊疗医院</view>
<view class="content">体重 45kg</view>
</view>
<view class="row">
<view class="label">检查项目</view>
<view class="content">8/10</view>
</view>
<view class="options">
<view class="item">
诊疗阶段详情
<van-icon name="arrow" />
</view>
<view class="item">
查看全部
<van-icon name="arrow" />
</view>
</view>
</view>
</view>
<view class="card4">
<view class="c-header">
<view class="left">
<view class="title">诊前筛查</view>
<image class="fold-icon" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image>
</view>
</view>
<view class="c-body">
<view class="row">
<view class="label">日期</view>
<view class="content">2025-06-01</view>
</view>
<view class="row">
<view class="label">定点医院</view>
<view class="content">体重 45kg</view>
</view>
<view class="row">
<view class="label">检查项目</view>
<view class="content">8/10</view>
</view>
<view class="options">
<view class="item">
诊疗阶段详情
<van-icon name="arrow" />
</view>
<view class="item">
查看全部
<van-icon name="arrow" />
</view>
</view>
</view>
</view>
</view>
<view class="container1" wx:if="{{nav==1}}">
<view class="card">
<view class="c1_card1">
<view class="row">
<view class="label">出生年月</view>
<view class="content">1980 年 12 月(44 岁)</view>
@ -77,14 +179,90 @@ @@ -77,14 +179,90 @@
<view class="content">69 kg</view>
</view>
</view>
<view class="c1_card1">
<view class="row">
<view class="label">凝血因子</view>
<view class="content">1% 轻度</view>
</view>
<view class="row">
<view class="label">治疗方案</view>
<view class="content">预防治疗</view>
</view>
<view class="row">
<view class="label">FIX暴露日</view>
<view class="content">198 个</view>
</view>
</view>
<view class="c1_card2">
<view class="row">
<view class="wrap">
<view class="label">既往FIX抑制物病史</view>
<view class="content">有</view>
</view>
</view>
<view class="row">
<view class="wrap">
<view class="label">既往肝脏疾病病史</view>
<view class="content">有</view>
</view>
<view class="remark">乙肝、肝硬化</view>
</view>
<view class="row">
<view class="wrap">
<view class="label">您是否有饮酒史</view>
<view class="content">从不</view>
</view>
</view>
<view class="row">
<view class="wrap">
<view class="label">您是否有过敏史</view>
<view class="content">有</view>
</view>
<view class="remark">对空气中的毛絮过敏</view>
</view>
<view class="row1">
<view class="wrap">
<view class="label">
<view>您是否可能存在不适合</view>
<view>使用糖皮质激素的情况?</view>
</view>
<view class="line"></view>
<view class="content">有</view>
</view>
<view class="remark">有高血压</view>
</view>
</view>
<view class="c1_card2">
<view class="row">
<view class="wrap">
<view class="label" style="width: 4em">靶关节</view>
<view class="content">左腿膝盖 左脚脚踝</view>
</view>
</view>
<view class="row">
<view class="wrap">
<view class="label">最近6个月出血</view>
</view>
<view class="remark">
症状1、关节积血:血友病比较多见于膝关节,在就是踝、髋、肘、腕、肩以及手足小关节。 性期关节肿痛,局部发
</view>
</view>
</view>
</view>
<view class="container2" wx:if="{{nav==2}}">
<view class="date-card">
<image class="icon" src="{{imageUrl}}icon67.png?t={{Timestamp}}"></image>
<view class="content">注射日:2025 年5月28日 星期三</view>
</view>
<view class="notic" style="background: url('/images/bg21.png') no-repeat top center/100%">
<view class="title">最近1个月没有您的复诊信息哦!</view>
<view class="content">本周是注射后第12周</view>
<view class="sub-content">建议每周复诊1次~</view>
<image class="badge" src="/images/icon93.png"></image>
<!-- <image class="badge" src="/images/icon94.png"></image> -->
<!-- <image class="badge" src="/images/icon95.png"></image> -->
</view>
<view class="card">
<view class="c-header">注射后第1周 建议本周2次复诊</view>
<view class="c-calendar">
<calendar
bind:whenChangeMonth="handleWhenChangeMonth"
@ -92,9 +270,24 @@ @@ -92,9 +270,24 @@
id="calendar"
bind:jumpToToday="toggleFold"
></calendar>
<view class="lengend">
<view class="l-item">
<view class="dot dot1"></view>
注射日
</view>
<view class="l-item">
<view class="dot dot2"></view>
已复诊
</view>
<view class="l-item">
<view class="dot dot3"></view>
建议复诊
</view>
</view>
</view>
<view class="c-sub-card"></view>
</view>
<view class="btn">向医生询问出诊时间</view>
<view class="btn">添加复诊检查记录</view>
</view>
</view>

281
src/patient/pages/index/index.scss

@ -112,6 +112,7 @@ page { @@ -112,6 +112,7 @@ page {
background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%);
border-radius: 28rpx 28rpx 28rpx 28rpx;
max-width: 5em;
text-align: center;
box-sizing: border-box;
overflow: hidden;
white-space: nowrap;
@ -158,144 +159,188 @@ page { @@ -158,144 +159,188 @@ page {
}
}
}
.process {
margin-top: 32rpx;
background: rgba(255, 255, 255, 0.68);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
.header {
padding: 28rpx 32rpx;
display: flex;
align-items: center;
justify-content: space-between;
.title {
font-size: 32rpx;
color: rgba(242, 58, 47, 1);
font-weight: bold;
}
.dots {
.swiper {
transition: height 0.3s ease;
.process {
margin-top: 32rpx;
background: rgba(255, 255, 255, 0.68);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
.header {
padding: 28rpx 32rpx;
display: flex;
align-items: center;
gap: 12rpx;
.item {
width: 40rpx;
height: 40rpx;
font-size: 24rpx;
color: rgba(225, 36, 42, 1);
justify-content: space-between;
.title {
font-size: 32rpx;
color: rgba(242, 58, 47, 1);
font-weight: bold;
}
.dots {
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
&.active {
background-color: rgba(242, 58, 47, 1);
color: #fff;
gap: 12rpx;
.item {
width: 40rpx;
height: 40rpx;
font-size: 24rpx;
color: rgba(225, 36, 42, 1);
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
&.active {
background-color: rgba(242, 58, 47, 1);
color: #fff;
}
}
}
}
}
.container1 {
padding: 40rpx 58rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(40, 0, 0, 0.06);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
.c-header {
display: flex;
.num {
flex-shrink: 0;
width: 40rpx;
height: 40rpx;
.container1 {
padding: 40rpx 58rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(40, 0, 0, 0.06);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
.c-header {
display: flex;
align-items: center;
justify-content: center;
background: #f23a2f;
border-radius: 50%;
font-size: 35rpx;
color: #fff;
}
.wrap {
padding-left: 16rpx;
.title {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
.num {
flex-shrink: 0;
width: 40rpx;
height: 40rpx;
display: flex;
align-items: center;
justify-content: center;
background: #f23a2f;
border-radius: 50%;
font-size: 35rpx;
color: #fff;
}
.content {
margin-top: 10rpx;
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
.wrap {
padding-left: 16rpx;
.title {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
}
.content {
margin-top: 10rpx;
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
}
}
}
}
.btn {
margin-top: 22rpx;
font-size: 28rpx;
color: rgba(255, 255, 255, 1);
width: 556rpx;
height: 64rpx;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%);
border-radius: 84rpx 84rpx 84rpx 84rpx;
}
}
.container4 {
display: flex;
padding: 32rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(40, 0, 0, 0.06);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
.left {
padding-right: 30rpx;
border-right: 1px dashed rgba(207, 209, 213, 1);
flex: 1;
.title {
.btn {
margin-top: 22rpx;
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
line-height: 44rpx;
}
.date {
font-size: 48rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
color: rgba(255, 255, 255, 1);
width: 556rpx;
height: 64rpx;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%);
border-radius: 84rpx 84rpx 84rpx 84rpx;
}
.footer {
}
.container4 {
padding: 40rpx 58rpx;
background: #ffffff;
box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(40, 0, 0, 0.06);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
.c-header {
display: flex;
justify-content: space-between;
align-items: flex-end;
.date-name {
font-size: 28rpx;
color: rgba(242, 58, 47, 1);
.num {
flex-shrink: 0;
width: 40rpx;
height: 40rpx;
display: flex;
align-items: center;
justify-content: center;
background: #f23a2f;
border-radius: 50%;
font-size: 35rpx;
color: #fff;
}
.add {
width: 68rpx;
height: 68rpx;
.wrap {
padding-left: 16rpx;
.title {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
}
}
}
}
.right {
padding-left: 18rpx;
flex: 1;
.title {
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
line-height: 44rpx;
}
.content {
.c-body {
margin-top: 24rpx;
background: linear-gradient(180deg, #fff4f4 0%, #ffffff 52%, #ffffff 100%);
border-radius: 28rpx 28rpx 28rpx 28rpx;
border: 2rpx solid #ffffff;
display: flex;
align-items: flex-end;
justify-content: space-between;
.status {
width: 136rpx;
height: 136rpx;
padding: 32rpx;
.item1 {
.title {
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
display: flex;
align-items: baseline;
.num {
font-size: 64rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
}
}
.tip {
margin-top: 14rpx;
display: flex;
align-items: center;
gap: 10rpx;
font-size: 24rpx;
color: rgba(255, 163, 112, 1);
background-color: rgba(255, 244, 228, 1);
border-radius: 78rpx;
padding: 0 10rpx;
.icon {
width: 24rpx;
height: 24rpx;
}
}
}
.add {
width: 68rpx;
height: 68rpx;
margin-bottom: 6rpx;
.line {
margin: 0 30rpx;
flex-shrink: 0;
border-right: 1px dashed rgba(207, 209, 213, 1);
}
.item2 {
.title {
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
display: flex;
align-items: baseline;
.num {
font-size: 64rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
}
}
.content {
margin-top: 10rpx;
font-size: 28rpx;
color: rgba(161, 164, 172, 1);
}
}
}
.btn {
font-size: 28rpx;
color: rgba(255, 255, 255, 1);
width: 556rpx;
height: 64rpx;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%);
border-radius: 84rpx 84rpx 84rpx 84rpx;
}
}
}

30
src/patient/pages/index/index.ts

@ -14,21 +14,29 @@ Page({ @@ -14,21 +14,29 @@ Page({
doctorList: [],
progress: 1,
treatment: {
followUpWeekInfo: {},
examDiffDays: '',
},
Days: '',
userInfo: {} as any,
isLoad: false,
},
onLoad() {
app.waitLogin().then(() => {
app.waitLogin({ type: 1 }).then(() => {
app.getUserInfo(1).then((userInfo) => {
this.setData({
userInfo,
isLoad: true,
Days: userInfo.Days.replace(
/(\d+)/g,
'<span style="font-size: 20px;font-weight:bold;color: rgba(255, 255, 255, 1);">$1</span>',
),
})
this.getBindDoctorList()
this.getTeratmentInfo()
const waitBindDoctorId = app.globalData.waitBindDoctorId
if (waitBindDoctorId) {
this.handleWaitBindDoctor(waitBindDoctorId)
@ -39,8 +47,9 @@ Page({ @@ -39,8 +47,9 @@ Page({
})
},
onShow() {
if (app.globalData.loginState) {
if (this.data.isLoad) {
this.getBindDoctorList()
this.getTeratmentInfo()
}
},
getBindDoctorList() {
@ -54,6 +63,23 @@ Page({ @@ -54,6 +63,23 @@ Page({
})
})
},
getTeratmentInfo() {
wx.ajax({
method: 'GET',
url: '?r=wtx/treatment/get-index-info',
data: {},
}).then((res) => {
this.setData({
treatment: res,
progress: res.period,
})
})
},
handleSwiperChange(e) {
this.setData({
progress: e.detail.current,
})
},
handleCondormBindDoctor(id) {
app.getDoctorInfo(id).then((res) => {
this.setData({

189
src/patient/pages/index/index.wxml

@ -51,64 +51,132 @@ @@ -51,64 +51,132 @@
<view class="btn" bind:tap="handleBindDoctor">扫一扫绑定</view>
</view>
</view>
<view class="process">
<view class="header">
<view class="title">我的专属诊疗流程</view>
<view class="dots">
<view class="item {{progress==1 && 'active'}}" bind:tap="handleProgress" data-index="{{1}}">1</view>
<view class="item {{progress==2 && 'active'}}" bind:tap="handleProgress" data-index="{{2}}">2</view>
<view class="item {{progress==3 && 'active'}}" bind:tap="handleProgress" data-index="{{3}}">3</view>
<view class="item {{progress==4 && 'active'}}" bind:tap="handleProgress" data-index="{{4}}">4</view>
</view>
</view>
<view class="container1" wx:if="{{progress==1}}">
<view class="c-header">
<view class="num">1</view>
<view class="wrap">
<view class="title">准备您的诊前筛查</view>
<view class="content">了解您筛查全部流程和注意事项</view>
<swiper class="swiper" style="height: {{progress === 3 ? 480 : 380}}rpx;" current="{{progress}}" bindchange="handleSwiperChange">
<swiper-item>
<view class="process">
<view class="header">
<view class="title">我的专属诊疗流程</view>
<view class="dots">
<view class="item active">1</view>
<view class="item">2</view>
<view class="item">3</view>
<view class="item">4</view>
</view>
</view>
</view>
<view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view>
</view>
<view class="container1" wx:elif="{{progress==2}}">
<view class="c-header">
<view class="num">2</view>
<view class="wrap">
<view class="title">基于治疗中心检查</view>
<view class="content">做好每一步检查,向美好生活继续!</view>
<view class="container1">
<view class="c-header">
<view class="num">1</view>
<view class="wrap">
<view class="title">准备您的诊前筛查</view>
<view class="content">了解您筛查全部流程和注意事项</view>
</view>
</view>
<view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view>
</view>
</view>
<view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view>
</view>
<view class="container1" wx:elif="{{progress==3}}">
<view class="c-header">
<view class="num">3</view>
<view class="wrap">
<view class="title">基因治疗-注射日</view>
<view class="content">重要的日子终于到来了~</view>
</swiper-item>
<swiper-item>
<view class="process">
<view class="header">
<view class="title">我的专属诊疗流程</view>
<view class="dots">
<view class="item">1</view>
<view class="item active">2</view>
<view class="item">3</view>
<view class="item">4</view>
</view>
</view>
<view class="container1">
<view class="c-header">
<view class="num">2</view>
<view class="wrap">
<view class="title">基于治疗中心检查</view>
<view class="content">做好每一步检查,向美好生活继续!</view>
</view>
</view>
<view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view>
</view>
</view>
<view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view>
</view>
<view class="container4" wx:elif="{{progress==4}}">
<view class="left">
<view class="title">最近一次随访</view>
<view class="date">2025.6.15</view>
<view class="footer">
<view class="date-name">2天后</view>
<image class="add" src="{{imageUrl}}icon61.png?t={{Timestamp}}"></image>
</swiper-item>
<swiper-item>
<view class="process">
<view class="header">
<view class="title">我的专属诊疗流程</view>
<view class="dots">
<view class="item">1</view>
<view class="item">2</view>
<view class="item active">3</view>
<view class="item">4</view>
</view>
</view>
<view class="container1">
<view class="c-header">
<view class="num">3</view>
<view class="wrap">
<view class="title">基因治疗-注射日</view>
<view class="content">重要的日子终于到来了~</view>
</view>
</view>
<view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view>
</view>
</view>
<view class="right">
<view class="title">最近状态状态</view>
<view class="content">
<image class="status" src="{{imageUrl}}icon42.png?t={{Timestamp}}"></image>
<image class="add" src="{{imageUrl}}icon61.png?t={{Timestamp}}"></image>
</swiper-item>
<swiper-item>
<view class="process">
<view class="header">
<view class="title">我的专属诊疗流程</view>
<view class="dots">
<view class="item">1</view>
<view class="item">2</view>
<view class="item">3</view>
<view class="item active">4</view>
</view>
</view>
<view class="container4">
<view class="c-header">
<view class="num">4</view>
<view class="wrap">
<view class="title">长期随访</view>
</view>
</view>
<view class="c-body">
<view class="item1">
<view class="title">
注射后
<block wx:if="{{treatment.followUpWeekInfo.iYear || treatment.followUpWeekInfo.iYearDay}}">
<block wx:if="{{treatment.followUpWeekInfo.iYear}}">
<text class="num">{{treatment.followUpWeekInfo.iYear}}</text>
</block>
<block wx:if="{{treatment.followUpWeekInfo.iYearDay}}">
<text class="num">{{treatment.followUpWeekInfo.iYearDay}}</text>
</block>
</block>
<block wx:elif="{{treatment.followUpWeekInfo.iWeek}}">
<text class="num">{{treatment.followUpWeekInfo.iWeek}}</text>
</block>
</view>
<view class="tip">
<image class="icon" src="/images/icon96.png"></image>
建议每2周复查一次
</view>
</view>
<view class="line"></view>
<view class="item2">
<view class="title">
<text class="num">{{treatment.followUpWeekInfo.examDiffDays}}</text>
天前
</view>
<view class="content">最近一次复诊</view>
</view>
</view>
<view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view>
</view>
</view>
</view>
</view>
</swiper-item>
</swiper>
<view class="module1">
<view class="m-header">
<view class="title">为他们加油</view>
@ -125,25 +193,22 @@ @@ -125,25 +193,22 @@
</view>
<view class="m-container">
<!-- prettier-ignore -->
<view class="item" bind:tap="handleColtStat" style="background: url('{{imageUrl}}icon16.png?t={{Timestamp}}') no-repeat top 32rpx right 24rpx/84rpx 84rpx, linear-gradient(32deg, #ffffff 0%, #fffcfc 55%, #fff0f0 100%);"
>
<view class="num">13%</view>
<view class="item" style="background: url('{{imageUrl}}icon17.png?t={{Timestamp}}') no-repeat top 32rpx right 24rpx/84rpx 84rpx, linear-gradient(32deg, #ffffff 0%, #fffcfc 55%, #fff0f0 100%);">
<view class="num">
50<text class="sub" style="color:rgba(246, 74, 58, 1)">%</text>
</view>
<view class="content">上次凝血因子水平(IX)</view>
<view class="footer">
<view class="date">07月23日</view>
<image class="add" src="{{imageUrl}}icon18.png?t={{Timestamp}}"></image>
<view class="date">7月23日</view>
</view>
</view>
<!-- prettier-ignore -->
<view class="item" style="background: url('{{imageUrl}}icon17.png?t={{Timestamp}}') no-repeat top 32rpx right 24rpx/84rpx 84rpx, linear-gradient(32deg, #ffffff 0%, #fffcfc 55%, #fff0f0 100%);">
<view class="num">
50
<text class="sub">分钟</text>
</view>
<view class="content">最近一次运动</view>
<view class="item" bind:tap="handleColtStat" style="background: url('{{imageUrl}}icon16.png?t={{Timestamp}}') no-repeat top 32rpx right 24rpx/84rpx 84rpx, linear-gradient(32deg, #ffffff 0%, #fffcfc 55%, #fff0f0 100%);"
>
<view class="num">13<text class="sub">天前</text></view>
<view class="content">最近一次出血</view>
<view class="footer">
<view class="date">4月12日</view>
<image class="add" src="{{imageUrl}}icon18.png?t={{Timestamp}}"></image>
<view class="date">07月23日</view>
</view>
</view>
</view>

2
src/patient/pages/injectDate/index.ts

@ -23,7 +23,7 @@ Page({ @@ -23,7 +23,7 @@ Page({
},
onLoad() {
this.loadGifImage()
app.waitLogin().then(() => {
app.waitLogin({type:1}).then(() => {
this.setArea()
})
},

2
src/patient/pages/knowledge/index.ts

@ -12,7 +12,7 @@ Page({ @@ -12,7 +12,7 @@ Page({
},
},
onShow() {
app.waitLogin().then(() => {
app.waitLogin({type:1}).then(() => {
app.mpBehavior({ PageName: 'PG_EDUCATION' })
this.getList()
})

2
src/patient/pages/knowledgeDetail/index.ts

@ -14,7 +14,7 @@ Page({ @@ -14,7 +14,7 @@ Page({
this.setData({
id: options.id,
})
app.waitLogin().then(() => {
app.waitLogin({type:1}).then(() => {
this.handleView()
})
},

2
src/patient/pages/knowledgeDetailVideo/index.ts

@ -23,7 +23,7 @@ Page({ @@ -23,7 +23,7 @@ Page({
id: options.id,
activeId: options.id,
})
app.waitLogin().then(() => {
app.waitLogin({type:1}).then(() => {
this.handleView()
})
},

6
src/patient/pages/login/index.ts

@ -111,8 +111,10 @@ Page({ @@ -111,8 +111,10 @@ Page({
if (this.data.backPage) {
wx.navigateBack()
} else if (res.PatientId) {
wx.reLaunch({
url: `/patient/pages/index/index`,
app.updateLoginInfo(() => {
wx.reLaunch({
url: '/patient/pages/index/index',
})
})
} else {
wx.navigateTo({

2
src/patient/pages/my/index.ts

@ -10,7 +10,7 @@ Page({ @@ -10,7 +10,7 @@ Page({
Days: '',
},
onLoad() {
app.waitLogin().then(() => {
app.waitLogin({type:1}).then(() => {
app.getUserInfo(1).then((userInfo) => {
this.setData({
userInfo,

4
src/patient/pages/revisitRecord/index.json

@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
{
"navigationBarTitleText": "免疫抑制剂管理",
"usingComponents": {}
}

42
src/patient/pages/revisitRecord/index.scss

@ -0,0 +1,42 @@ @@ -0,0 +1,42 @@
page {
background-color: rgba(247, 247, 250, 1);
}
.page {
.list {
padding: 32rpx 40rpx;
.total {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
.red {
color: rgba(246, 74, 58, 1);
font-size: 40rpx;
}
}
.list-card {
padding: 16rpx 0;
margin-top: 24rpx;
background: #ffffff;
border-radius: 24rpx 24rpx 24rpx 24rpx;
.item {
padding: 16rpx 32rpx;
display: flex;
.item-title {
width: 5em;
font-size: 32rpx;
color: rgba(161, 164, 172, 1);
}
.item-content {
color: rgba(1, 1, 5, 1);
}
}
}
.add {
position: fixed;
left: 50%;
bottom: 142rpx;
transform: translateX(-50%);
width: 156rpx;
height: 156rpx;
}
}
}

52
src/patient/pages/revisitRecord/index.ts

@ -0,0 +1,52 @@ @@ -0,0 +1,52 @@
const _app = getApp<IAppOption>()
Page({
data: {
list: [],
pagination: {
page: 1,
pages: 1,
count: 1,
},
},
onLoad() {},
getList(newPage = 1) {
wx.ajax({
method: 'GET',
url: '?r=wtx/knowledge/list',
data: {
page: newPage,
},
}).then((res) => {
const list = res.page === 1 ? res.list : [...this.data.list, ...res.list]
this.setData({
total: res.count,
list,
pagination: {
page: res.page,
pages: res.pages,
count: res.count,
},
})
})
},
onReachBottom() {
const { page, pages } = this.data.pagination
if (pages > page) {
this.getList(page + 1)
}
},
handleEdit(e) {
const { id } = e.currentTarget.dataset
wx.navigateTo({
url: `/patient/pages/inhibitorsManage/index?id=${id}`,
})
},
handleAdd() {
wx.navigateTo({
url: '/patient/pages/inhibitorsManage/index',
})
},
})
export {}

25
src/patient/pages/revisitRecord/index.wxml

@ -0,0 +1,25 @@ @@ -0,0 +1,25 @@
<view class="page">
<view class="list">
<view class="total">
随访次数:
<text class="red">2</text>
</view>
<view class="list-card" bind:tap="handleEdit" data-id="1">
<view class="item">
<view class="item-title">日期</view>
<view class="item-content">2025-06-13</view>
</view>
<view class="item">
<view class="item-title">诊疗医院</view>
<view class="item-content">唐山人民医院</view>
</view>
<view class="item">
<view class="item-title">检查项目</view>
<view class="item-content">2/3</view>
</view>
</view>
<pagination pagination="{{pagination}}"></pagination>
<image class="add" src="{{imageUrl}}icon53.png?t={{Timestamp}}" bind:tap="handleAdd"></image>
</view>
</view>

3
src/patient/pages/selectDoctorList/index.json

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
{
"navigationStyle": "custom",
"usingComponents": {
"navbar": "/components/navbar/index"
"navbar": "/components/navbar/index",
"popup": "/components/popup/index"
}
}

4
src/patient/pages/selectDoctorList/index.scss

@ -4,6 +4,8 @@ page { @@ -4,6 +4,8 @@ page {
.page {
padding: 0 40rpx 40rpx;
min-height: 100vh;
box-sizing: border-box;
background: linear-gradient(180deg, #ffffff 0%, rgba(255, 255, 255, 0) 100%);
.card {
margin-top: 40rpx;
@ -40,7 +42,7 @@ page { @@ -40,7 +42,7 @@ page {
}
.tag {
margin-top: 12rpx;
vertical-align: middle;
vertical-align: 2rpx;
display: inline-block;
padding: 0 8rpx;
font-size: 20rpx;

65
src/patient/pages/selectDoctorList/index.ts

@ -1,14 +1,65 @@ @@ -1,14 +1,65 @@
const _app = getApp<IAppOption>()
const app = getApp<IAppOption>()
Page({
data: {},
onLoad() {},
handleUnbind() {
wx.showModal({
title: '确认解绑?',
confirmColor: 'rgba(246, 74, 58, 1)',
data: {
popupShow: false,
// popupType:'selectHostipal',
popupType: 'selectHostipalComplete',
popupParams: {} as any,
doctorList: [] as any,
},
onLoad() {
app.waitLogin({ type: 1 }).then(() => {
this.getBindDoctorList()
})
},
getBindDoctorList() {
wx.ajax({
method: 'GET',
url: '?r=wtx/account/get-bind-doctor-list',
data: {},
}).then((res) => {
this.setData({
doctorList: res,
})
})
},
hadnleSelect(e) {
const { index } = e.currentTarget.dataset
const item = this.data.doctorList[index]
wx.ajax({
method: 'POST',
url: '?r=wtx/treatment/save-d-hospital',
data: {
hospitalId: item.hospitalId,
},
}).then(() => {
this.setData({
popupShow: true,
popupType: 'selectHostipalComplete',
popupParams: {
close: true,
},
})
})
},
handlePopupOk() {
const { popupType } = this.data
if (popupType === 'selectHostipal') {
this.setData({
popupShow: false,
})
}
},
handlePopupCancel() {
const { popupType } = this.data
if (popupType === 'selectHostipalComplete') {
wx.navigateBack({
delta: 2,
})
}
},
handleBack() {
wx.navigateBack()
},

28
src/patient/pages/selectDoctorList/index.wxml

@ -5,24 +5,26 @@ @@ -5,24 +5,26 @@
class="page"
style="background: url('{{imageUrl}}bg7.png?t={{Timestamp}}') no-repeat top center/100% 602rpx;padding-top:{{pageTop}}px;"
>
<view class="card">
<view class="card" wx:for="{{doctorList}}" wx:key="doctorId">
<view class="user">
<image
class="avatar"
src="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567"
></image>
<image class="avatar" src="{{item.doctorAvatar}}"></image>
<view class="wrap">
<view class="w-name">王青</view>
<view class="w-name">{{item.doctorName}}</view>
<view class="w-content">
<view class="hostipal">北京积水潭医院龙泽院区</view>
<view class="tag">三甲</view>
<view class="hostipal">{{item.hospitalName}}</view>
<view class="tag">{{item.hospitalClassificationName}}{{item.hospitalLevelName}}</view>
</view>
</view>
<view class="select">选择</view>
</view>
<view class="content">
北京积水潭医院龙泽院区副主任医师,有 12 年的
治疗经验。中华医学会血液学分会血栓与止血学组副组长,中国罕见病联盟血友病学组副秘书长,中国血友病青年协作组常务理事长,
<view class="select" bind:tap="hadnleSelect" data-index="{{index}}">选择</view>
</view>
<view class="content" wx:if="{{item.introduce}}">{{item.introduce}}</view>
</view>
</view>
<popup
show="{{popupShow}}"
type="{{popupType}}"
params="{{popupParams}}"
bind:ok="handlePopupOk"
bind:cancel="handlePopupCancel"
></popup>

2
src/patient/pages/selectHostipal/index.scss

@ -2,7 +2,7 @@ page { @@ -2,7 +2,7 @@ page {
background-color: rgba(247, 247, 250, 1);
}
.page {
padding: 32rpx 30rpx;
padding: 32rpx 30rpx 80rpx;
.bind-doctor {
padding: 30rpx 32rpx;
background: linear-gradient(40deg, #ffffff 0%, #fff3f2 100%);

110
src/patient/pages/selectHostipal/index.ts

@ -1,16 +1,116 @@ @@ -1,16 +1,116 @@
const _app = getApp<IAppOption>()
const app = getApp<IAppOption>()
Page({
data: {
popupShow: false,
// popupType:'selectHostipal',
popupType: 'selectHostipalComplete',
popupParams: {
close: true,
content: '',
popupParams: {} as any,
selectId: '',
list: [] as any[],
total: 0,
pagination: {
page: 1,
pages: 1,
count: 1,
},
search: '',
provinceId: '',
provinceName: '',
cityId: '',
cityName: '',
},
onLoad() {
app.waitLogin({ type: 1 }).then(() => {
this.getHospitalList()
})
},
handleSearch() {
this.getHospitalList(1)
},
handleAreaChange(e) {
const value = e.detail
this.setData({
provinceId: value[0].value,
cityId: value[1] ? value[1].value : '',
provinceName: value[0].label,
cityName: value[1] ? value[1].label : '',
})
this.getHospitalList(1)
},
getHospitalList(newPage = 1) {
const { search, provinceId, cityId } = this.data
wx.ajax({
method: 'GET',
url: '?r=wtx/common/get-hospital-list',
data: {
search,
provinceId,
cityId,
page: newPage,
},
}).then((res) => {
const list = res.page === 1 ? res.list : [...this.data.list, ...res.list]
this.setData({
total: res.count,
list,
pagination: {
page: res.page,
pages: res.pages,
count: res.count,
},
})
})
},
onReachBottom() {
const { page, pages } = this.data.pagination
if (pages > page) {
this.getHospitalList(page + 1)
}
},
handleSelect(e) {
const { index } = e.currentTarget.dataset
const item = this.data.list[index]
this.setData({
selectId: item.hospitalId,
popupShow: true,
popupType: 'selectHostipal',
popupParams: {
...item,
},
})
},
handlePopupOk() {
const { popupType } = this.data
if (popupType === 'selectHostipal') {
this.setData({
popupShow: false,
})
wx.ajax({
method: 'POST',
url: '?r=wtx/treatment/save-d-hospital',
data: {
hospitalId: this.data.selectId,
},
}).then(() => {
this.setData({
popupShow: true,
popupType: 'selectHostipalComplete',
popupParams: {
close: true,
},
})
})
}
},
onLoad() {},
handlePopupCancel() {
const { popupType } = this.data
if (popupType === 'selectHostipalComplete') {
wx.navigateBack()
}
this.setData({
popupShow: false,
})

28
src/patient/pages/selectHostipal/index.wxml

@ -9,31 +9,35 @@ @@ -9,31 +9,35 @@
<view class="form">
<view class="search">
<image class="icon" src="{{imageUrl}}icon33.png?t={{Timestamp}}"></image>
<input type="text" placeholder-class="place-input" placeholder="请输入搜索您的诊前检查医院" class="input" />
<input
type="text"
model:value="{{search}}"
placeholder-class="place-input"
placeholder="请输入搜索您的诊前检查医院"
class="input"
bindconfirm="handleSearch"
/>
</view>
<pickerArea>
<pickerArea mode="region" value="{{CityId}}" level="city" level="{{2}}" bind:change="handleAreaChange">
<view class="picker">
<view class="picker-item">省份</view>
<view class="picker-item">城市</view>
<view class="picker-item">{{provinceName || '省份'}}</view>
<view class="picker-item">{{cityName || '城市'}}</view>
</view>
</pickerArea>
</view>
<view class="list">
<view class="list-item">
<view class="list-item" wx:for="{{list}}" wx:key="hospitalId" bind:tap="handleSelect" data-index="{{index}}">
<view class="aside">
<image wx:if="{{true}}" class="icon" src="{{imageUrl}}icon34.png?t={{Timestamp}}"></image>
<image wx:if="{{selectId == item.selectId}}" class="icon" src="{{imageUrl}}icon34.png?t={{Timestamp}}"></image>
<image wx:else class="icon" src="{{imageUrl}}icon35.png?t={{Timestamp}}"></image>
</view>
<view class="container">
<view class="logo">
<image
class="logo-img"
src="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567"
></image>
<image class="logo-img" src="{{item.hospitalImg}}"></image>
</view>
<view class="wrap">
<view class="name">唐山市人民医院</view>
<view class="content">河北省唐山市路南区胜利路65号</view>
<view class="name">{{item.hospitalName}}</view>
<view class="content">{{item.provinceName}}{{item.cityName}}{{item.countyName}}{{item.address}}</view>
</view>
</view>
</view>

12
src/patient/pages/userInfo/index.scss

@ -5,6 +5,7 @@ page { @@ -5,6 +5,7 @@ page {
.page {
padding: 48rpx 40rpx;
.form {
margin-bottom: 72rpx;
padding: 0 32rpx;
background-color: #fff;
border-radius: 24rpx;
@ -56,16 +57,16 @@ page { @@ -56,16 +57,16 @@ page {
}
}
}
&.form-family{
.row{
.label{
&.form-family {
.row {
.label {
width: 7em;
}
}
}
}
.login-out {
margin-top: 72rpx;
margin-top: 32rpx;
padding: 22rpx;
line-height: 44rpx;
font-size: 32rpx;
@ -73,8 +74,5 @@ page { @@ -73,8 +74,5 @@ page {
text-align: center;
background-color: #fff;
border-radius: 96rpx;
&:last-of-type {
margin-top: 32rpx;
}
}
}

6
src/patient/pages/userInfo/index.ts

@ -14,8 +14,8 @@ Page({ @@ -14,8 +14,8 @@ Page({
userInfo: {},
},
onLoad() {
app.waitLogin().then(() => {
onShow() {
app.waitLogin({type:1}).then(() => {
app.getUserInfo(1).then((userInfo) => {
this.setData({
name: userInfo.PatientName,
@ -79,7 +79,7 @@ Page({ @@ -79,7 +79,7 @@ Page({
url: '?r=wtx/user/reg-logout',
data: {},
}).then(() => {
app.startLogin(() => {
app.updateLoginInfo(() => {
wx.reLaunch({
url: '/pages/index/index',
})

4
src/patient/pages/userInfo/index.wxml

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
<view class="page">
<view class="form {{userInfo.RelationType == 2 && 'form-family'}}">
<view class="form {{userInfo.RelationType != 1 && 'form-family'}}">
<view class="row">
<view class="label">{{userInfo.RelationType == 1 ? '我的' : '亲友'}}姓名</view>
<view class="container">
@ -45,6 +45,6 @@ @@ -45,6 +45,6 @@
</view>
</view>
</view>
<view class="login-out" bind:tap="handleLoginOut">注销账号</view>
<view wx:if="{{userInfo.IsRootUser==1}}" class="login-out" bind:tap="handleLoginOut">注销账号</view>
<view class="login-out" bind:tap="handleOut">退出登录</view>
</view>

2
typings/index.d.ts vendored

@ -47,7 +47,7 @@ interface IAppOption { @@ -47,7 +47,7 @@ interface IAppOption {
getUserInfo: (type?: 0 | 1 | 2) => Promise<any>
startLogin: (callback?: () => void) => void
waitLogin: (params?: { type?: 0 | 1 | 2 | 'any' }) => Promise<void>
checkLoginType: (type: 0 | 1 | 2) => boolean
checkLoginType: (type: 0 | 1 | 2 | 'any') => boolean
mpBehavior: (data: { PageName: string; type?: 0 | 1 | 2 | 3 }) => void
globalSystemInfo?: globalSystemInfo
[propName: string]: any

Loading…
Cancel
Save