diff --git a/project.private.config.json b/project.private.config.json
index eabb21b..c52ab6e 100644
--- a/project.private.config.json
+++ b/project.private.config.json
@@ -23,13 +23,41 @@
"miniprogram": {
"list": [
{
- "name": "患者-录入个人信息",
- "pathName": "patient/pages/enterInfo/index",
+ "name": "患者-qol评估报告",
+ "pathName": "patient/pages/qolReport/index",
"query": "",
"scene": null,
"launchMode": "default"
},
{
+ "name": "患者-qol结果",
+ "pathName": "patient/pages/qolResult/index",
+ "query": "",
+ "launchMode": "default",
+ "scene": null
+ },
+ {
+ "name": "患者-qol添加",
+ "pathName": "patient/pages/qolAdd/index",
+ "query": "",
+ "launchMode": "default",
+ "scene": null
+ },
+ {
+ "name": "患者-qol",
+ "pathName": "patient/pages/qol/index",
+ "query": "",
+ "launchMode": "default",
+ "scene": null
+ },
+ {
+ "name": "患者-录入个人信息",
+ "pathName": "patient/pages/enterInfo/index",
+ "query": "",
+ "launchMode": "default",
+ "scene": null
+ },
+ {
"name": "start",
"pathName": "pages/start/index",
"query": "",
diff --git a/src/app.json b/src/app.json
index f7528d1..96b9781 100644
--- a/src/app.json
+++ b/src/app.json
@@ -73,7 +73,11 @@
"pages/infusionCenter/index",
"pages/nrdlTable/index",
"pages/interactivePatient/index",
- "pages/referral/index"
+ "pages/referral/index",
+ "pages/qol/index",
+ "pages/qolAdd/index",
+ "pages/qolResult/index",
+ "pages/qolReport/index"
]
},
{
diff --git a/src/images/bg14.png b/src/images/bg14.png
new file mode 100644
index 0000000..f0454cd
Binary files /dev/null and b/src/images/bg14.png differ
diff --git a/src/images/bg15.png b/src/images/bg15.png
new file mode 100644
index 0000000..0b933ee
Binary files /dev/null and b/src/images/bg15.png differ
diff --git a/src/images/bg16.png b/src/images/bg16.png
new file mode 100644
index 0000000..e480af7
Binary files /dev/null and b/src/images/bg16.png differ
diff --git a/src/images/bg17.png b/src/images/bg17.png
new file mode 100644
index 0000000..c1792ac
Binary files /dev/null and b/src/images/bg17.png differ
diff --git a/src/images/icon69.png b/src/images/icon69.png
new file mode 100644
index 0000000..180d4e3
Binary files /dev/null and b/src/images/icon69.png differ
diff --git a/src/images/icon70.png b/src/images/icon70.png
new file mode 100644
index 0000000..369d3e7
Binary files /dev/null and b/src/images/icon70.png differ
diff --git a/src/images/icon71.png b/src/images/icon71.png
new file mode 100644
index 0000000..75320cd
Binary files /dev/null and b/src/images/icon71.png differ
diff --git a/src/images/icon72.png b/src/images/icon72.png
new file mode 100644
index 0000000..17b1325
Binary files /dev/null and b/src/images/icon72.png differ
diff --git a/src/patient/pages/index/index.scss b/src/patient/pages/index/index.scss
index 5cc5b68..61cc327 100644
--- a/src/patient/pages/index/index.scss
+++ b/src/patient/pages/index/index.scss
@@ -125,6 +125,23 @@ page {
border-radius: 64rpx 64rpx 64rpx 64rpx;
}
}
+ .qol {
+ margin: $page-margin;
+ padding: 192rpx 36rpx 0;
+ height: 272rpx;
+ box-sizing: border-box;
+ .date {
+ width: 368rpx;
+ height: 48rpx;
+ font-size: 28rpx;
+ color: #B982FF;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: #ffffff;
+ border-radius: 48rpx 48rpx 48rpx 48rpx;
+ }
+ }
.banner {
margin: $page-margin;
.swiper {
diff --git a/src/patient/pages/index/index.wxml b/src/patient/pages/index/index.wxml
index cbdb31b..9910604 100644
--- a/src/patient/pages/index/index.wxml
+++ b/src/patient/pages/index/index.wxml
@@ -39,6 +39,9 @@
{{unreadCount ? '去看看':'去咨询'}}
+
+ 最近一次评测 xxxx-xx-xx
+
{
+ res.messageList.push({
+ msgId: '112',
+ msgContentType: '3',
+ msgContent:
+ '你好,我是你的专属医生kola医生,我们可以在TED关爱中心上进行简单的互动啦!如果你需要了解我的出诊时间,或者有症状反复、需要调药的情况,可以给我留言。\r\n甲状腺眼突通过合理的治疗,是可以达到期待的状态的,放松心情,规范管理,加油。',
+ welcomeMsg: '',
+ msgVisitTimeType: '0',
+ msgVisitTime: '',
+ msgFromType: '2',
+ ReVisitInfo: '',
+ msgCreateTime: '2025-08-21 11:12:58',
+ })
res.messageList.map((item) => {
if (item.msgContentType === '4') {
item.msgContent = JSON.parse(item.msgContent)
diff --git a/src/patient/pages/interactivePatient/index.wxml b/src/patient/pages/interactivePatient/index.wxml
index 5a842a1..d033955 100644
--- a/src/patient/pages/interactivePatient/index.wxml
+++ b/src/patient/pages/interactivePatient/index.wxml
@@ -66,19 +66,11 @@
-
-
- ADL+激素双达标
- 点击进入ADL
- 建议您定期做ADL测评
+
+ GO-QOL生活质量评分
+ 可从主观感受变化反馈治疗效果,建议您每月定期测评
+ 点击开始自评
+
()
+
+Page({
+ data: {},
+ onLoad() {},
+ handleAdd() {
+ wx.navigateTo({
+ url: '/patient/pages/qolAdd/index',
+ })
+ },
+})
+
+export {}
diff --git a/src/patient/pages/qol/index.wxml b/src/patient/pages/qol/index.wxml
new file mode 100644
index 0000000..ab2f433
--- /dev/null
+++ b/src/patient/pages/qol/index.wxml
@@ -0,0 +1,89 @@
+
+
+
+
+
+ 研究表明,GO-QOL生活质量评估能敏锐反映患者的主观感受变化,是评估治疗效果的重要工具
+ [1]
+
+ 它不仅能帮你看清自己“主观世界”的变化还能成为你和医生沟通的重要桥梁。
+
+
+ 适用场景
+
+
+
+
+
+
+
+
+ 初诊时
+ 了解疾病对你生活造成了多大影响,作为基线记录。
+ [3]
+
+
+
+
+
+
+
+
+
+ 治疗过程中
+ 分数上升说明你的主观感受得到改善,让你不再怀疑“是不是治疗白做了?"
+ [4]
+
+
+
+
+
+
+
+
+
+ 病情稳定期
+ 判断是否还需要心理支持或功能康复训练。
+ [2-3]
+
+
+
+
+
+ 共
+ 26
+ 题,可能会占用您3分钟
+
+
+
+ 参考文献:
+
+
+ [1]Kahaly, George J et al.“Teprotumumab lmproves Quality of Life in Thyroid Eye Disease: Meta-analysis and
+ Matching adjusted Indirect Comparison." Journal of the EndocrineSociety vol.9,6 bvaf063.8 Apr.2025
+
+
+ [2] Lee, T.H.B., & Sundar, G.(2020). Quality of Life in ThyroidEye Disease: A Systematic Review.Ophthalmic
+ plastic andreconstructive surgery,36(2),118-126.
+
+
+ [3] Dietrich A, Taylor P, White P, et al. Establishing theusefulness of the GO-QOL in a UK hospital-treated
+ populationwith thyroid eye disease in the ClRTED trial. Psychol HealthMed.2018;23(sup1):1341-1355.
+
+
+ [4] Smith TJ, Cockerham K, Barretto N, et al. Bridging andValidation of the Specific Graves Ophthalmopathy
+ Quality ofLife Questionnaire With Health State Utility Values. EndocrPract.2024;30(5):470-475.
+
+
+
+
+
diff --git a/src/patient/pages/qolAdd/index.json b/src/patient/pages/qolAdd/index.json
new file mode 100644
index 0000000..1cb6d89
--- /dev/null
+++ b/src/patient/pages/qolAdd/index.json
@@ -0,0 +1,5 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index"
+ }
+}
diff --git a/src/patient/pages/qolAdd/index.scss b/src/patient/pages/qolAdd/index.scss
new file mode 100644
index 0000000..ac5e8b9
--- /dev/null
+++ b/src/patient/pages/qolAdd/index.scss
@@ -0,0 +1,109 @@
+page {
+ background-color: #f6f8f9;
+}
+
+.page {
+ .page-header {
+ padding: 40rpx;
+ position: sticky;
+ top: 0;
+ left: 0;
+ .progress {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 10rpx;
+ .p-item {
+ flex: 1;
+ .name {
+ font-size: 36rpx;
+ color: #adacb2;
+ line-height: 44rpx;
+ }
+ .line {
+ margin-top: 16rpx;
+ height: 16rpx;
+ background: #ffffff;
+ border-radius: 0rpx 0rpx 0rpx 0rpx;
+ }
+ &.active {
+ .name {
+ color: #b982ff;
+ }
+ .line {
+ background: #b982ff;
+ }
+ }
+ }
+ }
+ .title {
+ margin-top: 44rpx;
+ font-size: 36rpx;
+ color: #211d2e;
+ font-weight: bold;
+ }
+ .content {
+ margin-top: 24rpx;
+ font-size: 32rpx;
+ color: #211d2e;
+ line-height: 48rpx;
+ }
+ }
+ .module {
+ padding: 0 40rpx 200rpx;
+ .row {
+ margin-bottom: 52rpx;
+ .title {
+ font-size: 36rpx;
+ color: #211d2e;
+ font-weight: bold;
+ }
+ .select {
+ margin-top: 24rpx;
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 24rpx;
+ .s-item1,
+ .s-item2,
+ .s-item3 {
+ padding: 18rpx;
+ font-size: 32rpx;
+ color: #69686e;
+ line-height: 48rpx;
+ text-align: center;
+ background-color: #f6f8f9;
+ border-radius: 16rpx;
+ }
+ .s-item1.active {
+ background-color: #dafdee;
+ color: #1ec580;
+ }
+ .s-item2.active {
+ background-color: #fff4e0;
+ color: #ffa300;
+ }
+ .s-item3.active {
+ background-color: #ffe7e7;
+ color: #ef3939;
+ }
+ }
+ }
+ .btn {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 88rpx;
+ font-size: 32rpx;
+ color: #ffffff;
+ background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%);
+ border-radius: 100rpx 100rpx 100rpx 100rpx;
+ }
+ .prev {
+ margin-top: 20rpx;
+ padding: 20rpx;
+ text-align: center;
+ font-size: 32rpx;
+ color: #69686e;
+ }
+ }
+}
diff --git a/src/patient/pages/qolAdd/index.ts b/src/patient/pages/qolAdd/index.ts
new file mode 100644
index 0000000..2b65ada
--- /dev/null
+++ b/src/patient/pages/qolAdd/index.ts
@@ -0,0 +1,28 @@
+const _app = getApp()
+
+Page({
+ data: {
+ step: 0,
+ },
+ onLoad() {},
+ handleNext() {
+ this.setData({
+ step: 1,
+ })
+ wx.pageScrollTo({
+ scrollTop: 0,
+ })
+ },
+ handleSubmit() {
+ wx.navigateTo({
+ url: '/patient/pages/qolResult/index',
+ })
+ },
+ handlePrev() {
+ this.setData({
+ step: 0,
+ })
+ },
+})
+
+export {}
diff --git a/src/patient/pages/qolAdd/index.wxml b/src/patient/pages/qolAdd/index.wxml
new file mode 100644
index 0000000..9ac9f06
--- /dev/null
+++ b/src/patient/pages/qolAdd/index.wxml
@@ -0,0 +1,45 @@
+
+
+
+
+
+ 1.骑自行车或电动车
+
+ 没学过
+ 没学过
+ 没学过
+ 没学过
+
+
+ 下一页(1/2)
+
+
+
+ 1.骑自行车或电动车
+
+ 没学过
+ 没学过
+ 没学过
+ 没学过
+
+
+ 提交(2/2)
+ 上一步
+
+
diff --git a/src/patient/pages/qolReport/index.json b/src/patient/pages/qolReport/index.json
new file mode 100644
index 0000000..902ac8b
--- /dev/null
+++ b/src/patient/pages/qolReport/index.json
@@ -0,0 +1,10 @@
+{
+ "navigationStyle": "default",
+ "navigationBarTitleText": "评估报告",
+ "usingComponents": {
+ "navbar": "/components/navbar/index",
+ "van-tab": "@vant/weapp/tab/index",
+ "van-tabs": "@vant/weapp/tabs/index",
+ "ec-canvas": "/components/ec-canvas/ec-canvas"
+ }
+}
diff --git a/src/patient/pages/qolReport/index.scss b/src/patient/pages/qolReport/index.scss
new file mode 100644
index 0000000..6d64995
--- /dev/null
+++ b/src/patient/pages/qolReport/index.scss
@@ -0,0 +1,171 @@
+page {
+ background-color: #f6f8f9;
+}
+
+.page {
+ .page-header {
+ background-color: #fff;
+ .form {
+ display: flex;
+ justify-content: flex-end;
+ .date {
+ padding: 18rpx;
+ display: flex;
+ align-items: center;
+ gap: 10rpx;
+ font-size: 32rpx;
+ color: #69686e;
+ .icon {
+ transform: rotate(90deg);
+ font-size: 20rpx;
+ color: #adacb2;
+ }
+ }
+ }
+ }
+ .chart-list {
+ padding: 32rpx 40rpx 0;
+ .chart-card {
+ margin-bottom: 24rpx;
+ padding: 32rpx;
+ background-color: #fff;
+ border-radius: 24rpx;
+ .title {
+ font-size: 32rpx;
+ color: #211d2e;
+ font-weight: bold;
+ }
+ .chart {
+ height: 420rpx;
+ }
+ }
+ }
+ .list {
+ margin: 28rpx 40rpx 0;
+ padding-bottom: 32rpx;
+ .list-title {
+ font-size: 36rpx;
+ color: #211d2e;
+ font-weight: bold;
+ }
+ .list-container {
+ .row {
+ display: flex;
+ gap: 16rpx;
+ .aside {
+ flex-shrink: 0;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ .line-top {
+ height: 58rpx;
+ border-right: 1px dashed rgba(185, 130, 255, 0.29);
+ }
+ .side {
+ position: relative;
+ width: 32rpx;
+ height: 32rpx;
+ border-radius: 50%;
+ background-color: rgba(185, 130, 255, 0.3);
+ &::after {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ display: block;
+ content: '';
+ width: 18rpx;
+ height: 18rpx;
+ background-color: #b982ff;
+ border-radius: 50%;
+ }
+ }
+ .line {
+ flex: 1;
+ border-right: 1px dashed rgba(185, 130, 255, 0.29);
+ }
+ }
+ .r-container {
+ padding-top: 48rpx;
+ flex: 1;
+ .date {
+ font-size: 32rpx;
+ color: #211d2e;
+ font-weight: bold;
+ }
+ .r-card {
+ margin-top: 16rpx;
+ padding: 24rpx 32rpx;
+ border-radius: 24rpx;
+ background-color: #fff;
+ .wrap {
+ padding-bottom: 32rpx;
+ display: flex;
+ align-items: center;
+ gap: 22rpx;
+ border-bottom: 1px dashed rgba(33, 29, 46, 0.05);
+ .num {
+ font-size: 104rpx;
+ color: #1ec580;
+ font-weight: bold;
+ line-height: 1;
+ }
+ .inner {
+ .label {
+ padding: 4rpx 16rpx;
+ border-radius: 50rpx 50rpx 50rpx 0;
+ display: inline-block;
+ font-size: 28rpx;
+ color: #ffffff;
+ line-height: 36rpx;
+ background: linear-gradient(330deg, #1ec580 0%, #4feaaa 100%);
+ }
+ .name {
+ margin-top: 12rpx;
+ font-size: 28rpx;
+ color: #adacb2;
+ }
+ }
+ }
+ .stat {
+ padding-top: 24rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .s-item {
+ font-size: 32rpx;
+ color: #adacb2;
+ display: flex;
+ align-items: center;
+ gap: 24rpx;
+ .score {
+ color: #211d2e;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ .page-footer {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ box-sizing: border-box;
+ padding: 20rpx 40rpx calc(20rpx + env(safe-area-inset-bottom));
+ background-color: #fff;
+ box-shadow: 0 8rpx 32rpx rgba(25, 0, 57, 0.07);
+ .btn {
+ height: 88rpx;
+ font-size: 32rpx;
+ color: #ffffff;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%);
+ border-radius: 100rpx 100rpx 100rpx 100rpx;
+ }
+ }
+}
diff --git a/src/patient/pages/qolReport/index.ts b/src/patient/pages/qolReport/index.ts
new file mode 100644
index 0000000..ded28e7
--- /dev/null
+++ b/src/patient/pages/qolReport/index.ts
@@ -0,0 +1,227 @@
+import dayjs from 'dayjs'
+const _app = getApp()
+let echarts: any = null
+
+Page({
+ data: {
+ type: '1',
+ BeginMonth: '',
+ EndMonth: '',
+ },
+ chartComponent1: null as any,
+ chartComponent2: null as any,
+ chartComponent3: null as any,
+ async onLoad() {
+ this.handleChangeType()
+ echarts = await require.async('../../../gift/compontnts/echart/echarts.js')
+ this.chartComponent1 = this.selectComponent('#chart1')
+ this.chartComponent2 = this.selectComponent('#chart2')
+ this.chartComponent3 = this.selectComponent('#chart3')
+ this.initChart()
+ },
+
+ handleChangeType(e?: WechatMiniprogram.CustomEvent) {
+ let type = ''
+ let callback = true
+ if (e) {
+ type = e.currentTarget.dataset.type
+ } else {
+ type = this.data.type
+ callback = false
+ }
+ let EndMonth = ''
+ let BeginMonth = ''
+ if (type == '1') {
+ EndMonth = dayjs().format('YYYY-MM-DD')
+ BeginMonth = dayjs().subtract(6, 'd').format('YYYY-MM-DD')
+ } else if (type == '2') {
+ EndMonth = dayjs().format('YYYY-MM')
+ BeginMonth = dayjs().subtract(1, 'M').format('YYYY-MM')
+ } else if (type == '3') {
+ EndMonth = dayjs().format('YYYY')
+ BeginMonth = dayjs().subtract(1, 'y').format('YYYY')
+ } else if (type == '4' && e) {
+ }
+ this.setData({
+ page: 0,
+ Type: type,
+ Num: '5',
+ EndMonth,
+ BeginMonth,
+ })
+ if (callback) {
+ this.handleTabCallBack()
+ }
+ },
+ initChart(defaultList = []) {
+ const list: any = [
+ {
+ Date: '2025-09-04',
+ TotalScore: '5',
+ },
+ {
+ Date: '2025-09-05',
+ TotalScore: '5',
+ },
+ {
+ Date: '2025-09-06',
+ TotalScore: '5',
+ },
+ ]
+ return new Promise((reslove) => {
+ this.chartComponent1.init((canvas, width, height, dpr) => {
+ const chart = echarts.init(canvas, null, {
+ width,
+ height,
+ devicePixelRatio: dpr, // new
+ })
+ canvas.setChart(chart)
+
+ const option: any = {
+ tooltip: {
+ show: false,
+ trigger: 'axis',
+ axisPointer: {
+ type: 'shadow',
+ },
+ confine: true,
+ backgroundColor: 'rgba(0, 0, 0, 0.5)',
+ textStyle: {
+ color: '#fff',
+ fontSize: 10,
+ },
+ order: 'seriesDesc',
+ },
+ grid: {
+ top: '30',
+ left: '0',
+ right: '0',
+ bottom: '10',
+ containLabel: true,
+ },
+ xAxis: [
+ {
+ type: 'category',
+ axisTick: {
+ show: false,
+ inside: true,
+ length: 1,
+ alignWithLabel: true,
+ lineStyle: {
+ type: 'dotted',
+ color: '#D8D8D8',
+ width: 4,
+ cap: 'round',
+ },
+ },
+ axisLine: {
+ lineStyle: {
+ color: '#8C8C8C',
+ type: 'dashed',
+ },
+ },
+ splitLine: {
+ show: true,
+ showMinLine: false,
+ lineStyle: {
+ type: 'dotted',
+ color: 'rgba(137, 141, 151, 0.23)',
+ },
+ },
+ data: list.map((item) => dayjs(item.Date).format('MM-DD')),
+ },
+ ],
+ yAxis: [
+ {
+ type: 'value',
+ minInterval: 20,
+ max: 100,
+ axisLine: {
+ show: false,
+ lineStyle: {
+ type: 'solid',
+ color: 'rgba(161, 164, 172, 1)',
+ },
+ },
+ splitLine: {
+ show: true,
+ showMinLine: false,
+ lineStyle: {
+ type: 'dotted',
+ color: 'rgba(137, 141, 151, 0.23)',
+ },
+ },
+ },
+ ],
+ series: [
+ {
+ name: '总分',
+ data: list.length ? list.map((item) => item.TotalScore) : [25],
+ barWidth: '16',
+ label: {
+ show: true,
+ position: 'top',
+ color: '#B982FF',
+ },
+ type: 'line',
+ symbolSize: 4,
+ showSymbol: list.length >= 1,
+ connectNulls: true,
+ z: 10,
+ itemStyle: {
+ color: '#B982FF',
+ },
+ markLine: {
+ symbol: ['none', 'none'],
+ data: [
+ {
+ name: '达标区',
+ yAxis: 80,
+ label: {
+ formatter: '{b}',
+ position: 'insideMiddle',
+ color: '#24D8C8',
+ fontSize: '10',
+ },
+ lineStyle: {
+ cap: '',
+ color: '#34D7C7',
+ type: 'dashed',
+ },
+ },
+ ],
+ },
+ markArea: {
+ itemStyle: {
+ color: 'rgba(37,217,200,0.19)',
+ },
+ data: [
+ [
+ {
+ yAxis: 80,
+ },
+ {
+ yAxis: 100,
+ },
+ ],
+ ],
+ },
+ },
+ ],
+ dataZoom: {
+ type: 'inside', // 有type这个属性,滚动条在最下面,也可以不行,写y:36,这表示距离顶端36px,一般就是在图上面。
+ startValue: 0,
+ endValue: 4,
+ filterMode: 'none',
+ },
+ }
+
+ chart.setOption(option)
+ reslove(chart)
+ return chart
+ })
+ })
+ },
+})
+
+export {}
diff --git a/src/patient/pages/qolReport/index.wxml b/src/patient/pages/qolReport/index.wxml
new file mode 100644
index 0000000..66adae5
--- /dev/null
+++ b/src/patient/pages/qolReport/index.wxml
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+ GO-QOL整体记录曲线
+
+
+
+
+
+ GO-QOL视觉功能影响记录曲线
+
+
+
+
+
+ GO-QOL外观影响记录曲线
+
+
+
+
+
+
+
+ 我的历史测评报告
+
+
+
+
+
+
+
+
+ 评估日期:2025-09-02
+
+
+ 100
+
+ 轻度影响
+ TED生活质量评分
+
+
+
+
+ 视觉功能
+ 30分
+
+
+ 视觉功能
+ 30分
+
+
+
+
+
+
+
+
+
+
diff --git a/src/patient/pages/qolResult/index.json b/src/patient/pages/qolResult/index.json
new file mode 100644
index 0000000..1cb6d89
--- /dev/null
+++ b/src/patient/pages/qolResult/index.json
@@ -0,0 +1,5 @@
+{
+ "usingComponents": {
+ "navbar": "/components/navbar/index"
+ }
+}
diff --git a/src/patient/pages/qolResult/index.scss b/src/patient/pages/qolResult/index.scss
new file mode 100644
index 0000000..f48fb73
--- /dev/null
+++ b/src/patient/pages/qolResult/index.scss
@@ -0,0 +1,211 @@
+page {
+ background-color: #f6f8f9;
+}
+
+.page {
+ padding: 40rpx 40rpx 120rpx;
+ .container {
+ padding: 32rpx;
+ border: 2rpx solid #ffffff;
+ background: #fff linear-gradient(180deg, #efe3ff 0%, #ffffff 100%) no-repeat top center/100% 228rpx;
+ border-radius: 24rpx;
+ box-shadow: 0 8rpx 32rpx rgba(25, 0, 57, 0.07);
+ .info {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .wrap {
+ .w-header {
+ display: flex;
+ align-items: flex-end;
+ line-height: 1;
+ .num {
+ font-size: 128rpx;
+ color: var(--color);
+ font-weight: bold;
+ }
+ .label {
+ padding: 4rpx 16rpx;
+ margin-bottom: 14rpx;
+ font-size: 28rpx;
+ color: #ffffff;
+ line-height: 36rpx;
+ border-radius: 50rpx 50rpx 50rpx 0rpx;
+ background: var(--label-background);
+ }
+ }
+ .tip {
+ font-size: 28rpx;
+ color: #adacb2;
+ }
+ }
+ .status {
+ width: 152rpx;
+ height: 152rpx;
+ flex-shrink: 0;
+ }
+ }
+ .c-line {
+ position: relative;
+ margin: 32rpx -32rpx;
+ border-bottom: 1px dashed #f6f8f9;
+ &::before {
+ position: absolute;
+ top: -13rpx;
+ left: -13rpx;
+ content: '';
+ background-color: #f6f8f9;
+ width: 28rpx;
+ height: 28rpx;
+ border-radius: 50%;
+ }
+ &::after {
+ position: absolute;
+ top: -13rpx;
+ right: -13rpx;
+ content: '';
+ background-color: #f6f8f9;
+ width: 28rpx;
+ height: 28rpx;
+ border-radius: 50%;
+ }
+ }
+ .card {
+ margin-bottom: 24rpx;
+ padding: 36rpx 30rpx 80rpx;
+ background: #faf7ff;
+ border-radius: 20rpx 20rpx 20rpx 20rpx;
+ border: 2rpx solid #efe2fe;
+ .c-header {
+ display: flex;
+ align-items: center;
+ gap: 12rpx;
+ font-size: 24rpx;
+ color: rgba(33, 29, 46, 0.28);
+ .skew {
+ width: 10rpx;
+ height: 22rpx;
+ background: #b982ff;
+ transform: skew(-15deg);
+ }
+ }
+ .c-content {
+ margin-top: 16rpx;
+ font-size: 32rpx;
+ color: #211d2e;
+ font-weight: bold;
+ display: flex;
+ align-items: center;
+ gap: 10rpx;
+ .label {
+ padding: 0 12rpx;
+ font-size: 20rpx;
+ color: #ffffff;
+ line-height: 32rpx;
+ border-radius: 50rpx 50rpx 50rpx 0rpx;
+ background: var(--label-background);
+ }
+ }
+ .progress {
+ position: relative;
+ margin-top: 38rpx;
+ display: flex;
+ align-items: center;
+ gap: 4rpx;
+ .p-item {
+ flex: 1;
+ .title {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ font-size: 24rpx;
+ color: #adacb2;
+ }
+ .line1 {
+ margin-top: 8rpx;
+ height: 16rpx;
+ background: rgba(185, 130, 255, 0.2);
+ }
+ .line2 {
+ margin-top: 8rpx;
+ height: 16rpx;
+ background: rgba(185, 130, 255, 0.6);
+ }
+ .line3 {
+ margin-top: 8rpx;
+ height: 16rpx;
+ background: #b982ff;
+ }
+ }
+ .slide {
+ position: absolute;
+ top: 30rpx;
+ .circle {
+ width: 28rpx;
+ height: 28rpx;
+ background: #b982ff;
+ border-radius: 50%;
+ border: 2rpx solid #ffffff;
+ }
+ .num {
+ position: absolute;
+ bottom: -12rpx;
+ left: 50%;
+ transform: translate(-50%, 100%);
+ width: 52rpx;
+ height: 32rpx;
+ font-size: 32rpx;
+ color: #b982ff;
+ text-align: center;
+ line-height: 32rpx;
+ background: #eae0fa;
+ border-radius: 8rpx 8rpx 8rpx 8rpx;
+ }
+ }
+ }
+ }
+ .effect {
+ margin-top: 24rpx;
+ font-size: 28rpx;
+ color: #adacb2;
+ text-align: center;
+ }
+ }
+ .page-effect-wrap {
+ margin: 64rpx 0 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ .page-effect {
+ font-size: 32rpx;
+ color: var(--color);
+ line-height: 1;
+ padding: 8rpx 42rpx;
+ background: var(--background);
+ border-radius: 96rpx 96rpx 96rpx 96rpx;
+ border: 2rpx solid #ffffff;
+ }
+ }
+ .report {
+ margin-top: 152rpx;
+ font-size: 32rpx;
+ color: #b982ff;
+ text-align: center;
+ }
+}
+
+.status1 {
+ --color: #ef3939;
+ --background: #ffdddd;
+ --label-background: linear-gradient(177deg, #ff9090 0%, #ef3939 100%);
+}
+.status2 {
+ --color: #ffa300;
+ --background: #fff4e0;
+ --label-background: linear-gradient(153deg, #ffd48b 0%, #ffa300 100%);
+}
+.status3 {
+ --color: #1ec580;
+ --background: #dafdee;
+ --label-background: linear-gradient(330deg, #1ec580 0%, #4feaaa 100%);
+}
diff --git a/src/patient/pages/qolResult/index.ts b/src/patient/pages/qolResult/index.ts
new file mode 100644
index 0000000..2b3ad32
--- /dev/null
+++ b/src/patient/pages/qolResult/index.ts
@@ -0,0 +1,13 @@
+const _app = getApp()
+
+Page({
+ data: {},
+ onLoad() {},
+ handleReport() {
+ wx.navigateTo({
+ url: '/patient/pages/qolReport/index',
+ })
+ },
+})
+
+export {}
diff --git a/src/patient/pages/qolResult/index.wxml b/src/patient/pages/qolResult/index.wxml
new file mode 100644
index 0000000..b084ae4
--- /dev/null
+++ b/src/patient/pages/qolResult/index.wxml
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+ 本次TED生活质量评分
+
+
+
+
+
+
+
+
+
+ 当前分数:1
+ 重度影响
+
+
+
+
+ 0
+ 39
+
+
+
+
+
+
+ 79
+
+
+
+
+
+
+ 100
+
+
+
+
+
+ 2
+
+
+
+
+
+
+ 当前分数:1
+ 重度影响
+
+
+
+
+ 0
+ 39
+
+
+
+
+
+
+ 79
+
+
+
+
+
+
+ 100
+
+
+
+
+
+ 2
+
+
+
+ 分数越低, 对生活质量影响越严重
+
+
+ 建议前往眼科中心 及时就诊
+
+
+
+ 查看我的评估报告
+
+
+