<template>
    <div class='all-back'>
        <van-nav-bar title='慢病管理' left-text='' left-arrow
                     @click-right='toSearch' @click-left='toBack'>
            <template #right>
                <doc-icon type='doc-search' style='color: #262626' />
            </template>
        </van-nav-bar>
        <div class='top-title'>
            我的待随访({{ total }})

        </div>
        <van-tabs v-model:active='active' @change='changeTab'>
            <van-tab :name='item.name' v-for='item in tabList' :key='item.name'>
                <template #title>
                    <span>{{ item.title }}({{ item.num }})</span>
                </template>
            </van-tab>
        </van-tabs>
        <van-pull-refresh v-model='loading' @refresh='onRefresh'
                          :disabled='isRefreshDisable'>
            <div class='list-data' ref='list'>
                <van-list
                    v-model:loading='loadingTable'
                    :finished='finished'
                    :finished-text="detailInfo.length ? '没有更多了' : ''"
                    @load='onMore'
                >
                    <div class='mt-10 white-back p-16' v-for='item in detailInfo' :key='item.id'>
                        <div class='flex items-center'>
                            <div class='base-title'>{{ item.residentName }}</div>
                            <div class='second-title plr-8'>{{ getInfoByIdCard(item.idCard).age }}岁</div>
                            <div class='second-title plr-6'>{{ item.genderName }}</div>
                        </div>
                        <div class='mt-3 flex items-center'>
                            <div class='detail-left'>
                                身份证号
                            </div>
                            <div class='detail-right'>
                                {{ $idCardHide(item.idCard) }}
                            </div>
                        </div>
                        <div class='mt-3 flex items-center'>
                            <div class='detail-left'>
                                是否逾期
                            </div>
                            <div class='detail-right'>
                                {{ item.isOverdueName }}
                            </div>
                        </div>
                        <div class='mt-3 flex items-center'>
                            <div class='detail-left'>
                                逾期天数
                            </div>
                            <div class='detail-right'>
                                {{ item.overdueDay }} 天
                            </div>
                        </div>
                        <div class='flex mt-3' style='align-items: baseline'>
                            <div class='detail-left'>
                                慢病标签
                            </div>
                            <div class='detail-right' style='flex: 1'>
                                <ChronicTag :list='item.chronicTagsArray' />
                            </div>
                        </div>
                        <van-divider class='mt-3' />
                        <div class='mt-3 flex word-right'>
                            <div></div>
                            <div>
                                <van-button round size='small' class='btn' @click='toGeneralDetail(item)'>详情
                                </van-button>
                                <van-button round size='small' class='btn' style='margin-left: 16px'
                                            @click='toAddGeneral(item)'>通用随访
                                </van-button>
                            </div>
                        </div>
                    </div>
                </van-list>
                <div class='text-center empty' v-if='!detailInfo.length'>
                    <img src='@/assets/image/doctor/empty.png' alt='' style='width: 1.2rem;'>
                    <p>暂无数据</p>
                </div>
            </div>
        </van-pull-refresh>
    </div>
</template>

<script>
import dayjs from 'dayjs'
import { getVisitAll, queryVisitByPage } from '@/api/doctor/generalFU.js'
import ChronicTag from '@/doctor/components/chronicTag/ChronicTag.vue'
import { backHome, getInfoByIdCard } from '@/utils/common'

export default {
    name: 'List',
    components: {
        ChronicTag
    },
    data() {
        return {
            active: 1,
            tabList: [
                { title: '高血压', name: 1, num: 0 },
                { title: '糖尿病', name: 2, num: 0 },
                { title: '冠心病', name: 3, num: 0 },
                { title: '脑卒中', name: 4, num: 0 },
                { title: '慢阻肺', name: 5, num: 0 },
                { title: '慢性肾病', name: 6, num: 0 },
                { title: '血脂异常', name: 7, num: 0 }
            ],
            detailInfo: [],
            total: 0,
            // 下拉刷新
            loading: false,
            isRefreshDisable: false,
            //列表刷新
            loadingTable: false,
            pagination: {
                total: 0,
                pageIndex: 1,
                pageSize: 5
            },
            finished: false
        }
    },
    mounted() {
        const list = this.$refs.list
        list.addEventListener('scroll', () => {
            if (list.scrollTop > 0) {
                this.isRefreshDisable = true
            } else {
                this.isRefreshDisable = false
            }
        })
    },
    methods: {
        getInfoByIdCard,
        changeTab() {
            this.detailInfo = []
            this.pagination.pageIndex = 1
            this.load()
        },
        onMore() {
            this.pagination.pageIndex++
            this.load()
        },
        load(loading = true) {
            const query = {
                diseaseType: this.active,
                pageIndex: this.pagination.pageIndex,
                pageSize: this.pagination.pageSize
            }
            getVisitAll(query, loading).then(res => {
                console.log('getVisitAll', res)
                this.detailInfo = this.detailInfo.concat(res.data || [])
                this.total = this.detailInfo.length
                this.finished = this.detailInfo.length >= this.pagination.total
            }).finally(() => {
                this.loading = false
                this.loadingTable = false
            })
        },
        scrollHandle(dom) {
            if (!dom) return
            if (dom.scrollTop > 0) {
                this.isRefreshDisable = true
            } else {
                this.isRefreshDisable = false
            }
        },
        onRefresh() {
            this.detailInfo = []
            this.pagination.pageIndex = 1
            this.load(false)
        },
        toGeneralDetail(item) {
            this.$router.push({
                path: `/doctor/resident/base`,
                query: {
                    residentId: item.residentInfoId
                }
            })
        },
        toAddGeneral(val) {
            const { id, ...others } = val
            this.$router.push({
                path: `/doctor/followUp/generalFU/add`,
                query: { ...others }
            })
        },
        toSearch() {
            this.$router.push({
                path: `/doctor/followUp/search`
            })
        },
        toBack() {
            backHome()
        }
    }
}
</script>

<style scoped lang='less'>
.all-back {
    background: #F5F5F5;

    .top-title {
        padding: 10px 12px;
    }

    .white-back {
        background: #FFFFFF;
    }

    .mt-10 {
        margin-top: 10px;
    }

    .p-16 {
        padding: 16px;
    }

    .plr-8 {
        padding: 0px 8px;
    }

    .plr-6 {
        padding: 0px 6px;
    }

    .base-title {
        font-weight: bold;
        font-size: 16px;
    }

    .second-title {
        background: #F0F3FF;
        line-height: 24px;
        margin-left: 10px;
    }

    .detail-left {
        width: 104px;
        font-size: 14px;
        color: #8C8C8C;
    }

    .detail-right {
        font-size: 14px;
    }

    .word-right {
        justify-content: space-between;
        align-items: center;
    }

    .btn {
        background: #F0F3FF;
        color: #607FF0;
        border: 0px;
        line-height: 26px;
        height: 26px;
        //padding: 4px 8px 4px 8px;
        padding: 0px 8px;
    }

    .list-data {
        height: calc(100vh - 140px);
        overflow-y: auto;
    }
}
</style>