Browse Source

2.2.0 stash

dev
kola-web 1 week ago
parent
commit
003646127f
  1. 4
      project.private.config.json
  2. 76
      src/components/pickerArea/index.ts
  3. 6
      src/components/popup/index.scss
  4. 6
      src/components/popup/index.wxml
  5. 23
      src/components/toast/index.scss
  6. 39
      src/components/toast/index.wxml
  7. 51
      src/pages/d_patientDetail/index.scss
  8. 10
      src/pages/d_patientDetail/index.ts
  9. 20
      src/pages/d_patientDetail/index.wxml
  10. 2
      src/pages/d_patientHormones/index.wxml
  11. 18
      src/pages/d_qolDetail/index.scss
  12. 7
      src/pages/d_qolDetail/index.wxml
  13. 2
      src/patient/pages/doctor/index.scss
  14. 2
      src/patient/pages/hospital/index.scss
  15. 16
      src/patient/pages/index/index.scss
  16. 61
      src/patient/pages/index/index.ts
  17. 20
      src/patient/pages/index/index.wxml
  18. 56
      src/patient/pages/liveDetail/index.scss
  19. 17
      src/patient/pages/liveDetail/index.ts
  20. 61
      src/patient/pages/liveDetail/index.wxml
  21. 233
      src/patient/pages/liveResult/index.scss
  22. 41
      src/patient/pages/liveResult/index.ts
  23. 58
      src/patient/pages/liveResult/index.wxml
  24. 1
      src/patient/pages/medical/index.scss
  25. 11
      src/patient/pages/medical/index.ts
  26. 13
      src/patient/pages/medical/index.wxml
  27. 2
      src/patient/pages/medicalDetail/index.scss
  28. 13
      src/patient/pages/medicalDetail/index.ts
  29. 13
      src/patient/pages/medicalDetail/index.wxml
  30. 120
      src/patient/pages/personalInformation/index.ts
  31. 83
      src/patient/pages/personalInformation/index.wxml
  32. 12
      src/patient/pages/qolAdd/index.ts
  33. 4
      src/patient/pages/qolAdd/index.wxml
  34. 2
      src/patient/pages/qolReport/index.scss
  35. 15
      src/patient/pages/qolReport/index.ts
  36. 1
      src/patient/pages/qolReport/index.wxml

4
project.private.config.json

