<template> <div> <van-nav-bar :title="routerDetail.id ? '修改通用随访': '新增通用随访'" left-text='' left-arrow @click-left='toBack'></van-nav-bar> <div class='p-4 h-overflow'> <base-info :info='info' v-show='step == 1' ref='baseInfo' @changeVisitSituation='changeVisitSituation'></base-info> <general-f-u-form :info='info' :first-form='firstForm' v-show='step == 2' ref='generalFUForm'></general-f-u-form> <common-bottom :info='info' v-show='step == 3' ref='commonBottom'></common-bottom> </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 v-if='visitSituation == 1' @click='toNext(2)'>下一步 </van-button> <van-button type='primary' block round v-if='visitSituation == 2' @click='toNext(3)'>下一步 </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 BaseInfo from '@/doctor/followUp/generalFU/form/BaseInfo' import { addCurrency, fetchCurrencyById, getChronicResidentsId, updateCurrency, upLoadMultifile } from '@/api/doctor/generalFU' import GeneralFUForm from '@/doctor/followUp/generalFU/form/GeneralFUForm' import CommonBottom from '@/doctor/followUp/generalFU/form/CommonBottom' export default { name: 'Index', components: { CommonBottom, GeneralFUForm, BaseInfo }, data() { return { info: {}, resident: {}, visitSituation: 1, step: 1, //第一步提交的表单 firstForm: {} } }, created() { this.init() }, computed: { routerDetail() { return this.$route.query } }, methods: { async init() { this.info = {} if (this.routerDetail.id) { const res = await fetchCurrencyById({ id: this.routerDetail.id }) let result = res.data || {} const {residentsRecord = {}} = result const {id, ...others} = residentsRecord this.info = { ...others, personId: id, ...result } } else { const res = await getChronicResidentsId(this.routerDetail.residentInfoId) const { id, createDate, createDoctorId, createDoctorName, createOfficeId, createOfficeName, createUnitId, createUnitName, updated, ...others } = res.data this.info = { personId: id, ...others } this.info.diseaseType = this.routerDetail.diseaseType } }, async toNext(val) { if (val == 2) { this.firstForm = await this.$refs.baseInfo.onSubmit() } if (val == 3) { await this.$refs.generalFUForm.onSubmit() } this.step = val }, changeVisitSituation(val) { this.visitSituation = val }, //图片上传 async upload(imgList = []) { let list = [] if (imgList.length) { let fileId = Math.random().toString(16).substring(2, 8) let data = new FormData() data.append('parentId', fileId) imgList.forEach(item => { data.append('files', item) }) let res = await upLoadMultifile(data) let result = res.data || [] result.forEach(item => { list.push(item.id) }) } return list }, //原图片数据处理 baseImgHandle(imgList = []) { let list = [] imgList.forEach(item => { list.push(item.id) }) return list }, async onsubmit() { let baseInfo = await this.$refs.baseInfo.onSubmit() let generalFUForm = await this.$refs.generalFUForm.onSubmit() let commonBottom = await this.$refs.commonBottom.onSubmit() let imgInput1List = [] let imgInput2List = [] let uploadVisitRecord = '' let sceneVisitImage = '' //图片上传 if (generalFUForm.imgInput1.length) { imgInput1List = await this.upload(generalFUForm.imgInput1) } if (generalFUForm.imgInput2.length) { imgInput2List = await this.upload(generalFUForm.imgInput2) } if (generalFUForm.img1.length) { let img1List = this.baseImgHandle(generalFUForm.img1) let lsit1 = [...imgInput1List, ...img1List] uploadVisitRecord = Array.from(new Set(lsit1)).join() } if (generalFUForm.img2.length) { let img2List = this.baseImgHandle(generalFUForm.img2) let lsit2 = [...imgInput2List, ...img2List] sceneVisitImage = Array.from(new Set(lsit2)).join() } let params = { ...baseInfo, ...generalFUForm, ...commonBottom, uploadVisitRecord, sceneVisitImage, } if (this.info.id) { params.visitRecordId = this.info.visitRecordId } if (params.visitSituation == 2) { params.visitWay = 14 } let fun = this.info.id ? updateCurrency : addCurrency fun(params, true).then(({ code }) => { if (code == 'SUCCESS') { this.$router.back() } }) }, toBack() { if (this.visitSituation == 1) { if (this.step != 1) { this.step-- return } } if (this.visitSituation == 2) { if (this.step != 1) { this.step = 1 return } } this.$router.back() } } } </script> <style scoped lang='less'> :deep(.van-nav-bar .van-icon) { color: #000000; } .h-overflow { height: calc(100vh - 110px); overflow-y: auto; } </style>