diff --git a/src/api/doctor/disease.js b/src/api/doctor/disease.js
index 720fbdd681f56e43759883a9de7967eaeb3274fb..716361be0e86c9ce8f53cb38081b76a0d233dde9 100644
--- a/src/api/doctor/disease.js
+++ b/src/api/doctor/disease.js
@@ -48,4 +48,9 @@ export function delDiagnose(params) {
 // 报卡信息主键查询
 export function fetchCurrencyByUuid(params) {
     return fetchBase({ url: `/chronic-admin/v1/chronic-visit-record-crs/record-uuid`, body: params, loading: true })
+}
+
+// 删除随访
+export function deleteVisitRecord(params) {
+    return fetchBase({ url: `/chronic-admin/v1/chronic-visit-record/delete`, body:params, loading: true })
 }
\ No newline at end of file
diff --git a/src/api/doctor/highVisitApi.js b/src/api/doctor/highVisitApi.js
new file mode 100644
index 0000000000000000000000000000000000000000..df54f7b381cae47452dbadae5cbc2aaf05578c7d
--- /dev/null
+++ b/src/api/doctor/highVisitApi.js
@@ -0,0 +1,50 @@
+
+import {fetchBase} from '@/api/doctor/doctorFetch'
+
+// 保存主要慢病随访
+export function saveHighMajorVisit(params) {
+    return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-major/save`,body: params})
+}
+// 修改主要慢病随访
+export function updateHighMajorVisit(params) {
+    return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-major/update`,body: params})
+}
+
+//查询主要慢病随访
+export function getHighMajorVisitId(id) {
+    return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-major/record`,body:{"id":id},loading: true})
+}
+//删除主要慢病随访
+export function deleteHighMajorVisit(params) {
+    return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-major/delete`,body: params})
+}
+
+// 保存专病随访
+export function saveHighSpecificVisit(params) {
+    return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-specific/save`,body: params})
+}
+
+// 修改专病随访
+export function updateHighSpecificVisit(params) {
+    return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-specific/update`,body: params})
+}
+
+//查询专病随访
+export function getHighSpecificVisitId(id) {
+    return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-specific/record`,body:{"id":id},loading: true})
+}
+
+//删除专病随访
+export function deleteHighSpecificVisit(params) {
+    return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-specific/delete`,body: params})
+}
+
+//查询最近一次专病高危随访
+export function getLastHighSpecificVisit(params) {
+    return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-specific/last-info`, body: params, loading: true})
+}
+
+//删除高危随访
+export function delHighVisit(params) {
+    return fetchBase({ url: `/chronic-admin/v1/chronic-high-visit-collect/delete`,body: params})
+}
\ No newline at end of file
diff --git a/src/doctor/patientDetail/PatientDetail.vue b/src/doctor/patientDetail/PatientDetail.vue
index 53c2f88738665b235afba83b2ceedc199b2a63cc..c4a09b0f0f00663ebba3d03ca8e492232468e317 100644
--- a/src/doctor/patientDetail/PatientDetail.vue
+++ b/src/doctor/patientDetail/PatientDetail.vue
@@ -137,6 +137,8 @@ export default {
             addOptions: [
                 { name: '新增主要慢病高危筛查', value: 1, path: '/doctor/screening/firstForm' },
                 { name: '新增专病高危筛查', value: 2, path: '/doctor/screening/secondForm' },
+                { name: '新增主要慢病高危随访', value: 8, path: '/doctor/screening/highVisit/firstForm' },
+                { name: '新增专病高危随访', value: 9, path: '/doctor/screening/highVisit/secondForm' },
                 { name: '新增慢病诊断', value: 3, path: '/doctor/diagnose/form' },
                 { name: '新增通用随访', value: 4, path: '/doctor/followUp/generalFU/add' },
                 { name: '新增死亡记录', value: 5, path: '/doctor/deathRecord/add' },
diff --git a/src/doctor/patientDetail/components/disease/Visit.vue b/src/doctor/patientDetail/components/disease/Visit.vue
index 85be043ebd76658fd0315ee1718c713b45454fba..43dff7ec306c6b7d63e3ffd5311a693d6ad2b230 100644
--- a/src/doctor/patientDetail/components/disease/Visit.vue
+++ b/src/doctor/patientDetail/components/disease/Visit.vue
@@ -50,13 +50,13 @@
                         </div>
                         <div class='divider'></div>
                         <div class='bt-group'>
-                            <van-button round size='small' class='doc-btn-primary' @click='toDetail(item)'>详情
+                            <van-button round size='small' class='doc-btn-primary' @click.stop='toDetail(item)'>详情
                             </van-button>
                             <!--                             <van-button round size="small" class="doc-btn-primary" v-if="item.allowUpdate == 1">转诊</van-button>-->
                             <van-button round size='small' class='doc-btn-primary' @click.stop='editBtn(item)'
                                         v-if='!(item.allowUpdate !==1 || item.serveType == 5)'>修改
                             </van-button>
-                            <van-button round size='small' class='doc-btn-red' @click='delBtn(item)'
+                            <van-button round size='small' class='doc-btn-red' @click.stop='delBtn(item)'
                                         v-if='!(item.allowUpdate !==1 || item.serveType == 5)'>删除
                             </van-button>
                         </div>
@@ -72,9 +72,10 @@
 </template>
 
 <script>
-import { delDiagnose, getVisitManageList } from '@/api/doctor/disease.js'
+import { delDiagnose, deleteVisitRecord, getVisitManageList } from '@/api/doctor/disease.js'
 import { useStore } from '@/doctor/store'
 import { showConfirmDialog } from 'vant'
+import { delHighVisit } from '@/api/doctor/highVisitApi'
 
 export default {
     inject: ['residentInfo'],
@@ -189,9 +190,19 @@ export default {
                 })
             }
         },
-        delBtn() {
+        delBtn(record) {
+            showConfirmDialog({
+                message: '确定要删除吗?'
+            }).then(() => {
+                deleteVisitRecord({ id: record.id }).then(res => {
+                    setTimeout(() => {
+                        this.$message.info('删除成功')
+                    }, 600)
+                    this.list = this.list.filter(e => e.id !== record.id)
+                })
+            }).catch((err) => { console.warn('delBtn', err) })
 
-        }
+        },
     },
     watch: {
         diseaseType() {
diff --git a/src/doctor/patientDetail/components/screening/Visit.vue b/src/doctor/patientDetail/components/screening/Visit.vue
index d83c9fd2c72433471dba5f31f2d1626927452753..bfe6bacddb0df08be8d9de605449dc7b66438b6d 100644
--- a/src/doctor/patientDetail/components/screening/Visit.vue
+++ b/src/doctor/patientDetail/components/screening/Visit.vue
@@ -1,7 +1,7 @@
 <template>
-    <div class="h-full visit-list" ref='list'>
+    <div class='h-full visit-list' ref='list'>
         <van-pull-refresh v-model='loadingRefresh' @refresh='onRefresh'
-            :disabled='isRefreshDisable' style="min-height: 100%">
+                          :disabled='isRefreshDisable' style='min-height: 100%'>
             <van-list
                 v-model:loading='loading'
                 :finished='finished'
@@ -9,43 +9,46 @@
                 :immediate-check='false'
                 @load='onMore'
             >
-                <div class="flex flex-col">
-                    <div v-for='item in list' :key="item.id"
-                        :class="['mb-3', {'first-card': item.serveType == 1},
+                <div class='flex flex-col'>
+                    <div v-for='item in list' :key='item.id'
+                         :class="['mb-3', {'first-card': item.serveType == 1},
                             {'second-card': item.serveType == 2},
                             {'general-card': item.serveType == 3}]">
-                        <div class="title px-4 py-1">{{item.serveTypeName}}</div>
-                        <div class="py-3 px-4 doc-list-card" @click="toDetail(item)">
-                            <div class="flex flex-col" style="row-gap: .04rem;line-height: 1.5;"
-                                @click="toDetail(item)">
+                        <div class='title px-4 py-1'>{{ item.serveTypeName }}</div>
+                        <div class='py-3 px-4 doc-list-card'>
+                            <div class='flex flex-col' style='row-gap: .04rem;line-height: 1.5;'
+                                 @click='toDetail(item)'>
                                 <div>
-                                    <span class="label">随访日期</span>
+                                    <span class='label'>随访日期</span>
                                     <span>{{ item.visitDate }}</span>
                                 </div>
                                 <div>
-                                    <span class="label">随访类型</span>
+                                    <span class='label'>随访类型</span>
                                     <span>{{ item.visitTypeName || '-' }}</span>
                                 </div>
                                 <div>
-                                    <span class="label">随访方式</span>
+                                    <span class='label'>随访方式</span>
                                     <span>{{ item.visitWayName || '-' }}</span>
                                 </div>
-                                <div class="text-ellipsis">
-                                    <span class="label">随访医生</span>
+                                <div class='text-ellipsis'>
+                                    <span class='label'>随访医生</span>
                                     <span>{{ item.visitDoctorName || '-' }}</span>
                                 </div>
-                                <div class="text-ellipsis">
-                                    <span class="label">随访机构</span>
+                                <div class='text-ellipsis'>
+                                    <span class='label'>随访机构</span>
                                     <span>{{ item.visitUnitName || '-' }}</span>
                                 </div>
                             </div>
-                            <div class="divider my-3" v-if="item.serveType == 3"></div>
-                            <div class="bt-group" v-if="item.serveType == 3">
-                                <van-button round size="small" class="doc-btn-primary" @click="toDetail(item)">详情</van-button>
-                                <!-- <van-button round size="small" class="doc-btn-primary" @click='editBtn(item)'
-                                    v-if="!(item.allowUpdate !==1 || item.serveType == 3)">修改</van-button>
-                                <van-button round size="small" class="doc-btn-red" @click="delBtn(item)"
-                                    v-if="!(item.allowUpdate !==1 || item.serveType == 3)">删除</van-button> -->
+                            <div class='divider my-3'></div>
+                            <div class='bt-group'>
+                                <van-button round size='small' class='doc-btn-primary' @click='toDetail(item)'>详情
+                                </van-button>
+                                <van-button round size='small' class='doc-btn-primary' @click='editBtn(item)'
+                                            v-if='!(item.allowUpdate !==1 || item.serveType == 3)'>修改
+                                </van-button>
+                                <van-button round size='small' class='doc-btn-red' @click='delBtn(item)'
+                                            v-if='!(item.allowUpdate !==1 || item.serveType == 3)'>删除
+                                </van-button>
                             </div>
                         </div>
                     </div>
@@ -62,6 +65,9 @@
 <script>
 import { getHighVisitList } from '@/api/doctor/visit.js'
 import { useStore } from '@/doctor/store'
+import { delHighVisit } from '@/api/doctor/highVisitApi'
+import { showConfirmDialog } from 'vant'
+import { deleteSecondScreening } from '@/api/doctor/screening'
 
 export default {
     inject: ['residentInfo'],
@@ -131,6 +137,24 @@ export default {
                 this.$message.info('暂时无法查看 详情信息')
                 return
             }
+            //主要慢病
+            if (record.serveType == 1) {
+                this.$router.push({
+                    path: '/doctor/screening/highVisit/firstDetail',
+                    query: {
+                        id: record.relationId
+                    }
+                })
+            }
+            //专病高危
+            if (record.serveType == 2) {
+                this.$router.push({
+                    path: '/doctor/screening/highVisit/secondDetail',
+                    query: {
+                        id: record.relationId
+                    }
+                })
+            }
             if (record.serveType == 3) {
                 this.$router.push({
                     path: '/doctor/screening/highVisit/GeneralFUDetail',
@@ -139,19 +163,44 @@ export default {
                     }
                 })
             }
-            // this.$router.push({
-            //     path: '/doctor/patient-detail',
-            //     query: {
-            //         residentInfoId: record.residentInfoId
-            //     }
-            // })
         },
-        editBtn() {
-
+        editBtn(record) {
+            if (!record) return
+            if (record.id == null) {
+                this.$message.info('暂时无法修改')
+                return
+            }
+            //主要慢病
+            if (record.serveType == 1) {
+                this.$router.push({
+                    path: '/doctor/screening/highVisit/firstForm',
+                    query: {
+                        id: record.relationId
+                    }
+                })
+            }
+            //专病高危
+            if (record.serveType == 2) {
+                this.$router.push({
+                    path: '/doctor/screening/highVisit/secondForm',
+                    query: {
+                        id: record.relationId
+                    }
+                })
+            }
+        },
+        delBtn(record) {
+            showConfirmDialog({
+                message: '确定要删除吗?'
+            }).then(() => {
+                delHighVisit({ id: record.id }).then(res => {
+                    setTimeout(() => {
+                        this.$message.info('删除成功')
+                    }, 600)
+                    this.list = this.list.filter(e => e.id !== record.id)
+                })
+            }).catch((err) => { console.warn('delBtn', err) })
         },
-        delBtn() {
-
-        }
     },
     watch: {
         'store.refreshMark'() {
@@ -161,6 +210,6 @@ export default {
 }
 </script>
 
-<style lang="less" scoped>
+<style lang='less' scoped>
 
 </style>
diff --git a/src/doctor/screening/highVisit/detail/FirstDetail.vue b/src/doctor/screening/highVisit/detail/FirstDetail.vue
new file mode 100644
index 0000000000000000000000000000000000000000..ba4000fa8cc8d66dcb87f1cb63ebb33a1f2ad72c
--- /dev/null
+++ b/src/doctor/screening/highVisit/detail/FirstDetail.vue
@@ -0,0 +1,273 @@
+<template>
+    <div class="flex flex-col" style="height: 100vh">
+        <div class="p-3 text-black text-center shrink-0 doc-nav-bar" >
+            <span @click="onBack" class="text-12 back-bt">
+                <doc-icon type="doc-left2" />
+            </span>
+            <span>主要慢病随访详情</span>
+        </div>
+        <div class="px-4 py-3 flex shrink-0 base-info">
+            <div class="flex w-full">
+                <div class="grow flex flex-col justify-between">
+                    <div class="flex justify-between">
+                        <span class="name">{{ collapseList[0].info.residentName }}</span>
+                    </div>
+                    <div class='lh-22'>
+                        <div class='mt-3'>随访日期:<span class='color-26'>{{ info.visitDate || '-' }}</span></div>
+                        <span>慢病高危评估结果:</span>
+                        <span :class="{'text-red': info.screenResult !== 1, 'color-26': info.screenResult === 1 }">{{ info.screenResultName }}</span>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="p-3 grow cont-box">
+            <div class="p-3 h-full cont-inner">
+                <div class="flex justify-between collapse-head mt-2">
+                    <span class="text-16 font-semibold">全部内容</span>
+                    <span @click="toggleAll">
+                        <span v-if="!collapseAll">展开全部</span>
+                        <span v-else>展开收起</span>
+                        <span :class="['ml-2 icon-down', { 'icon-down-expanded': collapseAll }]">
+                            <doc-icon type="doc-down" />
+                        </span>
+                    </span>
+                </div>
+
+                <van-collapse :model-value="activeCollapse" ref="collapse" class="doc-collapse"
+                    @change="collapseChange">
+                    <van-collapse-item v-for="collapse in collapseList" :key="collapse.name"
+                        :title="collapse.title" :name="collapse.name">
+                        <template #right-icon>
+                            <doc-icon type="doc-down" />
+                        </template>
+                        <div class="list">
+                            <div v-for="item in collapse.columns" :key="item.key" >
+                                <div v-if="item.key == 'pressure'" class="pt-3">
+                                    <table class="w-full">
+                                        <tr>
+                                            <td style="width: 7.1em">血压值(mmHg)</td>
+                                            <td>收缩压(高压)</td>
+                                            <td></td>
+                                            <td>舒张压(低压)</td>
+                                        </tr>
+                                        <tr>
+                                            <td>
+                                                第1次测量
+                                            </td>
+                                            <td>
+                                                {{ info.pressureOneSbp || '-' }}
+                                            </td>
+                                            <td>/</td>
+                                            <td>
+                                                {{ info.pressureOneDbp || '-' }}
+                                            </td>
+                                        </tr>
+                                        <tr>
+                                            <td>
+                                                第2次测量
+                                            </td>
+                                            <td class="flex">
+                                                {{ info.pressureTwoSbp || '-' }}
+                                            </td>
+                                            <td>/</td>
+                                            <td>
+                                                {{ info.pressureTwoDbp || '-' }}
+                                            </td>
+                                        </tr>
+                                    </table>
+                                </div>
+                                <div v-else class="flex justify-between py-1 border-bottom item">
+                                    <span class="shrink-0 mr-2 label">{{ item.title }}</span>
+                                    <span v-if="item.key === 'idCard'">{{ $idCardHide(collapse.info.idCard) || '-' }}</span>
+                                    
+                                    <span class="text-end" v-else>
+                                        <span>{{ collapse.info[item.key] || '-' }}</span>
+                                        <span v-if="item.unit" class="ml-1">{{ item.unit }}</span>
+                                    </span>
+                                </div>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                </van-collapse>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import { showNotify } from 'vant'
+import { useStore } from '@/doctor/store'
+import { getHighMajorVisitId } from '@/api/doctor/highVisitApi'
+
+export default {
+    data() {
+        return {
+            store: useStore(),
+            activeCollapse: [],
+            collapseList: [
+                { title: '居民信息', name: '1', columns: [
+                    { title: '姓名', key: 'residentName' },
+                    { title: '证件号码', key: 'idCard'},
+                    { title: '性别', key: 'genderName' },
+                    { title: '出生日期', key: 'dataBirth' },
+                    { title: '年龄', key: 'currentAge' },
+                    { title: '民族', key: 'nationalName' },
+                    { title: '本人电话', key: 'telephone' },
+                    { title: '现住址', key: 'presentCodeName' },
+                    { title: '详细地址', key: 'nowAddress' },
+                    { title: '户籍地址', key: 'registeredCodeName' },
+                    { title: '详细地址', key: 'permanentAddress' }
+                ], info: {} },
+                { title: '随访信息', name: '2', columns: [
+                    { title: '年龄', key: 'currentAge', unit: '岁' },
+                    { title: '既往史', key: 'medicalHistoryName'  },
+                    { title: '身高', key: 'height', unit: 'cm' },
+                    { title: '体重', key: 'weight', unit: 'kg' },
+                    { title: 'BMI', key: 'bmi', unit: 'kg/m²' },
+                    { title: '腰围', key: 'waistline', unit: 'cm' },
+                    { title: '是否吸烟', key: 'isSmokingName'  },
+                    { title: '家族史', key: 'familyHistoryName'  },
+                    { title: '血压值', key: 'pressure' },
+                    { title: '空腹血糖', key: 'fastingGlucose', unit: 'mmol/L' },
+                    { title: '低密度脂蛋白胆固醇', key: 'ldlCholesterin', unit: 'mmol/L' },
+                    { title: '血清总胆固醇', key: 'serumCholesterin', unit: 'mmol/L' },
+                    { title: '高密度脂蛋白胆固醇', key: 'hdlCholesterin', unit: 'mmol/L' },
+                    { title: '运动', key: 'exerciseIntensityName' },
+                    { title: '慢病高危评估结果', key: 'screenResultName'  }
+                ], info: {} },
+                    { title: '机构', name: '3', columns: [
+                    { title: '随访机构', key: 'visitUnitName' },
+                    { title: '随访科室', key: 'visitOfficeName' },
+                    { title: '随访医生', key: 'visitDoctorName' },
+                    { title: '随访日期', key: 'visitDate' }
+                ], info: {} }
+            ],
+            // 全部展开、收起
+            collapseAll: false,
+            info: {}
+        }
+    },
+    computed: {
+        id() {
+            return this.$route.query.id
+        }
+    },
+    created() {
+        document.title = '随访详情'
+        if (!this.id) {
+            showNotify({ type: 'warning', message: '未获取到查询信息'})
+            return
+        }
+        this.init()
+    },
+    methods: {
+        init() {
+
+            getHighMajorVisitId(this.id).then(res => {
+                this.info = res.data || {}
+                this.collapseList[0].info = this.info?.residentsRecord
+                this.collapseList[1].info = this.info
+                this.collapseList[2].info = this.info
+            })
+        },
+        onBack() {
+            this.$router.back()
+        },
+        // 折叠面板切换
+        collapseChange(val) {
+            // console.log(val, this.activeCollapse)
+            if (val && val.length <= 2) {
+                this.activeCollapse = val.slice(val.length - 1)
+            } else {
+                if (this.activeCollapse.length > val.length) {
+                    this.activeCollapse = val
+                }
+                if (this.activeCollapse.length < val.length) {
+                    this.activeCollapse = val.slice(val.length - 1)
+                }
+            }
+            if (val && val.length === this.collapseList.length) {
+                this.collapseAll = true
+            } else {
+                this.collapseAll = false
+            }
+        },
+        // 全部展开、收起
+        toggleAll() {
+            if (this.collapseAll) {
+                this.activeCollapse = []
+            } else {
+                this.activeCollapse = this.collapseList.map(e => e.name)
+            }
+            this.collapseAll = !this.collapseAll
+        }
+    }
+}
+</script>
+
+<style lang="less" scoped>
+@import url('../../../utils/common.less');
+
+.base-info {
+    background: linear-gradient(to bottom, #F0F6FF , #fff 50%);
+    color: #8c8c8c;
+    .name {
+        font-weight: 600;
+        color: #000;
+        font-size: 18px;
+    }
+}
+
+.cont-box {
+    background-color: #f9f9f9;
+    .cont-inner {
+        background: linear-gradient(to bottom, #F0F6FF , #fff .6rem);
+        border-top-left-radius: .08rem;
+        border-top-right-radius: .08rem;
+    }
+}
+
+.collapse-head {
+    .icon-down {
+        vertical-align: middle;
+        font-size: .12rem;
+        .svg-icon {
+            transition: all .2s;
+        }
+    }
+    .icon-down-expanded {
+        .svg-icon {
+            transform: rotate(-180deg);
+        }
+    }
+}
+
+
+table {
+    text-align: left;
+    // border-bottom: 1px solid var(--van-cell-border-color);
+    >tr {
+        >td {
+            padding-left: 14px;
+            padding-bottom: 12px;
+            &:first-child {
+                text-align: right;
+                padding-left: 0;
+            }
+        }
+    }
+}
+.list {
+    color: #262626;
+    .label {
+        min-width: 5em;
+    }
+}
+
+.lh-22 {
+    line-height: 22px;
+}
+.color-26 {
+     color: #262626;
+}
+</style>
diff --git a/src/doctor/screening/detail/GeneralFUDetail.vue b/src/doctor/screening/highVisit/detail/GeneralFUDetail.vue
similarity index 100%
rename from src/doctor/screening/detail/GeneralFUDetail.vue
rename to src/doctor/screening/highVisit/detail/GeneralFUDetail.vue
diff --git a/src/doctor/screening/highVisit/detail/SecondDetail.vue b/src/doctor/screening/highVisit/detail/SecondDetail.vue
new file mode 100644
index 0000000000000000000000000000000000000000..b51171b2170ab89fd99ef53d01037e077a5de011
--- /dev/null
+++ b/src/doctor/screening/highVisit/detail/SecondDetail.vue
@@ -0,0 +1,1032 @@
+<template>
+    <div class='flex flex-col' style='height: 100vh'>
+        <div class='p-3 text-black text-center shrink-0 doc-nav-bar'>
+            <span @click='onBack' class='text-12 back-bt'>
+                <doc-icon type='doc-left2' />
+            </span>
+            <span>专病随访详情</span>
+        </div>
+        <div class='px-4 py-3 flex shrink-0 base-info'>
+            <div class='flex w-full'>
+                <div class='grow flex flex-col justify-between'>
+                    <div class='flex justify-between'>
+                        <span class='name'>{{ residentInfo.residentName }}</span>
+
+                    </div>
+                    <div class='top-label mt-3'>
+                        <span>报告日期:<span class='color-b'>{{ info.screenDate || '-' }}</span></span>
+                    </div>
+                    <div class='top-label'>
+                        <span>慢病高危评估结果:</span>
+                    </div>
+                    <div class='top-label color-b'>
+                        <span v-if='info.specialScreenResult && info.specialScreenResult !=9'>您存在<span
+                            class='color-red'>{{ info.specialScreenResultName }}</span>风险,请及时前往医院诊断确认。</span>
+                        <span v-if='info.specialScreenResult ==9'>您并未存在高危风险。</span>
+                    </div>
+                    <div v-if='info.specialScreenResult && info.specialScreenResult !=9'
+                         class='flex items-center flex-wrap gap-x-2.5 gap-y-1 mt-2'>
+                        <div v-for='(item, index) in highRiskList' :key='index' class='tag tag-red'
+                             @click='toShowHighRisk(item)'>
+                            <span>{{ item.name }}:</span><span class='color-red'>{{ item.num || 0 }}项</span>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <van-popup v-model:show='showRiskHighItem' position='bottom'>
+                <div class='p-4' style='height: 100%'>
+                    <div class='flex justify-between items-center mb-4 pop-title'>
+                        <div></div>
+                        <div>存在以下风险元素</div>
+                        <div @click='showRiskHighItem = false' style='font-weight: 400'>取消</div>
+                    </div>
+<!--                    <div class=''></div>-->
+                    <div style='height: 80%;overflow: auto'>
+                      <div class='pt-3 pb-3 bg-white h-full'>
+                       <div v-for='(item, index) in riskHighItemList' :key='item.id'>
+                           <div class='detail-content flex'>
+
+                               <div>{{index+1}}、</div>
+                               <div>{{item.name}}</div>
+                           </div>
+                       </div>
+                      </div>
+                    </div>
+                </div>
+            </van-popup>
+
+        </div>
+        <div class='p-3 grow cont-box'>
+            <div class='p-3 h-full cont-inner'>
+                <div class='flex justify-between collapse-head mt-2'>
+                    <span class='text-16 font-semibold'>全部内容</span>
+                    <span @click='toggleAll'>
+                        <span v-if='!collapseAll'>展开全部</span>
+                        <span v-else>展开收起</span>
+                        <span :class="['ml-2 icon-down', { 'icon-down-expanded': collapseAll }]">
+                            <doc-icon type='doc-down' />
+                        </span>
+                    </span>
+                </div>
+
+                <van-collapse :model-value='activeCollapse' ref='collapse' class='doc-collapse'
+                              @change='collapseChange'>
+                    <van-collapse-item key='1' title='居民信息' name='1'>
+                        <template #right-icon>
+                            <doc-icon type='doc-down' />
+                        </template>
+                        <div class='list'>
+                            <div v-for='item in columnsBase' :key='item.key'>
+                                <div class='flex justify-between py-1 border-bottom item'>
+                                    <span class='shrink-0 mr-2 label'>{{ item.title }}</span>
+                                    <span
+                                        v-if="item.key === 'idCard'">{{ $idCardHide(residentInfo.idCard) || '-'
+                                        }}</span>
+                                    <span class='text-end' v-else>
+                                        <span>{{ residentInfo[item.key] || '-' }}</span>
+                                        <span v-if='item.unit' class='ml-1'>{{ item.unit }}</span>
+                                    </span>
+                                </div>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='2' title='随访病种' name='2'>
+                        <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'>
+                                        <span>{{ info.diseaseArraysName || '-' }}</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+
+                    <van-collapse-item key='3' title='病史' name='3' v-if='medicalHistoryShow'>
+                        <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'>
+                                        <span>{{ info.medicalHistoryName || '-' }}</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='4' title='家族史' name='4' v-if='familyHistoryShow'>
+                        <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'>
+                                        <span>{{ info.familyHistoryName || '-' }}</span>
+                                    </span>
+                            </div>
+                            <div>
+                                <div class='flex items-center' v-for='item in info.diseaseRelativeList'>
+                                    <template v-if='item.relativeAgeList.filter(e => e.age).length'>
+                                        <div class='mt-2'>{{ item.diseaseTypeName }}:</div>
+                                        <div class='mt-2'>
+                                         <span v-for='item1 in item.relativeAgeList'>
+                                         <span v-if='item1.age'>{{ item1.relativeTypeName }}:</span>
+                                         <span v-if='item1.age'>{{ item1.age || '-' }} 岁;</span>
+                                         </span>
+                                        </div>
+                                    </template>
+                                </div>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='5' title='身高' name='5' v-if='highShow'>
+                        <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'>
+                                        <span>{{ info.height || '-' }} cm</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='6' title='体重' name='6' v-if='highShow'>
+                        <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'>
+                                        <span>{{ info.weight || '-' }} kg</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='7' title='BMI(体质指数)' name='7' v-if='highShow'>
+                        <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'>BMI(体质指数)</span>
+                                <span class='text-end'>
+                                        <span>{{ info.bmi || '-' }} kg/m²</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='8' title='腰围' name='8' v-if='waistShow'>
+                        <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'>
+                                        <span>{{ info.waistline || '-' }} cm</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='9' title='锻炼频率' name='9' v-if='exerciseShow'>
+                        <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'>
+                                        <span>{{ info.exerciseFrequencyName || '-' }}</span>
+                                        <span
+                                            v-if='info.exerciseFrequency == 2 && info.isExerciseFiveName'>({{ info.isExerciseFiveName }})</span>
+                                    </span>
+                            </div>
+                            <div class='flex justify-between py-1 border-bottom item'
+                                 v-if='[1,2,3].includes(info.exerciseFrequency) && exerciseShow'>
+                                <span class='shrink-0 mr-2 label'>每次锻炼时间</span>
+                                <span class='text-end'>
+                                        <span>{{ info.everyExercise || '-' }} 分钟</span>
+                                    </span>
+                            </div>
+                            <div class='flex justify-between py-1 border-bottom item'
+                                 v-if='[1,2,3].includes(info.exerciseFrequency) && exerciseShow'>
+                                <span class='shrink-0 mr-2 label'>可达到中等及以上运动强度</span>
+                                <span class='text-end'>
+                                        <span>{{ info.mediumStrengthName }}</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='10' title='女性病史' name='10' v-if='womanMHShow'>
+                        <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'>
+                                        <span>{{ info.femaleMedicalHistoryName || '-' }}</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='11' title='用药史' name='11' v-if='medicationHShow'>
+                        <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'>
+                                        <span>{{ info.medicineHistoryName || '-' }}</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='12' title='高密度脂蛋白胆固醇' name='12' v-if='triglycerideShow'>
+                        <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'>
+                                        <span>{{ info.hdlCholesterin || '-' }} mmol/L</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='13' title='甘油三酯' name='13' v-if='triglycerideShow'>
+                        <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'>
+                                        <span>{{ info.triglyceride || '-' }} mmol/L</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='14' title='总胆固醇' name='14' v-if='triglycerideShow'>
+                        <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'>
+                                        <span>{{ info.serumCholesterin || '-' }} mmol/L</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='15' title='有害物质接触或婴幼儿时期病史' name='15' v-if='babyMHShow'>
+                        <template #right-icon>
+                            <doc-icon type='doc-down' />
+                        </template>
+                        <div class='list'>
+                            <div class='flex justify-between py-1 border-bottom item'>
+                                <span>
+                                        <span>{{ info.touchHarmfulName || '-' }}</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='16' title='血压(左侧右侧)值(SBP/DBP)' name='16' v-if='bloodPressureShow'>
+                        <template #right-icon>
+                            <doc-icon type='doc-down' />
+                        </template>
+                        <div class='list'>
+                            <div class='flex justify-between py-1 border-bottom item'>
+                                <div>
+                                    <div>第一次:{{ info.pressureOneSbp }}-{{ info.pressureOneDbp }} mmHg;</div>
+                                    <div class='mt-2'>第二次:{{ info.pressureTwoSbp }}-{{ info.pressureTwoDbp }} mmHg</div>
+                                </div>
+
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='17' title='饮食习惯' name='17' v-if='eatHabitShow'>
+                        <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'>
+                                        <span>{{ info.dietaryHabitName || '-' }}</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='18' title='饮酒情况' name='18' v-if='drinkShow'>
+                        <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'>
+                                        <span>{{ info.drinkFrequencyName || '-' }}</span>
+                                    </span>
+                            </div>
+                            <div v-if='[2,3,4].includes(info.drinkFrequency)'>
+                                <div class='flex justify-between py-1 border-bottom item'>
+                                    <span class='shrink-0 mr-2 label'>饮酒种类</span>
+                                    <span class='text-end'>
+                                        <span>{{ $addrJoin(info.drinkKindName, info.drinkKindOther) || '-' }}</span>
+                                    </span>
+                                </div>
+                                <div class='flex justify-between py-1 border-bottom item'>
+                                    <div class='shrink-0 mr-2 label'>日饮酒量</div>
+                                    <div class='text-end'>
+                                        <div v-for='item in (info.drinkKindCapacityList || [])' :key='item.drinkKind'
+                                        >
+                                            <span>{{ item.drinkKindName }}:</span> <span>{{ item.drinkCapacity || '-' }} mL</span>
+                                        </div>
+                                        <div>
+                                            <span>平均: </span><span>{{ info.dayDrink || '-' }} mL</span>
+                                        </div>
+                                    </div>
+                                </div>
+
+                                <div class='flex justify-between py-1 border-bottom item'>
+                                    <span class='shrink-0 mr-2 label'>开始饮酒年龄</span>
+                                    <span class='text-end'>
+                                        <span>{{ info.startDrinkAge || '-' }} 岁</span>
+                                    </span>
+                                </div>
+                                <div class='flex justify-between py-1 border-bottom item'>
+                                    <span class='shrink-0 mr-2 label'>是否戒酒</span>
+                                    <span class='text-end'>
+                                        <span>{{ info.giveDrinkName || '-' }}</span>
+                                    </span>
+                                </div>
+                                <div class='flex justify-between py-1 border-bottom item' v-if='info.giveDrink == 1'>
+                                    <span class='shrink-0 mr-2 label'>戒酒年龄</span>
+                                    <span class='text-end'>
+                                        <span>{{ info.giveDrinkStart || '-' }} 岁</span>
+                                    </span>
+                                </div>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='19' title='吸烟情况' name='19' v-if='smokeShow'>
+                        <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'>
+                                        <span>{{ info.isSmokingName || '-' }}</span>
+                                    </span>
+                            </div>
+                            <div class='flex justify-between py-1 border-bottom item'
+                                 v-if='info.isSmoking == 3 && smokeShow'>
+                                <span class='shrink-0 mr-2 label'>日吸烟量</span>
+                                <span class='text-end'>
+                                        <span>{{ info.daySmoking || '-' }} 支</span>
+                                    </span>
+                            </div>
+                            <div class='flex justify-between py-1 border-bottom item'
+                                 v-if='info.isSmoking == 3 && smokeShow'>
+                                <span class='shrink-0 mr-2 label'>开始吸烟年龄</span>
+                                <span class='text-end'>
+                                        <span>{{ info.startSmoking || '-' }} 岁</span>
+                                    </span>
+                            </div>
+                            <div class='flex justify-between py-1 border-bottom item'
+                                 v-if='info.isSmoking == 2 && smokeShow'>
+                                <span class='shrink-0 mr-2 label'>戒烟年龄</span>
+                                <span class='text-end'>
+                                        <span>{{ info.giveSmokingAge || '-' }} 岁</span>
+                                    </span>
+                            </div>
+                            <div class='flex justify-between py-1 border-bottom item'
+                                 v-if='smokeShow && info?.diseaseArrays?.includes(1)'>
+                                <span class='shrink-0 mr-2 label'>经常吸入二手烟</span>
+                                <span class='text-end'>
+                                        <span>{{ info.secondSmokingName || '-' }} </span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='20' title='黑棘皮病' name='20' v-if='blackSpinySkinShow'>
+                        <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'>
+                                        <span>{{ info.blackSpinySkinName || '-' }}</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='21' title='长期精神紧张' name='21' v-if='mentalTensionShow'>
+                        <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'>
+                                        <span>{{ info.mentalTensionName || '-' }}</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='22' title='皮肤或肌腱黄色瘤' name='22' v-if='xanthomaShow'>
+                        <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'>
+                                        <span>{{ info.xanthomaName || '-' }}</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='23' title='跟腱增厚' name='23' v-if='tendoIncrassationShow'>
+                        <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'>
+                                        <span>{{ info.tendoIncrassationName || '-' }}</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='24' title='中国糖尿病风险评分' name='24' v-if='riskScoreShow'>
+                        <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'>
+                                        <span>{{ info.riskScoreName || '-' }}</span>
+                                    </span>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                    <van-collapse-item key='25' title='知情同意书' name='25'>
+                        <template #right-icon>
+                            <doc-icon type='doc-down' />
+                        </template>
+                        <div>
+                            <image-preview :img-list='info.informedConsentUrl'></image-preview>
+                        </div>
+                    </van-collapse-item>
+
+                    <van-collapse-item key='26' title='随访机构' name='26'>
+                        <template #right-icon>
+                            <doc-icon type='doc-down' />
+                        </template>
+                        <div class='list'>
+                            <div v-for='item in columnsOrg' :key='item.key'>
+                                <div class='flex justify-between py-1 border-bottom item'>
+                                    <span class='shrink-0 mr-2 label'>{{ item.title }}</span>
+                                    <span class='text-end'>
+                                        <span>{{ info[item.key] || '-' }}</span>
+                                    </span>
+                                </div>
+                            </div>
+                        </div>
+                    </van-collapse-item>
+                </van-collapse>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import { showNotify } from 'vant'
+import { useStore } from '@/doctor/store'
+import { fetchDataHandle } from '@/utils/common'
+import ImagePreview from '@/doctor/components/imagePreview/imagePreview'
+import { getHighSpecificVisitId } from '@/api/doctor/highVisitApi'
+
+export default {
+    components: { ImagePreview },
+    data() {
+        return {
+            store: useStore(),
+            activeCollapse: [],
+            collapseList: [
+                { title: '居民信息', name: '1' },
+                { title: '随访病种', name: '2' },
+                { title: '病史', name: '3' },
+                { title: '家族史', name: '4' },
+                { title: '身高', name: '5' },
+                { title: '体重', name: '6' },
+                { title: 'BMI', name: '7' },
+                { title: '腰围', name: '8' },
+                { title: '锻炼频率', name: '9' },
+                { title: '女性病史', name: '10' },
+                { title: '用药史', name: '11' },
+                { title: '高密度脂蛋白胆固醇', name: '12' },
+                { title: '甘油三酯', name: '13' },
+                { title: '总胆固醇', name: '14' },
+                { title: '有害物质接触或婴幼儿时期病史', name: '15' },
+                { title: '现测血压(左侧右侧)值(SBP/DBP)', name: '16' },
+                { title: '饮食习惯', name: '17' },
+                { title: '饮酒情况', name: '18' },
+                { title: '吸烟情况', name: '19' },
+                { title: '黑棘皮病', name: '20' },
+                { title: '长期精神紧张', name: '21' },
+                { title: '皮肤或肌腱黄色瘤', name: '22' },
+                { title: '跟腱增厚', name: '23' },
+                { title: '中国糖尿病风险评分', name: '24' },
+                { title: '知情同意书', name: '25' },
+                { title: '随访机构', name: '26' }
+            ],
+            // 全部展开、收起
+            collapseAll: false,
+            showRiskHighItem: false,
+            riskHighItemList: [],
+            info: {},
+            columnsBase: [
+                { title: '姓名', key: 'residentName' },
+                { title: '证件号码', key: 'idCard' },
+                { title: '性别', key: 'genderName' },
+                { title: '出生日期', key: 'dataBirth' },
+                { title: '年龄', key: 'currentAge' },
+                { title: '民族', key: 'nationalName' },
+                { title: '本人电话', key: 'telephone' },
+                { title: '现住址', key: 'presentCodeName' },
+                { title: '详细地址', key: 'nowAddress' },
+                { title: '户籍地址', key: 'registeredCodeName' },
+                { title: '详细地址', key: 'permanentAddress' }
+            ],
+            columnsOrg: [
+                { title: '随访单位', key: 'visitUnitName' },
+                { title: '随访科室', key: 'visitOfficeName' },
+                { title: '随访医生', key: 'visitDoctorName' }
+            ],
+            highRiskList: []
+        }
+    },
+    computed: {
+        id() {
+            return this.$route.query.id
+        },
+        residentInfo() {
+            return this.info.residentsRecord || {}
+        },
+        //判断病史显示隐藏
+        medicalHistoryShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(1) || diseaseArrays.includes(2) || diseaseArrays.includes(3) || diseaseArrays.includes(4)
+                || diseaseArrays.includes(5) || diseaseArrays.includes(6) || diseaseArrays.includes(7)) {
+                res = true
+            }
+            return res
+        },
+        //判断家族史显示隐藏
+        familyHistoryShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(1) || diseaseArrays.includes(2) || diseaseArrays.includes(3) || diseaseArrays.includes(4)
+                || diseaseArrays.includes(5) || diseaseArrays.includes(6) || diseaseArrays.includes(7)) {
+                res = true
+            }
+            return res
+        },
+        //判断身高、体重、BMI显示隐藏
+        highShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(1) || diseaseArrays.includes(2) || diseaseArrays.includes(4)
+                || diseaseArrays.includes(6) || diseaseArrays.includes(7)) {
+                res = true
+            }
+            return res
+        },
+        //判断腰围显示隐藏
+        waistShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(1) || diseaseArrays.includes(2)) {
+                res = true
+            }
+            return res
+        },
+        //判断锻炼频率显示隐藏
+        exerciseShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(1) || diseaseArrays.includes(2) || diseaseArrays.includes(4)) {
+                res = true
+            }
+            return res
+        },
+        //判断女性病史显示隐藏
+        womanMHShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(2)) {
+                res = true
+            }
+            return res
+        },
+        //判断用药史显示隐藏
+        medicationHShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(2) || diseaseArrays.includes(4) || diseaseArrays.includes(6)) {
+                res = true
+            }
+            return res
+        },
+        //判断高密度脂蛋白胆固醇、甘油三酯、总胆固醇显示隐藏
+        triglycerideShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(2)) {
+                res = true
+            }
+            return res
+        },
+        //判断有害物质接触或婴幼儿时期病史显示隐藏
+        babyMHShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(5)) {
+                res = true
+            }
+            return res
+        },
+        //判断血压显示隐藏
+        bloodPressureShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(1)) {
+                res = true
+            }
+            return res
+        },
+        //判断饮食习惯显示隐藏
+        eatHabitShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(1)) {
+                res = true
+            }
+            return res
+        },
+        //判断饮酒情况显示隐藏
+        drinkShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(1)) {
+                res = true
+            }
+            return res
+        },
+        //判断吸烟情况显示隐藏
+        smokeShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(1) || diseaseArrays.includes(3) || diseaseArrays.includes(4) || diseaseArrays.includes(5) || diseaseArrays.includes(7)) {
+                res = true
+            }
+            return res
+        },
+        //判断黑棘皮病显示隐藏
+        blackSpinySkinShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(2)) {
+                res = true
+            }
+            return res
+        },
+        //判断长期精神紧张显示隐藏
+        mentalTensionShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(1)) {
+                res = true
+            }
+            return res
+        },
+        //判断皮肤或肌腱黄色瘤显示隐藏
+        xanthomaShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(7)) {
+                res = true
+            }
+            return res
+        },
+        //判断跟腱增厚显示隐藏
+        tendoIncrassationShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(7)) {
+                res = true
+            }
+            return res
+        },
+        //判断中国糖尿病风险评分显示隐藏
+        riskScoreShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.info
+            if (diseaseArrays.includes(2)) {
+                res = true
+            }
+            return res
+        }
+    },
+    created() {
+        document.title = '随访详情'
+        if (!this.id) {
+            showNotify({ type: 'warning', message: '未获取到查询信息' })
+            return
+        }
+        this.init()
+    },
+    methods: {
+        init() {
+            getHighSpecificVisitId(this.id).then(res => {
+                let result = res.data || {}
+                this.info = result
+                this.highRiskListHandle(result)
+            })
+        },
+        highRiskListHandle(result) {
+            this.highRiskList = []
+            let obj = fetchDataHandle(result, {
+                diseaseArrays: 'strToArrNum',
+                hypertensionHighItem: 'strToArrNum',
+                diabetesHighItem: 'strToArrNum',
+                coronaryHighItem: 'strToArrNum',
+                strokeHighItem: 'strToArrNum',
+                pulmonaryHighItem: 'strToArrNum',
+                nephrosisHighItem: 'strToArrNum',
+                dyslipemiaHighItem: 'strToArrNum'
+            })
+            const {
+                hypertensionHighItem = [],
+                diabetesHighItem = [],
+                coronaryHighItem = [],
+                strokeHighItem = [],
+                pulmonaryHighItem = [],
+                nephrosisHighItem = [],
+                dyslipemiaHighItem = []
+            } = obj
+            let list = []
+            let o = { name: '', num: 0 }
+            if (hypertensionHighItem.length) {
+                o = {
+                    id: 1,
+                    name: '高血压风险因素',
+                    num: hypertensionHighItem.length,
+                    highItem: hypertensionHighItem,
+                    dict: `CP00141`
+                }
+                list.push(o)
+            }
+            if (diabetesHighItem.length) {
+                o = {
+                    id: 2,
+                    name: '糖尿病风险因素',
+                    num: diabetesHighItem.length,
+                    highItem: diabetesHighItem,
+                    dict: `CP00142`
+                }
+                list.push(o)
+            }
+            if (coronaryHighItem.length) {
+                o = {
+                    id: 3,
+                    name: '冠心病风险因素',
+                    num: coronaryHighItem.length,
+                    highItem: coronaryHighItem,
+                    dict: `CP00143`
+                }
+                list.push(o)
+            }
+            if (strokeHighItem.length) {
+                o = { id: 4, name: '脑卒中风险因素', num: strokeHighItem.length, highItem: strokeHighItem, dict: `CP00144` }
+                list.push(o)
+            }
+            if (pulmonaryHighItem.length) {
+                o = {
+                    id: 5,
+                    name: '慢阻肺风险因素',
+                    num: pulmonaryHighItem.length,
+                    highItem: pulmonaryHighItem,
+                    dict: `CP00145`
+                }
+                list.push(o)
+            }
+            if (nephrosisHighItem.length) {
+                o = {
+                    id: 6,
+                    name: '慢性肾脏病风险因素',
+                    num: nephrosisHighItem.length,
+                    highItem: nephrosisHighItem,
+                    dict: `CP00146`
+                }
+                list.push(o)
+            }
+            if (dyslipemiaHighItem.length) {
+                o = {
+                    id: 7,
+                    name: '血脂异常风险因素',
+                    num: dyslipemiaHighItem.length,
+                    highItem: dyslipemiaHighItem,
+                    dict: `CP00147`
+                }
+                list.push(o)
+            }
+            this.highRiskList = list
+        },
+        onBack() {
+            this.$router.back()
+        },
+        // 折叠面板切换
+        collapseChange(val) {
+            if (val && val.length <= 2) {
+                this.activeCollapse = val.slice(val.length - 1)
+            } else {
+                if (this.activeCollapse.length > val.length) {
+                    this.activeCollapse = val
+                }
+                if (this.activeCollapse.length < val.length) {
+                    this.activeCollapse = val.slice(val.length - 1)
+                }
+            }
+            if (val && val.length === this.collapseList.length) {
+                this.collapseAll = true
+            } else {
+                this.collapseAll = false
+            }
+        },
+        // 全部展开、收起
+        toggleAll() {
+            if (this.collapseAll) {
+                this.activeCollapse = []
+            } else {
+                this.activeCollapse = this.collapseList.map(e => e.name)
+            }
+            this.collapseAll = !this.collapseAll
+        },
+        toShowHighRisk(val) {
+            let res = []
+            let dictInfo = this.store.getDict(val.dict)
+            let highItemList = val.highItem || []
+            highItemList.forEach(item => {
+                let infoList = dictInfo.filter(e => e.value == item)
+                if (infoList && infoList.length) {
+                    res.push(infoList[0])
+                }
+            })
+            this.riskHighItemList = res
+            this.showRiskHighItem = true
+        }
+    }
+}
+</script>
+
+<style lang='less' scoped>
+@import url('../../../utils/common.less');
+
+.base-info {
+    background: linear-gradient(to bottom, #F0F6FF, #fff 50%);
+    color: #8c8c8c;
+
+    .name {
+        font-weight: 600;
+        color: #000;
+        font-size: 18px;
+    }
+
+    .top-label {
+        font-size: 13px;
+        line-height: 22px;
+    }
+
+    .color-b {
+        color: #262626;
+    }
+
+    .color-red {
+        color: #F5222D;
+    }
+
+    .tag {
+        border-radius: 2px;
+        padding: 3px 8px;
+        font-size: 12px;
+        line-height: 18px;
+    }
+
+    .tag-red {
+        border: 1px solid #EFF2F7;
+        color: #262626;
+        background-color: #EFF2F7;
+    }
+}
+
+.cont-box {
+    background-color: #f9f9f9;
+
+    .cont-inner {
+        background: linear-gradient(to bottom, #F0F6FF, #fff .6rem);
+        border-top-left-radius: .08rem;
+        border-top-right-radius: .08rem;
+    }
+}
+
+.collapse-head {
+    .icon-down {
+        vertical-align: middle;
+        font-size: .12rem;
+
+        .svg-icon {
+            transition: all .2s;
+        }
+    }
+
+    .icon-down-expanded {
+        .svg-icon {
+            transform: rotate(-180deg);
+        }
+    }
+}
+
+
+table {
+    text-align: left;
+    // border-bottom: 1px solid var(--van-cell-border-color);
+    > tr {
+        > td {
+            padding-left: 14px;
+            padding-bottom: 12px;
+
+            &:first-child {
+                text-align: right;
+                padding-left: 0;
+            }
+        }
+    }
+}
+
+.list {
+    color: #262626;
+
+    .label {
+        min-width: 5em;
+    }
+}
+
+.gap-y-1 {
+    row-gap: 4px;
+}
+
+.pop-title {
+    color: #262626;
+    font-size: 16px;
+    line-height: 24px;
+    font-weight: bold;
+}
+
+.de-driver {
+    border: 1px solid #D7D8DA;
+}
+
+.bg-white {
+    background: #FFFFFF;
+    padding: 12px 16px;
+    border-radius: 8px;
+}
+.detail-content {
+    color: #F5222D;
+    font-size: 16px;
+    line-height: 1.5;
+}
+:deep(.van-popup) {
+    height: 50% !important;
+    background: #F5F5F5;
+}
+</style>
diff --git a/src/doctor/screening/highVisit/first/DoctorInfo.vue b/src/doctor/screening/highVisit/first/DoctorInfo.vue
new file mode 100644
index 0000000000000000000000000000000000000000..1d148a0f0b65e1b19c9d2c09c0810790d0e29070
--- /dev/null
+++ b/src/doctor/screening/highVisit/first/DoctorInfo.vue
@@ -0,0 +1,164 @@
+<template>
+    <div class="doctor-info">
+        <div class="doc-form-label" required>随访单位</div>
+        <van-field is-link
+            v-model='form.visitUnitName'
+            readonly
+            placeholder='请选择'
+            name="visitUnitId"
+            @click="showUnit = true"
+            :rules="[{ required: true, message: '请选择' }]"
+        />
+        <DocUnit v-model:show="showUnit"
+            v-model:value="form.visitUnitId"
+            :valueName="form?.visitUnitName"
+            @change="unitChange"
+        />
+
+        <div class="doc-form-label" required>随访科室</div>
+        <van-field is-link
+            v-model='form.visitOfficeName'
+            readonly
+            placeholder='请选择'
+            name="visitOfficeId"
+            @click="showOffice = true"
+            :rules="[{ required: true, message: '请选择' }]"
+        />
+        <DocOffice v-model:show="showOffice"
+            v-model:value="form.visitOfficeId"
+            :unitId="form.visitUnitId"
+            @change="officeChange"
+        />
+
+        <div class="doc-form-label" required>随访医生</div>
+        <van-field is-link
+            v-model='form.visitDoctorName'
+            readonly
+            placeholder='请选择'
+            name="visitDoctorId"
+            @click="showDoctor = true"
+            :rules="[{ required: true, message: '请选择' }]"
+        />
+        <DocOfficeDoctor v-model:show="showDoctor"
+            :allowClear="false"
+            v-model:value="form.visitDoctorId"
+            :unitId="form.visitUnitId"
+            :officeId="form.visitOfficeId"
+            @change="(option) => { form.visitDoctorName = option.staffName }"
+        />
+    </div>
+</template>
+
+<script>
+import { useStore } from '@/doctor/store'
+import dayjs from 'dayjs'
+import DocUnit from '@/doctor/components/docUnit/DocUnit.vue'
+import DocOffice from '@/doctor/components/docOffice/DocOffice.vue'
+import DocOfficeDoctor from '@/doctor/components/docOfficeDoctor/DocOfficeDoctor.vue'
+
+const defaultForm = (info = {}) => {
+    const form = {
+        createDate: undefined,
+        // 随访单位
+        visitUnitId: undefined,
+        visitUnitName: undefined,
+        // 随访科室
+        visitOfficeId: undefined,
+        visitOfficeName: undefined,
+        // 随访医生
+        visitDoctorId: undefined,
+        visitDoctorName: undefined,
+        // 录入单位
+        createUnitId: undefined,
+        createUnitName: undefined,
+        // 录入科室
+        createOfficeId: undefined,
+        createOfficeName: undefined,
+        // 录入医生
+        createDoctorId: undefined,
+        createDoctorName: undefined
+    }
+    Reflect.ownKeys(form).forEach(key => {
+        if (info[key] != undefined) {
+            form[key] = info[key]
+        }
+    })
+    return form
+}
+export default {
+    components: {
+        DocUnit,
+        DocOffice,
+        DocOfficeDoctor
+    },
+    props: {
+        info: { default: () => ({}) }
+    },
+    data() {
+        return {
+            form: {},
+            store: useStore(),
+            showUnit: false,
+            showOffice: false,
+            showDoctor: false
+        }
+    },
+    computed: {
+        authInfo() {
+            return this.store.authInfo
+        }
+    },
+    methods: {
+        initForm() {
+            this.form.createDate = dayjs().format('YYYY-MM-DD')
+            // 随访单位
+            this.form.visitUnitId = this.authInfo.unitId
+            this.form.visitUnitName = this.authInfo.unitName
+            // 随访科室
+            this.form.visitOfficeId = this.authInfo.officeId
+            this.form.visitOfficeName = this.authInfo.officeName
+            // 随访医生
+            this.form.visitDoctorId = this.authInfo.relationId
+            this.form.visitDoctorName = this.authInfo.nickName
+            // 录入单位
+            this.form.createUnitId = this.authInfo.unitId
+            this.form.createUnitName = this.authInfo.unitName
+            // 录入科室
+            this.form.createOfficeId = this.authInfo.officeId
+            this.form.createOfficeName = this.authInfo.officeName
+            // 录入医生
+            this.form.createDoctorId = this.authInfo.relationId
+            this.form.createDoctorName = this.authInfo.nickName
+        },
+        unitChange(option = {}) {
+            this.form.visitUnitName = option.unitName
+            this.form.visitDoctorId = undefined
+            this.form.visitDoctorName = undefined
+            this.form.visitOfficeId = undefined
+            this.form.visitOfficeName = undefined
+        },
+
+        officeChange(option = {}) {
+            this.form.visitOfficeName = option.officeName
+            this.form.visitDoctorId = undefined
+            this.form.visitDoctorName = undefined
+        },
+        submit() {
+            return this.form
+        }
+    },
+    watch: {
+        info: {
+            handler(info) {
+                this.form = defaultForm(info)
+                if (!this.info.id) {
+                    this.initForm()
+                }
+            },
+            immediate: true
+        }
+    }
+}
+</script>
+
+<style lang="less" scoped></style>
diff --git a/src/doctor/screening/highVisit/first/FirstForm.vue b/src/doctor/screening/highVisit/first/FirstForm.vue
new file mode 100644
index 0000000000000000000000000000000000000000..93e68ffb4da36cf9cd780c5f4b0ae180a561ae0e
--- /dev/null
+++ b/src/doctor/screening/highVisit/first/FirstForm.vue
@@ -0,0 +1,153 @@
+<template>
+    <div class="h-full flex flex-col screening-first">
+        <DocNavBar :title="`${id ? '修改' : '新增'}主要慢病高危随访`" class="shrink-0"
+            :backFunc="onBack" :hideBack="step == 3"></DocNavBar>
+        <div class="p-4 overflow-y-auto grow" ref="all">
+            <archiveCommon :info="baseInfo" v-if="step == 1" ref="archiveCommon"></archiveCommon>
+            <FormCont :resident-info="baseInfo" :info="screenInfo" v-else-if="step == 2" ref="FormCont"/>
+            <Result v-else-if="step == 3" :info="resultInfo"/>
+        </div>
+        <div class="shrink-0" v-if="step !== 3">
+            <div class='bottom-small-line'></div>
+            <div class='px-5 py-2 grow flex justify-between'>
+                <template v-if='step == 1'>
+                    <van-button type='primary' block round
+                        @click='toNext(2)'>下一步</van-button>
+                </template>
+                <template v-else>
+                    <van-button type='primary' block round
+                        @click='toNext(3)'>提交</van-button>
+                </template>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import DocNavBar from '@/doctor/components/docNavBar/DocNavBar.vue'
+import archiveCommon from '@/doctor/components/archiveCommon/archiveCommon.vue'
+import FormCont from './FormCont.vue'
+import Result from './Result.vue'
+import { getChronicResidentsId } from '@/api/doctor/generalFU'
+import { fetchDataHandle } from '@/utils/common.js'
+import { useStore } from '@/doctor/store'
+import { getHighMajorVisitId, saveHighMajorVisit, updateHighMajorVisit } from '@/api/doctor/highVisitApi'
+
+export default {
+    components: {
+        DocNavBar,
+        archiveCommon,
+        FormCont,
+        Result
+    },
+    data() {
+        return {
+            store: useStore(),
+            step: 1,
+            // 患者基础信息
+            baseInfo: {},
+            // 随访信息
+            screenInfo: {},
+            // 结果
+            resultInfo: {}
+        }
+    },
+    computed: {
+        id() {
+            return this.$route.query.id
+        },
+        residentInfoId() {
+            return this.$route.query.residentInfoId
+        },
+        idCard() {
+            return this.$route.query.idCard
+        },
+    },
+    // 路由守卫
+    beforeRouteLeave(to, from) {
+        // showConfirmDialog({
+        //     message: '已填写的表单不会保存,确定要离开吗?'})
+        //     .then(() => {
+        //         next()
+        //     })
+        //     .catch(() => {
+        //         next(false)
+        //     })
+        if (this.step === 2) {
+            this.onBack()
+            return false
+        }
+        return true
+    },
+    created() {
+        this.init()
+    },
+    methods: {
+        async init() {
+            if (this.id) {
+                const res = await getHighMajorVisitId(this.id)
+                const result = res.data || {}
+                this.screenInfo = fetchDataHandle(result, {
+                    medicalHistory: 'strToArrNum',
+                    familyHistory: 'strToArrNum',
+                    highItem: 'strToArrNum'
+                })
+                this.baseInfo = this.screenInfo.residentsRecord
+                console.log(this.screenInfo)
+            } else {
+                if (this.residentInfoId) {
+                    let res = await getChronicResidentsId(this.residentInfoId)
+                    this.baseInfo = res.data || {}
+                    this.screenInfo.currentAge = this.baseInfo.currentAge
+                    this.screenInfo.residentInfoId = this.residentInfoId
+                } else if (this.idCard) {
+                    // 新建用户
+                    this.baseInfo.idCard = this.idCard
+                }
+            }
+        },
+        toNext(val) {
+            if (val == 2) {
+                // 基础信息
+                this.$refs.archiveCommon.onSubmit().then(res => {
+                    this.baseInfo = res
+                    this.step = val
+                    this.$refs.all.scrollTo(0, 0)
+                })
+            } else if (val == 3) {
+                // 随访信息
+                this.$refs.FormCont.submit().then(res => {
+                    if (!res) return
+                    console.log('FormCont.submit', res)
+                    const query = fetchDataHandle(res, {
+                        familyHistory: 'arrToStr',
+                        medicalHistory: 'arrToStr',
+                        highItem: 'arrToStr'
+                    })
+                    query.residentsRecord = this.baseInfo
+                    const func = query.id ? updateHighMajorVisit : saveHighMajorVisit
+                    func(query).then(res => {
+                        this.resultInfo = query
+                        this.store.onRefreshMark()
+                        this.step = val
+                    })
+                })
+            } else {
+                this.step = val
+                this.$refs.all.scrollTo(0, 0)
+            }
+        },
+        onBack() {
+            if (this.step == 1) {
+                this.$router.back()
+            } else {
+                this.step--
+            }
+        }
+    }
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>
diff --git a/src/doctor/screening/highVisit/first/FormCont.vue b/src/doctor/screening/highVisit/first/FormCont.vue
new file mode 100644
index 0000000000000000000000000000000000000000..3194cf26ce188f4d9b3b7203d8cb0235b64f5193
--- /dev/null
+++ b/src/doctor/screening/highVisit/first/FormCont.vue
@@ -0,0 +1,696 @@
+<template>
+    <div class="screening-first-cont">
+        <van-form ref='form' class="doc-form" >
+            <div class='font-semibold'>筛查信息</div>
+            <div class='doc-form-label' required>既往史</div>
+            <van-field is-link
+                v-model='form.medicalHistoryName'
+                readonly
+                placeholder='请选择'
+                name="medicalHistory"
+                :rules='rules.medicalHistory'
+                @click="showMedical = true"
+            />
+            <van-popup v-model:show="showMedical" position="bottom">
+                <div class="pt-4 pb-4 popup-checkbox">
+                    <div class="flex justify-between pb-2">
+                        <button class="van-picker__cancel van-haptics-feedback" @click="showMedical = false">取消</button>
+                        <span class="text-16" >既往史(可多选)</span>
+                        <button class="van-picker__confirm van-haptics-feedback" @click="medicalConfirm">确认</button>
+                    </div>
+                    <div class="bottom-small-line"></div>
+                    <!-- <van-checkbox-group v-model="form.medicalHistory" class="px-4 pb-4 pt-2">
+                        <van-checkbox v-for="(item, index) in store.getDict('CP00118')" :key="index"
+                            @click="medicalChange"
+                            :name="item.value"
+                            class="mb-3">{{ item.name }}</van-checkbox>
+                    </van-checkbox-group> -->
+                    <CheckBtn v-model:value="form.medicalHistory"
+                        :options="medicalHistoryArray"
+                        multiple round column-1
+                        class="py-3 px-4"
+                        @change="medicalChange" />
+                </div>
+            </van-popup>
+
+            <div class="flex tip-box">
+                <div class='doc-form-label shrink-0' required>家族史</div>
+                <span class="grow text-end text-ellipsis">若一级家属(如父母)有家族病史,则请选择</span>
+            </div>
+            <van-field is-link
+                v-model='form.familyHistoryName'
+                name="familyHistory"
+                readonly
+                placeholder='请选择'
+                :rules='rules.familyHistory'
+                @click="showFamily = true"
+            />
+            <van-popup v-model:show="showFamily" position="bottom">
+                <div class="pt-4 pb-4 popup-checkbox">
+                    <div class="flex justify-between pb-2">
+                        <button class="van-picker__cancel van-haptics-feedback" @click="showFamily = false">取消</button>
+                        <span class="text-16" >家族史(可多选)</span>
+                        <button class="van-picker__confirm van-haptics-feedback" @click="familyConfirm">确认</button>
+                    </div>
+                    <div class="bottom-small-line"></div>
+                    <!-- <van-checkbox-group v-model="form.familyHistory" class="p-4">
+                        <van-checkbox v-for="(item, index) in store.getDict('CP00167').filter(e => e.value != 7)" :key="index"
+                            @click="familyChange"
+                            :name="item.value"
+                            class="mb-3">{{ item.name }}</van-checkbox>
+                    </van-checkbox-group> -->
+                    <CheckBtn v-model:value="form.familyHistory"
+                        :options="familyHistoryArray"
+                        multiple round column-1
+                        class="py-3 px-4"
+                        @change="familyChange" />
+                </div>
+            </van-popup>
+
+            <div class='doc-form-label'>年龄</div>
+            <van-field :modelValue="form.currentAge"
+                name="currentAge"
+                type="digit"
+                placeholder="请输入年龄"
+                readonly
+                maxlength="10"
+            >
+                <template #extra>
+                    <span class="ml-1">岁</span>
+                </template>
+            </van-field>
+
+            <div class='doc-form-label' required>身高</div>
+            <van-field required
+                v-model="form.height"
+                name="height"
+                type="number"
+                placeholder="输入值10~300,1位小数"
+                maxlength="10"
+                :rules="rules.height"
+            >
+                <template #extra>
+                    <span class="ml-1">cm</span>
+                </template>
+            </van-field>
+
+            <div class='doc-form-label' required>体重</div>
+            <van-field required
+                v-model="form.weight"
+                name="weight"
+                type="number"
+                placeholder="输入值20~500,2位小数"
+                maxlength="10"
+                :rules="rules.weight"
+            >
+                <template #extra>
+                    <span class="ml-1">kg</span>
+                </template>
+            </van-field>
+
+            <div class='doc-form-label'>BMI</div>
+            <van-field v-model="form.bmi"
+                name="bmi"
+                type="number"
+                placeholder="请输入"
+                maxlength="10"
+                readonly
+            >
+                <template #extra>
+                    <span class="ml-1">kg/m²</span>
+                </template>
+            </van-field>
+
+            <div class='doc-form-label'>腰围</div>
+            <van-field v-model="form.waistline"
+                name="waistline"
+                type="number"
+                placeholder="输入值10~150,1位小数"
+                maxlength="10"
+                :rules="rules.waistline"
+            >
+                <template #extra>
+                    <span class="ml-1">cm</span>
+                </template>
+            </van-field>
+
+            <div class='doc-form-label' required>是否吸烟</div>
+            <van-field
+                name="isSmoking"
+                class="no-back"
+                style="padding: 0"
+                :rules="rules.isSmoking">
+                <template #input>
+                    <van-radio-group v-model="form.isSmoking"
+                        direction="horizontal"
+                        shape="dot"
+                        class="w-full doc-radio-group">
+                        <van-radio v-for="item in store.getDict('CP00120')"
+                            :key="item.value" :name="item.value"
+                            label-position="left">{{item.name}}</van-radio>
+                    </van-radio-group>
+                </template>
+            </van-field>
+
+            <div class="flex items-center justify-between tip-box">
+                <div class='doc-form-label shrink-0' >现测血压(mmHg)</div>
+                <BloodPressurePanel :pressureObj="pressureObj"/>
+            </div>
+            <div class="sub-text my-3" >第一次</div>
+            <table class="w-full mb-2">
+                <tr class="sub-text"  >
+                    <td>收缩压(高压)</td>
+                    <td style="width: 1em"></td>
+                    <td>舒张压(低压)</td>
+                </tr>
+                <tr>
+                    <td class="flex items-center">
+                        <van-field v-model="form.pressureOneSbp"
+                            name="pressureOneSbp" 
+                            label=""
+                            type="number"
+                            placeholder="60~300,整数"
+                            maxlength="10"
+                            :rules="rules.pressureDbp"
+                            error-message-align="left"
+                            input-align="left"
+                            class="table-field"
+                        />
+                    </td>
+                    <td class="text-center">
+                        <span class="divide">/</span>
+                    </td>
+                    <td>
+                        <van-field v-model="form.pressureOneDbp"
+                            name="pressureOneDbp" 
+                            label=""
+                            type="number"
+                            placeholder="30~300,整数"
+                            maxlength="10"
+                            :rules="rules.pressureSbp"
+                            error-message-align="left"
+                            input-align="left"
+                            class="table-field"
+                        />
+                    </td>
+                </tr>
+            </table>
+            <BloodPressureBt :pressureObj="pressureObj" @getValue="setPressureOne">第一次测量</BloodPressureBt>
+            <div class="sub-text my-3" >第二次</div>
+            <table class="w-full mb-2">
+                <tr class="sub-text" >
+                    <td>收缩压(高压)</td>
+                    <td style="width: 1em"></td>
+                    <td>舒张压(低压)</td>
+                </tr>
+                <tr>
+                    <td>
+                        <van-field v-model="form.pressureTwoSbp"
+                            name="pressureTwoSbp" 
+                            label=""
+                            type="number"
+                            placeholder="60~300,整数"
+                            maxlength="10"
+                            :rules="rules.pressureDbp"
+                            error-message-align="left"
+                            input-align="left"
+                            class="table-field"
+                        />
+                    </td>
+                    
+                    <td class="text-center">
+                        <span class="divide">/</span>
+                    </td>
+                    <td>
+                        <van-field v-model="form.pressureTwoDbp"
+                            name="pressureTwoDbp" 
+                            label=""
+                            type="number"
+                            placeholder="30~300,整数"
+                            maxlength="10"
+                            :rules="rules.pressureSbp"
+                            error-message-align="left"
+                            input-align="left"
+                            class="table-field"
+                        />
+                    </td>
+                </tr>
+            </table>
+            <BloodPressureBt :pressureObj="pressureObj" @getValue="setPressureTwo">第二次测量</BloodPressureBt>
+
+            <div class='doc-form-label'>空腹血糖</div>
+            <van-field v-model="form.fastingGlucose"
+                name="fastingGlucose" 
+                type="number"
+                placeholder="输入值0~50,2位小数"
+                maxlength="10"
+                :rules="rules.fastingGlucose"
+            >
+                <template #extra>
+                    <span class="ml-1">mmol/L</span>
+                </template>
+            </van-field>
+
+            <div class='doc-form-label'>低密度脂蛋白胆固醇</div>
+            <van-field v-model="form.ldlCholesterin"
+                name="ldlCholesterin" 
+                type="number"
+                placeholder="输入值0~50,2位小数"
+                maxlength="10"
+                :rules="rules.ldlCholesterin"
+            >
+                <template #extra>
+                    <span class="ml-1">mmol/L</span>
+                </template>
+            </van-field>
+
+            <div class='doc-form-label'>血清总胆固醇</div>
+            <van-field v-model="form.serumCholesterin"
+                name="serumCholesterin"
+                type="number"
+                placeholder="输入值0~50,1位小数"
+                maxlength="10"
+                :rules="rules.serumCholesterin"
+            >
+                <template #extra>
+                    <span class="ml-1">mmol/L</span>
+                </template>
+            </van-field>
+
+            <div class='doc-form-label'>高密度脂蛋白胆固醇</div>
+            <van-field v-model="form.hdlCholesterin"
+                name="hdlCholesterin" 
+                type="number"
+                placeholder="输入值0~50,1位小数"
+                maxlength="10"
+                :rules="rules.hdlCholesterin"
+            >
+                <template #extra>
+                    <span class="ml-1">mmol/L</span>
+                </template>
+            </van-field>
+
+            <div class="flex tip-box">
+                <div class='doc-form-label shrink-0' required>运动</div>
+                <span class="grow text-end text-ellipsis">每周保持150分钟内中等或75分钟内的高强度身体活动</span>
+            </div>
+            <van-field
+                name="exerciseIntensity"
+                class="no-back"
+                style="padding: 0"
+                :rules="rules.exerciseIntensity">
+                <template #input>
+                    <van-radio-group v-model="form.exerciseIntensity"
+                        direction="horizontal"
+                        shape="dot"
+                        class="w-full doc-radio-group">
+                        <van-radio v-for="item in store.getDict('CP00120')"
+                            :key="item.value" :name="item.value"
+                            label-position="left">{{item.name}}</van-radio>
+                    </van-radio-group>
+                </template>
+            </van-field>
+
+            <div class='doc-form-label' required>高危评估结果</div>
+            <van-field
+                name="visitResult"
+                class="no-back"
+                style="padding: 0"
+                :rules="rules.visitResult">
+                <template #input>
+                    <van-radio-group v-model="form.visitResult"
+                        direction="horizontal"
+                        shape="dot"
+                        class="w-full doc-radio-group">
+                        <van-radio v-for="item in store.getDict('CP00119')"
+                            :key="item.value" :name="item.value"
+                            label-position="left">{{item.name}}</van-radio>
+                    </van-radio-group>
+                </template>
+            </van-field>
+
+            <DoctorInfo :info="info" ref="DoctorInfo"/>
+
+            <div class='doc-form-label' required>随访日期</div>
+            <van-field
+                v-model="form.visitDate"
+                is-link
+                readonly
+                name="visitDate"
+                placeholder="请选择"
+                @click="showvisitDate = true"
+                :rules="rules.visitDate"
+            />
+            <van-popup v-model:show="showvisitDate" position="bottom">
+                <van-date-picker v-model="form._visitDate" 
+                    :min-date="visitDateRange.min"
+                    :max-date="visitDateRange.max"
+                    @confirm="visitDateConfirm" @cancel="showvisitDate = false" />
+            </van-popup>
+        </van-form>
+    </div>
+</template>
+
+<script>
+import { useStore } from '@/doctor/store'
+import { checkboxReject } from '@/utils/common.js'
+import dayjs from 'dayjs'
+import DoctorInfo from './DoctorInfo.vue'
+import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue'
+import { BloodPressurePanel, BloodPressureBt } from '@/doctor/components/bloodPressure/index.js'
+
+const defaultForm = (info = {}) => {
+    const form = {
+        id: undefined,
+        residentInfoId: undefined,
+        // 年龄
+        currentAge: undefined,
+        // 既往史
+        medicalHistory: [],
+        medicalHistoryName: undefined,
+        // 身高
+        height: undefined,
+        // 体重
+        weight: undefined,
+        bmi: undefined,
+        // 腰围
+        waistline: undefined,
+        // 是否吸烟
+        isSmoking: undefined,
+        // 家族史
+        familyHistory: [],
+        familyHistoryName: undefined,
+        // 空腹血糖
+        fastingGlucose: undefined,
+        // 血清总胆固醇
+        serumCholesterin: undefined,
+        // 低密度脂蛋白胆固醇
+        ldlCholesterin: undefined,
+        // 高密度脂蛋白胆固醇
+        hdlCholesterin: undefined,
+        // 运动
+        exerciseIntensity: undefined,
+        // 筛查日期
+        visitDate: undefined,
+        _visitDate: undefined,
+        // 血压第一次
+        pressureOneDbp: undefined,
+        pressureOneSbp: undefined,
+        // 血压第二次
+        pressureTwoDbp: undefined,
+        pressureTwoSbp: undefined,
+        // 高危评估结果(1:一般人群(小于3个指标);2:高危人群(大于等于3个指标))
+        visitResult: 1,
+        // 高危项目 CP00113
+        highItem: undefined,
+        gender: undefined
+    }
+    Reflect.ownKeys(form).forEach(key => {
+        if (info[key] != undefined) {
+            form[key] = info[key]
+        }
+    })
+    return form
+}
+export default {
+    components: {
+        CheckBtn,
+        DoctorInfo,
+        BloodPressurePanel,
+        BloodPressureBt
+    },
+    props: {
+        info: { default: () => ({}) },
+        residentInfo: { default: () => ({}) },
+    },
+    inject: ['pressureObj'],
+    data() {
+        return {
+            form: defaultForm(),
+            rules: {
+                medicalHistory: [{ required: true, message: '请选择' }],
+                familyHistory: [{ required: true, message: '请选择' }],
+                exerciseIntensity: [{ required: true, message: '请选择' }],
+                isSmoking: [{ required: true, message: '请选择' }],
+                visitResult: [{ required: true, message: '请选择' }],
+                visitDate: [{ required: true, message: '请选择' }],
+                height: [{ required: true, message: '请输入' },
+                    { pattern: /^([1-9]\d{1}(?:\.\d{1})?|[1-2]\d{2}(?:\.\d{1})?|300)$/, message: '输入值在10~300内,1位小数' }],
+                weight: [{ required: true, message: '请输入' },
+                    { pattern: /^([2-9]\d{1}(?:\.\d{1,2})?|[1-4]\d{2}(?:\.\d{1,2})?|500)$/, message: '输入值在20~500内,2位小数' }],
+                waistline: [{
+                    pattern: /^([1-9]\d{1}(?:\.\d{1})?|[1][0-4]\d(?:\.\d{1})?|150)$/, message: '输入值在10~150内,1位小数', validateEmpty: false }],
+                fastingGlucose: [{
+                    pattern: /^(?:0(?:\.\d{1,2})?|[1-4]\d{0,1}(?:\.\d{1,2})?|[1-9]{0,1}(?:\.\d{1,2})?|50)$/, message: '输入值0~50,2位小数', validateEmpty: false }],
+                serumCholesterin: [{
+                    pattern: /^(?:0(?:\.\d{1})?|[1-4]\d{0,1}(?:\.\d{1})?|[1-9]{0,1}(?:\.\d{1})?|50)$$/, message: '输入值0~50,1位小数', validateEmpty: false }],
+                ldlCholesterin: [{
+                    pattern: /^(?:0(?:\.\d{1,2})?|[1-4]\d{0,1}(?:\.\d{1,2})?|[1-9]{0,1}(?:\.\d{1,2})?|50)$/, message: '输入值0~50,2位小数', validateEmpty: false }],
+                hdlCholesterin: [{
+                    pattern: /^(?:0(?:\.\d{1})?|[1-4]\d{0,1}(?:\.\d{1})?|[1-9]{0,1}(?:\.\d{1})?|50)$$/, message: '输入值0~50,1位小数', validateEmpty: false }],
+                pressureDbp: [{ pattern: /^([6-9]\d{1}|[1-2]\d{2}|300)$/, message: '60~300,整数', validateEmpty: false }],
+                pressureSbp: [{ pattern: /^([3-9]\d{1}|[1-2]\d{2}|300)$/, message: '30~300,整数', validateEmpty: false }],
+            },
+            // 既往史
+            showMedical: false,
+            // 家族史
+            showFamily: false,
+            // 筛查日期
+            showvisitDate: false,
+            // 筛查日期可选范围
+            visitDateRange: {
+                min: undefined,
+                max: undefined
+            },
+            store: useStore()
+        }
+    },
+    computed: {
+        // BMI
+        bmi() {
+            const { height, weight } = this.form
+            return height && weight ? (weight / (height / 100 * height / 100)).toFixed(2) : undefined
+        },
+        // 既往史
+        medicalHistoryArray() {
+            const result = []
+            this.store.getDict('CP00118').forEach(e => {
+                if (e.value == 9) {
+                    result.unshift(e)
+                    return
+                }
+                result.push(e)
+            })
+            return result
+        },
+        // 家族史
+        familyHistoryArray() {
+            const result = []
+            this.store.getDict('CP00167').forEach(e => {
+                if (e.value == 9) {
+                    result.unshift(e)
+                    return
+                }
+                result.push(e)
+            })
+            return result
+        },
+        // 筛查高危项目
+        highItem() {
+            const {currentAge, waistline, familyHistory = [], isSmoking, gender,
+                pressureOneSbp, pressureOneDbp, pressureTwoSbp, pressureTwoDbp, 
+                fastingGlucose, ldlCholesterin, serumCholesterin} = this.form
+            let list = []
+            if (currentAge >= 50) {
+                list.push(1)
+            }
+            let bmi = parseFloat(this.bmi)
+            if ((bmi >= 24)||
+                (gender == 2 && waistline >=80) ||
+                (gender == 1 && waistline >=85) ){
+                list.push(2)
+            }
+            if (isSmoking == 1) {
+                list.push(3)
+            }
+            if (familyHistory && familyHistory.length && (familyHistory.includes(1) || familyHistory.includes(2) ||
+                familyHistory.includes(3) || familyHistory.includes(4) || familyHistory.includes(5) || familyHistory.includes(6))) {
+                list.push(4)
+            }
+            if ((pressureOneSbp >= 130 || pressureTwoSbp >= 130) ||
+                (pressureOneDbp >= 85 || pressureTwoDbp >= 85)
+            ) {
+                list.push(5)
+            }
+            if (fastingGlucose >= 6.1) {
+                list.push(6)
+            }
+            // if (ldlCholesterin >= 3.4) {
+            //     list.push(7)
+            // }
+            if (serumCholesterin >= 5.2) {
+                list.push(7)
+            }
+            list = Array.from(new Set(list))
+            return list
+        }
+    },
+    created() {
+        this.init()
+    },
+    methods: {
+        init() {
+            const date = dayjs()
+            this.form.visitDate = date.format('YYYY-MM-DD')
+            this.form._visitDate = [date.year(), date.month() + 1, date.date()]
+            this.visitDateRange.max = new Date(date.year(), date.month(), date.date())
+            this.visitDateRange.min = new Date(date.year() - 20, date.month(), date.date())
+        },
+        async submit() {
+            try {
+                await this.$refs.form.validate()
+                const result = {
+                    ...this.form,
+                    ...this.$refs.DoctorInfo.submit()
+                }
+                return result
+            } catch (err) {
+                console.warn(err)
+                this.$message.info('表单校验不通过')
+                const array = err || []
+                if (array.length) {
+                    this.$refs.form.scrollToField(array[0].name)
+                }
+            }
+            
+        },
+        // 既往史
+        medicalConfirm() {
+            this.form.medicalHistoryName = this.store.getDict('CP00118').map(e => {
+                return this.form.medicalHistory.includes(e.value) ? e.name : ''
+            }).filter(e => e).join('、')
+            this.showMedical = false
+        },
+        medicalChange(val) {
+            this.form.medicalHistory = checkboxReject(this.form.medicalHistory, [9])
+        },
+        // 家族史
+        familyConfirm() {
+            this.form.familyHistoryName = this.store.getDict('CP00167').map(e => {
+                return this.form.familyHistory.includes(e.value) ? e.name : ''
+            }).filter(e => e).join('、')
+            this.showFamily = false
+        },
+        familyChange() {
+            this.form.familyHistory = checkboxReject(this.form.familyHistory, [9])
+        },
+        // 筛查日期
+        visitDateConfirm({ selectedValues }) {
+            this.form.visitDate = selectedValues.join('-')
+            this.showvisitDate = false
+        },
+        // resultHandle() {
+        //     const {currentAge, waistline, familyHistory = [], isSmoking, gender,
+        //         pressureOneSbp, pressureOneDbp, pressureTwoSbp, pressureTwoDbp, 
+        //         fastingGlucose, ldlCholesterin, serumCholesterin} = this.form
+        //     let list = []
+        //     if (currentAge >= 50) {
+        //         list.push(1)
+        //     }
+        //     let bmi = parseFloat(this.bmi)
+        //     if ((bmi >= 24)||
+        //         (gender == 2 && waistline >=80) ||
+        //         (gender == 1 && waistline >=85) ){
+        //         list.push(2)
+        //     }
+        //     if (isSmoking == 1) {
+        //         list.push(3)
+        //     }
+        //     if (familyHistory && familyHistory.length && (familyHistory.includes(1) || familyHistory.includes(2) ||
+        //         familyHistory.includes(3) || familyHistory.includes(4) || familyHistory.includes(5) || familyHistory.includes(6))) {
+        //         list.push(4)
+        //     }
+        //     if ((pressureOneSbp >= 130 || pressureTwoSbp >= 130) ||
+        //         (pressureOneDbp >= 85 || pressureTwoDbp >= 85)
+        //     ) {
+        //         list.push(5)
+        //     }
+        //     if (fastingGlucose >= 6.1) {
+        //         list.push(6)
+        //     }
+        //     // if (ldlCholesterin >= 3.4) {
+        //     //     list.push(7)
+        //     // }
+        //     if (serumCholesterin >= 5.2) {
+        //         list.push(7)
+        //     }
+        //     list =  Array.from(new Set(list))
+        //     this.form.highItem = list
+        //     if (list.length >= 3){
+        //         this.form.visitResult = 2
+        //     }else {
+        //         this.form.visitResult = 1
+        //     }
+        // },
+        setPressureOne(val) {
+            if (!val) return
+            this.form.pressureOneSbp = val.systolicPressure
+            this.form.pressureOneDbp = val.diastolicPressure
+        },
+        setPressureTwo(val) {
+            if (!val) return
+            this.form.pressureTwoSbp = val.systolicPressure
+            this.form.pressureTwoDbp = val.diastolicPressure
+        }
+    },
+    watch: {
+        info: {
+            handler(info) {
+                this.form = defaultForm(info)
+            },
+            immediate: true
+        },
+        bmi: {
+            handler() {
+                this.form.bmi = this.bmi
+            },
+            immediate: true
+        },
+        highItem: {
+            handler(val) {
+                this.form.highItem = val
+                if (val.length >= 3){
+                    this.form.visitResult = 2
+                }else {
+                    this.form.visitResult = 1
+                }
+            },
+            immediate: true
+        }
+    }
+}
+</script>
+
+<style lang="less" scoped>
+table {
+    text-align: left;
+    >tr {
+        >td {
+            padding-bottom: 4px;
+        }
+        &:last-child {
+            >td {
+                padding-bottom: 0;
+            }
+        }
+    }
+    .divide {
+        transform: translateY(2px);
+        padding: 0 2px;
+        .sub-text()
+    }
+}
+.sub-text {
+    color: #595959;
+}
+</style>
diff --git a/src/doctor/screening/highVisit/first/Result.vue b/src/doctor/screening/highVisit/first/Result.vue
new file mode 100644
index 0000000000000000000000000000000000000000..7a831cb9fe6f28a485b1bb66e2d80ca0c118ba9a
--- /dev/null
+++ b/src/doctor/screening/highVisit/first/Result.vue
@@ -0,0 +1,60 @@
+<template>
+    <div class="screening-first-result text-center pt-3 px-3">
+        <doc-icon type="doc-check-circle" style="font-size: .46rem;"/>
+        <div class="mt-3">随访完成</div>
+        <div class="text-start mt-5">
+            <span style="color: #595959;">通过随访,您的慢病高危评估结果为:</span>
+            <span v-if="info.screenResult == 2" class="text-red">高危人群</span>
+            <span v-else>一般人群</span>
+        </div>
+        <div style="margin-top: .48rem">
+            <van-button type='primary' block round plain
+                @click='toScreen'>专病高危随访</van-button>
+            <div class="pt-3"></div>
+            <van-button type='primary' block round plain
+                @click='toDetail'>查看居民详情</van-button>
+            <div class="text-16 pt-5" style="color: #8c8c8c;"
+                @click="toWorkbench">返回工作台</div>
+        </div>
+    </div>
+</template>
+
+<script>
+export default {
+    props: {
+        info: { default: () => ({}) }
+    },
+    computed: {
+        residentInfoId() {
+            return this.info.residentInfoId
+        }
+    },
+    methods: {
+        toScreen() {
+            this.$router.replace({
+                path: '/doctor/screening/secondForm',
+                query: {
+                    residentInfoId: this.residentInfoId
+                }
+            })
+        },
+        toDetail() {
+            this.$router.replace({
+                path: '/doctor/patient-detail',
+                query: {
+                    residentInfoId: this.residentInfoId
+                }
+            })
+        },
+        toWorkbench() {
+            this.$router.replace({
+                path: '/doctor/workbench'
+            })
+        }
+    }
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>
diff --git a/src/doctor/screening/highVisit/second/BaseInfo.vue b/src/doctor/screening/highVisit/second/BaseInfo.vue
new file mode 100644
index 0000000000000000000000000000000000000000..b215c474f1dd444ad0419c25f1d31081b4e4f71c
--- /dev/null
+++ b/src/doctor/screening/highVisit/second/BaseInfo.vue
@@ -0,0 +1,217 @@
+<template>
+    <div>
+        <van-form ref='form'>
+            <archive-common :info='info' ref='archive'></archive-common>
+            <div class='flex justify-between items-center mt-5 mb-20'>
+                <div class='title'>筛查信息</div>
+                <div>
+                    <van-button plain size='small' type='primary' @click='toLast'>引入上一次筛查数据</van-button>
+                </div>
+            </div>
+
+            <div class='label-title mt-5'>筛查病种</div>
+            <van-field
+                v-model='form.diseaseArraysName'
+                readonly
+                is-link
+                placeholder='请选择'
+                class='input-back mt-2 form-input'
+                :rules='rules.diseaseArraysName'
+                @click='showGroupsArrays= true'
+            >
+                <template #input>
+                    <span class='text-end' v-if='form.diseaseArraysName'>{{ form.diseaseArraysName }}</span>
+                    <span class='text-end' v-if='!form.diseaseArraysName' style='color: #dfdfe1'>请选择</span>
+                </template>
+            </van-field>
+            <van-popup v-model:show='showGroupsArrays' position='bottom'>
+                <div class='p-4'>
+                    <div class='flex justify-between items-center mb-4 pop-title'>
+                        <div class='greyColor' @click='showGroupsArrays = false' style='font-weight: 400'>取消</div>
+                        <div>筛查病种(可多选)</div>
+                        <div class='blueColor' @click='groupsArraysConfirm'>确定</div>
+                    </div>
+                    <CheckBtn multiple
+                              column-1
+                              :options='groupArrList'
+                              v-model:value='checkGroupsArrays'
+                              :fieldNames="{text: 'name', value: 'value'}" />
+                </div>
+            </van-popup>
+        </van-form>
+    </div>
+</template>
+
+<script>
+import ArchiveCommon from '@/doctor/components/archiveCommon/archiveCommon'
+import { useStore } from '@/doctor/store'
+import CheckBtn from '@/doctor/components/checkBtn/CheckBtn'
+
+export default {
+    name: 'BaseInfo',
+    props: {
+        info: Object
+    },
+    components: { CheckBtn, ArchiveCommon },
+    data() {
+        return {
+            store: useStore(),
+            form: {
+                diseaseArrays: [],
+                diseaseArraysName: undefined
+            },
+            rules: {
+                diseaseArraysName: [{ required: true, message: '请选择' }]
+            },
+            showGroupsArrays: false,
+            //筛查病种组件双向绑定变量
+            checkGroupsArrays: []
+        }
+    },
+    computed: {
+        //筛查病种
+        groupArrList() {
+            let res = []
+            res = this.store.getDict('CP00117')
+            return res
+        }
+    },
+    watch: {
+        'info': {
+            handler() {
+                this.init()
+            },
+            immediate: true
+        }
+    },
+    methods: {
+        init() {
+            if (!this.info.id) {
+                //是否是引用上一次复筛数据
+                if (this.info.flag && this.info.flag == 'lastInfo') {
+                    this.setDis(this.info.diseaseArrays)
+                } else {//新增时
+                    this.setDis([1,2,3,4,5,6,7])
+                }
+            } else {
+                this.setDis(this.info.diseaseArrays)
+            }
+        },
+        setDis(diseaseArrays) {
+            if (diseaseArrays) {
+                this.form.diseaseArrays = diseaseArrays
+                this.checkGroupsArrays = this.form.diseaseArrays
+                let res = []
+                this.groupArrList.forEach(item => {
+                    let list = this.form.diseaseArrays.filter(i => i == item.value)
+                    if (list && list.length) {
+                        res.push(item.name)
+                    }
+                })
+                this.form.diseaseArraysName = res.join()
+            }
+        },
+        groupsArraysConfirm() {
+            let res = []
+            this.groupArrList.forEach(item => {
+                let selected = this.checkGroupsArrays.filter(i => i == item.value)
+                if (selected && selected.length) {
+                    res.push(item.name)
+                }
+            })
+            if (this.checkGroupsArrays && this.checkGroupsArrays.length) {
+                this.form.diseaseArrays = this.checkGroupsArrays
+                this.form.diseaseArraysName = res.join()
+            } else {
+                this.form.diseaseArrays = []
+                this.form.diseaseArraysName = ''
+            }
+            this.showGroupsArrays = false
+        },
+        toLast() {
+          this.$emit('getLast', true)
+        },
+        async onSubmit() {
+            let baseInfo = {}
+            try {
+                 baseInfo = await this.$refs.archive.onSubmit()
+            } catch (e) {
+            }
+            return new Promise((resolve, reject) => {
+                this.$refs.form.validate().then(() => {
+                    let par = {
+                        residentsRecord: {
+                            // ...this.info,
+                            ...baseInfo,
+                            id: this.info.personId
+                        },
+                        diseaseArrays: this.form.diseaseArrays
+                    }
+                    resolve(par)
+                }).catch((e) => {
+                    console.warn('baseInfo error', e)
+                })
+            })
+        }
+    }
+}
+</script>
+
+<style scoped lang='less'>
+.title {
+    font-weight: bold;
+}
+.mb-20 {
+    margin-bottom: 20px;
+}
+
+.label-title {
+    font-size: 13px;
+    color: #595959;
+    font-weight: 500;
+
+    &::after {
+        content: "*";
+        color: red;
+        font-weight: bold;
+        margin-left: 4px;
+    }
+}
+
+.no-req-label {
+    font-size: 13px;
+    color: #595959;
+    font-weight: 500;
+}
+
+.form-input {
+    padding: 8px 12px;
+    border-radius: 8px;
+}
+
+.input-back {
+    background: #FAFAFA;
+}
+
+.pop-title {
+    color: #262626;
+    font-size: 16px;
+    line-height: 24px;
+    font-weight: bold;
+}
+
+:deep(.van-popup) {
+    min-height: 30% !important;
+}
+:deep(.van-cell-group--inset) {
+    overflow: visible;
+}
+
+:deep(.van-cell) {
+    overflow: visible;
+}
+
+:deep(.van-cell:after) {
+    border-bottom: 0px;
+}
+</style>
\ No newline at end of file
diff --git a/src/doctor/screening/highVisit/second/CommonBottom.vue b/src/doctor/screening/highVisit/second/CommonBottom.vue
new file mode 100644
index 0000000000000000000000000000000000000000..cd9c55e401ec40bd93d3dc22ad3e2df36f20ff37
--- /dev/null
+++ b/src/doctor/screening/highVisit/second/CommonBottom.vue
@@ -0,0 +1,250 @@
+<template>
+    <div>
+        <van-form ref='form'>
+
+            <div :class="['label-title', 'mt-5']">随访单位</div>
+            <van-field
+                v-model='form.visitUnitName'
+                is-link
+                readonly
+                placeholder='随访单位'
+                class='input-back mt-2 form-input'
+                :rules='rules.visitUnitName'
+                @click='show1 = true'
+            />
+            <DocUnit v-model:show='show1' v-model:value='form.visitUnitId' @change='changeUnit' />
+
+            <div class='label-title mt-5'>随访科室</div>
+            <van-field
+                v-model='form.visitOfficeName'
+                is-link
+                readonly
+                placeholder='随访科室'
+                class='input-back mt-2 form-input'
+                :rules='rules.visitOfficeName'
+                @click='show2 = true'
+            />
+            <DocOffice v-model:show='show2' v-model:value='form.visitOfficeId' @change='changeOffice'
+                       :unitId='form.visitUnitId' />
+
+            <div class='label-title mt-5'>随访医生</div>
+            <van-field
+                v-model='form.visitDoctorName'
+                is-link
+                readonly
+                placeholder='随访医生'
+                class='input-back mt-2 form-input'
+                :rules='rules.visitDoctorName'
+                @click='show3 = true'
+            />
+
+            <DocOfficeDoctor v-model:show='show3' v-model:value='form.visitDoctorId' @change='changeDoctor'
+                             :unitId='form.visitUnitId' :officeId='form.visitOfficeId' />
+        </van-form>
+    </div>
+</template>
+
+<script>
+import dayjs from 'dayjs'
+import { useStore } from '@/doctor/store'
+import DocUnit from '@/doctor/components/docUnit/DocUnit'
+import DocOffice from '@/doctor/components/docOffice/DocOffice'
+import DocOfficeDoctor from '@/doctor/components/docOfficeDoctor/DocOfficeDoctor'
+import CheckBtn from '@/doctor/components/checkBtn/CheckBtn'
+import DocImageUpload from '@/doctor/components/docImageUpload/DocImageUpload'
+
+
+export default {
+    name: 'CommonBottom',
+    components: { DocImageUpload, CheckBtn, DocOfficeDoctor, DocOffice, DocUnit },
+    props: {
+        info: {
+            default: () => {
+                return {}
+            }
+        },
+    },
+    data() {
+        return {
+            store: useStore(),
+            show1: false,
+            show2: false,
+            show3: false,
+            form: {
+            },
+            rules: {
+            }
+        }
+    },
+    watch: {
+        'info': {
+            handler() {
+                this.form = this.setForm(this.info)
+            },
+            immediate: true
+        },
+    },
+    computed: {
+        authInfo() {
+            return this.store.$state.authInfo
+        },
+    },
+    methods: {
+        setForm(info) {
+            const form = {
+                visitDate: new dayjs().format("YYYY-MM-DD"),
+                createDate: new dayjs().format("YYYY-MM-DD"),
+                // 随访单位
+                visitUnitId: this.authInfo.unitId,
+                visitUnitName: this.authInfo.unitName,
+                // 随访科室
+                visitOfficeId: this.authInfo.officeId,
+                visitOfficeName: this.authInfo.officeName,
+                // 随访医生
+                visitDoctorId: this.authInfo.relationId,
+                visitDoctorName: this.authInfo.nickName,
+                // 录入单位
+                createUnitId: this.authInfo.unitId,
+                createUnitName: this.authInfo.unitName,
+                // 录入科室
+                createOfficeId: this.authInfo.officeId,
+                createOfficeName: this.authInfo.officeName,
+                // 录入医生
+                createDoctorId: this.authInfo.relationId,
+                createDoctorName: this.authInfo.nickName,
+            }
+            Reflect.ownKeys(form).forEach(key => {
+                if (info[key] != undefined) {
+                    form[key] = info[key]
+                }
+            })
+            return form
+        },
+        changeUnit(val) {
+            this.form.visitUnitName = val.unitName
+            this.form.visitUnitId = val.id
+            this.form.visitOfficeId = undefined
+            this.form.visitOfficeName = undefined
+            this.form.visitDoctorId = undefined
+            this.form.visitDoctorName = undefined
+            this.show1 = false
+        },
+        changeOffice(val) {
+            this.form.visitOfficeId = val.id
+            this.form.visitOfficeName = val.officeName
+            this.form.visitDoctorId = undefined
+            this.form.visitDoctorName = undefined
+            this.show2 = false
+        },
+        changeDoctor(val) {
+            this.form.visitDoctorId = val.id
+            this.form.visitDoctorName = val.staffName
+            this.show3 = false
+        },
+        onSubmit() {
+            return new Promise((resolve, reject) => {
+                this.$refs.form.validate().then(() => {
+                    let par = {
+                        ...this.form,
+                    }
+                    resolve(par)
+                }).catch((e) => {
+                    console.warn('error', e)
+                })
+            })
+        }
+    }
+}
+</script>
+
+<style scoped lang='less'>
+.title {
+    font-weight: bold;
+    margin-bottom: 20px;
+}
+
+.label-title {
+    font-size: 13px;
+    color: #595959;
+    font-weight: 500;
+
+    &::after {
+        content: "*";
+        color: red;
+        font-weight: bold;
+        margin-left: 4px;
+    }
+}
+
+.push-lab {
+    line-height: 20px;
+    color: #8C8C8C;
+    font-size: 12px
+}
+
+.no-req-label {
+    font-size: 13px;
+    color: #595959;
+    font-weight: 500;
+}
+
+.form-input {
+    padding: 8px 12px;
+    border-radius: 8px;
+}
+
+.input-back {
+    background: #FAFAFA;
+}
+
+.tel-back {
+    background: #F5F5F5;
+    padding: 8px;
+    border-radius: 0px 0px 8px 8px;
+}
+
+.tel {
+    background: #FFFFFF;
+    padding: 8px;
+    border-radius: 8px;
+}
+
+.tel-label {
+    color: #607FF0;
+    font-weight: bold;
+}
+
+.p-12-0 {
+    padding: 12px 0px;
+}
+
+.vx-cb {
+    position: absolute;
+    right: 10px;
+    top: 23px;
+}
+
+.ms-cb {
+    position: absolute;
+    right: 10px;
+    top: 97px;
+}
+
+:deep(.van-cell-group--inset) {
+    overflow: visible;
+}
+
+:deep(.van-cell) {
+    overflow: visible;
+}
+
+/*:deep(.van-field__error-message) {
+    position: absolute;
+    margin-top: 3px;
+}*/
+
+:deep(.van-cell:after) {
+    border-bottom: 0px;
+}
+
+</style>
\ No newline at end of file
diff --git a/src/doctor/screening/highVisit/second/DiseaseSelect.vue b/src/doctor/screening/highVisit/second/DiseaseSelect.vue
new file mode 100644
index 0000000000000000000000000000000000000000..c34f2d38f27b1bf23670fda9bc0921a4c14fa5e3
--- /dev/null
+++ b/src/doctor/screening/highVisit/second/DiseaseSelect.vue
@@ -0,0 +1,122 @@
+<template>
+    <div class='disease-select'>
+        <div class='label-title mb-4'>请选择慢病类型</div>
+        <div v-for="(item, index) in store.getDict('CP00117')" :key='index'
+             :class="['flex justify-between items-center text-16 mb-3 disease-checked',
+                { 'disease-checked-active': isSelect(item)},
+            ]"
+             @click='onSelect(item)'>
+            <span>{{ item.name }}</span>
+        </div>
+        <div class='warn-error' v-if='showWarn'>请选择</div>
+    </div>
+</template>
+
+<script>
+import { useStore } from '@/doctor/store/index.js'
+
+export default {
+    props: {
+        infoValue: String
+    },
+    data() {
+        return {
+            store: useStore(),
+            // 选中的疾病类型
+            innerValue: [],
+            //显示校验
+            showWarn: false
+        }
+    },
+    watch: {
+        infoValue: {
+            handler(value) {
+                if (value) {
+                    this.innerValue = value.split(',')
+                }
+            },
+            immediate: true
+        }
+    },
+    created() {
+        this.init()
+    },
+    methods: {
+        init() {
+          if (!(this.innerValue && this.innerValue.length)) {
+              this.innerValue = this.store.getDict('CP00117').map(e => e.value)
+          }
+        },
+        // 是否选中
+        isSelect(item) {
+            return this.innerValue.includes(item.value)
+        },
+        onSelect(val) {
+            if (this.innerValue.includes(val.value)) {
+                this.innerValue = this.innerValue.filter(e => e !== val.value)
+            } else {
+                this.innerValue.push(val.value)
+            }
+            if (this.innerValue && this.innerValue.length) {
+                this.showWarn = false
+            } else {
+                this.showWarn = true
+            }
+
+        },
+        onSubmit() {
+            return new Promise((resolve, reject) => {
+                if (!(this.innerValue && this.innerValue.length)) {
+                    this.showWarn = true
+                    return
+                }
+                resolve(this.innerValue)
+            })
+        }
+    }
+}
+</script>
+
+<style lang='less' scoped>
+.label-title {
+    font-size: 14px;
+    color: #262626;
+    font-weight: 500;
+
+    &::after {
+        content: "*";
+        color: red;
+        font-weight: bold;
+        margin-left: 4px;
+    }
+}
+
+.no-req-label {
+    font-size: 13px;
+    color: #595959;
+    font-weight: 500;
+}
+
+.disease-checked {
+    border: 1px solid #BFBFBF;
+    border-radius: 40px;
+    color: #595959;
+    background-color: #fff;
+    padding: 10px 16px;
+    line-height: 22.4px;
+}
+
+.disease-checked-active {
+    color: var(--van-primary-color);
+    border-color: var(--van-primary-color);
+}
+
+.disease-checked-disabled {
+    border-color: #EFF2F7;
+    background-color: #EFF2F7;
+}
+
+.warn-error {
+    color: #FF4D4F;
+}
+</style>
diff --git a/src/doctor/screening/highVisit/second/FormCont.vue b/src/doctor/screening/highVisit/second/FormCont.vue
new file mode 100644
index 0000000000000000000000000000000000000000..b2008da56c689d832ccb3720d75d1cbddccddce5
--- /dev/null
+++ b/src/doctor/screening/highVisit/second/FormCont.vue
@@ -0,0 +1,2669 @@
+<template>
+    <div class='screening-first-cont'>
+        <van-form ref='form'>
+            <div class='title'>随访信息</div>
+            <div v-if='ageShow'>
+                <div class='no-req-label mt-5'>年龄</div>
+                <van-field
+                    v-model='form.currentAge'
+                    readonly
+                    placeholder='年龄'
+                    class='input-back mt-2 form-input'
+                />
+            </div>
+            <div v-if='sexShow'>
+                <div class='no-req-label mt-5'>性别</div>
+                <van-field
+                    v-model='form.genderName'
+                    readonly
+                    placeholder='性别'
+                    class='input-back mt-2 form-input'
+                />
+            </div>
+
+            <div v-if='medicalHistoryShow'>
+                <div class='label-title mt-5'>病史</div>
+                <van-field
+                    v-model='form.medicalHistoryName'
+                    readonly
+                    is-link
+                    placeholder='请选择'
+                    class='input-back mt-2 form-input'
+                    :rules='rules.medicalHistoryName'
+                    @click='showMedicalHistory= true'
+                >
+                    <template #input>
+                        <span class='text-end' v-if='form.medicalHistoryName'>{{ form.medicalHistoryName }}</span>
+                        <span class='text-end' v-if='!form.medicalHistoryName' style='color: #dfdfe1'>请选择</span>
+                    </template>
+                </van-field>
+                <van-popup v-model:show='showMedicalHistory' position='bottom'>
+                    <div class='p-4' style='height: 100%'>
+                        <div class='flex justify-between items-center mb-4 pop-title'>
+                            <div class='greyColor' @click='showMedicalHistory = false' style='font-weight: 400'>取消</div>
+                            <div>病史(可多选)</div>
+                            <div class='blueColor' @click='medicalHistoryConfirm'>确定</div>
+                        </div>
+                        <div style='height: 80%;overflow: auto'>
+                            <CheckBtn multiple
+                                      column-1
+                                      :options='medicalHistoryList'
+                                      v-model:value='form.medicalHistory'
+                                      :fieldNames="{text: 'name', value: 'value'}"
+                                      @change='e => form.medicalHistory = checkboxReject(form.medicalHistory, [99])'
+                            />
+                        </div>
+                    </div>
+                </van-popup>
+            </div>
+
+            <div v-if='familyHistoryShow'>
+                <div class='label-title mt-5'>家族史(可多选)</div>
+                <van-field class='checkbox-his'>
+                    <template #input>
+                        <van-checkbox-group v-model='form.familyHistory' class='w-full'>
+                            <div v-for='(item, index) in familyHistoryInfoList' :key='item.value'>
+                                <div
+                                    @click='toggle(index)'
+                                    class='form-input input-back mt-2 flex justify-between'
+                                    :style="{borderRadius: form.familyHistory.includes(item.value) && [1, 3, 5, 7].includes(item.value) ? '8px 8px 0px 0px ': '8px'}"
+                                >
+                                    <div>{{ item.name }}</div>
+                                    <div>
+                                        <van-checkbox
+                                            :name='item.value'
+                                            :ref='el => checkboxRefs[index] = el'
+                                            @click.stop='toggle(index)'
+                                        />
+                                    </div>
+                                </div>
+                                <div v-for='(item2, index2) in familyHistoryList'>
+                                    <div
+                                        v-if='form.familyHistory.includes(item.value) && item2.diseaseType == item.value'
+                                        class='relation-bis'>
+                                        <div class='top-title'>以下亲人若存在{{ item2.diseaseTypeName }}病史,请填写发病年龄</div>
+                                        <div class='flex flex-wrap justify-between gap-x-2.5 gap-y-2.5'>
+                                            <div v-for='(item1,index1) in item2.relativeAgeList' :key='index1'
+                                                 style='width: 48%;'>
+                                                <div>
+                                                    <van-field
+                                                        colon
+                                                        label-width='42px'
+                                                        v-model='item1.age'
+                                                        :label='item1.relativeTypeName'
+                                                        placeholder='请输入'
+                                                        style='padding: 8px;border-radius: 4px'
+                                                    >
+                                                        <template #extra>
+                                                            <span class='mr-2'>岁</span>
+                                                        </template>
+                                                    </van-field>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+
+
+                        </van-checkbox-group>
+                    </template>
+                </van-field>
+            </div>
+
+            <div v-if='highShow'>
+                <div class='label-title mt-5'>身高</div>
+                <van-field
+                    v-model='form.height'
+                    clear-icon
+                    placeholder='请输入10~300之间数字,允许1位小数'
+                    class='input-back mt-2 form-input'
+                    :rules='rules.height'
+                >
+                    <template #extra>
+                        <span class='mr-2'>cm</span>
+                    </template>
+                </van-field>
+            </div>
+            <div v-if='highShow'>
+                <div class='label-title mt-5'>体重</div>
+                <van-field
+                    v-model='form.weight'
+                    clear-icon
+                    placeholder='请输入20~500之间数字,允许2位小数'
+                    class='input-back mt-2 form-input'
+                    :rules='rules.weight'
+                >
+                    <template #extra>
+                        <span class='mr-2'>kg</span>
+                    </template>
+                </van-field>
+            </div>
+            <div v-if='highShow'>
+                <div class='no-req-label mt-5'>BMI</div>
+                <van-field
+                    v-model='form.bmi'
+                    readonly
+                    placeholder='请输入'
+                    class='input-back mt-2 form-input'
+                >
+                    <template #extra>
+                        <span class='mr-2'>kg/m²</span>
+                    </template>
+                </van-field>
+            </div>
+            <div v-if='waistShow'>
+                <div class='label-title mt-5'>腰围</div>
+                <van-field
+                    v-model='form.waistline'
+                    clear-icon
+                    placeholder='请输入10~150之间数字,允许1位小数'
+                    class='input-back mt-2 form-input'
+                    :rules='rules.waistline'
+                >
+                    <template #extra>
+                        <span class='mr-2'>cm</span>
+                    </template>
+                </van-field>
+            </div>
+
+            <div v-if='exerciseShow'>
+                <div class='label-title mt-5'>锻炼频率</div>
+                <van-field
+                    v-model='form.exerciseFrequencyName'
+                    readonly
+                    is-link
+                    placeholder='请选择'
+                    class='input-back mt-2 form-input'
+                    @click='showExerciseFrequency = true'
+                    :rules='rules.exerciseFrequencyName'
+                >
+                    <template #input>
+                        <span class='text-end' v-if='form.exerciseFrequencyName'>{{ form.exerciseFrequencyName }}</span>
+                        <span class='text-end' v-if='!form.exerciseFrequencyName' style='color: #dfdfe1'>请选择</span>
+                    </template>
+                </van-field>
+                <van-popup v-model:show='showExerciseFrequency' position='bottom'>
+                    <div class='p-4' style='height: 100%'>
+                        <div class='flex justify-between items-center mb-4 pop-title'>
+                            <div class='greyColor' @click='showExerciseFrequency = false' style='font-weight: 400'>
+                                取消
+                            </div>
+                            <div>锻炼频率(仅单选)</div>
+                            <div></div>
+                        </div>
+                        <div style='height: 80%;overflow: auto'>
+                            <CheckBtn clearable
+                                column-1
+                                :options='exerciseFrequencyList'
+                                v-model:value='form.exerciseFrequency'
+                                :fieldNames="{text: 'name', value: 'value'}"
+                                @change='exerciseFrequencyConfirm'
+                            />
+                        </div>
+                    </div>
+                </van-popup>
+
+                <div v-if='[1, 2, 3, 5, 6].includes(form.exerciseFrequency)'>
+                    <div class='no-req-label mt-5'>每次锻炼时间</div>
+                    <van-field
+                        v-model='form.everyExercise'
+                        clear-icon
+                        placeholder='请输入'
+                        class='input-back mt-2 form-input'
+                    >
+                        <template #extra>
+                            <span class='mr-2'>分钟</span>
+                        </template>
+                    </van-field>
+
+                    <div class='no-req-label mt-5'>可达到中等及以上运动强度</div>
+                    <van-field
+                        class='no-back form-input mt-2'
+                        style='padding: 0'
+                    >
+                        <template #input>
+                            <van-radio-group v-model='form.mediumStrength'
+                                             direction='horizontal'
+                                             shape="dot"
+                                             class='w-full doc-radio-group'>
+                                <van-radio v-for="item in store.getDict('CP00120')"
+                                           :key='item.value' :name='item.value'
+                                           label-position='left'>{{ item.name }}
+                                </van-radio>
+                            </van-radio-group>
+                        </template>
+                    </van-field>
+                </div>
+            </div>
+
+            <div v-if='womanMHShow'>
+                <div class='no-req-label mt-5'>女性病史</div>
+                <van-field
+                    v-model='form.femaleMedicalHistoryName'
+                    readonly
+                    is-link
+                    placeholder='请选择'
+                    class='input-back mt-2 form-input'
+                    @click='showFemaleMedicalHistory= true'
+                >
+                    <template #input>
+                        <span class='text-end' v-if='form.femaleMedicalHistoryName'>{{ form.femaleMedicalHistoryName
+                            }}</span>
+                        <span class='text-end' v-if='!form.femaleMedicalHistoryName' style='color: #dfdfe1'>请选择</span>
+                    </template>
+                </van-field>
+                <van-popup v-model:show='showFemaleMedicalHistory' position='bottom'>
+                    <div class='p-4' style='height: 100%'>
+                        <div class='flex justify-between items-center mb-4 pop-title'>
+                            <div class='greyColor' @click='showFemaleMedicalHistory = false' style='font-weight: 400'>
+                                取消
+                            </div>
+                            <div>女性病史(可多选)</div>
+                            <div class='blueColor' @click='femaleMedicalHistoryConfirm'>确定</div>
+                        </div>
+                        <div style='height: 80%;overflow: auto'>
+                            <CheckBtn multiple
+                                      column-1
+                                      :options="store.getDict('CP00127')"
+                                      v-model:value='form.femaleMedicalHistory'
+                                      :fieldNames="{text: 'name', value: 'value'}"
+                            />
+                        </div>
+                    </div>
+                </van-popup>
+            </div>
+            <div v-if='medicationHShow'>
+                <div class='no-req-label mt-5'>用药史</div>
+                <van-field
+                    v-model='form.medicineHistoryName'
+                    readonly
+                    is-link
+                    placeholder='请选择'
+                    class='input-back mt-2 form-input'
+                    @click='showMedicineHistory= true'
+                >
+                    <template #input>
+                        <span class='text-end' v-if='form.medicineHistoryName'>{{ form.medicineHistoryName }}</span>
+                        <span class='text-end' v-if='!form.medicineHistoryName' style='color: #dfdfe1'>请选择</span>
+                    </template>
+                </van-field>
+                <van-popup v-model:show='showMedicineHistory' position='bottom'>
+                    <div class='p-4' style='height: 100%'>
+                        <div class='flex justify-between items-center mb-4 pop-title'>
+                            <div class='greyColor' @click='showMedicineHistory = false' style='font-weight: 400'>取消
+                            </div>
+                            <div>用药史(可多选)</div>
+                            <div class='blueColor' @click='medicineHistoryConfirm'>确定</div>
+                        </div>
+                        <div style='height: 80%;overflow: auto'>
+                            <CheckBtn multiple
+                                      column-1
+                                      :options='medicineHistoryList'
+                                      v-model:value='form.medicineHistory'
+                                      :fieldNames="{text: 'name', value: 'value'}"
+                            />
+                        </div>
+                    </div>
+                </van-popup>
+            </div>
+
+            <div v-if='triglycerideShow'>
+                <div class='no-req-label mt-5'>高密度脂蛋白胆固醇</div>
+                <van-field
+                    v-model='form.hdlCholesterin'
+                    clear-icon
+                    placeholder='请输入'
+                    class='input-back mt-2 form-input'
+                >
+                    <template #extra>
+                        <span class='mr-2'>mmol/L</span>
+                    </template>
+                </van-field>
+            </div>
+            <div v-if='triglycerideShow'>
+                <div class='no-req-label mt-5'>甘油三酯</div>
+                <van-field
+                    v-model='form.triglyceride'
+                    clear-icon
+                    placeholder='请输入'
+                    class='input-back mt-2 form-input'
+                >
+                    <template #extra>
+                        <span class='mr-2'>mmol/L</span>
+                    </template>
+                </van-field>
+            </div>
+            <div v-if='triglycerideShow'>
+                <div class='no-req-label mt-5'>总胆固醇</div>
+                <van-field
+                    v-model='form.serumCholesterin'
+                    clear-icon
+                    placeholder='请输入'
+                    class='input-back mt-2 form-input'
+                >
+                    <template #extra>
+                        <span class='mr-2'>mmol/L</span>
+                    </template>
+                </van-field>
+            </div>
+
+            <div v-if='babyMHShow'>
+                <div class='no-req-label mt-5'>有害物质接触或婴幼儿时期病史</div>
+                <van-field
+                    v-model='form.touchHarmfulName'
+                    readonly
+                    is-link
+                    placeholder='请选择'
+                    class='input-back mt-2 form-input'
+                    @click='showTouchHarmful= true'
+                >
+                    <template #input>
+                        <span class='text-end' v-if='form.touchHarmfulName'>{{ form.touchHarmfulName }}</span>
+                        <span class='text-end' v-if='!form.touchHarmfulName' style='color: #dfdfe1'>请选择</span>
+                    </template>
+                </van-field>
+                <van-popup v-model:show='showTouchHarmful' position='bottom'>
+                    <div class='p-4' style='height: 100%'>
+                        <div class='flex justify-between items-center mb-4 pop-title'>
+                            <div class='greyColor' @click='showTouchHarmful = false' style='font-weight: 400'>取消</div>
+                            <div>可多选</div>
+                            <div class='blueColor' @click='touchHarmfulConfirm'>确定</div>
+                        </div>
+                        <div style='height: 80%;overflow: auto'>
+                            <CheckBtn multiple
+                                      column-1
+                                      :options="store.getDict('CP00130')"
+                                      v-model:value='form.touchHarmful'
+                                      :fieldNames="{text: 'name', value: 'value'}"
+                            />
+                        </div>
+                    </div>
+                </van-popup>
+            </div>
+
+            <div v-if='bloodPressureShow'>
+                <div class='flex items-center justify-between tip-box mt-5'>
+                    <div class='doc-form-label shrink-0'>现测血压(mmHg)</div>
+                    <BloodPressurePanel :pressureObj='pressureObj' />
+                </div>
+                <div class='sub-text my-3'>第一次</div>
+                <table class='w-full mb-2'>
+                    <tr class='sub-text'>
+                        <td>收缩压(高压)</td>
+                        <td style='width: 1em'></td>
+                        <td>舒张压(低压)</td>
+                    </tr>
+                    <tr>
+                        <td class='flex items-center'>
+                            <van-field v-model='form.pressureOneSbp'
+                                       name='pressureOneSbp'
+                                       label=''
+                                       type='number'
+                                       placeholder='60~300,整数'
+                                       maxlength='10'
+                                       :rules='rules.pressureDbp'
+                                       error-message-align='left'
+                                       input-align='left'
+                                       class='input-back form-input'
+                            />
+                        </td>
+                        <td class='text-center'>
+                            <span class='divide'>/</span>
+                        </td>
+                        <td>
+                            <van-field v-model='form.pressureOneDbp'
+                                       name='pressureOneDbp'
+                                       label=''
+                                       type='number'
+                                       placeholder='30~300,整数'
+                                       maxlength='10'
+                                       :rules='rules.pressureSbp'
+                                       error-message-align='left'
+                                       input-align='left'
+                                       class='input-back form-input'
+                            />
+                        </td>
+                    </tr>
+                </table>
+                <BloodPressureBt :pressureObj='pressureObj' @getValue='setPressureOne'>第一次测量</BloodPressureBt>
+                <div class='sub-text my-3'>第二次</div>
+                <table class='w-full mb-2'>
+                    <tr class='sub-text'>
+                        <td>收缩压(高压)</td>
+                        <td style='width: 1em'></td>
+                        <td>舒张压(低压)</td>
+                    </tr>
+                    <tr>
+                        <td>
+                            <van-field v-model='form.pressureTwoSbp'
+                                       name='pressureTwoSbp'
+                                       label=''
+                                       type='number'
+                                       placeholder='60~300,整数'
+                                       maxlength='10'
+                                       :rules='rules.pressureDbp'
+                                       error-message-align='left'
+                                       input-align='left'
+                                       class='input-back form-input'
+                            />
+                        </td>
+
+                        <td class='text-center'>
+                            <span class='divide'>/</span>
+                        </td>
+                        <td>
+                            <van-field v-model='form.pressureTwoDbp'
+                                       name='pressureTwoDbp'
+                                       label=''
+                                       type='number'
+                                       placeholder='30~300,整数'
+                                       maxlength='10'
+                                       :rules='rules.pressureSbp'
+                                       error-message-align='left'
+                                       input-align='left'
+                                       class='input-back form-input'
+                            />
+                        </td>
+                    </tr>
+                </table>
+                <BloodPressureBt :pressureObj='pressureObj' @getValue='setPressureTwo'>第二次测量</BloodPressureBt>
+            </div>
+
+            <div v-if='eatHabitShow'>
+                <div class='label-title mt-5'>饮食习惯</div>
+                <van-field
+                    v-model='form.dietaryHabitName'
+                    readonly
+                    is-link
+                    placeholder='请选择'
+                    class='input-back mt-2 form-input'
+                    @click='showDietaryHabit= true'
+                    :rules='rules.dietaryHabitName'
+                >
+                    <template #input>
+                        <span class='text-end' v-if='form.dietaryHabitName'>{{ form.dietaryHabitName }}</span>
+                        <span class='text-end' v-if='!form.dietaryHabitName' style='color: #dfdfe1'>请选择</span>
+                    </template>
+                </van-field>
+                <van-popup v-model:show='showDietaryHabit' position='bottom'>
+                    <div class='p-4' style='height: 100%'>
+                        <div class='flex justify-between items-center mb-4 pop-title'>
+                            <div class='greyColor' @click='showDietaryHabit = false' style='font-weight: 400'>取消</div>
+                            <div>饮食习惯(可多选)</div>
+                            <div class='blueColor' @click='dietaryHabitConfirm'>确定</div>
+                        </div>
+                        <div style='height: 80%;overflow: auto'>
+                            <CheckBtn multiple
+                                      column-1
+                                      :options="store.getDict('CP00131')"
+                                      v-model:value='form.dietaryHabit'
+                                      :fieldNames="{text: 'name', value: 'value'}"
+                            />
+                        </div>
+                    </div>
+                </van-popup>
+            </div>
+
+            <div v-if='drinkShow'>
+                <div class='label-title mt-5'>饮酒情况</div>
+                <div class='bg-fa mt-2'>
+                    <div class='label-title lh-24'>饮酒频率</div>
+                    <van-field
+                        class='form-input mt-2'
+                        style='padding: 0;background: #FAFAFA'
+                        :rules='rules.drinkFrequency'
+                    >
+                        <template #input>
+                            <van-radio-group v-model='form.drinkFrequency'
+                                             direction='horizontal'
+                                             shape="dot"
+                                             class='w-full doc-radio-group-now'
+                                             @change='drinkFrequencyChange'
+                            >
+                                <van-radio v-for="item in store.getDict('CP00132')"
+                                           :key='item.value' :name='item.value'
+                                           label-position='left'>{{ item.name }}
+                                </van-radio>
+                            </van-radio-group>
+                        </template>
+                    </van-field>
+                </div>
+
+                <div class='bg-f5 mt-2' v-if='[2,3,4].includes(form.drinkFrequency)'>
+                    <div class='label-title lh-24'>饮酒种类</div>
+                    <van-field
+                        class='form-input mt-2'
+                        style='padding: 0;background: #F5F5F5'
+                        :rules='rules.drinkKind'
+                    >
+                        <template #input>
+                            <div class='flex justify-between gap-x-2.5 w-full' style='background: #F5F5F5'>
+                                <div v-for="(item, index) in store.getDict('CP00133')" :key='item.value' class='bg-ff'>
+                                    <div
+                                        @click='toggleDrink(item)'
+                                        :class="['form-input', 'flex', 'justify-between', this.form.drinkKind.includes(item.value)  ? 'active-drinkKind' : '' ]"
+                                    >
+                                        <div>{{ item.name }}</div>
+                                    </div>
+                                </div>
+
+                            </div>
+                        </template>
+                    </van-field>
+                    <div class='mt-2' v-if='form?.drinkKind?.includes(99)'>
+                        <van-field
+                            v-model='form.drinkKindOther'
+                            clear-icon
+                            placeholder='请输入饮酒种类名称'
+                            class=' mt-2 form-input'
+                        >
+                        </van-field>
+                    </div>
+                </div>
+
+                <div class='bg-f5 mt-2' v-if='[2,3,4].includes(form.drinkFrequency)'>
+                    <div class='no-req-label lh-24'>请输入日酒饮量</div>
+                    <div class='flex flex-wrap justify-between gap-x-2.5 gap-y-2.5 mt-2'
+                         v-if='drinkKindCapacityList.length'>
+                        <div v-for='(item,index) in drinkKindCapacityList' :key='index'
+                             style='width: 48%;'>
+                            <div>
+                                <van-field
+                                    colon
+                                    label-width='42px'
+                                    v-model='item.drinkCapacity'
+                                    :label='item.drinkKindName'
+                                    placeholder='请输入'
+                                    style='padding: 8px;border-radius: 4px'
+                                >
+                                    <template #extra>
+                                        <span class='mr-2'>mL</span>
+                                    </template>
+                                </van-field>
+                            </div>
+                        </div>
+                    </div>
+                    <div class='mt-2'>
+                        <van-field
+                            colon
+                            label-width='40%'
+                            v-model='form.dayDrink'
+                            label='平均日饮酒量'
+                            placeholder='请输入'
+                            style='padding: 8px;border-radius: 4px'
+                        >
+                            <template #extra>
+                                <span class='mr-2'>mL</span>
+                            </template>
+                        </van-field>
+                    </div>
+                </div>
+
+                <div class='bg-f5 mt-2' v-if='[2,3,4].includes(form.drinkFrequency)'>
+                    <div class='no-req-label lh-24'>请输入开始饮酒年龄</div>
+                    <van-field
+                        colon
+                        v-model='form.startDrinkAge'
+                        placeholder='请输入'
+                        class='mt-2'
+                        style='padding: 8px;border-radius: 4px'
+                        :rules='rules.startDrinkAge'
+                    >
+                        <template #extra>
+                            <span class='mr-2'>岁</span>
+                        </template>
+                    </van-field>
+                </div>
+
+                <div class='bg-f5 mt-2' v-if='[2,3,4].includes(form.drinkFrequency)'>
+                    <div class='label-title lh-24'>是否戒酒</div>
+                    <van-field
+                        class='form-input mt-2'
+                        style='padding: 0;background: #F5F5F5'
+                        :rules='rules.giveDrink'
+                    >
+                        <template #input>
+                            <van-radio-group v-model='form.giveDrink'
+                                             direction='horizontal'
+                                             shape="dot"
+                                             class='w-full doc-radio-group-now'
+                                             style='background: #F5F5F5'
+                            >
+                                <van-radio v-for="item in store.getDict('CP00120')"
+                                           :key='item.value' :name='item.value'
+                                           label-position='left'>{{ item.name }}
+                                </van-radio>
+                            </van-radio-group>
+                        </template>
+                    </van-field>
+                </div>
+
+                <div class='bg-f5 mt-2' v-if='[2,3,4].includes(form.drinkFrequency) && form.giveDrink == 1'>
+                    <div class='no-req-label lh-24'>请输入开始戒酒年龄</div>
+                    <van-field
+                        colon
+                        v-model='form.giveDrinkStart'
+                        placeholder='请输入'
+                        class='mt-2'
+                        style='padding: 8px;border-radius: 4px'
+                        :rules='rules.giveDrinkStart'
+                    >
+                        <template #extra>
+                            <span class='mr-2'>岁</span>
+                        </template>
+                    </van-field>
+                </div>
+            </div>
+
+            <div v-if='smokeShow'>
+                <div class='label-title mt-5'>吸烟情况</div>
+
+                <div class='bg-fa mt-2'>
+                    <div class='label-title lh-24'>吸烟情况</div>
+                    <van-field
+                        class='form-input mt-2'
+                        style='padding: 0;background: #FAFAFA'
+                        :rules='rules.isSmoking'
+                    >
+                        <template #input>
+                            <van-radio-group v-model='form.isSmoking'
+                                             direction='horizontal'
+                                             shape="dot"
+                                             class='w-full doc-radio-group-now'
+                            >
+                                <van-radio v-for="item in store.getDict('CP00162')"
+                                           :key='item.value' :name='item.value'
+                                           label-position='left'>{{ item.name }}
+                                </van-radio>
+                            </van-radio-group>
+                        </template>
+                    </van-field>
+                </div>
+                <div class='bg-f5 mt-2' v-if='form.isSmoking === 3'>
+                    <div class='label-title lh-24'>日吸烟量</div>
+                    <van-field
+                        colon
+                        v-model='form.daySmoking'
+                        placeholder='请输入'
+                        class='mt-2'
+                        style='padding: 8px;border-radius: 4px'
+                        :rules='rules.daySmoking'
+                    >
+                    </van-field>
+                </div>
+                <div class='bg-f5 mt-2' v-if='form.isSmoking === 3'>
+                    <div class='label-title lh-24'>开始吸烟年龄</div>
+                    <van-field
+                        colon
+                        v-model='form.startSmoking'
+                        placeholder='请输入'
+                        class='mt-2'
+                        style='padding: 8px;border-radius: 4px'
+                        :rules='rules.startSmoking'
+                    >
+                        <template #extra>
+                            <span class='mr-2'>岁</span>
+                        </template>
+                    </van-field>
+                </div>
+
+                <div class='bg-f5 mt-2' v-if='form.isSmoking === 2'>
+                    <div class='label-title lh-24'>戒烟年龄</div>
+                    <van-field
+                        colon
+                        v-model='form.giveSmokingAge'
+                        placeholder='请输入'
+                        class='mt-2'
+                        style='padding: 8px;border-radius: 4px'
+                        :rules='rules.giveSmokingAge'
+                    >
+                        <template #extra>
+                            <span class='mr-2'>岁</span>
+                        </template>
+                    </van-field>
+                </div>
+
+                <div class='bg-f5 mt-2' v-if='form.diseaseArrays?.includes(1)'>
+                    <div class='label-title lh-24'>经常吸入二手烟(家中有吸烟者,且经常吸入二手烟)</div>
+                    <van-field
+                        class='form-input mt-2'
+                        style='padding: 0;background: #F5F5F5'
+                        :rules='rules.secondSmoking'
+                    >
+                        <template #input>
+                            <van-radio-group v-model='form.secondSmoking'
+                                             direction='horizontal'
+                                             shape="dot"
+                                             class='w-full doc-radio-group-now'
+                                             style='background: #F5F5F5'
+                            >
+                                <van-radio v-for="item in store.getDict('CP00120')"
+                                           :key='item.value' :name='item.value'
+                                           label-position='left'>{{ item.name }}
+                                </van-radio>
+                            </van-radio-group>
+                        </template>
+                    </van-field>
+                </div>
+            </div>
+
+            <div v-if='blackSpinySkinShow'>
+                <div class='no-req-label mt-5'>黑棘皮病</div>
+                <van-field
+                    class='no-back form-input mt-2'
+                    style='padding: 0'
+                >
+                    <template #input>
+                        <van-radio-group v-model='form.blackSpinySkin'
+                                         direction='horizontal'
+                                         shape="dot"
+                                         class='w-full doc-radio-group'>
+                            <van-radio v-for="item in store.getDict('CP00134')"
+                                       :key='item.value' :name='item.value'
+                                       label-position='left'>{{ item.name }}
+                            </van-radio>
+                        </van-radio-group>
+                    </template>
+                </van-field>
+            </div>
+
+            <div v-if='mentalTensionShow'>
+                <div class='no-req-label mt-5'>长期精神紧张</div>
+                <van-field
+                    class='no-back form-input mt-2'
+                    style='padding: 0'
+                >
+                    <template #input>
+                        <van-radio-group v-model='form.mentalTension'
+                                         direction='horizontal'
+                                         shape="dot"
+                                         class='w-full doc-radio-group'>
+                            <van-radio v-for="item in store.getDict('CP00135')"
+                                       :key='item.value' :name='item.value'
+                                       label-position='left'>{{ item.name }}
+                            </van-radio>
+                        </van-radio-group>
+                    </template>
+                </van-field>
+            </div>
+
+            <div v-if='xanthomaShow'>
+                <div class='no-req-label mt-5'>皮肤或肌腱黄色瘤</div>
+                <van-field
+                    class='no-back form-input mt-2'
+                    style='padding: 0'
+                >
+                    <template #input>
+                        <van-radio-group v-model='form.xanthoma'
+                                         direction='horizontal'
+                                         shape="dot"
+                                         class='w-full doc-radio-group'>
+                            <van-radio v-for="item in store.getDict('CP00135')"
+                                       :key='item.value' :name='item.value'
+                                       label-position='left'>{{ item.name }}
+                            </van-radio>
+                        </van-radio-group>
+                    </template>
+                </van-field>
+            </div>
+
+            <div v-if='tendoIncrassationShow'>
+                <div class='no-req-label mt-5'>跟腱增厚</div>
+                <van-field
+                    class='no-back form-input mt-2'
+                    style='padding: 0'
+                >
+                    <template #input>
+                        <van-radio-group v-model='form.tendoIncrassation'
+                                         direction='horizontal'
+                                         shape="dot"
+                                         class='w-full doc-radio-group'>
+                            <van-radio v-for="item in store.getDict('CP00120')"
+                                       :key='item.value' :name='item.value'
+                                       label-position='left'>{{ item.name }}
+                            </van-radio>
+                        </van-radio-group>
+                    </template>
+                </van-field>
+            </div>
+
+            <div v-if='riskScoreShow'>
+                <div class='no-req-label mt-5'>中国糖尿病风险评分</div>
+                <van-field
+                    class='no-back form-input mt-2'
+                    style='padding: 0'
+                >
+                    <template #input>
+                        <van-radio-group v-model='riskScoreInfo'
+                                         direction='horizontal'
+                                         shape="dot"
+                                         class='w-full doc-radio-group'>
+                            <van-radio v-for="item in store.getDict('CP00136')"
+                                       :key='item.value' :name='item.value'
+                                       label-position='left'>{{ item.name }}
+                            </van-radio>
+                        </van-radio-group>
+                    </template>
+                </van-field>
+            </div>
+
+            <div>
+                <div class='no-req-label mt-5'>知情同意书</div>
+                <DocImageUpload
+                    description='支持上传jpg、png、jpeg文件,大小请在10M以内'
+                    lengthMessage='抱歉,最多可上传6个文件。'
+                    :imageData='[]'
+                    @change='(ids, option) => form.informedConsent = ids'
+                    :maxLength='6'
+                    class='mt-2'
+                />
+            </div>
+
+            <div>
+                <div class='label-title lh-24'>专病高危评估结果</div>
+                <van-field
+                    class='form-input mt-2'
+                    style='padding: 0'
+                >
+                    <template #input>
+                        <div class='flex  gap-x-2.5 gap-y-2.5 w-full flex-wrap' style='background: #FFFFFF'>
+                            <div v-for="(item, index) in store.getDict('CP00137')" :key='item.value' class='bg-ff'>
+                                <div
+                                    @click='toggleResult(item)'
+                                    :class="['form-input', 'bg-fa', this.specialScreenResultSelect.includes(item.value)  ? 'active-drinkKind' : '' ]"
+                                >
+                                    <div>{{ item.name }}</div>
+                                </div>
+                            </div>
+
+                        </div>
+                    </template>
+                </van-field>
+            </div>
+        </van-form>
+    </div>
+</template>
+
+<script>
+
+import { useStore } from '@/doctor/store'
+import { checkboxReject, fetchDataHandle } from '@/utils/common'
+import CheckBtn from '@/doctor/components/checkBtn/CheckBtn'
+import BloodPressureBt from '@/doctor/components/bloodPressure/BloodPressureBt'
+import BloodPressurePanel from '@/doctor/components/bloodPressure/BloodPressurePanel'
+import DocImageUpload from '@/doctor/components/docImageUpload/DocImageUpload'
+
+const defaultForm = (info = {}) => {
+    const form = {
+        id: undefined,
+        residentInfoId: undefined,
+        diseaseArrays: [],
+        currentAge: undefined,
+        gender: undefined,
+        genderName: undefined,
+        medicalHistory: [],
+        medicalHistoryName: undefined,
+        familyHistory: [],
+        relativeType: undefined,
+        height: undefined,
+        weight: undefined,
+        bmi: undefined,
+        waistline: undefined,
+        exerciseFrequency: undefined,
+        exerciseFrequencyName: undefined,
+        everyExercise: undefined,
+        femaleMedicalHistory: undefined,
+        femaleMedicalHistoryName: undefined,
+        hdlCholesterin: undefined,
+        triglyceride: undefined,
+        serumCholesterin: undefined,
+        touchHarmful: [],
+        touchHarmfulName: undefined,
+        pressureOneSbp: undefined,
+        pressureOneDbp: undefined,
+        pressureTwoSbp: undefined,
+        pressureTwoDbp: undefined,
+        dietaryHabit: [],
+        dietaryHabitName: undefined,
+        drinkFrequency: undefined,
+        startDrinkAge: undefined,
+        drinkKind: [],
+        drinkKindOther: undefined,
+        dayDrink: undefined,
+        giveDrink: undefined,
+        giveDrinkStart: undefined,
+        // 吸烟情况
+        isSmoking: undefined,
+        daySmoking: undefined,
+        startSmoking: undefined,
+        secondSmoking: undefined,
+        // 戒烟年龄
+        giveSmokingAge: undefined,
+        blackSpinySkin: undefined,
+        mentalTension: undefined,
+        xanthoma: undefined,
+        tendoIncrassation: undefined,
+        riskScore: undefined,
+        specialScreenResult: [],
+        hypertensionHighItem: [],
+        diabetesHighItem: [],
+        coronaryHighItem: [],
+        strokeHighItem: [],
+        pulmonaryHighItem: [],
+        nephrosisHighItem: [],
+        dyslipemiaHighItem: [],
+        // 日饮酒量
+        drinkKindCapacityList: [],
+        diseaseRelativeList: [],
+        mediumStrength: undefined,
+        medicineHistory: [],
+        medicineHistoryName: undefined,
+        informedConsent: undefined,
+        isExerciseFive: undefined
+    }
+    Reflect.ownKeys(form).forEach(key => {
+        if (info[key] != undefined) {
+            form[key] = info[key]
+        }
+    })
+    return form
+}
+export default {
+    components: { DocImageUpload, BloodPressurePanel, BloodPressureBt, CheckBtn },
+    props: {
+        info: Object,
+        diseaseArraysInfo: Array
+    },
+    inject: ['pressureObj'],
+    data() {
+        return {
+            store: useStore(),
+            //病史弹窗
+            showMedicalHistory: false,
+            //女性病史
+            showFemaleMedicalHistory: false,
+            //用药史
+            showMedicineHistory: false,
+            //有害物质接触或婴幼儿时期病史
+            showTouchHarmful: false,
+            //饮食习惯
+            showDietaryHabit: false,
+            //锻炼频率
+            showExerciseFrequency: false,
+
+            checkboxRefs: [],
+            checkboxDrinkRefs: [],
+            form: {},
+            formRight: {
+                hypertensionHighItemSelect: [],
+                diabetesHighItemSelect: [],
+                coronaryHighItemSelect: [],
+                strokeHighItemSelect: [],
+                pulmonaryHighItemSelect: [],
+                nephrosisHighItemSelect: [],
+                dyslipemiaHighItemSelect: []
+            },
+            specialScreenResultSelect: [],
+            riskScoreInfo: undefined,
+            // 饮酒种类及饮用量关系
+            drinkKindCapacityList: [],
+            familyHistoryList: [],
+            imageData: [],
+            rules: {
+                diseaseArrays: [{ required: true, message: '请选择' }],
+                medicalHistoryName: [{ required: true, message: '请选择' }],
+                familyHistory: [{ required: true, message: '请选择' }],
+                height: [
+                    { required: true, message: '请输入' },
+                    {
+                        validator: (value, rule) => {
+                            let res = true
+                            const regex = /^\d+(\.\d{1})?$/
+                            if (value && !(Number(value) >= 10 && Number(value) <= 300 && regex.test(Number(value)))) {
+                                res = false
+                            }
+                            return res
+                        },
+                        message: `请输入10到300之间的数字,允许一位小数`
+                    }
+                ],
+                weight: [
+                    { required: true, message: '请输入' },
+                    {
+                        validator: (value, rule) => {
+                            let res = true
+                            const regex = /^\d+(\.\d{1,2})?$/
+                            if (value && !(Number(value) >= 20 && Number(value) <= 500 && regex.test(Number(value)))) {
+                                res = false
+                            }
+                            return res
+                        },
+                        message: `请输入20~500之间数字,允许2位小数`
+                    }
+                ],
+                waistline: [
+                    { required: true, message: '请输入' },
+                    {
+                        validator: (value, rule) => {
+                            let res = true
+                            const regex = /^\d+(\.\d{1})?$/
+                            if (value && !(Number(value) >= 10 && Number(value) <= 150 && regex.test(Number(value)))) {
+                                res = false
+                            }
+                            return res
+                        },
+                        message: `请输入10~150之间数字,允许1位小数`
+                    }
+                ],
+                hdlCholesterin: [{
+                    validator: (value, rule) => {
+                        const regex = /^\d+(\.\d{1,2})?$/
+                        let res = true
+                        if (value && !regex.test(value)) {
+                            res = false
+                        }
+                        return res
+                    },
+                    message: `请输入正确的数字`
+                }],
+                triglyceride: [{
+                    validator: (value, rule) => {
+                        const regex = /^\d+(\.\d{1,2})?$/
+                        let res = true
+                        if (value && !regex.test(value)) {
+                            res = false
+                        }
+                        return res
+                    },
+                    message: `请输入正确的数字`
+                }],
+                serumCholesterin: [{
+                    validator: (value, rule) => {
+                        const regex = /^\d+(\.\d{1,2})?$/
+                        let res = true
+                        if (value && !regex.test(value)) {
+                            res = false
+                        }
+                        return res
+                    },
+                    message: `请输入正确的数字`
+                }],
+                exerciseFrequencyName: [{ required: true, message: '请选择' }],
+                dietaryHabitName: [{ required: true, message: '请选择' }],
+                drinkFrequency: [{ required: true, message: '请选择' }],
+                isSmoking: [{ required: true, message: '请选择' }],
+                specialScreenResult: [{ required: true, message: '请选择' }],
+                secondSmoking: [{ required: true, message: '请选择' }],
+                drinkKind: [{ required: true, message: '请选择' }],
+                startDrinkAge: [{ required: true, message: '请输入' }],
+                giveDrink: [{ required: true, message: '请选择' }],
+                giveDrinkStart: [{ required: true, message: '请输入' }],
+                giveSmokingAge: [{ required: true, message: '请输入' }],
+                startSmoking: [{ required: true, message: '请输入' }],
+                daySmoking: [{ required: true, message: '请输入' }],
+                everyExercise: [{ required: true, message: '请输入' }],
+                mediumStrength: [{ required: true, message: '请选择' }]
+            }
+        }
+    },
+    computed: {
+        //判断年龄显示隐藏
+        ageShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(1) || diseaseArrays.includes(2) || diseaseArrays.includes(3)
+                || diseaseArrays.includes(5) || diseaseArrays.includes(6)) {
+                res = true
+            }
+            return res
+        },
+        //判断性别显示隐藏
+        sexShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(3)) {
+                res = true
+            }
+            return res
+        },
+        //判断病史显示隐藏
+        medicalHistoryShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(1) || diseaseArrays.includes(2) || diseaseArrays.includes(3) || diseaseArrays.includes(4)
+                || diseaseArrays.includes(5) || diseaseArrays.includes(6) || diseaseArrays.includes(7)) {
+                res = true
+            }
+            return res
+        },
+        //判断家族史显示隐藏
+        familyHistoryShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(1) || diseaseArrays.includes(2) || diseaseArrays.includes(3) || diseaseArrays.includes(4)
+                || diseaseArrays.includes(5) || diseaseArrays.includes(6) || diseaseArrays.includes(7)) {
+                res = true
+            }
+            return res
+        },
+        //判断身高、体重、BMI显示隐藏
+        highShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(1) || diseaseArrays.includes(2) || diseaseArrays.includes(4)
+                || diseaseArrays.includes(6) || diseaseArrays.includes(7)) {
+                res = true
+            }
+            return res
+        },
+        //判断腰围显示隐藏
+        waistShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(1) || diseaseArrays.includes(2)) {
+                res = true
+            }
+            return res
+        },
+        //判断锻炼频率显示隐藏
+        exerciseShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(1) || diseaseArrays.includes(2) || diseaseArrays.includes(4)) {
+                res = true
+            }
+            return res
+        },
+        //判断女性病史显示隐藏
+        womanMHShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(2)) {
+                res = true
+            }
+            return res
+        },
+        //判断用药史显示隐藏
+        medicationHShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(2) || diseaseArrays.includes(4) || diseaseArrays.includes(6)) {
+                res = true
+            }
+            return res
+        },
+        //判断高密度脂蛋白胆固醇、甘油三酯、总胆固醇显示隐藏
+        triglycerideShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(2)) {
+                res = true
+            }
+            return res
+        },
+        //判断有害物质接触或婴幼儿时期病史显示隐藏
+        babyMHShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(5)) {
+                res = true
+            }
+            return res
+        },
+        //判断血压显示隐藏
+        bloodPressureShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(1)) {
+                res = true
+            }
+            return res
+        },
+        //判断饮食习惯显示隐藏
+        eatHabitShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(1)) {
+                res = true
+            }
+            return res
+        },
+        //判断饮酒情况显示隐藏
+        drinkShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(1)) {
+                res = true
+            }
+            return res
+        },
+        //判断吸烟情况显示隐藏
+        smokeShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(1) || diseaseArrays.includes(3) || diseaseArrays.includes(4) || diseaseArrays.includes(5) || diseaseArrays.includes(7)) {
+                res = true
+            }
+            return res
+        },
+        //判断黑棘皮病显示隐藏
+        blackSpinySkinShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(2)) {
+                res = true
+            }
+            return res
+        },
+        //判断长期精神紧张显示隐藏
+        mentalTensionShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(1)) {
+                res = true
+            }
+            return res
+        },
+        //判断皮肤或肌腱黄色瘤显示隐藏
+        xanthomaShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(7)) {
+                res = true
+            }
+            return res
+        },
+        //判断跟腱增厚显示隐藏
+        tendoIncrassationShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(7)) {
+                res = true
+            }
+            return res
+        },
+        //判断中国糖尿病风险评分显示隐藏
+        riskScoreShow() {
+            let res = false
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(2)) {
+                res = true
+            }
+            return res
+        },
+        //生成病史选择项
+        medicalHistoryList() {
+            //默认为无
+            let result = []
+            let res = [99]
+            let list = this.store.getDict('CP00125')
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(1)) {
+                let arr = [1, 2, 7]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            if (diseaseArrays.includes(2)) {
+                let arr = [3, 5, 18, 19]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            if (diseaseArrays.includes(3)) {
+                let arr = [1, 2, 7]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            if (diseaseArrays.includes(4)) {
+                let arr = [2, 7, 16, 17]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            if (diseaseArrays.includes(5)) {
+                let arr = [8, 9, 10, 11]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            if (diseaseArrays.includes(6)) {
+                let arr = [1, 2, 3, 5, 12, 13, 14, 15]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            if (diseaseArrays.includes(7)) {
+                let arr = [1, 2, 3, 5]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            res = Array.from(new Set(res))
+            list.forEach(item1 => {
+                res.forEach(item2 => {
+                    if (item1.value == item2) {
+                        result.push(item1)
+                    }
+                })
+            })
+            return result
+        },
+        //生成家族史选择项
+        familyHistoryInfoList() {
+            //默认为无
+            let result = []
+            let res = [9]
+            let list = this.store.getDict('CP00149')
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(1)) {
+                let arr = [2]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            if (diseaseArrays.includes(2)) {
+                let arr = [1]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            if (diseaseArrays.includes(3)) {
+                let arr = [3]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            if (diseaseArrays.includes(4)) {
+                let arr = [4]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            if (diseaseArrays.includes(5)) {
+                let arr = [5]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            if (diseaseArrays.includes(6)) {
+                let arr = [6]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            if (diseaseArrays.includes(7)) {
+                let arr = [7]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            res = Array.from(new Set(res))
+            list.forEach(item1 => {
+                res.forEach(item2 => {
+                    if (item1.value == item2) {
+                        result.push(item1)
+                    }
+                })
+            })
+            return result
+        },
+        //生成用药史选择项
+        medicineHistoryList() {
+            //默认为无
+            let result = []
+            let res = []
+            let list = this.store.getDict('CP00129')
+            const { diseaseArrays = [] } = this.form
+            if (diseaseArrays.includes(2)) {
+                let arr = [1, 2, 3, 4]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            if (diseaseArrays.includes(4)) {
+                let arr = [1]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            if (diseaseArrays.includes(6)) {
+                let arr = [5]
+                res = [
+                    ...res,
+                    ...arr
+                ]
+            }
+            res = Array.from(new Set(res))
+            list.forEach(item1 => {
+                res.forEach(item2 => {
+                    if (item1.value == item2) {
+                        result.push(item1)
+                    }
+                })
+            })
+            return result
+        },
+        //锻炼频率单选list (pc端两个字典,移动端则合为一个字典提交时在分开为两个字段)
+        exerciseFrequencyList() {
+            let res = []
+            let listOne = this.store.getDict(`CP00126`)
+            // let listTwo = this.store.getDict(`CP00163`)
+            let listTwo = [
+                { value: 5, name: '每周5次及以上' },
+                { value: 6, name: '每周不到5次' }
+            ]
+            return res = [...listOne, ...listTwo]
+
+        }
+    },
+    watch: {
+        'info': {
+            handler() {
+                this.initForm()
+            },
+            immediate: true
+        },
+        diseaseArraysInfo: {
+            handler() {
+                this.form.diseaseArrays = this.diseaseArraysInfo
+            }
+        },
+        'form': {
+            handler(now, old) {
+                if (Object.keys(old).length === 0) return
+                this.formChangeHandle()
+            },
+            deep: true
+        },
+        'form.height': {
+            handler() {
+                this.calculateBMI()
+            }
+        },
+        'form.weight': {
+            handler() {
+                this.calculateBMI()
+            }
+        },
+        //右侧高危选项变化监测
+        'formRight': {
+            handler(now, old) {
+                if (Object.keys(old).length === 0) return
+                this.changeFormRightHandle()
+            },
+            deep: true
+        },
+        // 计算日均饮酒量
+        drinkKindCapacityList: {
+            handler(val) {
+                if (!val) {
+                    this.form.dayDrink = 0
+                    return
+                }
+                let num = 0
+                val.forEach(e => {
+                    if (e.drinkKind == 2) { // 啤酒
+                        num = num + e.drinkCapacity * 0.1
+                    } else if (e.drinkKind == 3) { // 红酒
+                        num = num + e.drinkCapacity * 0.25
+                    } else if (e.drinkKind == 4) { // 黄酒
+                        num = num + e.drinkCapacity * 0.2
+                    } else {
+                        num = num + e.drinkCapacity
+                    }
+
+                })
+                this.form.dayDrink = Math.round(num * 100) / 100
+            },
+            deep: true
+        },
+        //家族史
+        'form.familyHistory': {
+            handler() {
+                //非空校验
+                this.familyHistoryReq()
+            }
+        },
+        'familyHistoryList': {
+            handler(now, old) {
+                if (old.length == 0) return
+                if (this.form.diseaseArrays?.includes(3)) {
+                    this.coronaryHigh()
+                }
+                //非空校验
+                this.familyHistoryReq()
+            },
+            deep: true
+        },
+        //病种变更监听
+        'form.diseaseArrays': {
+            handler(val = []) {
+                const option = this.store.getDict('CP00117')
+                this.cleanFormRight()
+                this.cleanMedicalHistory()
+                this.cleanFamilyHistory()
+                this.cleanMedicineHistory()
+                this.changeFamilyHis()
+            },
+            immediate: true
+        }
+    },
+    methods: {
+        checkboxReject,
+        //初始化表单
+        initForm() {
+            this.form = defaultForm(this.info)
+            if (this.info.isExerciseFive == 1) {
+                this.form.exerciseFrequency = 5
+            }
+            if (this.info.isExerciseFive == 2) {
+                this.form.exerciseFrequency = 6
+            }
+            if (!this.info.id) {
+                //是否是引用上一次复筛数据
+                if (this.info.flag && this.info.flag == 'lastInfo') {
+                    this.setUpdateInfo()
+                } else {//新增时
+                    this.form.diseaseArrays = [1, 2, 3, 4, 5, 6, 7]
+                }
+            } else {
+                this.setUpdateInfo()
+            }
+        },
+        //修改时 或者引用上一次复筛数据时赋值
+        setUpdateInfo() {
+            this.formRight.hypertensionHighItemSelect = this.form.hypertensionHighItem || []
+            this.formRight.diabetesHighItemSelect = this.form.diabetesHighItem || []
+            this.formRight.coronaryHighItemSelect = this.form.coronaryHighItem || []
+            this.formRight.strokeHighItemSelect = this.form.strokeHighItem || []
+            this.formRight.pulmonaryHighItemSelect = this.form.pulmonaryHighItem || []
+            this.formRight.nephrosisHighItemSelect = this.form.nephrosisHighItem || []
+            this.formRight.dyslipemiaHighItemSelect = this.form.dyslipemiaHighItem || []
+            this.drinkKindCapacityList = this.form.drinkKindCapacityList || []
+            this.familyHistoryList = this.form.diseaseRelativeList || []
+
+            //修改时若中国糖尿病风险评分、专病高危评估结果存在时 以用户选择的结果为主展示
+            //利用setTimeout改变值的赋值顺序让这两个值在watch事件结束后再被赋值
+            setTimeout(() => {
+                this.riskScoreInfo = this.form.riskScore
+                this.specialScreenResultSelect = this.form.specialScreenResult || [9]
+            }, 0)
+
+            this.imageData = this.info.informedConsentUrl
+        },
+        //表单触发事件
+        formChangeHandle() {
+            //高血压
+            if (this.form.diseaseArrays?.includes(1)) {
+                this.hypertensionHigh()
+            }
+            //糖尿病
+            if (this.form.diseaseArrays?.includes(2)) {
+                this.diabetesHigh()
+                //糖尿病风险
+                this.diabetesHighCompute()
+            }
+            //冠心病
+            if (this.form.diseaseArrays?.includes(3)) {
+                this.coronaryHigh()
+            }
+            //脑卒中
+            if (this.form.diseaseArrays?.includes(4)) {
+                this.strokeHigh()
+            }
+            //慢阻肺
+            if (this.form.diseaseArrays?.includes(5)) {
+                this.pulmonaryHigh()
+            }
+            //慢性肾病
+            if (this.form.diseaseArrays?.includes(6)) {
+                this.nephrosisHigh()
+            }
+            //血脂异常
+            if (this.form.diseaseArrays?.includes(7)) {
+                this.dyslipemiaHigh()
+            }
+        },
+        //右侧高危选项触发事件
+        changeFormRightHandle() {
+            let list = []
+            const {
+                hypertensionHighItemSelect = [],
+                diabetesHighItemSelect = [],
+                coronaryHighItemSelect = [],
+                strokeHighItemSelect = [],
+                pulmonaryHighItemSelect = [],
+                nephrosisHighItemSelect = [],
+                dyslipemiaHighItemSelect = []
+            } = this.formRight
+            //高血压高危选项
+            if (hypertensionHighItemSelect.length >= 3) {
+                list.push(1)
+            }
+            //糖尿病高危选项
+            if (diabetesHighItemSelect.length >= 1) {
+                list.push(2)
+            }
+            //冠心病高危选项
+            if (coronaryHighItemSelect.length >= 3) {
+                list.push(3)
+            }
+            //脑卒中高危选项
+            if (strokeHighItemSelect.length >= 3) {
+                list.push(4)
+            }
+            //慢阻肺高危选项
+            if (pulmonaryHighItemSelect.length >= 1) {
+                list.push(5)
+            }
+            //慢性肾脏病高危选项
+            if (nephrosisHighItemSelect.length >= 2) {
+                list.push(6)
+            }
+            //血脂异常高危选项
+            if (dyslipemiaHighItemSelect.length >= 1) {
+                list.push(7)
+            }
+            //不满足高危病种时默认为无
+            if (!list.length) {
+                list = [9]
+            }
+            list = Array.from(new Set(list))
+            this.specialScreenResultSelect = list
+            // this.form.specialScreenResult = this.specialScreenResultSelect
+        },
+        //清洗右侧高危选项表单
+        cleanFormRight() {
+            if (!this.form.diseaseArrays?.includes(1)) {
+                this.formRight.hypertensionHighItemSelect = []
+            }
+            if (!this.form.diseaseArrays?.includes(2)) {
+                this.formRight.diabetesHighItemSelect = []
+            }
+            if (!this.form.diseaseArrays?.includes(3)) {
+                this.formRight.coronaryHighItemSelect = []
+            }
+            if (!this.form.diseaseArrays?.includes(4)) {
+                this.formRight.strokeHighItemSelect = []
+            }
+            if (!this.form.diseaseArrays?.includes(5)) {
+                this.formRight.pulmonaryHighItemSelect = []
+            }
+            if (!this.form.diseaseArrays?.includes(6)) {
+                this.formRight.nephrosisHighItemSelect = []
+            }
+            if (!this.form.diseaseArrays?.includes(7)) {
+                this.formRight.dyslipemiaHighItemSelect = []
+            }
+        },
+        //清洗病史的选择数据(去掉不存在的病种对应的选项选择)
+        cleanMedicalHistory() {
+            if (!this.form.diseaseArrays.length) {
+                this.form.medicalHistory = []
+            } else {
+                if (this.form.medicalHistory && this.form.medicalHistory.length) {
+                    let res = []
+                    this.medicalHistoryList.forEach(item => {
+                        res.push(item.value)
+                    })
+                    let list = this.form.medicalHistory.filter(item => {
+                            return res.includes(item)
+                        }
+                    ) || []
+                    this.form.medicalHistory = list
+                }
+            }
+
+        },
+        //清洗家族史的选择数据
+        cleanFamilyHistory() {
+            if (!this.form.diseaseArrays.length) {
+                this.form.familyHistory = []
+            } else {
+                if (this.form.familyHistory && this.form.familyHistory.length) {
+                    let res = []
+                    this.familyHistoryInfoList.forEach(item => {
+                        res.push(item.value)
+                    })
+                    let list = this.form.familyHistory.filter(item => {
+                            return res.includes(item)
+                        }
+                    ) || []
+                    this.form.familyHistory = list
+                }
+            }
+        },
+        //清洗用药史的选择数据
+        cleanMedicineHistory() {
+            if (!this.form.diseaseArrays.length) {
+                this.form.medicineHistory = []
+            } else {
+                if (this.form.medicineHistory && this.form.medicineHistory.length) {
+                    let res = []
+                    this.medicineHistoryList.forEach(item => {
+                        res.push(item.value)
+                    })
+                    let list = this.form.medicineHistory.filter(item => {
+                            return res.includes(item)
+                        }
+                    ) || []
+                    this.form.medicineHistory = list
+                }
+            }
+        },
+        changeFamilyHis() {
+            this.form.familyHistory = this.checkboxReject(this.form.familyHistory, [9])
+            let temp = []
+            this.form.familyHistory.forEach((item, index) => {
+                if (item == 1 || item == 3 || item == 5 || item == 7) {
+                    let name = this.store.getDictValue(this.store.getDict('CP00149'), item)
+                    let base = this.familyHistoryList.filter(item1 => item1.diseaseType == item) || []
+                    let obj = {
+                        id_: index + 1,
+                        diseaseTypeName: `${name}`,
+                        diseaseType: item,
+                        selectRelativeType: [],
+                        checkRequired: false,
+                        relativeAgeList: [
+                            {
+                                relativeTypeName: '父亲',
+                                relativeType: 1,
+                                gender: 1,
+                                age: undefined,
+                                inputRequired: false
+                            },
+                            {
+                                relativeTypeName: '母亲',
+                                relativeType: 2,
+                                gender: 2,
+                                age: undefined,
+                                inputRequired: false
+                            },
+                            {
+                                relativeTypeName: '兄弟',
+                                relativeType: 3,
+                                gender: 1,
+                                age: undefined,
+                                inputRequired: false
+                            },
+                            {
+                                relativeTypeName: '姐妹',
+                                relativeType: 4,
+                                gender: 2,
+                                age: undefined,
+                                inputRequired: false
+                            },
+                            {
+                                relativeTypeName: '儿子',
+                                relativeType: 5,
+                                gender: 1,
+                                age: undefined,
+                                inputRequired: false
+                            },
+                            { relativeTypeName: '女儿', relativeType: 6, gender: 2, age: undefined, inputRequired: false }
+                        ]
+                    }
+                    if (base.length) {
+                        obj = base[0]
+                    }
+                    temp.push(obj)
+                }
+            })
+            this.familyHistoryList = temp
+        },
+        calculateBMI() {
+            if (this.form.weight && this.form.height) {
+                let res = this.form.weight / (this.form.height * this.form.height / 100 / 100)
+                this.form.bmi = parseFloat(res.toFixed(1))
+            } else {
+                this.form.bmi = null
+            }
+        },
+        hypertensionHigh() {
+            const {
+                currentAge,
+                height = 0,
+                weight = 0,
+                waistline,
+                familyHistory = [],
+                isSmoking,
+                medicalHistory = [],
+                dietaryHabit = [],
+                pressureOneSbp,
+                pressureOneDbp,
+                pressureTwoSbp,
+                pressureTwoDbp,
+                dayDrink,
+                secondSmoking,
+                gender,
+                exerciseFrequency,
+                everyExercise,
+                mentalTension
+            } = this.form
+            let list = []
+            if (((pressureOneSbp >= 120) || (pressureTwoSbp >= 120)) ||
+                ((pressureOneDbp >= 80) || (pressureTwoDbp >= 80))
+            ) {
+                list.push(1)
+            }
+            if (currentAge >= 45) {
+                list.push(2)
+            }
+            let res = weight / (height * height / 100 / 100)
+            let bmi = parseFloat(res.toFixed(1))
+            if ((bmi >= 24) ||
+                (gender == 2 && waistline >= 85) ||
+                (gender == 1 && waistline >= 90)) {
+                list.push(3)
+            }
+            if (familyHistory.includes(2)) {
+                list.push(4)
+            }
+            if (dietaryHabit.includes(4)) {
+                list.push(5)
+            }
+            if (dayDrink >= 100) {
+                list.push(6)
+            }
+            if (isSmoking == 3 || secondSmoking == 1) {
+                list.push(7)
+            }
+            if (exerciseFrequency == 3 || exerciseFrequency == 4 || everyExercise < 30) {
+                list.push(8)
+            }
+            if (mentalTension == 2) {
+                list.push(9)
+            }
+            if (medicalHistory.includes(7)) {
+                list.push(10)
+            }
+            if (medicalHistory.includes(2)) {
+                list.push(11)
+            }
+            this.formRight.hypertensionHighItemSelect = Array.from(new Set(list))
+        },
+        diabetesHigh() {
+            let list = []
+            const {
+                currentAge,
+                medicalHistory = [],
+                height = 0,
+                weight = 0,
+                waistline,
+                gender,
+                exerciseFrequency,
+                everyExercise,
+                familyHistory = [],
+                femaleMedicalHistory = [],
+                blackSpinySkin,
+                medicineHistory = [],
+                hdlCholesterin,
+                triglyceride
+            } = this.form
+            if (currentAge >= 40) {
+                list.push(1)
+            }
+            if (medicalHistory.includes(19)) {
+                list.push(2)
+            }
+            let res = weight / (height * height / 100 / 100)
+            let bmi = parseFloat(res.toFixed(1))
+            if ((bmi >= 24) ||
+                (gender == 2 && waistline >= 85) ||
+                (gender == 1 && waistline >= 90)) {
+                list.push(3)
+            }
+            if (exerciseFrequency == 3 || exerciseFrequency == 4 || everyExercise < 30) {
+                list.push(4)
+            }
+            if (familyHistory.includes(1)) {
+                list.push(5)
+            }
+            if (femaleMedicalHistory.includes(1)) {
+                list.push(6)
+            }
+            if (femaleMedicalHistory.includes(3)) {
+                list.push(7)
+            }
+            if (blackSpinySkin == 2) {
+                list.push(8)
+            }
+            if (medicalHistory.includes(1) || medicineHistory.includes(1)) {
+                list.push(9)
+            }
+            if ((hdlCholesterin != null && hdlCholesterin < 0.9) || (triglyceride != null && triglyceride > 2.22) || medicineHistory.includes(2)) {
+                list.push(10)
+            }
+            if (medicalHistory.includes(3) || medicalHistory.includes(5)) {
+                list.push(11)
+            }
+            if (medicineHistory.includes(3)) {
+                list.push(12)
+            }
+            if (medicineHistory.includes(4)) {
+                list.push(13)
+            }
+            let socre = this.diabetesHighScore()
+            if (socre >= 25) {
+                list.push(14)
+            }
+            this.formRight.diabetesHighItemSelect = Array.from(new Set(list))
+        },
+        //冠心病高危选择
+        coronaryHigh() {
+            let list = []
+            const { currentAge, gender, isSmoking, medicalHistory = [], familyHistory = [] } = this.form
+            if (gender == 1) {
+                list.push(2)
+                if (currentAge >= 45) {
+                    list.push(1)
+                }
+            }
+            if (gender == 2 && currentAge >= 55) {
+                list.push(1)
+            }
+            if (isSmoking == 3) {
+                list.push(3)
+            }
+            if (medicalHistory.includes(1)) {
+                list.push(4)
+            }
+            if (medicalHistory.includes(2)) {
+                list.push(5)
+            }
+            if (medicalHistory.includes(7)) {
+                list.push(6)
+            }
+            if (familyHistory.includes(3)) {
+                let obj = this.familyHistoryList.filter(item => item.diseaseType == 3)[0] || {}
+                let objList = obj.selectRelativeType || []
+                let listArry = obj?.relativeAgeList || []
+                let flag = 0
+                listArry.forEach(item => {
+                    if (item.gender == 1 && item.age && item.age < 55) {
+                        flag++
+                    }
+                    if (item.gender == 2 && item.age && item.age < 65) {
+                        flag++
+                    }
+                })
+                if (flag > 0 && objList.length) {
+                    list.push(7)
+                }
+            }
+            this.formRight.coronaryHighItemSelect = Array.from(new Set(list))
+        },
+        strokeHigh() {
+            let list = []
+            const {
+                medicalHistory = [],
+                medicineHistory = [],
+                isSmoking,
+                familyHistory = [],
+                exerciseFrequency,
+                everyExercise,
+                height = 0,
+                weight = 0
+            } = this.form
+            if (medicalHistory.includes(1) || medicineHistory.includes(1)) {
+                list.push(1)
+            }
+            if (medicalHistory.includes(16) || medicalHistory.includes(17)) {
+                list.push(2)
+            }
+            if (isSmoking == 3) {
+                list.push(3)
+            }
+            if (medicalHistory.includes(7)) {
+                list.push(4)
+            }
+            if (medicalHistory.includes(2)) {
+                list.push(5)
+            }
+            if (exerciseFrequency == 3 || exerciseFrequency == 4 || everyExercise < 30) {
+                list.push(6)
+            }
+            let res = weight / (height * height / 100 / 100)
+            let bmi = parseFloat(res.toFixed(1))
+            if (bmi >= 26) {
+                list.push(7)
+            }
+            if (familyHistory.includes(4)) {
+                list.push(8)
+            }
+            this.formRight.strokeHighItemSelect = Array.from(new Set(list))
+        },
+        pulmonaryHigh() {
+            let list = []
+            const {
+                currentAge,
+                isSmoking,
+                secondSmoking,
+                medicalHistory = [],
+                familyHistory = [],
+                touchHarmful = []
+            } = this.form
+            if (currentAge >= 35) {
+                list.push(1)
+            }
+            if (isSmoking == 3) {
+                list.push(2)
+            }
+            if (touchHarmful.includes(1)) {
+                list.push(3)
+            }
+            if (medicalHistory.includes(8)) {
+                list.push(4)
+            }
+            if (medicalHistory.includes(11)) {
+                list.push(5)
+            }
+            if (medicalHistory.includes(9)) {
+                list.push(6)
+            }
+            if (medicalHistory.includes(10)) {
+                list.push(7)
+            }
+            if (familyHistory.includes(5)) {
+                list.push(8)
+            }
+            if (touchHarmful.includes(4)) {
+                list.push(9)
+            }
+            if (touchHarmful.includes(2)) {
+                list.push(10)
+            }
+            if (touchHarmful.includes(3)) {
+                list.push(11)
+            }
+            if (touchHarmful.includes(5)) {
+                list.push(12)
+            }
+            if (touchHarmful.includes(6)) {
+                list.push(13)
+            }
+            if (touchHarmful.includes(7)) {
+                list.push(14)
+            }
+            this.formRight.pulmonaryHighItemSelect = Array.from(new Set(list))
+        },
+        nephrosisHigh() {
+            let list = []
+            const {
+                currentAge,
+                familyHistory = [],
+                medicalHistory = [],
+                height = 0,
+                weight = 0,
+                medicineHistory = []
+            } = this.form
+            if (currentAge > 65) {
+                list.push(1)
+            }
+            if (familyHistory.includes(6)) {
+                list.push(2)
+            }
+            if (medicalHistory.includes(2)) {
+                list.push(3)
+            }
+            if (medicalHistory.includes(1)) {
+                list.push(4)
+            }
+            if (medicalHistory.includes(3) || medicalHistory.includes(5)) {
+                list.push(5)
+            }
+            if (medicalHistory.includes(12)) {
+                list.push(6)
+            }
+            let res = weight / (height * height / 100 / 100)
+            let bmi = parseFloat(res.toFixed(1))
+            if (bmi >= 28) {
+                list.push(7)
+            }
+            if (medicalHistory.includes(14) || medicalHistory.includes(15)) {
+                list.push(8)
+            }
+            if (medicineHistory.includes(5)) {
+                list.push(9)
+            }
+            if (medicalHistory.includes(13)) {
+                list.push(10)
+            }
+            this.formRight.nephrosisHighItemSelect = Array.from(new Set(list))
+        },
+        dyslipemiaHigh() {
+            let list = []
+            const {
+                currentAge,
+                gender,
+                medicalHistory = [],
+                height = 0,
+                weight = 0,
+                isSmoking,
+                familyHistory = [],
+                xanthoma,
+                tendoIncrassation
+            } = this.form
+            if (medicalHistory.includes(3) || medicalHistory.includes(5)) {
+                list.push(1)
+            }
+            let res = weight / (height * height / 100 / 100)
+            let bmi = parseFloat(res.toFixed(1))
+            if (medicalHistory.includes(1) || medicalHistory.includes(2) || bmi >= 28 || isSmoking == 3) {
+                list.push(2)
+            }
+            if (familyHistory.includes(3) || familyHistory.includes(4) || familyHistory.includes(7)) {
+                list.push(3)
+            }
+            if (xanthoma == 2) {
+                list.push(4)
+            }
+            if (tendoIncrassation == 1) {
+                list.push(5)
+            }
+            this.formRight.dyslipemiaHighItemSelect = Array.from(new Set(list))
+        },
+
+        diabetesHighCompute() {
+            let score = this.diabetesHighScore()
+            if (score < 25) {
+                this.riskScoreInfo = 2
+            }
+            if (score >= 25) {
+                this.riskScoreInfo = 1
+            }
+        },
+
+        //糖尿病风险评分
+        diabetesHighScore() {
+            let total = 0
+            const {
+                currentAge,
+                height = 0,
+                weight = 0,
+                waistline,
+                gender,
+                familyHistory = [],
+                pressureOneSbp,
+                pressureTwoSbp
+            } = this.form
+            //年龄分数
+            if (currentAge >= 20 && currentAge <= 24) {
+                total += 0
+            }
+            if (currentAge >= 25 && currentAge <= 34) {
+                total += 4
+            }
+            if (currentAge >= 35 && currentAge <= 39) {
+                total += 8
+            }
+            if (currentAge >= 40 && currentAge <= 44) {
+                total += 11
+            }
+            if (currentAge >= 45 && currentAge <= 49) {
+                total += 12
+            }
+            if (currentAge >= 50 && currentAge <= 54) {
+                total += 13
+            }
+            if (currentAge >= 55 && currentAge <= 59) {
+                total += 15
+            }
+            if (currentAge >= 60 && currentAge <= 64) {
+                total += 16
+            }
+            if (currentAge >= 65 && currentAge <= 74) {
+                total += 18
+            }
+            //体质分数
+            let res1 = weight / (height * height / 100 / 100)
+            let bmi = parseFloat(res1.toFixed(1))
+            if (bmi < 22) {
+                total += 0
+            }
+            if (bmi >= 22 && bmi <= 23.9) {
+                total += 1
+            }
+            if (bmi >= 24 && bmi <= 29.9) {
+                total += 3
+            }
+            if (bmi >= 30) {
+                total += 5
+            }
+            //腰围分数 以及性别分数
+            //男性
+            if (gender == 1) {
+                total += 2
+                if (waistline < 75) {
+                    total += 0
+                }
+                if (waistline >= 75 && waistline <= 79.9) {
+                    total += 3
+                }
+                if (waistline >= 80 && waistline <= 84.9) {
+                    total += 5
+                }
+                if (waistline >= 85 && waistline <= 89.9) {
+                    total += 7
+                }
+                if (waistline >= 90 && waistline <= 94.9) {
+                    total += 8
+                }
+                if (waistline >= 95) {
+                    total += 10
+                }
+            }
+            //女性
+            if (gender == 2) {
+                total += 0
+                if (waistline < 70) {
+                    total += 0
+                }
+                if (waistline >= 70 && waistline <= 74.9) {
+                    total += 3
+                }
+                if (waistline >= 75 && waistline <= 79.9) {
+                    total += 5
+                }
+                if (waistline >= 80 && waistline <= 84.9) {
+                    total += 7
+                }
+                if (waistline >= 85 && waistline <= 89.9) {
+                    total += 8
+                }
+                if (waistline >= 90) {
+                    total += 10
+                }
+            }
+            //糖尿病家族史
+            if (familyHistory.includes(1)) {
+                total += 6
+            }
+            //收缩压分数(取两次测试结果的最大值)
+            let pressureSbp = pressureTwoSbp || 0
+            let res = Number(pressureOneSbp || 0) - Number(pressureTwoSbp || 0)
+            if (res > 0) {
+                pressureSbp = pressureOneSbp
+            }
+            if (pressureSbp < 110) {
+                total += 0
+            }
+            if (pressureSbp >= 110 && pressureSbp <= 119) {
+                total += 1
+            }
+            if (pressureSbp >= 120 && pressureSbp <= 129) {
+                total += 3
+            }
+            if (pressureSbp >= 130 && pressureSbp <= 139) {
+                total += 6
+            }
+            if (pressureSbp >= 140 && pressureSbp <= 149) {
+                total += 7
+            }
+            if (pressureSbp >= 150 && pressureSbp <= 159) {
+                total += 8
+            }
+            if (pressureSbp >= 160) {
+                total += 10
+            }
+            return total
+
+        },
+        //家族史 非空校验
+        familyHistoryReq() {
+            let flag = 0
+            // this.familyHistoryList.forEach(item => {
+            //     let list = item.selectRelativeType || []
+            //     if (!item.selectRelativeType.length) {
+            //         item.checkRequired = true
+            //         flag++
+            //     } else {
+            //         item.checkRequired = false
+            //     }
+            //     item.relativeAgeList.forEach(item1 => {
+            //         if (list.includes(item1.relativeType) && !item1.age) {
+            //             item1.inputRequired = true
+            //             flag++
+            //         } else {
+            //             item1.inputRequired = false
+            //         }
+            //         if (!list.includes(item1.relativeType)) {
+            //             item1.age = undefined
+            //         }
+            //     })
+            // })
+            return flag
+        },
+        // 饮酒种类变化
+        drinkKindChange(val = [], option) {
+            // console.log(val, option)
+            this.drinkKindCapacityList = val.map(e => {
+                const item = this.drinkKindCapacityList.find(i => i.drinkKind == e) || {}
+                return {
+                    drinkKind: e,
+                    drinkKindName: this.store.getDictValue('CP00133', e),
+                    drinkCapacity: item.drinkCapacity || 0
+                }
+            })
+        },
+        drinkFrequencyChange() {
+            const val = this.form.drinkFrequency
+            if (!val || val == 1) {
+                this.drinkKindCapacityList = []
+            }
+        },
+
+        //锻炼频率弹窗确认选择
+        exerciseFrequencyConfirm() {
+            this.exerciseFrequencyList.forEach(item => {
+                if (item.value == this.form.exerciseFrequency) {
+                    this.form.exerciseFrequencyName = item.name
+                }
+            })
+            this.showExerciseFrequency = false
+        },
+        //病史弹窗确认选择
+        medicalHistoryConfirm() {
+            let res = []
+            this.medicalHistoryList.forEach(item => {
+                let selected = this.form.medicalHistory.filter(i => i == item.value)
+                if (selected && selected.length) {
+                    res.push(item.name)
+                }
+            })
+            this.form.medicalHistoryName = res.join()
+            this.showMedicalHistory = false
+        },
+        //女性病史弹窗确认选择
+        femaleMedicalHistoryConfirm() {
+            let res = []
+            this.store.getDict('CP00127').forEach(item => {
+                let selected = this.form.femaleMedicalHistory.filter(i => i == item.value)
+                if (selected && selected.length) {
+                    res.push(item.name)
+                }
+            })
+            this.form.femaleMedicalHistoryName = res.join()
+            this.showFemaleMedicalHistory = false
+        },
+        //用药史弹窗确认选择
+        medicineHistoryConfirm() {
+            let res = []
+            this.medicineHistoryList.forEach(item => {
+                let selected = this.form.medicineHistory.filter(i => i == item.value)
+                if (selected && selected.length) {
+                    res.push(item.name)
+                }
+            })
+            this.form.medicineHistoryName = res.join()
+            this.showMedicineHistory = false
+        },
+        //有害物质接触或婴幼儿时期病史弹窗确认选择
+        touchHarmfulConfirm() {
+            let res = []
+            this.store.getDict('CP00130').forEach(item => {
+                let selected = this.form.touchHarmful.filter(i => i == item.value)
+                if (selected && selected.length) {
+                    res.push(item.name)
+                }
+            })
+            this.form.touchHarmfulName = res.join()
+            this.showTouchHarmful = false
+        },
+        //饮食习惯弹窗确认选择
+        dietaryHabitConfirm() {
+            let res = []
+            this.store.getDict('CP00131').forEach(item => {
+                let selected = this.form.dietaryHabit.filter(i => i == item.value)
+                if (selected && selected.length) {
+                    res.push(item.name)
+                }
+            })
+            this.form.dietaryHabitName = res.join()
+            this.showDietaryHabit = false
+        },
+        //血压仪器测量
+        setPressureOne(val) {
+            if (!val) return
+            this.form.pressureOneSbp = val.systolicPressure
+            this.form.pressureOneDbp = val.diastolicPressure
+        },
+        setPressureTwo(val) {
+            if (!val) return
+            this.form.pressureTwoSbp = val.systolicPressure
+            this.form.pressureTwoDbp = val.diastolicPressure
+        },
+
+        //家族史多选
+        toggle(index) {
+            this.checkboxRefs[index].toggle()
+            this.changeFamilyHis()
+        },
+        //饮酒种类
+        toggleDrink(val) {
+            if (this.form.drinkKind.includes(val.value)) {
+                this.form.drinkKind = this.form.drinkKind.filter(e => e !== val.value)
+            } else {
+                this.form.drinkKind.push(val.value)
+            }
+            this.drinkKindChange(this.form.drinkKind)
+        },
+        //专病高危评估结果
+        toggleResult(val) {
+            if (this.specialScreenResultSelect.includes(val.value)) {
+                this.specialScreenResultSelect = this.specialScreenResultSelect.filter(e => e !== val.value)
+            } else {
+                this.specialScreenResultSelect.push(val.value)
+            }
+            this.specialScreenResultSelect = this.checkboxReject(this.specialScreenResultSelect, [9])
+            // this.form.specialScreenResult = this.specialScreenResultSelect
+        },
+        //提交
+        onSubmit() {
+            return new Promise((resolve, reject) => {
+                this.$refs.form.validate().then(() => {
+
+                    if (!this.specialScreenResultSelect.length) {
+                        this.$message.info('请选择专病高危评估结果')
+                        return
+                    }
+                    let exerciseFrequencyInfo = ''
+                    let isExerciseFiveInfo = ''
+                    const { exerciseFrequency } = this.form
+                    if (exerciseFrequency == 5) {
+                        exerciseFrequencyInfo = 1
+                        isExerciseFiveInfo = 1
+                    } else if (exerciseFrequency == 6) {
+                        exerciseFrequencyInfo = 1
+                        isExerciseFiveInfo = 2
+                    } else {
+                        exerciseFrequencyInfo = exerciseFrequency
+                    }
+                    let res = {
+                        ...this.form,
+
+                        exerciseFrequency: exerciseFrequencyInfo,
+                        isExerciseFive: isExerciseFiveInfo,
+
+                        hypertensionHighItem: this.formRight.hypertensionHighItemSelect,
+                        diabetesHighItem: this.formRight.diabetesHighItemSelect,
+                        coronaryHighItem: this.formRight.coronaryHighItemSelect,
+                        strokeHighItem: this.formRight.strokeHighItemSelect,
+                        pulmonaryHighItem: this.formRight.pulmonaryHighItemSelect,
+                        nephrosisHighItem: this.formRight.nephrosisHighItemSelect,
+                        dyslipemiaHighItem: this.formRight.dyslipemiaHighItemSelect,
+                        specialScreenResult: this.specialScreenResultSelect,
+                        drinkKindCapacityList: this.drinkKindCapacityList,
+                        diseaseRelativeList: this.familyHistoryList,
+                        riskScore: this.riskScoreInfo
+                    }
+                    resolve(
+                        fetchDataHandle(res, {
+                            diseaseArrays: 'arrToStr',
+                            medicalHistory: 'arrToStr',
+                            familyHistory: 'arrToStr',
+                            relativeType: 'arrToStr',
+                            femaleMedicalHistory: 'arrToStr',
+                            medicineHistory: 'arrToStr',
+                            touchHarmful: 'arrToStr',
+                            dietaryHabit: 'arrToStr',
+                            drinkKind: 'arrToStr',
+                            specialScreenResult: 'arrToStr',
+                            highItem: 'arrToStr',
+                            hypertensionHighItem: 'arrToStr',
+                            diabetesHighItem: 'arrToStr',
+                            coronaryHighItem: 'arrToStr',
+                            strokeHighItem: 'arrToStr',
+                            pulmonaryHighItem: 'arrToStr',
+                            nephrosisHighItem: 'arrToStr',
+                            dyslipemiaHighItem: 'arrToStr'
+                        })
+                    )
+                }).catch((e) => {
+                    console.warn('FormCont error', e)
+                })
+            })
+        }
+
+    }
+
+}
+</script>
+
+<style lang='less' scoped>
+.title {
+    font-weight: bold;
+    margin-bottom: 20px;
+}
+
+.label-title {
+    font-size: 13px;
+    color: #595959;
+    font-weight: 500;
+
+    &::after {
+        content: "*";
+        color: red;
+        font-weight: bold;
+        margin-left: 4px;
+    }
+}
+
+.no-req-label {
+    font-size: 13px;
+    color: #595959;
+    font-weight: 500;
+}
+
+.form-input {
+    padding: 8px 12px;
+    border-radius: 8px;
+}
+
+.input-back {
+    background: #FAFAFA;
+}
+
+.pop-title {
+    color: #262626;
+    font-size: 16px;
+    line-height: 24px;
+    font-weight: bold;
+}
+
+.checkbox-his {
+    padding: 0px !important;
+    margin-top: 4px;
+}
+
+.relation-bis {
+    background: #F5F5F5;
+    padding: 8px 12px;
+    border-radius: 0px 0px 8px 8px;
+
+    .top-title {
+        color: #8C8C8C;
+        font-size: 12px;
+        line-height: 24px;
+        margin-bottom: 4px;
+    }
+}
+
+.bg-fa {
+    background: #FAFAFA;
+    border-radius: 8px;
+    padding: 8px;
+}
+
+.bg-ff {
+    background: #FFFFFF;
+    border-radius: 8px;
+}
+
+.bg-f5 {
+    background: #F5F5F5;
+    border-radius: 8px;
+    padding: 8px;
+}
+
+.doc-radio-group-now {
+    column-gap: 10px;
+    row-gap: 10px;
+    background-color: #FAFAFA;
+
+    .van-radio {
+        background-color: #FFFFFF;
+        width: 48%;
+        padding: 8px 12px;
+        border-radius: 8px;
+        justify-content: space-between;
+        margin-right: 0;
+        flex-grow: 1;
+    }
+}
+
+.active-drinkKind {
+    //border: 1px solid var(--van-primary-color);
+    background-color: #F0F6FF;
+    color: var(--van-primary-color);
+}
+
+.lh-24 {
+    line-height: 24px;
+}
+
+:deep(.van-popup) {
+    height: 50% !important;
+}
+
+:deep(.van-cell-group--inset) {
+    overflow: visible;
+}
+
+:deep(.van-cell) {
+    overflow: visible;
+}
+
+:deep(.van-cell:after) {
+    border-bottom: 0px;
+}
+</style>
diff --git a/src/doctor/screening/highVisit/second/Result.vue b/src/doctor/screening/highVisit/second/Result.vue
new file mode 100644
index 0000000000000000000000000000000000000000..91f7d448d60e9a2c01c67e4b31f7acd776964b70
--- /dev/null
+++ b/src/doctor/screening/highVisit/second/Result.vue
@@ -0,0 +1,52 @@
+<template>
+    <div class="screening-first-result text-center pt-3 px-3">
+        <doc-icon type="doc-check-circle" style="font-size: .46rem;"/>
+        <div class="mt-3">随访完成</div>
+        <div class="text-start mt-5">
+            <span style="color: #595959;">通过随访,您的慢病高危评估结果为:</span>
+            <div class="text-red mt-2" style='line-height: 24px'>{{specialScreenResultList.join("、")}}</div>
+        </div>
+        <div style="margin-top: .48rem">
+            <van-button type='primary' block round plain
+                @click='toDetail'>查看居民详情</van-button>
+            <div class="text-16 pt-5" style="color: #8c8c8c;"
+                @click="toWorkbench">返回工作台</div>
+        </div>
+    </div>
+</template>
+
+<script>
+export default {
+    props: {
+        residentInfoId: String,
+        specialScreenResultList: Array,
+    },
+    methods: {
+        toScreen() {
+            this.$router.replace({
+                path: '/doctor/screening/secondForm',
+                query: {
+                    residentInfoId: this.residentInfoId
+                }
+            })
+        },
+        toDetail() {
+            this.$router.replace({
+                path: '/doctor/patient-detail',
+                query: {
+                    residentInfoId: this.residentInfoId
+                }
+            })
+        },
+        toWorkbench() {
+            this.$router.replace({
+                path: '/doctor/workbench'
+            })
+        }
+    }
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>
diff --git a/src/doctor/screening/highVisit/second/SecondForm.vue b/src/doctor/screening/highVisit/second/SecondForm.vue
new file mode 100644
index 0000000000000000000000000000000000000000..8447f9691c957ef745ce7299f7a8aa10d1ce8ff5
--- /dev/null
+++ b/src/doctor/screening/highVisit/second/SecondForm.vue
@@ -0,0 +1,245 @@
+<template>
+    <div class='h-full flex flex-col screening-second'>
+        <DocNavBar :title="`${id ? '修改' : '新增'}专病高危随访`" class='shrink-0' :backFunc='onBack'></DocNavBar>
+        <div class='p-4 overflow-y-auto grow' ref='all'>
+            <BaseInfo :info='info'
+                      v-show='step ==1'
+                      @getLast='getLastData'
+                      ref='baseInfo'
+            ></BaseInfo>
+            <form-cont :info='info'
+                       :disease-arrays-info='diseaseArraysInfo'
+                       v-show='step == 2'
+                       ref='formInfo'
+            ></form-cont>
+            <common-bottom
+                v-if='step == 3'
+                ref='commonBottom'
+            ></common-bottom>
+            <result :residentInfoId='residentInfoId'
+                    :specialScreenResultList='specialScreenResultList'
+                    v-show='step == 4'
+            ></result>
+        </div>
+        <div class='bottom-small-line'></div>
+        <div class='pt-2 pb-2'>
+            <div class='px-5  grow flex flex-col justify-end' v-if='step == 1'>
+                <van-button type='primary' block round
+                            @click='toNext(2)'>下一步
+                </van-button>
+            </div>
+
+            <div class='px-5  flex align-center justify-around' v-if='step == 2'>
+                <van-button type='primary' round plain style='width: 44%'
+                            @click='toNext(1)'>上一步
+                </van-button>
+                <van-button type='primary' round style='width: 44%'
+                            @click='toNext(3)'>下一步
+                </van-button>
+            </div>
+            <div class='px-5  grow flex flex-col justify-end' v-if='step == 3'>
+                <van-button type='primary' block round
+                            @click='onsubmit'>提交
+                </van-button>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import DocNavBar from '@/doctor/components/docNavBar/DocNavBar.vue'
+import ArchiveCommon from '@/doctor/components/archiveCommon/archiveCommon'
+import { getChronicResidentsId } from '@/api/doctor/generalFU'
+import FormCont from '@/doctor/screening/highVisit/second/FormCont'
+import Result from '@/doctor/screening/highVisit/second/Result'
+import DiseaseSelect from '@/doctor/screening/highVisit/second/DiseaseSelect'
+import BaseInfo from '@/doctor/screening/highVisit/second/BaseInfo'
+import { fetchDataHandle } from '@/utils/common'
+import { showToast } from 'vant'
+import CommonBottom from '@/doctor/screening/highVisit/second/CommonBottom'
+import { useStore } from '@/doctor/store'
+import {
+    getHighSpecificVisitId,
+    getLastHighSpecificVisit,
+    saveHighSpecificVisit,
+    updateHighSpecificVisit
+} from '@/api/doctor/highVisitApi'
+
+export default {
+    components: {
+        CommonBottom,
+        BaseInfo,
+        DiseaseSelect,
+        Result,
+        FormCont,
+        ArchiveCommon,
+        DocNavBar
+    },
+    data() {
+        return {
+            store: useStore(),
+            step: 1,
+            info: {},
+            residentInfo: {},
+            diseaseArraysInfo: [],
+            specialScreenResultList: [],
+        }
+    },
+    computed: {
+        id() {
+            return this.$route.query.id
+        },
+        residentInfoId() {
+            return this.$route.query.residentInfoId
+        }
+    },
+    created() {
+        this.init()
+    },
+    methods: {
+        async init() {
+            this.info = {}
+            if (this.id) {
+                const res = await getHighSpecificVisitId(this.id)
+                let result = res.data || {}
+                const { residentsRecord = {} } = result
+                const { id, ...others } = residentsRecord
+                let obj = this.dataHandle(result)
+                this.info = {
+                    ...others,
+                    personId: id,
+                    ...obj
+                }
+                this.residentInfo = {
+                    ...others,
+                    personId: id,
+                }
+            } else {
+                const res = await getChronicResidentsId(this.residentInfoId)
+                const {
+                    id,
+                    createDate,
+                    createDoctorId,
+                    createDoctorName,
+                    createOfficeId,
+                    createOfficeName,
+                    createUnitId,
+                    createUnitName,
+                    updated,
+                    ...others
+                } = res.data
+                this.residentInfo = {
+                    personId: id,
+                    ...others
+                }
+                this.info = {
+                    personId: id,
+                    ...others
+                }
+            }
+        },
+        //获取上一次随访数据
+        getLastData() {
+            let par = {
+                residentInfoId: this.residentInfoId
+            }
+            getLastHighSpecificVisit(par).then(res => {
+                let result = res.data || {}
+                if (Object.keys(result).length === 0) {
+                    showToast('暂无上一次随访数据')
+                    return
+                }
+                let obj = this.dataHandle(result)
+                this.info = {
+                    ...obj,
+                    ...this.residentInfo,
+                    flag: 'lastInfo',
+                    id: null
+                }
+            })
+        },
+        //数据处理
+        dataHandle(result) {
+            let obj = fetchDataHandle(result, {
+                diseaseArrays: 'strToArrNum',
+                medicalHistory: 'strToArrNum',
+                familyHistory: 'strToArrNum',
+                relativeType: 'strToArrNum',
+                femaleMedicalHistory: 'strToArrNum',
+                medicineHistory: 'strToArrNum',
+                touchHarmful: 'strToArrNum',
+                dietaryHabit: 'strToArrNum',
+                drinkKind: 'strToArrNum',
+                specialScreenResult: 'strToArrNum',
+                highItem: 'strToArrNum',
+                hypertensionHighItem: 'strToArrNum',
+                diabetesHighItem: 'strToArrNum',
+                coronaryHighItem: 'strToArrNum',
+                strokeHighItem: 'strToArrNum',
+                pulmonaryHighItem: 'strToArrNum',
+                nephrosisHighItem: 'strToArrNum',
+                dyslipemiaHighItem: 'strToArrNum',
+            })
+            return obj
+        },
+        async toNext(val) {
+            this.$refs.all.scrollTo(0, 0)
+            if (val == 2) {
+                let obj = await this.$refs.baseInfo.onSubmit()
+                this.diseaseArraysInfo = obj.diseaseArrays || []
+            }
+            if (val == 3) {
+                await this.$refs.formInfo.onSubmit()
+            }
+            this.step = val
+        },
+        //提交所有表单
+        async onsubmit() {
+            let baseInfo = await this.$refs.baseInfo.onSubmit()
+            let formInfo = await this.$refs.formInfo.onSubmit()
+            let commonBottom = await this.$refs.commonBottom.onSubmit()
+            let params = {
+                ...formInfo,
+                ...commonBottom,
+                ...baseInfo,
+                diseaseArrays: baseInfo.diseaseArrays ? baseInfo.diseaseArrays.join() : '',
+                source: 2
+            }
+            if (formInfo.specialScreenResult) {
+                let list = formInfo.specialScreenResult.split(",")
+                list.forEach(item => {
+                    let res = this.store.getDict(`CP00137`).filter(e => e.value == item)
+                    if (res && res.length) {
+                        this.specialScreenResultList.push(res[0].name)
+                    }
+                })
+            }
+            if (!params.id) {
+                saveHighSpecificVisit(params).then(res => {
+                    this.$message.success('新增成功')
+                    this.store.onRefreshMark()
+                    this.toNext(4)
+                })
+            } else {
+                updateHighSpecificVisit(params).then(res => {
+                    this.$message.success('修改成功')
+                    this.store.onRefreshMark()
+                    this.toNext(4)
+                })
+            }
+
+        },
+        onBack() {
+            if (this.step == 1) {
+                this.$router.back()
+            } else {
+                this.step--
+            }
+        }
+    }
+}
+</script>
+
+<style lang='less' scoped>
+
+</style>
diff --git a/src/doctor/screening/second/CommonBottom.vue b/src/doctor/screening/second/CommonBottom.vue
index 6e72e74d0b820821fcb44b33270d0baa8ac87416..63314f9826ce2953c0ee679c7e24a9fa8d8e5d2f 100644
--- a/src/doctor/screening/second/CommonBottom.vue
+++ b/src/doctor/screening/second/CommonBottom.vue
@@ -2,24 +2,24 @@
     <div>
         <van-form ref='form'>
 
-            <div :class="['label-title', 'mt-5']">随访单位</div>
+            <div :class="['label-title', 'mt-5']">筛查单位</div>
             <van-field
                 v-model='form.screenUnitName'
                 is-link
                 readonly
-                placeholder='随访单位'
+                placeholder='筛查单位'
                 class='input-back mt-2 form-input'
                 :rules='rules.screenUnitName'
                 @click='show1 = true'
             />
             <DocUnit v-model:show='show1' v-model:value='form.screenUnitId' @change='changeUnit' />
 
-            <div class='label-title mt-5'>随访科室</div>
+            <div class='label-title mt-5'>筛查科室</div>
             <van-field
                 v-model='form.screenOfficeName'
                 is-link
                 readonly
-                placeholder='随访科室'
+                placeholder='筛查科室'
                 class='input-back mt-2 form-input'
                 :rules='rules.screenOfficeName'
                 @click='show2 = true'
@@ -27,12 +27,12 @@
             <DocOffice v-model:show='show2' v-model:value='form.screenOfficeId' @change='changeOffice'
                        :unitId='form.screenUnitId' />
 
-            <div class='label-title mt-5'>随访医生</div>
+            <div class='label-title mt-5'>筛查医生</div>
             <van-field
                 v-model='form.screenDoctorName'
                 is-link
                 readonly
-                placeholder='随访医生'
+                placeholder='筛查医生'
                 class='input-back mt-2 form-input'
                 :rules='rules.screenDoctorName'
                 @click='show3 = true'
@@ -94,13 +94,13 @@ export default {
             const form = {
                 screenDate: new dayjs().format("YYYY-MM-DD"),
                 createDate: new dayjs().format("YYYY-MM-DD"),
-                // 随访单位
+                // 筛查单位
                 screenUnitId: this.authInfo.unitId,
                 screenUnitName: this.authInfo.unitName,
-                // 随访科室
+                // 筛查科室
                 screenOfficeId: this.authInfo.officeId,
                 screenOfficeName: this.authInfo.officeName,
-                // 随访医生
+                // 筛查医生
                 screenDoctorId: this.authInfo.relationId,
                 screenDoctorName: this.authInfo.nickName,
                 // 录入单位
diff --git a/src/doctor/screening/second/SecondForm.vue b/src/doctor/screening/second/SecondForm.vue
index d48350872657bd7fb9432632a392f5709560a6ab..3c96ea06db0965b8b4bc0af2f16dc11e50eb90f1 100644
--- a/src/doctor/screening/second/SecondForm.vue
+++ b/src/doctor/screening/second/SecondForm.vue
@@ -212,11 +212,13 @@ export default {
             if (!params.id) {
                 saveSecondScreening(params).then(res => {
                     this.$message.success('新增成功')
+                    this.store.onRefreshMark()
                     this.toNext(4)
                 })
             } else {
                 updateSecondScreening(params).then(res => {
                     this.$message.success('修改成功')
+                    this.store.onRefreshMark()
                     this.toNext(4)
                 })
             }
diff --git a/src/router/index.js b/src/router/index.js
index 144d37392f66b6b67625550d687a2d8d4a197bf0..5686876dd130d050f2d4093f8c90f8d5bec3eeab 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -85,10 +85,31 @@ const routes = [
                 name: 'screening-secondDetail',
                 component: () => import(/* webpackChunkName: "doctor" */ '@/doctor/screening/detail/SecondDetail.vue')
             },
+
+            {
+                path: 'screening/highVisit/firstForm',
+                name: 'screening-highVisit-first-form',
+                component: () => import(/* webpackChunkName: "doctor" */ '@/doctor/screening/highVisit/first/FirstForm.vue')
+            },
+            {
+                path: 'screening/highVisit/firstDetail',
+                name: 'screening-highVisit-firstDetail',
+                component: () => import(/* webpackChunkName: "doctor" */ '@/doctor/screening/highVisit/detail/FirstDetail.vue')
+            },
+            {
+                path: 'screening/highVisit/secondForm',
+                name: 'screening-highVisit-second-form',
+                component: () => import(/* webpackChunkName: "doctor" */ '@/doctor/screening/highVisit/second/SecondForm.vue')
+            },
+            {
+                path: 'screening/highVisit/secondDetail',
+                name: 'screening-highVisit-secondDetail',
+                component: () => import(/* webpackChunkName: "doctor" */ '@/doctor/screening/highVisit/detail/SecondDetail.vue')
+            },
             {
                 path: 'screening/highVisit/GeneralFUDetail',
                 name: 'screening-highVisit-GeneralFUDetail',
-                component: () => import(/* webpackChunkName: "doctor" */ '@/doctor/screening/detail/GeneralFUDetail')
+                component: () => import(/* webpackChunkName: "doctor" */ '@/doctor/screening/highVisit/detail/GeneralFUDetail')
             },
             {
                 path: 'followUp/detail',