<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>