Commit b595e781 authored by songrui's avatar songrui

工作台 待接诊居民、高危待诊断

parent 78d4a719
......@@ -13,4 +13,24 @@ export function getVisitByPage(params, loading) {
// 待随访列表忽略
export function delVisit(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-task/delete`, body: params, loading: true })
}
// 待接诊列表
export function getReceiveByPage(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-referral-task/page`, body: params })
}
// 待接诊列表 忽略
export function ignoreReceive(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-referral-task/update`, body: params })
}
// 筛查高危记录表 初筛高危待复筛1 复筛高危待诊断2
export function getBeSecondScreenByPage(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-workbench/be-second-page`, body: params })
}
// 待复筛和高危待诊断忽略
export function addIgnoreRecord(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-ignore-record/save`, body: params })
}
\ No newline at end of file
......@@ -52,7 +52,7 @@ export default {
if (!token) {
token = sessionStorage.getItem('token')
if (process.env.NODE_ENV !== 'production') {
token = 'c57e0e9b-4d0d-4e50-9946-771e8ef39ca0'
token = '5ddd5348-b7df-4ef7-947a-596ccfa2bbdc'
}
}
if (token) {
......
......@@ -36,9 +36,9 @@
<div class="bt-group">
<van-button round size="small" class="doc-btn-primary" @click="toDetail(item)">详情</van-button>
<van-button round size="small" class="doc-btn-primary" @click='editBtn(item)'
v-if="record.allowUpdate == 1">修改</van-button>
v-if="item.allowUpdate == 1">修改</van-button>
<van-button round size="small" class="doc-btn-red" @click="delBtn(item)"
v-if="record.allowDelete ==1">删除</van-button>
v-if="item.allowDelete ==1">删除</van-button>
</div>
</div>
</div>
......@@ -78,9 +78,9 @@
<div class="bt-group">
<van-button round size="small" class="doc-btn-primary" @click="toDetail(item)">详情</van-button>
<van-button round size="small" class="doc-btn-primary" @click='editBtn(item)'
v-if="record.allowUpdate == 1">修改</van-button>
v-if="item.allowUpdate == 1">修改</van-button>
<van-button round size="small" class="doc-btn-red" @click="delBtn(item)"
v-if="record.allowUpdate == 1">删除</van-button>
v-if="item.allowUpdate == 1">删除</van-button>
</div>
</div>
</div>
......
......@@ -26,22 +26,28 @@
import DocNavBar from '@/doctor/components/docNavBar/DocNavBar.vue'
import TableWork from './tables/Work.vue'
import TableVisit from './tables/Visit.vue'
import TableReceive from './tables/Receive.vue'
import TableFirstScreen from './tables/FirstScreen.vue'
import TableHighRisk from './tables/HighRisk.vue'
export default {
components: {
DocNavBar,
TableWork,
TableVisit
TableVisit,
TableReceive,
TableFirstScreen,
TableHighRisk
},
data() {
return {
configTab: [
{ key: 'work', component: 'TableWork', name: '工作记录' },
{ key: 'visit', component: 'TableVisit', name: '慢病待随访' },
{ key: 'screenRecord', component: 'TableScreenRecord', name: '当年待筛查记录' },
{ key: 'firstScreen', component: 'TableFirstScreen', name: '初筛高危待筛查' },
{ key: 'receive', component: 'TableReceive', name: '待接诊居民' },
{ key: 'highRisk', component: 'TableHighRisk', name: '高危诊断' }
// { key: 'screenRecord', component: 'TableScreenRecord', name: '当年待筛查记录' },
{ key: 'firstScreen', component: 'TableFirstScreen', name: '初筛高危待筛查' },
{ key: 'highRisk', component: 'TableHighRisk', name: '高危待诊断' }
],
tabActive:{}
}
......
<template>
<div class="h-full flex flex-col px-2 py-3 first-screen">
<div class="shrink-0 flex pb-2 items-center">
<van-tabs shrink type="card" class="grow doc-tab-round" line>
<van-tab title="全部" title-style="padding: 0 .2rem"></van-tab>
</van-tabs>
<doc-icon type="doc-menu" style="font-size:.2rem;color:#03053D"
@click='openSearch' />
</div>
<div class='grow pt-1 overflow-y-auto' ref='list'>
<van-pull-refresh v-model='loadingRefresh' @refresh='onRefresh'
:disabled='isRefreshDisable' style="min-height: 100%">
<van-list
v-model:loading='loading'
:finished='finished'
:finished-text="list.length ? '没有更多了' : ''"
:immediate-check='false'
@load='onMore'
>
<div class="flex flex-col gap-y-2.5">
<div class="py-3 px-4 doc-list-card" v-for='item in list' :key="item.id">
<div class="mb-4">
<span class="name mr-2">{{ item.residentName }}</span>
<span class="tag mr-2">{{ item.currentAge }}</span>
<span class="tag mr-2">{{ item.genderName }}</span>
</div>
<div class="flex flex-col gap-y-2.5">
<div>
<span class="label">身份证号</span>
<span>{{ item.idCard }}</span>
</div>
<div>
<span class="label">筛查医生</span>
<span>{{ item.screenDoctorName }}</span>
</div>
<div>
<span class="label">初筛日期</span>
<span>{{ item.screenDate }}</span>
</div>
</div>
<div class="divider my-3"></div>
<div class="bt-group">
<van-button round size="small" class="doc-btn-primary" @click="toDetail(item)">详情</van-button>
<van-button round size="small" class="doc-btn-primary" @click="toDetail(item)">复筛</van-button>
<van-button round size="small" class="doc-btn-primary" @click="onIgnore(item)">忽略</van-button>
</div>
</div>
</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>
<van-popup v-model:show="searchVisible" position="top" :style="{ height: '70%' }"
style="position: absolute;transition: none"
:overlay-style="{ position: 'absolute' }"
transition="viewer-fade"
:teleport="listDom">
<div class="h-full flex flex-col workbench-search-box">
<div class="px-4 py-3 grow overflow-y-auto">
<div class="mb-3">身份证号</div>
<van-field v-model="form.idCard" placeholder="请输入身份证号" maxlength="20"
class="doc-input">
<template #right-icon>
<IdCardScan />
</template>
</van-field>
<div class="my-3">居民姓名</div>
<van-field v-model="form.residentName" placeholder="输入居民姓名" maxlength="100"
class="doc-input"/>
<div class="my-3">数据来源</div>
<CheckBtn :options="store.getDict('CP00124')" v-model:value="form.source" column-2
class="check-btn-workbench"/>
</div>
<div class="text-16 flex shrink-0 text-center bt-group">
<div class="grow py-3" @click="reset">重置</div>
<div class="grow py-3 submit-btn" @click="search">确定</div>
</div>
</div>
</van-popup>
</div>
</div>
</template>
<script>
import { getBeSecondScreenByPage, addIgnoreRecord } from '@/api/doctor/workbench.js'
import { useStore } from '@/doctor/store'
import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue'
import IdCardScan from '@/doctor/components/idCardScan/IdCardScan.vue'
import { showToast } from 'vant'
const DefaultForm = {
// 数据来源,[DC00051]
source: undefined,
// 状态
status: undefined,
// 初筛日期-截止日期
startDate: undefined,
// 初筛日期-开始日期
endDate: undefined,
// 姓名
residentName: undefined,
// 身份证号
idCard: undefined
}
export default {
name: 'TableFirstScreen',
components: {
CheckBtn,
IdCardScan
},
data() {
return {
store: useStore(),
list: [],
pagination: {
total: 0,
pageIndex: 1,
pageSize: 8
},
loading: false,
finished: false,
loadingRefresh: false,
isRefreshDisable: false,
// 搜索弹出框
searchVisible: false,
form: { ...DefaultForm },
rangeDate: [],
}
},
computed: {
listDom() {
return this.$refs.list
}
},
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) {
this.dateHandle()
const query = {
pageIndex: this.pagination.pageIndex,
pageSize: this.pagination.pageSize,
searchType: 1,
serveType: 2,
...this.form
}
getBeSecondScreenByPage(query, loading).then(res => {
if (this.pagination.pageIndex === 1) {
this.list = []
}
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
})
},
search() {
this.pagination.pageIndex = 1
this.load()
this.searchVisible = false
},
reset() {
this.form = { ...DefaultForm }
this.rangeDate = []
this.search()
},
onMore() {
this.pagination.pageIndex++
this.load(false)
},
onRefresh() {
this.pagination.pageIndex = 1
this.load()
},
openSearch() {
this.searchVisible = true
},
toDetail(record) {
if (!record) return
if (record.residentInfoId == null) {
showToast('暂时无法查看 详情信息')
return
}
this.$router.push({
path: '/doctor/patient-detail',
query: {
residentInfoId: record.residentInfoId
}
})
},
onIgnore(record) {
let params={
relationId:record.screenId,
ignoreType:2,
}
addIgnoreRecord(params).then(() => {
this.list = this.list.filter(e => e.id !== record.id)
setTimeout(() => {
showToast('操作成功')
}, 800);
})
},
dateHandle() {
if (this.rangeDate && this.rangeDate.length) {
this.form.startDate = this.rangeDate[0]
this.form.endDate = this.rangeDate[1]
return
}
this.form.startDate = undefined
this.form.endDate = undefined
},
}
}
</script>
<style lang="less" scoped>
</style>
This diff is collapsed.
<template>
<div class="h-full flex flex-col px-2 py-3 receive">
<div class="shrink-0 flex pb-2 items-center">
<van-tabs shrink type="card" class="grow doc-tab-round" line>
<van-tab title="全部" title-style="padding: 0 .2rem"></van-tab>
</van-tabs>
<doc-icon type="doc-menu" style="font-size:.2rem;color:#03053D"
@click='openSearch' />
</div>
<div class='grow pt-1 overflow-y-auto' ref='list'>
<van-pull-refresh v-model='loadingRefresh' @refresh='onRefresh'
:disabled='isRefreshDisable' style="min-height: 100%">
<van-list
v-model:loading='loading'
:finished='finished'
:finished-text="list.length ? '没有更多了' : ''"
:immediate-check='false'
@load='onMore'
>
<div class="flex flex-col gap-y-2.5">
<div class="py-3 px-4 doc-list-card" v-for='item in list' :key="item.id">
<div class="mb-4">
<span class="name mr-2">{{ item.residentName }}</span>
<span class="tag mr-2">{{ item.age }}</span>
<span class="tag mr-2">{{ item.genderName }}</span>
</div>
<div class="flex flex-col gap-y-2.5">
<div>
<span class="label">转出单位</span>
<span>{{ item.outUnitName }}</span>
</div>
<div>
<span class="label">转出医生</span>
<span>{{ item.outDoctorName }}</span>
</div>
<div>
<span class="label">转诊类型</span>
<span>{{ item.referralTypeName }}</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="toDetail(item)">详情</van-button>
<van-button round size="small" class="doc-btn-primary" @click="toDetail(item)">接诊</van-button>
<van-button round size="small" class="doc-btn-primary" @click="onIgnore(item)">忽略</van-button>
</div>
</div>
</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>
<van-popup v-model:show="searchVisible" position="top" :style="{ height: '70%' }"
style="position: absolute;transition: none"
:overlay-style="{ position: 'absolute' }"
transition="viewer-fade"
:teleport="listDom">
<div class="h-full flex flex-col workbench-search-box">
<div class="px-4 py-3 grow overflow-y-auto" style="">
<div class="mb-3">身份证号</div>
<van-field v-model="form.idCard" placeholder="请输入身份证号" maxlength="20"
class="doc-input">
<template #right-icon>
<IdCardScan />
</template>
</van-field>
<div class="my-3">居民姓名</div>
<van-field v-model="form.residentName" placeholder="输入居民姓名" maxlength="100"
class="doc-input"/>
<div class="my-3">转出单位</div>
<van-field v-model="form._unitName" placeholder="请选择" readonly
@click="() => unitShow = true"
class="doc-input">
</van-field>
<DocUnit v-model:show='unitShow' v-model:value='form.outUnitId' @change='e => form._unitName = e.unitName'/>
<div class="my-3">转诊类型</div>
<CheckBtn :options="store.getDict('CP00184')" v-model:value="form.referralType" column-2
class="check-btn-workbench"/>
</div>
<div class="text-16 flex shrink-0 text-center bt-group">
<div class="grow py-3" @click="reset">重置</div>
<div class="grow py-3 submit-btn" @click="search">确定</div>
</div>
</div>
</van-popup>
</div>
</div>
</template>
<script>
import { getReceiveByPage, ignoreReceive } from '@/api/doctor/workbench.js'
import { useStore } from '@/doctor/store'
import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue'
import IdCardScan from '@/doctor/components/idCardScan/IdCardScan.vue'
import DocUnit from '@/doctor/components/docUnit/DocUnit.vue'
import { showToast } from 'vant'
const DefaultForm = {
// 转出单位id
outUnitId: undefined,
_unitName: undefined,
// 转诊类型,[DC00001]
referralType: undefined,
// 日期-截止日期
startDate: undefined,
// 日期-开始日期
endDate: undefined,
// 姓名
screenResidentName: undefined,
// 身份证号
idCard: undefined
}
export default {
name: 'TableReceive',
components: {
CheckBtn,
IdCardScan,
DocUnit
},
data() {
return {
store: useStore(),
list: [],
pagination: {
total: 0,
pageIndex: 1,
pageSize: 8
},
loading: false,
finished: false,
loadingRefresh: false,
isRefreshDisable: false,
// 搜索弹出框
searchVisible: false,
// 单位选择
unitShow: false,
form: { ...DefaultForm },
rangeDate: [],
}
},
computed: {
listDom() {
return this.$refs.list
}
},
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) {
this.dateHandle()
const query = {
pageIndex: this.pagination.pageIndex,
pageSize: this.pagination.pageSize,
searchType: 1,
...this.form
}
getReceiveByPage(query, loading).then(res => {
if (this.pagination.pageIndex === 1) {
this.list = []
}
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
})
},
search() {
this.pagination.pageIndex = 1
this.load()
this.searchVisible = false
},
reset() {
this.form = { ...DefaultForm }
this.rangeDate = []
this.search()
},
onMore() {
this.pagination.pageIndex++
this.load(false)
},
onRefresh() {
this.pagination.pageIndex = 1
this.load()
},
openSearch() {
this.searchVisible = true
},
toDetail(record) {
if (!record) return
if (record.residentInfoId == null) {
showToast('暂时无法查看 详情信息')
return
}
this.$router.push({
path: '/doctor/patient-detail',
query: {
residentInfoId: record.residentInfoId
}
})
},
onIgnore(record) {
let params={
id: record.id,
state: 3,
}
ignoreReceive(params).then(() => {
this.list = this.list.filter(e => e.id !== record.id)
setTimeout(() => {
showToast('操作成功')
}, 800);
})
},
dateHandle() {
if (this.rangeDate && this.rangeDate.length) {
this.form.startDate = this.rangeDate[0]
this.form.endDate = this.rangeDate[1]
return
}
this.form.startDate = undefined
this.form.endDate = undefined
},
}
}
</script>
<style lang="less" scoped>
</style>
<template>
<div class="h-full flex flex-col px-2 py-3 work">
<div class="h-full flex flex-col px-2 py-3 visit">
<div class="shrink-0 flex pb-2 items-center">
<van-tabs shrink type="card" class="grow doc-tab-round" line
v-model:active="activeTab"
......@@ -193,11 +193,13 @@ export default {
},
methods: {
load(loading = true) {
this.dateHandle()
const query = {
pageIndex: this.pagination.pageIndex,
pageSize: this.pagination.pageSize,
searchType: 1,
diseaseType: this.activeTabItem.value
diseaseType: this.activeTabItem.value,
...this.form
}
getVisitByPage(query, loading).then(res => {
if (this.pagination.pageIndex === 1) {
......
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