Commit 9fb236ce authored by 芮自成's avatar 芮自成

高血压专病随访联调

parent fcc40b68
...@@ -66,7 +66,7 @@ export default { ...@@ -66,7 +66,7 @@ export default {
if (!token) { if (!token) {
token = sessionStorage.getItem('token') token = sessionStorage.getItem('token')
if (process.env.NODE_ENV !== 'production') { if (process.env.NODE_ENV !== 'production') {
token = 'f1f98c99-ac8d-47db-8066-fe24a548c784' token = 'ca3a2820-1553-4131-b04f-61d9312205b3'
} }
} }
if (token) { if (token) {
...@@ -254,6 +254,7 @@ export default { ...@@ -254,6 +254,7 @@ export default {
// 单选 // 单选
.doc-radio-group { .doc-radio-group {
column-gap: 10px; column-gap: 10px;
row-gap: 8px;
.van-radio { .van-radio {
background-color: #FAFAFA; background-color: #FAFAFA;
padding: 8px 12px; padding: 8px 12px;
......
<template> <template>
<div> <div>
<HypertensionForm v-if="diseaseType === 1"></HypertensionForm> <HypertensionForm v-if="diseaseType === 1" ref="hypertensionForm"></HypertensionForm>
</div> </div>
</template> </template>
<script> <script>
...@@ -11,6 +11,11 @@ export default { ...@@ -11,6 +11,11 @@ export default {
return { return {
diseaseType: 1 diseaseType: 1
} }
},
methods: {
submit() {
this.$refs.hypertensionForm.submit()
}
} }
} }
</script> </script>
\ No newline at end of file
...@@ -8,12 +8,12 @@ ...@@ -8,12 +8,12 @@
<div class="p-4 h-overflow"> <div class="p-4 h-overflow">
<BaseInfo v-if="step === 1" ref="baseInfo"></BaseInfo> <BaseInfo v-if="step === 1" ref="baseInfo"></BaseInfo>
<FormCont v-if="step === 2"></FormCont> <FormCont v-if="step === 2" ref="formCont"></FormCont>
</div> </div>
<div class="bottom-small-line"></div> <div class="bottom-small-line"></div>
<div class="p-4"> <div class="p-4">
<van-button v-if="step === 1" type="primary" block round @click="toNext">下一步</van-button> <van-button v-if="step === 1" type="primary" block round @click="toNext">下一步</van-button>
<van-button v-if="step === 2" type="primary" block round>提交</van-button> <van-button v-if="step === 2" type="primary" block round @click="onSubmit">提交</van-button>
</div> </div>
</div> </div>
...@@ -44,6 +44,9 @@ export default { ...@@ -44,6 +44,9 @@ export default {
// this.$refs.baseInfo.onSubmit() // this.$refs.baseInfo.onSubmit()
// console.log(666, obj) // console.log(666, obj)
this.step = 2 this.step = 2
},
onSubmit() {
this.$refs.formCont.submit()
} }
} }
} }
......
<template> <template>
<van-form> <van-form ref="form">
<div class="first-title"> <div class="first-title">
<span class="font-semibold">随访信息</span> <span class="font-semibold">随访信息</span>
<div class="btn-title">引入数据</div> <div class="btn-title">引入数据</div>
</div> </div>
<!-- 随访方式 -->
<div class="label-title mt-2" required>随访方式</div> <div class="label-title mt-2" required>随访方式</div>
<van-field <van-field
v-model="form.visitWayName" v-model="form.visitWayName"
...@@ -33,8 +34,8 @@ ...@@ -33,8 +34,8 @@
</div> </div>
</div> </div>
</van-popup> </van-popup>
<template v-if="form.visitWay === 5 || form.visitWay === 6">
<div class="label-title mt-2" required>采用纸质表格原因</div> <div class="label-title mt-2">采用纸质表格原因</div>
<van-field <van-field
v-model="form.paperReasonsName" v-model="form.paperReasonsName"
isLink isLink
...@@ -63,7 +64,8 @@ ...@@ -63,7 +64,8 @@
</div> </div>
</div> </div>
</van-popup> </van-popup>
</template>
<!-- 症状 -->
<div class="label-title mt-2" required>症状</div> <div class="label-title mt-2" required>症状</div>
<van-field <van-field
v-model="form.symptomName" v-model="form.symptomName"
...@@ -93,17 +95,15 @@ ...@@ -93,17 +95,15 @@
</div> </div>
</div> </div>
</van-popup> </van-popup>
<template v-if="(form.symptom || []).includes(99)"> <template v-if="(form.symptom || []).includes(99)">
<div class="label-title mt-2">其他症状</div> <div class="label-title mt-2">其他症状</div>
<van-field <van-field
v-model="form.symptomOther" v-model="form.symptomOther"
placeholder="请填写其他症状" placeholder="请填写其他症状"
:rules="rules.symptomOther"
class="form-input" class="form-input"
/> />
</template> </template>
<!-- 血压 -->
<div class="flex items-center justify-between tip-box mt-2 mb-2"> <div class="flex items-center justify-between tip-box mt-2 mb-2">
<div class="label-title" required>血压</div> <div class="label-title" required>血压</div>
<BloodPressurePanel :pressureObj="pressureObj" /> <BloodPressurePanel :pressureObj="pressureObj" />
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
<td class="flex items-center"> <td class="flex items-center">
<van-field <van-field
v-model="form.signDiastolicPressure" v-model="form.signDiastolicPressure"
placeholder="60~300,整数" placeholder="30~300,整数"
:rules="rules.signDiastolicPressure" :rules="rules.signDiastolicPressure"
class="form-input" class="form-input"
> >
...@@ -144,9 +144,9 @@ ...@@ -144,9 +144,9 @@
</td> </td>
</tr> </tr>
</table> </table>
<BloodPressureBt :pressureObj="pressureObj" @getValue="setPressureOne">开始测量</BloodPressureBt> <BloodPressureBt :pressureObj="pressureObj" @getValue="setPressure">开始测量</BloodPressureBt>
<div class="tip">提示:点击“开始测量”按钮后将自动启动血压计设备,请勿再重复点击设备“开始/停止”按钮。</div> <div class="tip">提示:点击“开始测量”按钮后将自动启动血压计设备,请勿再重复点击设备“开始/停止”按钮。</div>
<!-- 身高 -->
<div class="label-title mt-2" required>身高</div> <div class="label-title mt-2" required>身高</div>
<van-field <van-field
v-model="form.signHeight" v-model="form.signHeight"
...@@ -158,7 +158,7 @@ ...@@ -158,7 +158,7 @@
<span>cm</span> <span>cm</span>
</template> </template>
</van-field> </van-field>
<!-- 体重 -->
<div class="label-title mt-2" required>体重</div> <div class="label-title mt-2" required>体重</div>
<van-field <van-field
v-model="form.signWeight" v-model="form.signWeight"
...@@ -170,7 +170,8 @@ ...@@ -170,7 +170,8 @@
<span>kg</span> <span>kg</span>
</template> </template>
</van-field> </van-field>
<div class="label-title mt-2" required>BMI(体质指数)</div> <!-- BMI -->
<div class="label-title mt-2">BMI(体质指数)</div>
<van-field <van-field
readonly readonly
v-model="form.signBmi" v-model="form.signBmi"
...@@ -181,6 +182,7 @@ ...@@ -181,6 +182,7 @@
<span>kg/m²</span> <span>kg/m²</span>
</template> </template>
</van-field> </van-field>
<!-- 腰围 -->
<div class="label-title mt-2" required>腰围</div> <div class="label-title mt-2" required>腰围</div>
<van-field <van-field
v-model="form.signWaistline" v-model="form.signWaistline"
...@@ -192,6 +194,7 @@ ...@@ -192,6 +194,7 @@
<span>cm</span> <span>cm</span>
</template> </template>
</van-field> </van-field>
<!-- 心率 -->
<div class="label-title mt-2" required>心率</div> <div class="label-title mt-2" required>心率</div>
<van-field <van-field
v-model="form.signHeartRate" v-model="form.signHeartRate"
...@@ -203,19 +206,20 @@ ...@@ -203,19 +206,20 @@
<span>次/分</span> <span>次/分</span>
</template> </template>
</van-field> </van-field>
<!-- 其他体征 -->
<div class="label-title mt-2">其他</div> <div class="label-title mt-2">其他</div>
<van-field <van-field
type="textarea" type="textarea"
v-model="form.signOther" v-model="form.signOther"
:maxlength="120"
placeholder="如有其他体征情况请填写在此处,限120个字" placeholder="如有其他体征情况请填写在此处,限120个字"
:rules="rules.signOther"
class="form-input" class="form-input"
/> />
<!-- 吸烟 -->
<div class="label-title mt-2" required>吸烟</div> <div class="label-title mt-2" required>吸烟</div>
<div class="bg-fa"> <div class="bg-fa">
<div class="label-title" required style="color: #262626; font-size: 14px">是否正在吸烟</div> <div class="label-title" required style="color: #262626; font-size: 14px">是否正在吸烟</div>
<van-field style="padding: 0"> <van-field :rules="rules.isSmoking" style="padding: 0">
<template #input> <template #input>
<van-radio-group <van-radio-group
v-model="form.isSmoking" v-model="form.isSmoking"
...@@ -236,11 +240,12 @@ ...@@ -236,11 +240,12 @@
</template> </template>
</van-field> </van-field>
</div> </div>
<div class="bg-fa mt-2"> <div v-if="form.isSmoking === 1" class="bg-fa mt-2">
<div class="label-title" style="color: #262626; font-size: 14px">您大约从几岁起开始养成每天或基本每天都吸烟的习惯</div> <div class="label-title" style="color: #262626; font-size: 14px">您大约从几岁起开始养成每天或基本每天都吸烟的习惯</div>
<van-field <van-field
v-model="form.startSmokeAge" v-model="form.startSmokeAge"
placeholder="2~100,整数" placeholder="2~100,整数"
:rules="rules.startSmokeAge"
class="card-input" class="card-input"
> >
<template #extra> <template #extra>
...@@ -248,9 +253,9 @@ ...@@ -248,9 +253,9 @@
</template> </template>
</van-field> </van-field>
</div> </div>
<div class="bg-fa mt-2"> <div v-if="form.isSmoking === 1 || form.isSmoking === 2" class="bg-fa mt-2">
<div class="label-title" required style="color: #262626; font-size: 14px">您最近7天是否吸烟</div> <div class="label-title" style="color: #262626; font-size: 14px">您最近7天是否吸烟</div>
<van-field style="padding: 0; width: 100%"> <van-field style="padding: 0">
<template #input> <template #input>
<van-radio-group <van-radio-group
v-model="form.lastSevenSmoke" v-model="form.lastSevenSmoke"
...@@ -271,11 +276,12 @@ ...@@ -271,11 +276,12 @@
</template> </template>
</van-field> </van-field>
</div> </div>
<div class="bg-fa mt-2"> <div v-if="form.isSmoking === 1 || form.isSmoking === 2" class="bg-fa mt-2">
<div class="label-title" style="color: #262626; font-size: 14px">日吸烟量</div> <div class="label-title" style="color: #262626; font-size: 14px">日吸烟量</div>
<van-field <van-field
v-model="form.daySmoking" v-model="form.daySmoking"
placeholder="0~100,整数" placeholder="0~100,整数"
:rules="rules.daySmoking"
class="card-input" class="card-input"
> >
<template #extra> <template #extra>
...@@ -283,11 +289,12 @@ ...@@ -283,11 +289,12 @@
</template> </template>
</van-field> </van-field>
</div> </div>
<div class="bg-fa mt-2"> <div v-if="form.isSmoking === 1 || form.isSmoking === 2" class="bg-fa mt-2">
<div class="label-title" style="color: #262626; font-size: 14px">目标日吸烟量</div> <div class="label-title" style="color: #262626; font-size: 14px">目标日吸烟量</div>
<van-field <van-field
v-model="form.goalDaySmoking" v-model="form.goalDaySmoking"
placeholder="0~100,整数" placeholder="0~100,整数"
:rules="rules.goalDaySmoking"
class="card-input" class="card-input"
> >
<template #extra> <template #extra>
...@@ -295,11 +302,11 @@ ...@@ -295,11 +302,11 @@
</template> </template>
</van-field> </van-field>
</div> </div>
<!-- 饮酒 -->
<div class="label-title mt-2" required>饮酒</div> <div class="label-title mt-2" required>饮酒</div>
<div class="bg-fa"> <div class="bg-fa">
<div class="label-title" required style="color: #262626; font-size: 14px">是否正在饮酒</div> <div class="label-title" required style="color: #262626; font-size: 14px">是否正在饮酒</div>
<van-field style="padding: 0"> <van-field :rules="rules.isDrink" style="padding: 0">
<template #input> <template #input>
<van-radio-group <van-radio-group
v-model="form.isDrink" v-model="form.isDrink"
...@@ -320,8 +327,8 @@ ...@@ -320,8 +327,8 @@
</template> </template>
</van-field> </van-field>
</div> </div>
<div class="bg-fa mt-2"> <div v-if="form.isDrink === 1" class="bg-fa mt-2">
<div class="label-title" required style="color: #262626; font-size: 14px">饮酒频率</div> <div class="label-title" style="color: #262626; font-size: 14px">饮酒频率</div>
<van-field style="padding: 0"> <van-field style="padding: 0">
<template #input> <template #input>
<van-radio-group <van-radio-group
...@@ -343,12 +350,13 @@ ...@@ -343,12 +350,13 @@
</template> </template>
</van-field> </van-field>
</div> </div>
<div class="flex mt-2"> <div v-if="form.isDrink === 1 || form.isDrink === 2" class="flex mt-2">
<div class="bg-fa"> <div class="bg-fa">
<div class="label-title" style="color: #262626; font-size: 14px">日饮酒量</div> <div class="label-title" style="color: #262626; font-size: 14px">日饮酒量</div>
<van-field <van-field
v-model="form.dayDrink" v-model="form.dayDrink"
placeholder="0~3000,整数" placeholder="0~3000,整数"
:rules="rules.dayDrink"
class="card-input" class="card-input"
> >
<template #extra> <template #extra>
...@@ -361,6 +369,7 @@ ...@@ -361,6 +369,7 @@
<van-field <van-field
v-model="form.goalDayDrink" v-model="form.goalDayDrink"
placeholder="0~3000,整数" placeholder="0~3000,整数"
:rules="rules.goalDayDrink"
class="card-input" class="card-input"
> >
<template #extra> <template #extra>
...@@ -369,15 +378,15 @@ ...@@ -369,15 +378,15 @@
</van-field> </van-field>
</div> </div>
</div> </div>
<div class="bg-fa mt-2"> <div v-if="form.isDrink === 1 || form.isDrink === 2" class="bg-fa mt-2">
<div class="label-title" style="color: #262626; font-size: 14px">饮酒种类</div> <div class="label-title" style="color: #262626; font-size: 14px">饮酒种类</div>
<div class="flex">
<van-field <van-field
label="白酒" label="白酒"
v-model="form.drinkLiquor" v-model="form.drinkLiquor"
placeholder="0~3000,整数" placeholder="0~3000,整数"
:rules="rules.drinkLiquor"
class="card-input" class="card-input"
label-width="33px" label-width="32px"
label-class="label-mr" label-class="label-mr"
> >
<template #extra> <template #extra>
...@@ -388,22 +397,22 @@ ...@@ -388,22 +397,22 @@
label="啤酒" label="啤酒"
v-model="form.drinkBeer" v-model="form.drinkBeer"
placeholder="0~3000,整数" placeholder="0~3000,整数"
class="card-input ml-2" :rules="rules.drinkBeer"
label-width="33px" class="card-input mt-2"
label-width="32px"
label-class="label-mr" label-class="label-mr"
> >
<template #extra> <template #extra>
<span>ml/日</span> <span>ml/日</span>
</template> </template>
</van-field> </van-field>
</div>
<div class="flex mt-2">
<van-field <van-field
label="红酒" label="红酒"
v-model="form.drinkRed" v-model="form.drinkRed"
placeholder="0~3000,整数" placeholder="0~3000,整数"
class="card-input" :rules="rules.drinkRed"
label-width="33px" class="card-input mt-2"
label-width="32px"
label-class="label-mr" label-class="label-mr"
> >
<template #extra> <template #extra>
...@@ -414,22 +423,22 @@ ...@@ -414,22 +423,22 @@
label="黄酒" label="黄酒"
v-model="form.drinkYellow" v-model="form.drinkYellow"
placeholder="0~3000,整数" placeholder="0~3000,整数"
class="card-input ml-2" :rules="rules.drinkYellow"
label-width="33px" class="card-input mt-2"
label-width="32px"
label-class="label-mr" label-class="label-mr"
> >
<template #extra> <template #extra>
<span>ml/日</span> <span>ml/日</span>
</template> </template>
</van-field> </van-field>
</div>
<div class="flex mt-2">
<van-field <van-field
label="其他" label="其他"
v-model="form.drinkOther" v-model="form.drinkOther"
placeholder="0~3000,整数" placeholder="0~3000,整数"
class="card-input" :rules="rules.drinkOther"
label-width="33px" class="card-input mt-2"
label-width="32px"
label-class="label-mr" label-class="label-mr"
> >
<template #extra> <template #extra>
...@@ -437,12 +446,11 @@ ...@@ -437,12 +446,11 @@
</template> </template>
</van-field> </van-field>
</div> </div>
</div> <!-- 运动 -->
<div class="label-title mt-2" required>运动</div> <div class="label-title mt-2" required>运动</div>
<div class="bg-fa"> <div class="bg-fa">
<div class="label-title" required style="color: #262626; font-size: 14px">有无规律活动</div> <div class="label-title" required style="color: #262626; font-size: 14px">有无规律活动</div>
<van-field style="padding: 0"> <van-field :rules="rules.regularExercise" style="padding: 0">
<template #input> <template #input>
<van-radio-group <van-radio-group
v-model="form.regularExercise" v-model="form.regularExercise"
...@@ -463,9 +471,9 @@ ...@@ -463,9 +471,9 @@
</template> </template>
</van-field> </van-field>
</div> </div>
<div class="bg-fa mt-2"> <div v-if="form.regularExercise === 1" class="bg-fa mt-2">
<div class="label-title" required style="color: #262626; font-size: 14px">运动强度</div> <div class="label-title" required style="color: #262626; font-size: 14px">运动强度</div>
<van-field style="padding: 0"> <van-field :rules="rules.exerciseStrength" style="padding: 0">
<template #input> <template #input>
<van-radio-group <van-radio-group
v-model="form.exerciseStrength" v-model="form.exerciseStrength"
...@@ -492,6 +500,7 @@ ...@@ -492,6 +500,7 @@
<van-field <van-field
v-model="form.nowExerciseWeek" v-model="form.nowExerciseWeek"
placeholder="0~50,整数" placeholder="0~50,整数"
:rules="rules.nowExerciseWeek"
class="card-input" class="card-input"
> >
<template #extra> <template #extra>
...@@ -501,6 +510,7 @@ ...@@ -501,6 +510,7 @@
<van-field <van-field
v-model="form.nowExerciseMinute" v-model="form.nowExerciseMinute"
placeholder="0~500,整数" placeholder="0~500,整数"
:rules="rules.nowExerciseMinute"
class="card-input ml-2" class="card-input ml-2"
> >
<template #extra> <template #extra>
...@@ -515,6 +525,7 @@ ...@@ -515,6 +525,7 @@
<van-field <van-field
v-model="form.targetExerciseWeek" v-model="form.targetExerciseWeek"
placeholder="0~50,整数" placeholder="0~50,整数"
:rules="rules.targetExerciseWeek"
class="card-input" class="card-input"
> >
<template #extra> <template #extra>
...@@ -524,6 +535,7 @@ ...@@ -524,6 +535,7 @@
<van-field <van-field
v-model="form.targetExerciseMinute" v-model="form.targetExerciseMinute"
placeholder="0~500,整数" placeholder="0~500,整数"
:rules="rules.targetExerciseMinute"
class="card-input ml-2" class="card-input ml-2"
> >
<template #extra> <template #extra>
...@@ -532,9 +544,9 @@ ...@@ -532,9 +544,9 @@
</van-field> </van-field>
</div> </div>
</div> </div>
<!-- 摄盐情况 -->
<div class="label-title mt-2" required>摄盐情况(咸淡)</div> <div class="label-title mt-2" required>摄盐情况(咸淡)</div>
<van-field style="padding: 0"> <van-field :rules="rules.saltIntake" style="padding: 0">
<template #input> <template #input>
<van-radio-group <van-radio-group
v-model="form.saltIntake" v-model="form.saltIntake"
...@@ -553,8 +565,9 @@ ...@@ -553,8 +565,9 @@
</van-radio-group> </van-radio-group>
</template> </template>
</van-field> </van-field>
<!-- 心理调整 -->
<div class="label-title mt-2" required>心理调整</div> <div class="label-title mt-2" required>心理调整</div>
<van-field style="padding: 0"> <van-field :rules="rules.psychologicalRecovery" style="padding: 0">
<template #input> <template #input>
<van-radio-group <van-radio-group
v-model="form.psychologicalRecovery" v-model="form.psychologicalRecovery"
...@@ -573,8 +586,9 @@ ...@@ -573,8 +586,9 @@
</van-radio-group> </van-radio-group>
</template> </template>
</van-field> </van-field>
<!-- 遵医行为 -->
<div class="label-title mt-2" required>遵医行为</div> <div class="label-title mt-2" required>遵医行为</div>
<van-field style="padding: 0"> <van-field :rules="rules.doctorAdvice" style="padding: 0">
<template #input> <template #input>
<van-radio-group <van-radio-group
v-model="form.doctorAdvice" v-model="form.doctorAdvice"
...@@ -623,10 +637,11 @@ ...@@ -623,10 +637,11 @@
</div> </div>
</van-popup> --> </van-popup> -->
<!-- 目前高血压用药及依从性 -->
<div class="label-title mt-2" required>目前高血压用药及依从性</div> <div class="label-title mt-2" required>目前高血压用药及依从性</div>
<div class="bg-fa"> <div class="bg-fa">
<div class="label-title" required style="color: #262626; font-size: 14px; line-height: 24px">您目前是否在服用降压药、降脂(如他汀类)或抗血小板(如阿司匹林)等心血管病相关药物</div> <div class="label-title" required style="color: #262626; font-size: 14px; line-height: 24px">您目前是否在服用降压药、降脂(如他汀类)或抗血小板(如阿司匹林)等心血管病相关药物</div>
<van-field style="padding: 0"> <van-field :rules="rules.medicationCompliance" style="padding: 0">
<template #input> <template #input>
<van-radio-group <van-radio-group
v-model="form.medicationCompliance" v-model="form.medicationCompliance"
...@@ -647,7 +662,8 @@ ...@@ -647,7 +662,8 @@
</template> </template>
</van-field> </van-field>
</div> </div>
<div class="bg-fa mt-2">
<!-- <div class="bg-fa mt-2">
<div class="label-title" required style="color: #262626; font-size: 14px; line-height: 24px">请您确认患者目前服用的降压药、降脂或抗血小板药,在下表中修改或增加,并记录上次随访以来服用的降压药物的依从性</div> <div class="label-title" required style="color: #262626; font-size: 14px; line-height: 24px">请您确认患者目前服用的降压药、降脂或抗血小板药,在下表中修改或增加,并记录上次随访以来服用的降压药物的依从性</div>
<div style="background-color: #FFF; padding: 8px; border-radius: 10px"> <div style="background-color: #FFF; padding: 8px; border-radius: 10px">
<van-field <van-field
...@@ -711,10 +727,10 @@ ...@@ -711,10 +727,10 @@
</van-field> </van-field>
</div> </div>
</div> </div> -->
<!-- 药物不良反应 -->
<div class="label-title mt-2" required>药物不良反应</div> <div class="label-title mt-2" required>药物不良反应</div>
<van-field style="padding: 0"> <van-field :rules="rules.drugsAdverse" style="padding: 0">
<template #input> <template #input>
<van-radio-group <van-radio-group
v-model="form.drugsAdverse" v-model="form.drugsAdverse"
...@@ -733,17 +749,19 @@ ...@@ -733,17 +749,19 @@
</van-radio-group> </van-radio-group>
</template> </template>
</van-field> </van-field>
<div class="bg-fa mt-2"> <div v-if="form.drugsAdverse === 1" class="bg-fa mt-2">
<div class="label-title" style="color: #262626; font-size: 14px">不良反应</div> <div class="label-title" style="color: #262626; font-size: 14px">不良反应</div>
<van-field <van-field
type="textarea"
v-model="form.drugsAdverseOther" v-model="form.drugsAdverseOther"
placeholder="填写具体描述哪种药物,何种不良反应,限120字" :maxlength="120"
placeholder="请填写具体描述哪种药物,何种不良反应,限120字"
class="card-input" class="card-input"
/> />
</div> </div>
<!-- 此次随访分类 -->
<div class="label-title mt-2" required>此次随访分类</div> <div class="label-title mt-2" required>此次随访分类</div>
<van-field style="padding: 0"> <van-field :rules="rules.visitType" style="padding: 0">
<template #input> <template #input>
<van-radio-group <van-radio-group
v-model="form.visitType" v-model="form.visitType"
...@@ -763,7 +781,7 @@ ...@@ -763,7 +781,7 @@
</van-radio-group> </van-radio-group>
</template> </template>
</van-field> </van-field>
<!-- 目前诊断 -->
<div class="label-title mt-2" required>目前诊断</div> <div class="label-title mt-2" required>目前诊断</div>
<van-field <van-field
v-model="form.currentDiagnosisName" v-model="form.currentDiagnosisName"
...@@ -778,7 +796,7 @@ ...@@ -778,7 +796,7 @@
<div class="p-4" style="height: 100%"> <div class="p-4" style="height: 100%">
<div class="flex justify-between items-center mb-4 pop-title"> <div class="flex justify-between items-center mb-4 pop-title">
<div class="greyColor" @click="showCurrentDiagnosis = false">取消</div> <div class="greyColor" @click="showCurrentDiagnosis = false">取消</div>
<div>症状(可多选)</div> <div>目前诊断(可多选)</div>
<div class="blueColor" @click="currentDiagnosisConfirm">确定</div> <div class="blueColor" @click="currentDiagnosisConfirm">确定</div>
</div> </div>
<div style="height: 80%; overflow: auto"> <div style="height: 80%; overflow: auto">
...@@ -792,22 +810,415 @@ ...@@ -792,22 +810,415 @@
</div> </div>
</div> </div>
</van-popup> </van-popup>
<!-- 转诊 -->
<div class="label-title mt-2" required>转诊</div>
<van-field :rules="rules.isReferral" style="padding: 0">
<template #input>
<van-radio-group
v-model="form.isReferral"
shape="dot"
direction="horizontal"
class="w-full doc-radio-group"
>
<van-radio
v-for="item in store.getDict('DC00069')"
:key="item.value"
:name="item.value"
label-position="left"
>
{{ item.name }}
</van-radio>
</van-radio-group>
</template>
</van-field>
<div v-if="form.isReferral === 1" class="bg-fa mt-2">
<div style="background-color: #fff; padding: 8px; border-radius: 8px">
<div style="color: #262626; font-size: 14px">转诊原因</div>
<van-field
type="textarea"
v-model="form.referralReason"
:maxlength="120"
placeholder="请填写具体描述转诊原因,限120字"
class="form-input mt-2"
/>
</div>
<div style="background-color: #fff; padding: 8px; border-radius: 8px" class="mt-2">
<div style="color: #262626; font-size: 14px">转诊机构</div>
<van-field
v-model="form.referralUnitName"
is-link
readonly
placeholder="请选择"
@click="showReferralUnit = true"
class="form-input mt-2"
/>
<DocUnit
v-model:show="showReferralUnit"
v-model:value="form.referralUnitId"
:valueName="form?.referralUnitName"
@change="referralUnitChange"
/>
</div>
<div style="background-color: #fff; padding: 8px; border-radius: 8px" class="mt-2">
<div style="color: #262626; font-size: 14px">转诊科室</div>
<van-field
v-model="form.referralOfficeName"
is-link
readonly
placeholder="请选择"
@click="showReferralOffice = true"
class="form-input mt-2"
/>
<DocOffice
v-model:show="showReferralOffice"
v-model:value="form.referralOfficeId"
:unitId="form.referralUnitId"
@change="referralOfficeChange"
/>
</div>
</div>
<!-- 现场随访照片 -->
<div class="label-title mt-2">现场随访照片</div>
<DocImageUpload
description="最多支持上传8个文件,支持上传图片或PDF文件,图片支持上传jpg、png、jpeg格式,文件大小请勿超过10M。"
lengthMessage="抱歉,最多可上传8个文件。"
:imageData="[]"
@change="(ids, option) => form.visitImage = ids"
:maxLength="8"
/>
<!-- 下次随访日期 -->
<div class="label-title" required>下次随访日期</div>
<van-field
v-model="form.nextVisitDate"
isLink
readonly
placeholder="请选择"
:rules="rules.nextVisitDate"
@click="showNextVisitDate = true"
class="form-input"
/>
<van-popup v-model:show="showNextVisitDate" position="bottom">
<van-date-picker
v-model="form._nextVisitDate"
:min-date="nextVisitDateRange.min"
:max-date="nextVisitDateRange.max"
@confirm="nextVisitDateConfirm"
@cancel="showNextVisitDate = false"
/>
</van-popup>
</van-form> </van-form>
</template> </template>
<script> <script>
import { useStore } from '@/doctor/store' import { useStore } from '@/doctor/store'
import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue' import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue'
import { checkboxReject } from '@/utils/common' import { checkboxReject, calculateBMI } from '@/utils/common'
import BloodPressurePanel from '@/doctor/components/bloodPressure/BloodPressurePanel.vue' import BloodPressurePanel from '@/doctor/components/bloodPressure/BloodPressurePanel.vue'
import BloodPressureBt from '@/doctor/components/bloodPressure/BloodPressureBt.vue' import BloodPressureBt from '@/doctor/components/bloodPressure/BloodPressureBt.vue'
import DocImageUpload from '@/doctor/components/docImageUpload/DocImageUpload.vue'
import DocUnit from '@/doctor/components/docUnit/DocUnit.vue'
import DocOffice from '@/doctor/components/docOffice/DocOffice.vue'
export default { export default {
components: { CheckBtn, BloodPressurePanel, BloodPressureBt }, components: { CheckBtn, BloodPressurePanel, BloodPressureBt, DocImageUpload, DocUnit, DocOffice },
inject: ['pressureObj'], inject: ['pressureObj'],
data() { data() {
return { return {
store: useStore(), store: useStore(),
form: {}, form: {},
rules: {}, rules: {
visitWayName: [
{ required: true, message: '请选择随访方式' }
],
symptomName: [
{ required: true, message: '请选择症状' }
],
signSystolicPressure: [
{ required: true, message: '请填写收缩压' }
],
signDiastolicPressure: [
{ required: true, message: '请填写舒张压' }
],
signHeight: [
{ required: true, message: '请填写身高' },
{
validator: (value, rule) => {
let res = true
const regex = /^\d+(\.\d{1})?$/
if (value && !(regex.test(value) && Number(value) >= 10 && Number(value) <= 300)) {
res = false
}
return res
},
message: `请输入10到300之间的数字,允许一位小数`
}
],
signWeight: [
{ required: true, message: '请填写体重' },
{
validator: (value, rule) => {
let res = true
const regex = /^\d+(\.\d{1,2})?$/
if (value && !(regex.test(value) && Number(value) >= 20 && Number(value) <= 500)) {
res = false
}
return res
},
message: `请输入20到500之间的数字,允许两位小数`
}
],
signWaistline: [
{ required: true, message: '请填写腰围' },
{
validator: (value, rule) => {
let res = true
const regex = /^\d+(\.\d{1})?$/
if (value && !(regex.test(value) && Number(value) >= 10 && Number(value) <= 150)) {
res = false
}
return res
},
message: `请输入10到150之间的数字,允许一位小数`
}
],
signHeartRate: [
{ required: true, message: '请填写心率' },
{
validator: (value, rule) => {
let res = true
const regex = /^\d+$/
if (value && !(regex.test(value) && Number(value) >= 10 && Number(value) <= 200)) {
res = false
}
return res
},
message: `请输入10到200之间的整数`
}
],
isSmoking: [
{ required: true, message: '请选择' }
],
startSmokeAge: [
{
validator: (value, rule) => {
let res = true
const regex = /^\d+$/
if (value && !(regex.test(value) && Number(value) >= 2 && Number(value) <= 100)) {
res = false
}
return res
},
message: `请输入2到100之间的整数`
}
],
daySmoking: [
{
validator: (value, rule) => {
let res = true
const regex = /^\d+$/
if (value && !(regex.test(value) && Number(value) >= 0 && Number(value) <= 100)) {
res = false
}
return res
},
message: `请输入0到100之间的整数`
}
],
goalDaySmoking: [
{
validator: (value, rule) => {
let res = true
const regex = /^\d+$/
if (value && !(regex.test(value) && Number(value) >= 0 && Number(value) <= 100)) {
res = false
}
return res
},
message: `请输入0到100之间的整数`
}
],
isDrink: [
{ required: true, message: '请选择' }
],
dayDrink: [
{
validator: (value, rule) => {
let res = true
const regex = /^\d+$/
if (value && !(regex.test(value) && Number(value) >= 0 && Number(value) <= 3000)) {
res = false
}
return res
},
message: `请输入0到3000之间的整数`
}
],
goalDayDrink: [
{
validator: (value, rule) => {
let res = true
const regex = /^\d+$/
if (value && !(regex.test(value) && Number(value) >= 0 && Number(value) <= 3000)) {
res = false
}
return res
},
message: `请输入0到3000之间的整数`
}
],
drinkLiquor: [
{
validator: (value, rule) => {
let res = true
const regex = /^\d+$/
if (value && !(regex.test(value) && Number(value) >= 0 && Number(value) <= 3000)) {
res = false
}
return res
},
message: `请输入0到3000之间的整数`
}
],
drinkBeer: [
{
validator: (value, rule) => {
let res = true
const regex = /^\d+$/
if (value && !(regex.test(value) && Number(value) >= 0 && Number(value) <= 3000)) {
res = false
}
return res
},
message: `请输入0到3000之间的整数`
}
],
drinkRed: [
{
validator: (value, rule) => {
let res = true
const regex = /^\d+$/
if (value && !(regex.test(value) && Number(value) >= 0 && Number(value) <= 3000)) {
res = false
}
return res
},
message: `请输入0到3000之间的整数`
}
],
drinkYellow: [
{
validator: (value, rule) => {
let res = true
const regex = /^\d+$/
if (value && !(regex.test(value) && Number(value) >= 0 && Number(value) <= 3000)) {
res = false
}
return res
},
message: `请输入0到3000之间的整数`
}
],
drinkOther: [
{
validator: (value, rule) => {
let res = true
const regex = /^\d+$/
if (value && !(regex.test(value) && Number(value) >= 0 && Number(value) <= 3000)) {
res = false
}
return res
},
message: `请输入0到3000之间的整数`
}
],
regularExercise: [
{ required: true, message: '请选择' }
],
exerciseStrength: [
{ required: true, message: '请选择' }
],
nowExerciseWeek: [
{ required: true, message: '请输入' },
{
validator: (value, rule) => {
let res = true
const regex = /^\d+$/
if (value && !(regex.test(value) && Number(value) >= 0 && Number(value) <= 50)) {
res = false
}
return res
},
message: `请输入0到50之间的整数`
}
],
nowExerciseMinute: [
{ required: true, message: '请输入' },
{
validator: (value, rule) => {
let res = true
const regex = /^\d+$/
if (value && !(regex.test(value) && Number(value) >= 0 && Number(value) <= 500)) {
res = false
}
return res
},
message: `请输入0到500之间的整数`
}
],
targetExerciseWeek: [
{ required: true, message: '请输入' },
{
validator: (value, rule) => {
let res = true
const regex = /^\d+$/
if (value && !(regex.test(value) && Number(value) >= 0 && Number(value) <= 50)) {
res = false
}
return res
},
message: `请输入0到50之间的整数`
}
],
targetExerciseMinute: [
{ required: true, message: '请输入' },
{
validator: (value, rule) => {
let res = true
const regex = /^\d+$/
if (value && !(regex.test(value) && Number(value) >= 0 && Number(value) <= 500)) {
res = false
}
return res
},
message: `请输入0到500之间的整数`
}
],
saltIntake: [
{ required: true, message: '请选择' }
],
psychologicalRecovery: [
{ required: true, message: '请选择' }
],
doctorAdvice: [
{ required: true, message: '请选择' }
],
medicationCompliance: [
{ required: true, message: '请选择' }
],
drugsAdverse: [
{ required: true, message: '请选择' }
],
visitType: [
{ required: true, message: '请选择' }
],
currentDiagnosisName: [
{ required: true, message: '请选择' }
],
isReferral: [
{ required: true, message: '请选择' }
],
nextVisitDate: [
{ required: true, message: '请选择' }
]
},
showVisitWay: false, showVisitWay: false,
list: [ list: [
{ {
...@@ -838,11 +1249,19 @@ export default { ...@@ -838,11 +1249,19 @@ export default {
showPaperReasons: false, showPaperReasons: false,
showSymptom: false, showSymptom: false,
// showAuxiliaryExamination: false // showAuxiliaryExamination: false
showCurrentDiagnosis: false showCurrentDiagnosis: false,
showReferralUnit: false,
showReferralOffice: false,
showNextVisitDate: false,
nextVisitDateRange: {
min: undefined,
max: undefined
}
} }
}, },
methods: { methods: {
checkboxReject, checkboxReject,
calculateBMI,
visitWayChange() { visitWayChange() {
this.list.forEach(item => { this.list.forEach(item => {
if (item.value === this.form.visitWay) { if (item.value === this.form.visitWay) {
...@@ -880,7 +1299,7 @@ export default { ...@@ -880,7 +1299,7 @@ export default {
}) })
this.form.currentDiagnosisName = list.join() this.form.currentDiagnosisName = list.join()
this.showCurrentDiagnosis = false this.showCurrentDiagnosis = false
} },
// auxiliaryConfirm() { // auxiliaryConfirm() {
// let list = [] // let list = []
// this.store.getDict('CP00073').forEach(item => { // this.store.getDict('CP00073').forEach(item => {
...@@ -892,6 +1311,41 @@ export default { ...@@ -892,6 +1311,41 @@ export default {
// this.form.auxiliaryExaminationName = list.join() // this.form.auxiliaryExaminationName = list.join()
// this.showAuxiliaryExamination = false // this.showAuxiliaryExamination = false
// } // }
setPressure(val) {
if (!val) return
this.form.signSystolicPressure = val.systolicPressure
this.form.signDiastolicPressure = val.diastolicPressure
},
referralUnitChange(option = {}) {
this.form.referralUnitName = option.unitName
},
referralOfficeChange(option = {}) {
this.form.referralOfficeName = option.officeName
},
nextVisitDateConfirm({ selectedValues }) {
this.form.nextVisitDate = selectedValues.join('-')
this.showNextVisitDate = false
},
submit() {
this.$refs.form.validate().then(() => {
console.log(this.form)
}).catch(e => {
})
}
},
watch: {
'form.signHeight': {
handler() {
this.form.signBmi = this.calculateBMI(this.form.signHeight, this.form.signWeight)
}
},
'form.signWeight': {
handler() {
this.form.signBmi = this.calculateBMI(this.form.signHeight, this.form.signWeight)
}
},
} }
} }
</script> </script>
...@@ -955,6 +1409,7 @@ export default { ...@@ -955,6 +1409,7 @@ export default {
color: #FA8C16; color: #FA8C16;
font-size: 12px; font-size: 12px;
margin-top: 8px; margin-top: 8px;
line-height: 16px;
} }
.bg-fa { .bg-fa {
background-color: #FAFAFA; background-color: #FAFAFA;
...@@ -980,6 +1435,6 @@ export default { ...@@ -980,6 +1435,6 @@ export default {
border-radius: 8px; border-radius: 8px;
} }
:deep(.label-mr) { :deep(.label-mr) {
margin-right: 4px; margin-right: 8px;
} }
</style> </style>
\ No newline at end of file
...@@ -30,12 +30,12 @@ module.exports = defineConfig({ ...@@ -30,12 +30,12 @@ module.exports = defineConfig({
} }
}, },
'/chronic-admin': { '/chronic-admin': {
// target: 'https://beta-tumour.zmnyjk.com', target: 'https://beta-tumour.zmnyjk.com',
target: 'http://192.168.1.126:8900', // target: 'http://192.168.1.126:8900',
changOrigin: true, changOrigin: true,
pathRewrite: { pathRewrite: {
'^/chronic-admin': '/' // '^/chronic-admin': '/'
// '^/chronic-admin': '/chronic-admin' '^/chronic-admin': '/chronic-admin'
} }
}, },
'/chronic-resident': { '/chronic-resident': {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment