Commit fdee70d0 authored by gengchunlei's avatar gengchunlei

居民端小程序 随访列表

parent fb6fde85
...@@ -144,7 +144,7 @@ export default { ...@@ -144,7 +144,7 @@ export default {
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
@import url('../utils/common.less'); @import url('../../utils/common.less');
table { table {
text-align: left; text-align: left;
border-bottom: 1px solid var(--van-cell-border-color); border-bottom: 1px solid var(--van-cell-border-color);
......
...@@ -144,7 +144,7 @@ export default { ...@@ -144,7 +144,7 @@ export default {
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
@import url('../utils/common.less'); @import url('../../utils/common.less');
table { table {
text-align: left; text-align: left;
border-bottom: 1px solid var(--van-cell-border-color); border-bottom: 1px solid var(--van-cell-border-color);
......
<template>
<div class='h-full flex flex-col visit'>
<van-tabs v-model:active='activeTab' class='shrink-0' v-if='tabList.length'
@change='tabChange'
shrink>
<van-tab v-for='item in tabList' :key='item.name'
:title='item.title' :name='item.name'></van-tab>
</van-tabs>
<div class='grow overflow-y-auto card-list' ref='list'>
<van-pull-refresh v-model='loadingRefresh' @refresh='onRefresh'
:disabled='isRefreshDisable'>
<van-list
v-model:loading='loading'
:finished='finished'
:finished-text="list.length ? '没有更多了' : ''"
:immediate-check='false'
@load='onMore'
>
<div v-for='item in list' :key='item.id' class='p-4 mt-3 card' @click.stop='toDetail(item)'>
<div class='flex items-center'>
<div class='detail-left'>
随访情况
</div>
<div class='detail-right'>
{{ item.visitSituationName }}
</div>
</div>
<div class='mt-3 flex items-center'>
<div class='detail-left'>
随访日期
</div>
<div class='detail-right'>
{{ item.serveDate }}
</div>
</div>
<div class='mt-3 flex items-center'>
<div class='detail-left'>
随访医生
</div>
<div class='detail-right'>
{{ item.serveDoctorName }}
</div>
</div>
<div class='mt-3 flex items-center'>
<div class='detail-left'>
服务类型
</div>
<div class='detail-right'>
{{ item.serveTypeName }}
</div>
</div>
<div class='mt-3 flex items-center'>
<div class='detail-left'>
随访机构
</div>
<div class='detail-right'>
{{ item.serveUnitName }}
</div>
</div>
<div class='mt-3 flex items-center'>
<div class='detail-left'>
下次随访日期
</div>
<div class='detail-right'>
{{ item.nextVisitDate || '-' }}
</div>
</div>
<div class='mt-3 flex items-center'>
<div class='detail-left'>
数据来源
</div>
<div class='detail-right'>
{{ item.sourceName || '-' }}
</div>
</div>
<van-divider class='mt-3' />
<div class='flex justify-end'>
<van-button round type='primary' class='card-bt' style='margin-right: .12rem'
@click.stop='editBtn(item)' v-show='item.allowUpdate ==1'>修改
</van-button>
<van-button round type='primary' class='card-bt' @click.stop='delBtn(item)'
v-show='item.allowUpdate ==1'>删除
</van-button>
</div>
<span class='px-3 float-bt'>
通用随访
</span>
</div>
</van-list>
<div class='text-center shrink-0 empty' v-if='!list.length'>
<img src='@/assets/image/doctor/empty.png' alt='' style='width: 1.2rem;'>
<p>暂无数据</p>
</div>
</van-pull-refresh>
</div>
<div class='p-3 floor' v-if='activeTab'>
<van-button round block type='primary' class='card-bt' @click='addBtn'>新增通用随访</van-button>
</div>
</div>
</template>
<script>
import { queryVisitByPage, deleteVisit } from '@/api/doctor/generalFU.js'
import { showConfirmDialog, showToast } from 'vant'
export default {
data() {
return {
activeTab: undefined,
list: [],
pagination: {
total: 0,
pageIndex: 1,
pageSize: 4
},
loading: false,
finished: false,
loadingRefresh: false,
isRefreshDisable: false
}
},
inject: ['getBaseInfo'],
computed: {
baseInfo() {
return this.getBaseInfo() || {}
},
chronicTagsArray() {
let chronicTagsArray = this.baseInfo.chronicTagsArray || ''
return chronicTagsArray.split(',')
},
tabList() {
const list = [
{ title: '高血压', name: 1, code: '1' },
{ title: '糖尿病', name: 2, code: '2' },
{ title: '冠心病', name: 3, code: '4' },
{ title: '脑卒中', name: 4, code: '8' },
{ title: '慢性阻塞性疾病', name: 5, code: '16' },
{ title: '慢性肾病', name: 6, code: '32' },
{ title: '血脂异常', name: 7, code: '64' }
]
return list.filter(e => this.chronicTagsArray.includes(e.code))
}
},
mounted() {
const list = this.$refs.list
list.addEventListener('scroll', () => {
if (list.scrollTop > 0) {
this.isRefreshDisable = true
} else {
this.isRefreshDisable = false
}
})
},
methods: {
load(loading = true) {
const query = {
residentInfoId: this.baseInfo.residentInfoId,
serveTypeList: [5, 6, 7, 8, 9, 10, 11, 12, 14],
diseaseType: this.activeTab,
pageIndex: this.pagination.pageIndex,
pageSize: this.pagination.pageSize
}
queryVisitByPage(query, loading).then(res => {
this.list = this.list.concat(res.data.dataList || [])
this.pagination.total = res.data.total || 0
this.finished = this.list.length >= this.pagination.total
}).finally(() => {
this.loading = false
this.loadingRefresh = false
})
},
onMore() {
this.pagination.pageIndex++
this.load()
},
init() {
if (this.chronicTagsArray.length) {
const item = this.tabList.find(e => e.code === this.chronicTagsArray[0]) || {}
this.activeTab = item.name
}
},
tabChange() {
this.list = []
this.pagination.pageIndex = 1
this.load()
},
onRefresh() {
this.list = []
this.pagination.pageIndex = 1
this.load(false)
},
addBtn() {
if (this.baseInfo.chronicStatus === 9) {
showToast('该居民已标记为死亡,无法新增随访')
return
}
let par = {
residentInfoId: this.baseInfo.residentInfoId,
diseaseType: this.activeTab
}
this.$router.push({
path: `/doctor/followUp/generalFU/add`,
query: par
})
},
toDetail(item) {
let par = {
relationId: item.relationId
}
this.$router.push({
path: `/doctor/followUp/generalFU/detail`,
query: par
})
},
editBtn(item) {
let par = {
id: item.relationId,
residentInfoId: this.baseInfo.residentInfoId
}
this.$router.push({
path: `/doctor/followUp/generalFU/add`,
query: par
})
},
delBtn(item) {
showConfirmDialog({
title: '提示',
message: '确认删除该随访记录吗?\n确认后将无法查看该随访信息'
}).then(() => {
// on confirm
// console.log(item.id)
deleteVisit({ id: item.id }).then(res => {
this.load()
})
})
.catch(() => {
// on cancel
})
}
}
}
</script>
<style lang='less' scoped>
.card-list {
padding-bottom: 76px;
}
.card {
position: relative;
background-color: #fff;
.detail-left {
width: 8em;
color: #8C8C8C;
flex-shrink: 0;
}
.card-bt {
font-size: 14px;
color: #607FF0;
background-color: #F0F3FF;
border: 0;
height: 26px;
}
.float-bt {
position: absolute;
top: 10px;
right: 0;
background-color: var(--van-primary-color);
color: #fff;
border-top-left-radius: 40px;
border-bottom-left-radius: 40px;
height: 26px;
line-height: 26px;
}
}
.floor {
position: fixed;
bottom: 0;
left: 0;
right: 0;
}
</style>
...@@ -101,12 +101,12 @@ const routes = [ ...@@ -101,12 +101,12 @@ const routes = [
{ {
path: 'screening/firstDetail/:id', path: 'screening/firstDetail/:id',
name: 'resident-screening-first-detail-id', name: 'resident-screening-first-detail-id',
component: () => import(/* webpackChunkName: "residentWX-screening" */ '@/residentWX/screening/FirstDetail.vue') component: () => import(/* webpackChunkName: "residentWX-screening" */ '@/residentWX/screening/detail/FirstDetail.vue')
}, },
{ {
path: 'screening/secondDetail/:id', path: 'screening/secondDetail/:id',
name: 'resident-screening-first-detail-id', name: 'resident-screening-first-detail-id',
component: () => import(/* webpackChunkName: "residentWX-screening" */ '@/residentWX/screening/SecondDetail.vue') component: () => import(/* webpackChunkName: "residentWX-screening" */ '@/residentWX/screening/detail/SecondDetail.vue')
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment