69 changed files with 6025 additions and 29 deletions
@ -0,0 +1,95 @@
@@ -0,0 +1,95 @@
|
||||
/* 日历主要颜色相关样式 */ |
||||
|
||||
.geneb_doctor_color, |
||||
.geneb_doctor_weekend-color, |
||||
.geneb_doctor_handle-color, |
||||
.geneb_doctor_week-color { |
||||
color: rgba(51, 51, 51, 1); |
||||
} |
||||
|
||||
.geneb_doctor_choosed { |
||||
color:#fff; |
||||
background-color: rgba(28, 107, 255, 1); |
||||
} |
||||
|
||||
.geneb_doctor_today { |
||||
color: #fff; |
||||
background-color: rgba(28, 107, 255, 1); |
||||
} |
||||
|
||||
.geneb_doctor_today.geneb_choosed { |
||||
color: #fff; |
||||
background-color: rgba(28, 107, 255, 1); |
||||
} |
||||
|
||||
.geneb_doctor_date-disable { |
||||
color: #c7c7c7; |
||||
} |
||||
|
||||
.geneb_doctor_choosed.geneb_date-disable { |
||||
color: #e2e2e2; |
||||
background-color: #c2afb6; |
||||
} |
||||
|
||||
.geneb_doctor_prev-month-date, |
||||
.geneb_doctor_next-month-date { |
||||
color: #e2e2e2; |
||||
} |
||||
|
||||
.geneb_doctor_normal-date { |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
|
||||
.geneb_doctor_todo-circle { |
||||
border-color: #88d2ac; |
||||
} |
||||
|
||||
.geneb_doctor_todo-dot { |
||||
background-color: #e54d42; |
||||
} |
||||
|
||||
.geneb_doctor_date-desc { |
||||
color: #c2c2c2; |
||||
} |
||||
|
||||
.geneb_doctor_date-desc-lunar { |
||||
color: #e54d42; |
||||
} |
||||
|
||||
.geneb_doctor_date-desc-disable { |
||||
color: #e2e2e2; |
||||
} |
||||
|
||||
.geneb_doctor_festival { |
||||
color: #c2c2c2; |
||||
} |
||||
|
||||
.date.doc { |
||||
position: relative; |
||||
background-color: #e5e5e5; |
||||
} |
||||
|
||||
.date.doc::after { |
||||
position: absolute; |
||||
z-index: 1; |
||||
top: -5rpx; |
||||
right: -5rpx; |
||||
content: ''; |
||||
width: 17rpx; |
||||
height: 24rpx; |
||||
background-repeat: no-repeat; |
||||
background-size: cover; |
||||
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAABACAYAAABhspUgAAAAAXNSR0IArs4c6QAACAVJREFUaEPtmltsHFcZx/9nZu92bMdJSMitzoWkoXVKUrVV8wKk4gHxgJTwgKA8lhfgCZBoUJEqUYGA0AhRQUSpFJQIHlyqogZFIipUoKiAKJAYQkp9qR1ir9fe6+zuXM4FfWf2MrOJY+/aS0zlkRxZzsw5v/nP/3znO+c7DItcl4vFTWVl/7wg5EctKSK2knCVBFcKcrGH7vL3MvfwVnYeGbsaustgAAODCSDCDLU1Hp/Ym+o7fnrvB9+9U3NssT5ezWe+k5X8qwvCQ0FwVKSEswJg6sfmHH+cm2l0SZ3Tj8F84ChjiDID+1I9ly4ceuTjbQFfyM2MpDk/meEu8oKjJIUG9khh1YHEtUeupgPAWl3AAENEwzLEmIGd8dToq8OPDbcF/OLCrZFZ7p5Mcxc5wVEUAmQLT8mOLFHvfCwzF7ZEC3CcGdiRSIxeHD7WHvDZhZsjM56ngbMELDlsWVO4c4ExOd8E9i1R969vhzhj2BFPjv76cJvApPCtkMK8YYkVOALLUXh7PNE+8M/Iw553MiN8S1ii6eGVAI+mZ0PfhzHoAWfWBlyMMWyPJ0dfG368PUu8nJ8bWRD8ZPYOUWIlwH+YmQ4Dg8FoAPu22J5Ijb7ywKPtAV8uZZ/LC36qIH11q7UIIZRCp8CW5+Ly7M3bgVkzUlC0ONC74VcvHTj6ybaiBN38RmVhV9YxTBs2nrl08VTRrjy1gvEGZRh+HGu5epOp808ceehMFFEkDYN/f++Df1+sn0UnjtYHjB9+63tQ6ssrAV70WcZOyy8+/ZXltL0o8Hfzk3u4jc94Bh7nSm0uOZWNruvFozBMkzEG+iF3KGm5XJTAZFVIxRXCjnGkNB0pIwXPTWYcu6/MeYLAgh1HozHeE48VE6Y5vyFiXknFoufO73/4nWVZ4kwmc9BG5QVLiONcKSYYEFU0z/vd1P3rQaEiBYiwnSvr2Jgo5mFxTz9Gcbj+AjTjmczPKbbF41fej9jnzz5w9J/B9kMKP58e/1xO4ayjZNKlwaUUkqYJJZsDjRKfBcH1dN3pRa3dKpUwX61oqRs5RS1amLWpOmWYzv5k7xfO3X/0p/W+GsBnMtNPLQjvx1UlDUcKQDEkDKanYRJR6W+tMM0dzPPOYYMvmauWkStXfOBA1kYxWecWMJAwDHV/T9+Xzh088kLDSmfmpx9b8Lw3qpDxqv7MCilmaFBJ/9aMmZYcY05VK78aFw2DrGXBdp2AymSLQDIEAynD9B4c3PKRnwwduqIV/ubc5N+Kgj9EnqQEhxIQ+iwyEHPJIm+WSxBMj7TV4NX+lVIiXyzURGCg/NjP3ijdNEAzH/FsjcX/dWn42CH2g+zMJ9Ju5bWyFDrnFQB6GMGSur4N6Bpzq5hwnVUBbW2kWq3CcXyV6QoMvgZwghk43Dtwgn17burlrHBPaGAlEQFDnN68Bku41NDvrQLsVVK2FZhzAcsqNYCpP/rCZA2tsGGAgIeSvRfZs3Pj0wUhdpZr028vo/cj4OaHJ+WvVIpdUbfeaKHg26KpMoU3P7cgaALeHIun2TPpcaskeE9ZSp0v9DPTjwoB4Cytx+xyV4FLxSKE9FeL9TDnZ3D+KoSA+yIRm52aGVOWEiBLVKXEoBHRdtDRoXbNcQ9XuwxMliBrhIBr8VgDGwxJZoI9TcCSo6wkHCmxUQOHV8Zz3MVVu9JVha2SBR6YjCjlrK/1tCUMwwf+WgDYrQGLlsC1VoDJFiHgoMLBSLsWgClSJOvAJdncd6hbYi0B08DzLVFTeB24g+F5t0G3rnAHgt72yLrC93LieO952ARHVDWXQQVuYbqaWQ2rLtrGVJmhEljR6pyRFqS1fIKS+LjB/JmuNQ7vlrMYUs1dxp3udRwrvdJV4GedJ3BDbl6yj1UFdgsJVNMbQp0mt5UQ67OXBLknwOO/OILi2KYQXN++Bez99F/XJvA75x+G9e7GEFzvfTnsf/Iv68CNKhFla50OujWtsD3fA2tyMPSpM3/eBSebCv0tPljBlkfCm9i9Q1kkNofXiF0fdJO/HEb++tYlvXmnGwYOpTF04lrov7oOPDFyGIUb7+sIuP9gBns+Fd6zXgdunen+7xT+z28OIPOn3R1ZYsujU9jxsbf/tx6m3pQMVxzGLhyFNdUycezOYd9n3wrBMeP23c+ue/hO0q7pOLwOfC/Sy1uvfwDZa9tC4g8Oz2L78X8vOTjviYeXpLrLDSsC3qqy2KZyjeYH3EnsKf92JTxLPvti9UOYkv233eefWKEqE52rWGSJFNx9pxbu9Wbge2/VvOYVru/Ar+UN7cb+8FosGTRrz35RpulhE+zrs1TjoKKMf5BuIzN1cTFYRcpwD6NOd2scxRIVZZqbN/q0la7sN6tIumTwjdlxXUWqCAIW6KeiTMtxxXnh4boTPoK4ZJxq84ZssQgvAEwl3HpVXyusK0kG2HNzk/mSEP0VJfS5NCosKjq7USuAU15lKYkbXa4i3czlwOkUQe0KAtfrzf2RqMVOZ6Z+VxD8w1RUJEtElV9JDx4Ipd8nXFtX+btxOULg7ay/d9eohDL/tFX9PCZB70qk3mQ/ys0M5T3nWlXKXqrYcyaRpFtrRw7qiPQyRa3Aso8JLevdqAg/mptHwW1uZ9XPYxIwiUc/GyLRyuH+LcO6d4KuCv5SRYojrpQDFIcjMLTp60dcdMJel6D1YM+y0MI3uUIg57n4RyGLoueGE/xar2SLHsO0NsXi13b1DDz5/H0Hxv8Lo3UyF0Y2DrcAAAAASUVORK5CYII='); |
||||
} |
||||
|
||||
.date.error { |
||||
background-color: rgba(207, 83, 117, 1); |
||||
border-radius: 50%; |
||||
color: #fff; |
||||
} |
||||
|
||||
.date.primary { |
||||
background-color: rgba(37, 217, 200, 1); |
||||
color: #fff; |
||||
border-radius: 50%; |
||||
} |
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
{ |
||||
"navigationBarTitleText": "输注感受日志", |
||||
"usingComponents": {} |
||||
} |
@ -0,0 +1,86 @@
@@ -0,0 +1,86 @@
|
||||
page { |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
.page { |
||||
padding: 48rpx 40rpx; |
||||
.card1 { |
||||
padding: 22rpx 32rpx; |
||||
border-radius: 24rpx; |
||||
background-color: #fff; |
||||
.label { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
font-weight: bold; |
||||
} |
||||
.select { |
||||
margin-top: 24rpx; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
gap: 24rpx; |
||||
.icon { |
||||
width: 128rpx; |
||||
height: 128rpx; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.card2 { |
||||
margin-top: 24rpx; |
||||
padding: 32rpx; |
||||
border-radius: 24rpx; |
||||
background-color: #fff; |
||||
.title { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
font-weight: bold; |
||||
} |
||||
.textarea { |
||||
margin-top: 24rpx; |
||||
padding: 24rpx 32rpx; |
||||
width: 100%; |
||||
box-sizing: border-box; |
||||
font-size: 32rpx; |
||||
border-radius: 12rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
.place-textarea { |
||||
color: rgba(207, 209, 213, 1); |
||||
} |
||||
} |
||||
|
||||
.footer { |
||||
position: fixed; |
||||
bottom: 0; |
||||
left: 0; |
||||
width: 100%; |
||||
padding: 16rpx 40rpx calc(16rpx + env(safe-area-inset-bottom)); |
||||
background-color: rgba(255, 255, 255, 1); |
||||
display: flex; |
||||
gap: 26rpx; |
||||
box-sizing: border-box; |
||||
.cancel { |
||||
flex: 1; |
||||
padding: 22rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
font-size: 32rpx; |
||||
color: rgba(246, 74, 58, 1); |
||||
border-radius: 84rpx; |
||||
border: 1px solid #f64a3a; |
||||
} |
||||
.submit { |
||||
flex: 1; |
||||
padding: 22rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
font-size: 32rpx; |
||||
color: #fff; |
||||
background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%); |
||||
border-radius: 84rpx; |
||||
border: 1px solid #f64a3a; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,42 @@
@@ -0,0 +1,42 @@
|
||||
const app = getApp<IAppOption>() |
||||
|
||||
Page({ |
||||
data: { |
||||
patientId: '', |
||||
|
||||
injectionFeel: '', |
||||
injectionRemark: '', |
||||
}, |
||||
onLoad(options) { |
||||
this.setData({ |
||||
patientId: options.id || '', |
||||
}) |
||||
app.waitLogin({ type: 2 }).then(() => { |
||||
this.getDetail() |
||||
}) |
||||
}, |
||||
getDetail() { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/treatment/get-injection-feel', |
||||
data: { |
||||
patientId: this.data.patientId, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
...res, |
||||
}) |
||||
}) |
||||
}, |
||||
handleSelect(e) { |
||||
const { active } = e.currentTarget.dataset |
||||
this.setData({ |
||||
injectionFeel: active, |
||||
}) |
||||
}, |
||||
handleBack() { |
||||
wx.navigateBack() |
||||
}, |
||||
}) |
||||
|
||||
export {} |
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
<view class="page"> |
||||
<view class="card1"> |
||||
<view class="label">整体治疗过程感受</view> |
||||
<view class="select"> |
||||
<view class="s-item"> |
||||
<image wx:if="{{injectionFeel==1}}" class="icon" src="{{imageUrl}}icon44.png?t={{Timestamp}}"></image> |
||||
<image wx:else class="icon" src="{{imageUrl}}icon49.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
|
||||
<view class="s-item"> |
||||
<image wx:if="{{injectionFeel==2}}" class="icon" src="{{imageUrl}}icon42.png?t={{Timestamp}}"></image> |
||||
<image wx:else class="icon" src="{{imageUrl}}icon50.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="s-item"> |
||||
<image wx:if="{{injectionFeel==3}}" class="icon" src="{{imageUrl}}icon43.png?t={{Timestamp}}"></image> |
||||
<image wx:else class="icon" src="{{imageUrl}}icon83.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="card2"> |
||||
<view class="title">整体治疗过程备注</view> |
||||
<textarea |
||||
class="textarea" |
||||
disabled |
||||
model:value="{{injectionRemark}}" |
||||
placeholder-class="place-textarea" |
||||
disable-default-padding |
||||
placeholder="--" |
||||
></textarea> |
||||
</view> |
||||
</view> |
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
{ |
||||
"navigationBarTitleText": "BBM-H901输注记录", |
||||
"usingComponents": {} |
||||
} |
@ -0,0 +1,163 @@
@@ -0,0 +1,163 @@
|
||||
page { |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
.page-tip{ |
||||
padding: 18rpx; |
||||
text-align: center; |
||||
font-size: 28rpx; |
||||
color: rgba(255, 163, 112, 1); |
||||
background-color: rgba(255, 240, 218, 1); |
||||
} |
||||
.page { |
||||
padding: 48rpx 40rpx; |
||||
.container { |
||||
border-radius: 24rpx; |
||||
background: linear-gradient( 356deg, #1D6BFF 0%, #4F8DFF 100%); |
||||
.title { |
||||
padding: 20rpx 0 60rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
text-align: center; |
||||
} |
||||
.card { |
||||
margin-top: -40rpx; |
||||
padding: 0 32rpx; |
||||
border-radius: 22rpx; |
||||
background-color: #fff; |
||||
.row { |
||||
display: flex; |
||||
align-items: center; |
||||
.label { |
||||
width: 5em; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.r-container { |
||||
flex: 1; |
||||
.picker { |
||||
.picker-content { |
||||
padding: 32rpx 0; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
.content { |
||||
text-align: right; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
&:empty::after { |
||||
content: attr(data-place); |
||||
color: rgba(207, 209, 213, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.columns { |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 20rpx; |
||||
.input { |
||||
padding: 32rpx 0; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.input-place { |
||||
color: rgba(207, 209, 213, 1); |
||||
} |
||||
.sub { |
||||
flex-shrink: 0; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.body { |
||||
margin-top: 24rpx; |
||||
padding: 0 32rpx; |
||||
border-radius: 24rpx; |
||||
background-color: #fff; |
||||
.row { |
||||
display: flex; |
||||
align-items: center; |
||||
.label { |
||||
width: 5em; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.r-container { |
||||
flex: 1; |
||||
.picker { |
||||
.picker-content { |
||||
padding: 32rpx 0; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
.content { |
||||
text-align: right; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
&:empty::after { |
||||
content: attr(data-place); |
||||
color: rgba(207, 209, 213, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.columns { |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 20rpx; |
||||
.input { |
||||
padding: 32rpx 0; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.input-place { |
||||
color: rgba(207, 209, 213, 1); |
||||
} |
||||
.sub { |
||||
flex-shrink: 0; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.footer { |
||||
position: fixed; |
||||
bottom: 0; |
||||
left: 0; |
||||
width: 100%; |
||||
padding: 16rpx 40rpx calc(16rpx + env(safe-area-inset-bottom)); |
||||
background-color: rgba(255, 255, 255, 1); |
||||
display: flex; |
||||
gap: 26rpx; |
||||
box-sizing: border-box; |
||||
.cancel { |
||||
flex: 1; |
||||
padding: 22rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
font-size: 32rpx; |
||||
color: rgba(246, 74, 58, 1); |
||||
border-radius: 84rpx; |
||||
border: 1px solid #f64a3a; |
||||
} |
||||
.submit { |
||||
flex: 1; |
||||
padding: 22rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
font-size: 32rpx; |
||||
color: #fff; |
||||
background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%); |
||||
border-radius: 84rpx; |
||||
border: 1px solid #f64a3a; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,78 @@
@@ -0,0 +1,78 @@
|
||||
const app = getApp<IAppOption>() |
||||
import { calc } from 'a-calc' |
||||
|
||||
Page({ |
||||
data: { |
||||
patientId: '', |
||||
|
||||
injectionDate: '', |
||||
injectionWeight: '', |
||||
|
||||
injectionDrugs: '', |
||||
injectionNum: '', |
||||
}, |
||||
onLoad(options) { |
||||
this.setData({ |
||||
patientId: options.id || '', |
||||
}) |
||||
app.waitLogin({ type: 2 }).then(() => { |
||||
this.getDetail() |
||||
}) |
||||
}, |
||||
handleWeight(e) { |
||||
const value = e.detail.value |
||||
if (value) { |
||||
const injectionDrugs = calc(`${value} * 1.25 | =0 ~+`) |
||||
const injectionNum = calc(`${value} * 1.25 / 2 | =0 ~+`) |
||||
this.setData({ |
||||
injectionDrugs, |
||||
injectionNum, |
||||
}) |
||||
} |
||||
}, |
||||
getDetail() { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/treatment/get-injection-info', |
||||
data: { |
||||
patientId: this.data.patientId, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
...res, |
||||
injectionDate: res.injectionDate || '', |
||||
}) |
||||
}) |
||||
}, |
||||
handleBack() { |
||||
wx.navigateBack() |
||||
}, |
||||
handleSubmit() { |
||||
const { injectionDate, injectionWeight } = this.data |
||||
if (!injectionDate) { |
||||
wx.showToast({ |
||||
title: '请选择输注时间', |
||||
icon: 'none', |
||||
}) |
||||
return |
||||
} |
||||
if (!injectionWeight) { |
||||
wx.showToast({ |
||||
title: '请输入体重', |
||||
icon: 'none', |
||||
}) |
||||
return |
||||
} |
||||
wx.ajax({ |
||||
method: 'POST', |
||||
url: '?r=wtx/treatment/save-injection-info', |
||||
data: { |
||||
injectionWeight, |
||||
}, |
||||
}).then(() => { |
||||
wx.navigateBack() |
||||
}) |
||||
}, |
||||
}) |
||||
|
||||
export {} |
@ -0,0 +1,71 @@
@@ -0,0 +1,71 @@
|
||||
<view class="page-tip">此信息仅供参考,请以实际临床医生的专业意见为准</view> |
||||
<view class="page"> |
||||
<view class="container"> |
||||
<view class="title">BBM-H901输注信息</view> |
||||
<view class="card"> |
||||
<view class="row"> |
||||
<view class="label">输注时间</view> |
||||
<view class="r-container"> |
||||
<view class="picker"> |
||||
<view class="picker-content"> |
||||
<view class="content" data-place="--">{{injectionDate}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">体重</view> |
||||
<view class="r-container"> |
||||
<view class="columns"> |
||||
<input |
||||
disabled |
||||
class="input" |
||||
model:value="{{injectionWeight}}" |
||||
type="digit" |
||||
placeholder-class="input-place" |
||||
placeholder="请输入" |
||||
bindblur="handleWeight" |
||||
/> |
||||
<view class="sub">KG</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="body"> |
||||
<view class="row"> |
||||
<view class="label">用药体积</view> |
||||
<view class="r-container"> |
||||
<view class="columns"> |
||||
<input |
||||
class="input" |
||||
disabled |
||||
value="{{injectionDrugs}}" |
||||
type="number" |
||||
placeholder-class="input-place" |
||||
type="" |
||||
placeholder="--" |
||||
/> |
||||
<view class="sub">ml</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">预计瓶数</view> |
||||
<view class="r-container"> |
||||
<view class="columns"> |
||||
<input |
||||
class="input" |
||||
disabled |
||||
value="{{injectionNum}}" |
||||
type="number" |
||||
placeholder-class="input-place" |
||||
type="" |
||||
placeholder="--" |
||||
/> |
||||
<view class="sub">瓶</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
{ |
||||
"navigationBarTitleText": "出血管理", |
||||
"usingComponents": {} |
||||
} |
@ -0,0 +1,154 @@
@@ -0,0 +1,154 @@
|
||||
page { |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
.page { |
||||
padding-bottom: 200rpx; |
||||
.header { |
||||
padding: 16rpx 32rpx 32rpx; |
||||
background-color: #fff; |
||||
border-radius: 24rpx; |
||||
.label { |
||||
font-size: 32rpx; |
||||
color: rgba(0, 0, 0, 1); |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 12rpx; |
||||
.icon { |
||||
flex-shrink: 0; |
||||
width: 48rpx; |
||||
height: 48rpx; |
||||
} |
||||
} |
||||
.range { |
||||
margin-top: 24rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 18rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(207, 209, 213, 1); |
||||
.picker { |
||||
flex: 1; |
||||
.picker-content { |
||||
padding: 22rpx 32rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
border-radius: 12rpx; |
||||
.content { |
||||
flex: 1; |
||||
font-size: 28rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
&:empty::after { |
||||
content: attr(data-place); |
||||
color: rgba(161, 164, 172, 0.5); |
||||
} |
||||
} |
||||
.tril { |
||||
width: 0; |
||||
height: 0; |
||||
border-style: solid; |
||||
border-width: 12rpx 12rpx 0 12rpx; |
||||
border-color: rgba(207, 209, 213, 1) transparent transparent transparent; |
||||
} |
||||
} |
||||
} |
||||
.clear { |
||||
flex-shrink: 0; |
||||
font-size: 28rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 12rpx; |
||||
.icon { |
||||
width: 36rpx; |
||||
height: 36rpx; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.list { |
||||
padding: 0 32rpx; |
||||
margin-top: 32rpx; |
||||
.list-item { |
||||
display: flex; |
||||
gap: 16rpx; |
||||
.aside { |
||||
display: flex; |
||||
align-items: center; |
||||
flex-direction: column; |
||||
gap: 16rpx; |
||||
.order { |
||||
margin-top: 8rpx; |
||||
width: 16rpx; |
||||
height: 16rpx; |
||||
border-radius: 50%; |
||||
background-clip: content-box; |
||||
background-color: rgba(28, 107, 255, 1); |
||||
border: 4rpx solid rgba(28, 107, 255, 0.3); |
||||
} |
||||
.line { |
||||
flex: 1; |
||||
border-right: 1px dashed rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
.container { |
||||
flex: 1; |
||||
padding-bottom: 16rpx; |
||||
.date { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
font-weight: bold; |
||||
padding-bottom: 16rpx; |
||||
} |
||||
.wrap { |
||||
padding: 0 32rpx; |
||||
background-color: #fff; |
||||
border-radius: 24rpx; |
||||
.row { |
||||
padding: 32rpx; |
||||
display: flex; |
||||
gap: 16rpx; |
||||
border-bottom: 1px solid rgba(247, 247, 250, 1); |
||||
.label { |
||||
font-size: 32rpx; |
||||
color: rgba(137, 141, 151, 1); |
||||
} |
||||
.content { |
||||
flex: 1; |
||||
width: 5em; |
||||
font-size: 32rpx; |
||||
color: rgba(0, 0, 0, 1); |
||||
display: flex; |
||||
gap: 10rpx; |
||||
flex-wrap: wrap; |
||||
} |
||||
} |
||||
.row-resver { |
||||
padding: 32rpx; |
||||
.label { |
||||
width: 7em; |
||||
font-size: 32rpx; |
||||
color: rgba(137, 141, 151, 1); |
||||
} |
||||
.content { |
||||
margin-top: 24rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(0, 0, 0, 1); |
||||
line-height: 48rpx; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.add { |
||||
position: fixed; |
||||
left: 50%; |
||||
bottom: 142rpx; |
||||
transform: translateX(-50%); |
||||
width: 156rpx; |
||||
height: 156rpx; |
||||
border-radius: 50%; |
||||
box-shadow: 0 20rpx 30rpx #f0b4af; |
||||
} |
||||
} |
@ -0,0 +1,84 @@
@@ -0,0 +1,84 @@
|
||||
const app = getApp<IAppOption>() |
||||
|
||||
Page({ |
||||
data: { |
||||
patientId: '', |
||||
|
||||
beginDate: '', |
||||
endDate: '', |
||||
|
||||
list: [] as any[], |
||||
total: 0, |
||||
pagination: { |
||||
page: 1, |
||||
pages: 1, |
||||
count: 1, |
||||
}, |
||||
}, |
||||
onLoad(options) { |
||||
this.setData({ |
||||
patientId: options.id || '', |
||||
}) |
||||
}, |
||||
onShow() { |
||||
app.waitLogin({ type: 2 }).then(() => { |
||||
this.getList() |
||||
}) |
||||
}, |
||||
handleClear() { |
||||
this.setData({ |
||||
beginDate: '', |
||||
endDate: '', |
||||
}) |
||||
this.getList(1) |
||||
}, |
||||
handleChange() { |
||||
const { beginDate, endDate } = this.data |
||||
if (beginDate && endDate) { |
||||
this.getList(1) |
||||
} |
||||
}, |
||||
getList(newPage = 1) { |
||||
const { beginDate, endDate } = this.data |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/treatment/get-bleeding-list', |
||||
data: { |
||||
page: newPage, |
||||
beginDate, |
||||
endDate, |
||||
patientId: this.data.patientId, |
||||
}, |
||||
}).then((res) => { |
||||
const list = res.page === 1 ? res.list : [...this.data.list, ...res.list] |
||||
this.setData({ |
||||
total: res.count, |
||||
list, |
||||
pagination: { |
||||
page: res.page, |
||||
pages: res.pages, |
||||
count: res.count, |
||||
}, |
||||
}) |
||||
}) |
||||
}, |
||||
onReachBottom() { |
||||
const { page, pages } = this.data.pagination |
||||
if (pages > page) { |
||||
this.getList(page + 1) |
||||
} |
||||
}, |
||||
handleEdit(e) { |
||||
const { id } = e.currentTarget.dataset |
||||
wx.navigateTo({ |
||||
url: `/patient/pages/bloodDetail/index?id=${id}`, |
||||
}) |
||||
}, |
||||
handleAdd() { |
||||
wx.navigateTo({ |
||||
url: '/patient/pages/bloodAdd/index', |
||||
}) |
||||
}, |
||||
}) |
||||
|
||||
export {} |
@ -0,0 +1,49 @@
@@ -0,0 +1,49 @@
|
||||
<view class="page"> |
||||
<view class="header"> |
||||
<view class="range"> |
||||
<picker class="picker" mode="date" end="{{endDate}}" model:value="{{beginDate}}" bind:change="handleChange"> |
||||
<view class="picker-content"> |
||||
<view class="content" data-place="开始时间">{{beginDate}}</view> |
||||
<view class="tril"></view> |
||||
</view> |
||||
</picker> |
||||
至 |
||||
<picker class="picker" mode="date" start="{{beginDate}}" model:value="{{endDate}}" bind:change="handleChange"> |
||||
<view class="picker-content"> |
||||
<view class="content" data-place="结束时间">{{endDate}}</view> |
||||
<view class="tril"></view> |
||||
</view> |
||||
</picker> |
||||
<view class="clear" catchtap="handleClear"> |
||||
<image class="icon" src="{{imageUrl}}icon98.png?t={{Timestamp}}"></image> |
||||
重选 |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="list"> |
||||
<view class="list-item" wx:for="{{list}}" wx:key="recordId" bind:tap="handleEdit" data-id="{{item.recordId}}"> |
||||
<view class="aside"> |
||||
<view class="order"></view> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="date">{{item.bleedingDate}}</view> |
||||
<view class="wrap"> |
||||
<view class="row"> |
||||
<view class="label">出血关节</view> |
||||
<view class="content"> |
||||
<view wx:for="{{item.bleedingPartList}}" wx:for-item="subItem" wx:key="bleedingId"> |
||||
{{subItem.bleedingPartName}} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row-resver" wx:if="{{item.remark}}"> |
||||
<view class="label">其他情况备注</view> |
||||
<view class="content">{{item.remark}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<pagination pagination="{{pagination}}"></pagination> |
||||
</view> |
||||
</view> |
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
{ |
||||
"navigationBarTitleText": "病史信息", |
||||
"usingComponents": {} |
||||
} |
@ -0,0 +1,99 @@
@@ -0,0 +1,99 @@
|
||||
page { |
||||
background-color: rgba(246, 246, 246, 1); |
||||
} |
||||
|
||||
.page { |
||||
padding: 32rpx 40rpx; |
||||
.container1 { |
||||
padding: 8rpx 0 0; |
||||
.c1_card1 { |
||||
margin-top: 24rpx; |
||||
padding: 16rpx 32rpx; |
||||
background: linear-gradient(180deg, #fffaf9 0%, #ffffff 14%, #ffffff 100%); |
||||
border-radius: 24rpx 24rpx 24rpx 24rpx; |
||||
border: 2rpx solid #ffffff; |
||||
.row { |
||||
padding: 16rpx 0; |
||||
display: flex; |
||||
gap: 32rpx; |
||||
.label { |
||||
width: 6em; |
||||
font-size: 32rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.content { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
} |
||||
.c1_card2 { |
||||
margin-top: 24rpx; |
||||
padding: 0 32rpx; |
||||
background: linear-gradient(180deg, #fffaf9 0%, #ffffff 14%, #ffffff 100%); |
||||
border-radius: 24rpx 24rpx 24rpx 24rpx; |
||||
border: 2rpx solid #ffffff; |
||||
.row { |
||||
padding: 32rpx 0; |
||||
border-bottom: 1px solid rgba(247, 247, 250, 1); |
||||
.wrap { |
||||
display: flex; |
||||
gap: 32rpx; |
||||
.label { |
||||
flex-shrink: 0; |
||||
width: 9em; |
||||
font-size: 32rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.content { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
display: flex; |
||||
gap: 10rpx; |
||||
flex-wrap: wrap; |
||||
} |
||||
} |
||||
.remark { |
||||
margin-top: 24rpx; |
||||
padding: 22rpx 32rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
border-radius: 12rpx; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
} |
||||
.row1 { |
||||
padding: 32rpx 0; |
||||
border-bottom: 1px solid rgba(247, 247, 250, 1); |
||||
.wrap { |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 32rpx; |
||||
.label { |
||||
flex-shrink: 0; |
||||
width: 11em; |
||||
font-size: 32rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.line { |
||||
width: 1px; |
||||
height: 88rpx; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
.content { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
.remark { |
||||
margin-top: 24rpx; |
||||
padding: 22rpx 32rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
border-radius: 12rpx; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
|
||||
const app = getApp<IAppOption>() |
||||
|
||||
Page({ |
||||
data: { |
||||
medical: { |
||||
lastBleedingInfo: { |
||||
bleedingPartList: [], |
||||
}, |
||||
}, |
||||
}, |
||||
onLoad(options) { |
||||
console.log("DEBUGPRINT[122]: index.ts:11: options=", options) |
||||
app.waitLogin({ type: 2 }).then(() => { |
||||
this.getDetail(options.id) |
||||
}) |
||||
}, |
||||
getDetail(patientId: string) { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/treatment/get-medical-history-info', |
||||
data: { |
||||
patientId, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
medical: res, |
||||
}) |
||||
}) |
||||
}, |
||||
}) |
||||
|
||||
export {} |
@ -0,0 +1,95 @@
@@ -0,0 +1,95 @@
|
||||
<view class="page"> |
||||
<view class="container1"> |
||||
<view class="c1_card1"> |
||||
<view class="row"> |
||||
<view class="label">出生年月</view> |
||||
<view class="content">{{medical.birthMonth}}({{medical.ageYear}}岁)</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">确诊时间</view> |
||||
<view class="content"> |
||||
{{medical.diagnosisTime || '未填写'}} |
||||
<block wx:if="{{medical.diagnosisAge}}">({{medical.diagnosisAge}})</block> |
||||
</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">您的体重</view> |
||||
<view class="content" wx:if="{{medical.weight}}">{{medical.weight}} kg</view> |
||||
<div class="content" wx:else>未填写</div> |
||||
</view> |
||||
</view> |
||||
<view class="c1_card1"> |
||||
<view class="row"> |
||||
<view class="label">凝血因子</view> |
||||
<view class="content" wx:if="{{medical.clottingFactor}}">{{medical.clottingFactor}}%</view> |
||||
<view class="content" wx:else>未填写</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">治疗方案</view> |
||||
<view class="content">{{medical.treatmentPlanName || '未填写'}}</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">FIX暴露日</view> |
||||
<view class="content" wx:if="{{medical.fixExposureDay}}">{{medical.fixExposureDay}}个</view> |
||||
<view class="content" wx:else>未填写</view> |
||||
</view> |
||||
</view> |
||||
<view class="c1_card2"> |
||||
<view class="row"> |
||||
<view class="wrap"> |
||||
<view class="label">既往FIX抑制物病史</view> |
||||
<view class="content">{{medical.beforeFixHistoryName || '未填写'}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="wrap"> |
||||
<view class="label">既往肝脏疾病病史</view> |
||||
<view class="content">{{medical.beforeLiverHistoryName || '未填写'}}</view> |
||||
</view> |
||||
<view class="remark" wx:if="{{medical.liverRecord}}">{{medical.liverRecord}}</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="wrap"> |
||||
<view class="label">您是否有饮酒史</view> |
||||
<view class="content">{{medical.drinkingHistoryName || '未填写'}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="wrap"> |
||||
<view class="label">您是否有过敏史</view> |
||||
<view class="content">{{medical.allergyHistoryName || '未填写'}}</view> |
||||
</view> |
||||
<view class="remark" wx:if="{{medical.allergyRecord}}">{{medical.allergyRecord}}</view> |
||||
</view> |
||||
<view class="row1"> |
||||
<view class="wrap"> |
||||
<view class="label"> |
||||
<view>您是否可能存在不适合</view> |
||||
<view>使用糖皮质激素的情况?</view> |
||||
</view> |
||||
<view class="line"></view> |
||||
<view class="content">{{medical.isNotGlucocorticoidName || '未填写'}}</view> |
||||
</view> |
||||
<view class="remark" wx:if="{{medical.medicalHistoryInfo}}">{{medical.medicalHistoryInfo}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="c1_card2"> |
||||
<view class="row"> |
||||
<view class="wrap"> |
||||
<view class="label" style="width: 4em">靶关节</view> |
||||
<view class="content"> |
||||
<view wx:for="{{medical.lastBleedingInfo.bleedingPartList}}" wx:key="bleedingId"> |
||||
{{item.bleedingPartName}} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="wrap"> |
||||
<view class="label">最近6个月出血</view> |
||||
</view> |
||||
<view class="remark" wx:if="{{medical.lastBleedingInfo.remark}}">{{medical.lastBleedingInfo.remark}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
{ |
||||
"navigationStyle": "custom", |
||||
"usingComponents": { |
||||
"navbar": "/components/navbar/index", |
||||
"popup": "/components/popup/index" |
||||
} |
||||
} |
@ -0,0 +1,243 @@
@@ -0,0 +1,243 @@
|
||||
.page { |
||||
height: 100vh; |
||||
display: flex; |
||||
flex-direction: column; |
||||
.pgae-header { |
||||
flex-shrink: 0; |
||||
padding: 0 40rpx 38rpx; |
||||
background: linear-gradient(180deg, rgba(241, 251, 251, 0.70) 0%, #ffffff 100%); |
||||
box-shadow: 0rpx 8rpx 8rpx 0rpx rgba(0, 0, 0, 0.07); |
||||
border-radius: 0rpx 0rpx 0rpx 0rpx; |
||||
.title { |
||||
font-size: 40rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
font-weight: bold; |
||||
} |
||||
.content { |
||||
margin-top: 6rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
.page-container { |
||||
flex: 1; |
||||
.swiper { |
||||
height: 100%; |
||||
.swiper-item { |
||||
position: relative; |
||||
.scroll-view { |
||||
height: 100%; |
||||
.scroll-view-container { |
||||
height: 100%; |
||||
padding: 88rpx 40rpx 0; |
||||
box-sizing: border-box; |
||||
display: flex; |
||||
flex-direction: column; |
||||
.row { |
||||
flex-shrink: 0; |
||||
display: flex; |
||||
gap: 24rpx; |
||||
.aside { |
||||
flex-shrink: 0; |
||||
width: 64rpx; |
||||
display: flex; |
||||
flex-direction: column; |
||||
align-items: center; |
||||
.num { |
||||
width: 64rpx; |
||||
height: 64rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
font-size: 38rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
background: linear-gradient( 356deg, #1D6BFF 0%, #4F8DFF 100%); |
||||
box-shadow: 0rpx 13rpx 26rpx 0rpx rgba(151, 151, 151, 0.05); |
||||
border-radius: 50%; |
||||
} |
||||
.radio { |
||||
width: 48rpx; |
||||
height: 48rpx; |
||||
} |
||||
.slow-line { |
||||
height: 32rpx; |
||||
width: 4rpx; |
||||
background-color: rgba(28, 107, 255, 1); |
||||
} |
||||
.line { |
||||
flex: 1; |
||||
width: 4rpx; |
||||
background-color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
.container { |
||||
padding-bottom: 84rpx; |
||||
.c-header { |
||||
.title { |
||||
font-size: 44rpx; |
||||
color: rgba(28, 107, 255, 1); |
||||
line-height: 64rpx; |
||||
font-weight: bold; |
||||
} |
||||
.content { |
||||
margin-top: 20rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
line-height: 40rpx; |
||||
} |
||||
} |
||||
.c-body { |
||||
padding: 18rpx 42rpx; |
||||
min-height: 104rpx; |
||||
box-sizing: border-box; |
||||
background: #ffffff; |
||||
border-radius: 96rpx 96rpx 96rpx 96rpx; |
||||
border: 4rpx solid rgba(28, 107, 255, 1); |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 32rpx; |
||||
.wrap { |
||||
.content { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
font-weight: bold; |
||||
display: flex; |
||||
align-items: center; |
||||
.feel { |
||||
margin: -20rpx 0; |
||||
width: 96rpx; |
||||
height: 96rpx; |
||||
} |
||||
} |
||||
.hostipl-name { |
||||
margin-top: 4rpx; |
||||
padding-left: 28rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
line-height: 40rpx; |
||||
} |
||||
} |
||||
.icon { |
||||
flex-shrink: 0; |
||||
width: 40rpx; |
||||
height: 40rpx; |
||||
} |
||||
.status-icon { |
||||
position: relative; |
||||
width: 80rpx; |
||||
height: 40rpx; |
||||
.s-icon { |
||||
position: absolute; |
||||
top: 50%; |
||||
left: 0; |
||||
transform: translateY(-50%); |
||||
width: 100rpx; |
||||
height: 100rpx; |
||||
} |
||||
} |
||||
} |
||||
.c-footer { |
||||
margin-top: 16rpx; |
||||
margin-bottom: -40rpx; |
||||
padding-left: 44rpx; |
||||
.content { |
||||
font-size: 28rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.bind-doctor { |
||||
font-size: 28rpx; |
||||
color: rgba(28, 107, 255, 1); |
||||
line-height: 40rpx; |
||||
} |
||||
.inhibitors-content { |
||||
font-size: 28rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
.green { |
||||
color: rgba(53, 177, 63, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.row:first-of-type { |
||||
.container { |
||||
padding-bottom: 48rpx; |
||||
} |
||||
} |
||||
.next { |
||||
padding: 34rpx; |
||||
width: 472rpx; |
||||
height: 104rpx; |
||||
font-size: 36rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
font-weight: bold; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
gap: 32rpx; |
||||
background: linear-gradient( 356deg, #1D6BFF 0%, #4F8DFF 100%); |
||||
box-shadow: 0rpx 8rpx 16rpx 0rpx rgba(151, 151, 151, 0.05); |
||||
border-radius: 112rpx 112rpx 112rpx 112rpx; |
||||
box-sizing: border-box; |
||||
.icon { |
||||
width: 48rpx; |
||||
height: 48rpx; |
||||
} |
||||
} |
||||
.grow-row { |
||||
flex: 1; |
||||
min-height: 80rpx; |
||||
display: flex; |
||||
gap: 24rpx; |
||||
.aside { |
||||
flex-shrink: 0; |
||||
width: 64rpx; |
||||
display: flex; |
||||
flex-direction: column; |
||||
align-items: center; |
||||
.line { |
||||
flex: 1; |
||||
width: 4rpx; |
||||
background-color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.guide1 { |
||||
position: fixed; |
||||
z-index: 10; |
||||
top: 640rpx; |
||||
right: 86rpx; |
||||
width: 172rpx; |
||||
height: 256rpx; |
||||
} |
||||
.guide2 { |
||||
position: fixed; |
||||
z-index: 10; |
||||
top: 660rpx; |
||||
right: 86rpx; |
||||
width: 172rpx; |
||||
height: 256rpx; |
||||
} |
||||
.guide3 { |
||||
position: fixed; |
||||
z-index: 10; |
||||
top: 620rpx; |
||||
right: 86rpx; |
||||
width: 172rpx; |
||||
height: 256rpx; |
||||
} |
||||
.guide4 { |
||||
position: fixed; |
||||
z-index: 10; |
||||
top: 620rpx; |
||||
right: 86rpx; |
||||
width: 172rpx; |
||||
height: 256rpx; |
||||
} |
@ -0,0 +1,204 @@
@@ -0,0 +1,204 @@
|
||||
const app = getApp<IAppOption>() |
||||
|
||||
Page({ |
||||
data: { |
||||
popupShow: false, |
||||
// popupType: 'selectStatus',
|
||||
// popupType: 'selectStatusComplete',
|
||||
// popupType: 'TCenter', // 诊疗中心
|
||||
popupType: 'TCenterEnd', // 诊疗中心完成
|
||||
popupParams: { |
||||
// position: 'bottom',
|
||||
}, |
||||
|
||||
current: 0, |
||||
patientId: '', |
||||
patientInfo: {}, |
||||
|
||||
periodInfo1: {} as any, |
||||
periodInfo2: {} as any, |
||||
periodInfo3: {} as any, |
||||
periodInfo4: { followUpWeekInfo: {} } as any, |
||||
}, |
||||
onLoad(options) { |
||||
this.setData({ |
||||
current: Number(options.current), |
||||
patientId: options.id, |
||||
}) |
||||
}, |
||||
onShow() { |
||||
app.waitLogin({ type: 2 }).then(() => { |
||||
this.handleUpdate() |
||||
this.getDetail() |
||||
}) |
||||
}, |
||||
getDetail() { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/patient/get-detail', |
||||
data: { |
||||
patientId: this.data.patientId, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
patientInfo: { |
||||
...res.patientInfo, |
||||
}, |
||||
}) |
||||
}) |
||||
}, |
||||
handleUpdate() { |
||||
this.getPeriodInfo(this.data.current + 1, `periodInfo${this.data.current + 1}`) |
||||
}, |
||||
getPeriodInfo(period: number, key: string) { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/treatment/get-period-info', |
||||
data: { |
||||
period, |
||||
patientId: this.data.patientId, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
[key]: res, |
||||
}) |
||||
}) |
||||
}, |
||||
handleSwiperChange(e) { |
||||
this.setData({ |
||||
current: e.detail.current, |
||||
}) |
||||
this.handleUpdate() |
||||
}, |
||||
handleSelectHostipal() { |
||||
const { periodInfo1 } = this.data |
||||
wx.navigateTo({ |
||||
url: `/doctor/pages/courseHostipal/index?id=${periodInfo1.hospitalId}`, |
||||
}) |
||||
}, |
||||
handleCasesAdd() { |
||||
wx.navigateTo({ |
||||
url: `/doctor/pages/casesDetail/index?id=${this.data.patientId}`, |
||||
}) |
||||
}, |
||||
handleCheckRedGreen() { |
||||
this.setData({ |
||||
popupShow: true, |
||||
popupType: 'selectStatus', |
||||
popupParams: { position: 'bottom' }, |
||||
}) |
||||
}, |
||||
handleTCenter() { |
||||
const { periodInfo2 } = this.data |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/common/get-treatment-center-list', |
||||
data: { |
||||
patientId: this.data.patientId, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
popupShow: true, |
||||
popupType: 'TCenter', |
||||
popupParams: { |
||||
hospitalId: periodInfo2.hospitalId, |
||||
list: res, |
||||
}, |
||||
}) |
||||
}) |
||||
}, |
||||
handlePreDiagnosisReport(e: any) { |
||||
const { period } = e.currentTarget.dataset |
||||
const { examId } = this.data[`periodInfo${period}`] |
||||
wx.navigateTo({ |
||||
url: `/doctor/pages/preDiagnosisReport/index?examid=${examId}&period=${period}&id=${this.data.patientId}`, |
||||
}) |
||||
}, |
||||
handleAavReport() { |
||||
wx.navigateTo({ |
||||
url: '/patient/pages/aavReport/index', |
||||
}) |
||||
}, |
||||
handleBbmReport() { |
||||
wx.navigateTo({ |
||||
url: `/doctor/pages/bbmReport/index?id=${this.data.patientId}`, |
||||
}) |
||||
}, |
||||
handleBbmRemark() { |
||||
wx.navigateTo({ |
||||
url: `/doctor/pages/bbmRemark/index?id=${this.data.patientId}`, |
||||
}) |
||||
}, |
||||
hadnleInjectDate() { |
||||
wx.navigateTo({ |
||||
url: '/patient/pages/injectDate/index', |
||||
}) |
||||
}, |
||||
handleInhibitorsManage(e: any) { |
||||
const { period } = e.currentTarget.dataset |
||||
wx.navigateTo({ |
||||
url: `/doctor/pages/inhibitorsManageList/index?period=${period}&id=${this.data.patientId}`, |
||||
}) |
||||
}, |
||||
handleFollowPlan() { |
||||
wx.navigateTo({ |
||||
url: '/doctor/pages/followPlan/index', |
||||
}) |
||||
}, |
||||
handleLastDiagnosisReport() { |
||||
wx.navigateTo({ |
||||
url: `/doctor/pages/revisitRecord/index?period=4&id=${this.data.patientId}`, |
||||
}) |
||||
}, |
||||
handleColtStat() { |
||||
wx.navigateTo({ |
||||
url: '/patient/pages/coltStat/index', |
||||
}) |
||||
}, |
||||
handleBlood() { |
||||
wx.navigateTo({ |
||||
url: `/doctor/pages/blood/index?id=${this.data.patientId}`, |
||||
}) |
||||
}, |
||||
handleNext() { |
||||
this.setData({ |
||||
current: this.data.current + 1, |
||||
}) |
||||
}, |
||||
handlePopupOk(e) { |
||||
const { popupType } = this.data |
||||
const { id } = e.detail |
||||
if (popupType === 'TCenter') { |
||||
wx.ajax({ |
||||
method: 'POST', |
||||
url: '?r=wtx/doctor/treatment/save-t-hospital', |
||||
data: { |
||||
hospitalId: id, |
||||
patientId: this.data.patientId, |
||||
}, |
||||
}).then(() => { |
||||
this.setData({ |
||||
popupShow: true, |
||||
popupType: 'TCenterEnd', |
||||
popupParams: { |
||||
close: true, |
||||
}, |
||||
}) |
||||
}) |
||||
} |
||||
}, |
||||
handlePopupCancel() { |
||||
const { popupType } = this.data |
||||
if (popupType === 'TCenterEnd') { |
||||
this.handleUpdate() |
||||
} |
||||
this.setData({ |
||||
popupShow: false, |
||||
}) |
||||
}, |
||||
handleBack() { |
||||
wx.navigateBack() |
||||
}, |
||||
}) |
||||
|
||||
export {} |
@ -0,0 +1,504 @@
@@ -0,0 +1,504 @@
|
||||
<page-meta page-style="{{ popupShow ? 'overflow: hidden;' : '' }}" /> |
||||
<navbar fixed custom-style="background:{{background}}" back> |
||||
<van-icon name="arrow-left" slot="left" size="18px" color="#000" bind:tap="handleBack" /> |
||||
</navbar> |
||||
<view class="page"> |
||||
<view class="pgae-header" style="padding-top:{{pageTop + 30}}px"> |
||||
<view class="title">{{patientInfo.patientName}}的专属诊疗流程</view> |
||||
<view class="content">从开始治疗到长期随访全周期流程</view> |
||||
</view> |
||||
<view class="page-container"> |
||||
<swiper class="swiper" current="{{current}}" vertical bindchange="handleSwiperChange"> |
||||
<!-- 阶段一 --> |
||||
<swiper-item class="swiper-item"> |
||||
<scroll-view class="scroll-view" scroll-y show-scrollbar="{{false}}"> |
||||
<view class="scroll-view-container"> |
||||
<view class="row"> |
||||
<view class="aside"> |
||||
<view class="num">1</view> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="title">准备您的诊前筛查</view> |
||||
<view class="content"> |
||||
<view>关注每次检查</view> |
||||
<view>是对自己和家人的关爱!</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row" bind:tap="handleSelectHostipal"> |
||||
<view class="aside"> |
||||
<view class="slow-line"></view> |
||||
<image |
||||
wx:if="{{periodInfo1.hospitalName}}" |
||||
class="radio" |
||||
src="{{imageUrl}}icon29.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-body"> |
||||
<view class="wrap"> |
||||
<view class="content">1.{{patientInfo.patientName}}诊前检查医院</view> |
||||
<view class="hostipl-name" wx:if="{{periodInfo1.hospitalName}}">{{periodInfo1.hospitalName}}</view> |
||||
</view> |
||||
<image class="icon" src="{{imageUrl}}icon108.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="c-footer"></view> |
||||
</view> |
||||
</view> |
||||
<view class="row" bind:tap="handleCasesAdd"> |
||||
<view class="aside"> |
||||
<view class="slow-line"></view> |
||||
<image |
||||
wx:if="{{periodInfo1.isMedicalHistory===1}}" |
||||
class="radio" |
||||
src="{{imageUrl}}icon29.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-body"> |
||||
<view class="wrap"> |
||||
<view class="content">2.病史信息</view> |
||||
</view> |
||||
<image class="icon" src="{{imageUrl}}icon108.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row" bind:tap="handlePreDiagnosisReport" data-period="1"> |
||||
<view class="aside"> |
||||
<view class="slow-line"></view> |
||||
<image |
||||
wx:if="{{periodInfo1.isExamReport===1}}" |
||||
class="radio" |
||||
src="{{imageUrl}}icon29.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-body"> |
||||
<view class="wrap"> |
||||
<view class="content">3.诊前检查</view> |
||||
</view> |
||||
<image class="icon" src="{{imageUrl}}icon108.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="next" bind:tap="handleNext"> |
||||
下一阶段 |
||||
<image class="icon" src="{{imageUrl}}icon109.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="grow-row"> |
||||
<view class="aside"> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"></view> |
||||
</view> |
||||
</view> |
||||
</scroll-view> |
||||
</swiper-item> |
||||
<!-- 阶段二 --> |
||||
<swiper-item class="swiper-item"> |
||||
<scroll-view class="scroll-view" scroll-y show-scrollbar="{{false}}"> |
||||
<view class="scroll-view-container"> |
||||
<view class="row"> |
||||
<view class="aside"> |
||||
<view class="num">2</view> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="title">基因治疗中心检查</view> |
||||
<view class="content"> |
||||
<view>做好每一步检查,</view> |
||||
<view>向美好生活继续迈进!</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row" bind:tap="handleTCenter"> |
||||
<view class="aside"> |
||||
<view class="slow-line"></view> |
||||
<image |
||||
wx:if="{{periodInfo2.hospitalName}}" |
||||
class="radio" |
||||
src="{{imageUrl}}icon29.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-body"> |
||||
<view class="wrap"> |
||||
<view class="content">1.治疗中心</view> |
||||
<view class="hostipl-name" wx:if="{{periodInfo2.hospitalName}}">{{periodInfo2.hospitalName}}</view> |
||||
</view> |
||||
<image class="icon" src="{{imageUrl}}icon108.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="c-footer"></view> |
||||
</view> |
||||
</view> |
||||
<view class="row" bind:tap="handlePreDiagnosisReport" data-period="2"> |
||||
<view class="aside"> |
||||
<view class="slow-line"></view> |
||||
<image |
||||
wx:if="{{periodInfo2.isExamReport===1}}" |
||||
class="radio" |
||||
src="{{imageUrl}}icon29.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-body"> |
||||
<view class="wrap"> |
||||
<view class="content">2.我的检查报告</view> |
||||
</view> |
||||
<image class="icon" src="{{imageUrl}}icon108.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="next" bind:tap="handleNext"> |
||||
下一阶段 |
||||
<image class="icon" src="{{imageUrl}}icon109.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="grow-row"> |
||||
<view class="aside"> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"></view> |
||||
</view> |
||||
</view> |
||||
</scroll-view> |
||||
</swiper-item> |
||||
<!-- 阶段三 --> |
||||
<swiper-item class="swiper-item"> |
||||
<scroll-view class="scroll-view" scroll-y show-scrollbar="{{false}}"> |
||||
<view class="scroll-view-container"> |
||||
<view class="row"> |
||||
<view class="aside"> |
||||
<view class="num">3</view> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="title">基因治疗-注射日</view> |
||||
<view class="content"> |
||||
<view>重要的日子,终于要来了~</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="aside"> |
||||
<view class="slow-line"></view> |
||||
<image |
||||
wx:if="{{periodInfo3.injectionDate}}" |
||||
class="radio" |
||||
src="{{imageUrl}}icon29.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-body"> |
||||
<view class="wrap"> |
||||
<view class="content">1.注射日</view> |
||||
<view class="hostipl-name" wx:if="{{periodInfo3.injectionDate}}"> |
||||
{{periodInfo3.injectionDate}} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row" bind:tap="handleInhibitorsManage" data-period="3"> |
||||
<view class="aside"> |
||||
<view class="slow-line"></view> |
||||
<image |
||||
wx:if="{{periodInfo3.immuneCount>0}}" |
||||
class="radio" |
||||
src="{{imageUrl}}icon29.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-body"> |
||||
<view class="wrap"> |
||||
<view class="content">2.免疫抑制剂使用记录</view> |
||||
</view> |
||||
<image class="icon" src="{{imageUrl}}icon108.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="c-footer"> |
||||
<view class="inhibitors-content" wx:if="{{periodInfo3.immuneCount>0}}"> |
||||
已记录 |
||||
<text class="green">{{periodInfo3.immuneCount}}</text> |
||||
次 |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row" bind:tap="handleBbmReport"> |
||||
<view class="aside"> |
||||
<view class="slow-line"></view> |
||||
<image |
||||
wx:if="{{periodInfo3.isInjection==1}}" |
||||
class="radio" |
||||
src="{{imageUrl}}icon29.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-body"> |
||||
<view class="wrap"> |
||||
<view class="content">3.BBM-H901输注记录</view> |
||||
</view> |
||||
<image class="icon" src="{{imageUrl}}icon108.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="c-footer"> |
||||
<view class="content" wx:if="{{periodInfo3.isInjection == 1}}">已完成</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row" bind:tap="handleBbmRemark"> |
||||
<view class="aside"> |
||||
<view class="slow-line"></view> |
||||
<image |
||||
wx:if="{{periodInfo3.isInjectionFeel==1}}" |
||||
class="radio" |
||||
src="{{imageUrl}}icon29.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-body"> |
||||
<view class="wrap"> |
||||
<view class="content"> |
||||
4.此次输注感受如何? |
||||
<image |
||||
wx:if="{{periodInfo3.injectionFeel==1}}" |
||||
class="feel" |
||||
src="{{imageUrl}}icon44.png?t={{Timestamp}}" |
||||
></image> |
||||
<image |
||||
wx:elif="{{periodInfo3.injectionFeel==2}}" |
||||
class="feel" |
||||
src="{{imageUrl}}icon42.png?t={{Timestamp}}" |
||||
></image> |
||||
<image |
||||
wx:elif="{{periodInfo3.injectionFeel==3}}" |
||||
class="feel" |
||||
src="{{imageUrl}}icon43.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wx:else class="feel" src="{{imageUrl}}icon49.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="next" bind:tap="handleNext"> |
||||
下一阶段 |
||||
<image class="icon" src="{{imageUrl}}icon109.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="grow-row"> |
||||
<view class="aside"> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"></view> |
||||
</view> |
||||
</view> |
||||
</scroll-view> |
||||
</swiper-item> |
||||
<!-- 阶段四 --> |
||||
<swiper-item class="swiper-item"> |
||||
<scroll-view class="scroll-view" scroll-y show-scrollbar="{{false}}"> |
||||
<view class="scroll-view-container"> |
||||
<view class="row"> |
||||
<view class="aside"> |
||||
<view class="num">4</view> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="title">长期随访</view> |
||||
<view class="content"> |
||||
<view>世界本该如此美好,现在也属于你</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row" bind:tap="handleFollowPlan"> |
||||
<view class="aside"> |
||||
<view class="slow-line"></view> |
||||
<image |
||||
wx:if="{{periodInfo4.isVisitFollowUp==1}}" |
||||
class="radio" |
||||
src="{{imageUrl}}icon29.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-body"> |
||||
<view class="wrap"> |
||||
<view class="content">1.查看患者随访计划</view> |
||||
</view> |
||||
<image class="icon" src="{{imageUrl}}icon108.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="c-footer"> |
||||
<view |
||||
class="content" |
||||
wx:if="{{periodInfo4.followUpWeekInfo.iYear || periodInfo4.followUpWeekInfo.iYearDay || periodInfo4.followUpWeekInfo.iWeek}}" |
||||
> |
||||
当前是注射后 |
||||
<block wx:if="{{periodInfo4.followUpWeekInfo.iYear}}"> |
||||
第{{periodInfo4.followUpWeekInfo.iYear}}年 |
||||
<block wx:if="{{periodInfo4.followUpWeekInfo.iYearDay}}"> |
||||
第{{periodInfo4.followUpWeekInfo.iYearDay}}天 |
||||
</block> |
||||
</block> |
||||
<block wx:if="{{periodInfo4.followUpWeekInfo.iWeek}}"> |
||||
第{{periodInfo4.followUpWeekInfo.iWeek}}周 |
||||
</block> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row" bind:tap="handleLastDiagnosisReport"> |
||||
<view class="aside"> |
||||
<view class="slow-line"></view> |
||||
<image |
||||
wx:if="{{periodInfo4.isRevisit==1}}" |
||||
class="radio" |
||||
src="{{imageUrl}}icon29.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-body"> |
||||
<view class="wrap"> |
||||
<view class="content">2.最新复诊检查记录</view> |
||||
</view> |
||||
<image class="icon" src="{{imageUrl}}icon108.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="c-footer" wx:if="{{periodInfo4.revisitDate}}"> |
||||
<view class="content">最近录入:{{periodInfo4.revisitDate}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row" bind:tap="handleColtStat"> |
||||
<view class="aside"> |
||||
<view class="slow-line"></view> |
||||
<image |
||||
wx:if="{{periodInfo4.isVisitHealthChange==1}}" |
||||
class="radio" |
||||
src="{{imageUrl}}icon29.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-body"> |
||||
<view class="wrap"> |
||||
<view class="content">3.查看患者健康变化</view> |
||||
</view> |
||||
<image class="icon" src="{{imageUrl}}icon108.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row" bind:tap="handleInhibitorsManage" data-period="4"> |
||||
<view class="aside"> |
||||
<view class="slow-line"></view> |
||||
<image |
||||
wx:if="{{periodInfo4.isImmune==1}}" |
||||
class="radio" |
||||
src="{{imageUrl}}icon29.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-body"> |
||||
<view class="wrap"> |
||||
<view class="content">4.免疫抑制剂记录</view> |
||||
</view> |
||||
<image class="icon" src="{{imageUrl}}icon108.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="c-footer" wx:if="{{periodInfo4.immuneDate}}"> |
||||
<view class="content">最近录入:{{periodInfo4.immuneDate}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row" bind:tap="handleBlood"> |
||||
<view class="aside"> |
||||
<view class="slow-line"></view> |
||||
<image |
||||
wx:if="{{periodInfo4.isBleed==1}}" |
||||
class="radio" |
||||
src="{{imageUrl}}icon29.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wx:else class="radio" src="{{imageUrl}}icon28.png?t={{Timestamp}}"></image> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-body"> |
||||
<view class="wrap"> |
||||
<view class="content">5.出血记录</view> |
||||
</view> |
||||
<image class="icon" src="{{imageUrl}}icon108.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="c-footer" wx:if="{{periodInfo4.bleedDate}}"> |
||||
<view class="content">最近录入:{{periodInfo4.bleedDate}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="grow-row"> |
||||
<view class="aside"> |
||||
<view class="line"></view> |
||||
</view> |
||||
<view class="container"></view> |
||||
</view> |
||||
</view> |
||||
</scroll-view> |
||||
</swiper-item> |
||||
</swiper> |
||||
</view> |
||||
</view> |
||||
|
||||
<image |
||||
class="guide1" |
||||
wx:if="{{current==0 && periodInfo1.isEnterPeriod==2}}" |
||||
src="{{imageUrl}}gif1.gif?t={{Timestamp}}" |
||||
></image> |
||||
<image |
||||
class="guide2" |
||||
wx:if="{{current==1 && periodInfo2.isEnterPeriod==2}}" |
||||
src="{{imageUrl}}gif1.gif?t={{Timestamp}}" |
||||
></image> |
||||
<image |
||||
class="guide3" |
||||
wx:if="{{current==2 && periodInfo3.isEnterPeriod==2}}" |
||||
src="{{imageUrl}}gif1.gif?t={{Timestamp}}" |
||||
></image> |
||||
<image |
||||
class="guide4" |
||||
wx:if="{{current==3 && periodInfo4.isEnterPeriod==2}}" |
||||
src="{{imageUrl}}gif1.gif?t={{Timestamp}}" |
||||
></image> |
||||
|
||||
<popup |
||||
show="{{popupShow}}" |
||||
type="{{popupType}}" |
||||
params="{{popupParams}}" |
||||
bind:ok="handlePopupOk" |
||||
bind:cancel="handlePopupCancel" |
||||
></popup> |
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
{ |
||||
"navigationBarTitleText": "诊前检查医院", |
||||
"usingComponents": {} |
||||
} |
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
page { |
||||
background-color: rgba(246, 246, 246, 1); |
||||
} |
||||
|
||||
.page { |
||||
padding: 154rpx 40rpx; |
||||
.card { |
||||
position: relative; |
||||
background-color: #fff; |
||||
padding: 118rpx 40rpx 50rpx; |
||||
border-radius: 24rpx; |
||||
.c-img { |
||||
position: absolute; |
||||
top: -68rpx; |
||||
left: 50%; |
||||
transform: translateX(-50%); |
||||
width: 137rpx; |
||||
height: 137rpx; |
||||
border: 16rpx solid #fff; |
||||
border-radius: 14rpx; |
||||
} |
||||
.title { |
||||
text-align: center; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
font-weight: bold; |
||||
line-height: 36rpx; |
||||
.tag { |
||||
display: inline-block; |
||||
font-size: 22rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
background-color: rgba(255, 186, 1, 1); |
||||
border-radius: 8rpx; |
||||
padding: 0 10rpx; |
||||
} |
||||
} |
||||
.site { |
||||
margin-top: 28rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
text-align: center; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,27 @@
@@ -0,0 +1,27 @@
|
||||
const app = getApp<IAppOption>() |
||||
|
||||
Page({ |
||||
data: { |
||||
detail: {} as any, |
||||
}, |
||||
onLoad(options: any) { |
||||
app.waitLogin({ type: 2 }).then(() => { |
||||
this.getDetail(options.id) |
||||
}) |
||||
}, |
||||
getDetail(id: string) { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/treatment/get-hospital', |
||||
data: { |
||||
hospitalId: id, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
detail: res, |
||||
}) |
||||
}) |
||||
}, |
||||
}) |
||||
|
||||
export {} |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
<view class="page"> |
||||
<view class="card"> |
||||
<image class="c-img" src="{{detail.hospitalImg}}"></image> |
||||
<view class="title"> |
||||
{{detail.hospitalName}} |
||||
<view class="tag">{{detail.hospitalClassificationName}}{{detail.hospitalLevelName}}</view> |
||||
</view> |
||||
<view class="site">{{detail.provinceName}}{{detail.cityName}}{{detail.countyName}}{{detail.address}}</view> |
||||
</view> |
||||
</view> |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
{ |
||||
"navigationStyle": "custom", |
||||
"usingComponents": { |
||||
"navbar": "/components/navbar/index", |
||||
"calendar": "/components/calendar/index" |
||||
} |
||||
} |
@ -0,0 +1,607 @@
@@ -0,0 +1,607 @@
|
||||
page { |
||||
background-color: rgba(246, 246, 246, 1); |
||||
} |
||||
.page { |
||||
padding: 40rpx 40rpx 200rpx; |
||||
.user { |
||||
padding-top: 34rpx; |
||||
display: flex; |
||||
.avatar { |
||||
flex-shrink: 0; |
||||
width: 108rpx; |
||||
height: 108rpx; |
||||
border: 2px solid #fff; |
||||
border-radius: 50%; |
||||
box-shadow: 0rpx 8rpx 16rpx 0rpx rgba(0, 0, 0, 0.16); |
||||
.a-img { |
||||
width: 100%; |
||||
height: 100%; |
||||
border-radius: inherit; |
||||
} |
||||
} |
||||
.wrap { |
||||
padding-left: 20rpx; |
||||
flex: 1; |
||||
.w-header { |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 16rpx; |
||||
.name { |
||||
font-size: 36rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
font-weight: bold; |
||||
} |
||||
.age { |
||||
padding: 0 14rpx; |
||||
border-radius: 20rpx; |
||||
background-color: rgba(32, 196, 255, 1); |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 6rpx; |
||||
font-size: 24rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
line-height: 32rpx; |
||||
.icon { |
||||
width: 28rpx; |
||||
height: 28rpx; |
||||
} |
||||
} |
||||
.site { |
||||
padding: 0 14rpx; |
||||
border-radius: 20rpx; |
||||
background-color: rgba(248, 166, 133, 1); |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 6rpx; |
||||
font-size: 24rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
line-height: 32rpx; |
||||
.icon { |
||||
width: 28rpx; |
||||
height: 28rpx; |
||||
} |
||||
} |
||||
} |
||||
.w-footer { |
||||
margin-top: 18rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
.info { |
||||
font-size: 28rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.more { |
||||
font-size: 28rpx; |
||||
color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.navbar { |
||||
margin-top: 28rpx; |
||||
padding: 8rpx; |
||||
border-radius: 112rpx; |
||||
background-color: #fff; |
||||
border: 2rpx solid #f6f6f6; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
.nav { |
||||
flex: 1; |
||||
text-align: center; |
||||
line-height: 68rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(137, 141, 151, 1); |
||||
&.active { |
||||
background-color: rgba(28, 107, 255, 1); |
||||
color: #fff; |
||||
border-radius: 112rpx; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.container0 { |
||||
padding: 8rpx 0 0; |
||||
.none { |
||||
display: block; |
||||
margin: 30rpx auto; |
||||
width: 80%; |
||||
} |
||||
.card1 { |
||||
margin-top: 24rpx; |
||||
border-radius: 24rpx 24rpx 24rpx 24rpx; |
||||
border: 2rpx solid #ffffff; |
||||
background: linear-gradient(346deg, #ffffff 0%, #ffffff 85%, #e6efff 100%); |
||||
padding-bottom: 32rpx; |
||||
.c-header { |
||||
padding: 32rpx 16rpx 0 0; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
.left { |
||||
flex: 1; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
gap: 16rpx; |
||||
.title { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
font-weight: bold; |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 22rpx; |
||||
&::before { |
||||
content: ''; |
||||
width: 8rpx; |
||||
height: 32rpx; |
||||
border-radius: 0 32rpx 32rpx 0; |
||||
background: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
.fold-icon { |
||||
width: 60rpx; |
||||
height: 60rpx; |
||||
transition: all 0.3s ease; |
||||
transform: rotate(0); |
||||
&.trun { |
||||
transform: rotate(-180deg); |
||||
} |
||||
} |
||||
} |
||||
.btn { |
||||
padding: 8rpx 32rpx; |
||||
font-size: 32rpx; |
||||
line-height: 40rpx; |
||||
color: #fff; |
||||
text-align: center; |
||||
background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%); |
||||
border-radius: 96rpx; |
||||
} |
||||
} |
||||
.fold { |
||||
transition: height 0.3s ease; |
||||
max-height: 0; |
||||
overflow: hidden; |
||||
} |
||||
.c-body { |
||||
margin: 24rpx 32rpx 0; |
||||
padding: 16rpx 32rpx; |
||||
background: #f6f6f6; |
||||
border-radius: 24rpx 24rpx 24rpx 24rpx; |
||||
position: relative; |
||||
|
||||
.status { |
||||
position: absolute; |
||||
width: 80rpx; |
||||
height: 80rpx; |
||||
top: 12rpx; |
||||
right: 22rpx; |
||||
} |
||||
.row { |
||||
padding: 16rpx 0; |
||||
display: flex; |
||||
gap: 32rpx; |
||||
line-height: 56rpx; |
||||
.label { |
||||
flex-shrink: 0; |
||||
width: 4em; |
||||
font-size: 32rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.content { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
.detail { |
||||
padding: 16rpx; |
||||
font-size: 32rpx; |
||||
text-align: center; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
} |
||||
.more { |
||||
margin-top: 32rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(28, 107, 255, 1); |
||||
text-align: center; |
||||
} |
||||
} |
||||
.card2 { |
||||
margin-top: 24rpx; |
||||
border-radius: 24rpx 24rpx 24rpx 24rpx; |
||||
border: 2rpx solid #ffffff; |
||||
background: linear-gradient(346deg, #ffffff 0%, #ffffff 85%, #e6efff 100%); |
||||
padding-bottom: 32rpx; |
||||
.c-header { |
||||
padding: 32rpx 16rpx 0 0; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
.left { |
||||
flex: 1; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
gap: 16rpx; |
||||
.title { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
font-weight: bold; |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 22rpx; |
||||
&::before { |
||||
content: ''; |
||||
width: 8rpx; |
||||
height: 32rpx; |
||||
border-radius: 0 32rpx 32rpx 0; |
||||
background: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
.fold-icon { |
||||
width: 60rpx; |
||||
height: 60rpx; |
||||
transition: all 0.3s ease; |
||||
transform: rotate(0); |
||||
&.trun { |
||||
transform: rotate(-180deg); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.fold { |
||||
transition: height 0.3s ease; |
||||
max-height: 0; |
||||
overflow: hidden; |
||||
} |
||||
.c-body { |
||||
margin: 24rpx 32rpx 0; |
||||
padding: 16rpx 0 0; |
||||
background: #f6f6f6; |
||||
border-radius: 24rpx 24rpx 24rpx 24rpx; |
||||
position: relative; |
||||
|
||||
.row { |
||||
padding: 16rpx 32rpx; |
||||
display: flex; |
||||
gap: 32rpx; |
||||
line-height: 56rpx; |
||||
.label { |
||||
flex-shrink: 0; |
||||
width: 6em; |
||||
font-size: 32rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.content { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
.options { |
||||
display: flex; |
||||
align-items: center; |
||||
border-top: 1px solid rgba(232, 233, 237, 1); |
||||
.item { |
||||
flex: 1; |
||||
padding: 22rpx 0; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
font-size: 32rpx; |
||||
color: rgba(28, 107, 255, 1); |
||||
text-align: center; |
||||
&:first-of-type { |
||||
border-right: 1px solid rgba(232, 233, 237, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.card3, |
||||
.card4 { |
||||
margin-top: 24rpx; |
||||
border-radius: 24rpx 24rpx 24rpx 24rpx; |
||||
border: 2rpx solid #ffffff; |
||||
background: linear-gradient(346deg, #ffffff 0%, #ffffff 85%, #e6efff 100%); |
||||
padding-bottom: 32rpx; |
||||
.c-header { |
||||
padding: 32rpx 16rpx 0 0; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
.left { |
||||
flex: 1; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
gap: 16rpx; |
||||
.title { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
font-weight: bold; |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 22rpx; |
||||
&::before { |
||||
content: ''; |
||||
width: 8rpx; |
||||
height: 32rpx; |
||||
border-radius: 0 32rpx 32rpx 0; |
||||
background: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
.fold-icon { |
||||
width: 60rpx; |
||||
height: 60rpx; |
||||
transition: all 0.3s ease; |
||||
transform: rotate(0); |
||||
&.trun { |
||||
transform: rotate(-180deg); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.fold { |
||||
transition: height 0.3s ease; |
||||
max-height: 0; |
||||
overflow: hidden; |
||||
} |
||||
.c-body { |
||||
margin: 24rpx 32rpx 0; |
||||
padding: 16rpx 0 0; |
||||
background: #f6f6f6; |
||||
border-radius: 24rpx 24rpx 24rpx 24rpx; |
||||
position: relative; |
||||
|
||||
.row { |
||||
padding: 16rpx 32rpx; |
||||
display: flex; |
||||
gap: 32rpx; |
||||
line-height: 56rpx; |
||||
.label { |
||||
flex-shrink: 0; |
||||
width: 4em; |
||||
font-size: 32rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.content { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
.options { |
||||
display: flex; |
||||
align-items: center; |
||||
border-top: 1px solid rgba(232, 233, 237, 1); |
||||
.item { |
||||
flex: 1; |
||||
padding: 22rpx 0; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
font-size: 32rpx; |
||||
color: rgba(28, 107, 255, 1); |
||||
text-align: center; |
||||
&:first-of-type { |
||||
border-right: 1px solid rgba(232, 233, 237, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.container1 { |
||||
padding: 8rpx 0 0; |
||||
.c1_card1 { |
||||
margin-top: 24rpx; |
||||
padding: 16rpx 32rpx; |
||||
background: linear-gradient(180deg, #fffaf9 0%, #ffffff 14%, #ffffff 100%); |
||||
border-radius: 24rpx 24rpx 24rpx 24rpx; |
||||
border: 2rpx solid #ffffff; |
||||
.row { |
||||
padding: 16rpx 0; |
||||
display: flex; |
||||
gap: 32rpx; |
||||
.label { |
||||
width: 6em; |
||||
font-size: 32rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.content { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
} |
||||
.c1_card2 { |
||||
margin-top: 24rpx; |
||||
padding: 0 32rpx; |
||||
background: linear-gradient(180deg, #fffaf9 0%, #ffffff 14%, #ffffff 100%); |
||||
border-radius: 24rpx 24rpx 24rpx 24rpx; |
||||
border: 2rpx solid #ffffff; |
||||
.row { |
||||
padding: 32rpx 0; |
||||
border-bottom: 1px solid rgba(247, 247, 250, 1); |
||||
.wrap { |
||||
display: flex; |
||||
gap: 32rpx; |
||||
.label { |
||||
flex-shrink: 0; |
||||
width: 9em; |
||||
font-size: 32rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.content { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
display: flex; |
||||
gap: 10rpx; |
||||
flex-wrap: wrap; |
||||
} |
||||
} |
||||
.remark { |
||||
margin-top: 24rpx; |
||||
padding: 22rpx 32rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
border-radius: 12rpx; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
} |
||||
.row1 { |
||||
padding: 32rpx 0; |
||||
border-bottom: 1px solid rgba(247, 247, 250, 1); |
||||
.wrap { |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 32rpx; |
||||
.label { |
||||
flex-shrink: 0; |
||||
width: 11em; |
||||
font-size: 32rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.line { |
||||
width: 1px; |
||||
height: 88rpx; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
.content { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
.remark { |
||||
margin-top: 24rpx; |
||||
padding: 22rpx 32rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
border-radius: 12rpx; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.container2 { |
||||
.date-card { |
||||
margin-top: 32rpx; |
||||
padding: 18rpx 32rpx; |
||||
background: linear-gradient( 355deg, #FFFFFF 0%, #E6EFFF 100%); |
||||
box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.08); |
||||
border-radius: 84rpx 84rpx 84rpx 84rpx; |
||||
border: 2px solid #ffffff; |
||||
display: flex; |
||||
align-items: center; |
||||
.icon { |
||||
width: 48rpx; |
||||
height: 48rpx; |
||||
} |
||||
.content { |
||||
padding-left: 16rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
.notic { |
||||
position: relative; |
||||
margin-top: 32rpx; |
||||
height: 168rpx; |
||||
box-sizing: border-box; |
||||
padding: 24rpx 32rpx; |
||||
.title { |
||||
font-size: 32rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
font-weight: bold; |
||||
} |
||||
.content { |
||||
margin-top: 6rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
} |
||||
.sub-content { |
||||
margin-top: 6rpx; |
||||
padding: 0 10rpx; |
||||
height: 36rpx; |
||||
display: inline-block; |
||||
font-size: 28rpx; |
||||
border-radius: 6rpx; |
||||
color: rgba(28, 107, 255, 1); |
||||
background-color: #fff; |
||||
} |
||||
.badge { |
||||
position: absolute; |
||||
right: 6rpx; |
||||
top: -14rpx; |
||||
width: 180rpx; |
||||
height: 180rpx; |
||||
border-radius: 50%; |
||||
box-shadow: inset 0rpx -1rpx 0rpx 0rpx rgba(255, 255, 255, 0.25); |
||||
} |
||||
} |
||||
.card { |
||||
position: relative; |
||||
margin-top: 32rpx; |
||||
border-radius: 24rpx; |
||||
border: 1px solid #ffffff; |
||||
background: rgba(255, 244, 243, 1); |
||||
.c-calendar { |
||||
position: relative; |
||||
z-index: 1; |
||||
padding: 40rpx 32rpx 0; |
||||
min-height: 400rpx; |
||||
background-color: #fff; |
||||
border-radius: 24rpx; |
||||
.lengend { |
||||
padding: 32rpx 0; |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 32rpx; |
||||
border-top: 1px solid rgba(247, 247, 250, 1); |
||||
.l-item { |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 12rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
.dot { |
||||
width: 12rpx; |
||||
height: 12rpx; |
||||
border-radius: 50%; |
||||
&.dot1 { |
||||
background-color: rgba(28, 107, 255, 1); |
||||
} |
||||
&.dot2 { |
||||
background-color: rgba(255, 163, 112, 1); |
||||
} |
||||
&.dot3 { |
||||
background-color: rgba(255, 207, 135, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.c-sub-card { |
||||
position: absolute; |
||||
bottom: -24rpx; |
||||
left: 40rpx; |
||||
width: 590rpx; |
||||
height: 636rpx; |
||||
background: #e2e3e6; |
||||
border-radius: 24rpx 24rpx 24rpx 24rpx; |
||||
} |
||||
} |
||||
.btn { |
||||
margin: 52rpx 0 0; |
||||
padding: 20rpx; |
||||
font-size: 32rpx; |
||||
line-height: 48rpx; |
||||
color: #fff; |
||||
text-align: center; |
||||
background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%); |
||||
border-radius: 96rpx; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,258 @@
@@ -0,0 +1,258 @@
|
||||
import dayjs from 'dayjs' |
||||
const licia = require('miniprogram-licia') |
||||
|
||||
const app = getApp<IAppOption>() |
||||
|
||||
Page({ |
||||
data: { |
||||
nav: 0, |
||||
id: '', |
||||
|
||||
userInfo: {}, |
||||
|
||||
fold1: false, |
||||
fold2: false, |
||||
fold3: false, |
||||
fold4: false, |
||||
|
||||
periodOne: [], |
||||
periodTwo: [], |
||||
periodThree: {}, |
||||
periodFour: [], |
||||
empty0: false, |
||||
|
||||
medical: { |
||||
lastBleedingInfo: { |
||||
bleedingPartList: [], |
||||
}, |
||||
}, |
||||
|
||||
followExam: { |
||||
recommendDate: [], |
||||
} as any, |
||||
|
||||
calendarConfig: { |
||||
multi: false, |
||||
hideSelectYear: true, |
||||
markToday: '今', // 当天日期展示不使用默认数字,用特殊文字标记
|
||||
autoChoosedWhenJump: true, |
||||
firstDayOfWeek: 'Mon', |
||||
theme: 'geneb_doctor', |
||||
takeoverTap: false, |
||||
highlightToday: true, |
||||
onlyShowCurrentMonth: true, |
||||
disableMode: { |
||||
type: 'after', // [‘before’, 'after']
|
||||
}, |
||||
}, |
||||
}, |
||||
onLoad(options) { |
||||
this.setData({ |
||||
nav: Number(options.nav) || 0, |
||||
id: options.id, |
||||
}) |
||||
}, |
||||
onShow() { |
||||
app.waitLogin({ type: 2 }).then(() => { |
||||
this.getPatientInfo() |
||||
this.getInfo() |
||||
}) |
||||
}, |
||||
getPatientInfo() { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/patient/get-detail', |
||||
data: { |
||||
patientId: this.data.id, |
||||
}, |
||||
}).then((res) => { |
||||
console.log('res: ', res) |
||||
this.setData({ |
||||
userInfo: { |
||||
...res.patientInfo, |
||||
CreateTime: dayjs(res.createTime).format('YYYY年MM月DD日'), |
||||
}, |
||||
}) |
||||
}) |
||||
}, |
||||
handleNav(e) { |
||||
const { nav } = e.currentTarget.dataset |
||||
this.setData({ |
||||
nav, |
||||
}) |
||||
this.getInfo() |
||||
}, |
||||
getInfo() { |
||||
const { nav } = this.data |
||||
if (nav == 0) { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/treatment/get-archives', |
||||
data: { |
||||
patientId: this.data.id, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
...res, |
||||
empty0: |
||||
!res.periodOne.length && |
||||
!res.periodTwo.length && |
||||
!res.periodFour.length && |
||||
!res.periodThree.injectionDate && |
||||
!res.periodThree.injectionWeight && |
||||
!res.periodThree.injectionDrugs && |
||||
!res.periodThree.injectionNum, |
||||
}) |
||||
}) |
||||
} |
||||
if (nav == 1) { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/treatment/get-medical-history-info', |
||||
data: { |
||||
patientId: this.data.id, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
medical: res, |
||||
}) |
||||
}) |
||||
} |
||||
if (nav == 2) { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/treatment/get-follow-up-exam', |
||||
data: { |
||||
patientId: this.data.id, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
followExam: { |
||||
injectionDateName: dayjs(res.injectionDate).format('YYYY年MM月DD日 ddd'), |
||||
...res, |
||||
}, |
||||
}) |
||||
this.getFollowList() |
||||
}) |
||||
} |
||||
}, |
||||
getFollowList(dateMonth = '') { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/treatment/get-follow-up-exam-list', |
||||
data: { |
||||
month: dateMonth, |
||||
patientId: this.data.id, |
||||
}, |
||||
}).then((res) => { |
||||
console.log('res: ', res) |
||||
const { followExam } = this.data |
||||
this.setCalendarTodos({ |
||||
bleedDate: [followExam.injectionDate], |
||||
injectionDate: res, |
||||
reportInjectionDate: followExam.recommendDate, |
||||
}) |
||||
}) |
||||
}, |
||||
handleWhenChangeMonth(e) { |
||||
console.log('DEBUGPRINT[101]: index.ts:129: e=', e) |
||||
const next = e.detail.next |
||||
const dateMonth = dayjs(`${next.year}-${next.month}`).format('YYYY-MM') |
||||
this.getFollowList(dateMonth) |
||||
}, |
||||
setCalendarTodos({ |
||||
bleedDate = [], |
||||
injectionDate = [], |
||||
reportInjectionDate = [], |
||||
}: { |
||||
bleedDate: any[] |
||||
injectionDate: string[] |
||||
reportInjectionDate: string[] |
||||
}) { |
||||
const calendar = this.selectComponent('#calendar').calendar |
||||
const dates: any[] = [] |
||||
|
||||
const unionArr = licia.union(bleedDate, injectionDate, reportInjectionDate) |
||||
|
||||
unionArr.forEach((date: string) => { |
||||
let color: string[] = [] |
||||
if (bleedDate.includes(date)) { |
||||
color.push('rgba(28, 107, 255, 1)') |
||||
} |
||||
if (injectionDate.includes(date)) { |
||||
color.push('rgba(255, 163, 112, 1)') |
||||
} |
||||
if (reportInjectionDate.includes(date)) { |
||||
color.push('rgba(255, 207, 135, 1)') |
||||
} |
||||
|
||||
dates.push({ |
||||
year: date.split('-')[0], |
||||
month: date.split('-')[1], |
||||
date: date.split('-')[2], |
||||
color, |
||||
}) |
||||
}) |
||||
|
||||
calendar.setTodos({ |
||||
// 待办点标记设置
|
||||
pos: 'bottom', // 待办点标记位置 ['top', 'bottom']
|
||||
dotColor: 'purple', // 待办点标记颜色
|
||||
circle: false, // 待办圆圈标记设置(如圆圈标记已签到日期),该设置与点标记设置互斥
|
||||
showLunar: true, |
||||
showLabelAlways: true, // 点击时是否显示待办事项(圆点/文字),在 circle 为 true 及当日历配置 showLunar 为 true 时,此配置失效
|
||||
dates, |
||||
}) |
||||
}, |
||||
|
||||
handleFold(e) { |
||||
const { fold } = e.currentTarget.dataset |
||||
this.setData({ |
||||
[fold]: !this.data[fold], |
||||
}) |
||||
console.log(this.data[fold]) |
||||
}, |
||||
handleRevisitRecord() { |
||||
wx.navigateTo({ |
||||
url: '/patient/pages/lastDiagnosisReport/index?period=4', |
||||
}) |
||||
}, |
||||
handleRevisitDetail(e) { |
||||
const { id, period } = e.currentTarget.dataset |
||||
wx.navigateTo({ |
||||
url: `/patient/pages/lastDiagnosisReport/index?examid=${id}&period=${period}`, |
||||
}) |
||||
}, |
||||
handleRevisitAll() { |
||||
wx.navigateTo({ |
||||
url: '/patient/pages/revisitRecord/index', |
||||
}) |
||||
}, |
||||
handleCourse(e: any) { |
||||
const { progress } = e.currentTarget.dataset |
||||
wx.navigateTo({ |
||||
url: `/patient/pages/course/index?current=${progress}`, |
||||
}) |
||||
}, |
||||
handleBbmDetail() { |
||||
wx.navigateTo({ |
||||
url: '/patient/pages/bbmReport/index', |
||||
}) |
||||
}, |
||||
handlePreDiagnosisReport(e) { |
||||
const { id, period } = e.currentTarget.dataset |
||||
wx.navigateTo({ |
||||
url: `/patient/pages/preDiagnosisReport/index?examid=${id}&period=${period}`, |
||||
}) |
||||
}, |
||||
handleInjectionDate() { |
||||
wx.navigateTo({ |
||||
url: '/patient/pages/injectDate/index', |
||||
}) |
||||
}, |
||||
handleBack() { |
||||
wx.navigateBack() |
||||
}, |
||||
}) |
||||
|
||||
export {} |
@ -0,0 +1,336 @@
@@ -0,0 +1,336 @@
|
||||
<navbar fixed custom-style="background:{{background}}" back> |
||||
<van-icon name="arrow-left" slot="left" size="18px" color="#000" bind:tap="handleBack" /> |
||||
</navbar> |
||||
<view |
||||
class="page" |
||||
style="padding-top:{{pageTop}}px;background:url('{{imageUrl}}bg25.png?t={{Timestamp}}') no-repeat top center/100% 693rpx" |
||||
> |
||||
<view class="user"> |
||||
<view class="avatar"> |
||||
<image class="a-img" src="{{userInfo.userAvatar}}"></image> |
||||
</view> |
||||
<view class="wrap"> |
||||
<view class="w-header"> |
||||
<view class="name">{{userInfo.patientName}}</view> |
||||
<view class="age"> |
||||
<image class="icon" src="{{imageUrl}}icon91.png?t={{Timestamp}}"></image> |
||||
{{userInfo.ageYear}}岁 |
||||
</view> |
||||
<view class="site"> |
||||
<image class="icon" src="{{imageUrl}}icon92.png?t={{Timestamp}}"></image> |
||||
{{userInfo.provinceName}} |
||||
</view> |
||||
</view> |
||||
<view class="w-footer"> |
||||
<view class="info">入组时间:{{userInfo.CreateTime}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="navbar"> |
||||
<view class="nav {{nav==0 && 'active'}}" bindtap="handleNav" data-nav="0">治疗档案</view> |
||||
<view class="nav {{nav==1 && 'active'}}" bindtap="handleNav" data-nav="1">病史档案</view> |
||||
<view class="nav {{nav==2 && 'active'}}" bindtap="handleNav" data-nav="2">随访日历</view> |
||||
</view> |
||||
<view class="container0" wx:if="{{nav==0}}"> |
||||
<view class="card1" wx:if="{{periodFour.length}}"> |
||||
<view class="c-header"> |
||||
<view class="left" bindtap="handleFold" data-fold="fold1"> |
||||
<view class="title">随访计划</view> |
||||
<image class="fold-icon {{fold1 && 'trun'}}" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
</view> |
||||
<view class="{{fold1 && 'fold'}}"> |
||||
<view |
||||
class="c-body" |
||||
wx:for="{{periodFour}}" |
||||
wx:key="index" |
||||
bind:tap="handleRevisitDetail" |
||||
data-id="{{item.examId}}" |
||||
data-period="{{item.period}}" |
||||
> |
||||
<!-- <image wx:if="{{true}}" class="status" src="{{imageUrl}}icon42.png?t={{Timestamp}}"></image> --> |
||||
<!-- <image wx:elif="{{false}}" class="status" src="{{imageUrl}}icon43.png?t={{Timestamp}}"></image> --> |
||||
<!-- <image wx:elif="{{false}}" class="status" src="{{imageUrl}}icon44.png?t={{Timestamp}}"></image> --> |
||||
<view class="row"> |
||||
<view class="label">日期</view> |
||||
<view class="content" wx:if="{{item.beginDate && item.endDate}}">{{item.beginDate}}~{{item.endDate}}</view> |
||||
<view class="content" wx:else>--</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">诊疗医院</view> |
||||
<view class="content">{{item.hospitalName || '未填写'}}</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">检查项目</view> |
||||
<view class="content">{{item.totalNum}}/{{item.allNum}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="more" bind:tap="handleRevisitAll"> |
||||
查看全部 |
||||
<van-icon name="arrow" /> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view |
||||
class="card2" |
||||
wx:if="{{periodThree.injectionDate || periodThree.injectionWeight || periodThree.injectionDrugs || periodThree.injectionNum}}" |
||||
> |
||||
<view class="c-header"> |
||||
<view class="left" bindtap="handleFold" data-fold="fold2"> |
||||
<view class="title">注射日</view> |
||||
<image class="fold-icon {{fold2 && 'trun'}}" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
</view> |
||||
<view class="{{fold2 && 'fold'}}"> |
||||
<view class="c-body"> |
||||
<view class="row"> |
||||
<view class="label">注射日期</view> |
||||
<view class="content">{{periodThree.injectionDate}}</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">BBM-H901</view> |
||||
<view class="content"> |
||||
<view wx:if="{{periodThree.injectionWeight}}">体重 {{periodThree.injectionWeight}}kg</view> |
||||
<view wx:else>体重 未填写</view> |
||||
<view wx:if="{{periodThree.injectionDrugs}}">用药 {{periodThree.injectionDrugs}}ml</view> |
||||
<view wx:else>用药 未填写</view> |
||||
<view wx:if="{{periodThree.injectionNum}}">预期用药 {{periodThree.injectionNum}} 瓶</view> |
||||
<view wx:else>预期用药 未填写</view> |
||||
</view> |
||||
</view> |
||||
<view class="options"> |
||||
<view class="item" bind:tap="handleCourse" data-progress="2"> |
||||
诊疗阶段详情 |
||||
<van-icon name="arrow" /> |
||||
</view> |
||||
<view class="item" bind:tap="handleBbmDetail"> |
||||
查看详情 |
||||
<van-icon name="arrow" /> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="card3" wx:if="{{periodTwo.length}}"> |
||||
<view class="c-header"> |
||||
<view class="left" bindtap="handleFold" data-fold="fold3"> |
||||
<view class="title">基因治疗中心检查</view> |
||||
<image class="fold-icon {{fold3 && 'trun'}}" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
</view> |
||||
<view class="{{fold3 && 'fold'}}"> |
||||
<view class="c-body" wx:for="{{periodTwo}}" wx:key="index"> |
||||
<view class="row"> |
||||
<view class="label">日期</view> |
||||
<view class="content" wx:if="{{item.beginDate && item.endDate}}">{{item.beginDate}}~{{item.endDate}}</view> |
||||
<view class="content" wx:else>未填写</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">诊疗医院</view> |
||||
<view class="content">{{item.hospitalName || '未填写'}}</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">检查项目</view> |
||||
<view class="content">{{item.totalNum}}/{{item.allNum}}</view> |
||||
</view> |
||||
<view class="options"> |
||||
<view class="item" bind:tap="handleCourse" data-progress="1"> |
||||
诊疗阶段详情 |
||||
<van-icon name="arrow" /> |
||||
</view> |
||||
<view |
||||
class="item" |
||||
bind:tap="handlePreDiagnosisReport" |
||||
data-id="{{item.examId}}" |
||||
data-period="{{item.period}}" |
||||
> |
||||
查看详情 |
||||
<van-icon name="arrow" /> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="card4" wx:if="{{periodOne.length}}"> |
||||
<view class="c-header"> |
||||
<view class="left" bindtap="handleFold" data-fold="fold4"> |
||||
<view class="title">诊前筛查</view> |
||||
<image class="fold-icon {{fold4 && 'trun'}}" src="{{imageUrl}}icon56.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
</view> |
||||
<view class="{{fold4 && 'fold'}}"> |
||||
<view class="c-body" wx:for="{{periodOne}}" wx:key="index"> |
||||
<view class="row"> |
||||
<view class="label">日期</view> |
||||
<view class="content" wx:if="{{item.beginDate && item.endDate}}">{{item.beginDate}}~{{item.endDate}}</view> |
||||
<view class="content" wx:else>未填写</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">定点医院</view> |
||||
<view class="content">{{item.hospitalName || '未填写'}}</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">检查项目</view> |
||||
<view class="content">{{item.totalNum}}/{{item.allNum}}</view> |
||||
</view> |
||||
<view class="options"> |
||||
<view class="item" bind:tap="handleCourse" data-progress="0"> |
||||
诊疗阶段详情 |
||||
<van-icon name="arrow" /> |
||||
</view> |
||||
<view |
||||
class="item" |
||||
bind:tap="handlePreDiagnosisReport" |
||||
data-id="{{item.examId}}" |
||||
data-period="{{item.period}}" |
||||
> |
||||
查看详情 |
||||
<van-icon name="arrow" /> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<image wx:if="{{empty0}}" class="none" src="{{imageUrl}}none.png"></image> |
||||
</view> |
||||
<view class="container1" wx:if="{{nav==1}}"> |
||||
<view class="c1_card1"> |
||||
<view class="row"> |
||||
<view class="label">出生年月</view> |
||||
<view class="content">{{medical.birthMonth}}({{medical.ageYear}}岁)</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">确诊时间</view> |
||||
<view class="content"> |
||||
{{medical.diagnosisTime || '未填写'}} |
||||
<block wx:if="{{medical.diagnosisAge}}">({{medical.diagnosisAge}})</block> |
||||
</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">您的体重</view> |
||||
<view class="content" wx:if="{{medical.weight}}">{{medical.weight}} kg</view> |
||||
<div class="content" wx:else>未填写</div> |
||||
</view> |
||||
</view> |
||||
<view class="c1_card1"> |
||||
<view class="row"> |
||||
<view class="label">凝血因子</view> |
||||
<view class="content" wx:if="{{medical.clottingFactor}}">{{medical.clottingFactor}}%</view> |
||||
<view class="content" wx:else>未填写</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">治疗方案</view> |
||||
<view class="content">{{medical.treatmentPlanName || '未填写'}}</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="label">FIX暴露日</view> |
||||
<view class="content" wx:if="{{medical.fixExposureDay}}">{{medical.fixExposureDay}}个</view> |
||||
<view class="content" wx:else>未填写</view> |
||||
</view> |
||||
</view> |
||||
<view class="c1_card2"> |
||||
<view class="row"> |
||||
<view class="wrap"> |
||||
<view class="label">既往FIX抑制物病史</view> |
||||
<view class="content">{{medical.beforeFixHistoryName || '未填写'}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="wrap"> |
||||
<view class="label">既往肝脏疾病病史</view> |
||||
<view class="content">{{medical.beforeLiverHistoryName || '未填写'}}</view> |
||||
</view> |
||||
<view class="remark" wx:if="{{medical.liverRecord}}">{{medical.liverRecord}}</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="wrap"> |
||||
<view class="label">您是否有饮酒史</view> |
||||
<view class="content">{{medical.drinkingHistoryName || '未填写'}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="wrap"> |
||||
<view class="label">您是否有过敏史</view> |
||||
<view class="content">{{medical.allergyHistoryName || '未填写'}}</view> |
||||
</view> |
||||
<view class="remark" wx:if="{{medical.allergyRecord}}">{{medical.allergyRecord}}</view> |
||||
</view> |
||||
<view class="row1"> |
||||
<view class="wrap"> |
||||
<view class="label"> |
||||
<view>您是否可能存在不适合</view> |
||||
<view>使用糖皮质激素的情况?</view> |
||||
</view> |
||||
<view class="line"></view> |
||||
<view class="content">{{medical.isNotGlucocorticoidName || '未填写'}}</view> |
||||
</view> |
||||
<view class="remark" wx:if="{{medical.medicalHistoryInfo}}">{{medical.medicalHistoryInfo}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="c1_card2"> |
||||
<view class="row"> |
||||
<view class="wrap"> |
||||
<view class="label" style="width: 4em">靶关节</view> |
||||
<view class="content"> |
||||
<view wx:for="{{medical.lastBleedingInfo.bleedingPartList}}" wx:key="bleedingId"> |
||||
{{item.bleedingPartName}} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="row"> |
||||
<view class="wrap"> |
||||
<view class="label">最近6个月出血</view> |
||||
</view> |
||||
<view class="remark" wx:if="{{medical.lastBleedingInfo.remark}}">{{medical.lastBleedingInfo.remark}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="container2" wx:if="{{nav==2}}"> |
||||
<view class="date-card" bind:tap="handleInjectionDate"> |
||||
<image class="icon" src="{{imageUrl}}icon107.png?t={{Timestamp}}"></image> |
||||
<view class="content" wx:if="{{followExam.injectionDate}}">注射日:{{followExam.injectionDateName}}</view> |
||||
<view class="content" wx:else>请填写您的注射日生成随访计划</view> |
||||
</view> |
||||
<view |
||||
class="notic" |
||||
wx:if="{{followExam.injectionDate}}" |
||||
style="background: url('{{imageUrl}}bg26.png?t={{Timestamp}}') no-repeat top center/100%" |
||||
> |
||||
<view class="title">{{followExam.tipsInfo}}</view> |
||||
<view class="content" wx:if="{{followExam.lastNoticeWeekInfo}}">{{followExam.lastNoticeWeekInfo}}</view> |
||||
<view class="sub-content" wx:if="{{followExam.lastNoticeExamInfo}}">{{followExam.lastNoticeExamInfo}}</view> |
||||
<image |
||||
wx:if="{{followExam.examDiffPassMonth==1}}" |
||||
class="badge" |
||||
src="{{imageUrl}}icon94.png?t={{Timestamp}}" |
||||
></image> |
||||
<image wxx:else class="badge" src="{{imageUrl}}icon95.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="card"> |
||||
<view class="c-calendar" style="background: #fff url('/images/icon99.png') no-repeat bottom right/118rpx 116rpx"> |
||||
<calendar |
||||
bind:whenChangeMonth="handleWhenChangeMonth" |
||||
config="{{calendarConfig}}" |
||||
id="calendar" |
||||
bind:jumpToToday="toggleFold" |
||||
></calendar> |
||||
<view class="lengend"> |
||||
<view class="l-item"> |
||||
<view class="dot dot1"></view> |
||||
注射日 |
||||
</view> |
||||
<view class="l-item"> |
||||
<view class="dot dot2"></view> |
||||
已复诊 |
||||
</view> |
||||
<view class="l-item"> |
||||
<view class="dot dot3"></view> |
||||
建议复诊 |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="c-sub-card"></view> |
||||
</view> |
||||
</view> |
||||
</view> |
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
{ |
||||
"navigationBarTitleText": "随访计划", |
||||
"usingComponents": {} |
||||
} |
@ -0,0 +1,120 @@
@@ -0,0 +1,120 @@
|
||||
page { |
||||
background-color: #f7f7fa; |
||||
} |
||||
.page { |
||||
padding: 32rpx 40rpx 260rpx; |
||||
.date-card { |
||||
padding: 18rpx 32rpx; |
||||
background: linear-gradient(to top, #ffffff 60%, #d8e5ff 100%); |
||||
border-radius: 84rpx 84rpx 84rpx 84rpx; |
||||
border: 2px solid #ffffff; |
||||
display: flex; |
||||
align-items: center; |
||||
.icon { |
||||
width: 48rpx; |
||||
height: 48rpx; |
||||
} |
||||
.content { |
||||
padding-left: 16rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
|
||||
.body { |
||||
margin-top: 32rpx; |
||||
background: #F2F7FF; |
||||
border-radius: 24rpx 24rpx 24rpx 24rpx; |
||||
border: 2rpx solid #ffffff; |
||||
.title { |
||||
padding: 20rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(28, 107, 255, 1); |
||||
text-align: center; |
||||
} |
||||
.container { |
||||
padding: 48rpx 24rpx 0; |
||||
background-color: #fff; |
||||
.table { |
||||
.thead { |
||||
display: grid; |
||||
border-radius: 24rpx 24rpx 0 0; |
||||
grid-template-columns: repeat(2, 1fr); |
||||
background-color: rgba(28, 107, 255, 1); |
||||
.th { |
||||
padding: 22rpx; |
||||
text-align: center; |
||||
font-size: 28rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
} |
||||
} |
||||
.tbody { |
||||
.tr { |
||||
display: grid; |
||||
grid-template-columns: 36rpx calc(50% - 36rpx) 50%; |
||||
.aside { |
||||
margin-right: 12rpx; |
||||
display: flex; |
||||
flex-direction: column; |
||||
align-items: center; |
||||
.line-top { |
||||
flex: 1; |
||||
border-right: 1px dashed rgba(207, 209, 213, 1); |
||||
} |
||||
.order { |
||||
flex-shrink: 0; |
||||
width: 24rpx; |
||||
height: 24rpx; |
||||
border-radius: 50%; |
||||
background-color: rgba(207, 209, 213, 1); |
||||
} |
||||
.line-bottom { |
||||
flex: 1; |
||||
border-right: 1px dashed rgba(207, 209, 213, 1); |
||||
} |
||||
} |
||||
.td { |
||||
padding: 28rpx 32rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
line-height: 40rpx; |
||||
white-space: pre-line; |
||||
display: flex; |
||||
justify-content: center; |
||||
flex-direction: column; |
||||
} |
||||
} |
||||
.tr:nth-child(even) { |
||||
.td { |
||||
background-color: rgba(242, 247, 255, 1); |
||||
} |
||||
} |
||||
.active { |
||||
.aside { |
||||
.line-top, |
||||
.line-bottom { |
||||
border-color: rgba(28, 107, 255, 1); |
||||
} |
||||
.order { |
||||
background-color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
} |
||||
.current { |
||||
.aside { |
||||
.line-top { |
||||
border-color: rgba(28, 107, 255, 1); |
||||
} |
||||
.order { |
||||
background-color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
.td { |
||||
color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,47 @@
@@ -0,0 +1,47 @@
|
||||
import dayjs from 'dayjs' |
||||
|
||||
const app = getApp<IAppOption>() |
||||
|
||||
Page({ |
||||
data: { |
||||
patientId: '', |
||||
|
||||
injectionDate: '', |
||||
stage: '', |
||||
}, |
||||
onLoad(options) { |
||||
this.setData({ |
||||
patientId: options.id, |
||||
}) |
||||
app.waitLogin({ type: 2 }).then(() => { |
||||
this.getDetail() |
||||
}) |
||||
}, |
||||
getDetail() { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/treatment/get-follow-up-plan', |
||||
data: { |
||||
patientId: this.data.patientId, |
||||
}, |
||||
}).then((res) => { |
||||
console.log('res: ', res) |
||||
this.setData({ |
||||
injectionDate: res.injectionDate ? dayjs(res.injectionDate).format('YYYY年MM月DD日 ddd') : '', |
||||
stage: res.stage, |
||||
}) |
||||
}) |
||||
}, |
||||
handleClander() { |
||||
wx.navigateTo({ |
||||
url: '/patient/pages/file/index?nav=2', |
||||
}) |
||||
}, |
||||
handleLastDiagnosisReport() { |
||||
wx.navigateTo({ |
||||
url: '/patient/pages/lastDiagnosisReport/index', |
||||
}) |
||||
}, |
||||
}) |
||||
|
||||
export {} |
@ -0,0 +1,103 @@
@@ -0,0 +1,103 @@
|
||||
<view class="page"> |
||||
<view class="date-card"> |
||||
<image class="icon" src="{{imageUrl}}icon107.png?t={{Timestamp}}"></image> |
||||
<view class="content">注射日:{{injectionDate || '未录入'}}</view> |
||||
</view> |
||||
<view class="body"> |
||||
<view class="title">基因治疗后时间 监测频率</view> |
||||
<view class="container"> |
||||
<view class="table"> |
||||
<view class="thead"> |
||||
<view class="th">输注后时间</view> |
||||
<view class="th">监测频率</view> |
||||
</view> |
||||
<view class="tbody"> |
||||
<view class="tr {{stage === 1 && 'current'}} {{stage > 1 && 'active'}}"> |
||||
<view class="aside"> |
||||
<view class="line-top"></view> |
||||
<view class="order"></view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="td">1 周内</view> |
||||
<view class="td"> |
||||
<view>每周2次</view> |
||||
<view>输注后第3天,第6天</view> |
||||
</view> |
||||
</view> |
||||
<view class="tr {{stage === 2 && 'current'}} {{stage > 2 && 'active'}}"> |
||||
<view class="aside"> |
||||
<view class="line-top"></view> |
||||
<view class="order"></view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="td"> |
||||
<view>输注后</view> |
||||
<view>第2周~第12周</view> |
||||
</view> |
||||
<view class="td">每周1次</view> |
||||
</view> |
||||
<view class="tr {{stage === 3 && 'current'}} {{stage > 3 && 'active'}}"> |
||||
<view class="aside"> |
||||
<view class="line-top"></view> |
||||
<view class="order"></view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="td"> |
||||
<view>输注后</view> |
||||
<view>第13周~第26周</view> |
||||
</view> |
||||
<view class="td">每2周1次</view> |
||||
</view> |
||||
<view class="tr {{stage === 4 && 'current'}} {{stage > 4 && 'active'}}"> |
||||
<view class="aside"> |
||||
<view class="line-top"></view> |
||||
<view class="order"></view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="td"> |
||||
<view>输注后</view> |
||||
<view>第27周~第52周</view> |
||||
</view> |
||||
<view class="td">每4周1次</view> |
||||
</view> |
||||
<view class="tr {{stage === 5 && 'current'}} {{stage > 5 && 'active'}}"> |
||||
<view class="aside"> |
||||
<view class="line-top"></view> |
||||
<view class="order"></view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="td"> |
||||
<view>输注后</view> |
||||
<view>第1年~第2年内</view> |
||||
</view> |
||||
<view class="td">每周1次</view> |
||||
</view> |
||||
<view class="tr {{stage === 6 && 'current'}} {{stage > 6 && 'active'}}"> |
||||
<view class="aside"> |
||||
<view class="line-top"></view> |
||||
<view class="order"></view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="td"> |
||||
<view>输注后</view> |
||||
<view>第2年~第5年内</view> |
||||
</view> |
||||
<view class="td">每6个月1次</view> |
||||
</view> |
||||
<view class="tr {{stage === 7 && 'current'}} {{stage > 7 && 'active'}}"> |
||||
<view class="aside"> |
||||
<view class="line-top"></view> |
||||
<view class="order"></view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="td"> |
||||
<view>输注后</view> |
||||
<view>5年以后</view> |
||||
</view> |
||||
<view class="td">每年1次或2次</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
{ |
||||
"navigationBarTitleText": "免疫抑制剂管理", |
||||
"usingComponents": {} |
||||
} |
@ -0,0 +1,65 @@
@@ -0,0 +1,65 @@
|
||||
page { |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
.page { |
||||
.empty { |
||||
padding: 276rpx 108rpx; |
||||
.none-img { |
||||
width: 533rpx; |
||||
height: 339rpx; |
||||
} |
||||
.title { |
||||
text-align: center; |
||||
font-size: 32rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.add { |
||||
margin: 174rpx 0 0; |
||||
font-size: 32rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
line-height: 88rpx; |
||||
text-align: center; |
||||
background: linear-gradient(356deg, #f23a2f 0%, #fc684f 100%); |
||||
border-radius: 84rpx 84rpx 84rpx 84rpx; |
||||
} |
||||
} |
||||
.list { |
||||
padding: 32rpx 40rpx; |
||||
.total { |
||||
font-size: 32rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
.red { |
||||
color: rgba(246, 74, 58, 1); |
||||
font-size: 40rpx; |
||||
} |
||||
} |
||||
.list-card { |
||||
padding: 16rpx 0; |
||||
margin-top: 24rpx; |
||||
background: #ffffff; |
||||
border-radius: 24rpx 24rpx 24rpx 24rpx; |
||||
.item { |
||||
padding: 16rpx 32rpx; |
||||
display: flex; |
||||
.item-title { |
||||
flex-shrink: 0; |
||||
width: 5em; |
||||
font-size: 32rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.item-content { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
} |
||||
.add { |
||||
position: fixed; |
||||
left: 50%; |
||||
bottom: 142rpx; |
||||
transform: translateX(-50%); |
||||
width: 156rpx; |
||||
height: 156rpx; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,62 @@
@@ -0,0 +1,62 @@
|
||||
const app = getApp<IAppOption>() |
||||
|
||||
Page({ |
||||
data: { |
||||
patientId: '', |
||||
period: '', |
||||
|
||||
list: [] as any[], |
||||
total: 0, |
||||
pagination: { |
||||
page: 1, |
||||
pages: 1, |
||||
count: 1, |
||||
}, |
||||
}, |
||||
onLoad(options) { |
||||
this.setData({ |
||||
period: options.period || '', |
||||
patientId: options.id || '', |
||||
}) |
||||
}, |
||||
onShow() { |
||||
app.waitLogin().then(() => { |
||||
this.getList() |
||||
}) |
||||
}, |
||||
getList(newPage = 1) { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/treatment/get-immune-list', |
||||
data: { |
||||
page: newPage, |
||||
patientId: this.data.patientId, |
||||
}, |
||||
}).then((res) => { |
||||
const list = res.page === 1 ? res.list : [...this.data.list, ...res.list] |
||||
this.setData({ |
||||
total: res.count, |
||||
list, |
||||
pagination: { |
||||
page: res.page, |
||||
pages: res.pages, |
||||
count: res.count, |
||||
}, |
||||
}) |
||||
}) |
||||
}, |
||||
onReachBottom() { |
||||
const { page, pages } = this.data.pagination |
||||
if (pages > page) { |
||||
this.getList(page + 1) |
||||
} |
||||
}, |
||||
handleEdit(e: any) { |
||||
// const { id, period } = e.currentTarget.dataset
|
||||
// wx.navigateTo({
|
||||
// url: `/patient/pages/inhibitorsManageDetail/index?id=${id}&peroid=${period}`,
|
||||
// })
|
||||
}, |
||||
}) |
||||
|
||||
export {} |
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
<view class="page"> |
||||
<view class="list"> |
||||
<view class="total"> |
||||
已记录剂量处方 |
||||
<text class="red">{{total}}</text> |
||||
次 |
||||
</view> |
||||
<view |
||||
class="list-card" |
||||
wx:for="{{list}}" |
||||
bind:tap="handleEdit" |
||||
data-id="{{item.recordId}}" |
||||
data-period="{{item.period}}" |
||||
> |
||||
<view class="item"> |
||||
<view class="item-title">用药时间</view> |
||||
<view class="item-content">{{item.recordDate}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="item-title">药物名称</view> |
||||
<view class="item-content">{{item.drugName}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="item-title">用药方式</view> |
||||
<view class="item-content">{{item.typeName}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="item-title">用药剂量</view> |
||||
<view class="item-content">{{item.dosage}}{{item.dosageUnitName}}</view> |
||||
</view> |
||||
</view> |
||||
<pagination pagination="{{pagination}}"></pagination> |
||||
</view> |
||||
</view> |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
{ |
||||
"navigationBarTitleText": "最新复诊检查记录", |
||||
"usingComponents": { |
||||
"uploadFile": "/components/uploadFile/index", |
||||
"popup": "/components/popup/index" |
||||
} |
||||
} |
@ -0,0 +1,322 @@
@@ -0,0 +1,322 @@
|
||||
page { |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
|
||||
.page { |
||||
padding: 32rpx 30rpx 240rpx; |
||||
.date-form { |
||||
padding: 24rpx 32rpx; |
||||
background-color: #fff; |
||||
border-radius: 24rpx; |
||||
.title { |
||||
display: flex; |
||||
align-items: center; |
||||
.icon { |
||||
flex-shrink: 0; |
||||
width: 48rpx; |
||||
height: 48rpx; |
||||
} |
||||
.label { |
||||
flex-shrink: 0; |
||||
margin-left: 16rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(0, 0, 0, 1); |
||||
} |
||||
.content { |
||||
margin-left: 32rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
.range { |
||||
margin-top: 24rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 18rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(207, 209, 213, 1); |
||||
.picker { |
||||
flex: 1; |
||||
.picker-content { |
||||
padding: 22rpx 32rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
border-radius: 12rpx; |
||||
.content { |
||||
flex: 1; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
&:empty::after { |
||||
content: attr(data-place); |
||||
color: rgba(161, 164, 172, 0.5); |
||||
} |
||||
} |
||||
.tril { |
||||
width: 0; |
||||
height: 0; |
||||
border-style: solid; |
||||
border-width: 12rpx 12rpx 0 12rpx; |
||||
border-color: rgba(207, 209, 213, 1) transparent transparent transparent; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.select-hostipal { |
||||
margin-top: 24rpx; |
||||
padding: 28rpx 32rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
background-color: #fff; |
||||
border-radius: 24rpx; |
||||
gap: 32rpx; |
||||
.label { |
||||
font-size: 32rpx; |
||||
color: rgba(0, 0, 0, 1); |
||||
} |
||||
.picker { |
||||
flex: 1; |
||||
.picker-content { |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
color: rgba(161, 164, 172, 0.5); |
||||
.content { |
||||
flex: 1; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
&:empty::after { |
||||
content: attr(data-place); |
||||
color: rgba(161, 164, 172, 0.5); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.form { |
||||
margin-top: 48rpx; |
||||
.form-card { |
||||
display: flex; |
||||
gap: 24rpx; |
||||
.aside { |
||||
flex-shrink: 0; |
||||
display: flex; |
||||
flex-direction: column; |
||||
align-items: center; |
||||
.line-top { |
||||
flex-shrink: 0; |
||||
height: 32rpx; |
||||
border-left: 1px dashed rgba(207, 209, 213, 1); |
||||
} |
||||
.order { |
||||
flex-shrink: 0; |
||||
width: 40rpx; |
||||
height: 40rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
font-size: 32rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
background-color: rgba(207, 209, 213, 1); |
||||
border-radius: 50%; |
||||
} |
||||
.line-bottom { |
||||
flex: 1; |
||||
height: 20rpx; |
||||
border-left: 1px dashed rgba(207, 209, 213, 1); |
||||
} |
||||
&.active { |
||||
.order { |
||||
color: #fff; |
||||
background-color: rgba(28, 107, 255, 1); |
||||
} |
||||
.line-bottom, |
||||
.line-top { |
||||
background-color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
} |
||||
.container { |
||||
flex: 1; |
||||
background-color: #fff; |
||||
border-radius: 24rpx; |
||||
margin-bottom: 24rpx; |
||||
.c-header { |
||||
padding: 32rpx 32rpx 32rpx 0; |
||||
.wrap { |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
.left { |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 12rpx; |
||||
.title { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
font-weight: bold; |
||||
display: flex; |
||||
gap: 24rpx; |
||||
align-items: center; |
||||
&::before { |
||||
content: ''; |
||||
width: 8rpx; |
||||
height: 36rpx; |
||||
border-radius: 0 8rpx 8rpx 0; |
||||
background: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
.icon { |
||||
width: 32rpx; |
||||
height: 32rpx; |
||||
transition: transform 0.3s; |
||||
&.turn { |
||||
transform: rotate(180deg); |
||||
} |
||||
} |
||||
} |
||||
.status { |
||||
font-size: 32rpx; |
||||
color: rgba(137, 141, 151, 1); |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 12rpx; |
||||
.icon { |
||||
width: 32rpx; |
||||
height: 32rpx; |
||||
} |
||||
&.active { |
||||
color: rgba(14, 209, 167, 1); |
||||
} |
||||
} |
||||
} |
||||
.content { |
||||
padding: 16rpx 32rpx 0; |
||||
font-size: 24rpx; |
||||
color: rgba(96, 97, 99, 1); |
||||
line-height: 36rpx; |
||||
} |
||||
} |
||||
.c-body { |
||||
max-height: 100vh; |
||||
transition: all 0.3s; |
||||
&.fold { |
||||
max-height: 0; |
||||
overflow: hidden; |
||||
} |
||||
.module1 { |
||||
padding: 16rpx 32rpx 32rpx; |
||||
.m-input-area { |
||||
padding: 0 32rpx; |
||||
border-radius: 24rpx; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
.m-input { |
||||
padding: 32rpx 0; |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 32rpx; |
||||
border-bottom: 1px solid rgba(241, 241, 244, 1); |
||||
.label { |
||||
flex-shrink: 0; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
width: 7em; |
||||
.sub-label { |
||||
font-size: 20rpx; |
||||
} |
||||
} |
||||
.input { |
||||
width: 3em; |
||||
font-size: 32rpx; |
||||
height: 72rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.place-input { |
||||
color: rgba(161, 164, 172, 0.5); |
||||
} |
||||
.sub { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
} |
||||
.m-title { |
||||
margin-top: 48rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.file-list { |
||||
margin-top: 24rpx; |
||||
} |
||||
} |
||||
.module2 { |
||||
padding: 0 32rpx 32rpx; |
||||
.m-input { |
||||
padding: 0 32rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 32rpx; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
border-radius: 24rpx; |
||||
.label { |
||||
flex-shrink: 0; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.input { |
||||
flex: 1; |
||||
font-size: 32rpx; |
||||
height: 96rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.place-input { |
||||
color: rgba(161, 164, 172, 0.5); |
||||
} |
||||
.sub { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
.text-area { |
||||
padding: 24rpx 32rpx; |
||||
width: 100%; |
||||
height: 182rpx; |
||||
border-radius: 12rpx; |
||||
box-sizing: border-box; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
.m-title { |
||||
margin-top: 48rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.file-list { |
||||
margin-top: 24rpx; |
||||
} |
||||
} |
||||
.module3 { |
||||
padding: 0 32rpx 32rpx; |
||||
.text-area { |
||||
padding: 24rpx 32rpx; |
||||
width: 100%; |
||||
height: 182rpx; |
||||
border-radius: 12rpx; |
||||
box-sizing: border-box; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
.m-title { |
||||
margin-top: 48rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.file-list { |
||||
margin-top: 24rpx; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,240 @@
@@ -0,0 +1,240 @@
|
||||
const app = getApp<IAppOption>() |
||||
|
||||
Page({ |
||||
data: { |
||||
popupShow: false, |
||||
popupType: 'preDiagnosisReportDate', // 确认绑定曾经扫码医生
|
||||
popupParams: {}, |
||||
|
||||
edit: false, |
||||
|
||||
fold1: true, |
||||
fold2: true, |
||||
fold3: true, |
||||
|
||||
hospitalName: '', |
||||
|
||||
patientId: '', |
||||
examId: '', |
||||
period: '1', |
||||
|
||||
beginDate: '', |
||||
endDate: '', |
||||
hospitalId: '', |
||||
isBiochemical: 2, |
||||
alt: '', |
||||
ast: '', |
||||
bilirubin: '', |
||||
isCFIxActivity: 2, |
||||
clottingFactor: '', |
||||
isOther: 2, |
||||
otherInfo: '', |
||||
|
||||
attachmentList2: [], |
||||
attachmentList3: [], |
||||
attachmentList10: [], |
||||
|
||||
formKeys: [ |
||||
'beginDate', |
||||
'endDate', |
||||
'hospitalId', |
||||
'isBiochemical', |
||||
'alt', |
||||
'ast', |
||||
'bilirubin', |
||||
'isCFIxActivity', |
||||
'clottingFactor', |
||||
'isOther', |
||||
'otherInfo', |
||||
], |
||||
|
||||
dict: { |
||||
result: {}, |
||||
number: {}, |
||||
}, |
||||
}, |
||||
onLoad(options) { |
||||
this.setData({ |
||||
examId: options.examid || '', |
||||
period: options.period || '1', |
||||
patientId: options.id || '', |
||||
edit: options.edit === '1', |
||||
}) |
||||
}, |
||||
onShow() { |
||||
app.waitLogin({ type: 2 }).then(() => { |
||||
this.getDict() |
||||
this.getDetail() |
||||
}) |
||||
}, |
||||
getDict() { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/treatment/get-dict', |
||||
data: {}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
dict: res, |
||||
}) |
||||
}) |
||||
}, |
||||
getDetail() { |
||||
const { examId, formKeys } = this.data |
||||
if (!examId) return |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/treatment/get-exam-detail', |
||||
data: { |
||||
examId: examId, |
||||
patientId: this.data.patientId, |
||||
}, |
||||
}).then((res) => { |
||||
const reset = formKeys.reduce((pre, cur) => { |
||||
pre[cur] = res[cur] || '' |
||||
return pre |
||||
}, {}) |
||||
this.setData({ |
||||
...reset, |
||||
attachmentList2: res.attachmentList[2] || [], |
||||
attachmentList3: res.attachmentList[3] || [], |
||||
attachmentList10: res.attachmentList[10] || [], |
||||
hospitalName: res.hospitalName || '', |
||||
}) |
||||
}) |
||||
}, |
||||
handleSelectHospital() { |
||||
wx.navigateTo({ |
||||
url: `/patient/pages/selectHostipal/index?select=1&id=${this.data.hospitalId}`, |
||||
events: { |
||||
acceptDataFromOpenedPage: (data) => { |
||||
this.setData({ |
||||
hospitalId: data.hospitalId, |
||||
hospitalName: data.hospitalName, |
||||
}) |
||||
this.updateSave() |
||||
}, |
||||
}, |
||||
}) |
||||
}, |
||||
handleToggleFold(e: any) { |
||||
const { fold } = e.currentTarget.dataset |
||||
this.setData({ |
||||
[fold]: !this.data[fold], |
||||
}) |
||||
}, |
||||
handleToggleCheck(e: any) { |
||||
const { check, fold } = e.currentTarget.dataset |
||||
let foldValue = this.data[fold] |
||||
if (this.data[check] == 2) { |
||||
foldValue = false |
||||
} |
||||
this.setData({ |
||||
[check]: this.data[check] == 1 ? 2 : 1, |
||||
[fold]: foldValue, |
||||
}) |
||||
this.updateSave() |
||||
}, |
||||
updateSave(e = null) { |
||||
let isBack = false |
||||
if (e) { |
||||
const { back } = (e as any).currentTarget.dataset |
||||
isBack = back == 1 |
||||
} |
||||
const { formKeys, period, examId, ...reset } = this.data |
||||
const form = formKeys.reduce((pre, cur) => { |
||||
pre[cur] = reset[cur] |
||||
return pre |
||||
}, {}) |
||||
wx.ajax({ |
||||
method: 'POST', |
||||
url: '?r=wtx/exam/save-record', |
||||
data: { |
||||
examId, |
||||
period, |
||||
...form, |
||||
}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
examId: res, |
||||
}) |
||||
if (isBack) { |
||||
wx.navigateBack() |
||||
} |
||||
}) |
||||
}, |
||||
setFile(e: any) { |
||||
const { type, key } = e.currentTarget.dataset |
||||
const { examId, period } = this.data |
||||
const detail = e.detail || [] |
||||
let apiArr: any[] = [] |
||||
const fileList = this.data[key] || [] |
||||
detail.forEach((item: any) => { |
||||
const params: any = { |
||||
examId, |
||||
period, |
||||
type, |
||||
fileType: item.fileType, |
||||
name: item.name, |
||||
url: item.url, |
||||
videoUrl: item.videoUrl, |
||||
duration: item.duration, |
||||
} |
||||
fileList.push(params) |
||||
apiArr.push(this.saveAttachment(params)) |
||||
}) |
||||
this.setData({ |
||||
[key]: fileList, |
||||
}) |
||||
Promise.all(apiArr).then((res) => { |
||||
console.log(res) |
||||
}) |
||||
}, |
||||
saveAttachment(params: any) { |
||||
return wx.ajax({ |
||||
method: 'POST', |
||||
url: '?r=wtx/treatment/save-attachment', |
||||
data: params, |
||||
}) |
||||
}, |
||||
delFile(e: any) { |
||||
const { key } = e.currentTarget.dataset |
||||
const { index, item } = e.detail |
||||
if (item.attachmentId) { |
||||
wx.ajax({ |
||||
method: 'POST', |
||||
url: '?r=wtx/treatment/del-attachment', |
||||
data: { |
||||
attachmentId: item.attachmentId, |
||||
}, |
||||
}) |
||||
} |
||||
const fileList = this.data[key] |
||||
const newFileList = fileList.filter((_, i) => i !== index) |
||||
this.setData({ |
||||
[key]: newFileList, |
||||
}) |
||||
}, |
||||
handleDel() { |
||||
const { examId } = this.data |
||||
wx.showModal({ |
||||
title: '确认删除?', |
||||
confirmColor: 'rgba(246, 74, 58, 1)', |
||||
success: (res) => { |
||||
if (res.confirm) { |
||||
wx.ajax({ |
||||
method: 'POST', |
||||
url: '?r=wtx/exam/del', |
||||
data: { examId }, |
||||
}).then(() => { |
||||
wx.navigateBack() |
||||
}) |
||||
} |
||||
}, |
||||
}) |
||||
}, |
||||
handleBack() { |
||||
wx.navigateBack() |
||||
}, |
||||
}) |
||||
|
||||
export {} |
@ -0,0 +1,201 @@
@@ -0,0 +1,201 @@
|
||||
<view class="page"> |
||||
<view class="date-form"> |
||||
<view class="title"> |
||||
<image class="icon" src="{{imageUrl}}icon110.png?t={{Timestamp}}"></image> |
||||
<view class="label">检查时间</view> |
||||
<view class="content" wx:if="{{beginDate && endDate}}">{{beginDate}}至{{endDate}}</view> |
||||
<view class="content" wx:else>--</view> |
||||
</view> |
||||
</view> |
||||
<view class="select-hostipal"> |
||||
<view class="label">检查医院</view> |
||||
<div class="picker" bind:tap="handleSelectHospital"> |
||||
<view class="picker-content"> |
||||
<view class="content" data-place="--">{{hospitalName}}</view> |
||||
</view> |
||||
</div> |
||||
</view> |
||||
<view class="form"> |
||||
<view class="form-card"> |
||||
<view class="aside {{isBiochemical==1 && 'active'}}"> |
||||
<view class="line-top" style="border: none"></view> |
||||
<view class="order">1</view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="wrap"> |
||||
<view class="left" bind:tap="handleToggleFold" data-fold="fold1"> |
||||
<view class="title">生化检查</view> |
||||
<image class="icon {{fold1 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="status {{isBiochemical==1 && 'active'}}">{{isBiochemical==1?'已检查':'未检查'}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="c-body {{fold1 && 'fold'}}"> |
||||
<view class="module1"> |
||||
<view class="m-input-area"> |
||||
<view class="m-input"> |
||||
<view class="label"> |
||||
ALT |
||||
<view class="sub-label">丙氨酸氨基转移酶</view> |
||||
</view> |
||||
<input |
||||
disabled |
||||
bind:blur="updateSave" |
||||
bind:blur="updateSave" |
||||
type="number" |
||||
maxlength="5" |
||||
model:value="{{alt}}" |
||||
placeholder="--" |
||||
class="input" |
||||
placeholder-class="place-input" |
||||
/> |
||||
<view class="sub">U/L</view> |
||||
</view> |
||||
<view class="m-input"> |
||||
<view class="label"> |
||||
AST |
||||
<view class="sub-label">天门冬氨酸氨基转移酶</view> |
||||
</view> |
||||
<input |
||||
disabled |
||||
bind:blur="updateSave" |
||||
type="number" |
||||
maxlength="5" |
||||
model:value="{{ast}}" |
||||
placeholder="--" |
||||
class="input" |
||||
placeholder-class="place-input" |
||||
/> |
||||
<view class="sub">U/L</view> |
||||
</view> |
||||
<view class="m-input"> |
||||
<view class="label">总胆红素</view> |
||||
<input |
||||
disabled |
||||
bind:blur="updateSave" |
||||
type="number" |
||||
maxlength="4" |
||||
model:value="{{bilirubin}}" |
||||
placeholder="--" |
||||
class="input" |
||||
placeholder-class="place-input" |
||||
/> |
||||
<view class="sub">μmol/L</view> |
||||
</view> |
||||
</view> |
||||
<view class="m-title" wx:if="{{attachmentList2.length}}">请上传您的检查报告</view> |
||||
<view class="file-list"> |
||||
<uploadFile |
||||
upload="{{false}}" |
||||
delete="{{false}}" |
||||
fileList="{{attachmentList2}}" |
||||
maxNum="{{9}}" |
||||
data-key="attachmentList2" |
||||
data-type="2" |
||||
></uploadFile> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="form-card"> |
||||
<view class="aside {{isCFIxActivity==1 && 'active'}}"> |
||||
<view class="line-top"></view> |
||||
<view class="order">2</view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="wrap"> |
||||
<view class="left" bind:tap="handleToggleFold" data-fold="fold2"> |
||||
<view class="title">凝血因子 IX 活性</view> |
||||
<image class="icon {{fold2 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="status {{isCFIxActivity==1 && 'active'}}">{{isCFIxActivity==1?'已检查':'未检查'}}</view> |
||||
</view> |
||||
</view> |
||||
<view class="c-body {{fold2 && 'fold'}}"> |
||||
<view class="module2"> |
||||
<view class="m-input"> |
||||
<view class="label">您的凝血因子水平</view> |
||||
<input |
||||
disabled |
||||
bind:blur="updateSave" |
||||
type="number" |
||||
maxlength="3" |
||||
model:value="{{clottingFactor}}" |
||||
placeholder="--" |
||||
class="input" |
||||
placeholder-class="place-input" |
||||
/> |
||||
<view class="sub">%</view> |
||||
</view> |
||||
<view class="m-title" wx:if="{{attachmentList3.length}}">请上传您的检查报告</view> |
||||
<view class="file-list"> |
||||
<uploadFile |
||||
upload="{{false}}" |
||||
delete="{{false}}" |
||||
fileList="{{attachmentList3}}" |
||||
maxNum="{{9}}" |
||||
data-key="attachmentList3" |
||||
data-type="3" |
||||
></uploadFile> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="form-card"> |
||||
<view class="aside {{isOther==1 && 'active'}}"> |
||||
<view class="line-top"></view> |
||||
<view class="order" style="font-size: 24rpx">3</view> |
||||
<view class="line-bottom" style="border: none"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="wrap"> |
||||
<view class="left" bind:tap="handleToggleFold" data-fold="fold3"> |
||||
<view class="title">其他检查</view> |
||||
<image class="icon {{fold3 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view class="status {{isOther==1 && 'active'}}">{{isOther==1?'已检查':'未检查'}}</view> |
||||
</view> |
||||
<view class="content">您的其他项检查</view> |
||||
</view> |
||||
<view class="c-body {{fold3 && 'fold'}}"> |
||||
<view class="module3"> |
||||
<textarea |
||||
disabled |
||||
class="text-area" |
||||
model:value="{{otherInfo}}" |
||||
placeholder="--" |
||||
disable-default-padding |
||||
bind:blur="updateSave" |
||||
></textarea> |
||||
<view class="m-title" wx:if="{{attachmentList10.length}}">提交您的检测报告</view> |
||||
<view class="file-list"> |
||||
<uploadFile |
||||
upload="{{false}}" |
||||
delete="{{false}}" |
||||
fileList="{{attachmentList10}}" |
||||
maxNum="{{9}}" |
||||
data-key="attachmentList10" |
||||
data-type="10" |
||||
></uploadFile> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
|
||||
<popup |
||||
show="{{popupShow}}" |
||||
type="{{popupType}}" |
||||
params="{{popupParams}}" |
||||
bind:ok="handlePopupOk" |
||||
bind:cancel="handlePopupCancel" |
||||
></popup> |
@ -1,7 +1,6 @@
@@ -1,7 +1,6 @@
|
||||
{ |
||||
"navigationStyle": "custom", |
||||
"usingComponents": { |
||||
"navbar": "/components/navbar/index", |
||||
"doctor-tab-bar": "/doctor/components/doctor-tab-bar/index" |
||||
"navbar": "/components/navbar/index" |
||||
} |
||||
} |
||||
|
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
{ |
||||
"navigationBarTitleText": "我的诊前检查报告", |
||||
"usingComponents": { |
||||
"uploadFile": "/components/uploadFile/index", |
||||
"popup": "/components/popup/index" |
||||
} |
||||
} |
@ -0,0 +1,483 @@
@@ -0,0 +1,483 @@
|
||||
page { |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
|
||||
.page-tip { |
||||
padding: 20rpx; |
||||
font-size: 28rpx; |
||||
color: rgba(255, 163, 112, 1); |
||||
line-height: 40rpx; |
||||
text-align: center; |
||||
background-color: rgba(255, 247, 232, 1); |
||||
} |
||||
.page { |
||||
padding: 32rpx 30rpx; |
||||
.date-form { |
||||
padding: 24rpx 32rpx; |
||||
background-color: #fff; |
||||
border-radius: 24rpx; |
||||
.title { |
||||
display: flex; |
||||
align-items: center; |
||||
.icon { |
||||
flex-shrink: 0; |
||||
width: 48rpx; |
||||
height: 48rpx; |
||||
} |
||||
.label { |
||||
flex-shrink: 0; |
||||
margin-left: 16rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(0, 0, 0, 1); |
||||
} |
||||
.content { |
||||
margin-left: 32rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
} |
||||
.form { |
||||
margin-top: 48rpx; |
||||
.form-header { |
||||
padding-bottom: 24rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
.form-title { |
||||
font-size: 36rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
font-weight: bold; |
||||
} |
||||
.order { |
||||
display: flex; |
||||
align-items: baseline; |
||||
color: rgba(161, 164, 172, 1); |
||||
font-size: 28rpx; |
||||
.green { |
||||
font-size: 44rpx; |
||||
color: rgba(14, 209, 167, 1); |
||||
font-weight: bold; |
||||
} |
||||
.all { |
||||
font-size: 28rpx; |
||||
} |
||||
} |
||||
} |
||||
.form-card { |
||||
display: flex; |
||||
gap: 24rpx; |
||||
.aside { |
||||
flex-shrink: 0; |
||||
display: flex; |
||||
flex-direction: column; |
||||
align-items: center; |
||||
.line-top { |
||||
flex-shrink: 0; |
||||
height: 32rpx; |
||||
border-left: 1px dashed rgba(207, 209, 213, 1); |
||||
} |
||||
.order { |
||||
flex-shrink: 0; |
||||
width: 40rpx; |
||||
height: 40rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
font-size: 32rpx; |
||||
color: rgba(255, 255, 255, 1); |
||||
background-color: rgba(207, 209, 213, 1); |
||||
border-radius: 50%; |
||||
} |
||||
.line-bottom { |
||||
flex: 1; |
||||
height: 20rpx; |
||||
border-left: 1px dashed rgba(207, 209, 213, 1); |
||||
} |
||||
&.active { |
||||
.order { |
||||
color: #fff; |
||||
background-color: rgba(28, 107, 255, 1); |
||||
} |
||||
.line-bottom, |
||||
.line-top { |
||||
background-color: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
} |
||||
.container { |
||||
flex: 1; |
||||
background-color: #fff; |
||||
border-radius: 24rpx; |
||||
margin-bottom: 24rpx; |
||||
.c-header { |
||||
padding: 32rpx 32rpx 32rpx 0; |
||||
.wrap { |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
.left { |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 12rpx; |
||||
.title { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
font-weight: bold; |
||||
display: flex; |
||||
gap: 24rpx; |
||||
align-items: center; |
||||
&::before { |
||||
content: ''; |
||||
width: 8rpx; |
||||
height: 36rpx; |
||||
border-radius: 0 8rpx 8rpx 0; |
||||
background: rgba(28, 107, 255, 1); |
||||
} |
||||
} |
||||
.icon { |
||||
width: 32rpx; |
||||
height: 32rpx; |
||||
transition: transform 0.3s; |
||||
&.turn { |
||||
transform: rotate(180deg); |
||||
} |
||||
} |
||||
} |
||||
.status { |
||||
font-size: 32rpx; |
||||
color: rgba(137, 141, 151, 1); |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 12rpx; |
||||
.icon { |
||||
width: 32rpx; |
||||
height: 32rpx; |
||||
} |
||||
&.active { |
||||
color: rgba(14, 209, 167, 1); |
||||
} |
||||
} |
||||
} |
||||
.content { |
||||
padding: 16rpx 32rpx 0; |
||||
font-size: 24rpx; |
||||
color: rgba(96, 97, 99, 1); |
||||
line-height: 36rpx; |
||||
} |
||||
} |
||||
.c-body { |
||||
max-height: 100vh; |
||||
transition: all 0.3s; |
||||
&.fold { |
||||
max-height: 0; |
||||
overflow: hidden; |
||||
} |
||||
.module1 { |
||||
padding: 16rpx 32rpx 32rpx; |
||||
.m-title { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.file-list { |
||||
margin-top: 24rpx; |
||||
} |
||||
} |
||||
.module2 { |
||||
padding: 16rpx 32rpx 32rpx; |
||||
.m-input-area { |
||||
padding: 0 32rpx; |
||||
border-radius: 24rpx; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
.m-input { |
||||
padding: 32rpx 0; |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 32rpx; |
||||
border-bottom: 1px solid rgba(241, 241, 244, 1); |
||||
.label { |
||||
flex-shrink: 0; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
width: 7em; |
||||
.sub-label { |
||||
font-size: 20rpx; |
||||
} |
||||
} |
||||
.input { |
||||
width: 3em; |
||||
font-size: 32rpx; |
||||
height: 72rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.place-input { |
||||
color: rgba(161, 164, 172, 0.5); |
||||
} |
||||
.sub { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
} |
||||
.m-title { |
||||
margin-top: 48rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.file-list { |
||||
margin-top: 24rpx; |
||||
} |
||||
} |
||||
.module3 { |
||||
padding: 0 32rpx 32rpx; |
||||
.m-input { |
||||
padding: 0 32rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 32rpx; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
border-radius: 24rpx; |
||||
.label { |
||||
flex-shrink: 0; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.input { |
||||
flex: 1; |
||||
font-size: 32rpx; |
||||
height: 96rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.place-input { |
||||
color: rgba(161, 164, 172, 0.5); |
||||
} |
||||
.sub { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
.m-title { |
||||
margin-top: 48rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.file-list { |
||||
margin-top: 24rpx; |
||||
} |
||||
} |
||||
.module4 { |
||||
padding: 0 32rpx 32rpx; |
||||
.m-select { |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
gap: 28rpx; |
||||
.m-item { |
||||
padding: 12rpx 24rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(137, 141, 151, 1); |
||||
background: #f7f7fa; |
||||
border-radius: 12rpx 12rpx 12rpx 12rpx; |
||||
&.active { |
||||
color: #fff; |
||||
background-color: rgba(246, 74, 58, 1); |
||||
} |
||||
} |
||||
} |
||||
.m-title { |
||||
margin-top: 48rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.file-list { |
||||
margin-top: 24rpx; |
||||
} |
||||
} |
||||
.module5 { |
||||
padding: 0 32rpx 32rpx; |
||||
.m-select-title { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.m-select { |
||||
margin-top: 24rpx; |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
gap: 28rpx; |
||||
.m-item { |
||||
padding: 12rpx 24rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(137, 141, 151, 1); |
||||
background: #f7f7fa; |
||||
border-radius: 12rpx 12rpx 12rpx 12rpx; |
||||
&.active { |
||||
color: #fff; |
||||
background-color: rgba(246, 74, 58, 1); |
||||
} |
||||
} |
||||
} |
||||
.m-title { |
||||
margin-top: 48rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.file-list { |
||||
margin-top: 24rpx; |
||||
} |
||||
} |
||||
.module6 { |
||||
padding: 0 32rpx 32rpx; |
||||
.m-select-title { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.m-select { |
||||
margin-top: 24rpx; |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
gap: 28rpx; |
||||
.m-item { |
||||
padding: 12rpx 24rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(137, 141, 151, 1); |
||||
background: #f7f7fa; |
||||
border-radius: 12rpx 12rpx 12rpx 12rpx; |
||||
&.active { |
||||
color: #fff; |
||||
background-color: rgba(246, 74, 58, 1); |
||||
} |
||||
} |
||||
} |
||||
.m-title { |
||||
margin-top: 48rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.file-list { |
||||
margin-top: 24rpx; |
||||
} |
||||
} |
||||
.module7 { |
||||
padding: 0 32rpx 32rpx; |
||||
.m-select-title { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.m-select { |
||||
margin-top: 24rpx; |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
gap: 28rpx; |
||||
.m-item { |
||||
padding: 12rpx 24rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(137, 141, 151, 1); |
||||
background: #f7f7fa; |
||||
border-radius: 12rpx 12rpx 12rpx 12rpx; |
||||
&.active { |
||||
color: #fff; |
||||
background-color: rgba(246, 74, 58, 1); |
||||
} |
||||
} |
||||
} |
||||
.m-title { |
||||
margin-top: 48rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.file-list { |
||||
margin-top: 24rpx; |
||||
} |
||||
} |
||||
.module8 { |
||||
padding: 0 32rpx 32rpx; |
||||
.m-input { |
||||
padding: 0 32rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
gap: 32rpx; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
border-radius: 24rpx; |
||||
.label { |
||||
flex-shrink: 0; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.input { |
||||
flex: 1; |
||||
font-size: 32rpx; |
||||
height: 96rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.place-input { |
||||
color: rgba(161, 164, 172, 0.5); |
||||
} |
||||
.sub { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
.m-title { |
||||
margin-top: 48rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.file-list { |
||||
margin-top: 24rpx; |
||||
} |
||||
} |
||||
.module9 { |
||||
padding: 0 32rpx 32rpx; |
||||
.m-select-title { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.m-select { |
||||
margin-top: 24rpx; |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
gap: 28rpx; |
||||
.m-item { |
||||
padding: 12rpx 24rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(137, 141, 151, 1); |
||||
background: #f7f7fa; |
||||
border-radius: 12rpx 12rpx 12rpx 12rpx; |
||||
&.active { |
||||
color: #fff; |
||||
background-color: rgba(246, 74, 58, 1); |
||||
} |
||||
} |
||||
} |
||||
.m-title { |
||||
margin-top: 48rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.file-list { |
||||
margin-top: 24rpx; |
||||
} |
||||
} |
||||
.module10 { |
||||
padding: 0 32rpx 32rpx; |
||||
.text-area { |
||||
padding: 24rpx 32rpx; |
||||
width: 100%; |
||||
height: 182rpx; |
||||
border-radius: 12rpx; |
||||
box-sizing: border-box; |
||||
background-color: rgba(247, 247, 250, 1); |
||||
} |
||||
.m-title { |
||||
margin-top: 48rpx; |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
.file-list { |
||||
margin-top: 24rpx; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,224 @@
@@ -0,0 +1,224 @@
|
||||
const app = getApp<IAppOption>() |
||||
|
||||
Page({ |
||||
data: { |
||||
popupShow: false, |
||||
popupType: 'preDiagnosisReportDate', // 确认绑定曾经扫码医生
|
||||
popupParams: {}, |
||||
|
||||
fold1: true, |
||||
fold2: true, |
||||
fold3: true, |
||||
fold4: true, |
||||
fold5: true, |
||||
fold6: true, |
||||
fold7: true, |
||||
fold8: true, |
||||
fold9: true, |
||||
fold10: true, |
||||
|
||||
// form
|
||||
examId: '', |
||||
period: '1', |
||||
patientId: '', |
||||
|
||||
beginDate: '', |
||||
endDate: '', |
||||
isBloodRoutine: 2, |
||||
isBiochemical: 2, |
||||
alt: '', |
||||
ast: '', |
||||
bilirubin: '', |
||||
isCFIxActivity: 2, |
||||
clottingFactor: '', |
||||
isCFIxInhibitor: 2, |
||||
cFII: '', |
||||
isHepatitisB: 2, |
||||
hbsAg: '', |
||||
hbvDNA: '', |
||||
isHepatitisC: 2, |
||||
hcvAntibody: '', |
||||
hcvRNA: '', |
||||
isHivAntibody: 2, |
||||
hiv: '', |
||||
isAfp: 2, |
||||
afp: '', |
||||
isAav: 2, |
||||
aav: '', |
||||
isOther: 2, |
||||
otherInfo: '', |
||||
|
||||
attachmentList1: [], |
||||
attachmentList2: [], |
||||
attachmentList3: [], |
||||
attachmentList4: [], |
||||
attachmentList5: [], |
||||
attachmentList6: [], |
||||
attachmentList7: [], |
||||
attachmentList8: [], |
||||
attachmentList9: [], |
||||
attachmentList10: [], |
||||
|
||||
formKeys: [ |
||||
'beginDate', |
||||
'endDate', |
||||
'isBloodRoutine', |
||||
'isBiochemical', |
||||
'alt', |
||||
'ast', |
||||
'bilirubin', |
||||
'isCFIxActivity', |
||||
'clottingFactor', |
||||
'isCFIxInhibitor', |
||||
'cFII', |
||||
'isHepatitisB', |
||||
'hbsAg', |
||||
'hbvDNA', |
||||
'isHepatitisC', |
||||
'hcvAntibody', |
||||
'hcvRNA', |
||||
'isHivAntibody', |
||||
'hiv', |
||||
'isAfp', |
||||
'afp', |
||||
'isAav', |
||||
'aav', |
||||
'isOther', |
||||
'otherInfo', |
||||
], |
||||
|
||||
checkNum: 0, |
||||
checkList: [ |
||||
'isBloodRoutine', |
||||
'isBiochemical', |
||||
'isCFIxActivity', |
||||
'isCFIxInhibitor', |
||||
'isHepatitisB', |
||||
'isHepatitisC', |
||||
'isHivAntibody', |
||||
'isAfp', |
||||
'isAav', |
||||
'isOther', |
||||
], |
||||
|
||||
dict: { |
||||
result: {}, |
||||
number: {}, |
||||
}, |
||||
}, |
||||
onLoad(options) { |
||||
this.setData({ |
||||
examId: options.examid || '', |
||||
period: options.period || '1', |
||||
patientId: options.id || '', |
||||
}) |
||||
if (options.period === '2') { |
||||
wx.setNavigationBarTitle({ |
||||
title: '我的检查报告', |
||||
}) |
||||
} |
||||
}, |
||||
onShow() { |
||||
const { formKeys, period } = this.data |
||||
app.waitLogin().then(() => { |
||||
this.getDict() |
||||
this.getDetail() |
||||
}) |
||||
}, |
||||
handleInput(e) { |
||||
const { key, length } = e.currentTarget.dataset |
||||
const value = e.detail.value |
||||
this.setData({ |
||||
[`${key}`]: this.validateInput(value, length), |
||||
}) |
||||
}, |
||||
validateInput(val, integerLimit) { |
||||
let num = val.toString() |
||||
// 清除“数字”和“.”以外的字符
|
||||
num = num.replace(/[^\d.]/g, '') |
||||
// 只保留第一个.,清除多余的
|
||||
num = num.replace(/\.{2,}/g, '.') |
||||
// 限制整数位位数
|
||||
const index = num.indexOf('.') |
||||
if (index !== -1) { |
||||
num = num.slice(0, index + integerLimit + 1) |
||||
} else { |
||||
num = num.slice(0, integerLimit) |
||||
} |
||||
return num |
||||
}, |
||||
getDict() { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/treatment/get-dict', |
||||
data: {}, |
||||
}).then((res) => { |
||||
this.setData({ |
||||
dict: res, |
||||
}) |
||||
}) |
||||
}, |
||||
getDetail() { |
||||
const { examId, formKeys } = this.data |
||||
if (!examId) return |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/treatment/get-exam-detail', |
||||
data: { |
||||
examId: examId, |
||||
patientId: this.data.patientId, |
||||
}, |
||||
}).then((res) => { |
||||
const reset = formKeys.reduce((pre, cur) => { |
||||
pre[cur] = res[cur] || '' |
||||
return pre |
||||
}, {}) |
||||
this.setData({ |
||||
...reset, |
||||
attachmentList1: res.attachmentList[1] || [], |
||||
attachmentList2: res.attachmentList[2] || [], |
||||
attachmentList3: res.attachmentList[3] || [], |
||||
attachmentList4: res.attachmentList[4] || [], |
||||
attachmentList5: res.attachmentList[5] || [], |
||||
attachmentList6: res.attachmentList[6] || [], |
||||
attachmentList7: res.attachmentList[7] || [], |
||||
attachmentList8: res.attachmentList[8] || [], |
||||
attachmentList9: res.attachmentList[9] || [], |
||||
attachmentList10: res.attachmentList[10] || [], |
||||
}) |
||||
this.getCheckNum() |
||||
}) |
||||
}, |
||||
handleToggleFold(e: any) { |
||||
const { fold } = e.currentTarget.dataset |
||||
this.setData({ |
||||
[fold]: !this.data[fold], |
||||
}) |
||||
}, |
||||
handleToggleCheck(e: any) { |
||||
const { check, fold } = e.currentTarget.dataset |
||||
let foldValue = this.data[fold] |
||||
if (this.data[check] == 2 || !this.data[check]) { |
||||
foldValue = false |
||||
} |
||||
this.setData({ |
||||
[check]: this.data[check] == 1 ? 2 : 1, |
||||
[fold]: foldValue, |
||||
}) |
||||
this.getCheckNum() |
||||
}, |
||||
getCheckNum() { |
||||
const { checkList } = this.data |
||||
let num = 0 |
||||
checkList.forEach((item) => { |
||||
if (this.data[item] == 1) { |
||||
num += 1 |
||||
} |
||||
}) |
||||
this.setData({ |
||||
checkNum: num, |
||||
}) |
||||
}, |
||||
}) |
||||
|
||||
export {} |
@ -0,0 +1,557 @@
@@ -0,0 +1,557 @@
|
||||
<view class="page-tip">以下内容仅供参考,不作为任何临床诊断依据</view> |
||||
<view class="page"> |
||||
<view class="date-form"> |
||||
<view class="title"> |
||||
<image class="icon" src="{{imageUrl}}icon110.png?t={{Timestamp}}"></image> |
||||
<view class="label">检查时间</view> |
||||
<view class="content" wx:if="{{beginDate && endDate}}">{{beginDate}}至{{endDate}}</view> |
||||
<view class="content" wx:else>--</view> |
||||
</view> |
||||
</view> |
||||
<view class="form"> |
||||
<view class="form-header"> |
||||
<view class="form-title">您的诊前检查项目</view> |
||||
<view class="order"> |
||||
<view class="green">{{checkNum}}</view> |
||||
/ |
||||
<view class="all">10</view> |
||||
</view> |
||||
</view> |
||||
<view class="form-card"> |
||||
<view class="aside {{isBloodRoutine==1 && 'active'}}"> |
||||
<view class="line-top" style="border: none"></view> |
||||
<view class="order">1</view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="wrap"> |
||||
<view class="left" bind:tap="handleToggleFold" data-fold="fold1"> |
||||
<view class="title">血常规检查</view> |
||||
<image class="icon {{fold1 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view |
||||
class="status {{isBloodRoutine==1 && 'active'}} {{isBloodRoutine==1 && 'active'}}" |
||||
catch:tap="handleToggleCheck" |
||||
data-check="isBloodRoutine" |
||||
data-fold="fold1" |
||||
> |
||||
{{isBloodRoutine==1?'已检查':'未检查'}} |
||||
</view> |
||||
</view> |
||||
<view class="content">重点检查项目:白细胞计数)WBC)血红蛋白(HGB)血小板计数(PLT)</view> |
||||
</view> |
||||
<view class="c-body {{fold1 && 'fold'}}"> |
||||
<view class="module1"> |
||||
<view class="m-title" wx:if="{{attachmentList1.length}}">请上传您的检查报告</view> |
||||
<view class="file-list"> |
||||
<uploadFile |
||||
upload="{{false}}" |
||||
delete="{{false}}" |
||||
fileList="{{attachmentList1}}" |
||||
maxNum="{{9}}" |
||||
data-key="attachmentList1" |
||||
data-type="1" |
||||
></uploadFile> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="form-card"> |
||||
<view class="aside {{isBiochemical==1 && 'active'}}"> |
||||
<view class="line-top"></view> |
||||
<view class="order">2</view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="wrap"> |
||||
<view class="left" bind:tap="handleToggleFold" data-fold="fold2"> |
||||
<view class="title">生化检查</view> |
||||
<image class="icon {{fold2 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view |
||||
class="status {{isBiochemical==1 && 'active'}} {{isBiochemical==1 && 'active'}}" |
||||
catch:tap="handleToggleCheck" |
||||
data-check="isBiochemical" |
||||
data-fold="fold2" |
||||
> |
||||
{{isBiochemical==1?'已检查':'未检查'}} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="c-body {{fold2 && 'fold'}}"> |
||||
<view class="module2"> |
||||
<view class="m-input-area"> |
||||
<view class="m-input"> |
||||
<view class="label"> |
||||
ALT |
||||
<view class="sub-label">丙氨酸氨基转移酶</view> |
||||
</view> |
||||
<input |
||||
disabled |
||||
bind:blur="updateSave" |
||||
type="digit" |
||||
bind:input="handleInput" |
||||
data-key="alt" |
||||
data-length="5" |
||||
value="{{alt}}" |
||||
placeholder="--" |
||||
class="input" |
||||
placeholder-class="place-input" |
||||
/> |
||||
<view class="sub">U/L</view> |
||||
</view> |
||||
<view class="m-input"> |
||||
<view class="label"> |
||||
AST |
||||
<view class="sub-label">天门冬氨酸氨基转移酶</view> |
||||
</view> |
||||
<input |
||||
disabled |
||||
bind:blur="updateSave" |
||||
type="digit" |
||||
bind:input="handleInput" |
||||
data-key="ast" |
||||
data-length="5" |
||||
value="{{ast}}" |
||||
placeholder="--" |
||||
class="input" |
||||
placeholder-class="place-input" |
||||
/> |
||||
<view class="sub">U/L</view> |
||||
</view> |
||||
<view class="m-input"> |
||||
<view class="label">总胆红素</view> |
||||
<input |
||||
disabled |
||||
bind:blur="updateSave" |
||||
type="digit" |
||||
bind:input="handleInput" |
||||
data-key="bilirubin" |
||||
data-length="4" |
||||
value="{{bilirubin}}" |
||||
placeholder="--" |
||||
class="input" |
||||
placeholder-class="place-input" |
||||
/> |
||||
<view class="sub">μmol/L</view> |
||||
</view> |
||||
</view> |
||||
<view class="m-title" wx:if="{{attachmentList2.length}}">请上传您的检查报告</view> |
||||
<view class="file-list"> |
||||
<uploadFile |
||||
upload="{{false}}" |
||||
delete="{{false}}" |
||||
fileList="{{attachmentList2}}" |
||||
maxNum="{{9}}" |
||||
data-key="attachmentList2" |
||||
data-type="2" |
||||
></uploadFile> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="form-card"> |
||||
<view class="aside {{isCFIxActivity==1 && 'active'}}"> |
||||
<view class="line-top"></view> |
||||
<view class="order">3</view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="wrap"> |
||||
<view class="left" bind:tap="handleToggleFold" data-fold="fold3"> |
||||
<view class="title">凝血因子 IX 活性</view> |
||||
<image class="icon {{fold3 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view |
||||
class="status {{isCFIxActivity==1 && 'active'}}" |
||||
catch:tap="handleToggleCheck" |
||||
data-check="isCFIxActivity" |
||||
data-fold="fold3" |
||||
> |
||||
{{isCFIxActivity==1?'已检查':'未检查'}} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="c-body {{fold3 && 'fold'}}"> |
||||
<view class="module3"> |
||||
<view class="m-input"> |
||||
<view class="label">您的凝血因子水平</view> |
||||
<input |
||||
disabled |
||||
bind:blur="updateSave" |
||||
type="digit" |
||||
bind:input="handleInput" |
||||
data-key="clottingFactor" |
||||
data-length="3" |
||||
value="{{clottingFactor}}" |
||||
placeholder="--" |
||||
class="input" |
||||
placeholder-class="place-input" |
||||
/> |
||||
<view class="sub">%</view> |
||||
</view> |
||||
<view class="m-title" wx:if="{{attachmentList3.length}}">请上传您的检查报告</view> |
||||
<view class="file-list"> |
||||
<uploadFile |
||||
upload="{{false}}" |
||||
delete="{{false}}" |
||||
fileList="{{attachmentList3}}" |
||||
maxNum="{{9}}" |
||||
data-key="attachmentList3" |
||||
data-type="3" |
||||
></uploadFile> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="form-card"> |
||||
<view class="aside {{isCFIxInhibitor==1 && 'active'}}"> |
||||
<view class="line-top"></view> |
||||
<view class="order">4</view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="wrap"> |
||||
<view class="left" bind:tap="handleToggleFold" data-fold="fold4"> |
||||
<view class="title">凝血因子 IX 抑制物检测</view> |
||||
<image class="icon {{fold4 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view |
||||
class="status {{isCFIxInhibitor==1 && 'active'}}" |
||||
catch:tap="handleToggleCheck" |
||||
data-check="isCFIxInhibitor" |
||||
data-fold="fold4" |
||||
> |
||||
{{isCFIxInhibitor==1?'已检查':'未检查'}} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="c-body {{fold4 && 'fold'}}"> |
||||
<view class="module4"> |
||||
<view class="m-select"> |
||||
<view class="m-item {{cFII==index && 'active'}}" wx:for="{{dict.result}}" wx:key="index">{{item}}</view> |
||||
</view> |
||||
<view class="m-title" wx:if="{{attachmentList4.length}}">可上传您的抑制物检查结果</view> |
||||
<view class="file-list"> |
||||
<uploadFile |
||||
upload="{{false}}" |
||||
delete="{{false}}" |
||||
fileList="{{attachmentList4}}" |
||||
maxNum="{{9}}" |
||||
data-key="attachmentList4" |
||||
data-type="4" |
||||
></uploadFile> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="form-card"> |
||||
<view class="aside {{isHepatitisB==1 && 'active'}}"> |
||||
<view class="line-top"></view> |
||||
<view class="order">5</view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="wrap"> |
||||
<view class="left" bind:tap="handleToggleFold" data-fold="fold5"> |
||||
<view class="title">乙型肝炎相关检查</view> |
||||
<image class="icon {{fold5 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view |
||||
class="status {{isHepatitisB==1 && 'active'}}" |
||||
catch:tap="handleToggleCheck" |
||||
data-check="isHepatitisB" |
||||
data-fold="fold5" |
||||
> |
||||
{{isHepatitisB==1?'已检查':'未检查'}} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="c-body {{fold5 && 'fold'}}"> |
||||
<view class="module5"> |
||||
<view class="m-select-title">乙型肝炎病毒表面抗原(HBsAg)</view> |
||||
<view class="m-select"> |
||||
<view class="m-item {{hbsAg==index && 'active'}}" wx:for="{{dict.result}}" wx:key="index">{{item}}</view> |
||||
</view> |
||||
<view class="m-select-title" style="margin-top: 48rpx">乙型肝炎病毒脱氧核糖核酸(HBV - DNA)</view> |
||||
<view class="m-select"> |
||||
<view class="m-item {{hbvDNA==index && 'active'}}" wx:for="{{dict.number}}" wx:key="index">{{item}}</view> |
||||
</view> |
||||
<view class="m-title" wx:if="{{attachmentList5.length}}">请上传乙型肝炎检查报告</view> |
||||
<view class="file-list"> |
||||
<uploadFile |
||||
upload="{{false}}" |
||||
delete="{{false}}" |
||||
fileList="{{attachmentList5}}" |
||||
maxNum="{{9}}" |
||||
data-key="attachmentList5" |
||||
data-type="5" |
||||
></uploadFile> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="form-card"> |
||||
<view class="aside {{isHepatitisC==1 && 'active'}}"> |
||||
<view class="line-top"></view> |
||||
<view class="order">6</view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="wrap"> |
||||
<view class="left" bind:tap="handleToggleFold" data-fold="fold6"> |
||||
<view class="title">丙型肝炎相关检查</view> |
||||
<image class="icon {{fold6 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view |
||||
class="status {{isHepatitisC==1 && 'active'}}" |
||||
catch:tap="handleToggleCheck" |
||||
data-check="isHepatitisC" |
||||
data-fold="fold6" |
||||
> |
||||
{{isHepatitisC==1?'已检查':'未检查'}} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="c-body {{fold6 && 'fold'}}"> |
||||
<view class="module6"> |
||||
<view class="m-select-title">丙型肝炎病毒抗体(抗 - HCV)</view> |
||||
<view class="m-select"> |
||||
<view class="m-item {{hcvAntibody==index && 'active'}}" wx:for="{{dict.result}}" wx:key="index"> |
||||
{{item}} |
||||
</view> |
||||
</view> |
||||
<view class="m-select-title" style="margin-top: 48rpx">丙型肝炎病毒核糖核酸(HCV - RNA)</view> |
||||
<view class="m-select"> |
||||
<view class="m-item {{hcvRNA==index && 'active'}}" wx:for="{{dict.result}}" wx:key="index">{{item}}</view> |
||||
</view> |
||||
<view class="m-title" wx:if="{{attachmentList6.length}}">请上传丙型肝炎检查报告</view> |
||||
<view class="file-list"> |
||||
<uploadFile |
||||
upload="{{false}}" |
||||
delete="{{false}}" |
||||
fileList="{{attachmentList6}}" |
||||
maxNum="{{9}}" |
||||
data-key="attachmentList6" |
||||
data-type="6" |
||||
></uploadFile> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="form-card"> |
||||
<view class="aside {{isHivAntibody==1 && 'active'}}"> |
||||
<view class="line-top"></view> |
||||
<view class="order">7</view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="wrap"> |
||||
<view class="left" bind:tap="handleToggleFold" data-fold="fold7"> |
||||
<view class="title">HIV抗体</view> |
||||
<image class="icon {{fold7 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view |
||||
class="status {{isHivAntibody==1 && 'active'}}" |
||||
catch:tap="handleToggleCheck" |
||||
data-check="isHivAntibody" |
||||
data-fold="fold7" |
||||
> |
||||
{{isHivAntibody==1?'已检查':'未检查'}} |
||||
</view> |
||||
</view> |
||||
<view class="content">类免疫缺陷病毒抗体(HIV - Ab)</view> |
||||
</view> |
||||
<view class="c-body {{fold7 && 'fold'}}"> |
||||
<view class="module7"> |
||||
<view class="m-select-title">填选您的HIV检查结果</view> |
||||
<view class="m-select"> |
||||
<view class="m-item {{hiv==index && 'active'}}" wx:for="{{dict.result}}" wx:key="index">{{item}}</view> |
||||
</view> |
||||
<view class="m-title" wx:if="{{attachmentList7.length}}">提交您的HIV检测报告</view> |
||||
<view class="file-list"> |
||||
<uploadFile |
||||
upload="{{false}}" |
||||
delete="{{false}}" |
||||
fileList="{{attachmentList7}}" |
||||
maxNum="{{9}}" |
||||
data-key="attachmentList7" |
||||
data-type="7" |
||||
></uploadFile> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="form-card"> |
||||
<view class="aside {{isAfp==1 && 'active'}}"> |
||||
<view class="line-top"></view> |
||||
<view class="order">8</view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="wrap"> |
||||
<view class="left" bind:tap="handleToggleFold" data-fold="fold8"> |
||||
<view class="title">甲胎蛋白(AFP)检测</view> |
||||
<image class="icon {{fold8 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view |
||||
class="status {{isAfp==1 && 'active'}}" |
||||
catch:tap="handleToggleCheck" |
||||
data-check="isAfp" |
||||
data-fold="fold8" |
||||
> |
||||
{{isAfp==1?'已检查':'未检查'}} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="c-body {{fold8 && 'fold'}}"> |
||||
<view class="module8"> |
||||
<view class="m-input"> |
||||
<view class="label">您的(AFP)检测</view> |
||||
<input |
||||
disabled |
||||
bind:blur="updateSave" |
||||
type="digit" |
||||
bind:input="handleInput" |
||||
data-key="afp" |
||||
data-length="3" |
||||
value="{{afp}}" |
||||
placeholder="--" |
||||
class="input" |
||||
placeholder-class="place-input" |
||||
/> |
||||
<view class="sub">μg/L</view> |
||||
</view> |
||||
<view class="m-title" wx:if="{{attachmentList8.length}}">提交您的AFP 检测报告</view> |
||||
<view class="file-list"> |
||||
<uploadFile |
||||
upload="{{false}}" |
||||
delete="{{false}}" |
||||
fileList="{{attachmentList8}}" |
||||
maxNum="{{9}}" |
||||
data-key="attachmentList8" |
||||
data-type="8" |
||||
></uploadFile> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="form-card"> |
||||
<view class="aside {{isAav==1 && 'active'}}"> |
||||
<view class="line-top"></view> |
||||
<view class="order">9</view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="wrap"> |
||||
<view class="left" bind:tap="handleToggleFold" data-fold="fold9"> |
||||
<view class="title">AAV 抗体检查</view> |
||||
<image class="icon {{fold9 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view |
||||
class="status {{isAav==1 && 'active'}}" |
||||
catch:tap="handleToggleCheck" |
||||
data-check="isAav" |
||||
data-fold="fold9" |
||||
> |
||||
{{isAav==1?'已检查':'未检查'}} |
||||
</view> |
||||
</view> |
||||
<view class="content">提交您的AAV抗体检查报告</view> |
||||
</view> |
||||
<view class="c-body {{fold9 && 'fold'}}"> |
||||
<view class="module9"> |
||||
<view class="m-select-title">填选您的AAV检查结果</view> |
||||
<view class="m-select"> |
||||
<view class="m-item {{aav==index && 'active'}}" wx:for="{{dict.result}}" wx:key="index">{{item}}</view> |
||||
</view> |
||||
<view class="m-title" wx:if="{{attachmentList9.length}}">提交您的AAV检测报告</view> |
||||
<view class="file-list"> |
||||
<uploadFile |
||||
upload="{{false}}" |
||||
delete="{{false}}" |
||||
fileList="{{attachmentList9}}" |
||||
maxNum="{{9}}" |
||||
data-key="attachmentList9" |
||||
data-type="9" |
||||
></uploadFile> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="form-card"> |
||||
<view class="aside {{isOther==1 && 'active'}}"> |
||||
<view class="line-top"></view> |
||||
<view class="order" style="font-size: 24rpx">10</view> |
||||
<view class="line-bottom"></view> |
||||
</view> |
||||
<view class="container"> |
||||
<view class="c-header"> |
||||
<view class="wrap"> |
||||
<view class="left" bind:tap="handleToggleFold" data-fold="fold10"> |
||||
<view class="title">其他检查</view> |
||||
<image class="icon {{fold10 && 'turn'}}" src="{{imageUrl}}icon63.png?t={{Timestamp}}"></image> |
||||
</view> |
||||
<view |
||||
class="status {{isOther==1 && 'active'}}" |
||||
catch:tap="handleToggleCheck" |
||||
data-check="isOther" |
||||
data-fold="fold10" |
||||
> |
||||
{{isOther==1?'已检查':'未检查'}} |
||||
</view> |
||||
</view> |
||||
<view class="content">您的其他项检查</view> |
||||
</view> |
||||
<view class="c-body {{fold10 && 'fold'}}"> |
||||
<view class="module10"> |
||||
<textarea |
||||
disabled |
||||
class="text-area" |
||||
model:value="{{otherInfo}}" |
||||
placeholder="--" |
||||
disable-default-padding |
||||
></textarea> |
||||
<view class="m-title" wx:if="{{attachmentList10.length}}">提交您的检测报告</view> |
||||
<view class="file-list"> |
||||
<uploadFile |
||||
upload="{{false}}" |
||||
delete="{{false}}" |
||||
fileList="{{attachmentList10}}" |
||||
maxNum="{{9}}" |
||||
data-key="attachmentList10" |
||||
data-type="10" |
||||
></uploadFile> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
|
||||
<popup |
||||
show="{{popupShow}}" |
||||
type="{{popupType}}" |
||||
params="{{popupParams}}" |
||||
bind:ok="handlePopupOk" |
||||
bind:cancel="handlePopupCancel" |
||||
></popup> |
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
{ |
||||
"navigationBarTitleText": "我的复诊记录", |
||||
"usingComponents": {} |
||||
} |
@ -0,0 +1,43 @@
@@ -0,0 +1,43 @@
|
||||
page { |
||||
background-color: rgba(246, 246, 246, 1); |
||||
} |
||||
|
||||
.page { |
||||
.list { |
||||
padding: 32rpx 40rpx; |
||||
.total { |
||||
font-size: 32rpx; |
||||
color: rgba(1, 1, 5, 1); |
||||
.red { |
||||
color: rgba(28, 107, 255, 1); |
||||
font-size: 40rpx; |
||||
} |
||||
} |
||||
.list-card { |
||||
padding: 16rpx 0; |
||||
margin-top: 24rpx; |
||||
background: linear-gradient( 349deg, #FFFFFF 0%, #F1F6FF 100%); |
||||
border-radius: 24rpx 24rpx 24rpx 24rpx; |
||||
.item { |
||||
padding: 16rpx 32rpx; |
||||
display: flex; |
||||
.item-title { |
||||
width: 5em; |
||||
font-size: 32rpx; |
||||
color: rgba(161, 164, 172, 1); |
||||
} |
||||
.item-content { |
||||
color: rgba(1, 1, 5, 1); |
||||
} |
||||
} |
||||
} |
||||
.add { |
||||
position: fixed; |
||||
left: 50%; |
||||
bottom: 142rpx; |
||||
transform: translateX(-50%); |
||||
width: 156rpx; |
||||
height: 156rpx; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,64 @@
@@ -0,0 +1,64 @@
|
||||
const app = getApp<IAppOption>() |
||||
|
||||
Page({ |
||||
data: { |
||||
list: [], |
||||
pagination: { |
||||
page: 1, |
||||
pages: 1, |
||||
count: 1, |
||||
}, |
||||
|
||||
patientId: '', |
||||
examId: '', |
||||
period: '1', |
||||
}, |
||||
onLoad(options) { |
||||
this.setData({ |
||||
examId: options.examid || '', |
||||
period: options.period || '1', |
||||
patientId: options.id || '', |
||||
}) |
||||
}, |
||||
onShow() { |
||||
app.waitLogin({ type: 2 }).then(() => { |
||||
this.getList() |
||||
}) |
||||
}, |
||||
getList(newPage = 1) { |
||||
wx.ajax({ |
||||
method: 'GET', |
||||
url: '?r=wtx/doctor/treatment/get-exam-list', |
||||
data: { |
||||
page: newPage, |
||||
period: 4, |
||||
patientId: this.data.patientId, |
||||
}, |
||||
}).then((res) => { |
||||
const list = res.page === 1 ? res.list : [...this.data.list, ...res.list] |
||||
this.setData({ |
||||
total: res.count, |
||||
list, |
||||
pagination: { |
||||
page: res.page, |
||||
pages: res.pages, |
||||
count: res.count, |
||||
}, |
||||
}) |
||||
}) |
||||
}, |
||||
onReachBottom() { |
||||
const { page, pages } = this.data.pagination |
||||
if (pages > page) { |
||||
this.getList(page + 1) |
||||
} |
||||
}, |
||||
handleEdit(e) { |
||||
const { id } = e.currentTarget.dataset |
||||
wx.navigateTo({ |
||||
url: `/doctor/pages/lastDiagnosisReport/index?period=${this.data.period}&examid=${id}&edit=1&id=${this.data.patientId}`, |
||||
}) |
||||
}, |
||||
}) |
||||
|
||||
export {} |
@ -0,0 +1,27 @@
@@ -0,0 +1,27 @@
|
||||
<view class="page"> |
||||
<view class="list"> |
||||
<view class="total" wx:if="{{pagination.count>0}}"> |
||||
随访次数: |
||||
<text class="red">{{pagination.count}}</text> |
||||
次 |
||||
</view> |
||||
<view class="list-card" wx:for="{{list}}" wx:key="examId" bind:tap="handleEdit" data-id="{{item.examId}}"> |
||||
<view class="item"> |
||||
<view class="item-title">日期</view> |
||||
<view class="item-content"> |
||||
<block wx:if="{{item.beginDate && item.endDate}}">{{item.beginDate}}-{{item.endDate}}</block> |
||||
<block wx:else>---</block> |
||||
</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="item-title">诊疗医院</view> |
||||
<view class="item-content">{{item.hospitalName || '---'}}</view> |
||||
</view> |
||||
<view class="item"> |
||||
<view class="item-title">检查项目</view> |
||||
<view class="item-content">{{item.totalNum}}/{{item.allNum}}</view> |
||||
</view> |
||||
</view> |
||||
<pagination pagination="{{pagination}}"></pagination> |
||||
</view> |
||||
</view> |
After Width: | Height: | Size: 225 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1017 B |
After Width: | Height: | Size: 883 B |
Loading…
Reference in new issue