@ -26,8 +26,8 @@
"name": "医生-患者量表", "name": "医生-患者量表",
"pathName": "pages/d_qolDetail/index", "pathName": "pages/d_qolDetail/index",
"query": "id=178", "query": "id=178",
"scene": null, "launchMode": "default",
"launchMode": "default" "scene": null
}, },
{ {
"name": "医生-患者详情", "name": "医生-患者详情",

76
src/components/pickerArea/index.ts

@ -1,4 +1,4 @@
const app = getApp<IAppOption>(); const app = getApp<IAppOption>()
Component({ Component({
properties: { properties: {
@ -22,10 +22,14 @@ Component({
type: String, type: String,
value: '', value: '',
}, },
required: {
type: Boolean,
value: false,
},
}, },
observers: { observers: {
show(newVal: boolean) { show(newVal: boolean) {
this.triggerEvent('show', newVal); this.triggerEvent('show', newVal)
}, },
}, },
data: { data: {
@ -217,6 +221,7 @@ Component({
handleShow() { handleShow() {
this.setData({ this.setData({
show: true, show: true,
active: 0,
ProvinceName: this.data.pname || '', ProvinceName: this.data.pname || '',
ProvinceId: this.data.pid || '', ProvinceId: this.data.pid || '',
CityName: this.data.cname || '', CityName: this.data.cname || '',
@ -224,8 +229,8 @@ Component({
scrollIntoView0: this.data.pid || '', scrollIntoView0: this.data.pid || '',
scrollIntoView1: this.data.cid || '', scrollIntoView1: this.data.cid || '',
}); })
this.getArea(); this.getArea()
}, },
getArea() { getArea() {
wx.ajax({ wx.ajax({
@ -235,78 +240,95 @@ Component({
}).then((res) => { }).then((res) => {
this.setData({ this.setData({
area: res, area: res,
}); })
this.getRangeList(); this.getRangeList()
}); })
}, },
handleItem(e: any) { handleItem(e: any) {
const { code, name } = e.currentTarget.dataset; const { code, name } = e.currentTarget.dataset
this.setData({ this.setData({
ProvinceId: code, ProvinceId: code,
ProvinceName: name, ProvinceName: name,
CityId: '', CityId: '',
CityName: '', CityName: '',
}); })
this.getRangeList(); this.getRangeList()
}, },
handleChangeCity(e: any) { handleChangeCity(e: any) {
const { code, name } = e.currentTarget.dataset; const { code, name } = e.currentTarget.dataset
this.setData({ this.setData({
CityId: code, CityId: code,
CityName: name, CityName: name,
}); })
}, },
handleShare() { handleShare() {
if (this.data.required) {
if (!this.data.ProvinceId) {
wx.showToast({
icon: 'none',
title: '请选择省份',
})
return
}
if (!this.data.CityId) {
wx.showToast({
icon: 'none',
title: '请选择城市',
})
return
}
}
this.setData({ this.setData({
show: false, show: false,
}); })
this.triggerEvent('ok', { this.triggerEvent('ok', {
ProvinceName: this.data.ProvinceName, ProvinceName: this.data.ProvinceName,
ProvinceId: this.data.ProvinceId, ProvinceId: this.data.ProvinceId,
CityName: this.data.CityName, CityName: this.data.CityName,
CityId: this.data.CityId, CityId: this.data.CityId,
}); })
}, },
handleSelect(e) { handleSelect(e) {
const { id } = e.currentTarget.dataset; const { id } = e.currentTarget.dataset
this.setData({ this.setData({
word: id, word: id,
scrollIntoView0: id, scrollIntoView0: id,
}); })
}, },
getRangeList() { getRangeList() {
const { area, ProvinceId } = this.data; const { area, ProvinceId } = this.data
if (!ProvinceId) return; if (!ProvinceId)
const range = area.filter((item: any) => item.value == ProvinceId)[0].children; return
const range = area.filter((item: any) => item.value == ProvinceId)[0].children
this.setData({ this.setData({
range, range,
active: 1, active: 1,
scrollIntoView0: '', scrollIntoView0: '',
scrollIntoView1: `id${this.data.CityId}`, scrollIntoView1: `id${this.data.CityId}`,
}); })
}, },
handleProvince() { handleProvince() {
this.setData({ this.setData({
active: 0, active: 0,
scrollIntoView0: this.data.word || `id${this.data.ProvinceId}`, scrollIntoView0: this.data.word || `id${this.data.ProvinceId}`,
scrollIntoView1: '', scrollIntoView1: '',
}); })
}, },
handleCity() { handleCity() {
const { ProvinceId } = this.data; const { ProvinceId } = this.data
if (!ProvinceId) { if (!ProvinceId) {
wx.showToast({ wx.showToast({
title: '请先选择省份', title: '请先选择省份',
icon: 'none', icon: 'none',
}); })
return; return
} }
this.getRangeList(); this.getRangeList()
}, },
handleClose() { handleClose() {
this.setData({ this.setData({
show: false, show: false,
}); })
}, },
}, },
}); })

6
src/components/popup/index.scss

@ -351,12 +351,13 @@
padding: 32rpx 32rpx 32rpx 0; padding: 32rpx 32rpx 32rpx 0;
background: #f6f8f9; background: #f6f8f9;
border-radius: 32rpx 32rpx 32rpx 32rpx; border-radius: 32rpx 32rpx 32rpx 32rpx;
height: 844rpx; height: 824rpx;
overflow-y: auto; overflow-y: auto;
box-sizing: border-box; box-sizing: border-box;
.s-title { .s-title {
font-size: 36rpx; font-size: 36rpx;
line-height: 60rpx; line-height: 60rpx;
font-weight: bold;
padding: 0 32rpx; padding: 0 32rpx;
color: #ffffff; color: #ffffff;
border-radius: 0 32rpx 32rpx 0; border-radius: 0 32rpx 32rpx 0;
@ -456,7 +457,7 @@
border-radius: 32rpx; border-radius: 32rpx;
background: linear-gradient(180deg, #f1e6ff 0%, #ffffff 29.75%, #ffffff 100%); background: linear-gradient(180deg, #f1e6ff 0%, #ffffff 29.75%, #ffffff 100%);
.title { .title {
font-size: 40rpx; font-size: 36rpx;
color: #211d2e; color: #211d2e;
font-weight: bold; font-weight: bold;
} }
@ -465,6 +466,7 @@
font-size: 36rpx; font-size: 36rpx;
color: #69686e; color: #69686e;
line-height: 48rpx; line-height: 48rpx;
text-align: center;
} }
.btn { .btn {
margin-top: 56rpx; margin-top: 56rpx;

6
src/components/popup/index.wxml

@ -112,10 +112,10 @@
> >
<view class="container"> <view class="container">
<view class="c-header"> <view class="c-header">
<image class="avatar" src="{{params.imgs}}"></image> <image class="avatar" src="{{params.ConsultQwAvatar}}"></image>
<view class="name">客服小张</view> <view class="name">{{params.ConsultQwName}}</view>
</view> </view>
<image class="code" mode="aspectFill" src="{{params.consultImg}}" show-menu-by-longpress></image> <image class="code" mode="aspectFill" src="{{params.ConsultQwImg}}" show-menu-by-longpress></image>
<view class="tip"> <view class="tip">
长按识别二维码 长按识别二维码
<view></view> <view></view>

23
src/components/toast/index.scss

@ -2734,7 +2734,7 @@
} }
} }
.btn { .btn {
margin-top: 32rpx; margin: 32rpx 30rpx 0;
height: 88rpx; height: 88rpx;
line-height: 88rpx; line-height: 88rpx;
text-align: center; text-align: center;
@ -2745,3 +2745,24 @@
} }
} }
} }
.popup-qw {
.popup-container {
width: 630rpx;
height: 788rpx;
overflow: hidden;
.code {
margin: 264rpx auto 0;
display: block;
width: 284rpx;
height: 284rpx;
}
.tip {
margin-top: 48rpx;
font-size: 32rpx;
color: #211d2e;
text-align: center;
line-height: 44rpx;
}
}
}

39
src/components/toast/index.wxml

@ -805,19 +805,42 @@
</view> </view>
</view> </view>
<view class="popup-enter-info" wx:if="{{type==='guideEnterInfo'}}"> <view class="popup-enter-info" wx:if="{{type==='guideEnterInfo'}}">
<image class="badge" src="{{imageUrl}}icon131.png?t={{Timestamp}}"></image> <image class="badge" src="{{imageUrl}}icon133.png?t={{Timestamp}}"></image>
<view class="popup-container"> <view class="popup-container">
<view class="title">访问直播活动页需切换至患者端</view> <van-icon class="p-close" name="cross" bind:tap="handleCancel" />
<view class="content">请问是否继续</view> <view class="title">完善个人信息</view>
<view class="btn" bind:tap="handleOk">继续</view> <view class="content">
完善个人信息,可获得
<text class="high">【医生】</text>
更多关注
</view>
<view class="btn" bind:tap="handleOk">确认</view>
</view> </view>
</view> </view>
<view class="popup-enter-info" wx:if="{{type==='guideEnterInfoJump'}}"> <view class="popup-enter-info" wx:if="{{type==='guideEnterInfoJump'}}">
<image class="badge" src="{{imageUrl}}icon131.png?t={{Timestamp}}"></image> <image class="badge" src="{{imageUrl}}icon133.png?t={{Timestamp}}"></image>
<view class="popup-container"> <view class="popup-container">
<view class="title">访问直播活动页需切换至患者端</view> <van-icon class="p-close" name="cross" bind:tap="handleCancel" />
<view class="content">请问是否继续</view> <view class="title">完善个人信息</view>
<view class="btn" bind:tap="handleOk">继续</view> <view class="content">
完善个人信息,可获得
<text class="high">【医生】</text>
更多关注
</view>
<view class="btn" bind:tap="handleOk">确认</view>
</view>
</view>
<view class="popup-qw" wx:if="{{type==='guideQw'}}">
<view
class="popup-container"
style="background: url('{{imageUrl}}bg49.png?t={{Timestamp}}') no-repeat top center/100%"
>
<image class="code" src="{{params.ConsultQwImg}}" show-menu-by-longpress></image>
<view class="tip">
长按识别二维码
<view></view>
添加客服人员
</view>
</view> </view>
</view> </view>

51
src/pages/d_patientDetail/index.scss

@ -54,6 +54,8 @@ page {
.content { .content {
margin-top: 12rpx; margin-top: 12rpx;
line-height: 36rpx; line-height: 36rpx;
display: flex;
align-items: center;
.age { .age {
margin-right: 16rpx; margin-right: 16rpx;
padding-right: 16rpx; padding-right: 16rpx;
@ -103,7 +105,7 @@ page {
background: #f6f8f9; background: #f6f8f9;
border-radius: 24rpx; border-radius: 24rpx;
.row { .row {
padding: 32rpx; padding: 32rpx 0;
display: flex; display: flex;
font-size: 32rpx; font-size: 32rpx;
color: #211d2e; color: #211d2e;
@ -196,15 +198,22 @@ page {
.num { .num {
white-space: nowrap; white-space: nowrap;
font-size: 64rpx; font-size: 64rpx;
color: #ffa300;
font-weight: bold; font-weight: bold;
.sub { .sub {
margin-left: -10rpx;
font-size: 28rpx; font-size: 28rpx;
color: #69686e; color: #69686e;
font-weight: normal; font-weight: normal;
} }
} }
.status1 {
color: #ef3939;
}
.status2 {
color: #ffa300;
}
.status3 {
color: #1ec580;
}
.icon { .icon {
width: 92rpx; width: 92rpx;
height: 92rpx; height: 92rpx;
@ -226,6 +235,14 @@ page {
} }
.num { .num {
font-size: 28rpx; font-size: 28rpx;
}
.status1 {
color: #ef3939;
}
.status2 {
color: #ffa300;
}
.status3 {
color: #1ec580; color: #1ec580;
} }
} }
@ -246,10 +263,18 @@ page {
} }
} }
.none { .none {
margin: 80rpx -32rpx 0; margin: 64rpx auto 0;
width: 318rpx; .n-img {
height: 170rpx; margin: 0 auto;
display: block; display: block;
width: 268rpx;
height: 174rpx;
}
.n-tip {
font-size: 28rpx;
color: #c1bfc9;
text-align: center;
}
} }
} }
.k-hormones { .k-hormones {
@ -320,10 +345,18 @@ page {
} }
} }
.none { .none {
margin: 80rpx -32rpx 0; margin: 64rpx auto 0;
width: 318rpx; .n-img {
height: 170rpx; margin: 0 auto;
display: block; display: block;
width: 268rpx;
height: 174rpx;
}
.n-tip {
font-size: 28rpx;
color: #c1bfc9;
text-align: center;
}
} }
} }
} }

10
src/pages/d_patientDetail/index.ts

@ -188,7 +188,9 @@ Page({
id: option.id, id: option.id,
}) })
if (option.anchor) { if (option.anchor) {
setTimeout(() => {
this.handleAnchor(option.anchor) this.handleAnchor(option.anchor)
}, 1000)
} }
app.waitLogin({ type: [2] }).then(async (_res) => { app.waitLogin({ type: [2] }).then(async (_res) => {
@ -208,10 +210,10 @@ Page({
}, },
handleAnchor(anchor) { handleAnchor(anchor) {
if (anchor == 'qol') { if (anchor == 'qol') {
wx.pageScrollTo({ scrollTop: 700 }) wx.pageScrollTo({ selector: '#qol' })
} }
if (anchor == 'hormone') { if (anchor == 'hormone') {
wx.pageScrollTo({ scrollTop: 1550 }) wx.pageScrollTo({ selector: '#hormone' })
} }
}, },
getQolDetail() { getQolDetail() {
@ -428,6 +430,10 @@ Page({
list6Show, list6Show,
}) })
this.chartComponent4 = this.selectComponent('#chart4')
this.chartComponent5 = this.selectComponent('#chart5')
this.chartComponent6 = this.selectComponent('#chart6')
this.initChartHormone(list4, 'chartComponent4', '#1ec580') this.initChartHormone(list4, 'chartComponent4', '#1ec580')
this.initChartHormone(list5, 'chartComponent5', '#B982FF') this.initChartHormone(list5, 'chartComponent5', '#B982FF')
this.initChartHormone(list6, 'chartComponent6', '#FFA300') this.initChartHormone(list6, 'chartComponent6', '#FFA300')

20
src/pages/d_patientDetail/index.wxml

@ -74,7 +74,7 @@
<view class="title">生活质量自评</view> <view class="title">生活质量自评</view>
<block wx:if="{{qolDetail.TotalScore}}"> <block wx:if="{{qolDetail.TotalScore}}">
<view class="content"> <view class="content">
<view class="num"> <view class="num {{qolDetail.TotalScore>=0 && 'status1'}} {{qolDetail.TotalScore>=40 && 'status2'}} {{qolDetail.TotalScore>=80 && 'status3'}}">
{{qolDetail.TotalScore}} {{qolDetail.TotalScore}}
<text class="sub">分</text> <text class="sub">分</text>
</view> </view>
@ -93,18 +93,21 @@
<view class="row"> <view class="row">
<view class="col"> <view class="col">
<view class="label">视觉功能</view> <view class="label">视觉功能</view>
<view class="num">{{qolDetail.VisionScore}}分</view> <view class="num {{qolDetail.VisionScore>=0 && 'status1'}} {{qolDetail.VisionScore>=40 && 'status2'}} {{qolDetail.VisionScore>=80 && 'status3'}}">{{qolDetail.VisionScore}}分</view>
</view> </view>
<view class="col"> <view class="col">
<view class="label">外观影响</view> <view class="label">外观影响</view>
<view class="num">{{qolDetail.AppearanceScore}}分</view> <view class="num {{qolDetail.AppearanceScore>=0 && 'status1'}} {{qolDetail.AppearanceScore>=40 && 'status2'}} {{qolDetail.AppearanceScore>=80 && 'status3'}}">{{qolDetail.AppearanceScore}}分</view>
</view> </view>
</view> </view>
<view class="k-footer"> <view class="k-footer">
<view class="date">{{qolDetail.CreateTime}}</view> <view class="date">{{qolDetail.CreateTime}}</view>
</view> </view>
</block> </block>
<image class="none" wx:else src="{{imageUrl}}bg44.png?t={{Timestamp}}"></image> <view class="none" wx:else>
<image class="n-img" src="{{imageUrl}}icon134.png?t={{Timestamp}}"></image>
<view class="n-tip">暂无数据</view>
</view>
</view> </view>
<view class="k-hormones" bind:tap="handleHormones"> <view class="k-hormones" bind:tap="handleHormones">
<view class="title">激素记录</view> <view class="title">激素记录</view>
@ -125,12 +128,15 @@
<view class="date">{{hormoneDetail.createTime}}</view> <view class="date">{{hormoneDetail.createTime}}</view>
</view> </view>
</block> </block>
<image class="none" wx:else src="{{imageUrl}}bg45.png?t={{Timestamp}}"></image> <view class="none" wx:else>
<image class="n-img" src="{{imageUrl}}icon135.png?t={{Timestamp}}"></image>
<view class="n-tip">暂无数据</view>
</view>
</view> </view>
</view> </view>
</view> </view>
<view class="chart-list"> <view class="chart-list">
<view class="chart-title">指标趋势</view> <view class="chart-title" id="qol">指标趋势</view>
<view class="chart-card"> <view class="chart-card">
<view class="chart-card-title">生活质量评分</view> <view class="chart-card-title">生活质量评分</view>
<view class="chart-filter"> <view class="chart-filter">
@ -177,7 +183,7 @@
</view> </view>
</view> </view>
<view class="chart-card chart-card-legend" wx:if="{{list4Show || list5Show || list6Show}}"> <view class="chart-card chart-card-legend" wx:if="{{list4Show || list5Show || list6Show}}">
<view class="chart-card-title">激素周用量记录曲线</view> <view class="chart-card-title" id="hormone">激素周用量记录曲线</view>
<view class="chart-filter"> <view class="chart-filter">
<picker <picker
class="type" class="type"

2
src/pages/d_patientHormones/index.wxml

@ -50,6 +50,6 @@
</view> </view>
</view> </view>
<view class="page-footer"> <view class="page-footer">
<view class="pf-btn" bind:tap="handleBackScroll">查看生活质量评分趋势</view> <view class="pf-btn" bind:tap="handleBackScroll">查看激素用量趋势</view>
</view> </view>
</view> </view>

18
src/pages/d_qolDetail/index.scss

@ -1,6 +1,11 @@
page { page {
background-color: #f6f8f9; background-color: #f6f8f9;
} }
.nav-tabs {
view {
--tab-font-size: 28rpx;
}
}
.page1 { .page1 {
padding: 16rpx 30rpx 240rpx; padding: 16rpx 30rpx 240rpx;
@ -46,6 +51,7 @@ page {
font-size: 28rpx; font-size: 28rpx;
color: #b982ff; color: #b982ff;
line-height: 36rpx; line-height: 36rpx;
font-weight: bold;
&:last-of-type { &:last-of-type {
border: none; border: none;
} }
@ -62,6 +68,9 @@ page {
&:last-of-type { &:last-of-type {
border: none; border: none;
} }
&:nth-of-type(2n) {
background-color: #fdfbff;
}
.td { .td {
padding: 20rpx; padding: 20rpx;
border-right: 1px solid #eee4ff; border-right: 1px solid #eee4ff;
@ -115,6 +124,7 @@ page {
writing-mode: vertical-lr; writing-mode: vertical-lr;
background-color: #f7f0ff; background-color: #f7f0ff;
border-right: 1px solid #eee4ff; border-right: 1px solid #eee4ff;
font-weight: bold;
} }
.tcontainer { .tcontainer {
background-color: #f7f0ff; background-color: #f7f0ff;
@ -126,6 +136,7 @@ page {
font-size: 28rpx; font-size: 28rpx;
color: #b982ff; color: #b982ff;
line-height: 36rpx; line-height: 36rpx;
font-weight: bold;
} }
} }
.tbody { .tbody {
@ -149,6 +160,9 @@ page {
&:last-of-type { &:last-of-type {
border: none; border: none;
} }
&:nth-of-type(2n) {
background-color: #fdfbff;
}
.td { .td {
height: 100rpx; height: 100rpx;
box-sizing: border-box; box-sizing: border-box;
@ -186,6 +200,7 @@ page {
font-size: 30rpx; font-size: 30rpx;
color: #b982ff; color: #b982ff;
border-left: 1px solid #eee4ff; border-left: 1px solid #eee4ff;
font-weight: bold;
} }
.row { .row {
border-top: 1px solid #eee4ff; border-top: 1px solid #eee4ff;
@ -207,6 +222,9 @@ page {
&:last-of-type { &:last-of-type {
border: none; border: none;
} }
&:nth-of-type(2n) {
background-color: #fdfbff;
}
.td { .td {
padding: 22rpx; padding: 22rpx;
width: 200rpx; width: 200rpx;

7
src/pages/d_qolDetail/index.wxml

@ -1,5 +1,6 @@
<van-tabs <van-tabs
active="{{ active }}" active="{{ active }}"
custom-class="nav-tabs"
color="#B982FF" color="#B982FF"
title-active-color="#B982FF" title-active-color="#B982FF"
title-inactive-color="#211D2E" title-inactive-color="#211D2E"
@ -28,8 +29,8 @@
<view class="td">{{item.changeTotalScore}}</view> <view class="td">{{item.changeTotalScore}}</view>
</block> </block>
<block wx:elif="{{tab==1}}"> <block wx:elif="{{tab==1}}">
<view class="td">{{item.AppearanceScore}}</view> <view class="td">{{item.VisionScore}}</view>
<view class="td">{{item.changeAppearanceScore}}</view> <view class="td">{{item.changeVisionScore}}</view>
</block> </block>
<block wx:elif="{{tab==2}}"> <block wx:elif="{{tab==2}}">
<view class="td">{{item.AppearanceScore}}</view> <view class="td">{{item.AppearanceScore}}</view>
@ -44,7 +45,7 @@
</van-tab> </van-tab>
<van-tab title="按答题选项"> <van-tab title="按答题选项">
<view class="page2"> <view class="page2">
<view class="title">xxx的GO-QOL生活质量评测详情</view> <view class="title">{{detail.Name}}的GO-QOL生活质量评测详情</view>
<view class="scroll"> <view class="scroll">
<view class="table1"> <view class="table1">
<view class="thead"> <view class="thead">

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

@ -175,7 +175,7 @@ page {
font-size: 24rpx; font-size: 24rpx;
color: #b982ff; color: #b982ff;
border-radius: 6rpx; border-radius: 6rpx;
border: 1rpx solid #b982ff; border: 1px solid #b982ff;
} }
.medical { .medical {
margin-right: 22rpx; margin-right: 22rpx;

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

@ -142,7 +142,7 @@ page {
margin-top: 64rpx; margin-top: 64rpx;
padding: 0 30rpx; padding: 0 30rpx;
.module-container { .module-container {
background: #ffffff; background: linear-gradient(180deg, #f5eeff 0%, #ffffff 8.38%, #ffffff 100%);
box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05); box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
border: 1rpx solid #ebecee; border: 1rpx solid #ebecee;
border-radius: 24rpx; border-radius: 24rpx;

16
src/patient/pages/index/index.scss

@ -72,15 +72,17 @@ page {
color: #adacb2; color: #adacb2;
line-height: 36rpx; line-height: 36rpx;
overflow: hidden; overflow: hidden;
display: flex;
align-items: center;
.h-content { .h-content {
margin-right: 16rpx; margin-right: 16rpx;
display: inline-block; display: inline-block;
max-width: 10em;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
.tag { .tag {
flex-shrink: 0;
display: inline-block; display: inline-block;
padding: 6rpx 12rpx 4rpx; padding: 6rpx 12rpx 4rpx;
font-size: 24rpx; font-size: 24rpx;
@ -93,6 +95,7 @@ page {
} }
} }
.more { .more {
flex-shrink: 0;
width: 48rpx; width: 48rpx;
height: 48rpx; height: 48rpx;
} }
@ -133,6 +136,7 @@ page {
} }
.content { .content {
margin-top: 12rpx; margin-top: 12rpx;
height: 96rpx;
display: flex; display: flex;
align-self: baseline; align-self: baseline;
justify-content: space-between; justify-content: space-between;
@ -147,6 +151,15 @@ page {
font-weight: normal; font-weight: normal;
} }
} }
.status1 {
color: #ef3939;
}
.status2 {
color: #ffa300;
}
.status3 {
color: #1ec580;
}
.icon { .icon {
width: 96rpx; width: 96rpx;
height: 96rpx; height: 96rpx;
@ -213,6 +226,7 @@ page {
} }
.content { .content {
margin-top: 12rpx; margin-top: 12rpx;
height: 96rpx;
display: flex; display: flex;
align-self: baseline; align-self: baseline;
justify-content: space-between; justify-content: space-between;

61
src/patient/pages/index/index.ts

@ -11,6 +11,9 @@ Page({
hormoneShow: false, hormoneShow: false,
medicalInsuranceShow: false, medicalInsuranceShow: false,
hospitalMapShow: false, hospitalMapShow: false,
medicalInsuranceJump: false,
hospitalMapJump: false,
configList: [], configList: [],
infoList: [] as any, infoList: [] as any,
zdUserInfo: {} as any, zdUserInfo: {} as any,
@ -36,7 +39,6 @@ Page({
// toastType: "aldAlert", // toastType: "aldAlert",
// toastType:"dedicatedDoctor", // toastType:"dedicatedDoctor",
// toastType: 'public-toast', // toastType: 'public-toast',
// toastType: 'drug-guide',
// toastType: 'medical-guide', // toastType: 'medical-guide',
// toastType: 'question-toast', // toastType: 'question-toast',
// toastType: 'guideEnterInfo', // toastType: 'guideEnterInfo',
@ -130,22 +132,6 @@ Page({
return return
} }
const data2 = await wx.ajax({
method: 'GET',
url: '?r=zd/popup/get-popup',
data: {
type: 1,
},
})
if (data2.showAlert) {
this.setData({
toastShow: data2.showAlert,
toastType: 'drug-guide',
toastParams: {},
})
return
}
const data3 = await wx.ajax({ const data3 = await wx.ajax({
method: 'GET', method: 'GET',
url: '?r=zd/popup/get-popup', url: '?r=zd/popup/get-popup',
@ -221,18 +207,24 @@ Page({
hormoneShow: false, hormoneShow: false,
medicalInsuranceShow: false, medicalInsuranceShow: false,
hospitalMapShow: false, hospitalMapShow: false,
medicalInsuranceJump: false,
hospitalMapJump: false,
} }
// 处理配置项 // 处理配置项
processedRes.forEach((item: any) => { processedRes.forEach((item: any) => {
const { code, showStatus, configId, showNum } = item const { code, showStatus, configId, showNum, openStatus } = item
// 设置显示状态 // 设置显示状态
if (code === 'medicalInsurance' && showStatus == 1) { if (code === 'medicalInsurance' && showStatus == 1) {
statusMap.medicalInsuranceShow = true statusMap.medicalInsuranceShow = true
if (openStatus == 1)
statusMap.medicalInsuranceJump = true
} }
if (code === 'hospitalMap' && showStatus == 1) { if (code === 'hospitalMap' && showStatus == 1) {
statusMap.hospitalMapShow = true statusMap.hospitalMapShow = true
if (openStatus == 1)
statusMap.hospitalMapJump = true
} }
if (code === 'adl' && showStatus == 1) { if (code === 'adl' && showStatus == 1) {
statusMap.qolShow = true statusMap.qolShow = true
@ -344,7 +336,14 @@ Page({
}) })
}, },
routerTo(e) { routerTo(e) {
let { url, active, code } = e.currentTarget.dataset let { url, active, code, status } = e.currentTarget.dataset
if (status === false) {
wx.showToast({
icon: 'none',
title: '功能正在建设中,敬请期待',
})
return
}
if (!url) if (!url)
return return
if (code === 'doctor') { if (code === 'doctor') {
@ -380,7 +379,10 @@ Page({
}, },
handleAddQol() { handleAddQol() {
const { qolDetail } = this.data const { qolDetail } = this.data
const url = qolDetail.Id ? `/patient/pages/qolAdd/index?id=${qolDetail.Id}` : `/patient/pages/qol/index` const url
= qolDetail.Id && qolDetail.isTodayRecord
? `/patient/pages/qolAdd/index?id=${qolDetail.Id}&edit=1`
: `/patient/pages/qol/index`
wx.navigateTo({ wx.navigateTo({
url, url,
success() { success() {
@ -424,18 +426,6 @@ Page({
}) })
this.handleToastCancel(null, false) this.handleToastCancel(null, false)
} }
else if (toastType === 'drug-guide') {
wx.ajax({
method: 'POST',
url: '?r=zd/popup/add-record',
data: { type: 1 },
}).then(() => {
wx.navigateTo({
url: '/patient/pages/personalInformation/index?bottom=1&submit=1',
})
})
this.handleToastCancel(null, false)
}
else if (toastType === 'medical-guide') { else if (toastType === 'medical-guide') {
wx.ajax({ wx.ajax({
method: 'POST', method: 'POST',
@ -487,13 +477,6 @@ Page({
}, },
}) })
} }
else if (toastType === 'drug-guide' && sure) {
wx.ajax({
method: 'POST',
url: '?r=zd/popup/add-record',
data: { type: 1 },
})
}
else if (toastType === 'medical-guide' && sure) { else if (toastType === 'medical-guide' && sure) {
wx.ajax({ wx.ajax({
method: 'POST', method: 'POST',

20
src/patient/pages/index/index.wxml

@ -42,7 +42,7 @@
<image class="k-question" src="{{imageUrl}}icon120.png?t={{Timestamp}}"></image> <image class="k-question" src="{{imageUrl}}icon120.png?t={{Timestamp}}"></image>
</view> </view>
<view class="content" wx:if="{{qolDetail.TotalScore}}"> <view class="content" wx:if="{{qolDetail.TotalScore}}">
<view class="num"> <view class="num {{qolDetail.TotalScore>=0 && 'status1'}} {{qolDetail.TotalScore>=40 && 'status2'}} {{qolDetail.TotalScore>=80 && 'status3'}}">
{{qolDetail.TotalScore}} {{qolDetail.TotalScore}}
<text class="sub">分</text> <text class="sub">分</text>
</view> </view>
@ -61,7 +61,7 @@
<image class="none" wx:else src="{{imageUrl}}bg44.png?t={{Timestamp}}"></image> <image class="none" wx:else src="{{imageUrl}}bg44.png?t={{Timestamp}}"></image>
<view class="k-footer"> <view class="k-footer">
<view class="date" wx:if="{{qolDetail.TotalScore}}"> <view class="date" wx:if="{{qolDetail.TotalScore}}">
<block wx:if="{{qolDetail.CreateTime}}">最近:{{qolDetail.CreateDate}}</block> <block wx:if="{{qolDetail.CreateTime}}">最近 {{qolDetail.CreateDate}}</block>
</view> </view>
<view class="no-tip" wx:else>记录主观感受</view> <view class="no-tip" wx:else>记录主观感受</view>
<image class="add" catch:tap="handleAddQol" src="{{imageUrl}}icon127.png?t={{Timestamp}}"></image> <image class="add" catch:tap="handleAddQol" src="{{imageUrl}}icon127.png?t={{Timestamp}}"></image>
@ -95,7 +95,7 @@
</view> </view>
<image class="none" wx:else src="{{imageUrl}}bg45.png?t={{Timestamp}}"></image> <image class="none" wx:else src="{{imageUrl}}bg45.png?t={{Timestamp}}"></image>
<view class="k-footer"> <view class="k-footer">
<view class="date" wx:if="{{hormoneDetail.dosage}}">最近:{{hormoneDetail.createTime}}</view> <view class="date" wx:if="{{hormoneDetail.dosage}}">最近 {{hormoneDetail.createTime}}</view>
<view class="no-tip" wx:else>关注不良反应</view> <view class="no-tip" wx:else>关注不良反应</view>
<image <image
class="add" class="add"
@ -115,7 +115,12 @@
</view> </view>
</view> </view>
<view class="kkd2" wx:if="{{medicalInsuranceShow && hospitalMapShow}}"> <view class="kkd2" wx:if="{{medicalInsuranceShow && hospitalMapShow}}">
<view class="k-item" bind:tap="routerTo" data-url="/patient/pages/doctor/index"> <view
class="k-item"
bind:tap="routerTo"
data-status="{{hospitalMapJump}}"
data-url="/patient/pages/doctor/index"
>
<view <view
class="wrap" class="wrap"
style="background: url('{{imageUrl}}icon128.png?t={{Timestamp}}') no-repeat bottom right/122rpx 134rpx" style="background: url('{{imageUrl}}icon128.png?t={{Timestamp}}') no-repeat bottom right/122rpx 134rpx"
@ -124,7 +129,12 @@
<view class="content">附近的医院</view> <view class="content">附近的医院</view>
</view> </view>
</view> </view>
<view class="k-item" bind:tap="routerTo" data-url="/patient/pages/medical/index"> <view
class="k-item"
bind:tap="routerTo"
data-status="{{medicalInsuranceJump}}"
data-url="/patient/pages/medical/index"
>
<view <view
class="wrap" class="wrap"
style="background: url('{{imageUrl}}icon129.png?t={{Timestamp}}') no-repeat bottom right/122rpx 134rpx" style="background: url('{{imageUrl}}icon129.png?t={{Timestamp}}') no-repeat bottom right/122rpx 134rpx"

56
src/patient/pages/liveDetail/index.scss

@ -11,25 +11,6 @@
} }
.page-container { .page-container {
padding: 30rpx 40rpx calc(env(safe-area-inset-bottom) + 160rpx); padding: 30rpx 40rpx calc(env(safe-area-inset-bottom) + 160rpx);
.count-down {
margin-bottom: 32rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: #b982ff;
gap: 8rpx;
.c-item {
padding: 0 8rpx;
line-height: 48rpx;
background-color: #b982ff;
color: #fff;
min-width: 50rpx;
text-align: center;
box-sizing: border-box;
border-radius: 4rpx;
}
}
.title { .title {
font-size: 40rpx; font-size: 40rpx;
color: #333333; color: #333333;
@ -80,6 +61,13 @@
} }
} }
} }
.qw {
margin-top: 22rpx;
.q-img {
display: block;
width: 100%;
}
}
.screen { .screen {
position: relative; position: relative;
margin-top: 30rpx; margin-top: 30rpx;
@ -193,7 +181,7 @@
margin-top: 32rpx; margin-top: 32rpx;
display: block; display: block;
height: 270rpx; height: 270rpx;
.p-code{ .p-code {
position: absolute; position: absolute;
top: 38rpx; top: 38rpx;
right: 74rpx; right: 74rpx;
@ -220,9 +208,37 @@
bottom: 0; bottom: 0;
left: 0; left: 0;
width: 100%; width: 100%;
z-index: 10;
box-sizing: border-box; box-sizing: border-box;
background-color: #fff; background-color: #fff;
box-shadow: 0rpx 8rpx 48rpx 0rpx rgba(0, 0, 0, 0.19); box-shadow: 0rpx 8rpx 48rpx 0rpx rgba(0, 0, 0, 0.19);
.count-down-wrap {
padding: 10rpx 0;
position: absolute;
top: 0;
left: 50%;
width: 100%;
transform: translate(-50%, -100%);
background-color: #f6f8f9;
.count-down {
display: flex;
align-items: center;
justify-content: center;
font-size: 24rpx;
color: #b982ff;
gap: 8rpx;
white-space: nowrap;
.c-item {
padding: 0 8rpx;
line-height: 48rpx;
background-color: #fff;
min-width: 50rpx;
text-align: center;
box-sizing: border-box;
border-radius: 4rpx;
}
}
}
.btn-wrap { .btn-wrap {
display: flex; display: flex;
align-items: center; align-items: center;

17
src/patient/pages/liveDetail/index.ts

@ -33,6 +33,7 @@ Page({
toastType: '', toastType: '',
// toastType: 'guideEnterInfo', // toastType: 'guideEnterInfo',
// toastType: 'guideEnterInfoJump', // toastType: 'guideEnterInfoJump',
// toastType: 'guideQw',
toastParams: {} as any, toastParams: {} as any,
answer: false, answer: false,
@ -588,6 +589,22 @@ Page({
url: `/patient/pages/liveDetailVideo/index?id=${this.data.id}&index=${index}`, url: `/patient/pages/liveDetailVideo/index?id=${this.data.id}&index=${index}`,
}) })
}, },
handleQw() {
const detail = this.data.detail
this.setData({
toastShow: true,
toastType: 'guideQw',
toastParams: {
...detail.consultConfig,
close: true,
},
})
},
handleLiveResult() {
wx.navigateTo({
url: `/patient/pages/liveResult/index?id=${this.data.id}`,
})
},
onShareAppMessage() { onShareAppMessage() {
this.saveShare() this.saveShare()
return { return {

61
src/patient/pages/liveDetail/index.wxml

@ -2,6 +2,8 @@
<van-icon name="arrow-left" slot="left" size="18px" color="#000" bind:tap="handleBack" /> <van-icon name="arrow-left" slot="left" size="18px" color="#000" bind:tap="handleBack" />
</navbar> </navbar>
<page-meta page-style="{{ toastShow || toastShow ? 'overflow: hidden;' : '' }}" />
<view <view
class="page" class="page"
style="background: url('{{imageUrl}}bg10.png?t={{Timestamp}}') no-repeat top center/100% 610rpx;padding-top:{{pageTop+22}}px;" style="background: url('{{imageUrl}}bg10.png?t={{Timestamp}}') no-repeat top center/100% 610rpx;padding-top:{{pageTop+22}}px;"
@ -9,31 +11,6 @@
<image class="banner" mode="aspectFill" src="{{detail.IntroductionUrl}}" bind:tap="handleBanner"></image> <image class="banner" mode="aspectFill" src="{{detail.IntroductionUrl}}" bind:tap="handleBanner"></image>
<view class="page-container"> <view class="page-container">
<van-count-down
wx:if="{{ detail.LeftTime > 0 }}"
use-slot
time="{{ detail.LeftTime*1000 }}"
bind:change="handleTimeChange"
bind:finish="handleTimeFinish"
>
<view class="count-down">
倒计时
<block>
<view class="c-item">{{timeData.days}}</view>
</block>
<block>
<view class="c-item">{{timeData.hours}}</view>
</block>
<block>
<view class="c-item">{{timeData.minutes}}</view>
</block>
<view class="c-item">{{timeData.seconds}}</view>
</view>
</van-count-down>
<view class="title">{{detail.Name}}</view> <view class="title">{{detail.Name}}</view>
<view class="info"> <view class="info">
<view class="date">{{detail.BeginTime}}</view> <view class="date">{{detail.BeginTime}}</view>
@ -63,10 +40,10 @@
</view> </view>
</block> </block>
</view> </view>
<view class="answer" wx:if="{{detail.QuestionnaireUrl}}" bind:tap="handleAnswer"> <view class="qw" bind:tap="handleQw" wx:if="{{detail.consultConfig.ConsultBanner}}">
<image class="a-img" src="{{imageUrl}}bg21.png?t={{Timestamp}}"></image> <image class="q-img" mode="widthFix" src="{{detail.consultConfig.ConsultBanner}}"></image>
</view> </view>
<view class="screen" wx:elif="{{detail.SignUpRecord.length}}"> <view class="screen" wx:if="{{detail.SignUpRecord.length}}">
<swiper <swiper
class="screen-list" class="screen-list"
autoplay="{{detail.SignUpRecord.length>2}}" autoplay="{{detail.SignUpRecord.length>2}}"
@ -116,6 +93,32 @@
</view> </view>
</view> </view>
<view class="footer"> <view class="footer">
<van-count-down
wx:if="{{ detail.LeftTime > 0 }}"
use-slot
time="{{ detail.LeftTime*1000 }}"
bind:change="handleTimeChange"
bind:finish="handleTimeFinish"
class="count-down-wrap"
>
<view class="count-down">
倒计时
<block>
<view class="c-item">{{timeData.days}}</view>
</block>
<block>
<view class="c-item">{{timeData.hours}}</view>
</block>
<block>
<view class="c-item">{{timeData.minutes}}</view>
</block>
<view class="c-item">{{timeData.seconds}}</view>
</view>
</van-count-down>
<view class="btn active" wx:if="{{ detail.Status==99}}">已取消</view> <view class="btn active" wx:if="{{ detail.Status==99}}">已取消</view>
<view class="btn active" wx:elif="{{ detail.Status==100}}">已删除</view> <view class="btn active" wx:elif="{{ detail.Status==100}}">已删除</view>
<view class="btn" wx:elif="{{detail.Status==3 && detail.ReplayVideoUrl}}" bind:tap="handleReplay">看回放</view> <view class="btn" wx:elif="{{detail.Status==3 && detail.ReplayVideoUrl}}" bind:tap="handleReplay">看回放</view>
@ -130,7 +133,7 @@
<image class="icon" src="{{imageUrl}}icon75.png?t={{Timestamp}}"></image> <image class="icon" src="{{imageUrl}}icon75.png?t={{Timestamp}}"></image>
提醒我 提醒我
</view> </view>
<view class="btn active1" bind:tap="handleShare">已报名,查看活动码</view> <view class="btn active1" bind:tap="handleLiveResult">已报名</view>
</view> </view>
</block> </block>
<block wx:elif="{{detail.SignUpStatus==3}}"> <block wx:elif="{{detail.SignUpStatus==3}}">

233
src/patient/pages/liveResult/index.scss

@ -1,58 +1,170 @@
page { page {
background: linear-gradient(180deg, #f9f9f9 0%, #f9f9f9 100%); background-color: #f6f8f9;
} }
.page { .page {
width: 100vw; width: 100vw;
overflow-x: hidden; padding-bottom: 400rpx;
min-height: 120vh; background: linear-gradient(180deg, #ece4fa 0%, #f6f8f9 100%) no-repeat top center/100% 412rpx;
position: relative;
padding-bottom: 100rpx;
.bg {
position: absolute;
left: 50%;
top: 0;
transform: translateX(-50%);
background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%);
width: 120vw;
height: 656rpx;
border-radius: 0 0 140rpx 140rpx;
}
.page-container { .page-container {
position: absolute; .card {
left: 0; margin: 0 34rpx 0;
width: 100%; display: flex;
.badge { justify-content: center;
margin: 0 auto; gap: 24rpx;
display: block; .icon {
width: 166rpx; width: 148rpx;
height: 166rpx; height: 148rpx;
border-radius: 50%;
} }
.wrap {
padding-top: 18rpx;
.status { .status {
font-size: 48rpx;
color: #b982ff;
font-weight: bold;
}
.tip {
margin-top: 16rpx; margin-top: 16rpx;
font-size: 32rpx;
color: #69686e;
display: flex;
.high {
color: #b982ff;
font-weight: bold;
}
.h1{
margin-left: 10rpx;
}
}
}
}
.container {
margin: 52rpx 34rpx 0;
padding: 50rpx 0 66rpx;
background: linear-gradient(180deg, rgba(244, 235, 255, 0.77) 0%, #ffffff 35.06%, #ffffff 100%);
box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(70, 67, 81, 0.04);
border-radius: 24rpx 24rpx 24rpx 24rpx;
border: 2rpx solid #ffffff;
.title {
font-size: 40rpx; font-size: 40rpx;
color: #fff; color: transparent;
font-weight: bold; font-weight: bold;
text-align: center; text-align: center;
background-clip: text;
-webkit-background-clip: text;
background-image: linear-gradient(90.00000244424237deg, #211d2e 0%, #6a5d94 100%);
}
.code-wrap {
margin: 38rpx auto 0;
width: 272rpx;
height: 272rpx;
overflow: hidden;
.code {
display: block;
margin: 20rpx auto 0;
width: 232rpx;
height: 232rpx;
}
} }
.tip { .tip {
margin-top: 16rpx; margin-top: 28rpx;
display: flex;
justify-content: center;
.t-content {
position: relative;
font-size: 32rpx; font-size: 32rpx;
color: #fff; color: #211d2e;
font-weight: bold;
&::after {
display: block;
position: absolute;
left: 50%;
bottom: -4rpx;
transform: translateX(-50%);
content: '';
width: 100%;
height: 16rpx;
background: rgba(185, 130, 255, 0.28);
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
}
}
}
.qol {
margin: 32rpx 34rpx 0;
position: relative;
height: 202rpx;
box-shadow: 0 4rpx 12rpx rgba(70, 67, 81, 0.04);
.title {
padding-top: 2rpx;
padding-left: 46rpx;
font-size: 28rpx;
color: #ffffff;
width: 208rpx;
text-align: center; text-align: center;
} }
.content {
padding: 88rpx 0 0 40rpx;
font-size: 28rpx;
color: #827f8c;
}
.btn {
position: absolute;
top: 86rpx;
right: 40rpx;
width: 190rpx;
height: 64rpx;
font-size: 32rpx;
color: #ffffff;
line-height: 64rpx;
text-align: center;
background: linear-gradient(351deg, #ffd300 0%, #ec7c2f 100%);
border-radius: 56rpx 56rpx 56rpx 56rpx;
}
}
.go-live { .go-live {
margin: 38rpx auto 0; position: fixed;
width: 456rpx; bottom: 116rpx;
left: 50%;
transform: translateX(-50%);
width: 670rpx;
height: 88rpx; height: 88rpx;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 40rpx; font-size: 40rpx;
color: #B982FF; color: #fff;
background: linear-gradient(to bottom, #ffffff 0%, #e8d6ff 100%); box-shadow: 0 4rpx 12rpx rgba(70, 67, 81, 0.4);
background: linear-gradient(344deg, #ffbcf9 0%, #b982ff 100%);
border-radius: 48rpx 48rpx 48rpx 48rpx; border-radius: 48rpx 48rpx 48rpx 48rpx;
} }
.go-share {
position: fixed;
bottom: 116rpx;
left: 50%;
padding: 0 32rpx 0 12rpx;
transform: translateX(-50%);
display: flex;
align-items: center;
white-space: nowrap;
justify-content: center;
border-radius: 122rpx;
box-shadow: 0 4rpx 12rpx rgba(70, 67, 81, 0.4);
background: linear-gradient(0deg, #ffffff 0%, #e8d6ff 100%);
border: 1px solid #ffffff;
outline: none;
font-size: 40rpx;
color: #b982ff;
gap: 12rpx;
&::after {
background: transparent;
border: none;
}
.icon {
flex-shrink: 0;
width: 72rpx;
height: 72rpx;
}
}
.price { .price {
margin: 10rpx auto 0; margin: 10rpx auto 0;
font-size: 56rpx; font-size: 56rpx;
@ -94,65 +206,6 @@ page {
color: #ffffff; color: #ffffff;
} }
} }
.container {
position: relative;
margin: 12rpx 40rpx 0;
width: calc(100% - 80rpx);
.c-content {
padding: 40rpx;
position: relative;
top: 20rpx;
left: 0;
background: #fff;
box-shadow: 0rpx 4rpx 40rpx 0rpx rgba(0, 0, 0, 0.06);
border-radius: 24rpx;
box-sizing: border-box;
.banner {
width: 100%;
height: 294rpx;
border-radius: 24rpx;
}
.c-title {
margin-top: 34rpx;
font-size: 40rpx;
color: #333333;
line-height: 1.4;
white-space: pre-line;
font-weight: bold;
}
.date {
margin-top: 16rpx;
font-size: 32rpx;
color: rgba(173, 172, 178, 1);
.icon {
margin-right: 10rpx;
width: 32rpx;
height: 32rpx;
}
}
.btn {
margin-top: 64rpx;
height: 88rpx;
border-radius: 48rpx;
text-align: center;
font-size: 32rpx;
color: rgba(185, 130, 255, 1);
box-sizing: border-box;
border: 1px solid rgba(185, 130, 255, 1);
background-color: transparent;
display: flex;
align-items: center;
justify-content: center;
&.btn2 {
margin-top: 32rpx;
border: none;
background: linear-gradient(197deg, #ffbcf9 0%, #b982ff 100%);
color: #fff;
}
}
}
}
.footer { .footer {
padding-top: 106rpx; padding-top: 106rpx;
.btn { .btn {

41
src/patient/pages/liveResult/index.ts

@ -11,15 +11,15 @@ Page({
zdUserInfo: {}, zdUserInfo: {},
codeUrl: '', codeUrl: '',
dateValue: '' as string | number, dateValue: '' as string | number,
rewardScore: 0 as number | undefined,
qrCode: '', qrCode: '',
qolDetail: {} as any,
entry: '0', entry: '0',
}, },
onLoad(options) { onLoad(options) {
this.setData({ this.setData({
id: options.id, id: options.id,
rewardScore: options.rewardScore,
entry: options.entry, entry: options.entry,
}) })
if (live_time) { if (live_time) {
@ -36,6 +36,7 @@ Page({
app.waitLogin({ type: [1] }).then((_res) => { app.waitLogin({ type: [1] }).then((_res) => {
this.getLiveDetail() this.getLiveDetail()
this.getDetail() this.getDetail()
this.getQol()
app.getZdUserInfo(this, true) app.getZdUserInfo(this, true)
}) })
}, },
@ -49,6 +50,9 @@ Page({
}).then((res) => { }).then((res) => {
res.BeginTime = dayjs(res.BeginTime).format('YYYY-MM-DD HH:mm') res.BeginTime = dayjs(res.BeginTime).format('YYYY-MM-DD HH:mm')
res.BeginTimeValue = dayjs(res.BeginTime).valueOf() res.BeginTimeValue = dayjs(res.BeginTime).valueOf()
res.d_M = dayjs(res.BeginTime).format('M')
res.d_d = dayjs(res.BeginTime).format('D')
res.d_h = dayjs(res.BeginTime).format('HH:mm')
this.setData({ this.setData({
detail: res, detail: res,
}) })
@ -58,6 +62,21 @@ Page({
this.getQrCode() this.getQrCode()
}) })
}, },
getQol() {
wx.ajax({
method: 'GET',
url: '?r=xd/qol/index',
data: {},
}).then((res) => {
this.setData({
qolDetail: {
...res.newRecord,
isTodayRecord: res.isTodayRecord,
CreateDate: dayjs(res.newRecord.CreateTime).format('MM-DD'),
},
})
})
},
getQrCode() { getQrCode() {
wx.ajax({ wx.ajax({
method: 'GET', method: 'GET',
@ -97,6 +116,24 @@ Page({
url: '/patient/pages/index/index', url: '/patient/pages/index/index',
}) })
}, },
handleAddQol() {
const { qolDetail } = this.data
const url
= qolDetail.Id && qolDetail.isTodayRecord
? `/patient/pages/qolAdd/index?id=${qolDetail.Id}&edit=1`
: `/patient/pages/qol/index`
wx.redirectTo({
url,
success() {
if (qolDetail.isTodayRecord) {
wx.showToast({
icon: 'none',
title: '每日仅录入1次,您可修改选项',
})
}
},
})
},
handleBack() { handleBack() {
wx.navigateBack({ wx.navigateBack({
fail: () => { fail: () => {

58
src/patient/pages/liveResult/index.wxml

@ -7,21 +7,55 @@
bind:tap="handleBack" bind:tap="handleBack"
/> />
</navbar> </navbar>
<!-- padding-top:{{pageTop+22}}px; --> <view class="page">
<view class="page" style="background: url('{{imageUrl}}bg10.png?t={{Timestamp}}') no-repeat top center/100% 610rpx"> <view class="page-container" style="padding-top:{{pageTop+30}}px;">
<view class="bg"></view> <view class="card">
<view class="page-container" style="top:{{pageTop+30}}px;"> <image class="icon" src="{{imageUrl}}icon136.png?t={{Timestamp}}"></image>
<image class="badge" mode="aspectFit" src="{{imageUrl}}icon43.png?t={{Timestamp}}"></image> <view class="wrap">
<view class="status">报名成功</view> <view class="status">报名成功</view>
<!-- <view class="tip">欢迎您参与此次活动</view> --> <view class="tip">
直播即将开始
<text class="high h1">{{detail.d_M}}</text>
<text class="high">{{detail.d_d}}</text>
<text class="high h1">{{detail.d_h}}</text>
</view>
</view>
</view>
<view class="container">
<view class="title">
欢迎反馈您的提问
<view></view>
医生会在直播中解答
</view>
<view class="code-wrap" style="background: url('{{imageUrl}}bg46.png?t={{Timestamp}}') no-repeat center/100%">
<image class="code" src="{{detail.ConsultQwImg}}" show-menu-by-longpress></image>
</view>
<view class="tip">
<view class="t-content">长按二维码添加企微小助手</view>
</view>
</view>
<view
class="qol"
style="background: url('{{imageUrl}}bg47.png?t={{Timestamp}}') no-repeat top center/100% 202rpx"
bind:tap="handleAddQol"
>
<view class="title">2022年指南推荐</view>
<view class="content">分数越高,生活质量越高</view>
<view class="btn">立即测试</view>
</view>
<view class="go-live" wx:if="{{detail.BeginTimeValue * 1 < dateValue * 1 && detail.Type==1}}" bind:tap="handleLive"> <view class="go-live" wx:if="{{detail.BeginTimeValue * 1 < dateValue * 1 && detail.Type==1}}" bind:tap="handleLive">
立即进入直播间 立即进入直播间
</view> </view>
<button wx:else open-type="share" class="go-live">分享活动</button> <button wx:else open-type="share" class="go-share">
<view class="office"> <image class="icon" src="{{imageUrl}}icon137.png?t={{Timestamp}}"></image>
<view class="o-title">关注公众号,活动提醒不错过</view> 分享活动给有需要的人
<image class="code" src="{{qrCode}}" show-menu-by-longpress></image> </button>
<view class="btn">长按识别二维码</view> <!-- <view class="office"> -->
</view> <!-- <view class="o-title">关注公众号,活动提醒不错过</view> -->
<!-- <image class="code" src="{{qrCode}}" show-menu-by-longpress></image> -->
<!-- <view class="btn">长按识别二维码</view> -->
<!-- </view> -->
</view> </view>
</view> </view>

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

@ -105,6 +105,7 @@ page {
.card { .card {
margin: 24rpx 0 0; margin: 24rpx 0 0;
display: block; display: block;
width: 100%;
height: 208rpx; height: 208rpx;
border-radius: 24rpx; border-radius: 24rpx;
} }

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

@ -37,6 +37,9 @@ Page({
provinceName: detail.ProvinceName, provinceName: detail.ProvinceName,
cityId: detail.CityId, cityId: detail.CityId,
cityName: detail.CityName, cityName: detail.CityName,
hostipalId: '',
hostipalName: '',
hospitalPolicyId: '',
}) })
this.getHosList() this.getHosList()
}, },
@ -67,6 +70,14 @@ Page({
}) })
}, },
handleHostipalDisable() { handleHostipalDisable() {
const { provinceId, hostipalList } = this.data
if (provinceId && !hostipalList.length) {
wx.showToast({
title: '暂无医院',
icon: 'none',
})
return
}
wx.showToast({ wx.showToast({
title: '请先选择所在城市', title: '请先选择所在城市',
icon: 'none', icon: 'none',

13
src/patient/pages/medical/index.wxml

@ -17,14 +17,15 @@
我的医保所在城市 我的医保所在城市
</view> </view>
<pickerArea <pickerArea
pname="{{ProvinceName}}" pname="{{provinceName}}"
pid="{{ProvinceId}}" pid="{{provinceId}}"
cid="{{CityId}}" cid="{{cityId}}"
cname="{{CityName}}" cname="{{cityName}}"
required="{{true}}"
bind:ok="handleChangeSite" bind:ok="handleChangeSite"
> >
<view class="picker-content"> <view class="picker-content">
<block wx:if="{{provinceName}}">{{provinceName}}{{cityName}}</block> <block wx:if="{{provinceName}}">{{provinceName}}{{provinceName == cityName ? '' : cityName}}</block>
<block wx:else>选择省份城市</block> <block wx:else>选择省份城市</block>
<van-icon name="arrow-down" /> <van-icon name="arrow-down" />
</view> </view>
@ -40,7 +41,7 @@
<block wx:if="{{hostipalName}}">{{hostipalName}}</block> <block wx:if="{{hostipalName}}">{{hostipalName}}</block>
<block wx:else>选择就诊医院</block> <block wx:else>选择就诊医院</block>
<van-icon name="arrow-down" /> <van-icon name="arrow-down" />
<view wx:if="{{!provinceId}}" class="disable" catch:tap="handleHostipalDisable"></view> <view wx:if="{{!provinceId || !hostipalList.length}}" class="disable" catch:tap="handleHostipalDisable"></view>
</view> </view>
</picker> </picker>
</view> </view>

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

@ -162,7 +162,7 @@ page {
flex: 1; flex: 1;
font-size: 36rpx; font-size: 36rpx;
color: #ffffff; color: #ffffff;
background: linear-gradient(344deg, #ffbcf9 0%, #b982ff 100%); background: linear-gradient(180deg, #ffbcf9 0%, #b982ff 100%);
border-radius: 100rpx 100rpx 100rpx 100rpx; border-radius: 100rpx 100rpx 100rpx 100rpx;
} }
} }

13
src/patient/pages/medicalDetail/index.ts

@ -75,9 +75,14 @@ Page({
}) })
}, },
handlePhone() { handlePhone() {
if (this.data.detail.telephone) {
wx.makePhoneCall({ wx.makePhoneCall({
phoneNumber: this.data.detail.telephone, phoneNumber: this.data.detail.telephone,
}) })
}
else {
this.handleCustomerService()
}
this.onClose() this.onClose()
}, },
handleCustomerService() { handleCustomerService() {
@ -85,8 +90,9 @@ Page({
popupShow: true, popupShow: true,
popupType: 'popup12', popupType: 'popup12',
popupParams: { popupParams: {
imgs: this.data.detail.imgs || [], ConsultQwImg: this.data.detail.consultConfig?.ConsultQwImg || '',
consultImg: this.data.detail.consultImg || '', ConsultQwAvatar: this.data.detail.consultConfig?.ConsultQwAvatar || '',
ConsultQwName: this.data.detail.consultConfig?.ConsultQwName || '',
close: true, close: true,
}, },
}) })
@ -100,6 +106,9 @@ Page({
handlePopupOk() { handlePopupOk() {
const { popupType } = this.data const { popupType } = this.data
if (popupType === 'popup13') { if (popupType === 'popup13') {
wx.navigateTo({
url:`/patient/pages/repositoryDetail/index?id=${this.data.detail.picTextId}`,
})
} }
this.handlePopupCancel() this.handlePopupCancel()
}, },

13
src/patient/pages/medicalDetail/index.wxml

@ -7,15 +7,20 @@
<image class="b-img" src="{{detail.imgs || '{{imageUrl}}bg1.png?t={{Timestamp}}'}}"></image> <image class="b-img" src="{{detail.imgs || '{{imageUrl}}bg1.png?t={{Timestamp}}'}}"></image>
</view> </view>
<view class="name">{{detail.hospitalName || ''}}</view> <view class="name">{{detail.hospitalName || ''}}</view>
<view class="title" style="background: url('{{imageUrl}}bg28.png?t={{Timestamp}}') no-repeat top left/52rpx 52rpx">用药方式</view> <view class="title" style="background: url('{{imageUrl}}bg28.png?t={{Timestamp}}') no-repeat top left/52rpx 52rpx">
用药方式
</view>
<view class="content" bind:tap="handleInfo"> <view class="content" bind:tap="handleInfo">
{{medicationMethods}} {{medicationMethods}}
<image class="icon" src="{{imageUrl}}icon113.png?t={{Timestamp}}"></image> <image class="icon" src="{{imageUrl}}icon113.png?t={{Timestamp}}"></image>
</view> </view>
</view> </view>
<view class="container"> <view class="container">
<view class="c-header" style="background: url('{{imageUrl}}bg28.png?t={{Timestamp}}') no-repeat top left/52rpx 52rpx"> <view
用药方式 class="c-header"
style="background: url('{{imageUrl}}bg28.png?t={{Timestamp}}') no-repeat top left/52rpx 52rpx"
>
医保政策
<view class="status" wx:if="{{detail.isReimbursement == '1'}}"> <view class="status" wx:if="{{detail.isReimbursement == '1'}}">
<image class="icon" src="{{imageUrl}}icon114.png?t={{Timestamp}}"></image> <image class="icon" src="{{imageUrl}}icon114.png?t={{Timestamp}}"></image>
可报销 可报销
@ -49,7 +54,7 @@
</view> </view>
<view class="page-footer"> <view class="page-footer">
<view class="btn" bind:tap="handleConsult">我要咨询</view> <view class="btn" bind:tap="handleConsult">我要咨询</view>
<view class="btn" bind:tap="handleHostipal">了解就诊医院</view> <view wx:if="{{detail.isShow==1}}" class="btn" bind:tap="handleHostipal">了解就诊医院</view>
</view> </view>
</view> </view>

120
src/patient/pages/personalInformation/index.ts

@ -44,8 +44,6 @@ Page({
dict: {} as any, dict: {} as any,
DiagnosisTime: '',
HasTedSurgery: '', HasTedSurgery: '',
IsGraves: '', IsGraves: '',
@ -87,8 +85,7 @@ Page({
app.waitLogin({ type: [1] }).then(() => { app.waitLogin({ type: [1] }).then(() => {
app.mpBehavior({ PageName: 'PG_PatientPersonalInfo' }) app.mpBehavior({ PageName: 'PG_PatientPersonalInfo' })
const that = this app.getZdUserInfo(null, true, this.formatUserInfo.bind(this))
app.getZdUserInfo(that, true, that.formatUserInfo.bind(that))
this.getDict() this.getDict()
}) })
}, },
@ -106,12 +103,19 @@ Page({
}, },
formatUserInfo(res) { formatUserInfo(res) {
const arrTituyo = res.tituyo
if (Array.isArray(arrTituyo)) {
const tituyo = {}
arrTituyo.forEach((item) => {
tituyo[item] = true
})
res.tituyo = tituyo
}
this.setData({
zdUserInfo: res,
})
this.formatBorn(res.Birth) this.formatBorn(res.Birth)
this.handleChaneDiagnosisTime({ detail: { value: res.DiagnosisTime } }, false)
const diagnoseTypeValue = this.data.DTList.findIndex(item => item.id == res.DiagnoseType)
this.handleChangeDiagnoseType({ detail: { value: [diagnoseTypeValue] } })
this.handleDiagnoseTypeSave(false)
// this.handleTapRT();
if (this.data.scrollBottom) { if (this.data.scrollBottom) {
wx.pageScrollTo({ wx.pageScrollTo({
@ -157,14 +161,6 @@ Page({
this.formatBorn(Birth) this.formatBorn(Birth)
this.updateUserInfo() this.updateUserInfo()
}, },
handleChaneDiagnosisTime(e, update = true) {
const DiagnosisTime = e.detail.value
this.setData({
'DiagnosisTime': dayjs(DiagnosisTime).format('YYYY年MM月'),
'zdUserInfo.DiagnosisTime': DiagnosisTime,
})
this.updateUserInfo(update)
},
handleInput(e) { handleInput(e) {
const { key } = e.currentTarget.dataset const { key } = e.currentTarget.dataset
@ -172,76 +168,26 @@ Page({
[`zdUserInfo.${key}`]: e.detail.value, [`zdUserInfo.${key}`]: e.detail.value,
}) })
}, },
handleChangeRT(e, update = true) { handleRedioSelect(e) {
const value = e.detail.value const { key, id } = e.currentTarget.dataset
const id = this.data.RTList.filter((_item, index) => index == value)[0]?.id
this.setData({
'rtValue': value,
'zdUserInfo.RelationType': id,
})
this.updateUserInfo(update)
},
handleChangeGender(e, update = true) {
const value = e.detail.value
const id = this.data.GenderList.filter((_item, index) => index == value)[0]?.id
this.setData({
'genderValue': value,
'zdUserInfo.Gender': id,
})
this.updateUserInfo(update)
},
handleChangeAgeRange(e, update = true) {
const value = e.detail.value
const id = this.data.dict.AgeRange.filter((_item, index) => index == value)[0]?.id
this.setData({
'ageRangeValue': value,
'zdUserInfo.AgeRange': id,
})
this.updateUserInfo(update)
},
handleDiagnoseTypeSave(update = true) {
const rangeIndex = this.data.selectDiagnoseTypeIndex
const id = this.data.DTList.filter((_item, index) => index == rangeIndex)[0]?.id
this.setData({
'diagnoseTypeValue': rangeIndex,
'zdUserInfo.DiagnoseType': id,
})
if (update) {
this.handleDiagnoseTypeShow()
}
this.updateUserInfo(update)
},
handleRadio(e) {
const { id, key } = e.currentTarget.dataset
this.setData({ this.setData({
[`zdUserInfo.${key}`]: id, [`zdUserInfo.${key}`]: id,
}) })
this.updateUserInfo(true) this.updateUserInfo()
},
handleDiagnoseTypeShow() {
this.setData({
diagnoseTypeShow: !this.data.diagnoseTypeShow,
})
},
handleChangeDiagnoseType(e) {
const value = e.detail.value[0]
this.setData({
selectDiagnoseTypeIndex: value,
})
}, },
handleRedioSelect(e) { handleCheckSelect(e) {
const { key, id } = e.currentTarget.dataset const { key, id } = e.currentTarget.dataset
const zdUserInfo = this.data.zdUserInfo
zdUserInfo[key][id] = !zdUserInfo[key][id]
this.setData({ this.setData({
[`zdUserInfo.${key}`]: id, zdUserInfo,
}) })
this.updateUserInfo() this.updateUserInfo()
}, },
updateUserInfo(update = true) { updateUserInfo(update = true) {
if (!update) if (!update)
return return
const { PatientName, RelationType, Gender, Birth, DiagnosisTime, DiagnoseType, ...zdUserInfo } const { PatientName, RelationType, Gender, Birth, DiagnoseType, ...zdUserInfo } = this.data.zdUserInfo
= this.data.zdUserInfo
wx.ajax({ wx.ajax({
method: 'POST', method: 'POST',
url: '?r=zd/account/update-info', url: '?r=zd/account/update-info',
@ -250,7 +196,6 @@ Page({
relationType: RelationType, relationType: RelationType,
gender: Gender, gender: Gender,
birth: Birth, birth: Birth,
diagnosisTime: DiagnosisTime,
diagnoseType: DiagnoseType, diagnoseType: DiagnoseType,
ageRange: zdUserInfo.AgeRange, ageRange: zdUserInfo.AgeRange,
patientCanFollowUp: zdUserInfo.PatientCanFollowUp, patientCanFollowUp: zdUserInfo.PatientCanFollowUp,
@ -261,7 +206,11 @@ Page({
medicalInsuranceType: zdUserInfo.MedicalInsuranceType, medicalInsuranceType: zdUserInfo.MedicalInsuranceType,
isKnowTituyo: zdUserInfo.IsKnowTituyo, isKnowTituyo: zdUserInfo.IsKnowTituyo,
isUseTituyo: zdUserInfo.IsUseTituyo, isUseTituyo: zdUserInfo.IsUseTituyo,
diseaseStage: zdUserInfo.DiseaseStage,
diseasePeriod: zdUserInfo.DiseasePeriod,
...zdUserInfo, ...zdUserInfo,
tituyo: Object.keys(zdUserInfo.tituyo).filter(item => zdUserInfo.tituyo[item]),
prescriptionImg: zdUserInfo.PrescriptionImg,
}, },
}) })
.then((_res) => { .then((_res) => {
@ -269,14 +218,14 @@ Page({
title: '修改成功', title: '修改成功',
icon: 'none', icon: 'none',
}) })
app.getZdUserInfo(this, true, this.formatUserInfo.bind(this)) app.getZdUserInfo(null, true, this.formatUserInfo.bind(this))
}) })
.catch((err) => { .catch((err) => {
wx.showToast({ wx.showToast({
title: err.data.msg, title: err.data.msg,
icon: 'none', icon: 'none',
}) })
app.getZdUserInfo(this, true, this.formatUserInfo.bind(this)) app.getZdUserInfo(null, true, this.formatUserInfo.bind(this))
}) })
}, },
handleNoUpload() { handleNoUpload() {
@ -284,7 +233,7 @@ Page({
}, },
handleSetData(e) { handleSetData(e) {
this.setData({ this.setData({
'zdUserInfo.prescriptionImg': e.detail.imgUrl, 'zdUserInfo.PrescriptionImg': e.detail.imgUrl,
}) })
this.updateUserInfo() this.updateUserInfo()
}, },
@ -298,7 +247,7 @@ Page({
this.setData({ this.setData({
'popupShow': false, 'popupShow': false,
'popupType': '', 'popupType': '',
'zdUserInfo.prescriptionImg': '', 'zdUserInfo.PrescriptionImg': '',
}) })
this.updateUserInfo() this.updateUserInfo()
}, },
@ -308,17 +257,6 @@ Page({
popupType: '', popupType: '',
}) })
}, },
handleChangeTel() {
wx.navigateTo({
url: '/patient/pages/changePhone/index',
})
},
handleChangeUser() {
wx.navigateTo({
url: '/patient/pages/changeUser/index',
})
},
handleLogout() { handleLogout() {
app.mpBehavior({ PageName: 'BTN_PatientPersonalInfoCancel' }) app.mpBehavior({ PageName: 'BTN_PatientPersonalInfoCancel' })
wx.navigateTo({ wx.navigateTo({

83
src/patient/pages/personalInformation/index.wxml

@ -87,16 +87,16 @@
</view> </view>
<view class="row"> <view class="row">
<view class="row-header"> <view class="row-header">
<view class="label">是否有Graves病病史</view> <view class="label">您的甲状腺眼病分级</view>
</view> </view>
<view class="row-content"> <view class="row-content">
<view class="radio-btns radio-btns3"> <view class="radio-btns radio-btns3">
<view <view
class="btn {{zdUserInfo.IsGraves==index && 'active'}}" class="btn {{zdUserInfo.DiseaseStage==index && 'active'}}"
wx:for="{{dict.IsGraves}}" wx:for="{{dict.StageText}}"
wx:key="index" wx:key="index"
bind:tap="handleRedioSelect" bind:tap="handleRedioSelect"
data-key="IsGraves" data-key="DiseaseStage"
data-id="{{index}}" data-id="{{index}}"
> >
{{item}} {{item}}
@ -106,16 +106,16 @@
</view> </view>
<view class="row"> <view class="row">
<view class="row-header"> <view class="row-header">
<view class="label">是否有TED(甲状腺眼突)及其相关眼部手术史</view> <view class="label">您的甲状腺眼病分期</view>
</view> </view>
<view class="row-content"> <view class="row-content">
<view class="radio-btns radio-btns3"> <view class="radio-btns radio-btns3">
<view <view
class="btn {{zdUserInfo.HasTedSurgery==index && 'active'}}" class="btn {{zdUserInfo.DiseasePeriod==index && 'active'}}"
wx:for="{{dict.HasTedSurgery}}" wx:for="{{dict.PeriodText}}"
wx:key="index" wx:key="index"
bind:tap="handleRedioSelect" bind:tap="handleRedioSelect"
data-key="HasTedSurgery" data-key="DiseasePeriod"
data-id="{{index}}" data-id="{{index}}"
> >
{{item}} {{item}}
@ -123,19 +123,18 @@
</view> </view>
</view> </view>
</view> </view>
<block wx:if="{{zdUserInfo.UserType < 4}}">
<view class="row"> <view class="row">
<view class="row-header"> <view class="row-header">
<view class="label">是否了解替妥尤单抗N01</view> <view class="label">是否有Graves病病史</view>
</view> </view>
<view class="row-content"> <view class="row-content">
<view class="radio-btns radio-btns3"> <view class="radio-btns radio-btns3">
<view <view
class="btn {{zdUserInfo.IsKnowTituyo==index && 'active'}}" class="btn {{zdUserInfo.IsGraves==index && 'active'}}"
wx:for="{{bolList}}" wx:for="{{dict.IsGraves}}"
wx:key="index" wx:key="index"
bind:tap="handleRedioSelect" bind:tap="handleRedioSelect"
data-key="IsKnowTituyo" data-key="IsGraves"
data-id="{{index}}" data-id="{{index}}"
> >
{{item}} {{item}}
@ -145,16 +144,16 @@
</view> </view>
<view class="row"> <view class="row">
<view class="row-header"> <view class="row-header">
<view class="label">是否有使用替妥尤单抗N01</view> <view class="label">是否有TED(甲状腺眼突)及其相关眼部手术史</view>
</view> </view>
<view class="row-content"> <view class="row-content">
<view class="radio-btns radio-btns3"> <view class="radio-btns radio-btns3">
<view <view
class="btn {{zdUserInfo.IsUseTituyo==index && 'active'}}" class="btn {{zdUserInfo.HasTedSurgery==index && 'active'}}"
wx:for="{{bolList}}" wx:for="{{dict.HasTedSurgery}}"
wx:key="index" wx:key="index"
bind:tap="handleRedioSelect" bind:tap="handleRedioSelect"
data-key="IsUseTituyo" data-key="HasTedSurgery"
data-id="{{index}}" data-id="{{index}}"
> >
{{item}} {{item}}
@ -162,12 +161,31 @@
</view> </view>
</view> </view>
</view> </view>
<block wx:if="{{zdUserInfo.IsUseTituyo == 1 }}"> <view class="row">
<view class="row-header">
<view class="label">如何看待新药替妥尤单抗</view>
</view>
<view class="row-content">
<view class="radio-btns radio-btns3">
<view
class="btn {{zdUserInfo.tituyo[index] && 'active'}}"
wx:for="{{dict.tituyoMap}}"
wx:key="index"
bind:tap="handleCheckSelect"
data-key="tituyo"
data-id="{{index}}"
>
{{item}}
</view>
</view>
</view>
</view>
<block wx:if="{{zdUserInfo.tituyo[4]}}">
<view class="row"> <view class="row">
<view class="row-header"> <view class="row-header">
<view class="label">请上传您的处方证明</view> <view class="label">请上传您的处方证明</view>
</view> </view>
<view class="row-sub">处方证明审核通过后,即可享受平台全部服务</view> <view class="row-sub">完善个人信息,可获得医生更多关注</view>
<uploadFile class="upload" accept="image" bind:file="handleSetData"> <uploadFile class="upload" accept="image" bind:file="handleSetData">
<view <view
class="mask" class="mask"
@ -199,7 +217,6 @@
<view class="row-sub" wx:else>您可以上传您的诊断处方、住院小结等</view> <view class="row-sub" wx:else>您可以上传您的诊断处方、住院小结等</view>
</view> </view>
</block> </block>
</block>
</view> </view>
</view> </view>
<view wx:if="{{submit}}" class="cancellation" bind:tap="routerTo" data-url="/patient/pages/my/index">提交</view> <view wx:if="{{submit}}" class="cancellation" bind:tap="routerTo" data-url="/patient/pages/my/index">提交</view>
@ -209,32 +226,6 @@
</block> </block>
</view> </view>
<van-popup
class="popup"
show="{{ diagnoseTypeShow }}"
position="bottom"
round
close-on-click-overlay
bind:close="handleDiagnoseTypeShow"
>
<view class="popup-title">
<view class="close" bind:tap="handleDiagnoseTypeShow">关闭</view>
<view class="sure" bind:tap="handleDiagnoseTypeSave">保存</view>
</view>
<picker-view
class="popup-picker"
indicator-style="height: 50px;"
style="width: 100%; height: 300px"
value="{{[selectDiagnoseTypeIndex]}}"
bindchange="handleChangeDiagnoseType"
bindpickstart="handelUpdateDiagnoseType"
>
<picker-view-column>
<view class="picker-col" wx:for="{{DTList}}">{{item.value}}</view>
</picker-view-column>
</picker-view>
</van-popup>
<popup <popup
show="{{popupShow}}" show="{{popupShow}}"
type="{{popupType}}" type="{{popupType}}"

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

@ -6,6 +6,7 @@ Page({
data: { data: {
toastText: '', toastText: '',
id: '', id: '',
edit: false,
step: 0, step: 0,
qolList0: [ qolList0: [
{ {
@ -161,6 +162,7 @@ Page({
onLoad(options) { onLoad(options) {
this.setData({ this.setData({
id: options.id, id: options.id,
edit: options.edit == '1',
}) })
app.waitLogin({ type: [1] }).then(() => { app.waitLogin({ type: [1] }).then(() => {
if (options.id) { if (options.id) {
@ -193,8 +195,8 @@ Page({
}) })
}, },
handleSelect(e) { handleSelect(e) {
const { id } = this.data const { id, edit } = this.data
if (id) if (id && !edit)
return return
const { list, key, index } = e.currentTarget.dataset const { list, key, index } = e.currentTarget.dataset
this.setData({ this.setData({
@ -228,7 +230,7 @@ Page({
}) })
}, },
handleSubmit() { handleSubmit() {
const { qolList0, qolList1 } = this.data const { qolList0, qolList1, edit, id } = this.data
const arr = [...qolList0, ...qolList1] const arr = [...qolList0, ...qolList1]
const form = {} const form = {}
for (let i = 0; i < arr.length; i++) { for (let i = 0; i < arr.length; i++) {
@ -243,10 +245,12 @@ Page({
} }
form[`Question${order}`] = item.answer form[`Question${order}`] = item.answer
} }
wx.ajax({ wx.ajax({
method: 'POST', method: 'POST',
url: '?r=xd/qol/create', url: id && edit ? '?r=xd/qol/edit' : '?r=xd/qol/create',
data: { data: {
Id: id,
...form, ...form,
}, },
}).then((res) => { }).then((res) => {

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

@ -59,8 +59,8 @@
</view> </view>
</view> </view>
</view> </view>
<view class="btn" wx:if="{{id}}" bind:tap="handleReset">重新测评</view> <view class="btn" wx:if="{{!edit && !id}}" bind:tap="handleSubmit">提交(2/2)</view>
<view class="btn" wx:else bind:tap="handleSubmit">提交(2/2)</view> <view class="btn" wx:if="{{id && edit}}" bind:tap="handleSubmit">提交(2/2)</view>
<view class="prev" bind:tap="handlePrev">上一页</view> <view class="prev" bind:tap="handlePrev">上一页</view>
</view> </view>
</view> </view>

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

@ -255,7 +255,7 @@ page {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
line-height: 88rpx; line-height: 88rpx;
background: linear-gradient(344deg, #ffbcf9 0%, #b982ff 100%); background: linear-gradient(180deg, #ffbcf9 0%, #b982ff 100%);
border-radius: 104rpx; border-radius: 104rpx;
font-size: 34rpx; font-size: 34rpx;
color: #ffffff; color: #ffffff;

15
src/patient/pages/qolReport/index.ts

@ -110,10 +110,17 @@ Page({
EndMonth, EndMonth,
BeginMonth, BeginMonth,
}) })
this.getChatData() this.handleChange()
this.getHormoneData()
}, },
handleChange() { handleChange() {
this.setData({
list4Show: true,
list5Show: true,
list6Show: true,
})
this.chartComponent4 = this.selectComponent('#chart4')
this.chartComponent5 = this.selectComponent('#chart5')
this.chartComponent6 = this.selectComponent('#chart6')
this.getChatData() this.getChatData()
this.getHormoneData() this.getHormoneData()
}, },
@ -532,9 +539,9 @@ Page({
}) })
}, },
handleDetail(e) { handleDetail(e) {
const { id } = e.currentTarget.dataset const { id, edit } = e.currentTarget.dataset
wx.navigateTo({ wx.navigateTo({
url: `/patient/pages/qolAdd/index?id=${id}`, url: `/patient/pages/qolAdd/index?id=${id}&edit=${edit ? 1 : 0}`,
}) })
}, },
handleQol() { handleQol() {

1
src/patient/pages/qolReport/index.wxml

@ -106,6 +106,7 @@
wx:if="{{item.dataType == 1}}" wx:if="{{item.dataType == 1}}"
bind:tap="handleDetail" bind:tap="handleDetail"
data-id="{{item.Id}}" data-id="{{item.Id}}"
data-edit="{{item.isTodayRecord}}"
data-index="{{index}}" data-index="{{index}}"
bind:longpress="handleDelete" bind:longpress="handleDelete"
> >

Loading…
Cancel
Save