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. 55
      src/pages/d_patientDetail/index.scss
  8. 12
      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. 249
      src/patient/pages/liveResult/index.scss
  22. 41
      src/patient/pages/liveResult/index.ts
  23. 60
      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. 19
      src/patient/pages/medicalDetail/index.ts
  29. 13
      src/patient/pages/medicalDetail/index.wxml
  30. 120
      src/patient/pages/personalInformation/index.ts
  31. 177
      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 @@ @@ -26,8 +26,8 @@
"name": "医生-患者量表",
"pathName": "pages/d_qolDetail/index",
"query": "id=178",
"scene": null,
"launchMode": "default"
"launchMode": "default",
"scene": null
},
{
"name": "医生-患者详情",

76
src/components/pickerArea/index.ts

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

6
src/components/popup/index.scss

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

6
src/components/popup/index.wxml

@ -112,10 +112,10 @@ @@ -112,10 +112,10 @@
>
<view class="container">
<view class="c-header">
<image class="avatar" src="{{params.imgs}}"></image>
<view class="name">客服小张</view>
<image class="avatar" src="{{params.ConsultQwAvatar}}"></image>
<view class="name">{{params.ConsultQwName}}</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></view>

23
src/components/toast/index.scss

@ -2734,7 +2734,7 @@ @@ -2734,7 +2734,7 @@
}
}
.btn {
margin-top: 32rpx;
margin: 32rpx 30rpx 0;
height: 88rpx;
line-height: 88rpx;
text-align: center;
@ -2745,3 +2745,24 @@ @@ -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 @@ @@ -805,19 +805,42 @@
</view>
</view>
<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="title">访问直播活动页需切换至患者端</view>
<view class="content">请问是否继续</view>
<view class="btn" bind:tap="handleOk">继续</view>
<van-icon class="p-close" name="cross" bind:tap="handleCancel" />
<view class="title">完善个人信息</view>
<view class="content">
完善个人信息,可获得
<text class="high">【医生】</text>
更多关注
</view>
<view class="btn" bind:tap="handleOk">确认</view>
</view>
</view>
<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="title">访问直播活动页需切换至患者端</view>
<view class="content">请问是否继续</view>
<view class="btn" bind:tap="handleOk">继续</view>
<van-icon class="p-close" name="cross" bind:tap="handleCancel" />
<view class="title">完善个人信息</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>

55
src/pages/d_patientDetail/index.scss

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

12
src/pages/d_patientDetail/index.ts

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

20
src/pages/d_patientDetail/index.wxml

@ -74,7 +74,7 @@ @@ -74,7 +74,7 @@
<view class="title">生活质量自评</view>
<block wx:if="{{qolDetail.TotalScore}}">
<view class="content">
<view class="num">
<view class="num {{qolDetail.TotalScore>=0 && 'status1'}} {{qolDetail.TotalScore>=40 && 'status2'}} {{qolDetail.TotalScore>=80 && 'status3'}}">
{{qolDetail.TotalScore}}
<text class="sub">分</text>
</view>
@ -93,18 +93,21 @@ @@ -93,18 +93,21 @@
<view class="row">
<view class="col">
<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 class="col">
<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 class="k-footer">
<view class="date">{{qolDetail.CreateTime}}</view>
</view>
</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 class="k-hormones" bind:tap="handleHormones">
<view class="title">激素记录</view>
@ -125,12 +128,15 @@ @@ -125,12 +128,15 @@
<view class="date">{{hormoneDetail.createTime}}</view>
</view>
</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 class="chart-list">
<view class="chart-title">指标趋势</view>
<view class="chart-title" id="qol">指标趋势</view>
<view class="chart-card">
<view class="chart-card-title">生活质量评分</view>
<view class="chart-filter">
@ -177,7 +183,7 @@ @@ -177,7 +183,7 @@
</view>
</view>
<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">
<picker
class="type"

2
src/pages/d_patientHormones/index.wxml

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

18
src/pages/d_qolDetail/index.scss

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

7
src/pages/d_qolDetail/index.wxml

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

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

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

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

@ -142,7 +142,7 @@ page { @@ -142,7 +142,7 @@ page {
margin-top: 64rpx;
padding: 0 30rpx;
.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);
border: 1rpx solid #ebecee;
border-radius: 24rpx;

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

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

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

@ -11,6 +11,9 @@ Page({ @@ -11,6 +11,9 @@ Page({
hormoneShow: false,
medicalInsuranceShow: false,
hospitalMapShow: false,
medicalInsuranceJump: false,
hospitalMapJump: false,
configList: [],
infoList: [] as any,
zdUserInfo: {} as any,
@ -36,7 +39,6 @@ Page({ @@ -36,7 +39,6 @@ Page({
// toastType: "aldAlert",
// toastType:"dedicatedDoctor",
// toastType: 'public-toast',
// toastType: 'drug-guide',
// toastType: 'medical-guide',
// toastType: 'question-toast',
// toastType: 'guideEnterInfo',
@ -130,22 +132,6 @@ Page({ @@ -130,22 +132,6 @@ Page({
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({
method: 'GET',
url: '?r=zd/popup/get-popup',
@ -221,18 +207,24 @@ Page({ @@ -221,18 +207,24 @@ Page({
hormoneShow: false,
medicalInsuranceShow: false,
hospitalMapShow: false,
medicalInsuranceJump: false,
hospitalMapJump: false,
}
// 处理配置项
processedRes.forEach((item: any) => {
const { code, showStatus, configId, showNum } = item
const { code, showStatus, configId, showNum, openStatus } = item
// 设置显示状态
if (code === 'medicalInsurance' && showStatus == 1) {
statusMap.medicalInsuranceShow = true
if (openStatus == 1)
statusMap.medicalInsuranceJump = true
}
if (code === 'hospitalMap' && showStatus == 1) {
statusMap.hospitalMapShow = true
if (openStatus == 1)
statusMap.hospitalMapJump = true
}
if (code === 'adl' && showStatus == 1) {
statusMap.qolShow = true
@ -344,7 +336,14 @@ Page({ @@ -344,7 +336,14 @@ Page({
})
},
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)
return
if (code === 'doctor') {
@ -380,7 +379,10 @@ Page({ @@ -380,7 +379,10 @@ Page({
},
handleAddQol() {
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({
url,
success() {
@ -424,18 +426,6 @@ Page({ @@ -424,18 +426,6 @@ Page({
})
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') {
wx.ajax({
method: 'POST',
@ -487,13 +477,6 @@ Page({ @@ -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) {
wx.ajax({
method: 'POST',

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

@ -42,7 +42,7 @@ @@ -42,7 +42,7 @@
<image class="k-question" src="{{imageUrl}}icon120.png?t={{Timestamp}}"></image>
</view>
<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}}
<text class="sub">分</text>
</view>
@ -61,7 +61,7 @@ @@ -61,7 +61,7 @@
<image class="none" wx:else src="{{imageUrl}}bg44.png?t={{Timestamp}}"></image>
<view class="k-footer">
<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 class="no-tip" wx:else>记录主观感受</view>
<image class="add" catch:tap="handleAddQol" src="{{imageUrl}}icon127.png?t={{Timestamp}}"></image>
@ -95,7 +95,7 @@ @@ -95,7 +95,7 @@
</view>
<image class="none" wx:else src="{{imageUrl}}bg45.png?t={{Timestamp}}"></image>
<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>
<image
class="add"
@ -115,7 +115,12 @@ @@ -115,7 +115,12 @@
</view>
</view>
<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
class="wrap"
style="background: url('{{imageUrl}}icon128.png?t={{Timestamp}}') no-repeat bottom right/122rpx 134rpx"
@ -124,7 +129,12 @@ @@ -124,7 +129,12 @@
<view class="content">附近的医院</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
class="wrap"
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 @@ @@ -11,25 +11,6 @@
}
.page-container {
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 {
font-size: 40rpx;
color: #333333;
@ -80,6 +61,13 @@ @@ -80,6 +61,13 @@
}
}
}
.qw {
margin-top: 22rpx;
.q-img {
display: block;
width: 100%;
}
}
.screen {
position: relative;
margin-top: 30rpx;
@ -193,7 +181,7 @@ @@ -193,7 +181,7 @@
margin-top: 32rpx;
display: block;
height: 270rpx;
.p-code{
.p-code {
position: absolute;
top: 38rpx;
right: 74rpx;
@ -220,9 +208,37 @@ @@ -220,9 +208,37 @@
bottom: 0;
left: 0;
width: 100%;
z-index: 10;
box-sizing: border-box;
background-color: #fff;
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 {
display: flex;
align-items: center;

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

@ -33,6 +33,7 @@ Page({ @@ -33,6 +33,7 @@ Page({
toastType: '',
// toastType: 'guideEnterInfo',
// toastType: 'guideEnterInfoJump',
// toastType: 'guideQw',
toastParams: {} as any,
answer: false,
@ -588,6 +589,22 @@ Page({ @@ -588,6 +589,22 @@ Page({
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() {
this.saveShare()
return {

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

@ -2,6 +2,8 @@ @@ -2,6 +2,8 @@
<van-icon name="arrow-left" slot="left" size="18px" color="#000" bind:tap="handleBack" />
</navbar>
<page-meta page-style="{{ toastShow || toastShow ? 'overflow: hidden;' : '' }}" />
<view
class="page"
style="background: url('{{imageUrl}}bg10.png?t={{Timestamp}}') no-repeat top center/100% 610rpx;padding-top:{{pageTop+22}}px;"
@ -9,31 +11,6 @@ @@ -9,31 +11,6 @@
<image class="banner" mode="aspectFill" src="{{detail.IntroductionUrl}}" bind:tap="handleBanner"></image>
<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="info">
<view class="date">{{detail.BeginTime}}</view>
@ -63,10 +40,10 @@ @@ -63,10 +40,10 @@
</view>
</block>
</view>
<view class="answer" wx:if="{{detail.QuestionnaireUrl}}" bind:tap="handleAnswer">
<image class="a-img" src="{{imageUrl}}bg21.png?t={{Timestamp}}"></image>
<view class="qw" bind:tap="handleQw" wx:if="{{detail.consultConfig.ConsultBanner}}">
<image class="q-img" mode="widthFix" src="{{detail.consultConfig.ConsultBanner}}"></image>
</view>
<view class="screen" wx:elif="{{detail.SignUpRecord.length}}">
<view class="screen" wx:if="{{detail.SignUpRecord.length}}">
<swiper
class="screen-list"
autoplay="{{detail.SignUpRecord.length>2}}"
@ -116,6 +93,32 @@ @@ -116,6 +93,32 @@
</view>
</view>
<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:elif="{{ detail.Status==100}}">已删除</view>
<view class="btn" wx:elif="{{detail.Status==3 && detail.ReplayVideoUrl}}" bind:tap="handleReplay">看回放</view>
@ -130,7 +133,7 @@ @@ -130,7 +133,7 @@
<image class="icon" src="{{imageUrl}}icon75.png?t={{Timestamp}}"></image>
提醒我
</view>
<view class="btn active1" bind:tap="handleShare">已报名,查看活动码</view>
<view class="btn active1" bind:tap="handleLiveResult">已报名</view>
</view>
</block>
<block wx:elif="{{detail.SignUpStatus==3}}">

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

@ -1,58 +1,170 @@ @@ -1,58 +1,170 @@
page {
background: linear-gradient(180deg, #f9f9f9 0%, #f9f9f9 100%);
background-color: #f6f8f9;
}
.page {
width: 100vw;
overflow-x: hidden;
min-height: 120vh;
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;
}
padding-bottom: 400rpx;
background: linear-gradient(180deg, #ece4fa 0%, #f6f8f9 100%) no-repeat top center/100% 412rpx;
.page-container {
position: absolute;
left: 0;
width: 100%;
.badge {
margin: 0 auto;
display: block;
width: 166rpx;
height: 166rpx;
border-radius: 50%;
.card {
margin: 0 34rpx 0;
display: flex;
justify-content: center;
gap: 24rpx;
.icon {
width: 148rpx;
height: 148rpx;
}
.wrap {
padding-top: 18rpx;
.status {
font-size: 48rpx;
color: #b982ff;
font-weight: bold;
}
.tip {
margin-top: 16rpx;
font-size: 32rpx;
color: #69686e;
display: flex;
.high {
color: #b982ff;
font-weight: bold;
}
.h1{
margin-left: 10rpx;
}
}
}
}
.status {
margin-top: 16rpx;
font-size: 40rpx;
color: #fff;
font-weight: bold;
text-align: center;
.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;
color: transparent;
font-weight: bold;
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 {
margin-top: 28rpx;
display: flex;
justify-content: center;
.t-content {
position: relative;
font-size: 32rpx;
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;
}
}
}
}
.tip {
margin-top: 16rpx;
font-size: 32rpx;
color: #fff;
text-align: center;
.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;
}
.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 {
margin: 38rpx auto 0;
width: 456rpx;
position: fixed;
bottom: 116rpx;
left: 50%;
transform: translateX(-50%);
width: 670rpx;
height: 88rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 40rpx;
color: #B982FF;
background: linear-gradient(to bottom, #ffffff 0%, #e8d6ff 100%);
color: #fff;
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;
}
.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 {
margin: 10rpx auto 0;
font-size: 56rpx;
@ -94,65 +206,6 @@ page { @@ -94,65 +206,6 @@ page {
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 {
padding-top: 106rpx;
.btn {

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

@ -11,15 +11,15 @@ Page({ @@ -11,15 +11,15 @@ Page({
zdUserInfo: {},
codeUrl: '',
dateValue: '' as string | number,
rewardScore: 0 as number | undefined,
qrCode: '',
qolDetail: {} as any,
entry: '0',
},
onLoad(options) {
this.setData({
id: options.id,
rewardScore: options.rewardScore,
entry: options.entry,
})
if (live_time) {
@ -36,6 +36,7 @@ Page({ @@ -36,6 +36,7 @@ Page({
app.waitLogin({ type: [1] }).then((_res) => {
this.getLiveDetail()
this.getDetail()
this.getQol()
app.getZdUserInfo(this, true)
})
},
@ -49,6 +50,9 @@ Page({ @@ -49,6 +50,9 @@ Page({
}).then((res) => {
res.BeginTime = dayjs(res.BeginTime).format('YYYY-MM-DD HH:mm')
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({
detail: res,
})
@ -58,6 +62,21 @@ Page({ @@ -58,6 +62,21 @@ Page({
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() {
wx.ajax({
method: 'GET',
@ -97,6 +116,24 @@ Page({ @@ -97,6 +116,24 @@ Page({
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() {
wx.navigateBack({
fail: () => {

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

@ -7,21 +7,55 @@ @@ -7,21 +7,55 @@
bind:tap="handleBack"
/>
</navbar>
<!-- padding-top:{{pageTop+22}}px; -->
<view class="page" style="background: url('{{imageUrl}}bg10.png?t={{Timestamp}}') no-repeat top center/100% 610rpx">
<view class="bg"></view>
<view class="page-container" style="top:{{pageTop+30}}px;">
<image class="badge" mode="aspectFit" src="{{imageUrl}}icon43.png?t={{Timestamp}}"></image>
<view class="status">报名成功</view>
<!-- <view class="tip">欢迎您参与此次活动</view> -->
<view class="page">
<view class="page-container" style="padding-top:{{pageTop+30}}px;">
<view class="card">
<image class="icon" src="{{imageUrl}}icon136.png?t={{Timestamp}}"></image>
<view class="wrap">
<view class="status">报名成功</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>
<button wx:else open-type="share" class="go-live">分享活动</button>
<view class="office">
<view class="o-title">关注公众号,活动提醒不错过</view>
<image class="code" src="{{qrCode}}" show-menu-by-longpress></image>
<view class="btn">长按识别二维码</view>
</view>
<button wx:else open-type="share" class="go-share">
<image class="icon" src="{{imageUrl}}icon137.png?t={{Timestamp}}"></image>
分享活动给有需要的人
</button>
<!-- <view class="office"> -->
<!-- <view class="o-title">关注公众号,活动提醒不错过</view> -->
<!-- <image class="code" src="{{qrCode}}" show-menu-by-longpress></image> -->
<!-- <view class="btn">长按识别二维码</view> -->
<!-- </view> -->
</view>
</view>

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

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

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

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

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

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

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

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

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

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

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

@ -7,15 +7,20 @@ @@ -7,15 +7,20 @@
<image class="b-img" src="{{detail.imgs || '{{imageUrl}}bg1.png?t={{Timestamp}}'}}"></image>
</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">
{{medicationMethods}}
<image class="icon" src="{{imageUrl}}icon113.png?t={{Timestamp}}"></image>
</view>
</view>
<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'}}">
<image class="icon" src="{{imageUrl}}icon114.png?t={{Timestamp}}"></image>
可报销
@ -49,7 +54,7 @@ @@ -49,7 +54,7 @@
</view>
<view class="page-footer">
<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>

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

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

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

@ -87,6 +87,44 @@ @@ -87,6 +87,44 @@
</view>
<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.DiseaseStage==index && 'active'}}"
wx:for="{{dict.StageText}}"
wx:key="index"
bind:tap="handleRedioSelect"
data-key="DiseaseStage"
data-id="{{index}}"
>
{{item}}
</view>
</view>
</view>
</view>
<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.DiseasePeriod==index && 'active'}}"
wx:for="{{dict.PeriodText}}"
wx:key="index"
bind:tap="handleRedioSelect"
data-key="DiseasePeriod"
data-id="{{index}}"
>
{{item}}
</view>
</view>
</view>
</view>
<view class="row">
<view class="row-header">
<view class="label">是否有Graves病病史</view>
</view>
<view class="row-content">
@ -123,82 +161,61 @@ @@ -123,82 +161,61 @@
</view>
</view>
</view>
<block wx:if="{{zdUserInfo.UserType < 4}}">
<view class="row">
<view class="row-header">
<view class="label">是否了解替妥尤单抗N01</view>
</view>
<view class="row-content">
<view class="radio-btns radio-btns3">
<view
class="btn {{zdUserInfo.IsKnowTituyo==index && 'active'}}"
wx:for="{{bolList}}"
wx:key="index"
bind:tap="handleRedioSelect"
data-key="IsKnowTituyo"
data-id="{{index}}"
>
{{item}}
</view>
<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-header">
<view class="label">是否有使用替妥尤单抗N01</view>
<view class="label">请上传您的处方证明</view>
</view>
<view class="row-content">
<view class="radio-btns radio-btns3">
<view
class="btn {{zdUserInfo.IsUseTituyo==index && 'active'}}"
wx:for="{{bolList}}"
wx:key="index"
bind:tap="handleRedioSelect"
data-key="IsUseTituyo"
data-id="{{index}}"
>
{{item}}
<view class="row-sub">完善个人信息,可获得医生更多关注</view>
<uploadFile class="upload" accept="image" bind:file="handleSetData">
<view
class="mask"
wx:if="{{zdUserInfo.DrugsAuditStatus==1 || zdUserInfo.DrugsAuditStatus==3}}"
catchtap="handleNoUpload"
></view>
<view class="upload-container">
<view class="upload-img" wx:if="{{zdUserInfo.PrescriptionImg}}">
<view class="del" catchtap="handleDelData" wx:if="{{zdUserInfo.DrugsAuditStatus==2}}">
<image class="d-icon" src="{{imageUrl}}icon77.png?t={{Timestamp}}"></image>
</view>
<image
class="img"
src="{{zdUserInfo.PrescriptionImg}}"
mode="aspectFill"
catch:tap="handlePreview"
></image>
<view class="check" wx:if="{{zdUserInfo.DrugsAuditStatus==1}}">
<image class="check-icon" src="{{imageUrl}}icon81.png?t={{Timestamp}}"></image>
审核中...
</view>
</view>
<block wx:else>
<van-icon name="plus" style="font-size: 80rpx; color: rgba(173, 172, 178, 0.5)" />
</block>
</view>
</view>
</uploadFile>
<view class="reject" wx:if="{{zdUserInfo.DrugsAuditStatus==2}}">*审核不通过</view>
<view class="row-sub" wx:else>您可以上传您的诊断处方、住院小结等</view>
</view>
<block wx:if="{{zdUserInfo.IsUseTituyo == 1 }}">
<view class="row">
<view class="row-header">
<view class="label">请上传您的处方证明</view>
</view>
<view class="row-sub">处方证明审核通过后,即可享受平台全部服务</view>
<uploadFile class="upload" accept="image" bind:file="handleSetData">
<view
class="mask"
wx:if="{{zdUserInfo.DrugsAuditStatus==1 || zdUserInfo.DrugsAuditStatus==3}}"
catchtap="handleNoUpload"
></view>
<view class="upload-container">
<view class="upload-img" wx:if="{{zdUserInfo.PrescriptionImg}}">
<view class="del" catchtap="handleDelData" wx:if="{{zdUserInfo.DrugsAuditStatus==2}}">
<image class="d-icon" src="{{imageUrl}}icon77.png?t={{Timestamp}}"></image>
</view>
<image
class="img"
src="{{zdUserInfo.PrescriptionImg}}"
mode="aspectFill"
catch:tap="handlePreview"
></image>
<view class="check" wx:if="{{zdUserInfo.DrugsAuditStatus==1}}">
<image class="check-icon" src="{{imageUrl}}icon81.png?t={{Timestamp}}"></image>
审核中...
</view>
</view>
<block wx:else>
<van-icon name="plus" style="font-size: 80rpx; color: rgba(173, 172, 178, 0.5)" />
</block>
</view>
</uploadFile>
<view class="reject" wx:if="{{zdUserInfo.DrugsAuditStatus==2}}">*审核不通过</view>
<view class="row-sub" wx:else>您可以上传您的诊断处方、住院小结等</view>
</view>
</block>
</block>
</view>
</view>
@ -209,32 +226,6 @@ @@ -209,32 +226,6 @@
</block>
</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
show="{{popupShow}}"
type="{{popupType}}"

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

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

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

@ -59,8 +59,8 @@ @@ -59,8 +59,8 @@
</view>
</view>
</view>
<view class="btn" wx:if="{{id}}" bind:tap="handleReset">重新测评</view>
<view class="btn" wx:else bind:tap="handleSubmit">提交(2/2)</view>
<view class="btn" wx:if="{{!edit && !id}}" 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>
</view>

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

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

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

@ -110,10 +110,17 @@ Page({ @@ -110,10 +110,17 @@ Page({
EndMonth,
BeginMonth,
})
this.getChatData()
this.getHormoneData()
this.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.getHormoneData()
},
@ -532,9 +539,9 @@ Page({ @@ -532,9 +539,9 @@ Page({
})
},
handleDetail(e) {
const { id } = e.currentTarget.dataset
const { id, edit } = e.currentTarget.dataset
wx.navigateTo({
url: `/patient/pages/qolAdd/index?id=${id}`,
url: `/patient/pages/qolAdd/index?id=${id}&edit=${edit ? 1 : 0}`,
})
},
handleQol() {

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

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

Loading…
Cancel
Save