<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: {},
            //居民信息
            residentInfo: {}
        }
    },
    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,
                source: 2
            }
            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>