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) {
// 查询专病随访详情
export function getSeparateFUDetail(params) {
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 @@
</div>
<div class="list mt-2">
<div class="flex justify-between py-1 border-bottom item">
<span class="shrink-0 mr-2 label">摄盐情况(咸淡)</span>
<span class="text-end">{{ visitInfo.saltIntakeName || '-' }}</span>
<span class="shrink-0 mr-2 label">主食</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 class="flex justify-between py-1 border-bottom item">
<span class="shrink-0 mr-2 label">心理调整</span>
......@@ -170,11 +174,16 @@
<doc-icon type="doc-down" />
</template>
</van-collapse-item>
<van-collapse-item key="7" title="目前高血压用药及依从性" name="7">
<van-collapse-item key="7" title="服药依从性" name="7">
<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.medicationComplianceName }}</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item key="8" title="药物不良反应" name="8">
<template #right-icon>
......@@ -185,13 +194,24 @@
<span class="shrink-0 mr-2 label">药物不良反应</span>
<span class="text-end">{{ visitInfo.drugsAdverseName }}</span>
</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="text-end">{{ visitInfo.drugsAdverseOther || '-' }}</span>
</div>
</div>
</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>
<doc-icon type="doc-down" />
</template>
......@@ -202,7 +222,7 @@
</div>
</div>
</van-collapse-item>
<van-collapse-item key="10" title="目前诊断" name="10">
<van-collapse-item key="11" title="目前诊断" name="11">
<template #right-icon>
<doc-icon type="doc-down" />
</template>
......@@ -213,12 +233,12 @@
</div>
</div>
</van-collapse-item>
<van-collapse-item key="11" title="用药情况" name="11">
<van-collapse-item key="12" title="用药情况" name="12">
<template #right-icon>
<doc-icon type="doc-down" />
</template>
</van-collapse-item>
<van-collapse-item key="12" title="转诊" name="12">
<van-collapse-item key="13" title="转诊" name="13">
<template #right-icon>
<doc-icon type="doc-down" />
</template>
......@@ -241,13 +261,13 @@
</div>
</div>
</van-collapse-item>
<van-collapse-item key="13" title="现场随访照片" name="13">
<van-collapse-item key="14" title="现场随访照片" name="14">
<template #right-icon>
<doc-icon type="doc-down" />
</template>
<ImagePreview :img-list="visitInfo.visitImageList"></ImagePreview>
</van-collapse-item>
<van-collapse-item key="14" title="下次随访日期" name="14">
<van-collapse-item key="15" title="下次随访日期" name="15">
<template #right-icon>
<doc-icon type="doc-down" />
</template>
......@@ -258,7 +278,7 @@
</div>
</div>
</van-collapse-item>
<van-collapse-item key="15" title="随访机构" name="15">
<van-collapse-item key="16" title="随访机构" name="16">
<template #right-icon>
<doc-icon type="doc-down" />
</template>
......@@ -309,7 +329,8 @@ export default {
{ title: '体重', key: 'signWeight', unit: 'kg' },
{ title: 'BMI', key: 'signBmi', unit: 'kg/m²' },
{ title: '腰围', key: 'signWaistline', unit: 'cm' },
{ title: '心率', key: 'signHeartRate', unit: '次/分' },
// { title: '心率', key: 'signHeartRate', unit: '次/分' },
{ title: '足背动脉搏动', key: 'signArteryPulsationName' },
{ title: '其他', key: 'signOther' }
],
columnsOrg: [
......@@ -332,7 +353,7 @@ export default {
this.activeCollapse = []
} else {
let list = []
for (let i = 1; i < 16; i++) {
for (let i = 1; i < 17; i++) {
list.push(i.toString())
}
this.activeCollapse = list
......@@ -352,7 +373,7 @@ export default {
this.activeCollapse = val.slice(val.length - 1)
}
}
if (val.length === 15) {
if (val.length === 16) {
this.collapseAll = true
} else {
this.collapseAll = false
......
<template>
<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>
<CoronaryHeartDiseaseForm v-if="diseaseInfo.diseaseType === 3" ref="coronaryHeartDiseaseForm"></CoronaryHeartDiseaseForm>
<StrokeForm v-if="diseaseInfo.diseaseType === 4" ref="strokeForm"></StrokeForm>
......
......@@ -608,34 +608,7 @@
</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> -->
<Inspect ref="inspectRef" :form="form" :diseaseInfo="diseaseInfo"></Inspect>
<!-- 目前高血压用药及依从性 -->
<div class="label-title mt-2" required>目前高血压用药及依从性</div>
......@@ -988,9 +961,17 @@ import DocImageUpload from '@/doctor/components/docImageUpload/DocImageUpload.vu
import DocUnit from '@/doctor/components/docUnit/DocUnit.vue'
import DocOffice from '@/doctor/components/docOffice/DocOffice.vue'
import DocOfficeDoctor from '@/doctor/components/docOfficeDoctor/DocOfficeDoctor.vue'
import Inspect from '../../components/Inspect.vue'
export default {
components: { CheckBtn, BloodPressurePanel, BloodPressureBt, DocImageUpload, DocUnit, DocOffice, DocOfficeDoctor },
components: { CheckBtn, BloodPressurePanel, BloodPressureBt, DocImageUpload, DocUnit, DocOffice, DocOfficeDoctor, Inspect },
inject: ['pressureObj'],
props: {
diseaseInfo: {
type: Object,
default: () => {}
}
},
data() {
return {
store: useStore(),
......@@ -1319,7 +1300,6 @@ export default {
],
showPaperReasons: false,
showSymptom: false,
// showAuxiliaryExamination: false
showCurrentDiagnosis: false,
showReferralUnit: false,
showReferralOffice: false,
......@@ -1337,6 +1317,9 @@ export default {
showVisitOffice: false,
showVisitDoctor: false
}
},
created() {
},
methods: {
checkboxReject,
......@@ -1379,17 +1362,7 @@ export default {
this.form.currentDiagnosisName = list.join()
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) {
if (!val) return
this.form.signSystolicPressure = val.systolicPressure
......@@ -1418,12 +1391,19 @@ export default {
submit() {
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, {
symptom: 'arrToStr',
currentDiagnosis: 'arrToStr'
})
resolve(form)
resolve({
...form,
inspectList: inspectList
})
}).catch(e => {
})
......@@ -1532,4 +1512,10 @@ export default {
:deep(.label-mr) {
margin-right: 8px;
}
:deep(.van-field) {
border-radius: .08rem;
.van-field__label {
width: auto;
}
}
</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