From a48eac1c30c83f93a7549302263b14280f8743c9 Mon Sep 17 00:00:00 2001 From: Lowry <2370644795@qq.com> Date: Fri, 7 Mar 2025 14:53:02 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E8=8D=AF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/doctor/separateFU.js | 5 + src/doctor/Doctor.vue | 2 +- .../separateFU/components/DocDrug.vue | 139 ++++++++++++++++++ .../separateFU/components/FormCommon.vue | 3 - .../components/HypertensionDrugs.vue | 2 +- .../separateFU/components/TreatmentPlan.vue | 9 +- .../detail/components/CopdDetail.vue | 84 ++++++----- 7 files changed, 200 insertions(+), 44 deletions(-) create mode 100644 src/doctor/followUp/separateFU/components/DocDrug.vue delete mode 100644 src/doctor/followUp/separateFU/components/FormCommon.vue diff --git a/src/api/doctor/separateFU.js b/src/api/doctor/separateFU.js index ba01b48..0486cc4 100644 --- a/src/api/doctor/separateFU.js +++ b/src/api/doctor/separateFU.js @@ -158,4 +158,9 @@ export function getScreenDyslipemiaLastTime(params) { // 引用最近一次随访记录-血脂异常 export function getVisitDyslipemiaLastTime(params) { return fetchBase({ url: `/chronic-admin/v1/chronic-visit-dyslipemia/reference-last-time`, body: params, loading: true }) +} + +// 药品列表 +export function getDrugList(params) { + return fetchBase({ url: `/chronic-admin/v1/base-info/phl-drug-list`, body: params }) } \ No newline at end of file diff --git a/src/doctor/Doctor.vue b/src/doctor/Doctor.vue index ebe701b..76c9a6d 100644 --- a/src/doctor/Doctor.vue +++ b/src/doctor/Doctor.vue @@ -66,7 +66,7 @@ export default { if (!token) { token = sessionStorage.getItem('token') if (process.env.NODE_ENV !== 'production') { - token = '009ae809-1235-4991-97be-4333260fa794' + token = 'e91f5936-1adb-41bd-984b-b4e2ce5f33b2' } } if (token) { diff --git a/src/doctor/followUp/separateFU/components/DocDrug.vue b/src/doctor/followUp/separateFU/components/DocDrug.vue new file mode 100644 index 0000000..c0a99c4 --- /dev/null +++ b/src/doctor/followUp/separateFU/components/DocDrug.vue @@ -0,0 +1,139 @@ +<template> + <div> + <van-field + v-model='innerValueName' + readonly + is-link + label='药品名称:' + placeholder='请选择' + class='input-back mt-2 form-input w-full' + :rules="[{required: true, message:'请选择'}]" + @click='showDrug= true' + /> + <!-- {{ array }} --> + <van-popup v-model:show='showDrug' position='bottom'> + <div class='pb-4 pr-4 pl-4'> + <van-picker + :columns='array' + :columns-field-names='fieldNames' + @confirm='drugConfirm' + @cancel='showDrug = false' + > + <template #columns-top> + <van-search v-model="searchStr" :placeholder='placeholder' @search='onSearch' clearable/> + </template> + </van-picker> + </div> + </van-popup> + </div> +</template> + +<script> + + +import { getDrugList } from '@/api/doctor/separateFU' +import { debounce } from '@/utils/common' + +export default { + name: 'DocDrug', + props: { + value: [String, Number], + valueName: String, + placeholder: String, + fieldNames: { + type: Object, + default: () => { + return { text: 'chemicalName', value: 'id' } + } + } + }, + emits: ['update:value', 'change'], + data() { + return { + innerValue: null, + innerValueName: undefined, + array: [], + loading: false, + showDrug: false, + searchStr: '' + } + }, + created() { + this.onSearch = debounce(this.onSearch, 500) + this.onSearch('') + }, + methods: { + onSearch(value) { + if (this.loading) return + this.array = [] + if (!value) { + return + } + if (!value.trim()) return + this.loading = true + getDrugList({ pinyinCode: value }).then(res => { + this.array = res.data || [] + if (this.array.length && this.innerValue) { + let list = this.array.filter(item => item.id == this.innerValue) + if (list && list.length) { + this.innerValueName = list[0].chemicalName + } + } + }).finally(() => { + this.loading = false + }) + }, + drugConfirm({ selectedOptions }) { + this.innerValueName = selectedOptions[0].chemicalName + this.$emit('update:value', selectedOptions[0].id) + this.$emit('change', selectedOptions[0]) + this.searchStr = '' + this.showDrug = false + } + }, + watch: { + value: { + handler(value) { + this.innerValue = value + }, + immediate: true + }, + valueName: { + handler(value) { + if (!value) { + return + } + this.onSearch(value) + }, + immediate: true + }, + searchStr: { + handler(val) { + if (!val) return + this.onSearch(val) + } + } + } +} +</script> + +<style lang='less' scoped> +.form-input { + padding: 8px 12px; + border-radius: 8px; +} + +.input-back { + background: #FAFAFA; +} + +//灰色 +.greyColor { + color: var(--van-text-color-2); +} + +//确认按钮颜色 +.blueColor { + color: var(--van-primary-color) +} +</style> \ No newline at end of file diff --git a/src/doctor/followUp/separateFU/components/FormCommon.vue b/src/doctor/followUp/separateFU/components/FormCommon.vue deleted file mode 100644 index 27e0f69..0000000 --- a/src/doctor/followUp/separateFU/components/FormCommon.vue +++ /dev/null @@ -1,3 +0,0 @@ -<template> - -</template> \ No newline at end of file diff --git a/src/doctor/followUp/separateFU/components/HypertensionDrugs.vue b/src/doctor/followUp/separateFU/components/HypertensionDrugs.vue index eaf5a7e..37eb529 100644 --- a/src/doctor/followUp/separateFU/components/HypertensionDrugs.vue +++ b/src/doctor/followUp/separateFU/components/HypertensionDrugs.vue @@ -294,7 +294,7 @@ </template> <script> import { useStore } from '@/doctor/store' -import DocDrug from '@/doctor/components/docDrug/DocDrug.vue' +import DocDrug from './DocDrug.vue' import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue' export default { name: 'HypertensionDrugs', diff --git a/src/doctor/followUp/separateFU/components/TreatmentPlan.vue b/src/doctor/followUp/separateFU/components/TreatmentPlan.vue index 19435bb..d782380 100644 --- a/src/doctor/followUp/separateFU/components/TreatmentPlan.vue +++ b/src/doctor/followUp/separateFU/components/TreatmentPlan.vue @@ -133,7 +133,7 @@ </template> <script> import { useStore } from '@/doctor/store' -import DocDrug from '@/doctor/components/docDrug/DocDrug.vue' +import DocDrug from './DocDrug.vue' import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue' export default { components: { DocDrug, CheckBtn }, @@ -218,7 +218,12 @@ export default { watch: { 'form.medicateCase': { handler() { - this.medicateCase = JSON.parse(this.form.medicateCase) + this.medicateCase = JSON.parse(this.form.medicateCase) || [] + this.medicateCase.map(item => { + item.unitName = item.unitName || this.store.getDictValue('CP00081', item.unit) + item.frequencyName = item.frequencyName || this.store.getDictValue('CP00084', item.frequency) + item.usageName = item.usageName || this.store.getDictValue('CP00083', item.usage) + }) } } } diff --git a/src/doctor/followUp/separateFU/detail/components/CopdDetail.vue b/src/doctor/followUp/separateFU/detail/components/CopdDetail.vue index df9fc36..596b79e 100644 --- a/src/doctor/followUp/separateFU/detail/components/CopdDetail.vue +++ b/src/doctor/followUp/separateFU/detail/components/CopdDetail.vue @@ -72,12 +72,25 @@ </div> </div> </van-collapse-item> - <van-collapse-item key="5" title="生活方式指导" name="5"> + <van-collapse-item key="5" title="合并症" name="5"> <template #right-icon> <doc-icon type="doc-down" /> </template> - <div style="color: #262626">吸烟</div> - <div class="gray-box mt-2"> + <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.complicationName || '-' }} + </span> + </div> + </div> + </van-collapse-item> + <van-collapse-item key="6" title="生活方式指导" name="6"> + <template #right-icon> + <doc-icon type="doc-down" /> + </template> + <div class="py-1">吸烟</div> + <div class="gray-box"> <div> <span>是否正在吸烟:</span> <span>{{ visitInfo.isSmokingName }}</span> @@ -93,44 +106,15 @@ <div v-if="visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"> <span>日吸烟量:</span> <span>{{ visitInfo.daySmoking || '-' }}支</span> - <!-- <span class="ml-4">目标日吸烟量:</span> - <span>{{ visitInfo.goalDaySmoking || '-' }}支</span> --> </div> <div v-if="visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"> <span>目标日吸烟量:</span> <span>{{ visitInfo.goalDaySmoking || '-' }}支</span> </div> </div> - <div style="color: #262626" class="mt-2">饮酒</div> - <div class="gray-box mt-2"> - <div> - <span>是否正在饮酒:</span> - <span>{{ visitInfo.isDrinkName }}</span> - </div> - <div v-if="visitInfo.isDrink === 1 || visitInfo.isDrink === 2"> - <span>日饮酒量:</span> - <span>{{ visitInfo.dayDrink || '-' }}ml</span> - <span class="ml-4">目标日饮酒量:</span> - <span>{{ visitInfo.goalDayDrink || '-' }}ml</span> - </div> - <div v-if="visitInfo.isDrink === 1 || visitInfo.isDrink === 2"> - <span>白酒:</span> - <span>{{ visitInfo.drinkLiquor || '-' }}ml/日</span> - <span class="ml-2">啤酒:</span> - <span>{{ visitInfo.drinkBeer || '-' }}ml/日</span> - <span class="ml-2">红酒:</span> - <span>{{ visitInfo.drinkRed || '-' }}ml/日</span> - - </div> - <div v-if="visitInfo.isDrink === 1 || visitInfo.isDrink === 2"> - <span>黄酒:</span> - <span>{{ visitInfo.drinkYellow || '-' }}ml/日</span> - <span class="ml-2">其他:</span> - <span>{{ visitInfo.drinkOther || '-' }}ml/日</span> - </div> - </div> - <div style="color: #262626" class="mt-2">运动</div> - <div class="gray-box mt-2"> + + <div class="py-1">运动</div> + <div class="gray-box"> <div> <span>有无规律活动:</span> <span>{{ visitInfo.regularExerciseName }}</span> @@ -150,10 +134,22 @@ <span>{{ visitInfo.targetExerciseMinute || '-' }}分钟/次</span> </div> </div> + <div class="py-1">呼吸锻炼</div> + <div class="gray-box"> + <div> + <span>有无呼吸锻炼:</span> + <span>{{ visitInfo.isBreathExerciseName }}</span> + </div> + <div v-if="visitInfo.isBreathExercise === 1"> + <span>呼吸锻炼频率:</span> + <span>{{ visitInfo.breathExerciseWeek }}次/周、</span> + <span>{{ visitInfo.breathExerciseMinute }}分钟/次</span> + </div> + </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.healthEducationName || '-' }}</span> </div> <div class="flex justify-between py-1 border-bottom item"> <span class="shrink-0 mr-2 label">心理调整</span> @@ -164,6 +160,20 @@ <span class="text-end">{{ visitInfo.doctorAdviceName || '-' }}</span> </div> </div> + <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.vaccinesHistoryName || '-' }} + </span> + </div> + <div v-if="visitInfo.vaccinesHistory === 1" class="flex justify-between py-1 border-bottom item"> + <span class="shrink-0 mr-2 label">疫苗名称</span> + <span class="text-end"> + {{ visitInfo.vaccinesHistoryHaveName || '-' }} + </span> + </div> + </div> </van-collapse-item> <van-collapse-item key="6" title="辅助检查" name="6"> <template #right-icon> -- 2.18.0