Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
frontend-h5
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
songrui
frontend-h5
Commits
04cc8438
Commit
04cc8438
authored
Jan 17, 2025
by
芮自成
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
专病随访表单开发
parent
1c03ae74
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
631 additions
and
33 deletions
+631
-33
Index.vue
src/doctor/followUp/separateFU/form/Index.vue
+1
-1
HypertensionForm.vue
.../followUp/separateFU/form/components/HypertensionForm.vue
+630
-32
No files found.
src/doctor/followUp/separateFU/form/Index.vue
View file @
04cc8438
...
...
@@ -25,7 +25,7 @@ export default {
components
:
{
BaseInfo
,
FormCont
},
data
()
{
return
{
step
:
1
step
:
2
}
},
computed
:
{
...
...
src/doctor/followUp/separateFU/form/components/HypertensionForm.vue
View file @
04cc8438
...
...
@@ -15,12 +15,6 @@
class=
"form-input"
/>
<van-popup
v-model:show=
"showVisitWay"
position=
"bottom"
>
<!--
<van-picker
:columns-field-names=
"
{ text: 'name', value: 'value' }"
:columns="list"
@confirm="visitWayConfirm"
@cancel="showVisitWay = false"
/> -->
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showVisitWay = false"
>
取消
</div>
...
...
@@ -29,6 +23,7 @@
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
clearable
column-1
:options=
"list"
v-model:value=
"form.visitWay"
...
...
@@ -50,12 +45,6 @@
class=
"form-input"
/>
<van-popup
v-model:show=
"showPaperReasons"
position=
"bottom"
>
<!--
<van-picker
:columns-field-names=
"
{ text: 'name', value: 'value' }"
:columns="store.getDict('CP00055')"
@confirm="paperReasonsConfirm"
@cancel="showPaperReasons = false"
/> -->
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showPaperReasons = false"
>
取消
</div>
...
...
@@ -64,6 +53,7 @@
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
clearable
column-1
:options=
"store.getDict('CP00055')"
v-model:value=
"form.paperReasons"
...
...
@@ -85,20 +75,564 @@
class=
"form-input"
/>
<van-popup
v-model:show=
"showSymptom"
position=
"bottom"
>
<van-picker
:columns-field-names=
"
{ text: 'name', value: 'value' }"
:columns="store.getDict('CP00058')"
@confirm="symptomConfirm"
@cancel="showSymptom = false"
/>
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showSymptom = false"
>
取消
</div>
<div>
症状(可多选)
</div>
<div
class=
"blueColor"
@
click=
"symptomConfirm"
>
确定
</div>
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
multiple
column-2
:options=
"store.getDict('CP00058')"
v-model:value=
"form.symptom"
:fieldNames=
"
{ text: 'name', value: 'value' }"
@change="form.symptom = checkboxReject(form.symptom, [1])"
/>
</div>
</div>
</van-popup>
<template
v-if=
"(form.symptom || []).includes(99)"
>
<div
class=
"label-title mt-2"
>
其他症状
</div>
<van-field
v-model=
"form.symptomOther"
placeholder=
"请填写其他症状"
:rules=
"rules.symptomOther"
class=
"form-input"
/>
</
template
>
<div
class=
"flex items-center justify-between tip-box mt-2 mb-2"
>
<div
class=
"label-title"
required
>
血压
</div>
<BloodPressurePanel
:pressureObj=
"pressureObj"
/>
</div>
<table
class=
"w-full mb-2"
>
<tr
class=
"sub-text"
>
<td>
收缩压(SBP)
</td>
<td
style=
"width: 1em"
></td>
<td>
舒张压(DBP)
</td>
</tr>
<tr>
<td
class=
"flex items-center"
>
<van-field
v-model=
"form.signSystolicPressure"
placeholder=
"60~300,整数"
:rules=
"rules.signSystolicPressure"
class=
"form-input"
>
<
template
#
extra
>
<span>
mmHg
</span>
</
template
>
</van-field>
</td>
<td
class=
"text-center"
>
<span
class=
"divide"
>
/
</span>
</td>
<td
class=
"flex items-center"
>
<van-field
v-model=
"form.signDiastolicPressure"
placeholder=
"60~300,整数"
:rules=
"rules.signDiastolicPressure"
class=
"form-input"
>
<
template
#
extra
>
<span>
mmHg
</span>
</
template
>
</van-field>
</td>
</tr>
</table>
<BloodPressureBt
:pressureObj=
"pressureObj"
@
getValue=
"setPressureOne"
>
开始测量
</BloodPressureBt>
<div
class=
"tip"
>
提示:点击“开始测量”按钮后将自动启动血压计设备,请勿再重复点击设备“开始/停止”按钮。
</div>
<div
class=
"label-title mt-2"
required
>
身高
</div>
<van-field
v-model=
"form.signHeight"
placeholder=
"10~300,1位小数"
:rules=
"rules.signHeight"
class=
"form-input"
>
<
template
#
extra
>
<span>
cm
</span>
</
template
>
</van-field>
<div
class=
"label-title mt-2"
required
>
体重
</div>
<van-field
v-model=
"form.signWeight"
placeholder=
"20~500,2位小数"
:rules=
"rules.signWeight"
class=
"form-input"
>
<
template
#
extra
>
<span>
kg
</span>
</
template
>
</van-field>
<div
class=
"label-title mt-2"
required
>
BMI(体质指数)
</div>
<van-field
readonly
v-model=
"form.signBmi"
placeholder=
"-"
class=
"form-input"
>
<
template
#
extra
>
<span>
kg/m²
</span>
</
template
>
</van-field>
<div
class=
"label-title mt-2"
required
>
腰围
</div>
<van-field
v-model=
"form.signWaistline"
placeholder=
"10~150,1位小数"
:rules=
"rules.signWaistline"
class=
"form-input"
>
<
template
#
extra
>
<span>
cm
</span>
</
template
>
</van-field>
<div
class=
"label-title mt-2"
required
>
心率
</div>
<van-field
v-model=
"form.signHeartRate"
placeholder=
"10~200,整数"
:rules=
"rules.signHeartRate"
class=
"form-input"
>
<
template
#
extra
>
<span>
次/分
</span>
</
template
>
</van-field>
<div
class=
"label-title mt-2"
>
其他
</div>
<van-field
type=
"textarea"
v-model=
"form.signOther"
placeholder=
"如有其他体征情况请填写在此处,限120个字"
:rules=
"rules.signOther"
class=
"form-input"
/>
<div
class=
"label-title mt-2"
required
>
吸烟
</div>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
是否正在吸烟
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.isSmoking"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00066')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 100%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
您大约从几岁起开始养成每天或基本每天都吸烟的习惯
</div>
<van-field
v-model=
"form.startSmokeAge"
placeholder=
"2~100,整数"
class=
"card-input"
>
<
template
#
extra
>
<span>
岁
</span>
</
template
>
</van-field>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
您最近7天是否吸烟
</div>
<van-field
style=
"padding: 0; width: 100%"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.lastSevenSmoke"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('DC00001')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
日吸烟量
</div>
<van-field
v-model=
"form.daySmoking"
placeholder=
"0~100,整数"
class=
"card-input"
>
<
template
#
extra
>
<span>
支
</span>
</
template
>
</van-field>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
目标日吸烟量
</div>
<van-field
v-model=
"form.goalDaySmoking"
placeholder=
"0~100,整数"
class=
"card-input"
>
<
template
#
extra
>
<span>
支
</span>
</
template
>
</van-field>
</div>
<div
class=
"label-title mt-2"
required
>
饮酒
</div>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
是否正在饮酒
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.isDrink"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00068')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 100%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
饮酒频率
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.drinkCondition"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 100%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
class=
"flex mt-2"
>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
日饮酒量
</div>
<van-field
v-model=
"form.dayDrink"
placeholder=
"0~3000,整数"
class=
"card-input"
>
<
template
#
extra
>
<span>
ml
</span>
</
template
>
</van-field>
</div>
<div
class=
"bg-fa ml-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
目标日饮酒量
</div>
<van-field
v-model=
"form.goalDayDrink"
placeholder=
"0~3000,整数"
class=
"card-input"
>
<
template
#
extra
>
<span>
ml
</span>
</
template
>
</van-field>
</div>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
饮酒种类
</div>
<div
class=
"flex"
>
<van-field
label=
"白酒"
v-model=
"form.drinkLiquor"
placeholder=
"0~3000,整数"
class=
"card-input"
label-width=
"33px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
<van-field
label=
"啤酒"
v-model=
"form.drinkBeer"
placeholder=
"0~3000,整数"
class=
"card-input ml-2"
label-width=
"33px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
</div>
<div
class=
"flex mt-2"
>
<van-field
label=
"红酒"
v-model=
"form.drinkRed"
placeholder=
"0~3000,整数"
class=
"card-input"
label-width=
"33px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
<van-field
label=
"黄酒"
v-model=
"form.drinkYellow"
placeholder=
"0~3000,整数"
class=
"card-input ml-2"
label-width=
"33px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
</div>
<div
class=
"flex mt-2"
>
<van-field
label=
"其他"
v-model=
"form.drinkOther"
placeholder=
"0~3000,整数"
class=
"card-input"
label-width=
"33px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
</div>
</div>
<div
class=
"label-title mt-2"
required
>
运动
</div>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
有无规律活动
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.regularExercise"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
运动强度
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.exerciseStrength"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00070')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
目前运动情况
</div>
<div
class=
"flex"
>
<van-field
v-model=
"form.nowExerciseWeek"
placeholder=
"0~50,整数"
class=
"card-input"
>
<
template
#
extra
>
<span>
次/周
</span>
</
template
>
</van-field>
<van-field
v-model=
"form.nowExerciseMinute"
placeholder=
"0~500,整数"
class=
"card-input ml-2"
>
<
template
#
extra
>
<span>
分钟/次
</span>
</
template
>
</van-field>
</div>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
目标运动情况
</div>
<div
class=
"flex"
>
<van-field
v-model=
"form.targetExerciseWeek"
placeholder=
"0~50,整数"
class=
"card-input"
>
<
template
#
extra
>
<span>
次/周
</span>
</
template
>
</van-field>
<van-field
v-model=
"form.targetExerciseMinute"
placeholder=
"0~500,整数"
class=
"card-input ml-2"
>
<
template
#
extra
>
<span>
分钟/次
</span>
</
template
>
</van-field>
</div>
</div>
<div
class=
"label-title mt-2"
required
>
摄盐情况(咸淡)
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.saltIntake"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00071')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<div
class=
"label-title mt-2"
required
>
心理调整
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.psychologicalRecovery"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00072')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<div
class=
"label-title mt-2"
required
>
遵医行为
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.doctorAdvice"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00072')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- <div class="label-title mt-2">辅助检查</div>
<van-field
v-model="form.auxiliaryExaminationName"
isLink
readonly
placeholder="请选择"
:rules="rules.auxiliaryExaminationName"
@click="showAuxiliaryExamination = true"
class="form-input"
/>
<van-popup v-model:show="showAuxiliaryExamination" position="bottom">
<div class="p-4" style="height: 100%">
<div class="flex justify-between items-center mb-4 pop-title">
<div class="greyColor" @click="showAuxiliaryExamination = false">取消</div>
<div>辅助检查(可多选)</div>
<div class="blueColor" @click="auxiliaryConfirm">确定</div>
</div>
<div style="height: 80%; overflow: auto">
<CheckBtn
multiple
column-2
:options="store.getDict('CP00073')"
v-model:value="form.auxiliaryExamination"
:fieldNames="{ text: 'name', value: 'value' }"
/>
</div>
</div>
</van-popup> -->
</van-form>
</template>
<
script
>
import
{
useStore
}
from
'@/doctor/store'
import
CheckBtn
from
'@/doctor/components/checkBtn/CheckBtn.vue'
import
{
checkboxReject
}
from
'@/utils/common'
import
BloodPressurePanel
from
'@/doctor/components/bloodPressure/BloodPressurePanel.vue'
import
BloodPressureBt
from
'@/doctor/components/bloodPressure/BloodPressureBt.vue'
export
default
{
components
:
{
CheckBtn
},
components
:
{
CheckBtn
,
BloodPressurePanel
,
BloodPressureBt
},
inject
:
[
'pressureObj'
],
data
()
{
return
{
store
:
useStore
(),
...
...
@@ -132,27 +666,50 @@ export default {
}
],
showPaperReasons
:
false
,
showSymptom
:
false
showSymptom
:
false
,
// showAuxiliaryExamination: false
}
},
methods
:
{
checkboxReject
,
visitWayChange
()
{
this
.
form
.
visitWayName
=
this
.
list
.
find
(
e
=>
e
.
value
===
this
.
form
.
visitWay
).
name
this
.
list
.
forEach
(
item
=>
{
if
(
item
.
value
===
this
.
form
.
visitWay
)
{
this
.
form
.
visitWayName
=
item
.
name
}
})
this
.
showVisitWay
=
false
},
paperReasonsChange
()
{
// this.form.paperReasons = selectedValues[0]
// this.form.paperReasonsName = selectedOptions[0].name
// this.showPaperReasons = false
// this.form.paperReasonsName = this.store.getDict('CP00055').find(e => e.value === this.form.paperReasons).name
this
.
store
.
getDict
(
'CP00055'
).
forEach
(
item
=>
{
if
(
item
.
value
===
this
.
form
.
paperReasons
)
{
this
.
form
.
paperReasonsName
=
item
.
name
}
})
this
.
showPaperReasons
=
false
console
.
log
(
this
.
form
.
paperReasons
)
},
symptomConfirm
({
selectedValues
,
selectedOptions
})
{
this
.
form
.
symptom
=
selectedValues
[
0
]
this
.
form
.
symptomName
=
selectedOptions
[
0
].
name
symptomConfirm
()
{
let
list
=
[]
this
.
store
.
getDict
(
'CP00058'
).
forEach
(
item
=>
{
let
selected
=
this
.
form
.
symptom
.
filter
(
e
=>
e
===
item
.
value
)
if
(
selected
&&
selected
.
length
)
{
list
.
push
(
item
.
name
)
}
})
this
.
form
.
symptomName
=
list
.
join
()
this
.
showSymptom
=
false
}
},
// auxiliaryConfirm() {
// let list = []
// this.store.getDict('CP00073').forEach(item => {
// let selected = this.form.auxiliaryExamination.filter(e => e === item.value)
// if (selected && selected.length) {
// list.push(item.name)
// }
// })
// this.form.auxiliaryExaminationName = list.join()
// this.showAuxiliaryExamination = false
// }
}
}
</
script
>
...
...
@@ -196,11 +753,51 @@ export default {
.pop-title {
color: #262626;
font-size: 16px;
line-height: 24px;
font-weight: bold;
font-weight: 600;
}
.greyColor {
color: var(--van-text-color-2);
font-weight: 400;
}
.blueColor {
color: #607FF0;
font-weight: 500;
}
.sub-text {
color: #595959;
font-size: 13px;
font-weight: 400;
padding-bottom: 8px;
}
.tip {
color: #FA8C16;
font-size: 12px;
margin-top: 8px;
}
.bg-fa {
background-color: #FAFAFA;
padding: 8px;
border-radius: 8px;
}
.doc-radio-group-now {
column-gap: 8px;
row-gap: 8px;
background-color: #FAFAFA;
width: 100%;
.van-radio {
background-color: #FFFFFF;
padding: 8px 12px;
border-radius: 8px;
justify-content: space-between;
margin-right: 0;
}
}
.card-input {
padding: 8px 12px;
border-radius: 8px;
}
:deep(.label-mr) {
margin-right: 4px;
}
</
style
>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment