Commit 63e57a39 authored by songrui's avatar songrui

Merge branch 'chronic-dev' of http://gitlab.yiboshi.com/nightkis1995/frontend-h5 into chronic-dev

parents cade8539 ebc260cb
...@@ -33,4 +33,9 @@ export function addDyslipidemiaForm(params) { ...@@ -33,4 +33,9 @@ export function addDyslipidemiaForm(params) {
// 查询专病随访详情 // 查询专病随访详情
export function getSeparateFUDetail(params) { export function getSeparateFUDetail(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-record/specialized-detail`, body: params, loading: true }) return fetchBase({ url: `/chronic-admin/v1/chronic-visit-record/specialized-detail`, body: params, loading: true })
}
// 获取检验项目对码表
export function getInspectCode(configType) {
return fetchBase({ url: `/chronic-admin/v1/chronic-inspect-item/query-list/${configType}`, loading: true })
} }
\ No newline at end of file
<template>
<div>
<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>
<div v-for="x in viewData" :key="x.insType" class="bg-fa mt-2">
<div class="label-title" required style="color: #262626; font-size: 14px">{{ x.insName }}</div>
<template v-for="y in x.items" :key="y.itemCode">
<van-field
:label="`${y.itemName}(${y.itemCode}) : `"
v-model="y.itemValue"
placeholder="请输入"
class="card-input mt-2"
v-if="y.itemType === 1"
>
<template #extra v-if="y.unit">
<span class="ml-1">{{ y.unit }}</span>
</template>
</van-field>
<van-field
:label="`${y.itemName}(${y.itemCode}) : `"
is-link
:modelValue="y.itemValue"
readonly
placeholder="请选择或录入"
@click="setSelectOption(y, y.itemType)"
class="card-input mt-2"
v-if="y.itemType === 4"
>
<template #extra v-if="y.unit">
<span class="ml-1">{{ y.unit }}</span>
</template>
</van-field>
</template>
</div>
<InputSelect
v-model:show="selectOption.show4"
:dict="selectOption.dict"
@change="onSelectInputConfirm">
</InputSelect>
</div>
</template>
<script>
import { useStore } from '@/doctor/store'
import { getInspectCode } from '@/api/doctor/separateFU'
import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue'
import InputSelect from '@/doctor/diagnose/common/InputSelect.vue'
export default {
components: { CheckBtn, InputSelect },
props: {
form: {
type: Object,
default: () => {}
},
diseaseInfo: {
type: Object,
default: () => {}
}
},
data() {
return {
store: useStore(),
showAuxiliaryExamination: false,
inspectList: [],
viewData: [],
selectOption: {
show4: false,
item: {},
dict: []
},
rules: {}
}
},
created() {
this.getCode()
},
methods: {
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
let inspectList = []
this.form.auxiliaryExamination.forEach(item => {
const items = this.inspectList.filter(e => e.insType === item)
inspectList.push({
insType: items[0].insType,
insName: items[0].insName,
items: [...items]
})
})
this.viewData = inspectList
},
getCode() {
getInspectCode(1).then(res => {
console.log(666, res)
this.inspectList = res.data
})
},
setSelectOption(item, itemType) {
this.selectOption['show' + itemType] = true
this.selectOption.item = item
this.selectOption.dict = item.dictItemList
},
onSelectInputConfirm(option) {
this.selectOption.item.itemValue = option.value
this.selectOption.show4 = false
},
submit() {
return new Promise((resolve, reject) => {
let list = []
this.viewData.forEach(x => {
x.items.forEach(y => {
list.push({
diseaseType: this.diseaseInfo.diseaseType,
dataType: y.configType,
insType: y.insType,
insName: y.insName,
itemCode: y.itemCode,
itemName: y.itemName,
itemType: y.itemType,
itemValue: y.itemValue,
abnormalSituation: y.abnormalSituation,
img: y.img,
unit: y.unit
})
})
})
resolve(list)
})
}
}
}
</script>
<style lang="less" scoped>
.label-title {
font-size: 13px;
color: #595959;
font-weight: 500;
margin-bottom: 8px;
&[required] {
&::after {
content: '*';
color: #FF4D4F;
font-weight: bold;
margin-left: 4px;
}
}
}
.form-input {
background-color: #FAFAFA;
padding: 8px 12px;
border-radius: 8px;
}
.pop-title {
color: #262626;
font-size: 16px;
font-weight: 600;
}
.greyColor {
color: var(--van-text-color-2);
font-weight: 400;
}
.blueColor {
color: #607FF0;
font-weight: 500;
}
.bg-fa {
background-color: #FAFAFA;
padding: 8px;
border-radius: 8px;
}
.card-input {
padding: 8px 12px;
border-radius: 8px;
}
</style>
\ No newline at end of file
...@@ -152,8 +152,12 @@ ...@@ -152,8 +152,12 @@
</div> </div>
<div class="list mt-2"> <div class="list mt-2">
<div class="flex justify-between py-1 border-bottom item"> <div class="flex justify-between py-1 border-bottom item">
<span class="shrink-0 mr-2 label">摄盐情况(咸淡)</span> <span class="shrink-0 mr-2 label">主食</span>
<span class="text-end">{{ visitInfo.saltIntakeName || '-' }}</span> <span class="text-end">{{ visitInfo.staplFood || '-' }} 克/天</span>
</div>
<div class="flex justify-between py-1 border-bottom item">
<span class="shrink-0 mr-2 label">目标主食</span>
<span class="text-end">{{ visitInfo.targetStaplFood || '-' }} 克/天</span>
</div> </div>
<div class="flex justify-between py-1 border-bottom item"> <div class="flex justify-between py-1 border-bottom item">
<span class="shrink-0 mr-2 label">心理调整</span> <span class="shrink-0 mr-2 label">心理调整</span>
...@@ -170,11 +174,16 @@ ...@@ -170,11 +174,16 @@
<doc-icon type="doc-down" /> <doc-icon type="doc-down" />
</template> </template>
</van-collapse-item> </van-collapse-item>
<van-collapse-item key="7" title="目前高血压用药及依从性" name="7"> <van-collapse-item key="7" title="服药依从性" name="7">
<template #right-icon> <template #right-icon>
<doc-icon type="doc-down" /> <doc-icon type="doc-down" />
</template> </template>
<div class="list">
<div class="flex justify-between py-1 border-bottom item">
<span class="shrink-0 mr-2 label">服药依从性</span>
<span class="text-end">{{ visitInfo.medicationComplianceName }}</span>
</div>
</div>
</van-collapse-item> </van-collapse-item>
<van-collapse-item key="8" title="药物不良反应" name="8"> <van-collapse-item key="8" title="药物不良反应" name="8">
<template #right-icon> <template #right-icon>
...@@ -185,13 +194,24 @@ ...@@ -185,13 +194,24 @@
<span class="shrink-0 mr-2 label">药物不良反应</span> <span class="shrink-0 mr-2 label">药物不良反应</span>
<span class="text-end">{{ visitInfo.drugsAdverseName }}</span> <span class="text-end">{{ visitInfo.drugsAdverseName }}</span>
</div> </div>
<div class="flex justify-between py-1 border-bottom item"> <div v-if="visitInfo.drugsAdverse === 1" class="flex justify-between py-1 border-bottom item">
<span class="shrink-0 mr-2 label">不良反应</span> <span class="shrink-0 mr-2 label">不良反应</span>
<span class="text-end">{{ visitInfo.drugsAdverseOther || '-' }}</span> <span class="text-end">{{ visitInfo.drugsAdverseOther || '-' }}</span>
</div> </div>
</div> </div>
</van-collapse-item> </van-collapse-item>
<van-collapse-item key="9" title="此次随访分类" name="9"> <van-collapse-item key="9" title="低血糖反应" name="9">
<template #right-icon>
<doc-icon type="doc-down" />
</template>
<div class="list">
<div class="flex justify-between py-1 border-bottom item">
<span class="shrink-0 mr-2 label">低血糖反应</span>
<span class="text-end">{{ visitInfo.glycopeniaReactionName }}</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item key="10" title="此次随访分类" name="10">
<template #right-icon> <template #right-icon>
<doc-icon type="doc-down" /> <doc-icon type="doc-down" />
</template> </template>
...@@ -202,7 +222,7 @@ ...@@ -202,7 +222,7 @@
</div> </div>
</div> </div>
</van-collapse-item> </van-collapse-item>
<van-collapse-item key="10" title="目前诊断" name="10"> <van-collapse-item key="11" title="目前诊断" name="11">
<template #right-icon> <template #right-icon>
<doc-icon type="doc-down" /> <doc-icon type="doc-down" />
</template> </template>
...@@ -213,12 +233,12 @@ ...@@ -213,12 +233,12 @@
</div> </div>
</div> </div>
</van-collapse-item> </van-collapse-item>
<van-collapse-item key="11" title="用药情况" name="11"> <van-collapse-item key="12" title="用药情况" name="12">
<template #right-icon> <template #right-icon>
<doc-icon type="doc-down" /> <doc-icon type="doc-down" />
</template> </template>
</van-collapse-item> </van-collapse-item>
<van-collapse-item key="12" title="转诊" name="12"> <van-collapse-item key="13" title="转诊" name="13">
<template #right-icon> <template #right-icon>
<doc-icon type="doc-down" /> <doc-icon type="doc-down" />
</template> </template>
...@@ -241,13 +261,13 @@ ...@@ -241,13 +261,13 @@
</div> </div>
</div> </div>
</van-collapse-item> </van-collapse-item>
<van-collapse-item key="13" title="现场随访照片" name="13"> <van-collapse-item key="14" title="现场随访照片" name="14">
<template #right-icon> <template #right-icon>
<doc-icon type="doc-down" /> <doc-icon type="doc-down" />
</template> </template>
<ImagePreview :img-list="visitInfo.visitImageList"></ImagePreview> <ImagePreview :img-list="visitInfo.visitImageList"></ImagePreview>
</van-collapse-item> </van-collapse-item>
<van-collapse-item key="14" title="下次随访日期" name="14"> <van-collapse-item key="15" title="下次随访日期" name="15">
<template #right-icon> <template #right-icon>
<doc-icon type="doc-down" /> <doc-icon type="doc-down" />
</template> </template>
...@@ -258,7 +278,7 @@ ...@@ -258,7 +278,7 @@
</div> </div>
</div> </div>
</van-collapse-item> </van-collapse-item>
<van-collapse-item key="15" title="随访机构" name="15"> <van-collapse-item key="16" title="随访机构" name="16">
<template #right-icon> <template #right-icon>
<doc-icon type="doc-down" /> <doc-icon type="doc-down" />
</template> </template>
...@@ -309,7 +329,8 @@ export default { ...@@ -309,7 +329,8 @@ export default {
{ title: '体重', key: 'signWeight', unit: 'kg' }, { title: '体重', key: 'signWeight', unit: 'kg' },
{ title: 'BMI', key: 'signBmi', unit: 'kg/m²' }, { title: 'BMI', key: 'signBmi', unit: 'kg/m²' },
{ title: '腰围', key: 'signWaistline', unit: 'cm' }, { title: '腰围', key: 'signWaistline', unit: 'cm' },
{ title: '心率', key: 'signHeartRate', unit: '次/分' }, // { title: '心率', key: 'signHeartRate', unit: '次/分' },
{ title: '足背动脉搏动', key: 'signArteryPulsationName' },
{ title: '其他', key: 'signOther' } { title: '其他', key: 'signOther' }
], ],
columnsOrg: [ columnsOrg: [
...@@ -332,7 +353,7 @@ export default { ...@@ -332,7 +353,7 @@ export default {
this.activeCollapse = [] this.activeCollapse = []
} else { } else {
let list = [] let list = []
for (let i = 1; i < 16; i++) { for (let i = 1; i < 17; i++) {
list.push(i.toString()) list.push(i.toString())
} }
this.activeCollapse = list this.activeCollapse = list
...@@ -352,7 +373,7 @@ export default { ...@@ -352,7 +373,7 @@ export default {
this.activeCollapse = val.slice(val.length - 1) this.activeCollapse = val.slice(val.length - 1)
} }
} }
if (val.length === 15) { if (val.length === 16) {
this.collapseAll = true this.collapseAll = true
} else { } else {
this.collapseAll = false this.collapseAll = false
......
<template> <template>
<div> <div>
<HypertensionForm v-if="diseaseInfo.diseaseType === 1" ref="hypertensionForm"></HypertensionForm> <HypertensionForm v-if="diseaseInfo.diseaseType === 1" :diseaseInfo="diseaseInfo" ref="hypertensionForm"></HypertensionForm>
<DiabetesForm v-if="diseaseInfo.diseaseType === 2" ref="diabetesForm"></DiabetesForm> <DiabetesForm v-if="diseaseInfo.diseaseType === 2" ref="diabetesForm"></DiabetesForm>
<CoronaryHeartDiseaseForm v-if="diseaseInfo.diseaseType === 3" ref="coronaryHeartDiseaseForm"></CoronaryHeartDiseaseForm> <CoronaryHeartDiseaseForm v-if="diseaseInfo.diseaseType === 3" ref="coronaryHeartDiseaseForm"></CoronaryHeartDiseaseForm>
<StrokeForm v-if="diseaseInfo.diseaseType === 4" ref="strokeForm"></StrokeForm> <StrokeForm v-if="diseaseInfo.diseaseType === 4" ref="strokeForm"></StrokeForm>
......
...@@ -608,34 +608,7 @@ ...@@ -608,34 +608,7 @@
</template> </template>
</van-field> </van-field>
<!-- <div class="label-title mt-2">辅助检查</div> <Inspect ref="inspectRef" :form="form" :diseaseInfo="diseaseInfo"></Inspect>
<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> -->
<!-- 目前高血压用药及依从性 --> <!-- 目前高血压用药及依从性 -->
<div class="label-title mt-2" required>目前高血压用药及依从性</div> <div class="label-title mt-2" required>目前高血压用药及依从性</div>
...@@ -988,9 +961,17 @@ import DocImageUpload from '@/doctor/components/docImageUpload/DocImageUpload.vu ...@@ -988,9 +961,17 @@ import DocImageUpload from '@/doctor/components/docImageUpload/DocImageUpload.vu
import DocUnit from '@/doctor/components/docUnit/DocUnit.vue' import DocUnit from '@/doctor/components/docUnit/DocUnit.vue'
import DocOffice from '@/doctor/components/docOffice/DocOffice.vue' import DocOffice from '@/doctor/components/docOffice/DocOffice.vue'
import DocOfficeDoctor from '@/doctor/components/docOfficeDoctor/DocOfficeDoctor.vue' import DocOfficeDoctor from '@/doctor/components/docOfficeDoctor/DocOfficeDoctor.vue'
import Inspect from '../../components/Inspect.vue'
export default { export default {
components: { CheckBtn, BloodPressurePanel, BloodPressureBt, DocImageUpload, DocUnit, DocOffice, DocOfficeDoctor }, components: { CheckBtn, BloodPressurePanel, BloodPressureBt, DocImageUpload, DocUnit, DocOffice, DocOfficeDoctor, Inspect },
inject: ['pressureObj'], inject: ['pressureObj'],
props: {
diseaseInfo: {
type: Object,
default: () => {}
}
},
data() { data() {
return { return {
store: useStore(), store: useStore(),
...@@ -1319,7 +1300,6 @@ export default { ...@@ -1319,7 +1300,6 @@ export default {
], ],
showPaperReasons: false, showPaperReasons: false,
showSymptom: false, showSymptom: false,
// showAuxiliaryExamination: false
showCurrentDiagnosis: false, showCurrentDiagnosis: false,
showReferralUnit: false, showReferralUnit: false,
showReferralOffice: false, showReferralOffice: false,
...@@ -1337,6 +1317,9 @@ export default { ...@@ -1337,6 +1317,9 @@ export default {
showVisitOffice: false, showVisitOffice: false,
showVisitDoctor: false showVisitDoctor: false
} }
},
created() {
}, },
methods: { methods: {
checkboxReject, checkboxReject,
...@@ -1379,17 +1362,7 @@ export default { ...@@ -1379,17 +1362,7 @@ export default {
this.form.currentDiagnosisName = list.join() this.form.currentDiagnosisName = list.join()
this.showCurrentDiagnosis = false this.showCurrentDiagnosis = 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
// }
setPressure(val) { setPressure(val) {
if (!val) return if (!val) return
this.form.signSystolicPressure = val.systolicPressure this.form.signSystolicPressure = val.systolicPressure
...@@ -1418,12 +1391,19 @@ export default { ...@@ -1418,12 +1391,19 @@ export default {
submit() { submit() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
this.$refs.form.validate().then(() => { this.$refs.form.validate().then(async () => {
// 辅助检查
const inspectList = await this.$refs.inspectRef.submit()
const form = fetchDataHandle(this.form, { const form = fetchDataHandle(this.form, {
symptom: 'arrToStr', symptom: 'arrToStr',
currentDiagnosis: 'arrToStr' currentDiagnosis: 'arrToStr'
}) })
resolve(form)
resolve({
...form,
inspectList: inspectList
})
}).catch(e => { }).catch(e => {
}) })
...@@ -1532,4 +1512,10 @@ export default { ...@@ -1532,4 +1512,10 @@ export default {
:deep(.label-mr) { :deep(.label-mr) {
margin-right: 8px; margin-right: 8px;
} }
:deep(.van-field) {
border-radius: .08rem;
.van-field__label {
width: auto;
}
}
</style> </style>
\ No newline at end of file
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