Commit bfdf7a15 authored by gengchunlei's avatar gengchunlei

Merge branch 'chronic-dev' of http://gitlab.yiboshi.com/nightkis1995/frontend-h5 into chronic-dev

 Conflicts:
	src/api/doctor/workbench.js
	src/doctor/Doctor.vue
parents e3dd7b55 6512eb34
import {fetchBase} from '@/api/doctor/doctorFetch'
//列表查询
export function fetchDiseaseTypeList(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-diagnose-record/manage-record`, body: params, loading: true })
}
\ No newline at end of file
...@@ -23,11 +23,6 @@ export function fetchCurrencyById(params) { ...@@ -23,11 +23,6 @@ export function fetchCurrencyById(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-currency/record`, body: params, loading: true }) return fetchBase({ url: `/chronic-admin/v1/chronic-visit-currency/record`, body: params, loading: true })
} }
// 查询待随访列表
export function getVisitAll(params, loading = true) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-task/query-all-list`, body: params, loading })
}
// 根据单位名称模糊查询单位信息 // 根据单位名称模糊查询单位信息
export function getUnitByName(orgName) { export function getUnitByName(orgName) {
return fetchBase({ url: `/tumour-admin/v1/sys-user/org-by-name/${orgName}` }) return fetchBase({ url: `/tumour-admin/v1/sys-user/org-by-name/${orgName}` })
...@@ -53,14 +48,14 @@ export function updateCurrency(params) { ...@@ -53,14 +48,14 @@ export function updateCurrency(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-currency/update`, body: params, loading: true }) return fetchBase({ url: `/chronic-admin/v1/chronic-visit-currency/update`, body: params, loading: true })
} }
// 删除随访 // 列表查询
export function deleteVisit(params) { export function fetchCurrencyList(params, loading) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-record/delete`, body:params, loading: true }) return fetchBase({ url: `/chronic-admin/v1/chronic-visit-currency/page`, body: params, loading })
} }
// 查询随访列表 //删除通用随访
export function queryVisitByPage(params, loading) { export function delCurrencyById(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-record/page`, body: params, loading }) return fetchBase({ url: `/chronic-admin/v1/chronic-visit-currency/delete`, body: params, loading: true })
} }
......
...@@ -13,4 +13,14 @@ export function updateResident(params) { ...@@ -13,4 +13,14 @@ export function updateResident(params) {
// 慢性病管理列表查询 // 慢性病管理列表查询
export function getResidentByPage(params) { export function getResidentByPage(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-residents-record/page`, body: params, loading: true }) return fetchBase({ url: `/chronic-admin/v1/chronic-residents-record/page`, body: params, loading: true })
} }
\ No newline at end of file
//转诊列表查询
export function getReferralList(params, loading) {
return fetchBase({ url: `/chronic-admin/v1/base-info/referral-list`, body: params, loading })
}
// 会诊列表查询
export function getConsultationList(params, loading) {
return fetchBase({ url: `/chronic-admin/v1/base-info/consultation-list`, body: params, loading })
}
import {fetchBase} from '@/api/doctor/doctorFetch' import {fetchBase} from '@/api/doctor/doctorFetch'
//查初筛和复筛列表 //查初筛和复筛列表
export function getScreenAllList(residentInfoId) { export function getScreenAllList(residentInfoId, loading) {
return fetchBase({ url: `/chronic-admin/v1/chronic-screening-record/screen-list`,body:{residentInfoId},loading: true}) return fetchBase({ url: `/chronic-admin/v1/chronic-screening-record/screen-list`,body:{residentInfoId},loading})
} }
\ No newline at end of file
...@@ -23,4 +23,24 @@ export function getTemplateByPage(params) { ...@@ -23,4 +23,24 @@ export function getTemplateByPage(params) {
// 模板 主键查询 // 模板 主键查询
export function getTemplateDetail(params, loading = true) { export function getTemplateDetail(params, loading = true) {
return fetchBase({ url: `/tumour-admin/v1/template/query-id/${params.id}`, loading }) return fetchBase({ url: `/tumour-admin/v1/template/query-id/${params.id}`, loading })
}
// 待接诊列表
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
...@@ -14,6 +14,9 @@ ...@@ -14,6 +14,9 @@
</div> </div>
<span class="shrink-0 time" :style="`opacity: ${player.currentTime ? 1 : 0}`"> <span class="shrink-0 time" :style="`opacity: ${player.currentTime ? 1 : 0}`">
{{ timeFormat(player.currentTime) }}</span> {{ timeFormat(player.currentTime) }}</span>
<span class="text-16 shrink-0 close-btn" @click.stop="removeBtn" v-if="remove">
<doc-icon type="close-circle" />
</span>
</div> </div>
<audio ref="audio" type="audio/mpeg" crossOrigin="anonymous" style="display: none"></audio> <audio ref="audio" type="audio/mpeg" crossOrigin="anonymous" style="display: none"></audio>
</div> </div>
...@@ -26,8 +29,10 @@ import { showToast } from 'vant' ...@@ -26,8 +29,10 @@ import { showToast } from 'vant'
export default { export default {
props: { props: {
file: { default: () => ({}) }, file: { default: () => ({}) },
activeMediaUrl: { default: '' } activeMediaUrl: { default: '' },
remove: Boolean
}, },
emits: ['onRemove'],
data() { data() {
return { return {
player: {}, player: {},
...@@ -94,6 +99,9 @@ export default { ...@@ -94,6 +99,9 @@ export default {
onProgress(value) { onProgress(value) {
this.player.progressChange(value) this.player.progressChange(value)
this.player.playing = true this.player.playing = true
},
removeBtn() {
this.$emit('onRemove', this.file)
} }
}, },
watch: { watch: {
......
...@@ -6,6 +6,9 @@ ...@@ -6,6 +6,9 @@
<div class="shrink-0 play-bt" @click="start(item)"> <div class="shrink-0 play-bt" @click="start(item)">
<doc-icon type="doc-play" /> <doc-icon type="doc-play" />
</div> </div>
<span class="close-btn" @click.stop="removeBtn(item)" v-if="remove">
<doc-icon type="close-circle" />
</span>
</div> </div>
<div v-if="item.annexFileName" class="text-12 my-1 text-ellipsis">{{ item.annexFileName }}</div> <div v-if="item.annexFileName" class="text-12 my-1 text-ellipsis">{{ item.annexFileName }}</div>
</div> </div>
...@@ -33,8 +36,10 @@ ...@@ -33,8 +36,10 @@
<script> <script>
export default { export default {
props: { props: {
files: { default: () => [] } files: { default: () => [] },
remove: Boolean
}, },
emits: ['onRemove'],
data() { data() {
return { return {
visible: false, visible: false,
...@@ -46,6 +51,9 @@ export default { ...@@ -46,6 +51,9 @@ export default {
this.activeVideo = item this.activeVideo = item
this.visible = true this.visible = true
this.$emit('play', item) this.$emit('play', item)
},
removeBtn(item) {
this.$emit('onRemove', item)
} }
} }
} }
...@@ -56,6 +64,7 @@ export default { ...@@ -56,6 +64,7 @@ export default {
>div { >div {
width: calc(50% - 5px); width: calc(50% - 5px);
.item { .item {
position: relative;
background: url('@/assets/image/residentWX/video-default.png') no-repeat; background: url('@/assets/image/residentWX/video-default.png') no-repeat;
background-size: 100%; background-size: 100%;
height: .84rem; height: .84rem;
...@@ -75,6 +84,12 @@ export default { ...@@ -75,6 +84,12 @@ export default {
font-size: 15px; font-size: 15px;
padding-left: 2px; padding-left: 2px;
} }
.close-btn {
position: absolute;
font-size: 16px;
top: -8px;
right: -8px;
}
} }
.wrapper { .wrapper {
position: relative; position: relative;
......
...@@ -59,6 +59,9 @@ ...@@ -59,6 +59,9 @@
</van-tabs> </van-tabs>
<div class="grow py-3 px-2" style="min-height: 0px;" v-if="residentInfo.id"> <div class="grow py-3 px-2" style="min-height: 0px;" v-if="residentInfo.id">
<ScreeningList v-if="activeTabItem.id === 'SCREENING'"/> <ScreeningList v-if="activeTabItem.id === 'SCREENING'"/>
<GeneralList v-else-if="activeTabItem.id === 'CURRENCY'"/>
<ReferralList v-else-if="activeTabItem.id === 'REFERRAL'"/>
<ConsultationList v-else-if="activeTabItem.id === 'CONSULTATION'"/>
</div> </div>
<van-popup <van-popup
v-model:show="addVisible" v-model:show="addVisible"
...@@ -83,18 +86,25 @@ ...@@ -83,18 +86,25 @@
</template> </template>
<script> <script>
import DocNavBar from '@/doctor/components/docNavBar/DocNavBar.vue'
import ChronicTag from '@/doctor/components/chronicTag/ChronicTag.vue'
import { queryResidentInfo } from '@/api/doctor/resident.js' import { queryResidentInfo } from '@/api/doctor/resident.js'
import { showNotify } from 'vant' import { showNotify } from 'vant'
import ScreeningList from './components/screening/Index.vue' import DocNavBar from '@/doctor/components/docNavBar/DocNavBar.vue'
import ChronicTag from '@/doctor/components/chronicTag/ChronicTag.vue'
import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue' import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue'
import ScreeningList from './components/screening/Index.vue'
import GeneralList from './components/generalFU/List.vue'
import ReferralList from './components/referral/List.vue'
import ConsultationList from './components/consultation/List.vue'
export default { export default {
components: { components: {
DocNavBar, DocNavBar,
ChronicTag, ChronicTag,
ScreeningList, ScreeningList,
GeneralList,
ReferralList,
ConsultationList,
CheckBtn CheckBtn
}, },
data() { data() {
......
<template>
<div class="h-full overflow-y-auto general-list" ref='list'>
<van-pull-refresh v-model='loadingRefresh' @refresh='onRefresh'
:disabled='isRefreshDisable'>
<div class="flex flex-col">
<div v-for='item in list' :key="item.id"
class="flex flex-col gap-y-2.5 py-3 px-4 mb-3 doc-list-card">
<div>
<span class="label">创建时间</span>
<span>{{ item.addTime || '-' }}</span>
</div>
<div>
<span class="label">期望会诊日期</span>
<span>{{ item.booksDate || '-' }}</span>
</div>
<div>
<span class="label">会诊方式</span>
<span>{{ item.rcWayName || '-' }}</span>
</div>
<div class="text-ellipsis">
<span class="label">申请单位</span>
<span>{{ item.applyHosName || '-' }}</span>
</div>
<div>
<span class="label">申请医生</span>
<span>{{ item.applyDoctName || '-' }}</span>
</div>
<div>
<span class="label">来源</span>
<span>{{ item.systemName || '-' }}</span>
</div>
<div>
<span class="label">状态</span>
<span>{{ item.applyStatusName || '-' }}</span>
</div>
<div class="divider"></div>
<div class="bt-group">
<van-button round size="small" class="doc-btn-primary" @click="toDetail(item)">详情</van-button>
</div>
</div>
</div>
</van-pull-refresh>
<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>
</div>
</template>
<script>
import { getConsultationList } from '@/api/doctor/resident.js'
export default {
inject: ['residentInfo'],
data() {
return {
list: [],
loadingRefresh: false,
isRefreshDisable: false
}
},
computed: {
idCard() {
return this.residentInfo().idCard
}
},
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) {
const query = {
idCard: this.idCard
}
getConsultationList(query, loading).then(res => {
this.list = res.data || []
}).finally(() => {
this.loadingRefresh = false
})
},
onRefresh() {
this.load(false)
},
toDetail(record) {
if (!record) return
if (record.id == null) {
showToast('暂时无法查看 详情信息')
return
}
}
}
}
</script>
<style lang="less" scoped>
</style>
<template>
<div class="disease-list"></div>
</template>
<script>
export default {
inject: ['residentInfo'],
}
</script>
<style lang="less" scoped>
</style>
<template>
<div class="h-full overflow-y-auto general-list" 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">
<div v-for='item in list' :key="item.id"
class="flex flex-col gap-y-2.5 py-3 px-4 mb-3 doc-list-card">
<div>
<span class="label">随访日期</span>
<span>{{ item.visitDate }}</span>
</div>
<div class="text-ellipsis">
<span class="label">服务人群</span>
<span>{{ item.groupsArraysName || '-' }}</span>
</div>
<div>
<span class="label">随访方式</span>
<span>{{ item.visitWayName || '-' }}</span>
</div>
<div>
<span class="label">随访类型</span>
<span>{{ item.visitWayRulesName || '-' }}</span>
</div>
<div>
<span class="label">随访医生</span>
<span>{{ item.visitDoctorName || '-' }}</span>
</div>
<div>
<span class="label">随访科室</span>
<span>{{ item.visitOfficeName || '-' }}</span>
</div>
<div class="text-ellipsis">
<span class="label">随访机构</span>
<span>{{ item.visitUnitName || '-' }}</span>
</div>
<div class="divider"></div>
<div class="bt-group">
<van-button round size="small" class="doc-btn-primary" @click="toDetail(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>
</div>
</template>
<script>
import { fetchCurrencyList, delCurrencyById } from '@/api/doctor/generalFU.js'
export default {
inject: ['residentInfo'],
data() {
return {
list: [],
pagination: {
total: 0,
pageIndex: 1,
pageSize: 8
},
loading: false,
finished: false,
loadingRefresh: false,
isRefreshDisable: false
}
},
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) {
const query = {
pageIndex: this.pagination.pageIndex,
pageSize: this.pagination.pageSize,
residentInfoId: this.residentInfoId
}
fetchCurrencyList(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
})
},
onMore() {
this.pagination.pageIndex++
this.load(false)
},
onRefresh() {
this.pagination.pageIndex = 1
this.load()
},
toDetail(record) {
if (!record) return
if (record.id == null) {
showToast('暂时无法查看 详情信息')
return
}
this.$router.push({
path: '/doctor/followUp/generalFU/detail',
query: {
relationId: record.id
}
})
},
editBtn() {
},
delBtn() {
}
}
}
</script>
<style lang="less" scoped>
</style>
<template>
<div class="h-full overflow-y-auto general-list" ref='list'>
<van-pull-refresh v-model='loadingRefresh' @refresh='onRefresh'
:disabled='isRefreshDisable'>
<div class="flex flex-col">
<div v-for='item in list' :key="item.id"
class="flex flex-col gap-y-2.5 py-3 px-4 mb-3 doc-list-card">
<div>
<span class="label">状态</span>
<span>{{ item.statusName }}</span>
</div>
<div class="text-ellipsis">
<span class="label">转出单位</span>
<span>{{ item.unitName || '-' }}</span>
</div>
<div>
<span class="label">转出医生</span>
<span>{{ item.doctorName || '-' }}</span>
</div>
<div>
<span class="label">转诊类型</span>
<span>{{ item.referralTypeDesc || '-' }}</span>
</div>
<div>
<span class="label">来源</span>
<span>{{ item.source || '-' }}</span>
</div>
<div class="text-ellipsis">
<span class="label">接诊单位</span>
<span>{{ item.transferUnitName || '-' }}</span>
</div>
<div>
<span class="label">接诊医生</span>
<span>{{ item.attendingDoctorName || '-' }}</span>
</div>
<div>
<span class="label">发起时间</span>
<span>{{ item.startDate || '-' }}</span>
</div>
<div class="divider"></div>
<div class="bt-group">
<van-button round size="small" class="doc-btn-primary" @click="toDetail(item)">详情</van-button>
</div>
</div>
</div>
</van-pull-refresh>
<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>
</div>
</template>
<script>
import { getReferralList } from '@/api/doctor/resident.js'
export default {
inject: ['residentInfo'],
data() {
return {
list: [],
loadingRefresh: false,
isRefreshDisable: false
}
},
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) {
const query = {
residentInfoId: this.residentInfoId
}
getReferralList(query, loading).then(res => {
this.list = res.data || []
}).finally(() => {
this.loadingRefresh = false
})
},
onRefresh() {
this.load(false)
},
toDetail(record) {
if (!record) return
if (record.id == null) {
showToast('暂时无法查看 详情信息')
return
}
}
}
}
</script>
<style lang="less" scoped>
</style>
<template> <template>
<div class="record-list"> <div class="record-list" ref="list">
<div v-for="item in firstScreenList" :key="item.id" <van-pull-refresh v-model='loadingRefresh' @refresh='onRefresh'
class="first-card mb-3"> :disabled='isRefreshDisable'>
<div class="title px-4 py-1">主要慢病筛查记录</div> <div v-for="item in firstScreenList" :key="item.id"
<div class="flex flex-col gap-y-2.5 py-3 px-4 doc-list-card"> class="first-card mb-3">
<div> <div class="title px-4 py-1">主要慢病筛查记录</div>
<span class="label">高危评估</span> <div class="flex flex-col gap-y-2.5 py-3 px-4 doc-list-card">
<span>{{ item.screenResultName }}</span> <div>
</div> <span class="label">高危评估</span>
<div> <span>{{ item.screenResultName }}</span>
<span class="label">筛查日期</span> </div>
<span>{{ item.screenDate }}</span> <div>
</div> <span class="label">筛查日期</span>
<div> <span>{{ item.screenDate }}</span>
<span class="label">筛查单位</span> </div>
<span>{{ item.screenUnitName }}</span> <div>
</div> <span class="label">筛查单位</span>
<div> <span>{{ item.screenUnitName }}</span>
<span class="label">筛查科室</span> </div>
<span>{{ item.screenOfficeName }}</span> <div>
</div> <span class="label">筛查科室</span>
<div> <span>{{ item.screenOfficeName }}</span>
<span class="label">筛查医生</span> </div>
<span>{{ item.screenDoctorName }}</span> <div>
</div> <span class="label">筛查医生</span>
<div> <span>{{ item.screenDoctorName }}</span>
<span class="label">数据来源</span> </div>
<span>{{ item.sourceName }}</span> <div>
</div> <span class="label">数据来源</span>
<div> <span>{{ item.sourceName }}</span>
<span class="label">创建时间</span> </div>
<span>{{ item.created }}</span> <div>
</div> <span class="label">创建时间</span>
<div class="divider"></div> <span>{{ item.created }}</span>
<div class="bt-group"> </div>
<van-button round size="small" class="doc-btn-primary" @click="toDetail(item)">详情</van-button> <div class="divider"></div>
<van-button round size="small" class="doc-btn-primary" @click='editBtn(item)' <div class="bt-group">
v-if="record.allowUpdate == 1">修改</van-button> <van-button round size="small" class="doc-btn-primary" @click="toDetail(item)">详情</van-button>
<van-button round size="small" class="doc-btn-red" @click="delBtn(item)" <van-button round size="small" class="doc-btn-primary" @click='editBtn(item)'
v-if="record.allowDelete ==1">删除</van-button> v-if="item.allowUpdate == 1">修改</van-button>
<van-button round size="small" class="doc-btn-red" @click="delBtn(item)"
v-if="item.allowDelete ==1">删除</van-button>
</div>
</div> </div>
</div> </div>
</div> <div v-for="item in secondScreenList" :key="item.id"
<div v-for="item in secondScreenList" :key="item.id" class="second-card mb-3">
class="second-card mb-3"> <div class="title px-4 py-1">专病筛查记录</div>
<div class="title px-4 py-1">专病筛查记录</div> <div class="flex flex-col gap-y-2.5 py-3 px-4 doc-list-card">
<div class="flex flex-col gap-y-2.5 py-3 px-4 doc-list-card"> <div class="text-ellipsis">
<div class="text-ellipsis"> <span class="label">高危评估</span>
<span class="label">高危评估</span> <span>{{ item.specialScreenResultName }}</span>
<span>{{ item.specialScreenResultName }}</span> </div>
</div> <div>
<div> <span class="label">筛查日期</span>
<span class="label">筛查日期</span> <span>{{ item.screenDate }}</span>
<span>{{ item.screenDate }}</span> </div>
</div> <div>
<div> <span class="label">筛查单位</span>
<span class="label">筛查单位</span> <span>{{ item.screenUnitName }}</span>
<span>{{ item.screenUnitName }}</span> </div>
</div> <div>
<div> <span class="label">筛查科室</span>
<span class="label">筛查科室</span> <span>{{ item.screenOfficeName }}</span>
<span>{{ item.screenOfficeName }}</span> </div>
</div> <div>
<div> <span class="label">筛查医生</span>
<span class="label">筛查医生</span> <span>{{ item.screenDoctorName }}</span>
<span>{{ item.screenDoctorName }}</span> </div>
</div> <div>
<div> <span class="label">数据来源</span>
<span class="label">数据来源</span> <span>{{ item.sourceName }}</span>
<span>{{ item.sourceName }}</span> </div>
</div> <div>
<div> <span class="label">创建时间</span>
<span class="label">创建时间</span> <span>{{ item.created }}</span>
<span>{{ item.created }}</span> </div>
</div> <div class="divider"></div>
<div class="divider"></div> <div class="bt-group">
<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='editBtn(item)'
<van-button round size="small" class="doc-btn-primary" @click='editBtn(item)' v-if="item.allowUpdate == 1">修改</van-button>
v-if="record.allowUpdate == 1">修改</van-button> <van-button round size="small" class="doc-btn-red" @click="delBtn(item)"
<van-button round size="small" class="doc-btn-red" @click="delBtn(item)" v-if="item.allowUpdate == 1">删除</van-button>
v-if="record.allowUpdate == 1">删除</van-button> </div>
</div> </div>
</div> </div>
</div> </van-pull-refresh>
<div class='text-center shrink-0 empty' v-if='!firstScreenList.length && !secondScreenList.length'> <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;'> <img src='@/assets/image/doctor/empty.png' alt='' style='width: 1.2rem;'>
<p>暂无数据</p> <p>暂无数据</p>
...@@ -98,6 +101,8 @@ export default { ...@@ -98,6 +101,8 @@ export default {
inject: ['residentInfo'], inject: ['residentInfo'],
data() { data() {
return { return {
loadingRefresh: false,
isRefreshDisable: false,
firstScreenList: [], firstScreenList: [],
secondScreenList: [] secondScreenList: []
} }
...@@ -110,14 +115,29 @@ export default { ...@@ -110,14 +115,29 @@ export default {
created() { created() {
this.load() this.load()
}, },
mounted() {
const list = this.$refs.list
list.addEventListener('scroll', () => {
if (list.scrollTop > 0) {
this.isRefreshDisable = true
} else {
this.isRefreshDisable = false
}
})
},
methods: { methods: {
load() { load(loading = true) {
getScreenAllList(this.residentInfoId).then(res => { getScreenAllList(this.residentInfoId, loading).then(res => {
const result = res.data || {} const result = res.data || {}
this.firstScreenList = result.firstScreenList || [] this.firstScreenList = result.firstScreenList || []
this.secondScreenList = result.secondScreenList || [] this.secondScreenList = result.secondScreenList || []
}).finally(() => {
this.loadingRefresh = false
}) })
}, },
onRefresh() {
this.load(false)
},
toDetail() { toDetail() {
}, },
......
...@@ -118,7 +118,7 @@ export default { ...@@ -118,7 +118,7 @@ export default {
}, },
onRefresh() { onRefresh() {
this.pagination.pageIndex = 1 this.pagination.pageIndex = 1
this.load() this.load(false)
}, },
toDetail(record) { toDetail(record) {
if (!record) return if (!record) return
......
...@@ -26,22 +26,28 @@ ...@@ -26,22 +26,28 @@
import DocNavBar from '@/doctor/components/docNavBar/DocNavBar.vue' import DocNavBar from '@/doctor/components/docNavBar/DocNavBar.vue'
import TableWork from './tables/Work.vue' import TableWork from './tables/Work.vue'
import TableVisit from './tables/Visit.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 { export default {
components: { components: {
DocNavBar, DocNavBar,
TableWork, TableWork,
TableVisit TableVisit,
TableReceive,
TableFirstScreen,
TableHighRisk
}, },
data() { data() {
return { return {
configTab: [ configTab: [
{ key: 'work', component: 'TableWork', name: '工作记录' }, { key: 'work', component: 'TableWork', name: '工作记录' },
{ key: 'visit', component: 'TableVisit', name: '慢病待随访' }, { key: 'visit', component: 'TableVisit', name: '慢病待随访' },
{ key: 'screenRecord', component: 'TableScreenRecord', name: '当年待筛查记录' },
{ key: 'firstScreen', component: 'TableFirstScreen', name: '初筛高危待筛查' },
{ key: 'receive', component: 'TableReceive', 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:{} 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>
<div class="flex items-center">
<van-field v-model="form.startDate" placeholder="开始日期" readonly
class="doc-input"
@click="() => { dateShow = true, dateMark = 1 }"/>
<span class="px-2">~</span>
<van-field v-model="form.endDate" placeholder="结束日期" readonly
class="doc-input"
@click="() => { dateShow = true, dateMark = 2 }"/>
</div>
<van-popup v-model:show="dateShow" position="bottom">
<van-date-picker @confirm="onDateConfirm" @cancel="dateShow = false" />
</van-popup>
<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,
// 时间选择
dateShow: false,
// 判断对哪一个日期赋值
dateMark: 0,
form: { ...DefaultForm },
}
},
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) {
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
},
onDateConfirm({ selectedValues }) {
const result = selectedValues.join('-')
if (this.dateMark === 1) {
this.form.startDate = result
} else if (this.dateMark === 2) {
this.form.endDate = result
}
this.dateShow = false
this.dateMark = 0
},
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);
})
}
}
}
</script>
<style lang="less" scoped>
</style>
<template>
<div class="h-full flex flex-col px-2 py-3 heigh-risk">
<div class="shrink-0 flex pb-2 items-center">
<van-tabs shrink type="card" class="grow doc-tab-round" line
v-model:active="activeTab"
@change="tabChange">
<van-tab v-for="item in tabList" :key="item.value"
:title="item.name"></van-tab>
</van-tabs>
<div class="shrink-0 pl-3" style="border-left: 1px solid #A5AEBE;" @click='openSearch'>
<doc-icon type="doc-menu" style="font-size:.2rem;color:#03053D"/>
</div>
</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.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>
<div class="flex items-center">
<van-field v-model="form.startDate" placeholder="开始日期" readonly
class="doc-input"
@click="() => { dateShow = true, dateMark = 1 }"/>
<span class="px-2">~</span>
<van-field v-model="form.endDate" placeholder="结束日期" readonly
class="doc-input"
@click="() => { dateShow = true, dateMark = 2 }"/>
</div>
<van-popup v-model:show="dateShow" position="bottom">
<van-date-picker @confirm="onDateConfirm" @cancel="dateShow = false" />
</van-popup>
<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 { useStore } from '@/doctor/store'
import { getBeSecondScreenByPage, addIgnoreRecord } from '@/api/doctor/workbench.js'
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: 'TableHighRisk',
components: {
CheckBtn,
IdCardScan
},
data() {
return {
store: useStore(),
list: [],
pagination: {
total: 0,
pageIndex: 1,
pageSize: 8
},
loading: false,
finished: false,
loadingRefresh: false,
isRefreshDisable: false,
// 慢病tab列表
tabList: [
{ name: '高血压', value: 1 },
{ name: '糖尿病', value: 2 },
{ name: '冠心病', value: 3 },
{ name: '脑卒中', value: 4 },
{ name: '慢阻肺', value: 5 },
{ name: '慢性肾病', value: 6 },
{ name: '血脂异常', value: 7 }
],
activeTab: 0,
// 搜索弹出框
searchVisible: false,
// 时间选择
dateShow: false,
// 判断对哪一个日期赋值
dateMark: 0,
form: { ...DefaultForm },
}
},
computed: {
activeTabItem() {
return this.tabList[this.activeTab] || {}
},
listDom() {
return this.$refs.list
},
isValidArray() {
return [
{ name: '是', value: 1 },
{ name: '否', value: 2 }
]
}
},
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) {
const query = {
pageIndex: this.pagination.pageIndex,
pageSize: this.pagination.pageSize,
serveType: 3,
searchType: 1,
diseaseType: this.activeTabItem.value,
...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.search()
},
onMore() {
this.pagination.pageIndex++
this.load(false)
},
onRefresh() {
this.pagination.pageIndex = 1
this.load()
},
tabChange() {
this.pagination.pageIndex = 1
this.load()
},
openSearch() {
this.searchVisible = true
},
onDateConfirm({ selectedValues }) {
const result = selectedValues.join('-')
if (this.dateMark === 1) {
this.form.startDate = result
} else if (this.dateMark === 2) {
this.form.endDate = result
}
this.dateShow = false
this.dateMark = 0
},
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: 3,
diseaseType: this.activeTabItem.value
}
addIgnoreRecord(params).then(() => {
this.list = this.list.filter(e => e.id !== record.id)
setTimeout(() => {
showToast('操作成功')
}, 800);
})
},
}
}
</script>
<style lang="less" scoped>
</style>
<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>
<div class="flex items-center">
<van-field v-model="form.startDate" placeholder="开始日期" readonly
class="doc-input"
@click="() => { dateShow = true, dateMark = 1 }"/>
<span class="px-2">~</span>
<van-field v-model="form.endDate" placeholder="结束日期" readonly
class="doc-input"
@click="() => { dateShow = true, dateMark = 2 }"/>
</div>
<van-popup v-model:show="dateShow" position="bottom">
<van-date-picker @confirm="onDateConfirm" @cancel="dateShow = false" />
</van-popup>
<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,
// 时间选择
dateShow: false,
// 判断对哪一个日期赋值
dateMark: 0,
form: { ...DefaultForm },
}
},
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) {
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
},
onDateConfirm({ selectedValues }) {
const result = selectedValues.join('-')
if (this.dateMark === 1) {
this.form.startDate = result
} else if (this.dateMark === 2) {
this.form.endDate = result
}
this.dateShow = false
this.dateMark = 0
},
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);
})
}
}
}
</script>
<style lang="less" scoped>
</style>
<template> <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"> <div class="shrink-0 flex pb-2 items-center">
<van-tabs shrink type="card" class="grow doc-tab-round" line <van-tabs shrink type="card" class="grow doc-tab-round" line
v-model:active="activeTab" v-model:active="activeTab"
...@@ -87,6 +87,19 @@ ...@@ -87,6 +87,19 @@
<div class="my-3">居民姓名</div> <div class="my-3">居民姓名</div>
<van-field v-model="form.residentName" placeholder="输入居民姓名" maxlength="100" <van-field v-model="form.residentName" placeholder="输入居民姓名" maxlength="100"
class="doc-input"/> class="doc-input"/>
<div class="my-3">下次随访日期</div>
<div class="flex items-center">
<van-field v-model="form.nextVisitDateStart" placeholder="开始日期" readonly
class="doc-input"
@click="() => { dateShow = true, dateMark = 1 }"/>
<span class="px-2">~</span>
<van-field v-model="form.nextVisitDateEnd" placeholder="结束日期" readonly
class="doc-input"
@click="() => { dateShow = true, dateMark = 2 }"/>
</div>
<van-popup v-model:show="dateShow" position="bottom">
<van-date-picker @confirm="onDateConfirm" @cancel="dateShow = false" />
</van-popup>
<div class="my-3">数据来源</div> <div class="my-3">数据来源</div>
<CheckBtn :options="store.getDict('CP00124')" v-model:value="form.source" column-3 <CheckBtn :options="store.getDict('CP00124')" v-model:value="form.source" column-3
class="check-btn-workbench"/> class="check-btn-workbench"/>
...@@ -160,8 +173,11 @@ export default { ...@@ -160,8 +173,11 @@ export default {
activeTab: 0, activeTab: 0,
// 搜索弹出框 // 搜索弹出框
searchVisible: false, searchVisible: false,
form: { ...DefaultForm }, // 时间选择
rangeDate: [], dateShow: false,
// 判断对哪一个日期赋值
dateMark: 0,
form: { ...DefaultForm }
} }
}, },
computed: { computed: {
...@@ -197,7 +213,8 @@ export default { ...@@ -197,7 +213,8 @@ export default {
pageIndex: this.pagination.pageIndex, pageIndex: this.pagination.pageIndex,
pageSize: this.pagination.pageSize, pageSize: this.pagination.pageSize,
searchType: 1, searchType: 1,
diseaseType: this.activeTabItem.value diseaseType: this.activeTabItem.value,
...this.form
} }
getVisitByPage(query, loading).then(res => { getVisitByPage(query, loading).then(res => {
if (this.pagination.pageIndex === 1) { if (this.pagination.pageIndex === 1) {
...@@ -218,7 +235,6 @@ export default { ...@@ -218,7 +235,6 @@ export default {
}, },
reset() { reset() {
this.form = { ...DefaultForm } this.form = { ...DefaultForm }
this.rangeDate = []
this.search() this.search()
}, },
onMore() { onMore() {
...@@ -236,6 +252,16 @@ export default { ...@@ -236,6 +252,16 @@ export default {
openSearch() { openSearch() {
this.searchVisible = true this.searchVisible = true
}, },
onDateConfirm({ selectedValues }) {
const result = selectedValues.join('-')
if (this.dateMark === 1) {
this.form.nextVisitDateStart = result
} else if (this.dateMark === 2) {
this.form.nextVisitDateEnd = result
}
this.dateShow = false
this.dateMark = 0
},
toDetail(record) { toDetail(record) {
if (!record) return if (!record) return
if (record.residentInfoId == null) { if (record.residentInfoId == null) {
...@@ -264,16 +290,7 @@ export default { ...@@ -264,16 +290,7 @@ export default {
path: `/doctor/followUp/generalFU/add`, path: `/doctor/followUp/generalFU/add`,
query: {...others} query: {...others}
}) })
}, }
dateHandle() {
if (this.rangeDate && this.rangeDate.length) {
this.form.nextVisitDateStart = this.rangeDate[0]
this.form.nextVisitDateEnd = this.rangeDate[1]
return
}
this.form.nextVisitDateStart = undefined
this.form.nextVisitDateEnd = undefined
},
} }
} }
</script> </script>
......
...@@ -64,14 +64,28 @@ ...@@ -64,14 +64,28 @@
<div class="px-4 py-3 grow overflow-y-auto" style=""> <div class="px-4 py-3 grow overflow-y-auto" style="">
<div class="mb-3">身份证号</div> <div class="mb-3">身份证号</div>
<van-field v-model="form.idCard" placeholder="请输入身份证号" maxlength="20" <van-field v-model="form.idCard" placeholder="请输入身份证号" maxlength="20"
clearable
class="doc-input"> class="doc-input">
<template #right-icon> <template #right-icon>
<IdCardScan /> <IdCardScan />
</template> </template>
</van-field> </van-field>
<div class="my-3">居民姓名</div> <div class="my-3">居民姓名</div>
<van-field v-model="form.patientName" placeholder="输入居民姓名" maxlength="100" <van-field v-model="form.patientName" placeholder="输入居民姓名" maxlength="100" clearable
class="doc-input"/> class="doc-input"/>
<div class="my-3">服务日期</div>
<div class="flex items-center">
<van-field v-model="form.startDate" placeholder="开始日期" readonly
class="doc-input"
@click="() => { dateShow = true, dateMark = 1 }"/>
<span class="px-2">~</span>
<van-field v-model="form.endDate" placeholder="结束日期" readonly
class="doc-input"
@click="() => { dateShow = true, dateMark = 2 }"/>
</div>
<van-popup v-model:show="dateShow" position="bottom">
<van-date-picker @confirm="onDateConfirm" @cancel="dateShow = false" />
</van-popup>
<div class="my-3">数据来源</div> <div class="my-3">数据来源</div>
<CheckBtn :options="store.getDict('CP00124')" v-model:value="form.source" column-3 <CheckBtn :options="store.getDict('CP00124')" v-model:value="form.source" column-3
class="check-btn-workbench"/> class="check-btn-workbench"/>
...@@ -132,8 +146,11 @@ export default { ...@@ -132,8 +146,11 @@ export default {
isRefreshDisable: false, isRefreshDisable: false,
// 搜索弹出框 // 搜索弹出框
searchVisible: false, searchVisible: false,
form: { ...DefaultForm }, // 时间选择
rangeDate: [], dateShow: false,
// 判断对哪一个日期赋值
dateMark: 0,
form: { ...DefaultForm }
} }
}, },
computed: { computed: {
...@@ -156,7 +173,6 @@ export default { ...@@ -156,7 +173,6 @@ export default {
}, },
methods: { methods: {
load(loading = true) { load(loading = true) {
this.dateHandle()
const query = { const query = {
pageIndex: this.pagination.pageIndex, pageIndex: this.pagination.pageIndex,
pageSize: this.pagination.pageSize, pageSize: this.pagination.pageSize,
...@@ -182,7 +198,6 @@ export default { ...@@ -182,7 +198,6 @@ export default {
}, },
reset() { reset() {
this.form = { ...DefaultForm } this.form = { ...DefaultForm }
this.rangeDate = []
this.search() this.search()
}, },
onMore() { onMore() {
...@@ -196,6 +211,16 @@ export default { ...@@ -196,6 +211,16 @@ export default {
openSearch() { openSearch() {
this.searchVisible = true this.searchVisible = true
}, },
onDateConfirm({ selectedValues }) {
const result = selectedValues.join('-')
if (this.dateMark === 1) {
this.form.startDate = result
} else if (this.dateMark === 2) {
this.form.endDate = result
}
this.dateShow = false
this.dateMark = 0
},
toDetail(record) { toDetail(record) {
if (!record) return if (!record) return
if (record.residentInfoId == null) { if (record.residentInfoId == null) {
...@@ -208,16 +233,7 @@ export default { ...@@ -208,16 +233,7 @@ export default {
residentInfoId: record.residentInfoId residentInfoId: record.residentInfoId
} }
}) })
}, }
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> </script>
......
...@@ -34,7 +34,11 @@ ...@@ -34,7 +34,11 @@
<van-button round size="small" class="doc-btn-primary">修改</van-button> <van-button round size="small" class="doc-btn-primary">修改</van-button>
<van-button round size="small" class="doc-btn-red">删除</van-button> <van-button round size="small" class="doc-btn-red">删除</van-button>
<h4>MP4</h4>
<Mp4 :files="mp4Data" remove/>
<h4>MP3</h4>
<Mp3 :file="mp3Data" remove/>
</div> </div>
</template> </template>
...@@ -42,12 +46,16 @@ ...@@ -42,12 +46,16 @@
import DocUnit from '@/doctor/components/docUnit/DocUnit.vue' import DocUnit from '@/doctor/components/docUnit/DocUnit.vue'
import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue' import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.vue'
import DocImageUpload from '@/doctor/components/docImageUpload/DocImageUpload.vue' import DocImageUpload from '@/doctor/components/docImageUpload/DocImageUpload.vue'
import Mp4 from '@/doctor/components/mediaPlay/Mp4.vue'
import Mp3 from '@/doctor/components/mediaPlay/Mp3.vue'
export default { export default {
components:{ components:{
DocUnit, DocUnit,
CheckBtn, CheckBtn,
DocImageUpload DocImageUpload,
Mp4,
Mp3
}, },
data(){ data(){
return { return {
...@@ -62,7 +70,9 @@ export default { ...@@ -62,7 +70,9 @@ export default {
{ name: '肝功能', value: 3 }, { name: '肝功能', value: 3 },
{ name: '肾功能', value: 4 }, { name: '肾功能', value: 4 },
{ name: '电解质', value: 5 } { name: '电解质', value: 5 }
] ],
mp4Data: [{ annexId: 1, annexUrl: 'https://beta-tumour.zmnyjk.com/chronic-admin/file-proxy/tumour/20241025/1729847263522306995.mp4?e=1733300684&token=yrkyCAltqk1WVrw1ZNWUl5F5gLxE0O8LJ0Vq4hzi:xukYHUsfX6OuAXIagBuHMCJ8XNg=', annexFileName: 'kanna.mp4' }],
mp3Data: { annexId: 2, annexUrl: 'https://beta-tumour.zmnyjk.com/chronic-admin/file-proxy/tumour/20241025/1729847336798585370.mp3?e=1733300684&token=yrkyCAltqk1WVrw1ZNWUl5F5gLxE0O8LJ0Vq4hzi:RTqkJZsScil9rGf9kdA0Lq1TEOs=', annexFileName: 'Never Gonna Give You Up-Rick Astley.mp3'}
} }
}, },
created() { created() {
......
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