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