<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> <result :residentInfoId='residentInfoId' 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 { fetchCurrencyById, getChronicResidentsId } from '@/api/doctor/generalFU' import FormCont from '@/doctor/screening/second/FormCont' import Result from '@/doctor/screening/second/Result' import DiseaseSelect from '@/doctor/screening/second/DiseaseSelect' import BaseInfo from '@/doctor/screening/second/BaseInfo' import { fetchDataHandle } from '@/utils/common' import { getLastScreen, secondScreenDetail } from '@/api/doctor/screening' import { showToast } from 'vant' export default { components: { BaseInfo, DiseaseSelect, Result, FormCont, ArchiveCommon, DocNavBar }, data() { return { step: 1, info: {}, residentInfo: {}, diseaseArraysInfo: [] } }, 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 secondScreenDetail({ id: 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 } getLastScreen(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 }, //提交所有表单 onsubmit() { }, onBack() { if (this.step == 1) { this.$router.back() } else { this.step-- } } } } </script> <style lang='less' scoped> </style>