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
aec518aa
Commit
aec518aa
authored
Oct 12, 2024
by
gengchunlei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
居民端小程序初始化文件与配置
parent
8bc6a62b
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
882 additions
and
372 deletions
+882
-372
Doctor.vue
src/doctor/Doctor.vue
+1
-1
ListCopy.vue
src/doctor/followUp/ListCopy.vue
+273
-0
List_.vue
src/doctor/followUp/List_.vue
+0
-327
Visit.vue
src/doctor/resident/Visit.vue
+62
-44
ResidentWX.vue
src/residentWX/ResidentWX.vue
+62
-0
FirstDetail.vue
src/residentWX/screening/FirstDetail.vue
+167
-0
List.vue
src/residentWX/screening/List.vue
+94
-0
SecondDetail.vue
src/residentWX/screening/SecondDetail.vue
+167
-0
index.js
src/residentWX/store/index.js
+30
-0
common.less
src/residentWX/utils/common.less
+0
-0
index.js
src/router/index.js
+26
-0
No files found.
src/doctor/Doctor.vue
View file @
aec518aa
...
...
@@ -52,7 +52,7 @@ export default {
if
(
!
token
)
{
token
=
sessionStorage
.
getItem
(
'token'
)
if
(
process
.
env
.
NODE_ENV
!==
'production'
)
{
token
=
'
72b191d3-e3a0-49ce-884a-1dd3452b5d9a
'
token
=
'
4ef7a32e-c217-44b6-ac5d-8ad9a91d38a0
'
}
}
if
(
token
)
{
...
...
src/doctor/followUp/ListCopy.vue
0 → 100644
View file @
aec518aa
<
template
>
<div
class=
'all-back'
>
<van-nav-bar
title=
'慢病管理'
left-text=
''
left-arrow
@
click-right=
'toSearch'
@
click-left=
'toBack'
>
<template
#
right
>
<doc-icon
type=
'doc-search'
style=
'color: #262626'
/>
</
template
>
</van-nav-bar>
<div
class=
'top-title'
>
我的待随访({{ total }})
</div>
<van-tabs
v-model:active=
'active'
@
change=
'changeTab'
>
<van-tab
:name=
'item.name'
v-for=
'item in tabList'
:key=
'item.name'
>
<
template
#
title
>
<span>
{{
item
.
title
}}
(
{{
item
.
num
}}
)
</span>
</
template
>
</van-tab>
</van-tabs>
<van-pull-refresh
v-model=
'loading'
@
refresh=
'onRefresh'
:disabled=
'isRefreshDisable'
>
<div
class=
'list-data'
ref=
'list'
>
<van-list
v-model:loading=
'loadingTable'
:finished=
'finished'
:finished-text=
"detailInfo.length ? '没有更多了' : ''"
@
load=
'onMore'
>
<div
class=
'mt-10 white-back p-16'
v-for=
'item in detailInfo'
:key=
'item.id'
>
<div
class=
'flex items-center'
>
<div
class=
'base-title'
>
{{ item.residentName }}
</div>
<div
class=
'second-title plr-8'
>
{{ getInfoByIdCard(item.idCard).age }}岁
</div>
<div
class=
'second-title plr-6'
>
{{ item.genderName }}
</div>
</div>
<div
class=
'mt-3 flex items-center'
>
<div
class=
'detail-left'
>
身份证号
</div>
<div
class=
'detail-right'
>
{{ $idCardHide(item.idCard) }}
</div>
</div>
<div
class=
'mt-3 flex items-center'
>
<div
class=
'detail-left'
>
是否逾期
</div>
<div
class=
'detail-right'
>
{{ item.isOverdueName }}
</div>
</div>
<div
class=
'mt-3 flex items-center'
>
<div
class=
'detail-left'
>
逾期天数
</div>
<div
class=
'detail-right'
>
{{ item.overdueDay }} 天
</div>
</div>
<div
class=
'flex mt-3'
style=
'align-items: baseline'
>
<div
class=
'detail-left'
>
慢病标签
</div>
<div
class=
'detail-right'
style=
'flex: 1'
>
<ChronicTag
:list=
'item.chronicTagsArray'
/>
</div>
</div>
<van-divider
class=
'mt-3'
/>
<div
class=
'mt-3 flex word-right'
>
<div></div>
<div>
<van-button
round
size=
'small'
class=
'btn'
@
click=
'toGeneralDetail(item)'
>
详情
</van-button>
<van-button
round
size=
'small'
class=
'btn'
style=
'margin-left: 16px'
@
click=
'toAddGeneral(item)'
>
通用随访
</van-button>
</div>
</div>
</div>
</van-list>
<div
class=
'text-center empty'
v-if=
'!detailInfo.length'
>
<img
src=
'@/assets/image/doctor/empty.png'
alt=
''
style=
'width: 1.2rem;'
>
<p>
暂无数据
</p>
</div>
</div>
</van-pull-refresh>
</div>
</template>
<
script
>
import
dayjs
from
'dayjs'
import
{
getVisitAll
,
queryVisitByPage
}
from
'@/api/doctor/generalFU.js'
import
ChronicTag
from
'@/doctor/components/chronicTag/ChronicTag.vue'
import
{
backHome
,
getInfoByIdCard
}
from
'@/utils/common'
export
default
{
name
:
'List'
,
components
:
{
ChronicTag
},
data
()
{
return
{
active
:
1
,
tabList
:
[
{
title
:
'高血压'
,
name
:
1
,
num
:
0
},
{
title
:
'糖尿病'
,
name
:
2
,
num
:
0
},
{
title
:
'冠心病'
,
name
:
3
,
num
:
0
},
{
title
:
'脑卒中'
,
name
:
4
,
num
:
0
},
{
title
:
'慢阻肺'
,
name
:
5
,
num
:
0
},
{
title
:
'慢性肾病'
,
name
:
6
,
num
:
0
},
{
title
:
'血脂异常'
,
name
:
7
,
num
:
0
}
],
detailInfo
:
[],
total
:
0
,
// 下拉刷新
loading
:
false
,
isRefreshDisable
:
false
,
//列表刷新
loadingTable
:
false
,
pagination
:
{
total
:
0
,
pageIndex
:
1
,
pageSize
:
5
},
finished
:
false
}
},
mounted
()
{
const
list
=
this
.
$refs
.
list
list
.
addEventListener
(
'scroll'
,
()
=>
{
if
(
list
.
scrollTop
>
0
)
{
this
.
isRefreshDisable
=
true
}
else
{
this
.
isRefreshDisable
=
false
}
})
},
methods
:
{
getInfoByIdCard
,
changeTab
()
{
this
.
detailInfo
=
[]
this
.
pagination
.
pageIndex
=
1
this
.
load
()
},
onMore
()
{
this
.
pagination
.
pageIndex
++
this
.
load
()
},
load
(
loading
=
true
)
{
const
query
=
{
diseaseType
:
this
.
active
,
pageIndex
:
this
.
pagination
.
pageIndex
,
pageSize
:
this
.
pagination
.
pageSize
}
getVisitAll
(
query
,
loading
).
then
(
res
=>
{
console
.
log
(
'getVisitAll'
,
res
)
this
.
detailInfo
=
this
.
detailInfo
.
concat
(
res
.
data
||
[])
this
.
total
=
this
.
detailInfo
.
length
this
.
finished
=
this
.
detailInfo
.
length
>=
this
.
pagination
.
total
}).
finally
(()
=>
{
this
.
loading
=
false
this
.
loadingTable
=
false
})
},
scrollHandle
(
dom
)
{
if
(
!
dom
)
return
if
(
dom
.
scrollTop
>
0
)
{
this
.
isRefreshDisable
=
true
}
else
{
this
.
isRefreshDisable
=
false
}
},
onRefresh
()
{
this
.
detailInfo
=
[]
this
.
pagination
.
pageIndex
=
1
this
.
load
(
false
)
},
toGeneralDetail
(
item
)
{
this
.
$router
.
push
({
path
:
`/doctor/resident/base`
,
query
:
{
residentId
:
item
.
residentInfoId
}
})
},
toAddGeneral
(
val
)
{
const
{
id
,
...
others
}
=
val
this
.
$router
.
push
({
path
:
`/doctor/followUp/generalFU/add`
,
query
:
{
...
others
}
})
},
toSearch
()
{
this
.
$router
.
push
({
path
:
`/doctor/followUp/search`
})
},
toBack
()
{
backHome
()
}
}
}
</
script
>
<
style
scoped
lang=
'less'
>
.all-back {
background: #F5F5F5;
.top-title {
padding: 10px 12px;
}
.white-back {
background: #FFFFFF;
}
.mt-10 {
margin-top: 10px;
}
.p-16 {
padding: 16px;
}
.plr-8 {
padding: 0px 8px;
}
.plr-6 {
padding: 0px 6px;
}
.base-title {
font-weight: bold;
font-size: 16px;
}
.second-title {
background: #F0F3FF;
line-height: 24px;
margin-left: 10px;
}
.detail-left {
width: 104px;
font-size: 14px;
color: #8C8C8C;
}
.detail-right {
font-size: 14px;
}
.word-right {
justify-content: space-between;
align-items: center;
}
.btn {
background: #F0F3FF;
color: #607FF0;
border: 0px;
line-height: 26px;
height: 26px;
//padding: 4px 8px 4px 8px;
padding: 0px 8px;
}
.list-data {
height: calc(100vh - 140px);
overflow-y: auto;
}
}
</
style
>
\ No newline at end of file
src/doctor/followUp/List_.vue
deleted
100644 → 0
View file @
8bc6a62b
<
template
>
<div
class=
'all-back'
>
<van-pull-refresh
v-model=
'isLoading'
success-text=
'刷新成功'
@
refresh=
'onRefresh'
:disabled=
'isRefreshDisable'
>
<van-nav-bar
title=
'慢病管理'
left-text=
''
left-arrow
>
<template
#
right
>
<van-icon
name=
'search'
size=
'18'
/>
</
template
>
</van-nav-bar>
<div
class=
'top-title'
>
我的待随访(16)
</div>
<van-tabs
v-model:active=
'active'
>
<van-tab
:title=
'item.title'
:name=
'item.name'
v-for=
'item in tabList'
></van-tab>
</van-tabs>
<div
class=
'list-data'
v-infinite-scroll=
'loadMore'
:infinite-scroll-disabled=
'loading'
infinite-scroll-distance=
'10'
ref=
'list'
>
<div
class=
'mt-10 white-back p-16'
v-for=
'item in detailInfo'
>
<div
class=
'flex items-center'
>
<div
class=
'base-title'
>
张曼玉
</div>
<div
class=
'second-title plr-8'
>
24岁
</div>
<div
class=
'second-title plr-6'
>
男
</div>
</div>
<div
class=
'mt-3 flex items-center'
>
<div
class=
'detail-left'
>
身份证号
</div>
<div
class=
'detail-right'
>
3604211901****3128
</div>
</div>
<div
class=
'mt-3 flex items-center'
>
<div
class=
'detail-left'
>
高危评估
</div>
<div
class=
'detail-right'
>
高危人群
</div>
</div>
<div
class=
'mt-3 flex items-center'
>
<div
class=
'detail-left'
>
专病高危评估
</div>
<div
class=
'detail-right'
>
高血压高危
</div>
</div>
<div
class=
'flex'
style=
'align-items: baseline'
>
<div
class=
'detail-left'
:style=
"{marginTop: item.diseaseList.length ? '0px': '12px'}"
>
慢病标签
</div>
<div
class=
'detail-right'
style=
'flex: 1'
>
<div
class=
'flex items-center '
style=
'flex-wrap: wrap;'
>
<div
v-for=
'item1 in item.diseaseList'
:class=
'`mt-3 ill-tabs ill-tabs-${item1.id}`'
>
{{ item1.name }}
</div>
</div>
</div>
</div>
<van-divider
class=
'mt-3'
/>
<div
class=
'mt-3 flex word-right'
>
<div></div>
<div>
<van-button
round
size=
'small'
class=
'btn'
@
click=
'toGeneralDetail'
>
详情
</van-button>
<van-button
round
size=
'small'
class=
'btn'
style=
'margin-left: 16px'
@
click=
'toAddGeneral'
>
通用随访
</van-button>
</div>
</div>
</div>
</div>
</van-pull-refresh>
</div>
</template>
<
script
>
import
{
showFailToast
}
from
'vant'
const
tabList
=
[
{
title
:
'高血压'
,
name
:
1
,
num
:
3
},
{
title
:
'糖尿病'
,
name
:
2
,
num
:
3
},
{
title
:
'冠心病'
,
name
:
3
,
num
:
3
},
{
title
:
'脑卒中'
,
name
:
4
,
num
:
3
},
{
title
:
'慢阻肺'
,
name
:
5
,
num
:
3
},
{
title
:
'慢性肾病'
,
name
:
6
,
num
:
3
},
{
title
:
'血脂异常'
,
name
:
7
,
num
:
3
}
]
export
default
{
name
:
'List'
,
data
()
{
return
{
active
:
1
,
tabList
,
loading
:
false
,
isLoading
:
false
,
detailInfo
:
[
{
diseaseList
:
[
{
id
:
1
,
name
:
'高血压'
},
{
id
:
2
,
name
:
'糖尿病'
},
{
id
:
3
,
name
:
'冠心病'
},
{
id
:
3
,
name
:
'脑卒中'
},
{
id
:
5
,
name
:
'慢阻肺'
},
{
id
:
6
,
name
:
'慢性肾病'
},
{
id
:
7
,
name
:
'血脂异常'
}
]
},
{
diseaseList
:
[
{
id
:
1
,
name
:
'高血压'
},
{
id
:
3
,
name
:
'冠心病'
},
{
id
:
5
,
name
:
'慢阻肺'
}
]
},
{
diseaseList
:
[
{
id
:
1
,
name
:
'高血压'
},
{
id
:
6
,
name
:
'慢性肾病'
},
{
id
:
7
,
name
:
'血脂异常'
}
]
}
],
noDataShow
:
false
,
param
:
{
pageIndex
:
0
,
pageSize
:
10
},
isRefreshDisable
:
false
,
scrollTop
:
0
}
},
watch
:
{
scrollTop
(
newval
)
{
if
(
newval
>
0
)
{
this
.
isRefreshDisable
=
true
}
else
{
this
.
isRefreshDisable
=
false
}
}
},
mounted
()
{
this
.
$nextTick
(()
=>
{
const
list
=
this
.
$refs
.
list
list
.
addEventListener
(
'scroll'
,
()
=>
{
this
.
scrollTop
=
list
.
scrollTop
})
})
},
methods
:
{
onRefresh
()
{
this
.
isLoading
=
true
this
.
loading
=
true
this
.
param
.
pageIndex
=
1
this
.
getRecordInfo
()
},
loadMore
()
{
this
.
loading
=
true
this
.
param
.
pageIndex
+=
1
this
.
getRecordInfo
()
},
getRecordInfo
(
callBack
)
{
let
par
=
{
...
this
.
param
}
getNetworkInfoByPhone
(
par
).
then
(({
data
=
[]
})
=>
{
this
.
loading
=
false
if
(
this
.
isLoading
)
{
//刷新时先赋空
this
.
detailInfo
=
[]
}
this
.
detailInfo
=
this
.
detailInfo
.
concat
(
data
.
data
.
dataList
)
if
(
this
.
detailInfo
.
length
==
0
)
{
this
.
noDataShow
=
true
}
else
{
this
.
noDataShow
=
false
}
if
(
data
.
data
&&
data
.
data
.
length
<
this
.
param
.
pageSize
)
{
this
.
loadText
=
'暂无更多数据'
}
else
{
this
.
loading
=
false
}
this
.
isLoading
=
false
callBack
&&
callBack
()
}).
catch
(
res
=>
{
showFailToast
(
'系统异常,请联系客服!'
)
this
.
loading
=
false
this
.
isLoading
=
false
})
},
toGeneralDetail
()
{
this
.
$router
.
push
({
path
:
`/doctor/followUp/generalFU/detail`
})
},
toAddGeneral
()
{
this
.
$router
.
push
({
path
:
`/doctor/followUp/generalFU/add`
})
}
}
}
</
script
>
<
style
scoped
lang=
'less'
>
.all-back {
background: #F5F5F5;
.top-title {
padding: 10px 12px;
}
.white-back {
background: #FFFFFF;
}
.mt-10 {
margin-top: 10px;
}
.p-16 {
padding: 16px;
}
.plr-8 {
padding: 0px 8px;
}
.plr-6 {
padding: 0px 6px;
}
.base-title {
font-weight: bold;
font-size: 16px;
}
.second-title {
background: #F0F3FF;
line-height: 24px;
margin-left: 10px;
}
.detail-left {
width: 104px;
font-size: 14px;
color: #8C8C8C;
}
.detail-right {
font-size: 14px;
}
.ill-tabs {
line-height: 20px;
border-radius: 20px;
padding: 3px 8px 3px 8px;
}
.ill-tabs-1 {
background: #FFF2E8;
color: #F83B00;
}
.ill-tabs-2 {
margin-left: 2px;
background: #FFF1F0;
color: #F5222D;
}
.ill-tabs-3 {
margin-left: 2px;
background: #FFF0F7;
color: #F61E54;
}
.ill-tabs-4 {
margin-left: 2px;
background: #FFF7E6;
color: #D46B08;
}
.ill-tabs-5 {
margin-left: 2px;
background: #F4FFE6;
color: #A0BA01;
}
.ill-tabs-6 {
margin-left: 2px;
background: #ECEBFF;
color: #AA63E2;
}
.ill-tabs-7 {
margin-left: 2px;
background: #E6F9FF;
color: #4D86DA;
}
.word-right {
justify-content: space-between;
align-items: center;
}
.btn {
background: #F0F3FF;
color: #607FF0;
border: 0px;
line-height: 26px;
padding: 4px 8px 4px 8px;
}
.list-data {
height: calc(100vh - 140px);
overflow-y: auto;
}
}
</
style
>
\ No newline at end of file
src/doctor/resident/Visit.vue
View file @
aec518aa
<
template
>
<div
class=
"h-full flex flex-col visit"
>
<van-tabs
v-model:active=
'activeTab'
class=
"shrink-0"
v-if=
"tabList.length"
@
change=
"tabChange"
<div
class=
'h-full flex flex-col visit'
>
<van-tabs
v-model:active=
'activeTab'
class=
'shrink-0'
v-if=
'tabList.length'
@
change=
'tabChange'
shrink
>
<van-tab
v-for=
'item in tabList'
:key=
"item.name"
<van-tab
v-for=
'item in tabList'
:key=
'item.name'
:title=
'item.title'
:name=
'item.name'
></van-tab>
</van-tabs>
<div
class=
"grow overflow-y-auto card-list"
v-if=
"baseInfo.id && list.length"
>
<div
class=
'grow overflow-y-auto card-list'
ref=
'list'
>
<van-pull-refresh
v-model=
'loadingRefresh'
@
refresh=
'onRefresh'
:disabled=
'isRefreshDisable'
>
<van-list
v-model:loading=
"loading"
:finished=
"finished"
finished-text=
"没有更多了"
@
load=
"onMore"
v-model:loading=
'loading'
:finished=
'finished'
:finished-text=
"list.length ? '没有更多了' : ''"
:immediate-check=
'false'
@
load=
'onMore'
>
<div
v-for=
'item in list'
:key=
"item.id"
class=
"p-4 mt-3 card"
@
click
.
stop=
'toDetail(item)'
>
<div
v-for=
'item in list'
:key=
'item.id'
class=
'p-4 mt-3 card'
@
click
.
stop=
'toDetail(item)'
>
<div
class=
'flex items-center'
>
<div
class=
'detail-left'
>
随访情况
...
...
@@ -74,25 +76,29 @@
<van-divider
class=
'mt-3'
/>
<div
class=
"flex justify-end"
>
<van-button
round
type=
"primary"
class=
"card-bt"
style=
"margin-right: .12rem"
@
click
.
stop=
"editBtn(item)"
v-show=
'item.allowUpdate ==1'
>
修改
</van-button>
<van-button
round
type=
"primary"
class=
"card-bt"
@
click
.
stop=
"delBtn(item)"
v-show=
'item.allowUpdate ==1'
>
删除
</van-button>
<div
class=
'flex justify-end'
>
<van-button
round
type=
'primary'
class=
'card-bt'
style=
'margin-right: .12rem'
@
click
.
stop=
'editBtn(item)'
v-show=
'item.allowUpdate ==1'
>
修改
</van-button>
<van-button
round
type=
'primary'
class=
'card-bt'
@
click
.
stop=
'delBtn(item)'
v-show=
'item.allowUpdate ==1'
>
删除
</van-button>
</div>
<span
class=
"px-3 float-bt"
>
<span
class=
'px-3 float-bt'
>
通用随访
</span>
</div>
</van-list>
</div>
<div
class=
"text-center shrink-0 empty"
v-else
>
<img
src=
"@/assets/image/doctor/empty.png"
alt=
""
style=
"width: 1.2rem;"
>
<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
class=
"p-3 floor"
v-if=
'activeTab'
>
<van-button
round
block
type=
"primary"
class=
"card-bt"
@
click=
"addBtn"
>
新增通用随访
</van-button>
</van-pull-refresh>
</div>
<div
class=
'p-3 floor'
v-if=
'activeTab'
>
<van-button
round
block
type=
'primary'
class=
'card-bt'
@
click=
'addBtn'
>
新增通用随访
</van-button>
</div>
</div>
</
template
>
...
...
@@ -109,10 +115,12 @@ export default {
pagination
:
{
total
:
0
,
pageIndex
:
1
,
pageSize
:
10
pageSize
:
4
},
loading
:
false
,
finished
:
false
finished
:
false
,
loadingRefresh
:
false
,
isRefreshDisable
:
false
}
},
inject
:
[
'getBaseInfo'
],
...
...
@@ -132,54 +140,59 @@ export default {
{
title
:
'脑卒中'
,
name
:
4
,
code
:
'8'
},
{
title
:
'慢性阻塞性疾病'
,
name
:
5
,
code
:
'16'
},
{
title
:
'慢性肾病'
,
name
:
6
,
code
:
'32'
},
{
title
:
'血脂异常'
,
name
:
7
,
code
:
'64'
}
,
{
title
:
'血脂异常'
,
name
:
7
,
code
:
'64'
}
]
return
list
.
filter
(
e
=>
this
.
chronicTagsArray
.
includes
(
e
.
code
))
}
},
mounted
()
{
this
.
init
()
const
list
=
this
.
$refs
.
list
list
.
addEventListener
(
'scroll'
,
()
=>
{
if
(
list
.
scrollTop
>
0
)
{
this
.
isRefreshDisable
=
true
}
else
{
this
.
isRefreshDisable
=
false
}
})
},
methods
:
{
load
()
{
load
(
loading
=
true
)
{
const
query
=
{
residentInfoId
:
this
.
baseInfo
.
residentInfoId
,
serveTypeList
:
[
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
14
],
diseaseType
:
this
.
activeTab
,
pageIndex
:
this
.
pagination
.
pageIndex
,
pageSize
:
this
.
pagination
.
pageSize
,
pageSize
:
this
.
pagination
.
pageSize
}
queryVisitByPage
(
query
,
true
).
then
(
res
=>
{
this
.
list
=
res
.
data
.
dataList
||
[]
queryVisitByPage
(
query
,
loading
).
then
(
res
=>
{
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
++
const
query
=
{
residentInfoId
:
this
.
baseInfo
.
residentInfoId
,
serveTypeList
:
[
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
14
],
diseaseType
:
this
.
activeTab
,
pageIndex
:
this
.
pagination
.
pageIndex
,
pageSize
:
this
.
pagination
.
pageSize
,
}
queryVisitByPage
(
query
,
false
).
then
(
res
=>
{
this
.
pagination
.
total
=
res
.
data
.
total
||
0
this
.
list
=
this
.
list
.
concat
(
res
.
data
.
dataList
||
[])
this
.
finished
=
this
.
list
.
length
>=
this
.
pagination
.
total
})
this
.
load
()
},
init
()
{
if
(
this
.
chronicTagsArray
.
length
)
{
const
item
=
this
.
tabList
.
find
(
e
=>
e
.
code
===
this
.
chronicTagsArray
[
0
])
||
{}
this
.
activeTab
=
item
.
name
// this.load()
}
},
tabChange
()
{
this
.
list
=
[]
this
.
pagination
.
pageIndex
=
1
this
.
load
()
},
onRefresh
()
{
this
.
list
=
[]
this
.
pagination
.
pageIndex
=
1
this
.
load
(
false
)
},
addBtn
()
{
if
(
this
.
baseInfo
.
chronicStatus
===
9
)
{
showToast
(
'该居民已标记为死亡,无法新增随访'
)
...
...
@@ -196,7 +209,7 @@ export default {
},
toDetail
(
item
)
{
let
par
=
{
relationId
:
item
.
relationId
relationId
:
item
.
relationId
}
this
.
$router
.
push
({
path
:
`/doctor/followUp/generalFU/detail`
,
...
...
@@ -232,18 +245,21 @@ export default {
}
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
'less'
scoped
>
.card-list {
padding-bottom: 76px;
}
.card {
position: relative;
background-color: #fff;
.detail-left {
width: 8em;
color: #8C8C8C;
flex-shrink: 0;
}
.card-bt {
font-size: 14px;
color: #607FF0;
...
...
@@ -251,6 +267,7 @@ export default {
border: 0;
height: 26px;
}
.float-bt {
position: absolute;
top: 10px;
...
...
@@ -263,6 +280,7 @@ export default {
line-height: 26px;
}
}
.floor {
position: fixed;
bottom: 0;
...
...
src/residentWX/ResidentWX.vue
0 → 100644
View file @
aec518aa
<
template
>
<van-config-provider
:theme-vars=
"themeVars"
>
<div
class=
"h-full resident-home"
>
<router-view
v-slot=
"
{ Component }">
<Transition
name=
"route"
mode=
"out-in"
>
<component
:is=
"Component"
v-if=
"visible"
/>
</Transition>
</router-view>
</div>
</van-config-provider>
</
template
>
<
script
>
import
{
getDict
}
from
'@/api/base.js'
import
{
useStore
}
from
'./store/index.js'
export
default
{
data
()
{
return
{
visible
:
false
,
themeVars
:
{
primaryColor
:
'#54CCBD'
,
// 按键
buttonPrimaryBackground
:
'#54CCBD'
,
buttonPrimaryBorderColor
:
'#54CCBD'
,
buttonDefaultBorderColor
:
'#BFBFBF'
,
buttonNormalFontSize
:
'.16rem'
,
pickerConfirmActionColor
:
'#54CCBD'
,
checkboxCheckedIconColor
:
'#54CCBD'
,
// tab
tabsBottomBarColor
:
'#54CCBD'
,
// 级联选项
cascaderActiveColor
:
'#54CCBD'
,
// 表单相关
cellVerticalPadding
:
'.15rem'
,
cellTextColor
:
'#262626'
,
fieldLabelColor
:
'#262626'
,
cellBorderColor
:
'#d9d9d9'
}
}
},
setup
()
{
const
store
=
useStore
()
return
{
store
}
},
created
()
{
this
.
init
()
},
methods
:
{
async
init
()
{
console
.
log
(
this
.
visible
)
const
res
=
await
getDict
()
this
.
store
.
$patch
({
dict
:
res
.
data
||
{}
})
this
.
visible
=
true
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
</
style
>
src/residentWX/screening/FirstDetail.vue
0 → 100644
View file @
aec518aa
<
template
>
<div
class=
"h-full pb-5"
>
<div
class=
"p-3 text-16 text-black text-center shrink-0 top-bar"
>
<span
class=
"back-bt"
>
<span
@
click=
"onBack"
>
<doc-icon
type=
"doc-left"
/>
</span>
</span>
<span>
居民慢病筛查详情
</span>
</div>
<div
class=
"py-4 border-bottom"
>
<div
class=
"px-4 doc-title"
>
居民信息
</div>
</div>
<div
class=
"px-4 list"
>
<div
v-for=
"item in columnsBase"
:key=
"item.key"
class=
"flex justify-between py-4 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{
item
.
title
}}
</span>
<span
v-if=
"item.key === 'idCard'"
>
{{
$idCardHide
(
residentInfo
.
idCard
)
||
'-'
}}
</span>
<span
class=
"text-end"
v-else
>
{{
residentInfo
[
item
.
key
]
||
'-'
}}
</span>
</div>
</div>
<div
class=
"py-4 border-bottom"
>
<div
class=
"px-4 doc-title"
>
筛查信息
</div>
</div>
<div
class=
"px-4 list"
>
<template
v-for=
"item in columnsScreen"
:key=
"item.key"
>
<div
v-if=
"item.key == 'pressure'"
class=
"pt-3"
>
<table
class=
"w-full"
>
<tr>
<td
style=
"width: 7.1em"
>
血压值(mmHg)
</td>
<td>
低压值(左侧)
</td>
<td></td>
<td>
高压值(右侧)
</td>
</tr>
<tr>
<td>
第1次测量
</td>
<td>
{{
info
.
pressureOneDbp
||
'-'
}}
</td>
<td>
/
</td>
<td>
{{
info
.
pressureOneSbp
||
'-'
}}
</td>
</tr>
<tr>
<td>
第2次测量
</td>
<td
class=
"flex"
>
{{
info
.
pressureTwoDbp
||
'-'
}}
</td>
<td>
/
</td>
<td>
{{
info
.
pressureTwoSbp
||
'-'
}}
</td>
</tr>
</table>
</div>
<div
v-else
class=
"flex justify-between py-4 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{
item
.
title
}}
</span>
<div>
<span>
{{
info
[
item
.
key
]
||
'-'
}}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{
item
.
unit
}}
</span>
</div>
</div>
</
template
>
</div>
</div>
</template>
<
script
>
import
{
showNotify
}
from
'vant'
import
{
querScreenDetail
}
from
'@/api/resident/screening.js'
export
default
{
data
()
{
return
{
info
:
{},
columnsBase
:
[
{
title
:
'姓名'
,
key
:
'residentName'
},
{
title
:
'证件号码'
,
key
:
'idCard'
},
{
title
:
'性别'
,
key
:
'genderName'
},
{
title
:
'出生日期'
,
key
:
'dataBirth'
},
{
title
:
'年龄'
,
key
:
'currentAge'
},
{
title
:
'民族'
,
key
:
'nationalName'
},
{
title
:
'本人电话'
,
key
:
'telephone'
},
{
title
:
'现住址'
,
key
:
'presentCodeName'
},
{
title
:
'详细地址'
,
key
:
'nowAddress'
},
{
title
:
'户籍地址'
,
key
:
'registeredCodeName'
},
{
title
:
'详细地址'
,
key
:
'permanentAddress'
}
],
columnsScreen
:
[
{
title
:
'年龄'
,
key
:
'currentAge'
,
unit
:
'岁'
},
{
title
:
'既往史'
,
key
:
'medicalHistoryName'
},
{
title
:
'身高'
,
key
:
'height'
,
unit
:
'cm'
},
{
title
:
'体重'
,
key
:
'weight'
,
unit
:
'kg'
},
{
title
:
'BMI'
,
key
:
'bmi'
,
unit
:
'kg/m²'
},
{
title
:
'腰围'
,
key
:
'waistline'
,
unit
:
'cm'
},
{
title
:
'是否吸烟'
,
key
:
'isSmokingName'
},
{
title
:
'家族史'
,
key
:
'familyHistoryName'
},
{
title
:
'血压值'
,
key
:
'pressure'
},
{
title
:
'空腹血糖'
,
key
:
'fastingGlucose'
,
unit
:
'mmol/L'
},
{
title
:
'低密度脂蛋白胆固醇'
,
key
:
'ldlCholesterin'
,
unit
:
'mmol/L'
},
{
title
:
'血清总胆固醇'
,
key
:
'serumCholesterin'
,
unit
:
'mmol/L'
},
{
title
:
'高密度脂蛋白胆固醇'
,
key
:
'hdlCholesterin'
,
unit
:
'mmol/L'
},
{
title
:
'运动'
,
key
:
'exerciseIntensityName'
},
{
title
:
'慢病高危评估结果'
,
key
:
'screenResultName'
},
{
title
:
'筛查日期'
,
key
:
'screenDate'
},
{
title
:
'筛查机构'
,
key
:
'screenUnitName'
}
]
}
},
computed
:
{
id
()
{
return
this
.
$route
.
params
.
id
},
residentInfo
()
{
return
this
.
info
.
residentsRecord
||
{}
}
},
created
()
{
if
(
!
this
.
id
)
{
showNotify
({
type
:
'warning'
,
message
:
'未获取到查询信息'
,
duration
:
0
})
return
}
this
.
init
()
},
methods
:
{
init
()
{
querScreenDetail
({
id
:
this
.
id
}).
then
(
res
=>
{
this
.
info
=
res
.
data
||
{}
})
},
onBack
()
{
this
.
$router
.
back
()
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
@import url('../utils/common.less');
table {
text-align: left;
border-bottom: 1px solid var(--van-cell-border-color);
>tr {
>td {
padding-left: 14px;
padding-bottom: 12px;
&:first-child {
text-align: right;
padding-left: 0;
}
}
}
}
.list {
.label {
min-width: 5em;
}
}
</
style
>
src/residentWX/screening/List.vue
0 → 100644
View file @
aec518aa
<
template
>
<div
class=
"h-full"
>
<div
class=
"p-3 text-16 text-black text-center shrink-0 top-bar"
>
<!--
<span
class=
"back-bt"
>
<span
@
click=
"onBack"
>
<doc-icon
type=
"doc-left"
/>
</span>
</span>
-->
<span>
慢病筛查记录
</span>
</div>
<div
class=
'card'
v-for=
'item in list'
:key=
"item.id"
>
<div
class=
"p-4"
>
<div
class=
'text-16 font-semibold mb-2 title'
>
{{
item
.
residentName
}}
</div>
<div
class=
"mb-2"
>
<span
class=
"label"
>
证件号码
</span>
<span>
{{
$idCardHide
(
item
.
idCard
)
}}
</span>
</div>
<div
class=
"mb-2"
>
<span
class=
"label"
>
筛查日期
</span>
<span>
{{
item
.
screenDate
}}
</span>
</div>
<div
class=
"mb-2"
>
<span
class=
"label"
>
筛查机构
</span>
<span>
{{
item
.
screenUnitName
}}
</span>
</div>
<div
class=
"bt-box flex pt-2 justify-end"
>
<van-button
type=
"primary"
size=
"small"
@
click=
"toDetail(item)"
>
详 情
</van-button>
</div>
</div>
<div
class=
"divide"
></div>
</div>
</div>
</
template
>
<
script
>
import
{
showNotify
}
from
'vant'
import
{
querScreenList
}
from
'@/api/resident/screening.js'
export
default
{
data
()
{
return
{
list
:
[]
}
},
computed
:
{
routeQuery
()
{
return
this
.
$route
.
query
},
idCard
()
{
return
this
.
routeQuery
.
idCard
}
},
created
()
{
if
(
!
this
.
idCard
)
{
showNotify
({
type
:
'warning'
,
message
:
'未获取到用户信息'
,
duration
:
0
})
return
}
this
.
init
()
},
methods
:
{
init
()
{
querScreenList
({
idCard
:
this
.
idCard
}).
then
(
res
=>
{
this
.
list
=
res
.
data
||
[]
})
},
toDetail
(
record
)
{
if
(
!
record
)
return
const
path
=
`/resident/screening/first/detail/
${
record
.
id
}
`
this
.
$router
.
push
({
path
})
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
@import url('../utils/common.less');
.card {
.label {
display: inline-block;
min-width: 5em;
color: #8C8C8C;
}
.bt-box {
border-top: 1px solid var(--van-border-color);
}
.divide {
border-top: 6px solid #f5f5f5;
}
&:last-child {
.divide { display: none; }
}
}
</
style
>
src/residentWX/screening/SecondDetail.vue
0 → 100644
View file @
aec518aa
<
template
>
<div
class=
"h-full pb-5"
>
<div
class=
"p-3 text-16 text-black text-center shrink-0 top-bar"
>
<span
class=
"back-bt"
>
<span
@
click=
"onBack"
>
<doc-icon
type=
"doc-left"
/>
</span>
</span>
<span>
居民慢病筛查详情
</span>
</div>
<div
class=
"py-4 border-bottom"
>
<div
class=
"px-4 doc-title"
>
居民信息
</div>
</div>
<div
class=
"px-4 list"
>
<div
v-for=
"item in columnsBase"
:key=
"item.key"
class=
"flex justify-between py-4 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{
item
.
title
}}
</span>
<span
v-if=
"item.key === 'idCard'"
>
{{
$idCardHide
(
residentInfo
.
idCard
)
||
'-'
}}
</span>
<span
class=
"text-end"
v-else
>
{{
residentInfo
[
item
.
key
]
||
'-'
}}
</span>
</div>
</div>
<div
class=
"py-4 border-bottom"
>
<div
class=
"px-4 doc-title"
>
筛查信息
</div>
</div>
<div
class=
"px-4 list"
>
<template
v-for=
"item in columnsScreen"
:key=
"item.key"
>
<div
v-if=
"item.key == 'pressure'"
class=
"pt-3"
>
<table
class=
"w-full"
>
<tr>
<td
style=
"width: 7.1em"
>
血压值(mmHg)
</td>
<td>
低压值(左侧)
</td>
<td></td>
<td>
高压值(右侧)
</td>
</tr>
<tr>
<td>
第1次测量
</td>
<td>
{{
info
.
pressureOneDbp
||
'-'
}}
</td>
<td>
/
</td>
<td>
{{
info
.
pressureOneSbp
||
'-'
}}
</td>
</tr>
<tr>
<td>
第2次测量
</td>
<td
class=
"flex"
>
{{
info
.
pressureTwoDbp
||
'-'
}}
</td>
<td>
/
</td>
<td>
{{
info
.
pressureTwoSbp
||
'-'
}}
</td>
</tr>
</table>
</div>
<div
v-else
class=
"flex justify-between py-4 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{
item
.
title
}}
</span>
<div>
<span>
{{
info
[
item
.
key
]
||
'-'
}}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{
item
.
unit
}}
</span>
</div>
</div>
</
template
>
</div>
</div>
</template>
<
script
>
import
{
showNotify
}
from
'vant'
import
{
querScreenDetail
}
from
'@/api/resident/screening.js'
export
default
{
data
()
{
return
{
info
:
{},
columnsBase
:
[
{
title
:
'姓名'
,
key
:
'residentName'
},
{
title
:
'证件号码'
,
key
:
'idCard'
},
{
title
:
'性别'
,
key
:
'genderName'
},
{
title
:
'出生日期'
,
key
:
'dataBirth'
},
{
title
:
'年龄'
,
key
:
'currentAge'
},
{
title
:
'民族'
,
key
:
'nationalName'
},
{
title
:
'本人电话'
,
key
:
'telephone'
},
{
title
:
'现住址'
,
key
:
'presentCodeName'
},
{
title
:
'详细地址'
,
key
:
'nowAddress'
},
{
title
:
'户籍地址'
,
key
:
'registeredCodeName'
},
{
title
:
'详细地址'
,
key
:
'permanentAddress'
}
],
columnsScreen
:
[
{
title
:
'年龄'
,
key
:
'currentAge'
,
unit
:
'岁'
},
{
title
:
'既往史'
,
key
:
'medicalHistoryName'
},
{
title
:
'身高'
,
key
:
'height'
,
unit
:
'cm'
},
{
title
:
'体重'
,
key
:
'weight'
,
unit
:
'kg'
},
{
title
:
'BMI'
,
key
:
'bmi'
,
unit
:
'kg/m²'
},
{
title
:
'腰围'
,
key
:
'waistline'
,
unit
:
'cm'
},
{
title
:
'是否吸烟'
,
key
:
'isSmokingName'
},
{
title
:
'家族史'
,
key
:
'familyHistoryName'
},
{
title
:
'血压值'
,
key
:
'pressure'
},
{
title
:
'空腹血糖'
,
key
:
'fastingGlucose'
,
unit
:
'mmol/L'
},
{
title
:
'低密度脂蛋白胆固醇'
,
key
:
'ldlCholesterin'
,
unit
:
'mmol/L'
},
{
title
:
'血清总胆固醇'
,
key
:
'serumCholesterin'
,
unit
:
'mmol/L'
},
{
title
:
'高密度脂蛋白胆固醇'
,
key
:
'hdlCholesterin'
,
unit
:
'mmol/L'
},
{
title
:
'运动'
,
key
:
'exerciseIntensityName'
},
{
title
:
'慢病高危评估结果'
,
key
:
'screenResultName'
},
{
title
:
'筛查日期'
,
key
:
'screenDate'
},
{
title
:
'筛查机构'
,
key
:
'screenUnitName'
}
]
}
},
computed
:
{
id
()
{
return
this
.
$route
.
params
.
id
},
residentInfo
()
{
return
this
.
info
.
residentsRecord
||
{}
}
},
created
()
{
if
(
!
this
.
id
)
{
showNotify
({
type
:
'warning'
,
message
:
'未获取到查询信息'
,
duration
:
0
})
return
}
this
.
init
()
},
methods
:
{
init
()
{
querScreenDetail
({
id
:
this
.
id
}).
then
(
res
=>
{
this
.
info
=
res
.
data
||
{}
})
},
onBack
()
{
this
.
$router
.
back
()
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
@import url('../utils/common.less');
table {
text-align: left;
border-bottom: 1px solid var(--van-cell-border-color);
>tr {
>td {
padding-left: 14px;
padding-bottom: 12px;
&:first-child {
text-align: right;
padding-left: 0;
}
}
}
}
.list {
.label {
min-width: 5em;
}
}
</
style
>
src/residentWX/store/index.js
0 → 100644
View file @
aec518aa
import
{
defineStore
}
from
'pinia'
export
const
useStore
=
defineStore
(
'chronic'
,
{
state
:
()
=>
{
return
{
// 字典
dict
:
[]
}
},
getters
:
{},
actions
:
{
getDict
(
dict
)
{
if
(
!
dict
)
return
[]
return
this
.
dict
[
dict
]
||
[]
},
getDictValue
(
dict
,
value
)
{
let
array
=
[]
if
(
typeof
dict
===
'string'
)
{
array
=
this
.
dict
[
dict
]
}
else
{
array
=
dict
}
if
(
!
array
||
!
array
.
length
)
{
return
''
}
let
temp
=
array
.
find
(
e
=>
e
.
value
==
value
)
||
{}
return
temp
.
name
||
''
}
}
})
src/residentWX/utils/common.less
0 → 100644
View file @
aec518aa
src/router/index.js
View file @
aec518aa
...
...
@@ -31,6 +31,8 @@ const routes = [
name
:
'resident-screening-first-detail-id'
,
component
:
()
=>
import
(
/* webpackChunkName: "page-resident" */
'@/resident/screening/first/detail/Detail.vue'
)
}
]
},
{
...
...
@@ -85,7 +87,31 @@ const routes = [
component
:
()
=>
import
(
/* webpackChunkName: "page-doctor" */
'@/doctor/resident/form/BaseInfo.vue'
)
}
]
},
{
path
:
'/residentWX'
,
name
:
'residentWX'
,
component
:
()
=>
import
(
/* webpackChunkName: "residentWX" */
'@/residentWX/ResidentWX.vue'
),
children
:
[
{
path
:
'screening/list'
,
name
:
'residentWX-list'
,
component
:
()
=>
import
(
/* webpackChunkName: "residentWX-screening" */
'@/residentWX/screening/List.vue'
)
},
{
path
:
'screening/firstDetail/:id'
,
name
:
'resident-screening-first-detail-id'
,
component
:
()
=>
import
(
/* webpackChunkName: "residentWX-screening" */
'@/residentWX/screening/FirstDetail.vue'
)
},
{
path
:
'screening/secondDetail/:id'
,
name
:
'resident-screening-first-detail-id'
,
component
:
()
=>
import
(
/* webpackChunkName: "residentWX-screening" */
'@/residentWX/screening/SecondDetail.vue'
)
}
]
},
]
const
router
=
createRouter
({
...
...
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