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. 2
      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. 24
      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. 111
      src/patient/pages/index/index.scss
  64. 30
      src/patient/pages/index/index.ts
  65. 129
      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. 4
      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. 63
      src/patient/pages/selectDoctorList/index.ts
  79. 28
      src/patient/pages/selectDoctorList/index.wxml
  80. 2
      src/patient/pages/selectHostipal/index.scss
  81. 106
      src/patient/pages/selectHostipal/index.ts
  82. 30
      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
wx.showModal({ wx.showModal({
title: '确认解绑?', title: '确认解绑?',
confirmColor: 'rgba(246, 74, 58, 1)', confirmColor: 'rgba(246, 74, 58, 1)',
// confirmColor: 'rgba(29, 107, 255, 1)',
}) })
``` ```

11
project.private.config.json

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

3
src/app.json

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

13
src/app.ts

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

4
src/components/pickerArea/index.ts

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

68
src/components/popup/index.scss

@ -129,12 +129,13 @@
margin-top: 16rpx; margin-top: 16rpx;
line-height: 28rpx; line-height: 28rpx;
.content { .content {
display: inline;
margin-right: 8rpx; margin-right: 8rpx;
display: inline-block;
font-size: 28rpx; font-size: 28rpx;
color: rgba(161, 164, 172, 1); color: rgba(161, 164, 172, 1);
} }
.tag { .tag {
vertical-align: 2rpx;
display: inline-block; display: inline-block;
font-size: 20rpx; font-size: 20rpx;
color: rgba(255, 255, 255, 1); color: rgba(255, 255, 255, 1);
@ -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 { .close {
margin: 32rpx auto 0; margin: 32rpx auto 0;
display: block; display: block;

12
src/components/popup/index.wxml

@ -298,6 +298,18 @@
</view> </view>
</view> </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 <image
wx:if="{{params.close}}" wx:if="{{params.close}}"
class="close" class="close"

1
src/components/popupDoctor/index.scss

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

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

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

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

@ -1,6 +1,7 @@
{ {
"navigationStyle": "custom", "navigationStyle": "custom",
"usingComponents": { "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 {
margin-top: -8rpx; margin-top: -8rpx;
transform: scale(0.8); 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 { .link {
color: rgba(28, 107, 255, 1); color: rgba(28, 107, 255, 1);

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

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

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

@ -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 <view
class="page" class="page"
style="padding-top: {{pageTop + 60}}px;background:url('{{imageUrl}}bg19.png?t={{Timestamp}}') no-repeat top center/100% 618rpx;" style="padding-top: {{pageTop + 60}}px;background:url('{{imageUrl}}bg19.png?t={{Timestamp}}') no-repeat top center/100% 618rpx;"
@ -42,14 +45,14 @@
<view class="signature"> <view class="signature">
<view class="row"> <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"> <view class="r-content">
我已阅读并同意 我已阅读并同意
<text class="link">《个人信息及隐私协议政策》</text> <text class="link">《个人信息及隐私协议政策》</text>
</view> </view>
</view> </view>
<view class="row"> <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"> <view class="r-content">
我已阅读并同意 我已阅读并同意
<text class="link">《个人信息共享知情同意书》</text> <text class="link">《个人信息共享知情同意书》</text>

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

@ -2,6 +2,6 @@
"navigationStyle": "custom", "navigationStyle": "custom",
"usingComponents": { "usingComponents": {
"popup": "/components/popup/index", "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 {
font-size: 28rpx; font-size: 28rpx;
color: rgba(161, 164, 172, 1); color: rgba(161, 164, 172, 1);
.tag { .tag {
margin-left: 10rpx;
display: inline-block; display: inline-block;
padding: 0 8rpx; padding: 0 8rpx;
font-size: 24rpx; font-size: 24rpx;

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

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

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

@ -4,15 +4,15 @@
> >
<view class="user"> <view class="user">
<button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar"> <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> </button>
<view class="wrap"> <view class="wrap">
<view class="name"> <view class="name">
<text class="nickname">{{userInfo.Name}}</text> <text class="nickname">{{userInfo.doctorName}}</text>
</view> </view>
<view class="hostipal"> <view class="hostipal">
{{userInfo.HospitalName}} {{userInfo.hospitalName}}
<view class="tag">随访医院</view> <view class="tag">{{userInfo.hospitalClassificationName}}{{userInfo.hospitalLevelName}}</view>
</view> </view>
</view> </view>
<image class="code" src="{{imageUrl}}icon88.png?t={{Timestamp}}"></image> <image class="code" src="{{imageUrl}}icon88.png?t={{Timestamp}}"></image>
@ -35,4 +35,4 @@
<popup model:show="{{popupShow}}" type="{{popupType}}" params="{{popupParams}}" bind:cancel="handlePopupCancel"></popup> <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({
handleLoginOut() { handleLoginOut() {
wx.showModal({ wx.showModal({
title: '确定退出登录吗?', title: '确定退出登录吗?',
confirmColor: 'rgba(246, 74, 58, 1)', confirmColor: 'rgba(29, 107, 255, 1)',
success: (res) => { success: (res) => {
if (res.confirm) { if (res.confirm) {
wx.ajax({ wx.ajax({
@ -19,7 +19,7 @@ Page({
url: '?r=wtx/doctor/account/reg-logout', url: '?r=wtx/doctor/account/reg-logout',
data: {}, data: {},
}).then(() => { }).then(() => {
app.startLogin(() => { app.updateLoginInfo(() => {
wx.reLaunch({ wx.reLaunch({
url: '/pages/index/index', 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({
Argument: false, Argument: false,
}, },
onLoad() { onLoad() {
app.waitLogin().then(() => { app.waitLogin({ type: 0 }).then(() => {
app.mpBehavior({ PageName: 'PG_PREAPPLY' }) app.mpBehavior({ PageName: 'PG_PREAPPLY' })
app.getUserInfo().then((userInfo) => { app.getUserInfo().then((userInfo) => {
if (userInfo.ApplyIntentionId) { if (userInfo.ApplyIntentionId) {

2
src/pages/applyFromResult/index.ts

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

1
src/pages/ask/index.json

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

1
src/pages/ask/index.scss

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

2
src/pages/ask/index.ts

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

1
src/pages/ask/index.wxml

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

2
src/pages/index/index.ts

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

2
src/pages/knowledge/index.ts

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

2
src/pages/knowledgeDetail/index.ts

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

2
src/pages/knowledgeDetailVideo/index.ts

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

21
src/pages/my/index.ts

@ -9,7 +9,7 @@ Page({
showPatient: false, showPatient: false,
}, },
onShow() { onShow() {
app.waitLogin().then(() => { app.waitLogin({ type: 0 }).then(() => {
app.mpBehavior({ PageName: 'BTN_MY_NAV' }) app.mpBehavior({ PageName: 'BTN_MY_NAV' })
app.getUserInfo().then((userInfo) => { app.getUserInfo().then((userInfo) => {
this.setData({ this.setData({
@ -75,24 +75,15 @@ Page({
popupShow: false, popupShow: false,
}) })
}, },
routerTo(e) { routerTo(e: any) {
const { url } = e.currentTarget.dataset const { url, pname } = e.currentTarget.dataset
if (pname) {
app.mpBehavior({ PageName: pname })
}
wx.navigateTo({ wx.navigateTo({
url, 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 {} export {}

12
src/pages/my/index.wxml

@ -31,10 +31,16 @@
></image> ></image>
</view> </view>
<view class="list"> <view class="list">
<view class="list-header" bind:tap="handleNone"> <view class="list-header">
<view class="name">切换身份</view> <view class="name">切换身份</view>
</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> <image class="icon" src="{{imageUrl}}icon13.png?t={{Timestamp}}"></image>
<view class="wrap"> <view class="wrap">
<view class="name">我已开启基因治疗</view> <view class="name">我已开启基因治疗</view>
@ -42,7 +48,7 @@
</view> </view>
<image class="icon2" src="{{imageUrl}}icon12.png?t={{Timestamp}}"></image> <image class="icon2" src="{{imageUrl}}icon12.png?t={{Timestamp}}"></image>
</view> </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> <image class="icon" src="{{imageUrl}}icon14.png?t={{Timestamp}}"></image>
<view class="wrap"> <view class="wrap">
<view class="name">我是医生</view> <view class="name">我是医生</view>

2
src/pages/start/index.ts

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

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

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

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

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

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

@ -13,10 +13,9 @@ interface IMessageItem {
msgCreateTimeName?: string // 消息创建时间 msgCreateTimeName?: string // 消息创建时间
showTime?: boolean showTime?: boolean
questionId?: string // 问题ID questionId?: string // 问题ID
Reference?: string // 参考资料 doctorId?: string
LikeTimes?: number // 点赞次数 doctorName?: string
IsLike?: boolean // 是否点赞 doctorAvatar?: string
HasAnswer?: boolean // 是否有答案
} }
Page({ Page({
@ -191,10 +190,13 @@ Page({
{ {
msgId: new Date().getTime().toString(), msgId: new Date().getTime().toString(),
msgContentType: '2', msgContentType: '2',
msgContent: aName, msgContent: aName.answer,
msgVisitTime: '', msgVisitTime: '',
msgFromType: '2', msgFromType: '2',
msgCreateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), 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 @@
<image <image
class="a-img" class="a-img"
mode="aspectFill" mode="aspectFill"
src="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567" src="{{message.doctorAvatar}}"
></image> ></image>
<view class="label">刘湖飞</view> <view class="label">{{message.doctorName}}</view>
</view> </view>
<view class="d-container"> <view class="d-container">
<view class="message" wx:if="{{message.msgContentType==='2'}}">{{message.msgContent }}</view> <view class="message" wx:if="{{message.msgContentType==='2'}}">{{message.msgContent }}</view>
@ -118,6 +118,7 @@
<view id="place" class="place"></view> <view id="place" class="place"></view>
</scroll-view> </scroll-view>
</view> </view>
<van-overlay show="{{ expend }}" bind:click="handleFooter"></van-overlay>
<view class="page-footer {{expend && 'expend'}}" catch:tap="handleFooter"> <view class="page-footer {{expend && 'expend'}}" catch:tap="handleFooter">
<view class="options"> <view class="options">
<view class="title"> <view class="title">

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

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

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

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

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

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

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

@ -1,4 +1,4 @@
const _app = getApp<IAppOption>() const app = getApp<IAppOption>()
Page({ Page({
data: { data: {
@ -12,8 +12,30 @@ Page({
}, },
current: 0, 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) { handleSwiperChange(e) {
this.setData({ this.setData({
current: e.detail.current, current: e.detail.current,

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

@ -29,15 +29,19 @@
<view class="row" bind:tap="handleSelectHostipal"> <view class="row" bind:tap="handleSelectHostipal">
<view class="aside"> <view class="aside">
<view class="slow-line"></view> <view class="slow-line"></view>
<!-- <image class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> --> <image
<image class="radio" src="{{imageUrl}}icon29.png?t={{Timestamp}}"></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 class="line"></view>
</view> </view>
<view class="container"> <view class="container">
<view class="c-body"> <view class="c-body">
<view class="wrap"> <view class="wrap">
<view class="content">1.您的诊前检查医院</view> <view class="content">1.您的诊前检查医院</view>
<view class="hostipl-name">唐山市人民医院</view> <view class="hostipl-name" wx:if="{{periodInfo1.hospitalName}}">{{periodInfo1.hospitalName}}</view>
</view> </view>
<image class="icon" src="{{imageUrl}}icon30.png?t={{Timestamp}}"></image> <image class="icon" src="{{imageUrl}}icon30.png?t={{Timestamp}}"></image>
</view> </view>
@ -47,7 +51,12 @@
<view class="row" bind:tap="handleCasesAdd"> <view class="row" bind:tap="handleCasesAdd">
<view class="aside"> <view class="aside">
<view class="slow-line"></view> <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 class="line"></view>
</view> </view>
<view class="container"> <view class="container">
@ -62,7 +71,12 @@
<view class="row" bind:tap="handlePreDiagnosisReport"> <view class="row" bind:tap="handlePreDiagnosisReport">
<view class="aside"> <view class="aside">
<view class="slow-line"></view> <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 class="line"></view>
</view> </view>
<view class="container"> <view class="container">

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

@ -1,12 +1,15 @@
import dayjs from 'dayjs'
const app = getApp<IAppOption>() const app = getApp<IAppOption>()
Page({ Page({
data: { data: {
relationType: '', relationType: '0',
name: '', name: '',
birthMonth: '', birthMonth: '',
provinceId: '', provinceId: '',
cityId: '', cityId: '',
endDate: dayjs().format('YYYY-MM'),
provinceName: '', provinceName: '',
cityName: '', cityName: '',
@ -96,7 +99,21 @@ Page({
}) })
}, },
handleBack() { 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 @@
model:value="{{name}}" model:value="{{name}}"
placeholder-class="place-input" placeholder-class="place-input"
type="text" type="text"
placeholder="请输入{{relationType == 1 ? '您' : '亲友'}}的姓名" placeholder="请输入{{relationType == 2 ? '亲友' : '您'}}的姓名"
/> />
</view> </view>
</view> </view>
<view class="form-row"> <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="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 class="tril"></view>
</view> </view>
</picker> </picker>
@ -44,7 +44,7 @@
<pickerArea mode="region" value="{{CityId}}" level="city" level="{{2}}" bind:change="handleAreaChange"> <pickerArea mode="region" value="{{CityId}}" level="city" level="{{2}}" bind:change="handleAreaChange">
<view class="picker-content"> <view class="picker-content">
<!-- prettier-ignore --> <!-- 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 class="tril"></view>
</view> </view>
</pickerArea> </pickerArea>

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

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

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

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

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

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

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

@ -2,12 +2,14 @@
<view class="card" wx:for="{{list}}" wx:key="UserId"> <view class="card" wx:for="{{list}}" wx:key="UserId">
<view class="wrap"> <view class="wrap">
<view class="w-header"> <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="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>
<view class="date">绑定时间:{{item.BindPatientTime}}</view> <view class="date">绑定时间:{{item.BindPatientTime}}</view>
</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>
</view> </view>

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

@ -116,12 +116,12 @@
background-color: #f9f7fa; background-color: #f9f7fa;
.icon { .icon {
width: 122rpx; width: 122rpx;
height: 106rpx; height: 102rpx;
} }
.icon-active { .icon-active {
display: none; display: none;
width: 122rpx; width: 122rpx;
height: 106rpx; height: 102rpx;
} }
.name { .name {
margin-top: 14rpx; margin-top: 14rpx;
@ -131,7 +131,7 @@
} }
.active { .active {
.name { .name {
color: #E04775; color: #f23a2f;
} }
.icon { .icon {
display: none; display: none;
@ -203,7 +203,7 @@
.submit { .submit {
color: #fff; 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({
}, },
onShow() { onShow() {
app.waitLogin().then(() => { app.waitLogin().then(() => {
if (app.globalData.initLoginInfo.loginType === 2) { if (app.globalData.initLoginInfo.isLogin === 1 && app.globalData.initLoginInfo.loginType === 2) {
wx.reLaunch({ wx.reLaunch({
url: '/doctor/pages/index/index', url: '/doctor/pages/index/index',
}) })
@ -87,7 +87,8 @@ Page({
}, },
loading: true, loading: true,
}).then(() => { }).then(() => {
app.updateLoginInfo().then(() => { app.globalData.waitBindDoctorId = ''
app.updateLoginInfo(() => {
wx.reLaunch({ wx.reLaunch({
url: '/pages/start/index', url: '/pages/start/index',
}) })

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

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

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

@ -2,7 +2,7 @@ page {
background-color: rgba(246, 246, 246, 1); background-color: rgba(246, 246, 246, 1);
} }
.page { .page {
padding: 40rpx; padding: 40rpx 40rpx 200rpx;
.user { .user {
padding-top: 34rpx; padding-top: 34rpx;
display: flex; display: flex;
@ -24,21 +24,42 @@ page {
flex: 1; flex: 1;
.w-header { .w-header {
display: flex; display: flex;
justify-content: space-between; align-items: center;
gap: 16rpx; gap: 16rpx;
.name { .name {
font-size: 36rpx; font-size: 36rpx;
color: rgba(1, 1, 5, 1); color: rgba(1, 1, 5, 1);
font-weight: bold; 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 { .icon {
width: 36rpx; width: 28rpx;
height: 36rpx; height: 28rpx;
} }
} }
.date { .site {
flex-shrink: 0; padding: 0 14rpx;
font-size: 28rpx; border-radius: 20rpx;
color: rgba(161, 164, 172, 1); 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 { .w-footer {
@ -82,7 +103,7 @@ page {
.container0 { .container0 {
padding: 8rpx 0 0; padding: 8rpx 0 0;
.card { .card1 {
margin-top: 24rpx; margin-top: 24rpx;
border-radius: 24rpx 24rpx 24rpx 24rpx; border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff; border: 2rpx solid #ffffff;
@ -145,6 +166,7 @@ page {
padding: 16rpx 0; padding: 16rpx 0;
display: flex; display: flex;
gap: 32rpx; gap: 32rpx;
line-height: 56rpx;
.label { .label {
width: 4em; width: 4em;
font-size: 32rpx; font-size: 32rpx;
@ -169,13 +191,170 @@ page {
text-align: center; 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 { .container1 {
padding: 8rpx 0 0; padding: 8rpx 0 0;
.card { .c1_card1 {
margin-top: 24rpx; margin-top: 24rpx;
padding: 16rpx 32rpx; 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-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff; border: 2rpx solid #ffffff;
.row { .row {
@ -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 { .container2 {
.date-card { .date-card {
margin-top: 32rpx; margin-top: 32rpx;
padding: 18rpx 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-radius: 84rpx 84rpx 84rpx 84rpx;
border: 2px solid #ffffff; border: 2px solid #ffffff;
display: flex; display: flex;
@ -213,25 +456,95 @@ page {
color: rgba(1, 1, 5, 1); 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 { .card {
position: relative;
margin-top: 32rpx; margin-top: 32rpx;
border-radius: 24rpx; border-radius: 24rpx;
border: 1px solid #ffffff; border: 1px solid #ffffff;
background: rgba(255, 244, 243, 1); background: rgba(255, 244, 243, 1);
.c-header {
padding: 22rpx;
text-align: center;
font-size: 32rpx;
color: rgba(246, 74, 58, 1);
}
.c-calendar { .c-calendar {
padding: 40rpx 0 0; position: relative;
z-index: 1;
padding: 40rpx 32rpx 0;
background-color: #fff; background-color: #fff;
border-radius: 24rpx; 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 { .btn {
margin: 32rpx 0 0; margin: 52rpx 0 0;
padding: 20rpx; padding: 20rpx;
font-size: 32rpx; font-size: 32rpx;
line-height: 48rpx; line-height: 48rpx;

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

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

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

@ -11,16 +11,22 @@
</view> </view>
<view class="wrap"> <view class="wrap">
<view class="w-header"> <view class="w-header">
<view class="name"> <view class="name">刘能</view>
刘能 <view class="age">
<image class="icon" src="{{imageUrl}}icon54.png?t={{Timestamp}}"></image> <image class="icon" src="/images/icon91.png"></image>
<!-- <image class="icon" src="{{imageUrl}}icon55.png?t={{Timestamp}}"></image> --> 32岁
</view>
<view class="site">
<image class="icon" src="/images/icon92.png"></image>
北京
</view> </view>
<view class="date">入组时间:2025年6月12日</view>
</view> </view>
<view class="w-footer"> <view class="w-footer">
<view class="info">32岁 | 北京</view> <view class="info">入组时间:2025年6月12日</view>
<view class="more">查看详细档案 ></view> <view class="more">
查看档案
<van-icon name="arrow" />
</view>
</view> </view>
</view> </view>
</view> </view>
@ -30,13 +36,13 @@
<view class="nav {{nav==2 && 'active'}}" bindtap="handleNav" data-nav="2">随访日历</view> <view class="nav {{nav==2 && 'active'}}" bindtap="handleNav" data-nav="2">随访日历</view>
</view> </view>
<view class="container0" wx:if="{{nav==0}}"> <view class="container0" wx:if="{{nav==0}}">
<view class="card"> <view class="card1">
<view class="c-header"> <view class="c-header">
<view class="left"> <view class="left">
<view class="title">随访期</view> <view class="title">随访期</view>
<image class="fold-icon" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image> <image class="fold-icon" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image>
</view> </view>
<view class="btn">添加随访记录</view> <view class="btn" bind:tap="handleRevisitRecord">添加随访记录</view>
</view> </view>
<view class="c-body"> <view class="c-body">
<image wx:if="{{true}}" class="status" src="{{imageUrl}}icon42.png?t={{Timestamp}}"></image> <image wx:if="{{true}}" class="status" src="{{imageUrl}}icon42.png?t={{Timestamp}}"></image>
@ -61,9 +67,105 @@
<van-icon name="arrow" /> <van-icon name="arrow" />
</view> </view>
</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>
<view class="container1" wx:if="{{nav==1}}"> <view class="container1" wx:if="{{nav==1}}">
<view class="card"> <view class="c1_card1">
<view class="row"> <view class="row">
<view class="label">出生年月</view> <view class="label">出生年月</view>
<view class="content">1980 年 12 月(44 岁)</view> <view class="content">1980 年 12 月(44 岁)</view>
@ -77,14 +179,90 @@
<view class="content">69 kg</view> <view class="content">69 kg</view>
</view> </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>
<view class="container2" wx:if="{{nav==2}}"> <view class="container2" wx:if="{{nav==2}}">
<view class="date-card"> <view class="date-card">
<image class="icon" src="{{imageUrl}}icon67.png?t={{Timestamp}}"></image> <image class="icon" src="{{imageUrl}}icon67.png?t={{Timestamp}}"></image>
<view class="content">注射日:2025 年5月28日 星期三</view> <view class="content">注射日:2025 年5月28日 星期三</view>
</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="card">
<view class="c-header">注射后第1周 建议本周2次复诊</view>
<view class="c-calendar"> <view class="c-calendar">
<calendar <calendar
bind:whenChangeMonth="handleWhenChangeMonth" bind:whenChangeMonth="handleWhenChangeMonth"
@ -92,9 +270,24 @@
id="calendar" id="calendar"
bind:jumpToToday="toggleFold" bind:jumpToToday="toggleFold"
></calendar> ></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>
<view class="c-sub-card"></view>
</view> </view>
<view class="btn">向医生询问出诊时间</view> <view class="btn">添加复诊检查记录</view>
</view> </view>
</view> </view>

111
src/patient/pages/index/index.scss

@ -112,6 +112,7 @@ page {
background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%); background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%);
border-radius: 28rpx 28rpx 28rpx 28rpx; border-radius: 28rpx 28rpx 28rpx 28rpx;
max-width: 5em; max-width: 5em;
text-align: center;
box-sizing: border-box; box-sizing: border-box;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
@ -158,6 +159,8 @@ page {
} }
} }
} }
.swiper {
transition: height 0.3s ease;
.process { .process {
margin-top: 32rpx; margin-top: 32rpx;
background: rgba(255, 255, 255, 0.68); background: rgba(255, 255, 255, 0.68);
@ -241,62 +244,104 @@ page {
} }
} }
.container4 { .container4 {
display: flex; padding: 40rpx 58rpx;
padding: 32rpx;
background: #ffffff; background: #ffffff;
box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(40, 0, 0, 0.06); box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(40, 0, 0, 0.06);
border-radius: 24rpx 24rpx 24rpx 24rpx; border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff; border: 2rpx solid #ffffff;
.left { .c-header {
padding-right: 30rpx; display: flex;
border-right: 1px dashed rgba(207, 209, 213, 1); .num {
flex: 1; 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;
}
.wrap {
padding-left: 16rpx;
.title {
font-size: 32rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
}
}
}
.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;
padding: 32rpx;
.item1 {
.title { .title {
font-size: 28rpx; font-size: 28rpx;
color: rgba(161, 164, 172, 1); color: rgba(161, 164, 172, 1);
line-height: 44rpx; display: flex;
} align-items: baseline;
.date { .num {
font-size: 48rpx; font-size: 64rpx;
color: rgba(1, 1, 5, 1); color: rgba(1, 1, 5, 1);
font-weight: bold; font-weight: bold;
} }
.footer { }
.tip {
margin-top: 14rpx;
display: flex; display: flex;
justify-content: space-between; align-items: center;
align-items: flex-end; gap: 10rpx;
.date-name { font-size: 24rpx;
font-size: 28rpx; color: rgba(255, 163, 112, 1);
color: rgba(242, 58, 47, 1); background-color: rgba(255, 244, 228, 1);
border-radius: 78rpx;
padding: 0 10rpx;
.icon {
width: 24rpx;
height: 24rpx;
} }
.add {
width: 68rpx;
height: 68rpx;
} }
} }
.line {
margin: 0 30rpx;
flex-shrink: 0;
border-right: 1px dashed rgba(207, 209, 213, 1);
} }
.right { .item2 {
padding-left: 18rpx;
flex: 1;
.title { .title {
font-size: 28rpx; font-size: 28rpx;
color: rgba(161, 164, 172, 1); color: rgba(161, 164, 172, 1);
line-height: 44rpx; display: flex;
align-items: baseline;
.num {
font-size: 64rpx;
color: rgba(1, 1, 5, 1);
font-weight: bold;
}
} }
.content { .content {
display: flex; margin-top: 10rpx;
align-items: flex-end; font-size: 28rpx;
justify-content: space-between; color: rgba(161, 164, 172, 1);
.status {
width: 136rpx;
height: 136rpx;
} }
.add {
width: 68rpx;
height: 68rpx;
margin-bottom: 6rpx;
} }
} }
.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({
doctorList: [], doctorList: [],
progress: 1, progress: 1,
treatment: {
followUpWeekInfo: {},
examDiffDays: '',
},
Days: '', Days: '',
userInfo: {} as any, userInfo: {} as any,
isLoad: false,
}, },
onLoad() { onLoad() {
app.waitLogin().then(() => { app.waitLogin({ type: 1 }).then(() => {
app.getUserInfo(1).then((userInfo) => { app.getUserInfo(1).then((userInfo) => {
this.setData({ this.setData({
userInfo, userInfo,
isLoad: true,
Days: userInfo.Days.replace( Days: userInfo.Days.replace(
/(\d+)/g, /(\d+)/g,
'<span style="font-size: 20px;font-weight:bold;color: rgba(255, 255, 255, 1);">$1</span>', '<span style="font-size: 20px;font-weight:bold;color: rgba(255, 255, 255, 1);">$1</span>',
), ),
}) })
this.getBindDoctorList() this.getBindDoctorList()
this.getTeratmentInfo()
const waitBindDoctorId = app.globalData.waitBindDoctorId const waitBindDoctorId = app.globalData.waitBindDoctorId
if (waitBindDoctorId) { if (waitBindDoctorId) {
this.handleWaitBindDoctor(waitBindDoctorId) this.handleWaitBindDoctor(waitBindDoctorId)
@ -39,8 +47,9 @@ Page({
}) })
}, },
onShow() { onShow() {
if (app.globalData.loginState) { if (this.data.isLoad) {
this.getBindDoctorList() this.getBindDoctorList()
this.getTeratmentInfo()
} }
}, },
getBindDoctorList() { getBindDoctorList() {
@ -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) { handleCondormBindDoctor(id) {
app.getDoctorInfo(id).then((res) => { app.getDoctorInfo(id).then((res) => {
this.setData({ this.setData({

129
src/patient/pages/index/index.wxml

@ -51,17 +51,19 @@
<view class="btn" bind:tap="handleBindDoctor">扫一扫绑定</view> <view class="btn" bind:tap="handleBindDoctor">扫一扫绑定</view>
</view> </view>
</view> </view>
<swiper class="swiper" style="height: {{progress === 3 ? 480 : 380}}rpx;" current="{{progress}}" bindchange="handleSwiperChange">
<swiper-item>
<view class="process"> <view class="process">
<view class="header"> <view class="header">
<view class="title">我的专属诊疗流程</view> <view class="title">我的专属诊疗流程</view>
<view class="dots"> <view class="dots">
<view class="item {{progress==1 && 'active'}}" bind:tap="handleProgress" data-index="{{1}}">1</view> <view class="item active">1</view>
<view class="item {{progress==2 && 'active'}}" bind:tap="handleProgress" data-index="{{2}}">2</view> <view class="item">2</view>
<view class="item {{progress==3 && 'active'}}" bind:tap="handleProgress" data-index="{{3}}">3</view> <view class="item">3</view>
<view class="item {{progress==4 && 'active'}}" bind:tap="handleProgress" data-index="{{4}}">4</view> <view class="item">4</view>
</view> </view>
</view> </view>
<view class="container1" wx:if="{{progress==1}}"> <view class="container1">
<view class="c-header"> <view class="c-header">
<view class="num">1</view> <view class="num">1</view>
<view class="wrap"> <view class="wrap">
@ -71,7 +73,20 @@
</view> </view>
<view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view> <view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view>
</view> </view>
<view class="container1" wx:elif="{{progress==2}}"> </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="c-header">
<view class="num">2</view> <view class="num">2</view>
<view class="wrap"> <view class="wrap">
@ -81,7 +96,20 @@
</view> </view>
<view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view> <view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view>
</view> </view>
<view class="container1" wx:elif="{{progress==3}}"> </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">2</view>
<view class="item active">3</view>
<view class="item">4</view>
</view>
</view>
<view class="container1">
<view class="c-header"> <view class="c-header">
<view class="num">3</view> <view class="num">3</view>
<view class="wrap"> <view class="wrap">
@ -91,24 +119,64 @@
</view> </view>
<view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view> <view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view>
</view> </view>
<view class="container4" wx:elif="{{progress==4}}"> </view>
<view class="left"> </swiper-item>
<view class="title">最近一次随访</view> <swiper-item>
<view class="date">2025.6.15</view> <view class="process">
<view class="footer"> <view class="header">
<view class="date-name">2天后</view> <view class="title">我的专属诊疗流程</view>
<image class="add" src="{{imageUrl}}icon61.png?t={{Timestamp}}"></image> <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> </view>
<view class="right"> <view class="container4">
<view class="title">最近状态状态</view> <view class="c-header">
<view class="content"> <view class="num">4</view>
<image class="status" src="{{imageUrl}}icon42.png?t={{Timestamp}}"></image> <view class="wrap">
<image class="add" src="{{imageUrl}}icon61.png?t={{Timestamp}}"></image> <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> </view>
<view class="btn" bind:tap="handleCourse">查看我的诊疗计划</view>
</view> </view>
</view> </view>
</swiper-item>
</swiper>
<view class="module1"> <view class="module1">
<view class="m-header"> <view class="m-header">
<view class="title">为他们加油</view> <view class="title">为他们加油</view>
@ -125,25 +193,22 @@
</view> </view>
<view class="m-container"> <view class="m-container">
<!-- prettier-ignore --> <!-- 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="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">
<view class="num">13%</view> 50<text class="sub" style="color:rgba(246, 74, 58, 1)">%</text>
</view>
<view class="content">上次凝血因子水平(IX)</view> <view class="content">上次凝血因子水平(IX)</view>
<view class="footer"> <view class="footer">
<view class="date">07月23日</view> <view class="date">7月23日</view>
<image class="add" src="{{imageUrl}}icon18.png?t={{Timestamp}}"></image>
</view> </view>
</view> </view>
<!-- prettier-ignore --> <!-- 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="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"> >
50 <view class="num">13<text class="sub">天前</text></view>
<text class="sub">分钟</text> <view class="content">最近一次出血</view>
</view>
<view class="content">最近一次运动</view>
<view class="footer"> <view class="footer">
<view class="date">4月12日</view> <view class="date">07月23日</view>
<image class="add" src="{{imageUrl}}icon18.png?t={{Timestamp}}"></image>
</view> </view>
</view> </view>
</view> </view>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -1,13 +1,64 @@
const _app = getApp<IAppOption>() const app = getApp<IAppOption>()
Page({ Page({
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: {}, data: {},
onLoad() {}, }).then((res) => {
handleUnbind() { this.setData({
wx.showModal({ doctorList: res,
title: '确认解绑?', })
confirmColor: 'rgba(246, 74, 58, 1)', })
},
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() { handleBack() {
wx.navigateBack() wx.navigateBack()

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

@ -5,24 +5,26 @@
class="page" class="page"
style="background: url('{{imageUrl}}bg7.png?t={{Timestamp}}') no-repeat top center/100% 602rpx;padding-top:{{pageTop}}px;" 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"> <view class="user">
<image <image class="avatar" src="{{item.doctorAvatar}}"></image>
class="avatar"
src="https://pic1.zhimg.com/50/v2-8cfef5f9ea7d15963af2277c6814f152_720w.jpg?source=2c26e567"
></image>
<view class="wrap"> <view class="wrap">
<view class="w-name">王青</view> <view class="w-name">{{item.doctorName}}</view>
<view class="w-content"> <view class="w-content">
<view class="hostipal">北京积水潭医院龙泽院区</view> <view class="hostipal">{{item.hospitalName}}</view>
<view class="tag">三甲</view> <view class="tag">{{item.hospitalClassificationName}}{{item.hospitalLevelName}}</view>
</view> </view>
</view> </view>
<view class="select">选择</view> <view class="select" bind:tap="hadnleSelect" data-index="{{index}}">选择</view>
</view>
<view class="content">
北京积水潭医院龙泽院区副主任医师,有 12 年的
治疗经验。中华医学会血液学分会血栓与止血学组副组长,中国罕见病联盟血友病学组副秘书长,中国血友病青年协作组常务理事长,
</view> </view>
<view class="content" wx:if="{{item.introduce}}">{{item.introduce}}</view>
</view> </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 {
background-color: rgba(247, 247, 250, 1); background-color: rgba(247, 247, 250, 1);
} }
.page { .page {
padding: 32rpx 30rpx; padding: 32rpx 30rpx 80rpx;
.bind-doctor { .bind-doctor {
padding: 30rpx 32rpx; padding: 30rpx 32rpx;
background: linear-gradient(40deg, #ffffff 0%, #fff3f2 100%); background: linear-gradient(40deg, #ffffff 0%, #fff3f2 100%);

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

@ -1,16 +1,116 @@
const _app = getApp<IAppOption>() const app = getApp<IAppOption>()
Page({ Page({
data: { data: {
popupShow: false, popupShow: false,
// popupType:'selectHostipal',
popupType: 'selectHostipalComplete',
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', popupType: 'selectHostipalComplete',
popupParams: { popupParams: {
close: true, close: true,
content: '',
}, },
})
})
}
}, },
onLoad() {},
handlePopupCancel() { handlePopupCancel() {
const { popupType } = this.data
if (popupType === 'selectHostipalComplete') {
wx.navigateBack()
}
this.setData({ this.setData({
popupShow: false, popupShow: false,
}) })

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

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

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

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

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

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

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

@ -1,5 +1,5 @@
<view class="page"> <view class="page">
<view class="form {{userInfo.RelationType == 2 && 'form-family'}}"> <view class="form {{userInfo.RelationType != 1 && 'form-family'}}">
<view class="row"> <view class="row">
<view class="label">{{userInfo.RelationType == 1 ? '我的' : '亲友'}}姓名</view> <view class="label">{{userInfo.RelationType == 1 ? '我的' : '亲友'}}姓名</view>
<view class="container"> <view class="container">
@ -45,6 +45,6 @@
</view> </view>
</view> </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 class="login-out" bind:tap="handleOut">退出登录</view>
</view> </view>

2
typings/index.d.ts vendored

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

Loading…
Cancel
Save