Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
frontend-h5
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
songrui
frontend-h5
Commits
33a8d3eb
Commit
33a8d3eb
authored
Nov 28, 2024
by
songrui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
居民详情筛查管理
parent
befffd23
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
271 additions
and
10 deletions
+271
-10
screening.js
src/api/doctor/screening.js
+7
-0
visit.js
src/api/doctor/visit.js
+7
-0
PatientDetail.vue
src/doctor/patientDetail/PatientDetail.vue
+6
-1
Index.vue
src/doctor/patientDetail/components/screening/Index.vue
+26
-3
Record.vue
src/doctor/patientDetail/components/screening/Record.vue
+99
-3
Visit.vue
src/doctor/patientDetail/components/screening/Visit.vue
+126
-3
No files found.
src/api/doctor/screening.js
0 → 100644
View file @
33a8d3eb
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
})
}
\ No newline at end of file
src/api/doctor/visit.js
0 → 100644
View file @
33a8d3eb
import
{
fetchBase
}
from
'@/api/doctor/doctorFetch'
//获取高危随访列表v1.2
export
function
getHighVisitList
(
params
,
loading
)
{
return
fetchBase
({
url
:
`/chronic-admin/v1/chronic-high-visit-collect/page`
,
body
:
params
,
loading
})
}
\ No newline at end of file
src/doctor/patientDetail/PatientDetail.vue
View file @
33a8d3eb
...
@@ -57,7 +57,7 @@
...
@@ -57,7 +57,7 @@
<van-tab
v-for=
"item in tabList"
:key=
"item.id"
<van-tab
v-for=
"item in tabList"
:key=
"item.id"
:title=
"item.name"
></van-tab>
:title=
"item.name"
></van-tab>
</van-tabs>
</van-tabs>
<div
class=
"grow py-3 px-2"
style=
"min-height: 0px;"
>
<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'"
/>
</div>
</div>
</div>
</div>
...
@@ -86,6 +86,11 @@ export default {
...
@@ -86,6 +86,11 @@ export default {
activeTab
:
0
activeTab
:
0
}
}
},
},
provide
()
{
return
{
residentInfo
:
()
=>
this
.
residentInfo
}
},
computed
:
{
computed
:
{
residentInfoId
()
{
residentInfoId
()
{
return
this
.
$route
.
query
.
residentInfoId
return
this
.
$route
.
query
.
residentInfoId
...
...
src/doctor/patientDetail/components/screening/Index.vue
View file @
33a8d3eb
...
@@ -5,11 +5,11 @@
...
@@ -5,11 +5,11 @@
<van-tab
title=
"筛查记录"
></van-tab>
<van-tab
title=
"筛查记录"
></van-tab>
<van-tab
title=
"随访记录"
></van-tab>
<van-tab
title=
"随访记录"
></van-tab>
</van-tabs>
</van-tabs>
<div
class=
"grow py-3 overflow-y-auto"
>
<div
class=
"pt-3"
></div>
<div
class=
"grow pb-3 overflow-y-auto"
>
<ScreenRecordList
v-if=
"activeTab == 0"
/>
<ScreenRecordList
v-if=
"activeTab == 0"
/>
<VisitList
v-else-if=
"activeTab == 1"
/>
<VisitList
v-else-if=
"activeTab == 1"
/>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
...
@@ -31,5 +31,28 @@ export default {
...
@@ -31,5 +31,28 @@ export default {
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
// 通用随访card
:deep(.general-card) {
border-radius: 12px;
background: linear-gradient(to bottom, #FFC9D3, #FFE9E9);
.title {
color: #8E2A4A;
}
}
// 初筛 主要慢病
:deep(.first-card) {
border-radius: 12px;
background: linear-gradient(to bottom, #FFD8BC, #FFF0E9);
.title {
color: #8E562A;
}
}
// 复筛 专病高危
:deep(.second-card) {
border-radius: 12px;
background: linear-gradient(to bottom, #B3F5F7, #FFFFE9);
.title {
color: #2A8E75;
}
}
</
style
>
</
style
>
src/doctor/patientDetail/components/screening/Record.vue
View file @
33a8d3eb
<
template
>
<
template
>
<div
class=
"record-list"
style=
"height: 900px"
>
<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>
</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>
</div>
<div
class=
'text-center shrink-0 empty'
v-if=
'!firstScreenList.length && !secondScreenList.length'
>
<img
src=
'@/assets/image/doctor/empty.png'
alt=
''
style=
'width: 1.2rem;'
>
<p>
暂无数据
</p>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
export
default
{
import
{
getScreenAllList
}
from
'@/api/doctor/screening.js'
export
default
{
inject
:
[
'residentInfo'
],
data
()
{
return
{
firstScreenList
:
[],
secondScreenList
:
[]
}
},
computed
:
{
residentInfoId
()
{
return
this
.
residentInfo
().
residentInfoId
}
},
created
()
{
this
.
load
()
},
methods
:
{
load
()
{
getScreenAllList
(
this
.
residentInfoId
).
then
(
res
=>
{
const
result
=
res
.
data
||
{}
this
.
firstScreenList
=
result
.
firstScreenList
||
[]
this
.
secondScreenList
=
result
.
secondScreenList
||
[]
})
}
}
}
}
</
script
>
</
script
>
...
...
src/doctor/patientDetail/components/screening/Visit.vue
View file @
33a8d3eb
<
template
>
<
template
>
<div
class=
"visit-list"
style=
"height: 900px"
>
<div
class=
"h-full visit-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=
"['mb-3',
{'first-card': item.serveType == 1},
{'second-card': item.serveType == 2},
{'general-card': item.serveType == 3}]">
<div
class=
"title px-4 py-1"
>
{{
item
.
serveTypeName
}}
</div>
<div
class=
"flex flex-col gap-y-2.5 py-3 px-4 doc-list-card"
>
<div>
<span
class=
"label"
>
随访日期
</span>
<span>
{{
item
.
visitDate
}}
</span>
</div>
<div>
<span
class=
"label"
>
随访类型
</span>
<span>
{{
item
.
visitTypeName
||
'-'
}}
</span>
</div>
<div>
<span
class=
"label"
>
随访方式
</span>
<span>
{{
item
.
visitWayName
||
'-'
}}
</span>
</div>
<div>
<span
class=
"label"
>
随访医生
</span>
<span>
{{
item
.
visitDoctorName
||
'-'
}}
</span>
</div>
<div>
<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>
</div>
</van-list>
<div
class=
'text-center shrink-0 empty'
v-if=
'!list.length'
>
<img
src=
'@/assets/image/doctor/empty.png'
alt=
''
style=
'width: 1.2rem;'
>
<p>
暂无数据
</p>
</div>
</van-pull-refresh>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
export
default
{
import
{
getHighVisitList
}
from
'@/api/doctor/visit.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
}
getHighVisitList
(
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/patient-detail',
// query: {
// residentInfoId: record.residentInfoId
// }
// })
}
}
}
}
</
script
>
</
script
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment