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) {
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) {
return fetchBase({ url: `/tumour-admin/v1/sys-user/org-by-name/${orgName}` })
......@@ -53,14 +48,14 @@ export function updateCurrency(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-currency/update`, body: params, loading: true })
}
// 删除随访
export function deleteVisit(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-record/delete`, body:params, loading: true })
// 列表查询
export function fetchCurrencyList(params, loading) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-currency/page`, body: params, loading })
}
// 查询随访列表
export function queryVisitByPage(params, loading) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-record/page`, body: params, loading })
//删除通用随访
export function delCurrencyById(params) {
return fetchBase({ url: `/chronic-admin/v1/chronic-visit-currency/delete`, body: params, loading: true })
}
......
......@@ -13,4 +13,14 @@ export function updateResident(params) {
// 慢性病管理列表查询
export function getResidentByPage(params) {
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'
//查初筛和复筛列表
export function getScreenAllList(residentInfoId) {
return fetchBase({ url: `/chronic-admin/v1/chronic-screening-record/screen-list`,body:{residentInfoId},loading: true})
export function getScreenAllList(residentInfoId, loading) {
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) {
// 模板 主键查询
export function getTemplateDetail(params, loading = true) {
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 @@
</div>
<span class="shrink-0 time" :style="`opacity: ${player.currentTime ? 1 : 0}`">
{{ 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>
<audio ref="audio" type="audio/mpeg" crossOrigin="anonymous" style="display: none"></audio>
</div>
......@@ -26,8 +29,10 @@ import { showToast } from 'vant'
export default {
props: {
file: { default: () => ({}) },
activeMediaUrl: { default: '' }
activeMediaUrl: { default: '' },
remove: Boolean
},
emits: ['onRemove'],
data() {
return {
player: {},
......@@ -94,6 +99,9 @@ export default {
onProgress(value) {
this.player.progressChange(value)
this.player.playing = true
},
removeBtn() {
this.$emit('onRemove', this.file)
}
},
watch: {
......
......@@ -6,6 +6,9 @@
<div class="shrink-0 play-bt" @click="start(item)">
<doc-icon type="doc-play" />
</div>
<span class="close-btn" @click.stop="removeBtn(item)" v-if="remove">
<doc-icon type="close-circle" />
</span>
</div>
<div v-if="item.annexFileName" class="text-12 my-1 text-ellipsis">{{ item.annexFileName }}</div>
</div>
......@@ -33,8 +36,10 @@
<script>
export default {
props: {
files: { default: () => [] }
files: { default: () => [] },
remove: Boolean
},
emits: ['onRemove'],
data() {
return {
visible: false,
......@@ -46,6 +51,9 @@ export default {
this.activeVideo = item
this.visible = true
this.$emit('play', item)
},
removeBtn(item) {
this.$emit('onRemove', item)
}
}
}
......@@ -56,6 +64,7 @@ export default {
>div {
width: calc(50% - 5px);
.item {
position: relative;
background: url('@/assets/image/residentWX/video-default.png') no-repeat;
background-size: 100%;
height: .84rem;
......@@ -75,6 +84,12 @@ export default {
font-size: 15px;
padding-left: 2px;
}
.close-btn {
position: absolute;
font-size: 16px;
top: -8px;
right: -8px;
}
}
.wrapper {
position: relative;
......
......@@ -59,6 +59,9 @@
</van-tabs>
<div class="grow py-3 px-2" style="min-height: 0px;" v-if="residentInfo.id">
<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>
<van-popup
v-model:show="addVisible"
......@@ -83,18 +86,25 @@
</template>
<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 { 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 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 {
components: {
DocNavBar,
ChronicTag,
ScreeningList,
GeneralList,
ReferralList,
ConsultationList,
CheckBtn
},
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>
<div class="record-list">
<div v-for="item in firstScreenList" :key="item.id"
class="first-card mb-3">
<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>
<span class="label">高危评估</span>
<span>{{ item.screenResultName }}</span>
</div>
<div>
<span class="label">筛查日期</span>
<span>{{ item.screenDate }}</span>
</div>
<div>
<span class="label">筛查单位</span>
<span>{{ item.screenUnitName }}</span>
</div>
<div>
<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 class="divider"></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='editBtn(item)'
v-if="record.allowUpdate == 1">修改</van-button>
<van-button round size="small" class="doc-btn-red" @click="delBtn(item)"
v-if="record.allowDelete ==1">删除</van-button>
<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="flex flex-col gap-y-2.5 py-3 px-4 doc-list-card">
<div>
<span class="label">高危评估</span>
<span>{{ item.screenResultName }}</span>
</div>
<div>
<span class="label">筛查日期</span>
<span>{{ item.screenDate }}</span>
</div>
<div>
<span class="label">筛查单位</span>
<span>{{ item.screenUnitName }}</span>
</div>
<div>
<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 class="divider"></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='editBtn(item)'
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 v-for="item in secondScreenList" :key="item.id"
class="second-card mb-3">
<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="text-ellipsis">
<span class="label">高危评估</span>
<span>{{ item.specialScreenResultName }}</span>
</div>
<div>
<span class="label">筛查日期</span>
<span>{{ item.screenDate }}</span>
</div>
<div>
<span class="label">筛查单位</span>
<span>{{ item.screenUnitName }}</span>
</div>
<div>
<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 class="divider"></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='editBtn(item)'
v-if="record.allowUpdate == 1">修改</van-button>
<van-button round size="small" class="doc-btn-red" @click="delBtn(item)"
v-if="record.allowUpdate == 1">删除</van-button>
<div v-for="item in secondScreenList" :key="item.id"
class="second-card mb-3">
<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="text-ellipsis">
<span class="label">高危评估</span>
<span>{{ item.specialScreenResultName }}</span>
</div>
<div>
<span class="label">筛查日期</span>
<span>{{ item.screenDate }}</span>
</div>
<div>
<span class="label">筛查单位</span>
<span>{{ item.screenUnitName }}</span>
</div>
<div>
<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 class="divider"></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='editBtn(item)'
v-if="item.allowUpdate == 1">修改</van-button>
<van-button round size="small" class="doc-btn-red" @click="delBtn(item)"
v-if="item.allowUpdate == 1">删除</van-button>
</div>
</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>
......@@ -98,6 +101,8 @@ export default {
inject: ['residentInfo'],
data() {
return {
loadingRefresh: false,
isRefreshDisable: false,
firstScreenList: [],
secondScreenList: []
}
......@@ -110,14 +115,29 @@ export default {
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() {
getScreenAllList(this.residentInfoId).then(res => {
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)
},
toDetail() {
},
......
......@@ -118,7 +118,7 @@ export default {
},
onRefresh() {
this.pagination.pageIndex = 1
this.load()
this.load(false)
},
toDetail(record) {
if (!record) return
......
......@@ -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>
<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>
This diff is collapsed.
This diff is collapsed.
<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"
......@@ -87,6 +87,19 @@
<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.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>
<CheckBtn :options="store.getDict('CP00124')" v-model:value="form.source" column-3
class="check-btn-workbench"/>
......@@ -160,8 +173,11 @@ export default {
activeTab: 0,
// 搜索弹出框
searchVisible: false,
form: { ...DefaultForm },
rangeDate: [],
// 时间选择
dateShow: false,
// 判断对哪一个日期赋值
dateMark: 0,
form: { ...DefaultForm }
}
},
computed: {
......@@ -197,7 +213,8 @@ export default {
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) {
......@@ -218,7 +235,6 @@ export default {
},
reset() {
this.form = { ...DefaultForm }
this.rangeDate = []
this.search()
},
onMore() {
......@@ -236,6 +252,16 @@ export default {
openSearch() {
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) {
if (!record) return
if (record.residentInfoId == null) {
......@@ -264,16 +290,7 @@ export default {
path: `/doctor/followUp/generalFU/add`,
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>
......
......@@ -64,14 +64,28 @@
<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"
clearable
class="doc-input">
<template #right-icon>
<IdCardScan />
</template>
</van-field>
<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"/>
<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-3
class="check-btn-workbench"/>
......@@ -132,8 +146,11 @@ export default {
isRefreshDisable: false,
// 搜索弹出框
searchVisible: false,
form: { ...DefaultForm },
rangeDate: [],
// 时间选择
dateShow: false,
// 判断对哪一个日期赋值
dateMark: 0,
form: { ...DefaultForm }
}
},
computed: {
......@@ -156,7 +173,6 @@ export default {
},
methods: {
load(loading = true) {
this.dateHandle()
const query = {
pageIndex: this.pagination.pageIndex,
pageSize: this.pagination.pageSize,
......@@ -182,7 +198,6 @@ export default {
},
reset() {
this.form = { ...DefaultForm }
this.rangeDate = []
this.search()
},
onMore() {
......@@ -196,6 +211,16 @@ export default {
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) {
......@@ -208,16 +233,7 @@ export default {
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>
......
......@@ -34,7 +34,11 @@
<van-button round size="small" class="doc-btn-primary">修改</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>
</template>
......@@ -42,12 +46,16 @@
import DocUnit from '@/doctor/components/docUnit/DocUnit.vue'
import CheckBtn from '@/doctor/components/checkBtn/CheckBtn.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 {
components:{
DocUnit,
CheckBtn,
DocImageUpload
DocImageUpload,
Mp4,
Mp3
},
data(){
return {
......@@ -62,7 +70,9 @@ export default {
{ name: '肝功能', value: 3 },
{ name: '肾功能', value: 4 },
{ 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() {
......
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