Record.vue 9.2 KB
<template>
    <div class="record-list" ref="list">
        <van-pull-refresh v-model='loadingRefresh' @refresh='onRefresh'
            :disabled='isRefreshDisable'>
            <div v-for="item in firstScreenList" :key="item.id"
                class="first-card mb-3">
                <div class="title px-4 py-1">主要慢病筛查记录</div>
                <div class="py-3 px-4 doc-list-card">
                    <div class="flex flex-col" style="row-gap: .04rem;line-height: 1.5;"
                        @click="toFirstDetail(item)">
                        <div class="flex">
                            <span class="label shrink-0">高危评估</span>
                            <span class="grow">{{ item.screenResultName }}</span>
                        </div>
                        <div>
                            <span class="label">筛查日期</span>
                            <span>{{ item.screenDate }}</span>
                        </div>
                        <div class="text-ellipsis">
                            <span class="label">筛查单位</span>
                            <span>{{ item.screenUnitName }}</span>
                        </div>
                        <div class="text-ellipsis">
                            <span class="label">筛查科室</span>
                            <span>{{ item.screenOfficeName }}</span>
                        </div>
                        <div>
                            <span class="label">筛查医生</span>
                            <span>{{ item.screenDoctorName }}</span>
                        </div>
                        <div>
                            <span class="label">数据来源</span>
                            <span>{{ item.sourceName }}</span>
                        </div>
                        <div>
                            <span class="label">创建时间</span>
                            <span>{{ item.created }}</span>
                        </div>
                    </div>
                    <div class="divider my-3"></div>
                    <div class="bt-group">
                        <van-button round size="small" class="doc-btn-primary" @click="toFirstDetail(item)">详情</van-button>
                        <van-button round size="small" class="doc-btn-primary" @click="editFirstBtn(item)"
                            v-if="item.allowUpdate == 1">修改</van-button>
                        <van-button round size="small" class="doc-btn-red" @click="delFirstBtn(item)"
                            v-if="item.allowDelete ==1">删除</van-button>
                    </div>
                </div>
            </div>
            <div v-for="item in secondScreenList" :key="item.id"
                class="second-card mb-3">
                <div class="title px-4 py-1">专病筛查记录</div>
                <div class=" py-3 px-4 doc-list-card">
                    <div class="flex flex-col" style="row-gap: .04rem;line-height: 1.5;"
                        @click="toSecondDetail(item)">
                        <div class="flex">
                            <span class="label shrink-0">高危评估</span>
                            <span class="grow" >{{ item.specialScreenResultName }}</span>
                        </div>
                        <div>
                            <span class="label">筛查日期</span>
                            <span>{{ item.screenDate }}</span>
                        </div>
                        <div class="text-ellipsis">
                            <span class="label">筛查单位</span>
                            <span>{{ item.screenUnitName }}</span>
                        </div>
                        <div class="text-ellipsis">
                            <span class="label">筛查科室</span>
                            <span>{{ item.screenOfficeName }}</span>
                        </div>
                        <div class="text-ellipsis">
                            <span class="label">筛查医生</span>
                            <span>{{ item.screenDoctorName }}</span>
                        </div>
                        <div>
                            <span class="label">数据来源</span>
                            <span>{{ item.sourceName }}</span>
                        </div>
                        <div>
                            <span class="label">创建时间</span>
                            <span>{{ item.created }}</span>
                        </div>
                    </div>
                    <div class="divider my-3"></div>
                    <div class="bt-group">
                        <van-button round size="small" class="doc-btn-primary" @click="toSecondDetail(item)">详情</van-button>
                        <van-button round size="small" class="doc-btn-primary" @click='editSecondBtn(item)'
                            v-if="item.allowUpdate == 1">修改</van-button>
                        <van-button round size="small" class="doc-btn-red" @click="delSecondBtn(item)"
                            v-if="item.allowUpdate == 1">删除</van-button>
                    </div>
                </div>
            </div>
        </van-pull-refresh>
        <div class='text-center shrink-0 empty' v-if='!firstScreenList.length && !secondScreenList.length'>
            <img src='@/assets/image/doctor/empty.png' alt='' style='width: 1.2rem;'>
            <p>暂无数据</p>
        </div>
    </div>
</template>

<script>
import { useStore } from '@/doctor/store'
import { getScreenAllList, deleteFirstScreening, deleteSecondScreening } from '@/api/doctor/screening.js'
import { showConfirmDialog } from 'vant'

export default {
    inject: ['residentInfo'],
    data() {
        return {
            store: useStore(),
            loadingRefresh: false,
            isRefreshDisable: false,
            firstScreenList: [],
            secondScreenList: []
        }
    },
    computed: {
        residentInfoId() {
            return this.residentInfo().residentInfoId
        }
    },
    created() {
        this.load()
    },
    mounted() {
        const list = this.$refs.list
        list.addEventListener('scroll', () => {
            if (list.scrollTop > 0) {
                this.isRefreshDisable = true
            } else {
                this.isRefreshDisable = false
            }
        })
    },
    methods: {
        load(loading = true) {
            getScreenAllList(this.residentInfoId, loading).then(res => {
                const result = res.data || {}
                this.firstScreenList = result.firstScreenList || []
                this.secondScreenList = result.secondScreenList || []
            }).finally(() => {
                this.loadingRefresh = false
            })
        },
        onRefresh() {
            this.load(false)
        },
        //主要慢病筛查
        toFirstDetail(record) {
                if (!record) return
                if (record.id == null) {
                    this.$message.info('暂时无法查看 详情信息')
                    return
                }
                this.$router.push({
                    path: '/doctor/screening/FirstDetail',
                    query: {
                        id: record.id
                    }
                })
        },
        //专病筛查
        toSecondDetail(record) {
            if (!record) return
            if (record.id == null) {
                this.$message.info('暂时无法查看 详情信息')
                return
            }
            this.$router.push({
                path: '/doctor/screening/secondDetail',
                query: {
                    id: record.id
                }
            })
        },
        editFirstBtn(record) {
            this.$router.push({
                path: '/doctor/screening/firstForm',
                query: { residentInfoId: this.residentInfoId, id:record.id }
            })
        },
        delFirstBtn(record) {
            showConfirmDialog({
                message: '确定要删除吗?'
            }).then(() => {
                deleteFirstScreening({ id: record.id }).then(res => {
                    setTimeout(() => {
                        this.$message.info('删除成功')
                    }, 600)
                    this.firstScreenList = this.firstScreenList.filter(e => e.id !== record.id)
                })
            }).catch((err) => { console.warn('delFirstBtn', err) })
            
        },
        editSecondBtn(record) {
            this.$router.push({
                path: '/doctor/screening/secondForm',
                query: { residentInfoId: this.residentInfoId, id:record.id }
            })
        },
        delSecondBtn(record) {
            showConfirmDialog({
                message: '确定要删除吗?'
            }).then(() => {
                deleteSecondScreening({ id: record.id }).then(res => {
                    setTimeout(() => {
                        this.$message.info('删除成功')
                    }, 600)
                    this.secondScreenList = this.secondScreenList.filter(e => e.id !== record.id)
                })
            }).catch((err) => { console.warn('delFirstBtn', err) })
        }
    },
    watch: {
        'store.refreshMark'() {
            this.onRefresh()
        }
    }
}
</script>

<style lang="less" scoped>

</style>