diff --git a/project.private.config.json b/project.private.config.json index 9b8c7d4..53d791d 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -23,27 +23,90 @@ "miniprogram": { "list": [ { - "name": "个人信息及隐私政策", - "pathName": "doc/pages/doc1/index", + "name": "患者-亲友列表", + "pathName": "patient/pages/familyList/index", "query": "", "scene": null, "launchMode": "default" }, { - "name": "患者-凝血因子统计", - "pathName": "patient/pages/coltStat/index", + "name": "患者-亲友", + "pathName": "patient/pages/family/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-注销", + "pathName": "patient/pages/loginOut/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-修改手机号", + "pathName": "patient/pages/changeTel/index", "query": "", "launchMode": "default", "scene": null }, { - "name": "随访档案", + "name": "患者-个人信息", + "pathName": "patient/pages/userInfo/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-我的", + "pathName": "patient/pages/my/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-随访档案", "pathName": "patient/pages/file/index", "query": "", "launchMode": "default", "scene": null }, { + "name": "患者-最新复诊检查记录", + "pathName": "patient/pages/lastDiagnosisReport/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-查看我的随访计划", + "pathName": "patient/pages/followPlan/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-我的诊前检查报告", + "pathName": "patient/pages/preDiagnosisReport/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "个人信息及隐私政策", + "pathName": "doc/pages/doc1/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { + "name": "患者-凝血因子统计", + "pathName": "patient/pages/coltStat/index", + "query": "", + "launchMode": "default", + "scene": null + }, + { "name": "患者-免疫抑制剂添加", "pathName": "patient/pages/inhibitorsManage/index", "query": "", diff --git a/src/app.json b/src/app.json index c27135a..0e8ab27 100644 --- a/src/app.json +++ b/src/app.json @@ -32,7 +32,16 @@ "pages/inhibitorsManageList/index", "pages/inhibitorsManage/index", "pages/file/index", - "pages/coltStat/index" + "pages/coltStat/index", + "pages/preDiagnosisReport/index", + "pages/followPlan/index", + "pages/lastDiagnosisReport/index", + "pages/my/index", + "pages/userInfo/index", + "pages/changeTel/index", + "pages/loginOut/index", + "pages/family/index", + "pages/familyList/index" ] }, { diff --git a/src/components/popup/index.scss b/src/components/popup/index.scss index f17f5a9..c4acccf 100644 --- a/src/components/popup/index.scss +++ b/src/components/popup/index.scss @@ -601,6 +601,238 @@ } } +.popup12 { + .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 { + display: block; + margin: 0 auto; + width: 308rpx; + height: 34rpx; + } + .content { + margin-top: 16rpx; + font-size: 32rpx; + line-height: 48rpx; + color: rgba(161, 164, 172, 1); + text-align: center; + } + .tip { + margin-top: 24rpx; + padding: 10rpx 22rpx; + font-size: 28rpx; + color: rgba(246, 74, 58, 1); + text-align: center; + border-radius: 24rpx; + background-color: rgba(255, 231, 228, 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; + } + } + } +} + +.popup13 { + .icon { + position: relative; + z-index: 1; + margin: 0 auto; + display: block; + width: 144rpx; + height: 144rpx; + } + .container { + margin-top: -94rpx; + padding: 106rpx 32rpx 32rpx; + width: 604rpx; + background: linear-gradient(7deg, #ffffff 19%, #ffe8e4 100%); + border-radius: 24rpx 24rpx 24rpx 24rpx; + box-sizing: border-box; + .title { + display: block; + margin: 0 auto; + width: 495rpx; + height: 78rpx; + } + .card { + position: relative; + margin-top: 32rpx; + padding: 32rpx; + background: #ffffff; + display: flex; + gap: 16rpx; + justify-content: space-between; + box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(0, 0, 0, 0.05); + border-radius: 24rpx 24rpx 24rpx 24rpx; + &::after { + position: absolute; + bottom: -24rpx; + left: 32rpx; + content: ''; + width: 476rpx; + height: 24rpx; + background: #ffebea; + border-radius: 0 0 24rpx 24rpx; + } + .avatar { + flex-shrink: 0; + width: 92rpx; + height: 92rpx; + border-radius: 50%; + } + .wrap { + flex: 1; + .name { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + font-weight: bold; + } + .hostipal { + margin-top: 16rpx; + line-height: 28rpx; + .content { + margin-right: 8rpx; + display: inline-block; + font-size: 28rpx; + color: rgba(161, 164, 172, 1); + } + .tag { + display: inline-block; + font-size: 20rpx; + color: rgba(255, 255, 255, 1); + padding: 0 8rpx; + background-color: rgba(255, 186, 1, 1); + border-radius: 6rpx; + } + } + } + } + .footer { + margin-top: 52rpx; + 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; + } + } + } +} + +.popup14 { + .container { + padding: 48rpx 32rpx 32rpx; + width: 604rpx; + background: linear-gradient(7deg, #ffffff 19%, #ffe8e4 100%); + border-radius: 24rpx 24rpx 24rpx 24rpx; + box-sizing: border-box; + .title { + display: block; + margin: 0 auto; + width: 365rpx; + height: 34rpx; + } + .picker-content { + margin-top: 24rpx; + padding: 28rpx; + background-color: rgba(255, 255, 255, 1); + border-radius: 24rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + text-align: center; + &:empty::after { + color: rgba(161, 164, 172, 0.5); + content: attr(data-place); + } + } + .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; diff --git a/src/components/popup/index.wxml b/src/components/popup/index.wxml index d94b773..4a91ed2 100644 --- a/src/components/popup/index.wxml +++ b/src/components/popup/index.wxml @@ -205,6 +205,57 @@ + + + + + + 绑定医生后 + + 医生可以实时看到您的检查进展 + + 您可以扫描不同医生邀约码绑定多个医生 + + 重新选择 + 提交 + + + + + + + + + + + 王青 + + 北京积水潭医院龙泽院区 + 三甲 + + + + + 取消 + 提交 + + + + + + + + + + + 取消 + 提交 + + + - + 您的靶关节 - + 因反复自发性出血或创伤后出血而导致慢性损伤的关节 + + + + + 左侧手肘 + 右侧手肘 + + 已选择关节 - 您近6个月的出血情况 + + 您近6个月的出血情况 + + 200 + /200 + + diff --git a/src/patient/pages/changeTel/index.json b/src/patient/pages/changeTel/index.json new file mode 100644 index 0000000..4d65365 --- /dev/null +++ b/src/patient/pages/changeTel/index.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "修改手机号", + "usingComponents": {} +} diff --git a/src/patient/pages/changeTel/index.scss b/src/patient/pages/changeTel/index.scss new file mode 100644 index 0000000..3864527 --- /dev/null +++ b/src/patient/pages/changeTel/index.scss @@ -0,0 +1,50 @@ +page { + background-color: rgba(247, 247, 250, 1); +} + +.page { + padding: 48rpx 40rpx; + .form { + padding: 0 32rpx; + background-color: #fff; + border-radius: 24rpx; + .row { + display: flex; + align-items: center; + .label { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + width: 5em; + } + .container { + flex: 1; + display: flex; + align-items: center; + justify-content: space-between; + .input { + padding: 32rpx 0; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .place-input { + color: rgba(161, 164, 172, 0.4); + } + .btn { + flex-shrink: 0; + font-size: 32rpx; + color: rgba(246, 74, 58, 1); + } + } + } + } + .login-out { + margin-top: 48rpx; + padding: 20rpx; + font-size: 32rpx; + line-height: 48rpx; + color: #fff; + text-align: center; + background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%); + border-radius: 96rpx; + } +} diff --git a/src/patient/pages/changeTel/index.ts b/src/patient/pages/changeTel/index.ts new file mode 100644 index 0000000..6041fe9 --- /dev/null +++ b/src/patient/pages/changeTel/index.ts @@ -0,0 +1,85 @@ +const app = getApp() +let timer = null as null | number + +Page({ + data: { + mobile: '', + code: '', + + codeText: '发送验证码', + }, + onLoad() {}, + getCode() { + if (timer) return + const mobile = this.data.mobile + if (!mobile) { + wx.showToast({ + title: '手机号不能为空', + icon: 'none', + }) + return + } + // 验证手机号 + if (!/^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/.test(mobile)) { + wx.showToast({ + title: '手机号格式不正确', + icon: 'none', + }) + return + } + wx.ajax({ + method: 'POST', + url: '?r=zd/login/send-verify-code', + data: { + mobile, + }, + }).then((res) => { + console.log(res) + wx.showToast({ + icon: 'none', + title: '验证码已发送~', + }) + let time = 60 + timer = setInterval(() => { + time-- + this.setData({ + codeText: time + 's后重新发送', + }) + if (time <= 0) { + clearInterval(timer as number) + timer = null + this.setData({ + codeText: '发送验证码', + }) + } + }, 1000) + }) + }, + handleSubmit() { + wx.showModal({ + title: '确定修改此手机号?', + confirmColor: 'rgba(246, 74, 58, 1)', + success: (res) => { + if (!res.confirm) return + const { mobile, code } = this.data + const { registrationSource, registChannel, regBusinessId } = app.globalData + wx.ajax({ + method: 'POST', + url: '?r=zd/account/update-telephone', + data: { + mobile, + code, + registrationSource, + registChannel, + regBusinessId, + }, + }).then((_res) => { + wx.navigateBack() + }) + }, + }) + }, + handleBack() { + wx.navigateBack() + }, +}) diff --git a/src/patient/pages/changeTel/index.wxml b/src/patient/pages/changeTel/index.wxml new file mode 100644 index 0000000..7f6067e --- /dev/null +++ b/src/patient/pages/changeTel/index.wxml @@ -0,0 +1,30 @@ + + + + 新手机号 + + + + + + 验证码 + + + {{codeText}} + + + + + diff --git a/src/patient/pages/course/index.ts b/src/patient/pages/course/index.ts index 5b55dcd..6e6f767 100644 --- a/src/patient/pages/course/index.ts +++ b/src/patient/pages/course/index.ts @@ -11,7 +11,7 @@ Page({ // position: 'bottom', }, - current: 2, + current: 3, }, onLoad() {}, handleSelectHostipal() { @@ -31,6 +31,11 @@ Page({ popupParams: {}, }) }, + handlePreDiagnosisReport() { + wx.navigateTo({ + url: '/patient/pages/preDiagnosisReport/index', + }) + }, handleAavReport() { wx.navigateTo({ url: '/patient/pages/aavReport/index', @@ -56,6 +61,16 @@ Page({ url: '/patient/pages/inhibitorsManageList/index', }) }, + handleFollowPlan() { + wx.navigateTo({ + url: '/patient/pages/followPlan/index', + }) + }, + handleLastDiagnosisReport() { + wx.navigateTo({ + url: '/patient/pages/lastDiagnosisReport/index', + }) + }, handleBack() { wx.navigateBack() }, diff --git a/src/patient/pages/course/index.wxml b/src/patient/pages/course/index.wxml index 191f990..9d4d0d4 100644 --- a/src/patient/pages/course/index.wxml +++ b/src/patient/pages/course/index.wxml @@ -64,7 +64,7 @@ - + @@ -168,7 +168,7 @@ - + @@ -288,9 +288,7 @@ - - 已完成 - + 已完成 @@ -321,6 +319,87 @@ + + + + + + 4 + + + + + 长期随访 + + 世界本该如此美好,现在也属于你 + + + + + + + + + + + + + + + 1.查看我的随访计划 + + + + + 您的下次随访日期:2025-08-15 + + + + + + + + + + + + + 2.最新复诊检查记录 + + + + + 最近录入:2025-08-01 + + + + + + + + + + + + + 查看我的健康变化 + + + + + 最近录入:2025-08-01 + + + + + + + + + + + + diff --git a/src/patient/pages/family/index.json b/src/patient/pages/family/index.json new file mode 100644 index 0000000..ad4d4ef --- /dev/null +++ b/src/patient/pages/family/index.json @@ -0,0 +1,6 @@ +{ + "navigationStyle": "custom", + "usingComponents": { + "navbar": "/components/navbar/index" + } +} diff --git a/src/patient/pages/family/index.scss b/src/patient/pages/family/index.scss new file mode 100644 index 0000000..747b374 --- /dev/null +++ b/src/patient/pages/family/index.scss @@ -0,0 +1,71 @@ +page { + background-color: rgba(247, 247, 250, 1); +} + +.page { + padding: 0 40rpx 40rpx; + .container { + margin-top: 184rpx; + position: relative; + background: linear-gradient(292deg, #ffffff 0%, #fff3f2 100%); + border-radius: 24rpx 24rpx 24rpx 24rpx; + border: 2rpx solid #ffffff; + padding: 136rpx 40rpx 48rpx; + .avatar { + position: absolute; + top: -92rpx; + left: 50%; + transform: translateX(-50%); + width: 184rpx; + height: 184rpx; + border-radius: 50%; + } + .name { + font-size: 40rpx; + color: rgba(1, 1, 5, 1); + font-weight: bold; + text-align: center; + } + .title { + margin: 46rpx auto 0; + display: block; + width: 346rpx; + height: 34rpx; + } + .content { + margin-top: 32rpx; + font-size: 32rpx; + color: rgba(161, 164, 172, 1); + text-align: center; + } + .code { + margin: 38rpx auto 0; + display: block; + width: 296rpx; + height: 296rpx; + } + .tip { + margin-top: 22rpx; + font-size: 32rpx; + color: rgba(161, 164, 172, 1); + text-align: center; + } + } + .btn { + margin-top: 48rpx; + padding: 20rpx; + font-size: 32rpx; + line-height: 48rpx; + color: #fff; + text-align: center; + background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%); + border-radius: 96rpx; + } + .bind-num{ + margin-top: 20rpx; + padding: 12rpx; + font-size: 32rpx; + color: rgba(161, 164, 172, 1); + text-align: center; + } +} diff --git a/src/patient/pages/family/index.ts b/src/patient/pages/family/index.ts new file mode 100644 index 0000000..0883f3c --- /dev/null +++ b/src/patient/pages/family/index.ts @@ -0,0 +1,16 @@ +const _app = getApp() + +Page({ + data: {}, + onLoad() {}, + handleFamilyList() { + wx.navigateTo({ + url: '/patient/pages/familyList/index', + }) + }, + hadnleBakc() { + wx.navigateBack() + }, +}) + +export {} diff --git a/src/patient/pages/family/index.wxml b/src/patient/pages/family/index.wxml new file mode 100644 index 0000000..93ec703 --- /dev/null +++ b/src/patient/pages/family/index.wxml @@ -0,0 +1,25 @@ + + + + + + + 王猛 + + + 亲友将同步展示和管理 + + 患者的健康档案 + + + 请使用微信扫一扫绑定 + + 查看我的家庭成员 + 还能绑定2个人 + diff --git a/src/patient/pages/familyList/index.json b/src/patient/pages/familyList/index.json new file mode 100644 index 0000000..4da3a0e --- /dev/null +++ b/src/patient/pages/familyList/index.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "我的亲友", + "usingComponents": {} +} diff --git a/src/patient/pages/familyList/index.scss b/src/patient/pages/familyList/index.scss new file mode 100644 index 0000000..6b19adf --- /dev/null +++ b/src/patient/pages/familyList/index.scss @@ -0,0 +1,45 @@ +page { + background-color: rgba(247, 247, 250, 1); +} +.page { + padding: 48rpx 40rpx; + .card { + padding: 32rpx; + background-color: #fff; + border-radius: 24rpx; + display: flex; + align-items: center; + justify-content: space-between; + .wrap { + .w-header { + .name { + display: inline; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + font-weight: bold; + } + .tag { + margin-left: 20rpx; + display: inline-block; + padding: 2rpx 8rpx; + font-size: 24rpx; + color: rgba(255, 255, 255, 1); + line-height: 32rpx; + background-color: rgba(246, 74, 58, 1); + border-radius: 4rpx; + } + } + .date{ + margin-top: 20rpx; + font-size: 28rpx; + color: rgba(161, 164, 172, 1); + } + } + .unbind{ + flex-shrink: 0; + padding: 32rpx 0 32rpx 32rpx; + font-size: 28rpx; + color: rgba(246, 74, 58, 1); + } + } +} diff --git a/src/patient/pages/familyList/index.ts b/src/patient/pages/familyList/index.ts new file mode 100644 index 0000000..067b6bb --- /dev/null +++ b/src/patient/pages/familyList/index.ts @@ -0,0 +1,8 @@ +const _app = getApp(); + +Page({ + data: {}, + onLoad() {}, +}); + +export {} diff --git a/src/patient/pages/familyList/index.wxml b/src/patient/pages/familyList/index.wxml new file mode 100644 index 0000000..1447908 --- /dev/null +++ b/src/patient/pages/familyList/index.wxml @@ -0,0 +1,12 @@ + + + + + Niaha + 本人 + + 绑定时间:2025-06-12 17:30:50 + + 解绑 + + diff --git a/src/patient/pages/file/index.json b/src/patient/pages/file/index.json index ee31080..553d8d8 100644 --- a/src/patient/pages/file/index.json +++ b/src/patient/pages/file/index.json @@ -1,6 +1,7 @@ { "navigationStyle": "custom", "usingComponents": { - "patient-tab-bar":"/patient/components/patient-tab-bar/index" + "patient-tab-bar":"/patient/components/patient-tab-bar/index", + "calendar": "/components/calendar/index" } } diff --git a/src/patient/pages/file/index.scss b/src/patient/pages/file/index.scss index 61ac9db..8df53e8 100644 --- a/src/patient/pages/file/index.scss +++ b/src/patient/pages/file/index.scss @@ -84,41 +84,42 @@ page { padding: 8rpx 0 0; .card { margin-top: 24rpx; - position: relative; border-radius: 24rpx 24rpx 24rpx 24rpx; border: 2rpx solid #ffffff; background: linear-gradient(346deg, #ffffff 0%, #fff9f9 85%, #ffebe9 100%); padding-bottom: 32rpx; - .status { - position: absolute; - width: 80rpx; - height: 80rpx; - top: 12rpx; - right: 2rpx; - } .c-header { padding: 32rpx 16rpx 0 0; display: flex; align-items: center; justify-content: space-between; - .title { - font-size: 32rpx; - color: rgba(1, 1, 5, 1); - font-weight: bold; + .left { display: flex; align-items: center; - gap: 22rpx; - &::before { - content: ''; - width: 8rpx; - height: 32rpx; - border-radius: 0 32rpx 32rpx 0; - background: #f64a3a; + 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; } } - .fold-icon { - width: 60rpx; - height: 60rpx; + .more { + font-size: 32rpx; + color: rgba(246, 74, 58, 1); } } .c-body { @@ -126,11 +127,21 @@ page { padding: 16rpx 32rpx; background: #f6f6f6; border-radius: 24rpx 24rpx 24rpx 24rpx; + position: relative; + + .status { + position: absolute; + width: 80rpx; + height: 80rpx; + top: 12rpx; + right: 22rpx; + } .row { padding: 16rpx 0; display: flex; gap: 32rpx; .label { + width: 4em; font-size: 32rpx; color: rgba(161, 164, 172, 1); } @@ -146,6 +157,16 @@ page { color: rgba(161, 164, 172, 1); } } + .c-btn { + margin: 32rpx 32rpx 0; + padding: 20rpx; + font-size: 32rpx; + line-height: 48rpx; + color: #fff; + text-align: center; + background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%); + border-radius: 96rpx; + } } } .container1 { @@ -153,7 +174,7 @@ page { .card { margin-top: 24rpx; padding: 16rpx 32rpx; - background: linear-gradient(349deg, #ffffff 0%, #fff1ef 100%); + background: linear-gradient(349deg, #ffffff 60%, #fff1ef 100%); border-radius: 24rpx 24rpx 24rpx 24rpx; border: 2rpx solid #ffffff; .row { @@ -172,4 +193,51 @@ page { } } } + .container2 { + .date-card { + margin-top: 32rpx; + padding: 18rpx 32rpx; + background: linear-gradient(19.87deg, #ffffff 55.08%, #ffe8e6 129.24%); + border-radius: 84rpx 84rpx 84rpx 84rpx; + border: 2px solid #ffffff; + display: flex; + align-items: center; + .icon { + width: 48rpx; + height: 48rpx; + } + .content { + padding-left: 16rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + } + .card { + 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; + background-color: #fff; + border-radius: 24rpx; + } + } + .btn { + margin: 32rpx 0 0; + padding: 20rpx; + font-size: 32rpx; + line-height: 48rpx; + color: #fff; + text-align: center; + background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%); + border-radius: 96rpx; + } + } } diff --git a/src/patient/pages/file/index.ts b/src/patient/pages/file/index.ts index 5483e18..b074d4f 100644 --- a/src/patient/pages/file/index.ts +++ b/src/patient/pages/file/index.ts @@ -2,7 +2,22 @@ const _app = getApp() Page({ data: { - nav: 0, + nav: 2, + + calendarConfig: { + multi: false, + hideSelectYear: true, + markToday: '今', // 当天日期展示不使用默认数字,用特殊文字标记 + autoChoosedWhenJump: true, + firstDayOfWeek: 'Mon', + theme: 'geneb', + takeoverTap: true, + highlightToday: true, + onlyShowCurrentMonth: true, + disableMode: { + type: 'after', // [‘before’, 'after'] + }, + }, }, onLoad() {}, handleNav(e) { diff --git a/src/patient/pages/file/index.wxml b/src/patient/pages/file/index.wxml index c3dd5a2..18adfd5 100644 --- a/src/patient/pages/file/index.wxml +++ b/src/patient/pages/file/index.wxml @@ -29,31 +29,37 @@ 病史档案 随访日历 - - - - - 随访期 - + + 随访期 + + + + 查看全部 + + + + + - 出生年月 - 1980 年 12 月(44 岁) + 日期 + 2025-06-01 - 确诊时间 - 2000 年 12 月(20 岁时) + 诊疗医院 + 唐山人民医院 - 您的体重 - 69 kg + 检查项目 + 3/3 查看详情> + 添加随访记录 @@ -72,6 +78,24 @@ + + + + 注射日:2025 年5月28日 星期三 + + + 注射后第1周 建议本周2次复诊 + + + + + 向医生询问出诊时间 + diff --git a/src/patient/pages/followPlan/index.json b/src/patient/pages/followPlan/index.json new file mode 100644 index 0000000..702c86e --- /dev/null +++ b/src/patient/pages/followPlan/index.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "查看我的随访计划", + "usingComponents": {} +} diff --git a/src/patient/pages/followPlan/index.scss b/src/patient/pages/followPlan/index.scss new file mode 100644 index 0000000..2a1bb74 --- /dev/null +++ b/src/patient/pages/followPlan/index.scss @@ -0,0 +1,142 @@ +page { + background-color: #f7f7fa; +} +.page { + padding: 32rpx 40rpx 260rpx; + .date-card { + padding: 18rpx 32rpx; + background: linear-gradient(19.87deg, #ffffff 55.08%, #ffe8e6 129.24%); + border-radius: 84rpx 84rpx 84rpx 84rpx; + border: 2px solid #ffffff; + display: flex; + align-items: center; + .icon { + width: 48rpx; + height: 48rpx; + } + .content { + padding-left: 16rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + } + + .body { + margin-top: 32rpx; + background: #fff4f3; + border-radius: 24rpx 24rpx 24rpx 24rpx; + border: 2rpx solid #ffffff; + .title { + padding: 20rpx; + font-size: 32rpx; + color: rgba(246, 74, 58, 1); + } + .container { + padding: 48rpx 24rpx 0; + background-color: #fff; + .table { + .thead { + display: grid; + border-radius: 24rpx 24rpx 0 0; + grid-template-columns: repeat(2, 1fr); + background-color: rgba(246, 74, 58, 1); + .th { + padding: 22rpx; + text-align: center; + font-size: 28rpx; + color: rgba(255, 255, 255, 1); + } + } + .tbody { + .tr { + display: grid; + grid-template-columns: 36rpx calc(50% - 36rpx) 50%; + .aside { + margin-right: 12rpx; + display: flex; + flex-direction: column; + align-items: center; + .line-top { + flex: 1; + border-right: 1px dashed rgba(207, 209, 213, 1); + } + .order { + flex-shrink: 0; + width: 24rpx; + height: 24rpx; + border-radius: 50%; + background-color: rgba(207, 209, 213, 1); + } + .line-bottom { + flex: 1; + border-right: 1px dashed rgba(207, 209, 213, 1); + } + } + .td { + padding: 28rpx 32rpx; + font-size: 28rpx; + color: rgba(1, 1, 5, 1); + text-align: center; + line-height: 40rpx; + display: flex; + align-items: center; + justify-content: center; + white-space: pre-line; + } + } + .tr:nth-child(even) { + .td { + background-color: rgba(255, 244, 243, 1); + } + } + .active { + .aside { + .line-top, + .line-bottom { + border-color: rgba(242, 58, 47, 1); + } + .order { + background-color: rgba(242, 58, 47, 1); + } + } + } + } + } + } + } + + .footer { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + padding: 16rpx 40rpx calc(16rpx + env(safe-area-inset-bottom)); + background-color: rgba(255, 255, 255, 1); + display: flex; + gap: 26rpx; + box-sizing: border-box; + .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; + } + } +} diff --git a/src/patient/pages/followPlan/index.ts b/src/patient/pages/followPlan/index.ts new file mode 100644 index 0000000..067b6bb --- /dev/null +++ b/src/patient/pages/followPlan/index.ts @@ -0,0 +1,8 @@ +const _app = getApp(); + +Page({ + data: {}, + onLoad() {}, +}); + +export {} diff --git a/src/patient/pages/followPlan/index.wxml b/src/patient/pages/followPlan/index.wxml new file mode 100644 index 0000000..6589c12 --- /dev/null +++ b/src/patient/pages/followPlan/index.wxml @@ -0,0 +1,32 @@ + + + + 注射日:2025 年5月28日 星期三 + + + 基因治疗后时间 监测频率 + + + + 输注后时间 + 监测频率 + + + + + + + + + 1 周内 + 每周2次 输注后第3天,第6天 + + + + + + + 查看我的随访日历 + 添加复诊检查记录 + + diff --git a/src/patient/pages/home/index.scss b/src/patient/pages/home/index.scss index 046e60a..2d981cd 100644 --- a/src/patient/pages/home/index.scss +++ b/src/patient/pages/home/index.scss @@ -180,7 +180,7 @@ page { } } } - .container { + .container1 { padding: 40rpx 58rpx; background: #ffffff; box-shadow: 0rpx 4rpx 32rpx 0rpx rgba(40, 0, 0, 0.06); @@ -227,6 +227,65 @@ page { 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 { + 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; + } + .footer { + display: flex; + justify-content: space-between; + align-items: flex-end; + .date-name { + font-size: 28rpx; + color: rgba(242, 58, 47, 1); + } + .add { + width: 68rpx; + height: 68rpx; + } + } + } + .right { + padding-left: 18rpx; + flex: 1; + .title { + font-size: 28rpx; + color: rgba(161, 164, 172, 1); + line-height: 44rpx; + } + .content { + display: flex; + align-items: flex-end; + justify-content: space-between; + .status { + width: 136rpx; + height: 136rpx; + } + .add { + width: 68rpx; + height: 68rpx; + margin-bottom: 6rpx; + } + } + } + } } .module1 { margin-top: 48rpx; diff --git a/src/patient/pages/home/index.ts b/src/patient/pages/home/index.ts index 48f7ce8..4a1b654 100644 --- a/src/patient/pages/home/index.ts +++ b/src/patient/pages/home/index.ts @@ -3,9 +3,11 @@ const _app = getApp() Page({ data: { popupShow: false, - popupType: 'selectIdentity', - // popupType: 'bindDoctorReject', - // popupType: 'bindDoctor', + // popupType: 'selectIdentity', // 选择您的身份 + // popupType: 'bindDoctorReject', // 绑定失败 + // popupType: 'bindDoctor', // 绑定成功 + // popupType: 'bindDoctorQuestion', // 为什么绑定医生 + popupType: 'conformBindDoctorQuestion', // 确认绑定曾经扫码医生 popupParams: {}, progress: 1, diff --git a/src/patient/pages/home/index.wxml b/src/patient/pages/home/index.wxml index 12cccd8..fc18583 100644 --- a/src/patient/pages/home/index.wxml +++ b/src/patient/pages/home/index.wxml @@ -59,7 +59,7 @@ 4 - + 1 @@ -69,6 +69,43 @@ 查看我的诊疗计划 + + + 2 + + 基于治疗中心检查 + 做好每一步检查,向美好生活继续! + + + 查看我的诊疗计划 + + + + 3 + + 基因治疗-注射日 + 重要的日子终于到来了~ + + + 查看我的诊疗计划 + + + + 最近一次随访 + 2025.6.15 + + 2天后 + + + + + 最近状态状态 + + + + + + diff --git a/src/patient/pages/lastDiagnosisReport/index.json b/src/patient/pages/lastDiagnosisReport/index.json new file mode 100644 index 0000000..264ee68 --- /dev/null +++ b/src/patient/pages/lastDiagnosisReport/index.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "最新复诊检查记录", + "usingComponents": { + "uploadFile": "/components/uploadFile/index", + "popup": "/components/popup/index" + } +} diff --git a/src/patient/pages/lastDiagnosisReport/index.scss b/src/patient/pages/lastDiagnosisReport/index.scss new file mode 100644 index 0000000..ae7cb44 --- /dev/null +++ b/src/patient/pages/lastDiagnosisReport/index.scss @@ -0,0 +1,207 @@ +page { + background-color: rgba(247, 247, 250, 1); +} + +.page { + padding: 32rpx 30rpx; + .date-form { + padding: 24rpx 32rpx; + background-color: #fff; + border-radius: 80rpx; + display: flex; + align-items: center; + .icon { + flex-shrink: 0; + width: 48rpx; + height: 48rpx; + } + .label { + flex-shrink: 0; + margin-left: 16rpx; + font-size: 32rpx; + color: rgba(0, 0, 0, 1); + } + .picker { + flex: 1; + .picker-content { + padding-left: 48rpx; + display: flex; + align-items: center; + .content { + flex: 1; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + &:empty::after { + content: attr(data-place); + color: rgba(161, 164, 172, 0.5); + } + } + .tril { + width: 0; + height: 0; + border-style: solid; + border-width: 12rpx 12rpx 0 12rpx; + border-color: rgba(207, 209, 213, 1) transparent transparent transparent; + } + } + } + } + .form { + margin-top: 48rpx; + .form-card { + display: flex; + gap: 24rpx; + .aside { + flex-shrink: 0; + display: flex; + flex-direction: column; + align-items: center; + .line-top { + flex-shrink: 0; + height: 32rpx; + border-left: 1px dashed rgba(207, 209, 213, 1); + } + .order { + flex-shrink: 0; + width: 40rpx; + height: 40rpx; + display: flex; + align-items: center; + justify-content: center; + font-size: 32rpx; + color: rgba(255, 255, 255, 1); + background-color: rgba(207, 209, 213, 1); + border-radius: 50%; + } + .line-bottom { + flex: 1; + height: 20rpx; + border-left: 1px dashed rgba(207, 209, 213, 1); + } + &.active { + .order { + color: #fff; + background-color: rgba(246, 74, 58, 1); + } + .line-bottom, + .line-top { + background-color: rgba(246, 74, 58, 1); + } + } + } + .container { + flex: 1; + background-color: #fff; + border-radius: 24rpx; + margin-bottom: 24rpx; + .c-header { + padding: 32rpx 32rpx 32rpx 0; + .wrap { + display: flex; + align-items: center; + justify-content: space-between; + .left { + display: flex; + align-items: center; + gap: 12rpx; + .title { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + font-weight: bold; + display: flex; + gap: 24rpx; + align-items: center; + &::before { + content: ''; + width: 8rpx; + height: 36rpx; + border-radius: 0 8rpx 8rpx 0; + background: #f64a3a; + } + } + .icon { + width: 32rpx; + height: 32rpx; + } + } + .status { + font-size: 32rpx; + color: rgba(137, 141, 151, 1); + display: flex; + align-items: center; + gap: 12rpx; + .icon { + width: 32rpx; + height: 32rpx; + } + &.active { + color: rgba(53, 177, 63, 1); + } + } + } + .content { + padding: 16rpx 32rpx 0; + font-size: 24rpx; + color: rgba(96, 97, 99, 1); + line-height: 36rpx; + } + } + .c-body { + max-height: 100vh; + transition: all 0.3s; + &.fold { + max-height: 0; + overflow: hidden; + } + .module1 { + padding: 16rpx 32rpx 32rpx; + .m-title { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .file-list { + margin-top: 24rpx; + } + } + .module2,.module3 { + padding: 0 32rpx 32rpx; + .m-input { + padding: 0 32rpx; + display: flex; + align-items: center; + gap: 32rpx; + background-color: rgba(247, 247, 250, 1); + border-radius: 24rpx; + .label { + flex-shrink: 0; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .input { + flex: 1; + font-size: 32rpx; + height: 96rpx; + color: rgba(1, 1, 5, 1); + } + .place-input { + color: rgba(161, 164, 172, 0.5); + } + .sub { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + } + .m-title { + margin-top: 48rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .file-list { + margin-top: 24rpx; + } + } + } + } + } + } +} diff --git a/src/patient/pages/lastDiagnosisReport/index.ts b/src/patient/pages/lastDiagnosisReport/index.ts new file mode 100644 index 0000000..7866f7a --- /dev/null +++ b/src/patient/pages/lastDiagnosisReport/index.ts @@ -0,0 +1,12 @@ +const _app = getApp() + +Page({ + data: { + popupShow: false, + popupType: 'preDiagnosisReportDate', // 确认绑定曾经扫码医生 + popupParams: {}, + }, + onLoad() {}, +}) + +export {} diff --git a/src/patient/pages/lastDiagnosisReport/index.wxml b/src/patient/pages/lastDiagnosisReport/index.wxml new file mode 100644 index 0000000..5708be5 --- /dev/null +++ b/src/patient/pages/lastDiagnosisReport/index.wxml @@ -0,0 +1,122 @@ + + + + 诊前检查时间 + + + + + + + + + + + + 1 + + + + + + + 生化检查 + + + + + + 已检查 + + + 重点检查项目:丙氨酸氨基转移酶(ALT)天门冬氨酸氨基转移酶(AST)总胆红素肌酐 + + + + 请上传您的检查报告 + + + + + + + + + + + 2 + + + + + + + 凝血因子 IX 活性 + + + + + + 已检查 + + + + + + + 您的凝血因子水平 + + % + + 请上传您的检查报告 + + + + + + + + + + + 3 + + + + + + + 其他检查 + + + + + + 已检查 + + + + + + + 检查项 + + + 请上传您的检查报告 + + + + + + + + + + + diff --git a/src/patient/pages/loginOut/index.json b/src/patient/pages/loginOut/index.json new file mode 100644 index 0000000..0882587 --- /dev/null +++ b/src/patient/pages/loginOut/index.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "注销", + "usingComponents": {} +} diff --git a/src/patient/pages/loginOut/index.scss b/src/patient/pages/loginOut/index.scss new file mode 100644 index 0000000..b0eef30 --- /dev/null +++ b/src/patient/pages/loginOut/index.scss @@ -0,0 +1,47 @@ +page { + background-color: rgba(247, 247, 250, 1); +} + +.page { + padding: 134rpx 40rpx 40rpx; + .container { + position: relative; + padding: 122rpx 32rpx 40rpx; + background: linear-gradient(2deg, #ffffff 0%, #ffffff 82%, #ffe5e3 100%); + border-radius: 24rpx 24rpx 24rpx 24rpx; + border: 2rpx solid #ffffff; + .icon { + position: absolute; + top: -72rpx; + left: 50%; + transform: translateX(-50%); + width: 144rpx; + height: 144rpx; + } + .content { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + line-height: 56rpx; + text-align: center; + } + .btn1 { + margin-top: 48rpx; + padding: 20rpx; + font-size: 32rpx; + line-height: 48rpx; + color: #fff; + text-align: center; + background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%); + border-radius: 96rpx; + } + .btn2 { + margin-top: 20rpx; + padding: 20rpx; + font-size: 32rpx; + line-height: 48rpx; + color: rgba(246, 74, 58, 1); + text-align: center; + border-radius: 96rpx; + } + } +} diff --git a/src/patient/pages/loginOut/index.ts b/src/patient/pages/loginOut/index.ts new file mode 100644 index 0000000..4362958 --- /dev/null +++ b/src/patient/pages/loginOut/index.ts @@ -0,0 +1,18 @@ +const _app = getApp() + +Page({ + data: {}, + onLoad() {}, + handleLoginOut() { + wx.showModal({ + title: '确定注销吗?', + confirmColor: 'rgba(246, 74, 58, 1)', + success: (res) => { + if (res.confirm) { + } + }, + }) + }, +}) + +export {} diff --git a/src/patient/pages/loginOut/index.wxml b/src/patient/pages/loginOut/index.wxml new file mode 100644 index 0000000..0e11e4b --- /dev/null +++ b/src/patient/pages/loginOut/index.wxml @@ -0,0 +1,16 @@ + + + + + 请注意,注销后您在本平台存储的 + + 全部信息将被删除包括 + + 基础信息、诊疗进展、健康档案等数据 + + 请您谨慎操作 + + 确认注销 + 取消 + + diff --git a/src/patient/pages/my/index.json b/src/patient/pages/my/index.json new file mode 100644 index 0000000..09f6f75 --- /dev/null +++ b/src/patient/pages/my/index.json @@ -0,0 +1,7 @@ +{ + "navigationStyle": "custom", + "usingComponents": { + "popup": "/components/popup/index", + "patient-tab-bar":"/patient/components/patient-tab-bar/index" + } +} diff --git a/src/patient/pages/my/index.scss b/src/patient/pages/my/index.scss new file mode 100644 index 0000000..ed9e460 --- /dev/null +++ b/src/patient/pages/my/index.scss @@ -0,0 +1,153 @@ +page { + background-color: rgba(247, 247, 250, 1); +} +.page { + padding: 52rpx 30rpx; + .user { + display: flex; + align-items: center; + .avatar-wrapper { + flex-shrink: 0; + padding: 0; + margin: 0; + width: 128rpx; + height: 128rpx; + outline: none; + &::after { + border: none; + } + .avatar { + width: 128rpx; + height: 128rpx; + border-radius: 50%; + } + } + .wrap { + flex: 1; + padding-left: 24rpx; + .name { + display: flex; + align-items: center; + .nickname { + font-size: 40rpx; + } + font-weight: bold; + color: rgba(1, 1, 5, 1); + } + .icon { + margin-left: 16rpx; + width: 48rpx; + height: 48rpx; + } + } + .day { + margin-top: 8rpx; + font-size: 28rpx; + color: rgba(1, 1, 5, 0.4); + line-height: 36rpx; + display: flex; + align-items: baseline; + } + .icon { + width: 50rpx; + height: 50rpx; + } + } + .apply { + margin-top: 48rpx; + position: relative; + .a-img { + width: 100%; + height: 136rpx; + border-radius: 120rpx; + box-shadow: 0px 2px 16px 0px #f33e328f; + } + .a-label { + position: absolute; + top: -8rpx; + right: 68rpx; + width: 115rpx; + height: 60rpx; + } + .content { + padding: 20rpx 0; + position: absolute; + left: 260rpx; + top: -4rpx; + width: 8em; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + line-height: 1.4; + box-sizing: border-box; + font-size: 30rpx; + color: rgba(255, 255, 255, 1); + font-weight: bold; + } + } + .list { + margin-top: 48rpx; + .list-header { + display: flex; + align-items: center; + gap: 8rpx; + .name { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + font-weight: bold; + } + .icon { + flex-shrink: 0; + width: 48rpx; + height: 48rpx; + } + } + .list-container { + margin-top: 46rpx; + background: linear-gradient(359deg, #ffffff 0%, #fff8f7 100%); + border-radius: 24rpx 24rpx 24rpx 24rpx; + border: 2rpx solid #ffffff; + padding: 0 22rpx; + .item { + padding: 22rpx 0; + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid rgba(247, 247, 250, 1); + &:last-of-type { + border: none; + } + .icon { + width: 60rpx; + height: 60rpx; + } + .content { + padding: 0 24rpx; + flex: 1; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + .tex { + padding-left: 10rpx; + color: rgba(161, 164, 172, 1); + } + } + .more { + color: rgba(161, 164, 172, 0.4); + } + } + } + } + .login-out { + margin-top: 158rpx; + width: 670rpx; + height: 84rpx; + border-radius: 130rpx 130rpx 130rpx 130rpx; + border: 2rpx solid rgba(1, 1, 5, 0.04); + display: flex; + align-items: center; + justify-content: center; + font-size: 32rpx; + color: rgba(1, 1, 5, 0.4); + } +} diff --git a/src/patient/pages/my/index.ts b/src/patient/pages/my/index.ts new file mode 100644 index 0000000..e226c89 --- /dev/null +++ b/src/patient/pages/my/index.ts @@ -0,0 +1,82 @@ +const app = getApp() + +Page({ + data: { + popupShow: false, + popupType: 'stayTuned', + popupParams: {}, + }, + onLoad() { + app.waitLogin().then(() => { + app.getUserInfo().then((userInfo) => { + this.setData({ + userInfo, + // 数字变红 + Days: userInfo.Days.replace(/(\d+)/g, '$1'), + }) + }) + }) + }, + onChooseAvatar(e) { + const { avatarUrl } = e.detail + const url = `${app.globalData.upFileUrl}?r=file-service/upload-img` + wx.showLoading({ + title: '上传中', + }) + wx.uploadFile({ + url, + filePath: avatarUrl, + name: 'file', + success: (res) => { + const data = JSON.parse(res.data) + const avatarUrl = data.data.Url + wx.ajax({ + method: 'POST', + url: '?r=wtx/user/update-avatar', + data: { + Avatar: avatarUrl, + }, + }) + .then(() => { + wx.hideLoading() + wx.showToast({ + title: '头像更新成功!', + icon: 'none', + }) + this.setData({ + 'userInfo.Avatar': avatarUrl, + }) + }) + .catch(() => { + wx.hideLoading() + }) + }, + fail() { + wx.hideLoading() + }, + }) + }, + handlePopupCancel() { + this.setData({ + popupShow: false, + }) + }, + routerTo(e) { + const { url } = e.currentTarget.dataset + wx.navigateTo({ + url, + }) + }, + handleUserInfo() { + wx.navigateTo({ + url: '/patient/pages/userInfo/index', + }) + }, + handleFamily() { + wx.navigateTo({ + url: '/patient/pages/family/index', + }) + }, +}) + +export {} diff --git a/src/patient/pages/my/index.wxml b/src/patient/pages/my/index.wxml new file mode 100644 index 0000000..38f0cc4 --- /dev/null +++ b/src/patient/pages/my/index.wxml @@ -0,0 +1,45 @@ + + + + + + 你好 + + + 今天是陪伴您的第 + + + + + + + + 查看我的健康档案 + + + + 切换身份 + + + + + 我是医生登录医生端 + + + + + 我的亲友 + + + + + + + + + diff --git a/src/patient/pages/preDiagnosisReport/index.json b/src/patient/pages/preDiagnosisReport/index.json new file mode 100644 index 0000000..f0a3a25 --- /dev/null +++ b/src/patient/pages/preDiagnosisReport/index.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "我的诊前检查报告", + "usingComponents": { + "uploadFile": "/components/uploadFile/index", + "popup": "/components/popup/index" + } +} diff --git a/src/patient/pages/preDiagnosisReport/index.scss b/src/patient/pages/preDiagnosisReport/index.scss new file mode 100644 index 0000000..5a2367f --- /dev/null +++ b/src/patient/pages/preDiagnosisReport/index.scss @@ -0,0 +1,402 @@ +page { + background-color: rgba(247, 247, 250, 1); +} + +.page { + padding: 32rpx 30rpx; + .date-form { + padding: 24rpx 32rpx; + background-color: #fff; + border-radius: 80rpx; + display: flex; + align-items: center; + .icon { + flex-shrink: 0; + width: 48rpx; + height: 48rpx; + } + .label { + flex-shrink: 0; + margin-left: 16rpx; + font-size: 32rpx; + color: rgba(0, 0, 0, 1); + } + .picker { + flex: 1; + .picker-content { + padding-left: 48rpx; + display: flex; + align-items: center; + .content { + flex: 1; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + &:empty::after { + content: attr(data-place); + color: rgba(161, 164, 172, 0.5); + } + } + .tril { + width: 0; + height: 0; + border-style: solid; + border-width: 12rpx 12rpx 0 12rpx; + border-color: rgba(207, 209, 213, 1) transparent transparent transparent; + } + } + } + } + .form { + margin-top: 48rpx; + .form-header { + padding-bottom: 24rpx; + display: flex; + align-items: center; + justify-content: space-between; + .form-title { + font-size: 36rpx; + color: rgba(1, 1, 5, 1); + font-weight: bold; + } + .order { + display: flex; + align-items: baseline; + color: rgba(161, 164, 172, 1); + font-size: 28rpx; + .green { + font-size: 44rpx; + color: rgba(53, 177, 63, 1); + font-weight: bold; + } + .all { + font-size: 28rpx; + } + } + } + .form-card { + display: flex; + gap: 24rpx; + .aside { + flex-shrink: 0; + display: flex; + flex-direction: column; + align-items: center; + .line-top { + flex-shrink: 0; + height: 32rpx; + border-left: 1px dashed rgba(207, 209, 213, 1); + } + .order { + flex-shrink: 0; + width: 40rpx; + height: 40rpx; + display: flex; + align-items: center; + justify-content: center; + font-size: 32rpx; + color: rgba(255, 255, 255, 1); + background-color: rgba(207, 209, 213, 1); + border-radius: 50%; + } + .line-bottom { + flex: 1; + height: 20rpx; + border-left: 1px dashed rgba(207, 209, 213, 1); + } + &.active { + .order { + color: #fff; + background-color: rgba(246, 74, 58, 1); + } + .line-bottom, + .line-top { + background-color: rgba(246, 74, 58, 1); + } + } + } + .container { + flex: 1; + background-color: #fff; + border-radius: 24rpx; + margin-bottom: 24rpx; + .c-header { + padding: 32rpx 32rpx 32rpx 0; + .wrap { + display: flex; + align-items: center; + justify-content: space-between; + .left { + display: flex; + align-items: center; + gap: 12rpx; + .title { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + font-weight: bold; + display: flex; + gap: 24rpx; + align-items: center; + &::before { + content: ''; + width: 8rpx; + height: 36rpx; + border-radius: 0 8rpx 8rpx 0; + background: #f64a3a; + } + } + .icon { + width: 32rpx; + height: 32rpx; + } + } + .status { + font-size: 32rpx; + color: rgba(137, 141, 151, 1); + display: flex; + align-items: center; + gap: 12rpx; + .icon { + width: 32rpx; + height: 32rpx; + } + &.active { + color: rgba(53, 177, 63, 1); + } + } + } + .content { + padding: 16rpx 32rpx 0; + font-size: 24rpx; + color: rgba(96, 97, 99, 1); + line-height: 36rpx; + } + } + .c-body { + max-height: 100vh; + transition: all 0.3s; + &.fold { + max-height: 0; + overflow: hidden; + } + .module1 { + padding: 16rpx 32rpx 32rpx; + .m-title { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .file-list { + margin-top: 24rpx; + } + } + .module2 { + padding: 16rpx 32rpx 32rpx; + .m-title { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .file-list { + margin-top: 24rpx; + } + } + .module3 { + padding: 0 32rpx 32rpx; + .m-input { + padding: 0 32rpx; + display: flex; + align-items: center; + gap: 32rpx; + background-color: rgba(247, 247, 250, 1); + border-radius: 24rpx; + .label { + flex-shrink: 0; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .input { + flex: 1; + font-size: 32rpx; + height: 96rpx; + color: rgba(1, 1, 5, 1); + } + .place-input { + color: rgba(161, 164, 172, 0.5); + } + .sub { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + } + .m-title { + margin-top: 48rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .file-list { + margin-top: 24rpx; + } + } + .module4 { + padding: 0 32rpx 32rpx; + .m-select { + display: flex; + flex-wrap: wrap; + gap: 28rpx; + .m-item { + padding: 12rpx 24rpx; + font-size: 32rpx; + color: rgba(137, 141, 151, 1); + background: #f7f7fa; + border-radius: 12rpx 12rpx 12rpx 12rpx; + &.active { + color: #fff; + background-color: rgba(246, 74, 58, 1); + } + } + } + .m-title { + margin-top: 48rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .file-list { + margin-top: 24rpx; + } + } + .module5 { + padding: 0 32rpx 32rpx; + .m-select-title { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .m-select { + margin-top: 24rpx; + display: flex; + flex-wrap: wrap; + gap: 28rpx; + .m-item { + padding: 12rpx 24rpx; + font-size: 32rpx; + color: rgba(137, 141, 151, 1); + background: #f7f7fa; + border-radius: 12rpx 12rpx 12rpx 12rpx; + &.active { + color: #fff; + background-color: rgba(246, 74, 58, 1); + } + } + } + .m-title { + margin-top: 48rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .file-list { + margin-top: 24rpx; + } + } + .module6 { + padding: 0 32rpx 32rpx; + .m-select-title { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .m-select { + margin-top: 24rpx; + display: flex; + flex-wrap: wrap; + gap: 28rpx; + .m-item { + padding: 12rpx 24rpx; + font-size: 32rpx; + color: rgba(137, 141, 151, 1); + background: #f7f7fa; + border-radius: 12rpx 12rpx 12rpx 12rpx; + &.active { + color: #fff; + background-color: rgba(246, 74, 58, 1); + } + } + } + .m-title { + margin-top: 48rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .file-list { + margin-top: 24rpx; + } + } + .module7 { + padding: 0 32rpx 32rpx; + .m-select-title { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .m-select { + margin-top: 24rpx; + display: flex; + flex-wrap: wrap; + gap: 28rpx; + .m-item { + padding: 12rpx 24rpx; + font-size: 32rpx; + color: rgba(137, 141, 151, 1); + background: #f7f7fa; + border-radius: 12rpx 12rpx 12rpx 12rpx; + &.active { + color: #fff; + background-color: rgba(246, 74, 58, 1); + } + } + } + .m-title { + margin-top: 48rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .file-list { + margin-top: 24rpx; + } + } + .module8 { + padding: 0 32rpx 32rpx; + .m-input { + padding: 0 32rpx; + display: flex; + align-items: center; + gap: 32rpx; + background-color: rgba(247, 247, 250, 1); + border-radius: 24rpx; + .label { + flex-shrink: 0; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .input { + flex: 1; + font-size: 32rpx; + height: 96rpx; + color: rgba(1, 1, 5, 1); + } + .place-input { + color: rgba(161, 164, 172, 0.5); + } + .sub { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + } + .m-title { + margin-top: 48rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .file-list { + margin-top: 24rpx; + } + } + } + } + } + } +} diff --git a/src/patient/pages/preDiagnosisReport/index.ts b/src/patient/pages/preDiagnosisReport/index.ts new file mode 100644 index 0000000..7866f7a --- /dev/null +++ b/src/patient/pages/preDiagnosisReport/index.ts @@ -0,0 +1,12 @@ +const _app = getApp() + +Page({ + data: { + popupShow: false, + popupType: 'preDiagnosisReportDate', // 确认绑定曾经扫码医生 + popupParams: {}, + }, + onLoad() {}, +}) + +export {} diff --git a/src/patient/pages/preDiagnosisReport/index.wxml b/src/patient/pages/preDiagnosisReport/index.wxml new file mode 100644 index 0000000..6770ab6 --- /dev/null +++ b/src/patient/pages/preDiagnosisReport/index.wxml @@ -0,0 +1,308 @@ + + + + 诊前检查时间 + + + + + + + + + + 您的诊前检查项目 + + 1 + / + 8 + + + + + + 1 + + + + + + + 血常规检查 + + + + + + 已检查 + + + 重点检查项目:白细胞计数)WBC)血红蛋白(HGB)血小板计数(PLT) + + + + 请上传您的检查报告 + + + + + + + + + + + 2 + + + + + + + 生化检查 + + + + + + 已检查 + + + 重点检查项目:丙氨酸氨基转移酶(ALT)天门冬氨酸氨基转移酶(AST)总胆红素肌酐 + + + + 请上传您的检查报告 + + + + + + + + + + + 3 + + + + + + + 凝血因子 IX 活性 + + + + + + 已检查 + + + + + + + 您的凝血因子水平 + + % + + 请上传您的检查报告 + + + + + + + + + + + 4 + + + + + + + 凝血因子 IX 抑制物检测 + + + + + + 已检查 + + + + + + + 阳性(+) + 阴性(-) + + 可上传您的抑制物检查结果 + + + + + + + + + + + 5 + + + + + + + 乙型肝炎相关检查 + + + + + + 已检查 + + + + + + 乙型肝炎病毒表面抗原(HBsAg) + + 阳性(+) + 阴性(-) + + 乙型肝炎病毒表面抗原(HBsAg) + + 正常数值 + 偏高数值 + + 请上传乙型肝炎检查报告 + + + + + + + + + + + 6 + + + + + + + 丙型肝炎相关检查 + + + + + + 已检查 + + + + + + 丙型肝炎病毒抗体(抗 - HCV) + + 阳性(+) + 阴性(-) + + 丙型肝炎病毒核糖核酸(HCV - RNA) + + 阳性(+) + 阴性(-) + + 请上传丙型肝炎检查报告 + + + + + + + + + + + 7 + + + + + + + HIV抗体 + + + + + + 已检查 + + + 类免疫缺陷病毒抗体(HIV - Ab) + + + + 填选您的HIV检查结果 + + 阳性(+) + 阴性(-) + + + + + + + + + 8 + + + + + + + 甲胎蛋白(AFP)检测 + + + + + + 已检查 + + + + + + + 您的(AFP)检测 + + μg/L + + 填提交您的AFP 检测报告 + + + + + + + + + + + diff --git a/src/patient/pages/userInfo/index.json b/src/patient/pages/userInfo/index.json new file mode 100644 index 0000000..5875a2c --- /dev/null +++ b/src/patient/pages/userInfo/index.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "个人信息修改", + "usingComponents": { + "pickerArea": "/components/pickerArea/index" + } +} diff --git a/src/patient/pages/userInfo/index.scss b/src/patient/pages/userInfo/index.scss new file mode 100644 index 0000000..25b8710 --- /dev/null +++ b/src/patient/pages/userInfo/index.scss @@ -0,0 +1,70 @@ +page { + background-color: rgba(247, 247, 250, 1); +} + +.page { + padding: 48rpx 40rpx; + .form { + padding: 0 32rpx; + background-color: #fff; + border-radius: 24rpx; + .row { + display: flex; + align-items: center; + .label { + font-size: 32rpx; + color: rgba(137, 141, 151, 1); + width: 5em; + } + .container { + flex: 1; + .input { + padding: 32rpx 0; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .place-input { + color: rgba(161, 164, 172, 0.40); + } + .picker, + .picker-area { + .picker-content { + .content { + padding: 32rpx 0; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + &:empty::after { + content: attr(data-place); + color: rgba(161, 164, 172, 0.40); + } + } + } + } + .tel { + padding: 32rpx 0; + display: flex; + justify-content: space-between; + align-items: center; + .tel-num { + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + } + .btn { + font-size: 32rpx; + color: rgba(246, 74, 58, 1); + } + } + } + } + } + .login-out { + margin-top: 48rpx; + padding: 22rpx; + font-size: 32rpx; + color: rgba(1, 1, 5, 1); + text-align: center; + line-height: 1; + background-color: #fff; + border-radius: 96rpx; + } +} diff --git a/src/patient/pages/userInfo/index.ts b/src/patient/pages/userInfo/index.ts new file mode 100644 index 0000000..2550d39 --- /dev/null +++ b/src/patient/pages/userInfo/index.ts @@ -0,0 +1,18 @@ +const _app = getApp() + +Page({ + data: {}, + onLoad() {}, + handleTel() { + wx.navigateTo({ + url: '/patient/pages/changeTel/index', + }) + }, + handleLoginOut() { + wx.navigateTo({ + url: '/patient/pages/loginOut/index', + }) + }, +}) + +export {} diff --git a/src/patient/pages/userInfo/index.wxml b/src/patient/pages/userInfo/index.wxml new file mode 100644 index 0000000..5df9dee --- /dev/null +++ b/src/patient/pages/userInfo/index.wxml @@ -0,0 +1,40 @@ + + + + 我的姓名 + + + + + + 出生年月 + + + + + + + + + + 我的姓名 + + + + + + + + + + 手机号 + + + 12312312 + 修改手机号 + + + + + +