Index.vue 9.31 KB
<template>
    <div>
        <van-nav-bar :title="routerDetail.id ? '修改通用随访': '新增通用随访'" left-text='' left-arrow
                     @click-left='toBack'></van-nav-bar>
        <div class='p-4 h-overflow' ref='all'>
            <base-info :info='info'
                       :modeEnumList='modeEnumList'
                       v-show='step == 1'
                       ref='baseInfo'
            ></base-info>
            <general-f-u-form :info='info'
                              :first-form='firstForm'
                              :modeEnumList='modeEnumList'
                              v-show='step == 2'
                              ref='generalFUForm'
            ></general-f-u-form>
            <common-bottom :info='info'
                           :first-form='firstForm'
                           :modeEnumList='modeEnumList'
                           v-show='step == 3'
                           ref='commonBottom'
            ></common-bottom>
        </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 BaseInfo from '@/doctor/followUp/generalFU/form/BaseInfo'
import {
    addCurrency,
    fetchCurrencyById,
    getChronicResidentsId, getResidentWX,
    updateCurrency,
    upLoadMultifile
} from '@/api/doctor/generalFU'
import GeneralFUForm from '@/doctor/followUp/generalFU/form/GeneralFUForm'
import CommonBottom from '@/doctor/followUp/generalFU/form/CommonBottom'
import { useStore } from '@/doctor/store'
const getModeEnum = (patientInfo = {}) => {
    return {
        mode1: [
            {
                value: '1', name: `门诊`,
                children: [
                    { value: 1, name: `复检`, disabled: false },
                    { value: 2, name: `指导`, disabled: false },
                    { value: 3, name: `宣教`, disabled: false },
                    { value: 4, name: `催检`, disabled: true }
                ]
            },
            {
                value: '2', name: `住院`,
                children: [
                    { value: 1, name: `复检`, disabled: false },
                    { value: 2, name: `指导`, disabled: false },
                    { value: 3, name: `宣教`, disabled: false },
                    { value: 4, name: `催检`, disabled: true }
                ]
            },
            {
                value: '3', name: `入户`,
                children: [
                    { value: 1, name: `复检`, disabled: false },
                    { value: 2, name: `指导`, disabled: false },
                    { value: 3, name: `宣教`, disabled: false },
                    { value: 4, name: `催检`, disabled: true }
                ]
            },
            {
                value: '4', name: `电话`,
                children: [
                    { value: 1, name: `复检`, disabled: false },
                    { value: 2, name: `指导`, disabled: false },
                    { value: 3, name: `宣教`, disabled: true },
                    { value: 4, name: `催检`, disabled: false }
                ]
            },
            {
                value: '5', name: `短信`,
                children: [
                    { value: 1, name: `复检`, disabled: true },
                    { value: 2, name: `指导`, disabled: false },
                    { value: 3, name: `宣教`, disabled: false },
                    { value: 4, name: `催检`, disabled: false }
                ]
            },
            {
                value: '6', name: `微信`,
                children: [
                    { value: 1, name: `复检`, disabled: true },
                    { value: 2, name: `指导`, disabled: false },
                    { value: 3, name: `宣教`, disabled: false },
                    { value: 4, name: `催检`, disabled: false }
                ]
            }
        ],
        tel: `(本人电话:${patientInfo.telephone || ''})`,
        weixi: `(绑定电话:${patientInfo.weixin || '未绑定'})`,
        telephone: patientInfo.telephone,
        weixinTel: patientInfo.weixin,
        //是否下次随访日期必填
        nextVisitDateReq: true,
        //催检内容是否显示患者姓名
        urgeResidentShow: true
    }
}
export default {
    name: 'Index',
    components: { CommonBottom, GeneralFUForm, BaseInfo },
    data() {
        return {
            store: useStore(),
            info: {},
            resident: {},
            step: 1,
            //第一步提交的表单
            firstForm: {},
            //居民信息
            residentInfo: {},
            modeEnumList: getModeEnum({})
        }
    },
    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 weixinInfo = await getResidentWX({residentInfoId: this.routerDetail.residentInfoId})
                const {
                    id,
                    createDate,
                    createDoctorId,
                    createDoctorName,
                    createOfficeId,
                    createOfficeName,
                    createUnitId,
                    createUnitName,
                    updated,
                    ...others
                } = res.data
                this.info = {
                    personId: id,
                    ...others,
                    sendNumber: weixinInfo?.data?.isWx ? weixinInfo?.data?.telephone : ''
                }
                this.info.diseaseType = this.routerDetail.diseaseType
            }
            this.modeEnumList = getModeEnum(this.info)
        },
        async toNext(val) {
            this.$refs.all.scrollTo(0, 0)
            if (val == 2) {
                this.firstForm = await this.$refs.baseInfo.onSubmit()
            }
            if (val == 3) {
                await this.$refs.generalFUForm.onSubmit()
            }
            this.step = 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 params = {
                ...generalFUForm,
                ...commonBottom,
                ...baseInfo,
                source: 2
            }
            if (this.info.id) {
                params.visitRecordId = this.info.visitRecordId
            }
            let fun = this.info.id ? updateCurrency : addCurrency
            fun(params, true).then(({ code }) => {
                if (code == 'SUCCESS') {
                    this.store.onRefreshMark()
                    this.$router.back()
                }
            })
        },
        toBack() {
            if (this.step != 1) {
                this.step--
                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>