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