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
3735a1aa
Commit
3735a1aa
authored
Feb 17, 2025
by
songrui
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'chronic-dev' of
http://gitlab.yiboshi.com/nightkis1995/frontend-h5
into chronic-dev
parents
245b5809
905f1a49
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
8602 additions
and
108 deletions
+8602
-108
index.html
public/index.html
+2
-3
separateFU.js
src/api/doctor/separateFU.js
+23
-0
IframePage.vue
src/components/iframePage/IframePage.vue
+79
-53
FollowUpDetail.vue
src/doctor/followUp/detail/FollowUpDetail.vue
+11
-13
GeneralFUForm.vue
src/doctor/followUp/generalFU/form/GeneralFUForm.vue
+1
-2
GuideTextVideo.vue
src/doctor/followUp/generalFU/form/GuideTextVideo.vue
+1
-1
Index.vue
src/doctor/followUp/generalFU/form/Index.vue
+2
-1
Index.vue
src/doctor/followUp/separateFU/detail/Index.vue
+61
-0
ChronicKidneyDiseaseDetail.vue
...parateFU/detail/components/ChronicKidneyDiseaseDetail.vue
+404
-0
CopdDetail.vue
...ctor/followUp/separateFU/detail/components/CopdDetail.vue
+404
-0
CoronaryHeartDiseaseDetail.vue
...parateFU/detail/components/CoronaryHeartDiseaseDetail.vue
+404
-0
DiabetesDetail.vue
.../followUp/separateFU/detail/components/DiabetesDetail.vue
+404
-0
DyslipidemiaDetail.vue
...lowUp/separateFU/detail/components/DyslipidemiaDetail.vue
+404
-0
HypertensionDetail.vue
...lowUp/separateFU/detail/components/HypertensionDetail.vue
+404
-0
StrokeDetail.vue
...or/followUp/separateFU/detail/components/StrokeDetail.vue
+404
-0
FormCont.vue
src/doctor/followUp/separateFU/form/FormCont.vue
+34
-2
ChronicKidneyDiseaseForm.vue
...p/separateFU/form/components/ChronicKidneyDiseaseForm.vue
+1333
-0
CopdForm.vue
src/doctor/followUp/separateFU/form/components/CopdForm.vue
+1514
-0
DyslipidemiaForm.vue
.../followUp/separateFU/form/components/DyslipidemiaForm.vue
+1333
-0
StrokeForm.vue
...doctor/followUp/separateFU/form/components/StrokeForm.vue
+1333
-0
Visit.vue
src/doctor/patientDetail/components/disease/Visit.vue
+45
-31
index.js
src/router/index.js
+1
-1
common.js
src/utils/common.js
+1
-1
No files found.
public/index.html
View file @
3735a1aa
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
<link
rel=
'icon'
href=
'<%= BASE_URL %>favicon.ico'
>
<link
rel=
'icon'
href=
'<%= BASE_URL %>favicon.ico'
>
<title><
%=
htmlWebpackPlugin
.
options
.
title
%
></title>
<title><
%=
htmlWebpackPlugin
.
options
.
title
%
></title>
<!-- 3.3.4/vconsole.min.js -->
<!-- 3.3.4/vconsole.min.js -->
<!-- <script src='https://beta-copd-img.yiboshi.com/20241106/1730860078278931285.js'></script>--
>
<script
src=
'https://beta-copd-img.yiboshi.com/20241106/1730860078278931285.js'
></script
>
</head>
</head>
<body>
<body>
<noscript>
<noscript>
...
@@ -79,7 +79,6 @@
...
@@ -79,7 +79,6 @@
<!-- built files will be auto injected -->
<!-- built files will be auto injected -->
</body>
</body>
<script>
<script>
// var vConsole =new VConsole();
var
vConsole
=
new
VConsole
();
// console.log('Hello world');
</script>
</script>
</html>
</html>
src/api/doctor/separateFU.js
View file @
3735a1aa
...
@@ -11,4 +11,26 @@ export function addDiabetesForm(params) {
...
@@ -11,4 +11,26 @@ export function addDiabetesForm(params) {
// 新增冠心病随访
// 新增冠心病随访
export
function
addCoronaryHeartDiseaseForm
(
params
)
{
export
function
addCoronaryHeartDiseaseForm
(
params
)
{
return
fetchBase
({
url
:
`/chronic-admin/v1/chronic-visit-coronary/save`
,
body
:
params
,
loading
:
true
})
return
fetchBase
({
url
:
`/chronic-admin/v1/chronic-visit-coronary/save`
,
body
:
params
,
loading
:
true
})
}
// 新增脑卒中随访
export
function
addStrokeForm
(
params
)
{
return
fetchBase
({
url
:
`/chronic-admin/v1/chronic-visit-stroke/save`
,
body
:
params
,
loading
:
true
})
}
// 新增慢阻肺随访
export
function
addCopdForm
(
params
)
{
return
fetchBase
({
url
:
`/chronic-admin/v1/chronic-visit-pulmonary/save`
,
body
:
params
,
loading
:
true
})
}
// 新增慢性肾病随访
export
function
addChronicKidneyDiseaseForm
(
params
)
{
return
fetchBase
({
url
:
`/chronic-admin/v1/chronic-visit-nephrosis/save`
,
body
:
params
,
loading
:
true
})
}
// 新增血脂异常随访
export
function
addDyslipidemiaForm
(
params
)
{
return
fetchBase
({
url
:
`/chronic-admin/v1/chronic-visit-dyslipemia/save`
,
body
:
params
,
loading
:
true
})
}
// 查询专病随访详情
export
function
getSeparateFUDetail
(
params
)
{
return
fetchBase
({
url
:
`/chronic-admin/v1/chronic-visit-record/specialized-detail`
,
body
:
params
,
loading
:
true
})
}
}
\ No newline at end of file
src/components/iframePage/IframePage.vue
View file @
3735a1aa
<
template
>
<
template
>
<div
class=
"h-full iframe-page"
>
<div
class=
'h-full iframe-page'
>
<iframe
:src=
"iframeSrc"
style=
"border: 0;width: 100%;height: 99%"
:key=
"iframeSrc"
v-if=
"iframeSrc"
allowFullscreen
>
<div
class=
'p-3 text-black text-center shrink-0 doc-nav-bar'
>
</iframe>
<span
@
click=
'onBack'
class=
'text-12 back-bt'
>
<div
v-else
/>
<doc-icon
type=
'doc-left2'
/>
</div>
</span>
<span
style=
'min-height: .16rem;display: inline-block'
>
{{
pageTitle
}}
</span>
</div>
<iframe
:src=
'iframeSrc'
style=
'border: 0;width: 100%;height: calc(99% - 50px)'
:key=
'iframeSrc'
v-if=
'iframeSrc'
allowFullscreen
>
</iframe>
<div
v-else
/>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
// import {getCateInfoByMenuId} from "@/views/statScreen/config";
// import {getCateInfoByMenuId} from "@/views/statScreen/config";
export
default
{
export
default
{
props
:
{
props
:
{
src
:
String
src
:
String
,
},
pageTitle
:
String
data
()
{
},
return
{
data
()
{
iframeSrc
:
''
return
{
}
iframeSrc
:
''
},
}
// computed:{
},
// stat(){
/* computed: {
// return this.$route.params.stat
pageTitle() {
// }
return this.$route.query.pageTitle || ''
// },
}
beforeUnmount
()
{
},*/
this
.
iframeSrc
=
''
beforeUnmount
()
{
},
this
.
iframeSrc
=
''
watch
:
{
src
:
{
handler
()
{
this
.
load
()
},
immediate
:
true
}
},
methods
:
{
load
()
{
// let menuList = this.$store.state.menu || []
// let rou = this.$route.fullPath
// let result = menuList.filter(item => item.frontActionUrl == rou)[0]
// let menuId = result.id
// let lobId = result.lobId
// if (lobId && lobId!='0'){
// getCateInfoByMenuId(menuId).then(res => {
// this.openIframe(res.data.treeCode, menuId);
// });
// }else {
this
.
iframeSrc
=
`
${
this
.
src
}
`
// }
},
},
openIframe
(
treeCode
,
menuId
)
{
watch
:
{
let
res
=
''
src
:
{
res
=
`
${
this
.
src
}${
this
.
src
?.
includes
(
'?'
)
?
'&'
:
'?'
}
source
=
MB
&
menuId
=
$
{
menuId
}
`
handler
()
{
if (treeCode) {
debugger
res = `
$
{
this
.
src
}
$
{
this
.
src
?.
includes
(
'?'
)
?
'&'
:
'?'
}
treeCode
=
$
{
treeCode
}
&
unitTreeCode
=
$
{
treeCode
}
&
source
=
MB
&
menuId
=
$
{
menuId
}
`
this
.
load
()
}
},
this.iframeSrc = res
immediate
:
true
}
},
methods
:
{
load
()
{
// let menuList = this.$store.state.menu || []
// let rou = this.$route.fullPath
// let result = menuList.filter(item => item.frontActionUrl == rou)[0]
// let menuId = result.id
// let lobId = result.lobId
// if (lobId && lobId!='0'){
// getCateInfoByMenuId(menuId).then(res => {
// this.openIframe(res.data.treeCode, menuId);
// });
// }else {
this
.
iframeSrc
=
`
${
this
.
src
}
`
// }
},
openIframe
(
treeCode
,
menuId
)
{
let
res
=
''
res
=
`
${
this
.
src
}${
this
.
src
?.
includes
(
'?'
)
?
'&'
:
'?'
}
source
=
MB
&
menuId
=
$
{
menuId
}
`
if (treeCode) {
res = `
$
{
this
.
src
}
$
{
this
.
src
?.
includes
(
'?'
)
?
'&'
:
'?'
}
treeCode
=
$
{
treeCode
}
&
unitTreeCode
=
$
{
treeCode
}
&
source
=
MB
&
menuId
=
$
{
menuId
}
`
}
this.iframeSrc = res
},
onBack() {
this.$router.back()
}
}
}
}
}
}
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
'less'
scoped
>
// 顶部导航栏
.doc-nav-bar {
position: relative;
border-bottom: 1px solid #3C3C435C;
font-size: 18px;
font-weight: 600;
.back-bt {
position: absolute;
left: .16rem;
top: 50%;
transform: translateY(-50%);
}
}
</
style
>
</
style
>
src/doctor/followUp/detail/FollowUpDetail.vue
View file @
3735a1aa
...
@@ -10,23 +10,23 @@
...
@@ -10,23 +10,23 @@
<!--
<HisDetail
:info=
"detailInfo"
v-else-if=
"showHis"
></HisDetail>
-->
<!--
<HisDetail
:info=
"detailInfo"
v-else-if=
"showHis"
></HisDetail>
-->
<!-- 报卡随访详情 -->
<!-- 报卡随访详情 -->
<CrsVisitDetail
:relationUuid=
"detailInfo.relationUuid"
v-else-if=
"showCrs"
></CrsVisitDetail>
<CrsVisitDetail
:relationUuid=
"detailInfo.relationUuid"
v-else-if=
"showCrs"
></CrsVisitDetail>
<!-- 专病随访详情 -->
<SeparateFUDetail
:relationId=
"detailInfo.relationId"
v-else-if=
"showFU"
></SeparateFUDetail>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
getVisitManageVByUuId
}
from
'@/api/doctor/generalFU'
import
{
getVisitManageVByUuId
}
from
'@/api/doctor/generalFU'
// import GwDetail from '@/doctor/followUp/detail/components/GwDetail'
import
CrsVisitDetail
from
'@/doctor/followUp/detail/components/CrsVisitDetail'
import
CrsVisitDetail
from
'@/doctor/followUp/detail/components/CrsVisitDetail'
import
CurrencyFUDetail
from
'@/doctor/followUp/generalFU/detail/Detail'
import
CurrencyFUDetail
from
'@/doctor/followUp/generalFU/detail/Detail'
import
IframePage
from
'@/components/iframePage/IframePage'
// 专病随访
import
SeparateFUDetail
from
'@/doctor/followUp/separateFU/detail/Index.vue'
export
default
{
export
default
{
name
:
'FollowUpDetail'
,
name
:
'FollowUpDetail'
,
components
:
{
CurrencyFUDetail
,
CrsVisitDetail
},
components
:
{
IframePage
,
CurrencyFUDetail
,
CrsVisitDetail
,
SeparateFUDetail
},
props
:
{
// id: [String, Number],
// residentId: [String, Number],
// diseaseType: [String, Number]
},
data
()
{
data
()
{
return
{
return
{
detailInfo
:
{},
detailInfo
:
{},
...
@@ -64,7 +64,7 @@ export default {
...
@@ -64,7 +64,7 @@ export default {
getVisitManageVByUuId
(
par
).
then
(
res
=>
{
getVisitManageVByUuId
(
par
).
then
(
res
=>
{
let
record
=
res
.
data
let
record
=
res
.
data
this
.
detailInfo
=
record
this
.
detailInfo
=
record
this
.
PhlIsShow
(
record
)
//
this.PhlIsShow(record)
this
.
showFU
=
this
.
FUIsShow
(
record
)
this
.
showFU
=
this
.
FUIsShow
(
record
)
this
.
showCommon
=
this
.
GAUIsShow
(
record
)
this
.
showCommon
=
this
.
GAUIsShow
(
record
)
this
.
showHis
=
this
.
HisIsShow
(
record
)
this
.
showHis
=
this
.
HisIsShow
(
record
)
...
@@ -103,19 +103,17 @@ export default {
...
@@ -103,19 +103,17 @@ export default {
}
}
return
res
return
res
},
},
//判断是否显示
报卡
随访
//判断是否显示
公卫
随访
PhlIsShow
(
record
)
{
PhlIsShow
(
record
)
{
// let res = false
if
(
record
.
source
==
4
)
{
if
(
record
.
source
==
4
)
{
// res = true
this
.
$router
.
push
({
this
.
$router
.
push
({
path
:
`/systemIframe/doctorGWDetail`
,
path
:
`/systemIframe/doctorGWDetail`
,
query
:
{
query
:
{
src
:
`https://www.baidu.com/`
src
:
`https://www.baidu.com/`
,
pageTitle
:
`公卫详情`
}
}
})
})
}
}
// return res
}
}
}
}
}
}
...
...
src/doctor/followUp/generalFU/form/GeneralFUForm.vue
View file @
3735a1aa
...
@@ -144,7 +144,6 @@
...
@@ -144,7 +144,6 @@
<DocImageUpload
<DocImageUpload
description=
'支持上传jpg、png、jpeg文件,大小请在10M以内'
description=
'支持上传jpg、png、jpeg文件,大小请在10M以内'
lengthMessage=
'抱歉,最多可上传6个文件。'
lengthMessage=
'抱歉,最多可上传6个文件。'
:imageData=
'[]'
@
change=
'(ids, option) => form.uploadVisitRecord = ids'
@
change=
'(ids, option) => form.uploadVisitRecord = ids'
:maxLength=
'6'
:maxLength=
'6'
class=
'mt-2'
class=
'mt-2'
...
@@ -156,7 +155,6 @@
...
@@ -156,7 +155,6 @@
<DocImageUpload
<DocImageUpload
description=
'支持上传jpg、png、jpeg文件,大小请在10M以内'
description=
'支持上传jpg、png、jpeg文件,大小请在10M以内'
lengthMessage=
'抱歉,最多可上传6个文件。'
lengthMessage=
'抱歉,最多可上传6个文件。'
:imageData=
'[]'
@
change=
'(ids, option) => form.sceneVisitImage = ids'
@
change=
'(ids, option) => form.sceneVisitImage = ids'
:maxLength=
'6'
:maxLength=
'6'
class=
'mt-2'
class=
'mt-2'
...
@@ -368,6 +366,7 @@ export default {
...
@@ -368,6 +366,7 @@ export default {
this
.
form
.
screenTime
=
dayjs
(
selectedValues
).
format
(
'YYYY-MM-DD HH:00:00'
)
this
.
form
.
screenTime
=
dayjs
(
selectedValues
).
format
(
'YYYY-MM-DD HH:00:00'
)
this
.
startTime
=
dayjs
(
selectedValues
).
format
(
'YYYY-MM-DD HH:00:00'
)
this
.
startTime
=
dayjs
(
selectedValues
).
format
(
'YYYY-MM-DD HH:00:00'
)
this
.
showTime1
=
false
this
.
showTime1
=
false
console
.
log
(
this
.
form
)
},
},
toShowTem
(
val
)
{
toShowTem
(
val
)
{
this
.
citeInfo
=
val
this
.
citeInfo
=
val
...
...
src/doctor/followUp/generalFU/form/GuideTextVideo.vue
View file @
3735a1aa
...
@@ -48,7 +48,7 @@
...
@@ -48,7 +48,7 @@
</van-popup>
</van-popup>
</div>
</div>
<div
v-if=
'form.contentSelectName'
class=
'mt-2'
>
<div
class=
'mt-2'
>
<van-button
type=
'primary'
plain
class=
'w-full'
@
click=
'choiceTel'
size=
'small'
>
选择内容
</van-button>
<van-button
type=
'primary'
plain
class=
'w-full'
@
click=
'choiceTel'
size=
'small'
>
选择内容
</van-button>
</div>
</div>
...
...
src/doctor/followUp/generalFU/form/Index.vue
View file @
3735a1aa
...
@@ -59,6 +59,7 @@ import {
...
@@ -59,6 +59,7 @@ import {
import
GeneralFUForm
from
'@/doctor/followUp/generalFU/form/GeneralFUForm'
import
GeneralFUForm
from
'@/doctor/followUp/generalFU/form/GeneralFUForm'
import
CommonBottom
from
'@/doctor/followUp/generalFU/form/CommonBottom'
import
CommonBottom
from
'@/doctor/followUp/generalFU/form/CommonBottom'
import
{
useStore
}
from
'@/doctor/store'
import
{
useStore
}
from
'@/doctor/store'
const
getModeEnum
=
(
patientInfo
=
{})
=>
{
const
getModeEnum
=
(
patientInfo
=
{})
=>
{
return
{
return
{
mode1
:
[
mode1
:
[
...
@@ -166,7 +167,7 @@ export default {
...
@@ -166,7 +167,7 @@ export default {
}
}
}
else
{
}
else
{
const
res
=
await
getChronicResidentsId
(
this
.
routerDetail
.
residentInfoId
)
const
res
=
await
getChronicResidentsId
(
this
.
routerDetail
.
residentInfoId
)
const
weixinInfo
=
await
getResidentWX
({
residentInfoId
:
this
.
routerDetail
.
residentInfoId
})
const
weixinInfo
=
await
getResidentWX
({
residentInfoId
:
this
.
routerDetail
.
residentInfoId
})
const
{
const
{
id
,
id
,
createDate
,
createDate
,
...
...
src/doctor/followUp/separateFU/detail/Index.vue
0 → 100644
View file @
3735a1aa
<
template
>
<div
class=
"flex flex-col"
style=
"height: 100vh"
>
<DocNavBar
title=
"专病随访详情"
></DocNavBar>
<HypertensionDetail
v-if=
"diseaseType === '1'"
:visitInfo=
"info"
></HypertensionDetail>
<DiabetesDetail
v-if=
"diseaseType === '2'"
:visitInfo=
"info"
></DiabetesDetail>
<CoronaryHeartDiseaseDetail
v-if=
"diseaseType === '3'"
:visitInfo=
"info"
></CoronaryHeartDiseaseDetail>
<StrokeDetail
v-if=
"diseaseType === '4'"
:visitInfo=
"info"
></StrokeDetail>
<CopdDetail
v-if=
"diseaseType === '5'"
:visitInfo=
"info"
></CopdDetail>
<ChronicKidneyDiseaseDetail
v-if=
"diseaseType === '6'"
:visitInfo=
"info"
></ChronicKidneyDiseaseDetail>
<DyslipidemiaDetail
v-if=
"diseaseType === '7'"
:visitInfo=
"info"
></DyslipidemiaDetail>
</div>
</
template
>
<
script
>
import
{
getSeparateFUDetail
}
from
'@/api/doctor/separateFU'
import
DocNavBar
from
'@/doctor/components/docNavBar/DocNavBar.vue'
import
HypertensionDetail
from
'./components/HypertensionDetail.vue'
import
DiabetesDetail
from
'./components/DiabetesDetail.vue'
import
CoronaryHeartDiseaseDetail
from
'./components/CoronaryHeartDiseaseDetail.vue'
import
StrokeDetail
from
'./components/StrokeDetail.vue'
import
CopdDetail
from
'./components/CopdDetail.vue'
import
ChronicKidneyDiseaseDetail
from
'./components/ChronicKidneyDiseaseDetail.vue'
import
DyslipidemiaDetail
from
'./components/DyslipidemiaDetail.vue'
export
default
{
components
:
{
DocNavBar
,
HypertensionDetail
,
DiabetesDetail
,
CoronaryHeartDiseaseDetail
,
StrokeDetail
,
CopdDetail
,
ChronicKidneyDiseaseDetail
,
DyslipidemiaDetail
},
props
:
{
relationId
:
String
},
data
()
{
return
{
info
:
{}
}
},
computed
:
{
diseaseType
()
{
return
this
.
$route
.
query
.
diseaseType
}
},
created
()
{
this
.
load
()
},
methods
:
{
load
()
{
if
(
!
this
.
relationId
)
{
this
.
$message
.
info
(
'未获取到信息'
)
return
}
let
params
=
{
id
:
this
.
relationId
,
diseaseType
:
this
.
diseaseType
}
getSeparateFUDetail
(
params
).
then
(
res
=>
{
console
.
log
(
666
,
res
)
let
result
=
res
.
data
||
{}
this
.
info
=
result
})
}
}
}
</
script
>
\ No newline at end of file
src/doctor/followUp/separateFU/detail/components/ChronicKidneyDiseaseDetail.vue
0 → 100644
View file @
3735a1aa
<
template
>
<div
class=
"p-3 grow cont-box"
>
<div
class=
"p-3 h-full cont-inner"
>
<div
class=
"flex justify-between collapse-head mt-2"
>
<span
class=
"text-16 font-semibold"
>
全部内容
</span>
<span
@
click=
"toggleAll"
>
<span
v-if=
"!collapseAll"
>
展开全部
</span>
<span
v-else
>
收起全部
</span>
<span
:class=
"['ml-2 icon-down',
{ 'icon-down-expanded': collapseAll }]">
<doc-icon
type=
"doc-down"
/>
</span>
</span>
</div>
<van-collapse
:model-value=
"activeCollapse"
ref=
"collapse"
class=
"doc-collapse"
@
change=
"collapseChange"
>
<van-collapse-item
key=
"1"
title=
"居民信息"
name=
"1"
>
<template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsBase"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 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
>
<span>
{{ residentInfo[item.key] || '-' }}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{ item.unit }}
</span>
</span>
</div>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"2"
title=
"随访方式"
name=
"2"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
随访方式
</span>
<span
class=
"text-end"
>
{{ visitInfo.visitWayName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"3"
title=
"症状"
name=
"3"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
症状
</span>
<span
class=
"text-end"
>
{{ visitInfo.symptomName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"4"
title=
"体征"
name=
"4"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsPhysical"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{ item.title }}
</span>
<span
class=
"text-end"
>
<span>
{{ visitInfo[item.key] || '-' }}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{ item.unit }}
</span>
</span>
</div>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"5"
title=
"生活方式指导"
name=
"5"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
style=
"color: #262626"
>
吸烟
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
是否正在吸烟:
</span>
<span>
{{ visitInfo.isSmokingName }}
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1"
>
<span>
您大约从几岁起开始养成每天或基本每天都吸烟的习惯:
</span>
<span>
{{ visitInfo.startSmokeAge || '-' }}岁
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
您最近7天是否吸烟:
</span>
<span>
{{ visitInfo.lastSevenSmokeName }}
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
日吸烟量:
</span>
<span>
{{ visitInfo.daySmoking || '-' }}支
</span>
<!-- <span class="ml-4">目标日吸烟量:</span>
<span>{{ visitInfo.goalDaySmoking || '-' }}支</span> -->
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
目标日吸烟量:
</span>
<span>
{{ visitInfo.goalDaySmoking || '-' }}支
</span>
</div>
</div>
<div
style=
"color: #262626"
class=
"mt-2"
>
饮酒
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
是否正在饮酒:
</span>
<span>
{{ visitInfo.isDrinkName }}
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
日饮酒量:
</span>
<span>
{{ visitInfo.dayDrink || '-' }}ml
</span>
<span
class=
"ml-4"
>
目标日饮酒量:
</span>
<span>
{{ visitInfo.goalDayDrink || '-' }}ml
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
白酒:
</span>
<span>
{{ visitInfo.drinkLiquor || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
啤酒:
</span>
<span>
{{ visitInfo.drinkBeer || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
红酒:
</span>
<span>
{{ visitInfo.drinkRed || '-' }}ml/日
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
黄酒:
</span>
<span>
{{ visitInfo.drinkYellow || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
其他:
</span>
<span>
{{ visitInfo.drinkOther || '-' }}ml/日
</span>
</div>
</div>
<div
style=
"color: #262626"
class=
"mt-2"
>
运动
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
有无规律活动:
</span>
<span>
{{ visitInfo.regularExerciseName }}
</span>
</div>
<div
v-if=
"visitInfo.regularExercise === 1"
>
<span>
运动强度:
</span>
<span>
{{ visitInfo.exerciseStrengthName }}
</span>
</div>
<div>
<span>
目前运动情况:
</span>
<span>
{{ visitInfo.nowExerciseWeek || '-' }}次/周、
</span>
<span>
{{ visitInfo.nowExerciseMinute || '-' }}分钟/次
</span>
</div>
<div>
<span>
目标运动情况:
</span>
<span>
{{ visitInfo.targetExerciseWeek || '-' }}次/周、
</span>
<span>
{{ visitInfo.targetExerciseMinute || '-' }}分钟/次
</span>
</div>
</div>
<div
class=
"list mt-2"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
摄盐情况(咸淡)
</span>
<span
class=
"text-end"
>
{{ visitInfo.saltIntakeName || '-' }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
心理调整
</span>
<span
class=
"text-end"
>
{{ visitInfo.psychologicalRecoveryName || '-' }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
遵医行为
</span>
<span
class=
"text-end"
>
{{ visitInfo.doctorAdviceName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"6"
title=
"辅助检查"
name=
"6"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"7"
title=
"目前高血压用药及依从性"
name=
"7"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"8"
title=
"药物不良反应"
name=
"8"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
药物不良反应
</span>
<span
class=
"text-end"
>
{{ visitInfo.drugsAdverseName }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
不良反应
</span>
<span
class=
"text-end"
>
{{ visitInfo.drugsAdverseOther || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"9"
title=
"此次随访分类"
name=
"9"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
此次随访分类
</span>
<span
class=
"text-end"
>
{{ visitInfo.visitTypeName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"10"
title=
"目前诊断"
name=
"10"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
目前诊断
</span>
<span
class=
"text-end"
>
{{ visitInfo.currentDiagnosisName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"11"
title=
"用药情况"
name=
"11"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"12"
title=
"转诊"
name=
"12"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊
</span>
<span
class=
"text-end"
>
{{ visitInfo.isReferralName }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊原因
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralReason }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊机构
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralUnitName }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊科室
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralOfficeName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"13"
title=
"现场随访照片"
name=
"13"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<ImagePreview
:img-list=
"visitInfo.visitImageList"
></ImagePreview>
</van-collapse-item>
<van-collapse-item
key=
"14"
title=
"下次随访日期"
name=
"14"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
下次随访日期
</span>
<span
class=
"text-end"
>
{{ visitInfo.nextVisitDate }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"15"
title=
"随访机构"
name=
"15"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsOrg"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{ item.title }}
</span>
<span
class=
"text-end"
>
{{ visitInfo[item.key] }}
</span>
</div>
</div>
</div>
</van-collapse-item>
</van-collapse>
</div>
</div>
</template>
<
script
>
import
ImagePreview
from
'@/doctor/components/imagePreview/imagePreview.vue'
export
default
{
components
:
{
ImagePreview
},
props
:
{
visitInfo
:
{
type
:
Object
,
default
:
()
=>
{}
}
},
data
()
{
return
{
collapseAll
:
false
,
activeCollapse
:
[],
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'
}
],
columnsPhysical
:
[
{
title
:
'收缩压SBP'
,
key
:
'signSystolicPressure'
,
unit
:
'mmHg'
},
{
title
:
'舒张压DBP'
,
key
:
'signDiastolicPressure'
,
unit
:
'mmHg'
},
{
title
:
'身高'
,
key
:
'signHeight'
,
unit
:
'cm'
},
{
title
:
'体重'
,
key
:
'signWeight'
,
unit
:
'kg'
},
{
title
:
'BMI'
,
key
:
'signBmi'
,
unit
:
'kg/m²'
},
{
title
:
'腰围'
,
key
:
'signWaistline'
,
unit
:
'cm'
},
{
title
:
'心率'
,
key
:
'signHeartRate'
,
unit
:
'次/分'
},
{
title
:
'其他'
,
key
:
'signOther'
}
],
columnsOrg
:
[
{
title
:
'随访日期'
,
key
:
'visitDate'
},
{
title
:
'随访单位'
,
key
:
'visitUnitName'
},
{
title
:
'随访科室'
,
key
:
'visitOfficeName'
},
{
title
:
'随访医生'
,
key
:
'visitDoctorName'
}
]
}
},
computed
:
{
residentInfo
()
{
return
this
.
visitInfo
.
residentsRecord
||
{}
}
},
methods
:
{
// 全部展开、收起
toggleAll
()
{
if
(
this
.
collapseAll
)
{
this
.
activeCollapse
=
[]
}
else
{
let
list
=
[]
for
(
let
i
=
1
;
i
<
16
;
i
++
)
{
list
.
push
(
i
.
toString
())
}
this
.
activeCollapse
=
list
}
this
.
collapseAll
=
!
this
.
collapseAll
},
// 折叠面板切换
collapseChange
(
val
)
{
console
.
log
(
val
)
if
(
val
&&
val
.
length
<=
2
)
{
this
.
activeCollapse
=
val
.
slice
(
val
.
length
-
1
)
}
else
{
if
(
this
.
activeCollapse
.
length
>
val
.
length
)
{
this
.
activeCollapse
=
val
}
if
(
this
.
activeCollapse
.
length
<
val
.
length
)
{
this
.
activeCollapse
=
val
.
slice
(
val
.
length
-
1
)
}
}
if
(
val
.
length
===
15
)
{
this
.
collapseAll
=
true
}
else
{
this
.
collapseAll
=
false
}
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
@import url('@/doctor/utils/common.less');
.cont-box {
background-color: #f9f9f9;
.cont-inner {
background: linear-gradient(to bottom, #F0F6FF, #fff .6rem);
border-top-left-radius: .08rem;
border-top-right-radius: .08rem;
}
}
.collapse-head {
.icon-down {
vertical-align: middle;
font-size: .12rem;
.svg-icon {
transition: all .2s;
}
}
.icon-down-expanded {
.svg-icon {
transform: rotate(-180deg);
}
}
}
.list {
color: #262626;
.label {
min-width: 5em;
}
}
.gray-box {
background: #F8FAFC;
padding: 8px;
color: #4D5665;
font-size: 13px;
}
</
style
>
\ No newline at end of file
src/doctor/followUp/separateFU/detail/components/CopdDetail.vue
0 → 100644
View file @
3735a1aa
<
template
>
<div
class=
"p-3 grow cont-box"
>
<div
class=
"p-3 h-full cont-inner"
>
<div
class=
"flex justify-between collapse-head mt-2"
>
<span
class=
"text-16 font-semibold"
>
全部内容
</span>
<span
@
click=
"toggleAll"
>
<span
v-if=
"!collapseAll"
>
展开全部
</span>
<span
v-else
>
收起全部
</span>
<span
:class=
"['ml-2 icon-down',
{ 'icon-down-expanded': collapseAll }]">
<doc-icon
type=
"doc-down"
/>
</span>
</span>
</div>
<van-collapse
:model-value=
"activeCollapse"
ref=
"collapse"
class=
"doc-collapse"
@
change=
"collapseChange"
>
<van-collapse-item
key=
"1"
title=
"居民信息"
name=
"1"
>
<template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsBase"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 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
>
<span>
{{ residentInfo[item.key] || '-' }}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{ item.unit }}
</span>
</span>
</div>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"2"
title=
"随访方式"
name=
"2"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
随访方式
</span>
<span
class=
"text-end"
>
{{ visitInfo.visitWayName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"3"
title=
"症状"
name=
"3"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
症状
</span>
<span
class=
"text-end"
>
{{ visitInfo.symptomName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"4"
title=
"体征"
name=
"4"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsPhysical"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{ item.title }}
</span>
<span
class=
"text-end"
>
<span>
{{ visitInfo[item.key] || '-' }}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{ item.unit }}
</span>
</span>
</div>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"5"
title=
"生活方式指导"
name=
"5"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
style=
"color: #262626"
>
吸烟
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
是否正在吸烟:
</span>
<span>
{{ visitInfo.isSmokingName }}
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1"
>
<span>
您大约从几岁起开始养成每天或基本每天都吸烟的习惯:
</span>
<span>
{{ visitInfo.startSmokeAge || '-' }}岁
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
您最近7天是否吸烟:
</span>
<span>
{{ visitInfo.lastSevenSmokeName }}
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
日吸烟量:
</span>
<span>
{{ visitInfo.daySmoking || '-' }}支
</span>
<!-- <span class="ml-4">目标日吸烟量:</span>
<span>{{ visitInfo.goalDaySmoking || '-' }}支</span> -->
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
目标日吸烟量:
</span>
<span>
{{ visitInfo.goalDaySmoking || '-' }}支
</span>
</div>
</div>
<div
style=
"color: #262626"
class=
"mt-2"
>
饮酒
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
是否正在饮酒:
</span>
<span>
{{ visitInfo.isDrinkName }}
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
日饮酒量:
</span>
<span>
{{ visitInfo.dayDrink || '-' }}ml
</span>
<span
class=
"ml-4"
>
目标日饮酒量:
</span>
<span>
{{ visitInfo.goalDayDrink || '-' }}ml
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
白酒:
</span>
<span>
{{ visitInfo.drinkLiquor || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
啤酒:
</span>
<span>
{{ visitInfo.drinkBeer || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
红酒:
</span>
<span>
{{ visitInfo.drinkRed || '-' }}ml/日
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
黄酒:
</span>
<span>
{{ visitInfo.drinkYellow || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
其他:
</span>
<span>
{{ visitInfo.drinkOther || '-' }}ml/日
</span>
</div>
</div>
<div
style=
"color: #262626"
class=
"mt-2"
>
运动
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
有无规律活动:
</span>
<span>
{{ visitInfo.regularExerciseName }}
</span>
</div>
<div
v-if=
"visitInfo.regularExercise === 1"
>
<span>
运动强度:
</span>
<span>
{{ visitInfo.exerciseStrengthName }}
</span>
</div>
<div>
<span>
目前运动情况:
</span>
<span>
{{ visitInfo.nowExerciseWeek || '-' }}次/周、
</span>
<span>
{{ visitInfo.nowExerciseMinute || '-' }}分钟/次
</span>
</div>
<div>
<span>
目标运动情况:
</span>
<span>
{{ visitInfo.targetExerciseWeek || '-' }}次/周、
</span>
<span>
{{ visitInfo.targetExerciseMinute || '-' }}分钟/次
</span>
</div>
</div>
<div
class=
"list mt-2"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
摄盐情况(咸淡)
</span>
<span
class=
"text-end"
>
{{ visitInfo.saltIntakeName || '-' }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
心理调整
</span>
<span
class=
"text-end"
>
{{ visitInfo.psychologicalRecoveryName || '-' }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
遵医行为
</span>
<span
class=
"text-end"
>
{{ visitInfo.doctorAdviceName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"6"
title=
"辅助检查"
name=
"6"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"7"
title=
"目前高血压用药及依从性"
name=
"7"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"8"
title=
"药物不良反应"
name=
"8"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
药物不良反应
</span>
<span
class=
"text-end"
>
{{ visitInfo.drugsAdverseName }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
不良反应
</span>
<span
class=
"text-end"
>
{{ visitInfo.drugsAdverseOther || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"9"
title=
"此次随访分类"
name=
"9"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
此次随访分类
</span>
<span
class=
"text-end"
>
{{ visitInfo.visitTypeName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"10"
title=
"目前诊断"
name=
"10"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
目前诊断
</span>
<span
class=
"text-end"
>
{{ visitInfo.currentDiagnosisName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"11"
title=
"用药情况"
name=
"11"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"12"
title=
"转诊"
name=
"12"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊
</span>
<span
class=
"text-end"
>
{{ visitInfo.isReferralName }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊原因
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralReason }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊机构
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralUnitName }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊科室
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralOfficeName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"13"
title=
"现场随访照片"
name=
"13"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<ImagePreview
:img-list=
"visitInfo.visitImageList"
></ImagePreview>
</van-collapse-item>
<van-collapse-item
key=
"14"
title=
"下次随访日期"
name=
"14"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
下次随访日期
</span>
<span
class=
"text-end"
>
{{ visitInfo.nextVisitDate }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"15"
title=
"随访机构"
name=
"15"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsOrg"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{ item.title }}
</span>
<span
class=
"text-end"
>
{{ visitInfo[item.key] }}
</span>
</div>
</div>
</div>
</van-collapse-item>
</van-collapse>
</div>
</div>
</template>
<
script
>
import
ImagePreview
from
'@/doctor/components/imagePreview/imagePreview.vue'
export
default
{
components
:
{
ImagePreview
},
props
:
{
visitInfo
:
{
type
:
Object
,
default
:
()
=>
{}
}
},
data
()
{
return
{
collapseAll
:
false
,
activeCollapse
:
[],
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'
}
],
columnsPhysical
:
[
{
title
:
'收缩压SBP'
,
key
:
'signSystolicPressure'
,
unit
:
'mmHg'
},
{
title
:
'舒张压DBP'
,
key
:
'signDiastolicPressure'
,
unit
:
'mmHg'
},
{
title
:
'身高'
,
key
:
'signHeight'
,
unit
:
'cm'
},
{
title
:
'体重'
,
key
:
'signWeight'
,
unit
:
'kg'
},
{
title
:
'BMI'
,
key
:
'signBmi'
,
unit
:
'kg/m²'
},
{
title
:
'腰围'
,
key
:
'signWaistline'
,
unit
:
'cm'
},
{
title
:
'心率'
,
key
:
'signHeartRate'
,
unit
:
'次/分'
},
{
title
:
'其他'
,
key
:
'signOther'
}
],
columnsOrg
:
[
{
title
:
'随访日期'
,
key
:
'visitDate'
},
{
title
:
'随访单位'
,
key
:
'visitUnitName'
},
{
title
:
'随访科室'
,
key
:
'visitOfficeName'
},
{
title
:
'随访医生'
,
key
:
'visitDoctorName'
}
]
}
},
computed
:
{
residentInfo
()
{
return
this
.
visitInfo
.
residentsRecord
||
{}
}
},
methods
:
{
// 全部展开、收起
toggleAll
()
{
if
(
this
.
collapseAll
)
{
this
.
activeCollapse
=
[]
}
else
{
let
list
=
[]
for
(
let
i
=
1
;
i
<
16
;
i
++
)
{
list
.
push
(
i
.
toString
())
}
this
.
activeCollapse
=
list
}
this
.
collapseAll
=
!
this
.
collapseAll
},
// 折叠面板切换
collapseChange
(
val
)
{
console
.
log
(
val
)
if
(
val
&&
val
.
length
<=
2
)
{
this
.
activeCollapse
=
val
.
slice
(
val
.
length
-
1
)
}
else
{
if
(
this
.
activeCollapse
.
length
>
val
.
length
)
{
this
.
activeCollapse
=
val
}
if
(
this
.
activeCollapse
.
length
<
val
.
length
)
{
this
.
activeCollapse
=
val
.
slice
(
val
.
length
-
1
)
}
}
if
(
val
.
length
===
15
)
{
this
.
collapseAll
=
true
}
else
{
this
.
collapseAll
=
false
}
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
@import url('@/doctor/utils/common.less');
.cont-box {
background-color: #f9f9f9;
.cont-inner {
background: linear-gradient(to bottom, #F0F6FF, #fff .6rem);
border-top-left-radius: .08rem;
border-top-right-radius: .08rem;
}
}
.collapse-head {
.icon-down {
vertical-align: middle;
font-size: .12rem;
.svg-icon {
transition: all .2s;
}
}
.icon-down-expanded {
.svg-icon {
transform: rotate(-180deg);
}
}
}
.list {
color: #262626;
.label {
min-width: 5em;
}
}
.gray-box {
background: #F8FAFC;
padding: 8px;
color: #4D5665;
font-size: 13px;
}
</
style
>
\ No newline at end of file
src/doctor/followUp/separateFU/detail/components/CoronaryHeartDiseaseDetail.vue
0 → 100644
View file @
3735a1aa
<
template
>
<div
class=
"p-3 grow cont-box"
>
<div
class=
"p-3 h-full cont-inner"
>
<div
class=
"flex justify-between collapse-head mt-2"
>
<span
class=
"text-16 font-semibold"
>
全部内容
</span>
<span
@
click=
"toggleAll"
>
<span
v-if=
"!collapseAll"
>
展开全部
</span>
<span
v-else
>
收起全部
</span>
<span
:class=
"['ml-2 icon-down',
{ 'icon-down-expanded': collapseAll }]">
<doc-icon
type=
"doc-down"
/>
</span>
</span>
</div>
<van-collapse
:model-value=
"activeCollapse"
ref=
"collapse"
class=
"doc-collapse"
@
change=
"collapseChange"
>
<van-collapse-item
key=
"1"
title=
"居民信息"
name=
"1"
>
<template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsBase"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 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
>
<span>
{{ residentInfo[item.key] || '-' }}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{ item.unit }}
</span>
</span>
</div>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"2"
title=
"随访方式"
name=
"2"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
随访方式
</span>
<span
class=
"text-end"
>
{{ visitInfo.visitWayName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"3"
title=
"症状"
name=
"3"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
症状
</span>
<span
class=
"text-end"
>
{{ visitInfo.symptomName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"4"
title=
"体征"
name=
"4"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsPhysical"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{ item.title }}
</span>
<span
class=
"text-end"
>
<span>
{{ visitInfo[item.key] || '-' }}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{ item.unit }}
</span>
</span>
</div>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"5"
title=
"生活方式指导"
name=
"5"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
style=
"color: #262626"
>
吸烟
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
是否正在吸烟:
</span>
<span>
{{ visitInfo.isSmokingName }}
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1"
>
<span>
您大约从几岁起开始养成每天或基本每天都吸烟的习惯:
</span>
<span>
{{ visitInfo.startSmokeAge || '-' }}岁
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
您最近7天是否吸烟:
</span>
<span>
{{ visitInfo.lastSevenSmokeName }}
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
日吸烟量:
</span>
<span>
{{ visitInfo.daySmoking || '-' }}支
</span>
<!-- <span class="ml-4">目标日吸烟量:</span>
<span>{{ visitInfo.goalDaySmoking || '-' }}支</span> -->
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
目标日吸烟量:
</span>
<span>
{{ visitInfo.goalDaySmoking || '-' }}支
</span>
</div>
</div>
<div
style=
"color: #262626"
class=
"mt-2"
>
饮酒
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
是否正在饮酒:
</span>
<span>
{{ visitInfo.isDrinkName }}
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
日饮酒量:
</span>
<span>
{{ visitInfo.dayDrink || '-' }}ml
</span>
<span
class=
"ml-4"
>
目标日饮酒量:
</span>
<span>
{{ visitInfo.goalDayDrink || '-' }}ml
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
白酒:
</span>
<span>
{{ visitInfo.drinkLiquor || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
啤酒:
</span>
<span>
{{ visitInfo.drinkBeer || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
红酒:
</span>
<span>
{{ visitInfo.drinkRed || '-' }}ml/日
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
黄酒:
</span>
<span>
{{ visitInfo.drinkYellow || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
其他:
</span>
<span>
{{ visitInfo.drinkOther || '-' }}ml/日
</span>
</div>
</div>
<div
style=
"color: #262626"
class=
"mt-2"
>
运动
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
有无规律活动:
</span>
<span>
{{ visitInfo.regularExerciseName }}
</span>
</div>
<div
v-if=
"visitInfo.regularExercise === 1"
>
<span>
运动强度:
</span>
<span>
{{ visitInfo.exerciseStrengthName }}
</span>
</div>
<div>
<span>
目前运动情况:
</span>
<span>
{{ visitInfo.nowExerciseWeek || '-' }}次/周、
</span>
<span>
{{ visitInfo.nowExerciseMinute || '-' }}分钟/次
</span>
</div>
<div>
<span>
目标运动情况:
</span>
<span>
{{ visitInfo.targetExerciseWeek || '-' }}次/周、
</span>
<span>
{{ visitInfo.targetExerciseMinute || '-' }}分钟/次
</span>
</div>
</div>
<div
class=
"list mt-2"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
摄盐情况(咸淡)
</span>
<span
class=
"text-end"
>
{{ visitInfo.saltIntakeName || '-' }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
心理调整
</span>
<span
class=
"text-end"
>
{{ visitInfo.psychologicalRecoveryName || '-' }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
遵医行为
</span>
<span
class=
"text-end"
>
{{ visitInfo.doctorAdviceName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"6"
title=
"辅助检查"
name=
"6"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"7"
title=
"目前高血压用药及依从性"
name=
"7"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"8"
title=
"药物不良反应"
name=
"8"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
药物不良反应
</span>
<span
class=
"text-end"
>
{{ visitInfo.drugsAdverseName }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
不良反应
</span>
<span
class=
"text-end"
>
{{ visitInfo.drugsAdverseOther || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"9"
title=
"此次随访分类"
name=
"9"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
此次随访分类
</span>
<span
class=
"text-end"
>
{{ visitInfo.visitTypeName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"10"
title=
"目前诊断"
name=
"10"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
目前诊断
</span>
<span
class=
"text-end"
>
{{ visitInfo.currentDiagnosisName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"11"
title=
"用药情况"
name=
"11"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"12"
title=
"转诊"
name=
"12"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊
</span>
<span
class=
"text-end"
>
{{ visitInfo.isReferralName }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊原因
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralReason }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊机构
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralUnitName }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊科室
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralOfficeName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"13"
title=
"现场随访照片"
name=
"13"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<ImagePreview
:img-list=
"visitInfo.visitImageList"
></ImagePreview>
</van-collapse-item>
<van-collapse-item
key=
"14"
title=
"下次随访日期"
name=
"14"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
下次随访日期
</span>
<span
class=
"text-end"
>
{{ visitInfo.nextVisitDate }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"15"
title=
"随访机构"
name=
"15"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsOrg"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{ item.title }}
</span>
<span
class=
"text-end"
>
{{ visitInfo[item.key] }}
</span>
</div>
</div>
</div>
</van-collapse-item>
</van-collapse>
</div>
</div>
</template>
<
script
>
import
ImagePreview
from
'@/doctor/components/imagePreview/imagePreview.vue'
export
default
{
components
:
{
ImagePreview
},
props
:
{
visitInfo
:
{
type
:
Object
,
default
:
()
=>
{}
}
},
data
()
{
return
{
collapseAll
:
false
,
activeCollapse
:
[],
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'
}
],
columnsPhysical
:
[
{
title
:
'收缩压SBP'
,
key
:
'signSystolicPressure'
,
unit
:
'mmHg'
},
{
title
:
'舒张压DBP'
,
key
:
'signDiastolicPressure'
,
unit
:
'mmHg'
},
{
title
:
'身高'
,
key
:
'signHeight'
,
unit
:
'cm'
},
{
title
:
'体重'
,
key
:
'signWeight'
,
unit
:
'kg'
},
{
title
:
'BMI'
,
key
:
'signBmi'
,
unit
:
'kg/m²'
},
{
title
:
'腰围'
,
key
:
'signWaistline'
,
unit
:
'cm'
},
{
title
:
'心率'
,
key
:
'signHeartRate'
,
unit
:
'次/分'
},
{
title
:
'其他'
,
key
:
'signOther'
}
],
columnsOrg
:
[
{
title
:
'随访日期'
,
key
:
'visitDate'
},
{
title
:
'随访单位'
,
key
:
'visitUnitName'
},
{
title
:
'随访科室'
,
key
:
'visitOfficeName'
},
{
title
:
'随访医生'
,
key
:
'visitDoctorName'
}
]
}
},
computed
:
{
residentInfo
()
{
return
this
.
visitInfo
.
residentsRecord
||
{}
}
},
methods
:
{
// 全部展开、收起
toggleAll
()
{
if
(
this
.
collapseAll
)
{
this
.
activeCollapse
=
[]
}
else
{
let
list
=
[]
for
(
let
i
=
1
;
i
<
16
;
i
++
)
{
list
.
push
(
i
.
toString
())
}
this
.
activeCollapse
=
list
}
this
.
collapseAll
=
!
this
.
collapseAll
},
// 折叠面板切换
collapseChange
(
val
)
{
console
.
log
(
val
)
if
(
val
&&
val
.
length
<=
2
)
{
this
.
activeCollapse
=
val
.
slice
(
val
.
length
-
1
)
}
else
{
if
(
this
.
activeCollapse
.
length
>
val
.
length
)
{
this
.
activeCollapse
=
val
}
if
(
this
.
activeCollapse
.
length
<
val
.
length
)
{
this
.
activeCollapse
=
val
.
slice
(
val
.
length
-
1
)
}
}
if
(
val
.
length
===
15
)
{
this
.
collapseAll
=
true
}
else
{
this
.
collapseAll
=
false
}
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
@import url('@/doctor/utils/common.less');
.cont-box {
background-color: #f9f9f9;
.cont-inner {
background: linear-gradient(to bottom, #F0F6FF, #fff .6rem);
border-top-left-radius: .08rem;
border-top-right-radius: .08rem;
}
}
.collapse-head {
.icon-down {
vertical-align: middle;
font-size: .12rem;
.svg-icon {
transition: all .2s;
}
}
.icon-down-expanded {
.svg-icon {
transform: rotate(-180deg);
}
}
}
.list {
color: #262626;
.label {
min-width: 5em;
}
}
.gray-box {
background: #F8FAFC;
padding: 8px;
color: #4D5665;
font-size: 13px;
}
</
style
>
\ No newline at end of file
src/doctor/followUp/separateFU/detail/components/DiabetesDetail.vue
0 → 100644
View file @
3735a1aa
<
template
>
<div
class=
"p-3 grow cont-box"
>
<div
class=
"p-3 h-full cont-inner"
>
<div
class=
"flex justify-between collapse-head mt-2"
>
<span
class=
"text-16 font-semibold"
>
全部内容
</span>
<span
@
click=
"toggleAll"
>
<span
v-if=
"!collapseAll"
>
展开全部
</span>
<span
v-else
>
收起全部
</span>
<span
:class=
"['ml-2 icon-down',
{ 'icon-down-expanded': collapseAll }]">
<doc-icon
type=
"doc-down"
/>
</span>
</span>
</div>
<van-collapse
:model-value=
"activeCollapse"
ref=
"collapse"
class=
"doc-collapse"
@
change=
"collapseChange"
>
<van-collapse-item
key=
"1"
title=
"居民信息"
name=
"1"
>
<template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsBase"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 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
>
<span>
{{ residentInfo[item.key] || '-' }}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{ item.unit }}
</span>
</span>
</div>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"2"
title=
"随访方式"
name=
"2"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
随访方式
</span>
<span
class=
"text-end"
>
{{ visitInfo.visitWayName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"3"
title=
"症状"
name=
"3"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
症状
</span>
<span
class=
"text-end"
>
{{ visitInfo.symptomName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"4"
title=
"体征"
name=
"4"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsPhysical"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{ item.title }}
</span>
<span
class=
"text-end"
>
<span>
{{ visitInfo[item.key] || '-' }}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{ item.unit }}
</span>
</span>
</div>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"5"
title=
"生活方式指导"
name=
"5"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
style=
"color: #262626"
>
吸烟
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
是否正在吸烟:
</span>
<span>
{{ visitInfo.isSmokingName }}
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1"
>
<span>
您大约从几岁起开始养成每天或基本每天都吸烟的习惯:
</span>
<span>
{{ visitInfo.startSmokeAge || '-' }}岁
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
您最近7天是否吸烟:
</span>
<span>
{{ visitInfo.lastSevenSmokeName }}
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
日吸烟量:
</span>
<span>
{{ visitInfo.daySmoking || '-' }}支
</span>
<!-- <span class="ml-4">目标日吸烟量:</span>
<span>{{ visitInfo.goalDaySmoking || '-' }}支</span> -->
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
目标日吸烟量:
</span>
<span>
{{ visitInfo.goalDaySmoking || '-' }}支
</span>
</div>
</div>
<div
style=
"color: #262626"
class=
"mt-2"
>
饮酒
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
是否正在饮酒:
</span>
<span>
{{ visitInfo.isDrinkName }}
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
日饮酒量:
</span>
<span>
{{ visitInfo.dayDrink || '-' }}ml
</span>
<span
class=
"ml-4"
>
目标日饮酒量:
</span>
<span>
{{ visitInfo.goalDayDrink || '-' }}ml
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
白酒:
</span>
<span>
{{ visitInfo.drinkLiquor || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
啤酒:
</span>
<span>
{{ visitInfo.drinkBeer || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
红酒:
</span>
<span>
{{ visitInfo.drinkRed || '-' }}ml/日
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
黄酒:
</span>
<span>
{{ visitInfo.drinkYellow || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
其他:
</span>
<span>
{{ visitInfo.drinkOther || '-' }}ml/日
</span>
</div>
</div>
<div
style=
"color: #262626"
class=
"mt-2"
>
运动
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
有无规律活动:
</span>
<span>
{{ visitInfo.regularExerciseName }}
</span>
</div>
<div
v-if=
"visitInfo.regularExercise === 1"
>
<span>
运动强度:
</span>
<span>
{{ visitInfo.exerciseStrengthName }}
</span>
</div>
<div>
<span>
目前运动情况:
</span>
<span>
{{ visitInfo.nowExerciseWeek || '-' }}次/周、
</span>
<span>
{{ visitInfo.nowExerciseMinute || '-' }}分钟/次
</span>
</div>
<div>
<span>
目标运动情况:
</span>
<span>
{{ visitInfo.targetExerciseWeek || '-' }}次/周、
</span>
<span>
{{ visitInfo.targetExerciseMinute || '-' }}分钟/次
</span>
</div>
</div>
<div
class=
"list mt-2"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
摄盐情况(咸淡)
</span>
<span
class=
"text-end"
>
{{ visitInfo.saltIntakeName || '-' }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
心理调整
</span>
<span
class=
"text-end"
>
{{ visitInfo.psychologicalRecoveryName || '-' }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
遵医行为
</span>
<span
class=
"text-end"
>
{{ visitInfo.doctorAdviceName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"6"
title=
"辅助检查"
name=
"6"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"7"
title=
"目前高血压用药及依从性"
name=
"7"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"8"
title=
"药物不良反应"
name=
"8"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
药物不良反应
</span>
<span
class=
"text-end"
>
{{ visitInfo.drugsAdverseName }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
不良反应
</span>
<span
class=
"text-end"
>
{{ visitInfo.drugsAdverseOther || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"9"
title=
"此次随访分类"
name=
"9"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
此次随访分类
</span>
<span
class=
"text-end"
>
{{ visitInfo.visitTypeName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"10"
title=
"目前诊断"
name=
"10"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
目前诊断
</span>
<span
class=
"text-end"
>
{{ visitInfo.currentDiagnosisName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"11"
title=
"用药情况"
name=
"11"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"12"
title=
"转诊"
name=
"12"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊
</span>
<span
class=
"text-end"
>
{{ visitInfo.isReferralName }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊原因
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralReason }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊机构
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralUnitName }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊科室
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralOfficeName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"13"
title=
"现场随访照片"
name=
"13"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<ImagePreview
:img-list=
"visitInfo.visitImageList"
></ImagePreview>
</van-collapse-item>
<van-collapse-item
key=
"14"
title=
"下次随访日期"
name=
"14"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
下次随访日期
</span>
<span
class=
"text-end"
>
{{ visitInfo.nextVisitDate }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"15"
title=
"随访机构"
name=
"15"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsOrg"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{ item.title }}
</span>
<span
class=
"text-end"
>
{{ visitInfo[item.key] }}
</span>
</div>
</div>
</div>
</van-collapse-item>
</van-collapse>
</div>
</div>
</template>
<
script
>
import
ImagePreview
from
'@/doctor/components/imagePreview/imagePreview.vue'
export
default
{
components
:
{
ImagePreview
},
props
:
{
visitInfo
:
{
type
:
Object
,
default
:
()
=>
{}
}
},
data
()
{
return
{
collapseAll
:
false
,
activeCollapse
:
[],
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'
}
],
columnsPhysical
:
[
{
title
:
'收缩压SBP'
,
key
:
'signSystolicPressure'
,
unit
:
'mmHg'
},
{
title
:
'舒张压DBP'
,
key
:
'signDiastolicPressure'
,
unit
:
'mmHg'
},
{
title
:
'身高'
,
key
:
'signHeight'
,
unit
:
'cm'
},
{
title
:
'体重'
,
key
:
'signWeight'
,
unit
:
'kg'
},
{
title
:
'BMI'
,
key
:
'signBmi'
,
unit
:
'kg/m²'
},
{
title
:
'腰围'
,
key
:
'signWaistline'
,
unit
:
'cm'
},
{
title
:
'心率'
,
key
:
'signHeartRate'
,
unit
:
'次/分'
},
{
title
:
'其他'
,
key
:
'signOther'
}
],
columnsOrg
:
[
{
title
:
'随访日期'
,
key
:
'visitDate'
},
{
title
:
'随访单位'
,
key
:
'visitUnitName'
},
{
title
:
'随访科室'
,
key
:
'visitOfficeName'
},
{
title
:
'随访医生'
,
key
:
'visitDoctorName'
}
]
}
},
computed
:
{
residentInfo
()
{
return
this
.
visitInfo
.
residentsRecord
||
{}
}
},
methods
:
{
// 全部展开、收起
toggleAll
()
{
if
(
this
.
collapseAll
)
{
this
.
activeCollapse
=
[]
}
else
{
let
list
=
[]
for
(
let
i
=
1
;
i
<
16
;
i
++
)
{
list
.
push
(
i
.
toString
())
}
this
.
activeCollapse
=
list
}
this
.
collapseAll
=
!
this
.
collapseAll
},
// 折叠面板切换
collapseChange
(
val
)
{
console
.
log
(
val
)
if
(
val
&&
val
.
length
<=
2
)
{
this
.
activeCollapse
=
val
.
slice
(
val
.
length
-
1
)
}
else
{
if
(
this
.
activeCollapse
.
length
>
val
.
length
)
{
this
.
activeCollapse
=
val
}
if
(
this
.
activeCollapse
.
length
<
val
.
length
)
{
this
.
activeCollapse
=
val
.
slice
(
val
.
length
-
1
)
}
}
if
(
val
.
length
===
15
)
{
this
.
collapseAll
=
true
}
else
{
this
.
collapseAll
=
false
}
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
@import url('@/doctor/utils/common.less');
.cont-box {
background-color: #f9f9f9;
.cont-inner {
background: linear-gradient(to bottom, #F0F6FF, #fff .6rem);
border-top-left-radius: .08rem;
border-top-right-radius: .08rem;
}
}
.collapse-head {
.icon-down {
vertical-align: middle;
font-size: .12rem;
.svg-icon {
transition: all .2s;
}
}
.icon-down-expanded {
.svg-icon {
transform: rotate(-180deg);
}
}
}
.list {
color: #262626;
.label {
min-width: 5em;
}
}
.gray-box {
background: #F8FAFC;
padding: 8px;
color: #4D5665;
font-size: 13px;
}
</
style
>
\ No newline at end of file
src/doctor/followUp/separateFU/detail/components/DyslipidemiaDetail.vue
0 → 100644
View file @
3735a1aa
<
template
>
<div
class=
"p-3 grow cont-box"
>
<div
class=
"p-3 h-full cont-inner"
>
<div
class=
"flex justify-between collapse-head mt-2"
>
<span
class=
"text-16 font-semibold"
>
全部内容
</span>
<span
@
click=
"toggleAll"
>
<span
v-if=
"!collapseAll"
>
展开全部
</span>
<span
v-else
>
收起全部
</span>
<span
:class=
"['ml-2 icon-down',
{ 'icon-down-expanded': collapseAll }]">
<doc-icon
type=
"doc-down"
/>
</span>
</span>
</div>
<van-collapse
:model-value=
"activeCollapse"
ref=
"collapse"
class=
"doc-collapse"
@
change=
"collapseChange"
>
<van-collapse-item
key=
"1"
title=
"居民信息"
name=
"1"
>
<template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsBase"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 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
>
<span>
{{ residentInfo[item.key] || '-' }}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{ item.unit }}
</span>
</span>
</div>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"2"
title=
"随访方式"
name=
"2"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
随访方式
</span>
<span
class=
"text-end"
>
{{ visitInfo.visitWayName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"3"
title=
"症状"
name=
"3"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
症状
</span>
<span
class=
"text-end"
>
{{ visitInfo.symptomName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"4"
title=
"体征"
name=
"4"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsPhysical"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{ item.title }}
</span>
<span
class=
"text-end"
>
<span>
{{ visitInfo[item.key] || '-' }}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{ item.unit }}
</span>
</span>
</div>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"5"
title=
"生活方式指导"
name=
"5"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
style=
"color: #262626"
>
吸烟
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
是否正在吸烟:
</span>
<span>
{{ visitInfo.isSmokingName }}
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1"
>
<span>
您大约从几岁起开始养成每天或基本每天都吸烟的习惯:
</span>
<span>
{{ visitInfo.startSmokeAge || '-' }}岁
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
您最近7天是否吸烟:
</span>
<span>
{{ visitInfo.lastSevenSmokeName }}
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
日吸烟量:
</span>
<span>
{{ visitInfo.daySmoking || '-' }}支
</span>
<!-- <span class="ml-4">目标日吸烟量:</span>
<span>{{ visitInfo.goalDaySmoking || '-' }}支</span> -->
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
目标日吸烟量:
</span>
<span>
{{ visitInfo.goalDaySmoking || '-' }}支
</span>
</div>
</div>
<div
style=
"color: #262626"
class=
"mt-2"
>
饮酒
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
是否正在饮酒:
</span>
<span>
{{ visitInfo.isDrinkName }}
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
日饮酒量:
</span>
<span>
{{ visitInfo.dayDrink || '-' }}ml
</span>
<span
class=
"ml-4"
>
目标日饮酒量:
</span>
<span>
{{ visitInfo.goalDayDrink || '-' }}ml
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
白酒:
</span>
<span>
{{ visitInfo.drinkLiquor || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
啤酒:
</span>
<span>
{{ visitInfo.drinkBeer || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
红酒:
</span>
<span>
{{ visitInfo.drinkRed || '-' }}ml/日
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
黄酒:
</span>
<span>
{{ visitInfo.drinkYellow || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
其他:
</span>
<span>
{{ visitInfo.drinkOther || '-' }}ml/日
</span>
</div>
</div>
<div
style=
"color: #262626"
class=
"mt-2"
>
运动
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
有无规律活动:
</span>
<span>
{{ visitInfo.regularExerciseName }}
</span>
</div>
<div
v-if=
"visitInfo.regularExercise === 1"
>
<span>
运动强度:
</span>
<span>
{{ visitInfo.exerciseStrengthName }}
</span>
</div>
<div>
<span>
目前运动情况:
</span>
<span>
{{ visitInfo.nowExerciseWeek || '-' }}次/周、
</span>
<span>
{{ visitInfo.nowExerciseMinute || '-' }}分钟/次
</span>
</div>
<div>
<span>
目标运动情况:
</span>
<span>
{{ visitInfo.targetExerciseWeek || '-' }}次/周、
</span>
<span>
{{ visitInfo.targetExerciseMinute || '-' }}分钟/次
</span>
</div>
</div>
<div
class=
"list mt-2"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
摄盐情况(咸淡)
</span>
<span
class=
"text-end"
>
{{ visitInfo.saltIntakeName || '-' }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
心理调整
</span>
<span
class=
"text-end"
>
{{ visitInfo.psychologicalRecoveryName || '-' }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
遵医行为
</span>
<span
class=
"text-end"
>
{{ visitInfo.doctorAdviceName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"6"
title=
"辅助检查"
name=
"6"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"7"
title=
"目前高血压用药及依从性"
name=
"7"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"8"
title=
"药物不良反应"
name=
"8"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
药物不良反应
</span>
<span
class=
"text-end"
>
{{ visitInfo.drugsAdverseName }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
不良反应
</span>
<span
class=
"text-end"
>
{{ visitInfo.drugsAdverseOther || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"9"
title=
"此次随访分类"
name=
"9"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
此次随访分类
</span>
<span
class=
"text-end"
>
{{ visitInfo.visitTypeName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"10"
title=
"目前诊断"
name=
"10"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
目前诊断
</span>
<span
class=
"text-end"
>
{{ visitInfo.currentDiagnosisName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"11"
title=
"用药情况"
name=
"11"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"12"
title=
"转诊"
name=
"12"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊
</span>
<span
class=
"text-end"
>
{{ visitInfo.isReferralName }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊原因
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralReason }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊机构
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralUnitName }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊科室
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralOfficeName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"13"
title=
"现场随访照片"
name=
"13"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<ImagePreview
:img-list=
"visitInfo.visitImageList"
></ImagePreview>
</van-collapse-item>
<van-collapse-item
key=
"14"
title=
"下次随访日期"
name=
"14"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
下次随访日期
</span>
<span
class=
"text-end"
>
{{ visitInfo.nextVisitDate }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"15"
title=
"随访机构"
name=
"15"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsOrg"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{ item.title }}
</span>
<span
class=
"text-end"
>
{{ visitInfo[item.key] }}
</span>
</div>
</div>
</div>
</van-collapse-item>
</van-collapse>
</div>
</div>
</template>
<
script
>
import
ImagePreview
from
'@/doctor/components/imagePreview/imagePreview.vue'
export
default
{
components
:
{
ImagePreview
},
props
:
{
visitInfo
:
{
type
:
Object
,
default
:
()
=>
{}
}
},
data
()
{
return
{
collapseAll
:
false
,
activeCollapse
:
[],
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'
}
],
columnsPhysical
:
[
{
title
:
'收缩压SBP'
,
key
:
'signSystolicPressure'
,
unit
:
'mmHg'
},
{
title
:
'舒张压DBP'
,
key
:
'signDiastolicPressure'
,
unit
:
'mmHg'
},
{
title
:
'身高'
,
key
:
'signHeight'
,
unit
:
'cm'
},
{
title
:
'体重'
,
key
:
'signWeight'
,
unit
:
'kg'
},
{
title
:
'BMI'
,
key
:
'signBmi'
,
unit
:
'kg/m²'
},
{
title
:
'腰围'
,
key
:
'signWaistline'
,
unit
:
'cm'
},
{
title
:
'心率'
,
key
:
'signHeartRate'
,
unit
:
'次/分'
},
{
title
:
'其他'
,
key
:
'signOther'
}
],
columnsOrg
:
[
{
title
:
'随访日期'
,
key
:
'visitDate'
},
{
title
:
'随访单位'
,
key
:
'visitUnitName'
},
{
title
:
'随访科室'
,
key
:
'visitOfficeName'
},
{
title
:
'随访医生'
,
key
:
'visitDoctorName'
}
]
}
},
computed
:
{
residentInfo
()
{
return
this
.
visitInfo
.
residentsRecord
||
{}
}
},
methods
:
{
// 全部展开、收起
toggleAll
()
{
if
(
this
.
collapseAll
)
{
this
.
activeCollapse
=
[]
}
else
{
let
list
=
[]
for
(
let
i
=
1
;
i
<
16
;
i
++
)
{
list
.
push
(
i
.
toString
())
}
this
.
activeCollapse
=
list
}
this
.
collapseAll
=
!
this
.
collapseAll
},
// 折叠面板切换
collapseChange
(
val
)
{
console
.
log
(
val
)
if
(
val
&&
val
.
length
<=
2
)
{
this
.
activeCollapse
=
val
.
slice
(
val
.
length
-
1
)
}
else
{
if
(
this
.
activeCollapse
.
length
>
val
.
length
)
{
this
.
activeCollapse
=
val
}
if
(
this
.
activeCollapse
.
length
<
val
.
length
)
{
this
.
activeCollapse
=
val
.
slice
(
val
.
length
-
1
)
}
}
if
(
val
.
length
===
15
)
{
this
.
collapseAll
=
true
}
else
{
this
.
collapseAll
=
false
}
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
@import url('@/doctor/utils/common.less');
.cont-box {
background-color: #f9f9f9;
.cont-inner {
background: linear-gradient(to bottom, #F0F6FF, #fff .6rem);
border-top-left-radius: .08rem;
border-top-right-radius: .08rem;
}
}
.collapse-head {
.icon-down {
vertical-align: middle;
font-size: .12rem;
.svg-icon {
transition: all .2s;
}
}
.icon-down-expanded {
.svg-icon {
transform: rotate(-180deg);
}
}
}
.list {
color: #262626;
.label {
min-width: 5em;
}
}
.gray-box {
background: #F8FAFC;
padding: 8px;
color: #4D5665;
font-size: 13px;
}
</
style
>
\ No newline at end of file
src/doctor/followUp/separateFU/detail/components/HypertensionDetail.vue
0 → 100644
View file @
3735a1aa
<
template
>
<div
class=
"p-3 grow cont-box"
>
<div
class=
"p-3 h-full cont-inner"
>
<div
class=
"flex justify-between collapse-head mt-2"
>
<span
class=
"text-16 font-semibold"
>
全部内容
</span>
<span
@
click=
"toggleAll"
>
<span
v-if=
"!collapseAll"
>
展开全部
</span>
<span
v-else
>
收起全部
</span>
<span
:class=
"['ml-2 icon-down',
{ 'icon-down-expanded': collapseAll }]">
<doc-icon
type=
"doc-down"
/>
</span>
</span>
</div>
<van-collapse
:model-value=
"activeCollapse"
ref=
"collapse"
class=
"doc-collapse"
@
change=
"collapseChange"
>
<van-collapse-item
key=
"1"
title=
"居民信息"
name=
"1"
>
<template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsBase"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 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
>
<span>
{{ residentInfo[item.key] || '-' }}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{ item.unit }}
</span>
</span>
</div>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"2"
title=
"随访方式"
name=
"2"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
随访方式
</span>
<span
class=
"text-end"
>
{{ visitInfo.visitWayName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"3"
title=
"症状"
name=
"3"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
症状
</span>
<span
class=
"text-end"
>
{{ visitInfo.symptomName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"4"
title=
"体征"
name=
"4"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsPhysical"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{ item.title }}
</span>
<span
class=
"text-end"
>
<span>
{{ visitInfo[item.key] || '-' }}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{ item.unit }}
</span>
</span>
</div>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"5"
title=
"生活方式指导"
name=
"5"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
style=
"color: #262626"
>
吸烟
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
是否正在吸烟:
</span>
<span>
{{ visitInfo.isSmokingName }}
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1"
>
<span>
您大约从几岁起开始养成每天或基本每天都吸烟的习惯:
</span>
<span>
{{ visitInfo.startSmokeAge || '-' }}岁
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
您最近7天是否吸烟:
</span>
<span>
{{ visitInfo.lastSevenSmokeName }}
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
日吸烟量:
</span>
<span>
{{ visitInfo.daySmoking || '-' }}支
</span>
<!-- <span class="ml-4">目标日吸烟量:</span>
<span>{{ visitInfo.goalDaySmoking || '-' }}支</span> -->
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
目标日吸烟量:
</span>
<span>
{{ visitInfo.goalDaySmoking || '-' }}支
</span>
</div>
</div>
<div
style=
"color: #262626"
class=
"mt-2"
>
饮酒
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
是否正在饮酒:
</span>
<span>
{{ visitInfo.isDrinkName }}
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
日饮酒量:
</span>
<span>
{{ visitInfo.dayDrink || '-' }}ml
</span>
<span
class=
"ml-4"
>
目标日饮酒量:
</span>
<span>
{{ visitInfo.goalDayDrink || '-' }}ml
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
白酒:
</span>
<span>
{{ visitInfo.drinkLiquor || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
啤酒:
</span>
<span>
{{ visitInfo.drinkBeer || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
红酒:
</span>
<span>
{{ visitInfo.drinkRed || '-' }}ml/日
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
黄酒:
</span>
<span>
{{ visitInfo.drinkYellow || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
其他:
</span>
<span>
{{ visitInfo.drinkOther || '-' }}ml/日
</span>
</div>
</div>
<div
style=
"color: #262626"
class=
"mt-2"
>
运动
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
有无规律活动:
</span>
<span>
{{ visitInfo.regularExerciseName }}
</span>
</div>
<div
v-if=
"visitInfo.regularExercise === 1"
>
<span>
运动强度:
</span>
<span>
{{ visitInfo.exerciseStrengthName }}
</span>
</div>
<div>
<span>
目前运动情况:
</span>
<span>
{{ visitInfo.nowExerciseWeek || '-' }}次/周、
</span>
<span>
{{ visitInfo.nowExerciseMinute || '-' }}分钟/次
</span>
</div>
<div>
<span>
目标运动情况:
</span>
<span>
{{ visitInfo.targetExerciseWeek || '-' }}次/周、
</span>
<span>
{{ visitInfo.targetExerciseMinute || '-' }}分钟/次
</span>
</div>
</div>
<div
class=
"list mt-2"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
摄盐情况(咸淡)
</span>
<span
class=
"text-end"
>
{{ visitInfo.saltIntakeName || '-' }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
心理调整
</span>
<span
class=
"text-end"
>
{{ visitInfo.psychologicalRecoveryName || '-' }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
遵医行为
</span>
<span
class=
"text-end"
>
{{ visitInfo.doctorAdviceName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"6"
title=
"辅助检查"
name=
"6"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"7"
title=
"目前高血压用药及依从性"
name=
"7"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"8"
title=
"药物不良反应"
name=
"8"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
药物不良反应
</span>
<span
class=
"text-end"
>
{{ visitInfo.drugsAdverseName }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
不良反应
</span>
<span
class=
"text-end"
>
{{ visitInfo.drugsAdverseOther || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"9"
title=
"此次随访分类"
name=
"9"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
此次随访分类
</span>
<span
class=
"text-end"
>
{{ visitInfo.visitTypeName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"10"
title=
"目前诊断"
name=
"10"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
目前诊断
</span>
<span
class=
"text-end"
>
{{ visitInfo.currentDiagnosisName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"11"
title=
"用药情况"
name=
"11"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"12"
title=
"转诊"
name=
"12"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊
</span>
<span
class=
"text-end"
>
{{ visitInfo.isReferralName }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊原因
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralReason }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊机构
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralUnitName }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊科室
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralOfficeName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"13"
title=
"现场随访照片"
name=
"13"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<ImagePreview
:img-list=
"visitInfo.visitImageList"
></ImagePreview>
</van-collapse-item>
<van-collapse-item
key=
"14"
title=
"下次随访日期"
name=
"14"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
下次随访日期
</span>
<span
class=
"text-end"
>
{{ visitInfo.nextVisitDate }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"15"
title=
"随访机构"
name=
"15"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsOrg"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{ item.title }}
</span>
<span
class=
"text-end"
>
{{ visitInfo[item.key] }}
</span>
</div>
</div>
</div>
</van-collapse-item>
</van-collapse>
</div>
</div>
</template>
<
script
>
import
ImagePreview
from
'@/doctor/components/imagePreview/imagePreview.vue'
export
default
{
components
:
{
ImagePreview
},
props
:
{
visitInfo
:
{
type
:
Object
,
default
:
()
=>
{}
}
},
data
()
{
return
{
collapseAll
:
false
,
activeCollapse
:
[],
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'
}
],
columnsPhysical
:
[
{
title
:
'收缩压SBP'
,
key
:
'signSystolicPressure'
,
unit
:
'mmHg'
},
{
title
:
'舒张压DBP'
,
key
:
'signDiastolicPressure'
,
unit
:
'mmHg'
},
{
title
:
'身高'
,
key
:
'signHeight'
,
unit
:
'cm'
},
{
title
:
'体重'
,
key
:
'signWeight'
,
unit
:
'kg'
},
{
title
:
'BMI'
,
key
:
'signBmi'
,
unit
:
'kg/m²'
},
{
title
:
'腰围'
,
key
:
'signWaistline'
,
unit
:
'cm'
},
{
title
:
'心率'
,
key
:
'signHeartRate'
,
unit
:
'次/分'
},
{
title
:
'其他'
,
key
:
'signOther'
}
],
columnsOrg
:
[
{
title
:
'随访日期'
,
key
:
'visitDate'
},
{
title
:
'随访单位'
,
key
:
'visitUnitName'
},
{
title
:
'随访科室'
,
key
:
'visitOfficeName'
},
{
title
:
'随访医生'
,
key
:
'visitDoctorName'
}
]
}
},
computed
:
{
residentInfo
()
{
return
this
.
visitInfo
.
residentsRecord
||
{}
}
},
methods
:
{
// 全部展开、收起
toggleAll
()
{
if
(
this
.
collapseAll
)
{
this
.
activeCollapse
=
[]
}
else
{
let
list
=
[]
for
(
let
i
=
1
;
i
<
16
;
i
++
)
{
list
.
push
(
i
.
toString
())
}
this
.
activeCollapse
=
list
}
this
.
collapseAll
=
!
this
.
collapseAll
},
// 折叠面板切换
collapseChange
(
val
)
{
console
.
log
(
val
)
if
(
val
&&
val
.
length
<=
2
)
{
this
.
activeCollapse
=
val
.
slice
(
val
.
length
-
1
)
}
else
{
if
(
this
.
activeCollapse
.
length
>
val
.
length
)
{
this
.
activeCollapse
=
val
}
if
(
this
.
activeCollapse
.
length
<
val
.
length
)
{
this
.
activeCollapse
=
val
.
slice
(
val
.
length
-
1
)
}
}
if
(
val
.
length
===
15
)
{
this
.
collapseAll
=
true
}
else
{
this
.
collapseAll
=
false
}
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
@import url('@/doctor/utils/common.less');
.cont-box {
background-color: #f9f9f9;
.cont-inner {
background: linear-gradient(to bottom, #F0F6FF, #fff .6rem);
border-top-left-radius: .08rem;
border-top-right-radius: .08rem;
}
}
.collapse-head {
.icon-down {
vertical-align: middle;
font-size: .12rem;
.svg-icon {
transition: all .2s;
}
}
.icon-down-expanded {
.svg-icon {
transform: rotate(-180deg);
}
}
}
.list {
color: #262626;
.label {
min-width: 5em;
}
}
.gray-box {
background: #F8FAFC;
padding: 8px;
color: #4D5665;
font-size: 13px;
}
</
style
>
\ No newline at end of file
src/doctor/followUp/separateFU/detail/components/StrokeDetail.vue
0 → 100644
View file @
3735a1aa
<
template
>
<div
class=
"p-3 grow cont-box"
>
<div
class=
"p-3 h-full cont-inner"
>
<div
class=
"flex justify-between collapse-head mt-2"
>
<span
class=
"text-16 font-semibold"
>
全部内容
</span>
<span
@
click=
"toggleAll"
>
<span
v-if=
"!collapseAll"
>
展开全部
</span>
<span
v-else
>
收起全部
</span>
<span
:class=
"['ml-2 icon-down',
{ 'icon-down-expanded': collapseAll }]">
<doc-icon
type=
"doc-down"
/>
</span>
</span>
</div>
<van-collapse
:model-value=
"activeCollapse"
ref=
"collapse"
class=
"doc-collapse"
@
change=
"collapseChange"
>
<van-collapse-item
key=
"1"
title=
"居民信息"
name=
"1"
>
<template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsBase"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 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
>
<span>
{{ residentInfo[item.key] || '-' }}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{ item.unit }}
</span>
</span>
</div>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"2"
title=
"随访方式"
name=
"2"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
随访方式
</span>
<span
class=
"text-end"
>
{{ visitInfo.visitWayName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"3"
title=
"症状"
name=
"3"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
症状
</span>
<span
class=
"text-end"
>
{{ visitInfo.symptomName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"4"
title=
"体征"
name=
"4"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsPhysical"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{ item.title }}
</span>
<span
class=
"text-end"
>
<span>
{{ visitInfo[item.key] || '-' }}
</span>
<span
v-if=
"item.unit"
class=
"ml-1"
>
{{ item.unit }}
</span>
</span>
</div>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"5"
title=
"生活方式指导"
name=
"5"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
style=
"color: #262626"
>
吸烟
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
是否正在吸烟:
</span>
<span>
{{ visitInfo.isSmokingName }}
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1"
>
<span>
您大约从几岁起开始养成每天或基本每天都吸烟的习惯:
</span>
<span>
{{ visitInfo.startSmokeAge || '-' }}岁
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
您最近7天是否吸烟:
</span>
<span>
{{ visitInfo.lastSevenSmokeName }}
</span>
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
日吸烟量:
</span>
<span>
{{ visitInfo.daySmoking || '-' }}支
</span>
<!-- <span class="ml-4">目标日吸烟量:</span>
<span>{{ visitInfo.goalDaySmoking || '-' }}支</span> -->
</div>
<div
v-if=
"visitInfo.isSmoking === 1 || visitInfo.isSmoking === 2"
>
<span>
目标日吸烟量:
</span>
<span>
{{ visitInfo.goalDaySmoking || '-' }}支
</span>
</div>
</div>
<div
style=
"color: #262626"
class=
"mt-2"
>
饮酒
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
是否正在饮酒:
</span>
<span>
{{ visitInfo.isDrinkName }}
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
日饮酒量:
</span>
<span>
{{ visitInfo.dayDrink || '-' }}ml
</span>
<span
class=
"ml-4"
>
目标日饮酒量:
</span>
<span>
{{ visitInfo.goalDayDrink || '-' }}ml
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
白酒:
</span>
<span>
{{ visitInfo.drinkLiquor || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
啤酒:
</span>
<span>
{{ visitInfo.drinkBeer || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
红酒:
</span>
<span>
{{ visitInfo.drinkRed || '-' }}ml/日
</span>
</div>
<div
v-if=
"visitInfo.isDrink === 1 || visitInfo.isDrink === 2"
>
<span>
黄酒:
</span>
<span>
{{ visitInfo.drinkYellow || '-' }}ml/日
</span>
<span
class=
"ml-2"
>
其他:
</span>
<span>
{{ visitInfo.drinkOther || '-' }}ml/日
</span>
</div>
</div>
<div
style=
"color: #262626"
class=
"mt-2"
>
运动
</div>
<div
class=
"gray-box mt-2"
>
<div>
<span>
有无规律活动:
</span>
<span>
{{ visitInfo.regularExerciseName }}
</span>
</div>
<div
v-if=
"visitInfo.regularExercise === 1"
>
<span>
运动强度:
</span>
<span>
{{ visitInfo.exerciseStrengthName }}
</span>
</div>
<div>
<span>
目前运动情况:
</span>
<span>
{{ visitInfo.nowExerciseWeek || '-' }}次/周、
</span>
<span>
{{ visitInfo.nowExerciseMinute || '-' }}分钟/次
</span>
</div>
<div>
<span>
目标运动情况:
</span>
<span>
{{ visitInfo.targetExerciseWeek || '-' }}次/周、
</span>
<span>
{{ visitInfo.targetExerciseMinute || '-' }}分钟/次
</span>
</div>
</div>
<div
class=
"list mt-2"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
摄盐情况(咸淡)
</span>
<span
class=
"text-end"
>
{{ visitInfo.saltIntakeName || '-' }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
心理调整
</span>
<span
class=
"text-end"
>
{{ visitInfo.psychologicalRecoveryName || '-' }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
遵医行为
</span>
<span
class=
"text-end"
>
{{ visitInfo.doctorAdviceName || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"6"
title=
"辅助检查"
name=
"6"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"7"
title=
"目前高血压用药及依从性"
name=
"7"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"8"
title=
"药物不良反应"
name=
"8"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
药物不良反应
</span>
<span
class=
"text-end"
>
{{ visitInfo.drugsAdverseName }}
</span>
</div>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
不良反应
</span>
<span
class=
"text-end"
>
{{ visitInfo.drugsAdverseOther || '-' }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"9"
title=
"此次随访分类"
name=
"9"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
此次随访分类
</span>
<span
class=
"text-end"
>
{{ visitInfo.visitTypeName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"10"
title=
"目前诊断"
name=
"10"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
目前诊断
</span>
<span
class=
"text-end"
>
{{ visitInfo.currentDiagnosisName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"11"
title=
"用药情况"
name=
"11"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
</van-collapse-item>
<van-collapse-item
key=
"12"
title=
"转诊"
name=
"12"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊
</span>
<span
class=
"text-end"
>
{{ visitInfo.isReferralName }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊原因
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralReason }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊机构
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralUnitName }}
</span>
</div>
<div
v-if=
"visitInfo.isReferral === 1"
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
转诊科室
</span>
<span
class=
"text-end"
>
{{ visitInfo.referralOfficeName }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"13"
title=
"现场随访照片"
name=
"13"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<ImagePreview
:img-list=
"visitInfo.visitImageList"
></ImagePreview>
</van-collapse-item>
<van-collapse-item
key=
"14"
title=
"下次随访日期"
name=
"14"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
下次随访日期
</span>
<span
class=
"text-end"
>
{{ visitInfo.nextVisitDate }}
</span>
</div>
</div>
</van-collapse-item>
<van-collapse-item
key=
"15"
title=
"随访机构"
name=
"15"
>
<
template
#
right-icon
>
<doc-icon
type=
"doc-down"
/>
</
template
>
<div
class=
"list"
>
<div
v-for=
"item in columnsOrg"
:key=
"item.key"
>
<div
class=
"flex justify-between py-1 border-bottom item"
>
<span
class=
"shrink-0 mr-2 label"
>
{{ item.title }}
</span>
<span
class=
"text-end"
>
{{ visitInfo[item.key] }}
</span>
</div>
</div>
</div>
</van-collapse-item>
</van-collapse>
</div>
</div>
</template>
<
script
>
import
ImagePreview
from
'@/doctor/components/imagePreview/imagePreview.vue'
export
default
{
components
:
{
ImagePreview
},
props
:
{
visitInfo
:
{
type
:
Object
,
default
:
()
=>
{}
}
},
data
()
{
return
{
collapseAll
:
false
,
activeCollapse
:
[],
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'
}
],
columnsPhysical
:
[
{
title
:
'收缩压SBP'
,
key
:
'signSystolicPressure'
,
unit
:
'mmHg'
},
{
title
:
'舒张压DBP'
,
key
:
'signDiastolicPressure'
,
unit
:
'mmHg'
},
{
title
:
'身高'
,
key
:
'signHeight'
,
unit
:
'cm'
},
{
title
:
'体重'
,
key
:
'signWeight'
,
unit
:
'kg'
},
{
title
:
'BMI'
,
key
:
'signBmi'
,
unit
:
'kg/m²'
},
{
title
:
'腰围'
,
key
:
'signWaistline'
,
unit
:
'cm'
},
{
title
:
'心率'
,
key
:
'signHeartRate'
,
unit
:
'次/分'
},
{
title
:
'其他'
,
key
:
'signOther'
}
],
columnsOrg
:
[
{
title
:
'随访日期'
,
key
:
'visitDate'
},
{
title
:
'随访单位'
,
key
:
'visitUnitName'
},
{
title
:
'随访科室'
,
key
:
'visitOfficeName'
},
{
title
:
'随访医生'
,
key
:
'visitDoctorName'
}
]
}
},
computed
:
{
residentInfo
()
{
return
this
.
visitInfo
.
residentsRecord
||
{}
}
},
methods
:
{
// 全部展开、收起
toggleAll
()
{
if
(
this
.
collapseAll
)
{
this
.
activeCollapse
=
[]
}
else
{
let
list
=
[]
for
(
let
i
=
1
;
i
<
16
;
i
++
)
{
list
.
push
(
i
.
toString
())
}
this
.
activeCollapse
=
list
}
this
.
collapseAll
=
!
this
.
collapseAll
},
// 折叠面板切换
collapseChange
(
val
)
{
console
.
log
(
val
)
if
(
val
&&
val
.
length
<=
2
)
{
this
.
activeCollapse
=
val
.
slice
(
val
.
length
-
1
)
}
else
{
if
(
this
.
activeCollapse
.
length
>
val
.
length
)
{
this
.
activeCollapse
=
val
}
if
(
this
.
activeCollapse
.
length
<
val
.
length
)
{
this
.
activeCollapse
=
val
.
slice
(
val
.
length
-
1
)
}
}
if
(
val
.
length
===
15
)
{
this
.
collapseAll
=
true
}
else
{
this
.
collapseAll
=
false
}
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
@import url('@/doctor/utils/common.less');
.cont-box {
background-color: #f9f9f9;
.cont-inner {
background: linear-gradient(to bottom, #F0F6FF, #fff .6rem);
border-top-left-radius: .08rem;
border-top-right-radius: .08rem;
}
}
.collapse-head {
.icon-down {
vertical-align: middle;
font-size: .12rem;
.svg-icon {
transition: all .2s;
}
}
.icon-down-expanded {
.svg-icon {
transform: rotate(-180deg);
}
}
}
.list {
color: #262626;
.label {
min-width: 5em;
}
}
.gray-box {
background: #F8FAFC;
padding: 8px;
color: #4D5665;
font-size: 13px;
}
</
style
>
\ No newline at end of file
src/doctor/followUp/separateFU/form/FormCont.vue
View file @
3735a1aa
...
@@ -3,15 +3,23 @@
...
@@ -3,15 +3,23 @@
<HypertensionForm
v-if=
"diseaseInfo.diseaseType === 1"
ref=
"hypertensionForm"
></HypertensionForm>
<HypertensionForm
v-if=
"diseaseInfo.diseaseType === 1"
ref=
"hypertensionForm"
></HypertensionForm>
<DiabetesForm
v-if=
"diseaseInfo.diseaseType === 2"
ref=
"diabetesForm"
></DiabetesForm>
<DiabetesForm
v-if=
"diseaseInfo.diseaseType === 2"
ref=
"diabetesForm"
></DiabetesForm>
<CoronaryHeartDiseaseForm
v-if=
"diseaseInfo.diseaseType === 3"
ref=
"coronaryHeartDiseaseForm"
></CoronaryHeartDiseaseForm>
<CoronaryHeartDiseaseForm
v-if=
"diseaseInfo.diseaseType === 3"
ref=
"coronaryHeartDiseaseForm"
></CoronaryHeartDiseaseForm>
<StrokeForm
v-if=
"diseaseInfo.diseaseType === 4"
ref=
"strokeForm"
></StrokeForm>
<CopdForm
v-if=
"diseaseInfo.diseaseType === 5"
ref=
"copdForm"
></CopdForm>
<ChronicKidneyDiseaseForm
v-if=
"diseaseInfo.diseaseType === 6"
ref=
"chronicKidneyDiseaseForm"
></ChronicKidneyDiseaseForm>
<DyslipidemiaForm
v-if=
"diseaseInfo.diseaseType === 7"
ref=
"dyslipidemiaForm"
></DyslipidemiaForm>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
HypertensionForm
from
'./components/HypertensionForm.vue'
import
HypertensionForm
from
'./components/HypertensionForm.vue'
import
DiabetesForm
from
'./components/DiabetesForm.vue'
import
DiabetesForm
from
'./components/DiabetesForm.vue'
import
CoronaryHeartDiseaseForm
from
'./components/CoronaryHeartDiseaseForm.vue'
import
CoronaryHeartDiseaseForm
from
'./components/CoronaryHeartDiseaseForm.vue'
import
{
addHypertensionForm
,
addDiabetesForm
,
addCoronaryHeartDiseaseForm
}
from
'@/api/doctor/separateFU'
import
StrokeForm
from
'./components/StrokeForm.vue'
import
CopdForm
from
'./components/CopdForm.vue'
import
ChronicKidneyDiseaseForm
from
'./components/ChronicKidneyDiseaseForm.vue'
import
DyslipidemiaForm
from
'./components/DyslipidemiaForm.vue'
import
{
addHypertensionForm
,
addDiabetesForm
,
addCoronaryHeartDiseaseForm
,
addStrokeForm
,
addCopdForm
,
addChronicKidneyDiseaseForm
,
addDyslipidemiaForm
}
from
'@/api/doctor/separateFU'
export
default
{
export
default
{
components
:
{
HypertensionForm
,
DiabetesForm
,
CoronaryHeartDiseaseForm
},
components
:
{
HypertensionForm
,
DiabetesForm
,
CoronaryHeartDiseaseForm
,
StrokeForm
,
CopdForm
,
ChronicKidneyDiseaseForm
,
DyslipidemiaForm
},
props
:
{
props
:
{
baseInfo
:
{
baseInfo
:
{
type
:
Object
,
type
:
Object
,
...
@@ -58,6 +66,30 @@ export default {
...
@@ -58,6 +66,30 @@ export default {
...
form
,
...
form
,
...
coronaryHeartDiseaseForm
...
coronaryHeartDiseaseForm
},
true
)
},
true
)
}
else
if
(
this
.
diseaseInfo
.
diseaseType
===
4
)
{
const
strokeForm
=
await
this
.
$refs
.
strokeForm
.
submit
()
return
await
addStrokeForm
({
...
form
,
...
strokeForm
},
true
)
}
else
if
(
this
.
diseaseInfo
.
diseaseType
===
5
)
{
const
copdForm
=
await
this
.
$refs
.
copdForm
.
submit
()
return
await
addCopdForm
({
...
form
,
...
copdForm
},
true
)
}
else
if
(
this
.
diseaseInfo
.
diseaseType
===
6
)
{
const
chronicKidneyDiseaseForm
=
await
this
.
$refs
.
chronicKidneyDiseaseForm
.
submit
()
return
await
addChronicKidneyDiseaseForm
({
...
form
,
...
chronicKidneyDiseaseForm
},
true
)
}
else
if
(
this
.
diseaseInfo
.
diseaseType
===
7
)
{
const
dyslipidemiaForm
=
await
this
.
$refs
.
dyslipidemiaForm
.
submit
()
return
await
addDyslipidemiaForm
({
...
form
,
...
dyslipidemiaForm
},
true
)
}
}
}
}
}
}
...
...
src/doctor/followUp/separateFU/form/components/ChronicKidneyDiseaseForm.vue
0 → 100644
View file @
3735a1aa
<
template
>
<van-form
ref=
"form"
>
<div
class=
"first-title"
>
<span
class=
"font-semibold"
>
随访信息
</span>
<div
class=
"btn-title"
>
引入数据
</div>
</div>
<!-- 随访方式 -->
<div
class=
"label-title mt-2"
required
>
随访方式
</div>
<van-field
v-model=
"form.visitWayName"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.visitWayName"
@
click=
"showVisitWay = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showVisitWay"
position=
"bottom"
>
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showVisitWay = false"
>
取消
</div>
<div>
随访方式(单选)
</div>
<div></div>
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
clearable
column-1
:options=
"store.getDict('CP00052')"
v-model:value=
"form.visitWay"
:fieldNames=
"
{ text: 'name', value: 'value' }"
@change="visitWayChange"
/>
</div>
</div>
</van-popup>
<!-- 症状 -->
<div
class=
"label-title mt-2"
required
>
症状
</div>
<van-field
v-model=
"form.symptomName"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.symptomName"
@
click=
"showSymptom = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showSymptom"
position=
"bottom"
>
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showSymptom = false"
>
取消
</div>
<div>
症状(可多选)
</div>
<div
class=
"blueColor"
@
click=
"symptomConfirm"
>
确定
</div>
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
multiple
column-2
:options=
"store.getDict('CP00062')"
v-model:value=
"form.symptom"
:fieldNames=
"
{ text: 'name', value: 'value' }"
@change="form.symptom = checkboxReject(form.symptom, [1])"
/>
</div>
</div>
</van-popup>
<template
v-if=
"(form.symptom || []).includes(99)"
>
<div
class=
"label-title mt-2"
>
其他症状
</div>
<van-field
v-model=
"form.symptomOther"
placeholder=
"请填写其他症状"
class=
"form-input"
/>
</
template
>
<!-- 血压 -->
<div
class=
"flex items-center justify-between tip-box mt-2 mb-2"
>
<div
class=
"label-title"
required
>
血压
</div>
<BloodPressurePanel
:pressureObj=
"pressureObj"
/>
</div>
<table
class=
"w-full mb-2"
>
<tr
class=
"sub-text"
>
<td>
收缩压(SBP)
</td>
<td
style=
"width: 1em"
></td>
<td>
舒张压(DBP)
</td>
</tr>
<tr>
<td
class=
"flex items-center"
>
<van-field
v-model=
"form.signSystolicPressure"
placeholder=
"60~300,整数"
:rules=
"rules.signSystolicPressure"
class=
"form-input"
>
<
template
#
extra
>
<span>
mmHg
</span>
</
template
>
</van-field>
</td>
<td
class=
"text-center"
>
<span
class=
"divide"
>
/
</span>
</td>
<td
class=
"flex items-center"
>
<van-field
v-model=
"form.signDiastolicPressure"
placeholder=
"30~300,整数"
:rules=
"rules.signDiastolicPressure"
class=
"form-input"
>
<
template
#
extra
>
<span>
mmHg
</span>
</
template
>
</van-field>
</td>
</tr>
</table>
<BloodPressureBt
:pressureObj=
"pressureObj"
@
getValue=
"setPressure"
>
开始测量
</BloodPressureBt>
<div
class=
"tip"
>
提示:点击“开始测量”按钮后将自动启动血压计设备,请勿再重复点击设备“开始/停止”按钮。
</div>
<!-- 心率 -->
<div
class=
"label-title mt-2"
required
>
心率
</div>
<van-field
v-model=
"form.signHeartRate"
placeholder=
"10~200,整数"
:rules=
"rules.signHeartRate"
class=
"form-input"
>
<
template
#
extra
>
<span>
次/分
</span>
</
template
>
</van-field>
<!-- 体重 -->
<div
class=
"label-title mt-2"
required
>
体重
</div>
<van-field
v-model=
"form.signWeight"
placeholder=
"20~500,2位小数"
:rules=
"rules.signWeight"
class=
"form-input"
>
<
template
#
extra
>
<span>
kg
</span>
</
template
>
</van-field>
<!-- 水肿 -->
<div
class=
"label-title mt-2"
required
>
水肿
</div>
<van-field
:rules=
"rules.signEdema"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.signEdema"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00067')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 其他体征 -->
<div
class=
"label-title mt-2"
>
其他
</div>
<van-field
type=
"textarea"
v-model=
"form.signOther"
:maxlength=
"120"
placeholder=
"如有其他体征情况请填写在此处,限120个字"
class=
"form-input"
/>
<!-- 吸烟 -->
<div
class=
"label-title mt-2"
required
>
吸烟
</div>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
是否正在吸烟
</div>
<van-field
:rules=
"rules.isSmoking"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.isSmoking"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00066')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 100%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
您大约从几岁起开始养成每天或基本每天都吸烟的习惯
</div>
<van-field
v-model=
"form.startSmokeAge"
placeholder=
"2~100,整数"
:rules=
"rules.startSmokeAge"
class=
"card-input"
>
<
template
#
extra
>
<span>
岁
</span>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1 || form.isSmoking === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
您最近7天是否吸烟
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.lastSevenSmoke"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('DC00001')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1 || form.isSmoking === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
日吸烟量
</div>
<van-field
v-model=
"form.daySmoking"
placeholder=
"0~100,整数"
:rules=
"rules.daySmoking"
class=
"card-input"
>
<
template
#
extra
>
<span>
支
</span>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1 || form.isSmoking === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
目标日吸烟量
</div>
<van-field
v-model=
"form.goalDaySmoking"
placeholder=
"0~100,整数"
:rules=
"rules.goalDaySmoking"
class=
"card-input"
>
<
template
#
extra
>
<span>
支
</span>
</
template
>
</van-field>
</div>
<!-- 饮酒 -->
<div
class=
"label-title mt-2"
required
>
饮酒
</div>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
是否正在饮酒
</div>
<van-field
:rules=
"rules.isDrink"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.isDrink"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00068')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 100%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isDrink === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
饮酒频率
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.drinkCondition"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 100%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isDrink === 1 || form.isDrink === 2"
class=
"flex mt-2"
>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
日饮酒量
</div>
<van-field
v-model=
"form.dayDrink"
placeholder=
"0~3000,整数"
:rules=
"rules.dayDrink"
class=
"card-input"
>
<
template
#
extra
>
<span>
ml
</span>
</
template
>
</van-field>
</div>
<div
class=
"bg-fa ml-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
目标日饮酒量
</div>
<van-field
v-model=
"form.goalDayDrink"
placeholder=
"0~3000,整数"
:rules=
"rules.goalDayDrink"
class=
"card-input"
>
<
template
#
extra
>
<span>
ml
</span>
</
template
>
</van-field>
</div>
</div>
<div
v-if=
"form.isDrink === 1 || form.isDrink === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
饮酒种类
</div>
<van-field
label=
"白酒"
v-model=
"form.drinkLiquor"
placeholder=
"0~3000,整数"
:rules=
"rules.drinkLiquor"
class=
"card-input"
label-width=
"36px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
<van-field
label=
"啤酒"
v-model=
"form.drinkBeer"
placeholder=
"0~3000,整数"
:rules=
"rules.drinkBeer"
class=
"card-input mt-2"
label-width=
"36px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
<van-field
label=
"红酒"
v-model=
"form.drinkRed"
placeholder=
"0~3000,整数"
:rules=
"rules.drinkRed"
class=
"card-input mt-2"
label-width=
"36px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
<van-field
label=
"黄酒"
v-model=
"form.drinkYellow"
placeholder=
"0~3000,整数"
:rules=
"rules.drinkYellow"
class=
"card-input mt-2"
label-width=
"36px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
<van-field
label=
"其他"
v-model=
"form.drinkOther"
placeholder=
"0~3000,整数"
:rules=
"rules.drinkOther"
class=
"card-input mt-2"
label-width=
"36px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
</div>
<!-- 运动 -->
<div
class=
"label-title mt-2"
required
>
运动
</div>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
有无规律活动
</div>
<van-field
:rules=
"rules.regularExercise"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.regularExercise"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.regularExercise === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
运动强度
</div>
<van-field
:rules=
"rules.exerciseStrength"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.exerciseStrength"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00070')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
目前运动情况
</div>
<div
class=
"flex"
>
<van-field
v-model=
"form.nowExerciseWeek"
placeholder=
"0~50,整数"
:rules=
"rules.nowExerciseWeek"
class=
"card-input"
>
<
template
#
extra
>
<span>
次/周
</span>
</
template
>
</van-field>
<van-field
v-model=
"form.nowExerciseMinute"
placeholder=
"0~500,整数"
:rules=
"rules.nowExerciseMinute"
class=
"card-input ml-2"
>
<
template
#
extra
>
<span>
分钟/次
</span>
</
template
>
</van-field>
</div>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
目标运动情况
</div>
<div
class=
"flex"
>
<van-field
v-model=
"form.targetExerciseWeek"
placeholder=
"0~50,整数"
:rules=
"rules.targetExerciseWeek"
class=
"card-input"
>
<
template
#
extra
>
<span>
次/周
</span>
</
template
>
</van-field>
<van-field
v-model=
"form.targetExerciseMinute"
placeholder=
"0~500,整数"
:rules=
"rules.targetExerciseMinute"
class=
"card-input ml-2"
>
<
template
#
extra
>
<span>
分钟/次
</span>
</
template
>
</van-field>
</div>
</div>
<!-- 摄盐情况 -->
<div
class=
"label-title mt-2"
required
>
摄盐情况(咸淡)
</div>
<van-field
:rules=
"rules.saltIntake"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.saltIntake"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00071')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 心理调整 -->
<div
class=
"label-title mt-2"
required
>
心理调整
</div>
<van-field
:rules=
"rules.psychologicalRecovery"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.psychologicalRecovery"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00072')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 遵医行为 -->
<div
class=
"label-title mt-2"
required
>
遵医行为
</div>
<van-field
:rules=
"rules.doctorAdvice"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.doctorAdvice"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00072')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 服药依从性 -->
<div
class=
"label-title mt-2"
required
>
服药依从性
</div>
<van-field
:rules=
"rules.medicationCompliance"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.medicationCompliance"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00080')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 药物不良反应 -->
<div
class=
"label-title mt-2"
required
>
药物不良反应
</div>
<van-field
:rules=
"rules.drugsAdverse"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.drugsAdverse"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<div
v-if=
"form.drugsAdverse === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
不良反应
</div>
<van-field
type=
"textarea"
v-model=
"form.drugsAdverseOther"
:maxlength=
"120"
placeholder=
"请填写具体描述哪种药物,何种不良反应,限120字"
class=
"card-input"
/>
</div>
<!-- 此次随访分类 -->
<div
class=
"label-title mt-2"
required
>
此次随访分类
</div>
<van-field
:rules=
"rules.visitType"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.visitType"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00085')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 目前诊断 -->
<div
class=
"label-title mt-2"
required
>
目前诊断
</div>
<van-field
v-model=
"form.currentDiagnosisName"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.currentDiagnosisName"
@
click=
"showCurrentDiagnosis = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showCurrentDiagnosis"
position=
"bottom"
>
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showCurrentDiagnosis = false"
>
取消
</div>
<div>
目前诊断(可多选)
</div>
<div
class=
"blueColor"
@
click=
"currentDiagnosisConfirm"
>
确定
</div>
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
multiple
column-2
:options=
"store.getDict('CP00086')"
v-model:value=
"form.currentDiagnosis"
:fieldNames=
"{ text: 'name', value: 'value' }"
/>
</div>
</div>
</van-popup>
<!-- 转诊 -->
<div
class=
"label-title mt-2"
required
>
转诊
</div>
<van-field
:rules=
"rules.isReferral"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.isReferral"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<div
v-if=
"form.isReferral === 1"
class=
"bg-fa mt-2"
>
<div
style=
"background-color: #fff; padding: 8px; border-radius: 8px"
>
<div
style=
"color: #262626; font-size: 14px"
>
转诊原因
</div>
<van-field
type=
"textarea"
v-model=
"form.referralReason"
:maxlength=
"120"
placeholder=
"请填写具体描述转诊原因,限120字"
class=
"form-input mt-2"
/>
</div>
<div
style=
"background-color: #fff; padding: 8px; border-radius: 8px"
class=
"mt-2"
>
<div
style=
"color: #262626; font-size: 14px"
>
转诊机构
</div>
<van-field
v-model=
"form.referralUnitName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showReferralUnit = true"
class=
"form-input mt-2"
/>
<DocUnit
v-model:show=
"showReferralUnit"
v-model:value=
"form.referralUnitId"
:valueName=
"form?.referralUnitName"
@
change=
"referralUnitChange"
/>
</div>
<div
style=
"background-color: #fff; padding: 8px; border-radius: 8px"
class=
"mt-2"
>
<div
style=
"color: #262626; font-size: 14px"
>
转诊科室
</div>
<van-field
v-model=
"form.referralOfficeName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showReferralOffice = true"
class=
"form-input mt-2"
/>
<DocOffice
v-model:show=
"showReferralOffice"
v-model:value=
"form.referralOfficeId"
:unitId=
"form.referralUnitId"
@
change=
"referralOfficeChange"
/>
</div>
</div>
<!-- 现场随访照片 -->
<div
class=
"label-title mt-2"
>
现场随访照片
</div>
<DocImageUpload
description=
"最多支持上传8个文件,支持上传图片或PDF文件,图片支持上传jpg、png、jpeg格式,文件大小请勿超过10M。"
lengthMessage=
"抱歉,最多可上传8个文件。"
:imageData=
"[]"
@
change=
"(ids, option) => form.visitImage = ids"
:maxLength=
"8"
/>
<!-- 下次随访日期 -->
<div
class=
"label-title"
required
>
下次随访日期
</div>
<van-field
v-model=
"form.nextVisitDate"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.nextVisitDate"
@
click=
"showNextVisitDate = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showNextVisitDate"
position=
"bottom"
>
<van-date-picker
v-model=
"form._nextVisitDate"
:min-date=
"nextVisitDateRange.min"
:max-date=
"nextVisitDateRange.max"
@
confirm=
"nextVisitDateConfirm"
@
cancel=
"showNextVisitDate = false"
/>
</van-popup>
<!-- 随访日期 -->
<div
class=
"label-title mt-2"
>
随访日期
</div>
<van-field
v-model=
"form.visitDate"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.visitDate"
@
click=
"showVisitDate = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showVisitDate"
position=
"bottom"
>
<van-date-picker
v-model=
"form._visitDate"
:min-date=
"visitDateRange.min"
:max-date=
"visitDateRange.max"
@
confirm=
"visitDateConfirm"
@
cancel=
"showVisitDate = false"
/>
</van-popup>
<!-- 随访单位 -->
<div
class=
"label-title mt-2"
>
随访单位
</div>
<van-field
v-model=
"form.visitUnitName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showVisitUnit = true"
class=
"form-input mt-2"
/>
<DocUnit
v-model:show=
"showVisitUnit"
v-model:value=
"form.visitUnitId"
:valueName=
"form?.visitUnitName"
@
change=
"visitUnitChange"
/>
<!-- 随访科室 -->
<div
class=
"label-title mt-2"
>
随访科室
</div>
<van-field
v-model=
"form.visitOfficeName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showVisitOffice = true"
class=
"form-input mt-2"
/>
<DocOffice
v-model:show=
"showVisitOffice"
v-model:value=
"form.visitOfficeId"
:unitId=
"form.visitUnitId"
@
change=
"visitOfficeChange"
/>
<!-- 随访医生 -->
<div
class=
"label-title mt-2"
>
随访医生
</div>
<van-field
v-model=
"form.visitDoctorName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showVisitDoctor = true"
class=
"form-input mt-2"
/>
<DocOfficeDoctor
v-model:show=
"showVisitDoctor"
:allowClear=
"false"
v-model:value=
"form.visitDoctorId"
:unitId=
"form.visitUnitId"
:officeId=
"form.visitOfficeId"
@
change=
"(option) => { form.visitDoctorName = option.staffName }"
/>
</van-form>
</template>
<
script
>
import
{
useStore
}
from
'@/doctor/store'
import
CheckBtn
from
'@/doctor/components/checkBtn/CheckBtn.vue'
import
{
checkboxReject
,
calculateBMI
,
fetchDataHandle
}
from
'@/utils/common'
import
BloodPressurePanel
from
'@/doctor/components/bloodPressure/BloodPressurePanel.vue'
import
BloodPressureBt
from
'@/doctor/components/bloodPressure/BloodPressureBt.vue'
import
DocImageUpload
from
'@/doctor/components/docImageUpload/DocImageUpload.vue'
import
DocUnit
from
'@/doctor/components/docUnit/DocUnit.vue'
import
DocOffice
from
'@/doctor/components/docOffice/DocOffice.vue'
import
DocOfficeDoctor
from
'@/doctor/components/docOfficeDoctor/DocOfficeDoctor.vue'
export
default
{
components
:
{
CheckBtn
,
BloodPressurePanel
,
BloodPressureBt
,
DocImageUpload
,
DocUnit
,
DocOffice
,
DocOfficeDoctor
},
inject
:
[
'pressureObj'
],
data
()
{
return
{
store
:
useStore
(),
form
:
{},
rules
:
{
visitWayName
:
[
{
required
:
true
,
message
:
'请选择随访方式'
}
],
symptomName
:
[
{
required
:
true
,
message
:
'请选择症状'
}
],
signSystolicPressure
:
[
{
required
:
true
,
message
:
'请填写收缩压'
}
],
signDiastolicPressure
:
[
{
required
:
true
,
message
:
'请填写舒张压'
}
],
signHeight
:
[
{
required
:
true
,
message
:
'请填写身高'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+
(\.\d{1})?
$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
10
&&
Number
(
value
)
<=
300
))
{
res
=
false
}
return
res
},
message
:
`请输入10到300之间的数字,允许一位小数`
}
],
signWeight
:
[
{
required
:
true
,
message
:
'请填写体重'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+
(\.\d{1,2})?
$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
20
&&
Number
(
value
)
<=
500
))
{
res
=
false
}
return
res
},
message
:
`请输入20到500之间的数字,允许两位小数`
}
],
signEdema
:
[
{
required
:
true
,
message
:
'请选择'
}
],
signHeartRate
:
[
{
required
:
true
,
message
:
'请填写心率'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
10
&&
Number
(
value
)
<=
200
))
{
res
=
false
}
return
res
},
message
:
`请输入10到200之间的整数`
}
],
isSmoking
:
[
{
required
:
true
,
message
:
'请选择'
}
],
startSmokeAge
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
2
&&
Number
(
value
)
<=
100
))
{
res
=
false
}
return
res
},
message
:
`请输入2到100之间的整数`
}
],
daySmoking
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
100
))
{
res
=
false
}
return
res
},
message
:
`请输入0到100之间的整数`
}
],
goalDaySmoking
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
100
))
{
res
=
false
}
return
res
},
message
:
`请输入0到100之间的整数`
}
],
isDrink
:
[
{
required
:
true
,
message
:
'请选择'
}
],
dayDrink
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
goalDayDrink
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
drinkLiquor
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
drinkBeer
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
drinkRed
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
drinkYellow
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
drinkOther
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
regularExercise
:
[
{
required
:
true
,
message
:
'请选择'
}
],
exerciseStrength
:
[
{
required
:
true
,
message
:
'请选择'
}
],
nowExerciseWeek
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
50
))
{
res
=
false
}
return
res
},
message
:
`请输入0到50之间的整数`
}
],
nowExerciseMinute
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
500
))
{
res
=
false
}
return
res
},
message
:
`请输入0到500之间的整数`
}
],
targetExerciseWeek
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
50
))
{
res
=
false
}
return
res
},
message
:
`请输入0到50之间的整数`
}
],
targetExerciseMinute
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
500
))
{
res
=
false
}
return
res
},
message
:
`请输入0到500之间的整数`
}
],
saltIntake
:
[
{
required
:
true
,
message
:
'请选择'
}
],
psychologicalRecovery
:
[
{
required
:
true
,
message
:
'请选择'
}
],
doctorAdvice
:
[
{
required
:
true
,
message
:
'请选择'
}
],
medicationCompliance
:
[
{
required
:
true
,
message
:
'请选择'
}
],
drugsAdverse
:
[
{
required
:
true
,
message
:
'请选择'
}
],
visitType
:
[
{
required
:
true
,
message
:
'请选择'
}
],
currentDiagnosisName
:
[
{
required
:
true
,
message
:
'请选择'
}
],
isReferral
:
[
{
required
:
true
,
message
:
'请选择'
}
],
nextVisitDate
:
[
{
required
:
true
,
message
:
'请选择'
}
]
},
showVisitWay
:
false
,
showSymptom
:
false
,
// showAuxiliaryExamination: false
showCurrentDiagnosis
:
false
,
showReferralUnit
:
false
,
showReferralOffice
:
false
,
showNextVisitDate
:
false
,
nextVisitDateRange
:
{
min
:
undefined
,
max
:
undefined
},
showVisitDate
:
false
,
visitDateRange
:
{
min
:
undefined
,
max
:
undefined
},
showVisitUnit
:
false
,
showVisitOffice
:
false
,
showVisitDoctor
:
false
}
},
methods
:
{
checkboxReject
,
calculateBMI
,
visitWayChange
()
{
this
.
store
.
getDict
(
'CP00052'
).
forEach
(
item
=>
{
if
(
item
.
value
===
this
.
form
.
visitWay
)
{
this
.
form
.
visitWayName
=
item
.
name
}
})
this
.
showVisitWay
=
false
},
symptomConfirm
()
{
let
list
=
[]
this
.
store
.
getDict
(
'CP00062'
).
forEach
(
item
=>
{
let
selected
=
this
.
form
.
symptom
.
filter
(
e
=>
e
===
item
.
value
)
if
(
selected
&&
selected
.
length
)
{
list
.
push
(
item
.
name
)
}
})
this
.
form
.
symptomName
=
list
.
join
()
this
.
showSymptom
=
false
},
currentDiagnosisConfirm
()
{
let
list
=
[]
this
.
store
.
getDict
(
'CP00086'
).
forEach
(
item
=>
{
let
selected
=
this
.
form
.
currentDiagnosis
.
filter
(
e
=>
e
===
item
.
value
)
if
(
selected
&&
selected
.
length
)
{
list
.
push
(
item
.
name
)
}
})
this
.
form
.
currentDiagnosisName
=
list
.
join
()
this
.
showCurrentDiagnosis
=
false
},
setPressure
(
val
)
{
if
(
!
val
)
return
this
.
form
.
signSystolicPressure
=
val
.
systolicPressure
this
.
form
.
signDiastolicPressure
=
val
.
diastolicPressure
},
referralUnitChange
(
option
=
{})
{
this
.
form
.
referralUnitName
=
option
.
unitName
},
referralOfficeChange
(
option
=
{})
{
this
.
form
.
referralOfficeName
=
option
.
officeName
},
nextVisitDateConfirm
({
selectedValues
})
{
this
.
form
.
nextVisitDate
=
selectedValues
.
join
(
'-'
)
this
.
showNextVisitDate
=
false
},
visitDateConfirm
({
selectedValues
})
{
this
.
form
.
visitDate
=
selectedValues
.
join
(
'-'
)
this
.
showVisitDate
=
false
},
visitUnitChange
(
option
=
{})
{
this
.
form
.
visitUnitName
=
option
.
unitName
},
visitOfficeChange
(
option
=
{})
{
this
.
form
.
visitOfficeName
=
option
.
officeName
},
submit
()
{
return
new
Promise
((
resolve
,
reject
)
=>
{
this
.
$refs
.
form
.
validate
().
then
(()
=>
{
const
form
=
fetchDataHandle
(
this
.
form
,
{
symptom
:
'arrToStr'
,
currentDiagnosis
:
'arrToStr'
})
resolve
(
form
)
}).
catch
(
e
=>
{
})
})
}
},
watch
:
{
'form.signHeight'
:
{
handler
()
{
this
.
form
.
signBmi
=
this
.
calculateBMI
(
this
.
form
.
signHeight
,
this
.
form
.
signWeight
)
}
},
'form.signWeight'
:
{
handler
()
{
this
.
form
.
signBmi
=
this
.
calculateBMI
(
this
.
form
.
signHeight
,
this
.
form
.
signWeight
)
}
},
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.first-title {
display: flex;
align-items: center;
.btn-title {
background-color: #F0F3FF;
color: #607FF0;
border-radius: 9999px;
padding: 4px 16px;
margin-left: 8px;
}
}
.label-title {
font-size: 13px;
color: #595959;
font-weight: 500;
margin-bottom: 8px;
&[required] {
&::after {
content: '*';
color: #FF4D4F;
font-weight: bold;
margin-left: 4px;
}
}
}
.form-input {
background-color: #FAFAFA;
padding: 8px 12px;
border-radius: 8px;
}
:deep(.van-cell:after) {
border-bottom: 0px;
}
:deep(.van-popup) {
height: 50% !important;
}
.pop-title {
color: #262626;
font-size: 16px;
font-weight: 600;
}
.greyColor {
color: var(--van-text-color-2);
font-weight: 400;
}
.blueColor {
color: #607FF0;
font-weight: 500;
}
.sub-text {
color: #595959;
font-size: 13px;
font-weight: 400;
padding-bottom: 8px;
}
.tip {
color: #FA8C16;
font-size: 12px;
margin-top: 8px;
line-height: 16px;
}
.bg-fa {
background-color: #FAFAFA;
padding: 8px;
border-radius: 8px;
}
.doc-radio-group-now {
column-gap: 8px;
row-gap: 8px;
background-color: #FAFAFA;
width: 100%;
.van-radio {
background-color: #FFFFFF;
padding: 8px 12px;
border-radius: 8px;
justify-content: space-between;
margin-right: 0;
}
}
.card-input {
padding: 8px 12px;
border-radius: 8px;
}
:deep(.label-mr) {
margin-right: 8px;
}
</
style
>
\ No newline at end of file
src/doctor/followUp/separateFU/form/components/CopdForm.vue
0 → 100644
View file @
3735a1aa
<
template
>
<van-form
ref=
"form"
>
<div
class=
"first-title"
>
<span
class=
"font-semibold"
>
随访信息
</span>
<div
class=
"btn-title"
>
引入数据
</div>
</div>
<!-- 随访方式 -->
<div
class=
"label-title mt-2"
required
>
随访方式
</div>
<van-field
v-model=
"form.visitWayName"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.visitWayName"
@
click=
"showVisitWay = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showVisitWay"
position=
"bottom"
>
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showVisitWay = false"
>
取消
</div>
<div>
随访方式(单选)
</div>
<div></div>
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
clearable
column-1
:options=
"store.getDict('CP00052')"
v-model:value=
"form.visitWay"
:fieldNames=
"
{ text: 'name', value: 'value' }"
@change="visitWayChange"
/>
</div>
</div>
</van-popup>
<!-- 症状 -->
<div
class=
"label-title mt-2"
required
>
症状
</div>
<van-field
v-model=
"form.symptomName"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.symptomName"
@
click=
"showSymptom = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showSymptom"
position=
"bottom"
>
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showSymptom = false"
>
取消
</div>
<div>
症状(可多选)
</div>
<div
class=
"blueColor"
@
click=
"symptomConfirm"
>
确定
</div>
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
multiple
column-1
:options=
"store.getDict('CP00061')"
v-model:value=
"form.symptom"
:fieldNames=
"
{ text: 'name', value: 'value' }"
@change="form.symptom = checkboxReject(form.symptom, [1])"
/>
</div>
</div>
</van-popup>
<template
v-if=
"(form.symptom || []).includes(99)"
>
<div
class=
"label-title mt-2"
>
其他症状
</div>
<van-field
v-model=
"form.symptomOther"
placeholder=
"请填写其他症状"
class=
"form-input"
/>
</
template
>
<!-- 身高 -->
<div
class=
"label-title mt-2"
required
>
身高
</div>
<van-field
v-model=
"form.signHeight"
placeholder=
"10~300,1位小数"
:rules=
"rules.signHeight"
class=
"form-input"
>
<
template
#
extra
>
<span>
cm
</span>
</
template
>
</van-field>
<!-- 体重 -->
<div
class=
"label-title mt-2"
required
>
体重
</div>
<van-field
v-model=
"form.signWeight"
placeholder=
"20~500,2位小数"
:rules=
"rules.signWeight"
class=
"form-input"
>
<
template
#
extra
>
<span>
kg
</span>
</
template
>
</van-field>
<!-- BMI -->
<div
class=
"label-title mt-2"
>
BMI(体质指数)
</div>
<van-field
readonly
v-model=
"form.signBmi"
placeholder=
"-"
class=
"form-input"
>
<
template
#
extra
>
<span>
kg/m²
</span>
</
template
>
</van-field>
<!-- 呼吸频率 -->
<div
class=
"label-title mt-2"
required
>
呼吸频率
</div>
<van-field
v-model=
"form.respiratoryRate"
placeholder=
"0~100,整数"
:rules=
"rules.respiratoryRate"
class=
"form-input"
>
<
template
#
extra
>
<span>
次/分钟
</span>
</
template
>
</van-field>
<!-- 心率 -->
<div
class=
"label-title mt-2"
required
>
心率
</div>
<van-field
v-model=
"form.signHeartRate"
placeholder=
"0~300,整数"
:rules=
"rules.signHeartRate"
class=
"form-input"
>
<
template
#
extra
>
<span>
次/分
</span>
</
template
>
</van-field>
<!-- 口唇紫绀 -->
<div
class=
"label-title mt-2"
required
>
口唇紫绀
</div>
<van-field
:rules=
"rules.signCyanosis"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.signCyanosis"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 下肢水肿 -->
<div
class=
"label-title mt-2"
required
>
下肢水肿
</div>
<van-field
:rules=
"rules.signEdema"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.signEdema"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 外周水肿 -->
<div
class=
"label-title mt-2"
required
>
外周水肿
</div>
<van-field
:rules=
"rules.peripheralEdema"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.peripheralEdema"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00193')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 其他体征 -->
<div
class=
"label-title mt-2"
>
其他
</div>
<van-field
type=
"textarea"
v-model=
"form.signOther"
:maxlength=
"120"
placeholder=
"如有其他体征情况请填写在此处,限120个字"
class=
"form-input"
/>
<!-- 合并症 -->
<div
class=
"label-title mt-2"
required
>
合并症
</div>
<van-field
v-model=
"form.complicationName"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.complicationName"
@
click=
"showComplication = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showComplication"
position=
"bottom"
>
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showComplication = false"
>
取消
</div>
<div>
症状(可多选)
</div>
<div
class=
"blueColor"
@
click=
"complicationConfirm"
>
确定
</div>
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
multiple
column-2
:options=
"store.getDict('CP00189')"
v-model:value=
"form.complication"
:fieldNames=
"{ text: 'name', value: 'value' }"
@
change=
"form.complication = checkboxReject(form.complication, [1])"
/>
</div>
</div>
</van-popup>
<
template
v-if=
"(form.complication || []).includes(8)"
>
<div
class=
"label-title mt-2"
>
其他合并症
</div>
<van-field
v-model=
"form.complicationOther"
placeholder=
"请填写其他症状"
class=
"form-input"
/>
</
template
>
<!-- 吸烟 -->
<div
class=
"label-title mt-2"
required
>
吸烟
</div>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
是否正在吸烟
</div>
<van-field
:rules=
"rules.isSmoking"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.isSmoking"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00066')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 100%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
您大约从几岁起开始养成每天或基本每天都吸烟的习惯
</div>
<van-field
v-model=
"form.startSmokeAge"
placeholder=
"2~100,整数"
:rules=
"rules.startSmokeAge"
class=
"card-input"
>
<
template
#
extra
>
<span>
岁
</span>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1 || form.isSmoking === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
您最近7天是否吸烟
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.lastSevenSmoke"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('DC00001')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1 || form.isSmoking === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
日吸烟量
</div>
<van-field
v-model=
"form.daySmoking"
placeholder=
"0~100,整数"
:rules=
"rules.daySmoking"
class=
"card-input"
>
<
template
#
extra
>
<span>
支
</span>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1 || form.isSmoking === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
目标日吸烟量
</div>
<van-field
v-model=
"form.goalDaySmoking"
placeholder=
"0~100,整数"
:rules=
"rules.goalDaySmoking"
class=
"card-input"
>
<
template
#
extra
>
<span>
支
</span>
</
template
>
</van-field>
</div>
<!-- 运动 -->
<div
class=
"label-title mt-2"
required
>
运动
</div>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
有无规律活动
</div>
<van-field
:rules=
"rules.regularExercise"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.regularExercise"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.regularExercise === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
运动强度
</div>
<van-field
:rules=
"rules.exerciseStrength"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.exerciseStrength"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00070')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
目前运动情况
</div>
<div
class=
"flex"
>
<van-field
v-model=
"form.nowExerciseWeek"
placeholder=
"0~50,整数"
:rules=
"rules.nowExerciseWeek"
class=
"card-input"
>
<
template
#
extra
>
<span>
次/周
</span>
</
template
>
</van-field>
<van-field
v-model=
"form.nowExerciseMinute"
placeholder=
"0~500,整数"
:rules=
"rules.nowExerciseMinute"
class=
"card-input ml-2"
>
<
template
#
extra
>
<span>
分钟/次
</span>
</
template
>
</van-field>
</div>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
目标运动情况
</div>
<div
class=
"flex"
>
<van-field
v-model=
"form.targetExerciseWeek"
placeholder=
"0~50,整数"
:rules=
"rules.targetExerciseWeek"
class=
"card-input"
>
<
template
#
extra
>
<span>
次/周
</span>
</
template
>
</van-field>
<van-field
v-model=
"form.targetExerciseMinute"
placeholder=
"0~500,整数"
:rules=
"rules.targetExerciseMinute"
class=
"card-input ml-2"
>
<
template
#
extra
>
<span>
分钟/次
</span>
</
template
>
</van-field>
</div>
</div>
<!-- 呼吸锻炼 -->
<div
class=
"label-title mt-2"
required
>
呼吸锻炼
</div>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
有无呼吸锻炼
</div>
<van-field
:rules=
"rules.isBreathExercise"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.isBreathExercise"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isBreathExercise === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
呼吸锻炼频率
</div>
<div
class=
"flex"
>
<van-field
v-model=
"form.breathExerciseWeek"
placeholder=
"0~50,整数"
:rules=
"rules.breathExerciseWeek"
class=
"card-input"
>
<
template
#
extra
>
<span>
次/周
</span>
</
template
>
</van-field>
<van-field
v-model=
"form.breathExerciseMinute"
placeholder=
"0~120,整数"
:rules=
"rules.breathExerciseMinute"
class=
"card-input ml-2"
>
<
template
#
extra
>
<span>
分钟/次
</span>
</
template
>
</van-field>
</div>
</div>
<!-- 健康教育 -->
<div
class=
"label-title mt-2"
required
>
健康教育
</div>
<van-field
:rules=
"rules.healthEducation"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.healthEducation"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 心理调整 -->
<div
class=
"label-title mt-2"
required
>
心理调整
</div>
<van-field
:rules=
"rules.psychologicalRecovery"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.psychologicalRecovery"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00072')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 遵医行为 -->
<div
class=
"label-title mt-2"
required
>
遵医行为
</div>
<van-field
:rules=
"rules.doctorAdvice"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.doctorAdvice"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00072')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 疫苗免疫史 -->
<div
class=
"label-title mt-2"
required
>
疫苗免疫史
</div>
<van-field
:rules=
"rules.vaccinesHistory"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.vaccinesHistory"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<
template
v-if=
"form.vaccinesHistory === 1"
>
<div
class=
"label-title mt-2"
required
>
疫苗名称
</div>
<van-field
v-model=
"form.vaccinesHistoryHaveName"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.vaccinesHistoryHaveName"
@
click=
"showVaccinesHistoryHave = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showVaccinesHistoryHave"
position=
"bottom"
>
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showVaccinesHistoryHave = false"
>
取消
</div>
<div>
症状(可多选)
</div>
<div
class=
"blueColor"
@
click=
"vaccinesHistoryHaveConfirm"
>
确定
</div>
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
multiple
column-1
:options=
"store.getDict('CP00190')"
v-model:value=
"form.vaccinesHistoryHave"
:fieldNames=
"
{ text: 'name', value: 'value' }"
/>
</div>
</div>
</van-popup>
</
template
>
<!-- 最近三个月内是否有急性加重情况 -->
<div
class=
"label-title mt-2"
required
>
最近三个月内是否有急性加重情况
</div>
<van-field
:rules=
"rules.acuteExacerbation"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.acuteExacerbation"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<div
v-if=
"form.acuteExacerbation === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
处理方式
</div>
<van-field
:rules=
"rules.handlingMethod"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.handlingMethod"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00191')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 31%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.acuteExacerbation === 1 && form.handlingMethod === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
住院医院级别
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.hospitalLevel"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00192')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<!-- 服药依从性 -->
<div
class=
"label-title mt-2"
required
>
服药依从性
</div>
<van-field
:rules=
"rules.medicationCompliance"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.medicationCompliance"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00080')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 药物不良反应 -->
<div
class=
"label-title mt-2"
required
>
药物不良反应
</div>
<van-field
:rules=
"rules.drugsAdverse"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.drugsAdverse"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<div
v-if=
"form.drugsAdverse === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
不良反应
</div>
<van-field
type=
"textarea"
v-model=
"form.drugsAdverseOther"
:maxlength=
"120"
placeholder=
"请填写具体描述哪种药物,何种不良反应,限120字"
class=
"card-input"
/>
</div>
<!-- 此次随访分类 -->
<div
class=
"label-title mt-2"
required
>
此次随访分类
</div>
<van-field
:rules=
"rules.visitType"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.visitType"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00085')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 目前诊断 -->
<div
class=
"label-title mt-2"
required
>
目前诊断
</div>
<van-field
v-model=
"form.currentDiagnosisName"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.currentDiagnosisName"
@
click=
"showCurrentDiagnosis = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showCurrentDiagnosis"
position=
"bottom"
>
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showCurrentDiagnosis = false"
>
取消
</div>
<div>
目前诊断(可多选)
</div>
<div
class=
"blueColor"
@
click=
"currentDiagnosisConfirm"
>
确定
</div>
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
multiple
column-2
:options=
"store.getDict('CP00086')"
v-model:value=
"form.currentDiagnosis"
:fieldNames=
"{ text: 'name', value: 'value' }"
/>
</div>
</div>
</van-popup>
<!-- 家庭氧疗 -->
<div
class=
"label-title mt-2"
>
家庭氧疗
</div>
<van-field
label=
"每日"
label-width=
"36px"
v-model=
"form.otEveryday"
placeholder=
"0~24,整数"
:rules=
"rules.otEveryday"
class=
"form-input"
>
<
template
#
extra
>
<span>
小时
</span>
</
template
>
</van-field>
<van-field
label=
"氧流量"
label-width=
"48px"
v-model=
"form.otFlow"
placeholder=
"0~10,整数"
:rules=
"rules.otFlow"
class=
"form-input mt-2"
>
<
template
#
extra
>
<span>
L
</span>
</
template
>
</van-field>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
副作用
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.otSideEffect"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<van-field
v-if=
"form.otSideEffect === 1"
v-model=
"form.otSideEffectHave"
placeholder=
"请填写副作用"
class=
"card-input mt-2"
/>
</div>
<!-- 无创呼吸机使用 -->
<div
class=
"label-title mt-2"
required
>
无创呼吸机使用
</div>
<van-field
label=
"每日"
label-width=
"36px"
v-model=
"form.nippvEveryday"
placeholder=
"0~24,整数"
:rules=
"rules.nippvEveryday"
class=
"form-input"
>
<
template
#
extra
>
<span>
小时
</span>
</
template
>
</van-field>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
副作用
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.nippvSideEffect"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<van-field
v-if=
"form.nippvSideEffect === 1"
v-model=
"form.nippvSideEffectHave"
placeholder=
"请填写副作用"
class=
"card-input mt-2"
/>
</div>
<!-- 转诊 -->
<div
class=
"label-title mt-2"
required
>
转诊
</div>
<van-field
:rules=
"rules.isReferral"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.isReferral"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<div
v-if=
"form.isReferral === 1"
class=
"bg-fa mt-2"
>
<div
style=
"background-color: #fff; padding: 8px; border-radius: 8px"
>
<div
style=
"color: #262626; font-size: 14px"
>
转诊原因
</div>
<van-field
type=
"textarea"
v-model=
"form.referralReason"
:maxlength=
"120"
placeholder=
"请填写具体描述转诊原因,限120字"
class=
"form-input mt-2"
/>
</div>
<div
style=
"background-color: #fff; padding: 8px; border-radius: 8px"
class=
"mt-2"
>
<div
style=
"color: #262626; font-size: 14px"
>
转诊机构
</div>
<van-field
v-model=
"form.referralUnitName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showReferralUnit = true"
class=
"form-input mt-2"
/>
<DocUnit
v-model:show=
"showReferralUnit"
v-model:value=
"form.referralUnitId"
:valueName=
"form?.referralUnitName"
@
change=
"referralUnitChange"
/>
</div>
<div
style=
"background-color: #fff; padding: 8px; border-radius: 8px"
class=
"mt-2"
>
<div
style=
"color: #262626; font-size: 14px"
>
转诊科室
</div>
<van-field
v-model=
"form.referralOfficeName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showReferralOffice = true"
class=
"form-input mt-2"
/>
<DocOffice
v-model:show=
"showReferralOffice"
v-model:value=
"form.referralOfficeId"
:unitId=
"form.referralUnitId"
@
change=
"referralOfficeChange"
/>
</div>
</div>
<!-- 现场随访照片 -->
<div
class=
"label-title mt-2"
>
现场随访照片
</div>
<DocImageUpload
description=
"最多支持上传8个文件,支持上传图片或PDF文件,图片支持上传jpg、png、jpeg格式,文件大小请勿超过10M。"
lengthMessage=
"抱歉,最多可上传8个文件。"
:imageData=
"[]"
@
change=
"(ids, option) => form.visitImage = ids"
:maxLength=
"8"
/>
<!-- 下次随访日期 -->
<div
class=
"label-title"
required
>
下次随访日期
</div>
<van-field
v-model=
"form.nextVisitDate"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.nextVisitDate"
@
click=
"showNextVisitDate = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showNextVisitDate"
position=
"bottom"
>
<van-date-picker
v-model=
"form._nextVisitDate"
:min-date=
"nextVisitDateRange.min"
:max-date=
"nextVisitDateRange.max"
@
confirm=
"nextVisitDateConfirm"
@
cancel=
"showNextVisitDate = false"
/>
</van-popup>
<!-- 随访日期 -->
<div
class=
"label-title mt-2"
>
随访日期
</div>
<van-field
v-model=
"form.visitDate"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.visitDate"
@
click=
"showVisitDate = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showVisitDate"
position=
"bottom"
>
<van-date-picker
v-model=
"form._visitDate"
:min-date=
"visitDateRange.min"
:max-date=
"visitDateRange.max"
@
confirm=
"visitDateConfirm"
@
cancel=
"showVisitDate = false"
/>
</van-popup>
<!-- 随访单位 -->
<div
class=
"label-title mt-2"
>
随访单位
</div>
<van-field
v-model=
"form.visitUnitName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showVisitUnit = true"
class=
"form-input mt-2"
/>
<DocUnit
v-model:show=
"showVisitUnit"
v-model:value=
"form.visitUnitId"
:valueName=
"form?.visitUnitName"
@
change=
"visitUnitChange"
/>
<!-- 随访科室 -->
<div
class=
"label-title mt-2"
>
随访科室
</div>
<van-field
v-model=
"form.visitOfficeName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showVisitOffice = true"
class=
"form-input mt-2"
/>
<DocOffice
v-model:show=
"showVisitOffice"
v-model:value=
"form.visitOfficeId"
:unitId=
"form.visitUnitId"
@
change=
"visitOfficeChange"
/>
<!-- 随访医生 -->
<div
class=
"label-title mt-2"
>
随访医生
</div>
<van-field
v-model=
"form.visitDoctorName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showVisitDoctor = true"
class=
"form-input mt-2"
/>
<DocOfficeDoctor
v-model:show=
"showVisitDoctor"
:allowClear=
"false"
v-model:value=
"form.visitDoctorId"
:unitId=
"form.visitUnitId"
:officeId=
"form.visitOfficeId"
@
change=
"(option) => { form.visitDoctorName = option.staffName }"
/>
</van-form>
</template>
<
script
>
import
{
useStore
}
from
'@/doctor/store'
import
CheckBtn
from
'@/doctor/components/checkBtn/CheckBtn.vue'
import
{
checkboxReject
,
calculateBMI
,
fetchDataHandle
}
from
'@/utils/common'
import
BloodPressurePanel
from
'@/doctor/components/bloodPressure/BloodPressurePanel.vue'
import
BloodPressureBt
from
'@/doctor/components/bloodPressure/BloodPressureBt.vue'
import
DocImageUpload
from
'@/doctor/components/docImageUpload/DocImageUpload.vue'
import
DocUnit
from
'@/doctor/components/docUnit/DocUnit.vue'
import
DocOffice
from
'@/doctor/components/docOffice/DocOffice.vue'
import
DocOfficeDoctor
from
'@/doctor/components/docOfficeDoctor/DocOfficeDoctor.vue'
export
default
{
components
:
{
CheckBtn
,
BloodPressurePanel
,
BloodPressureBt
,
DocImageUpload
,
DocUnit
,
DocOffice
,
DocOfficeDoctor
},
inject
:
[
'pressureObj'
],
data
()
{
return
{
store
:
useStore
(),
form
:
{},
rules
:
{
visitWayName
:
[
{
required
:
true
,
message
:
'请选择随访方式'
}
],
symptomName
:
[
{
required
:
true
,
message
:
'请选择症状'
}
],
signHeight
:
[
{
required
:
true
,
message
:
'请填写身高'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+
(\.\d{1})?
$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
10
&&
Number
(
value
)
<=
300
))
{
res
=
false
}
return
res
},
message
:
`请输入10到300之间的数字,允许一位小数`
}
],
signWeight
:
[
{
required
:
true
,
message
:
'请填写体重'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+
(\.\d{1,2})?
$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
20
&&
Number
(
value
)
<=
500
))
{
res
=
false
}
return
res
},
message
:
`请输入20到500之间的数字,允许两位小数`
}
],
respiratoryRate
:
[
{
required
:
true
,
message
:
'请填写呼吸频率'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
100
))
{
res
=
false
}
return
res
},
message
:
`请输入0到100之间的整数`
}
],
signHeartRate
:
[
{
required
:
true
,
message
:
'请填写心率'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
300
))
{
res
=
false
}
return
res
},
message
:
`请输入0到300之间的整数`
}
],
signCyanosis
:
[
{
required
:
true
,
message
:
'请选择'
}
],
signEdema
:
[
{
required
:
true
,
message
:
'请选择'
}
],
peripheralEdema
:
[
{
required
:
true
,
message
:
'请选择'
}
],
complicationName
:
[
{
required
:
true
,
message
:
'请选择'
}
],
isSmoking
:
[
{
required
:
true
,
message
:
'请选择'
}
],
startSmokeAge
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
2
&&
Number
(
value
)
<=
100
))
{
res
=
false
}
return
res
},
message
:
`请输入2到100之间的整数`
}
],
daySmoking
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
100
))
{
res
=
false
}
return
res
},
message
:
`请输入0到100之间的整数`
}
],
goalDaySmoking
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
100
))
{
res
=
false
}
return
res
},
message
:
`请输入0到100之间的整数`
}
],
regularExercise
:
[
{
required
:
true
,
message
:
'请选择'
}
],
exerciseStrength
:
[
{
required
:
true
,
message
:
'请选择'
}
],
nowExerciseWeek
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
50
))
{
res
=
false
}
return
res
},
message
:
`请输入0到50之间的整数`
}
],
nowExerciseMinute
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
500
))
{
res
=
false
}
return
res
},
message
:
`请输入0到500之间的整数`
}
],
targetExerciseWeek
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
50
))
{
res
=
false
}
return
res
},
message
:
`请输入0到50之间的整数`
}
],
targetExerciseMinute
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
500
))
{
res
=
false
}
return
res
},
message
:
`请输入0到500之间的整数`
}
],
isBreathExercise
:
[
{
required
:
true
,
message
:
'请选择'
}
],
breathExerciseWeek
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
50
))
{
res
=
false
}
return
res
},
message
:
`请输入0到50之间的整数`
}
],
breathExerciseMinute
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
120
))
{
res
=
false
}
return
res
},
message
:
`请输入0到120之间的整数`
}
],
saltIntake
:
[
{
required
:
true
,
message
:
'请选择'
}
],
psychologicalRecovery
:
[
{
required
:
true
,
message
:
'请选择'
}
],
doctorAdvice
:
[
{
required
:
true
,
message
:
'请选择'
}
],
vaccinesHistory
:
[
{
required
:
true
,
message
:
'请选择'
}
],
acuteExacerbation
:
[
{
required
:
true
,
message
:
'请选择'
}
],
handlingMethod
:
[
{
required
:
true
,
message
:
'请选择'
}
],
medicationCompliance
:
[
{
required
:
true
,
message
:
'请选择'
}
],
drugsAdverse
:
[
{
required
:
true
,
message
:
'请选择'
}
],
visitType
:
[
{
required
:
true
,
message
:
'请选择'
}
],
currentDiagnosisName
:
[
{
required
:
true
,
message
:
'请选择'
}
],
isReferral
:
[
{
required
:
true
,
message
:
'请选择'
}
],
nextVisitDate
:
[
{
required
:
true
,
message
:
'请选择'
}
]
},
showVisitWay
:
false
,
showSymptom
:
false
,
showComplication
:
false
,
showVaccinesHistoryHave
:
false
,
// showAuxiliaryExamination: false
showCurrentDiagnosis
:
false
,
showReferralUnit
:
false
,
showReferralOffice
:
false
,
showNextVisitDate
:
false
,
nextVisitDateRange
:
{
min
:
undefined
,
max
:
undefined
},
showVisitDate
:
false
,
visitDateRange
:
{
min
:
undefined
,
max
:
undefined
},
showVisitUnit
:
false
,
showVisitOffice
:
false
,
showVisitDoctor
:
false
}
},
methods
:
{
checkboxReject
,
calculateBMI
,
visitWayChange
()
{
this
.
store
.
getDict
(
'CP00052'
).
forEach
(
item
=>
{
if
(
item
.
value
===
this
.
form
.
visitWay
)
{
this
.
form
.
visitWayName
=
item
.
name
}
})
this
.
showVisitWay
=
false
},
symptomConfirm
()
{
let
list
=
[]
this
.
store
.
getDict
(
'CP00061'
).
forEach
(
item
=>
{
let
selected
=
this
.
form
.
symptom
.
filter
(
e
=>
e
===
item
.
value
)
if
(
selected
&&
selected
.
length
)
{
list
.
push
(
item
.
name
)
}
})
this
.
form
.
symptomName
=
list
.
join
()
this
.
showSymptom
=
false
},
complicationConfirm
()
{
let
list
=
[]
this
.
store
.
getDict
(
'CP00189'
).
forEach
(
item
=>
{
let
selected
=
this
.
form
.
complication
.
filter
(
e
=>
e
===
item
.
value
)
if
(
selected
&&
selected
.
length
)
{
list
.
push
(
item
.
name
)
}
})
this
.
form
.
complicationName
=
list
.
join
()
this
.
showComplication
=
false
},
vaccinesHistoryHaveConfirm
()
{
let
list
=
[]
this
.
store
.
getDict
(
'CP00190'
).
forEach
(
item
=>
{
let
selected
=
this
.
form
.
vaccinesHistoryHave
.
filter
(
e
=>
e
===
item
.
value
)
if
(
selected
&&
selected
.
length
)
{
list
.
push
(
item
.
name
)
}
})
this
.
form
.
vaccinesHistoryHaveName
=
list
.
join
()
this
.
showVaccinesHistoryHave
=
false
},
currentDiagnosisConfirm
()
{
let
list
=
[]
this
.
store
.
getDict
(
'CP00086'
).
forEach
(
item
=>
{
let
selected
=
this
.
form
.
currentDiagnosis
.
filter
(
e
=>
e
===
item
.
value
)
if
(
selected
&&
selected
.
length
)
{
list
.
push
(
item
.
name
)
}
})
this
.
form
.
currentDiagnosisName
=
list
.
join
()
this
.
showCurrentDiagnosis
=
false
},
referralUnitChange
(
option
=
{})
{
this
.
form
.
referralUnitName
=
option
.
unitName
},
referralOfficeChange
(
option
=
{})
{
this
.
form
.
referralOfficeName
=
option
.
officeName
},
nextVisitDateConfirm
({
selectedValues
})
{
this
.
form
.
nextVisitDate
=
selectedValues
.
join
(
'-'
)
this
.
showNextVisitDate
=
false
},
visitDateConfirm
({
selectedValues
})
{
this
.
form
.
visitDate
=
selectedValues
.
join
(
'-'
)
this
.
showVisitDate
=
false
},
visitUnitChange
(
option
=
{})
{
this
.
form
.
visitUnitName
=
option
.
unitName
},
visitOfficeChange
(
option
=
{})
{
this
.
form
.
visitOfficeName
=
option
.
officeName
},
submit
()
{
return
new
Promise
((
resolve
,
reject
)
=>
{
this
.
$refs
.
form
.
validate
().
then
(()
=>
{
const
form
=
fetchDataHandle
(
this
.
form
,
{
symptom
:
'arrToStr'
,
complication
:
'arrToStr'
,
currentDiagnosis
:
'arrToStr'
})
resolve
(
form
)
}).
catch
(
e
=>
{
})
})
}
},
watch
:
{
'form.signHeight'
:
{
handler
()
{
this
.
form
.
signBmi
=
this
.
calculateBMI
(
this
.
form
.
signHeight
,
this
.
form
.
signWeight
)
}
},
'form.signWeight'
:
{
handler
()
{
this
.
form
.
signBmi
=
this
.
calculateBMI
(
this
.
form
.
signHeight
,
this
.
form
.
signWeight
)
}
},
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.first-title {
display: flex;
align-items: center;
.btn-title {
background-color: #F0F3FF;
color: #607FF0;
border-radius: 9999px;
padding: 4px 16px;
margin-left: 8px;
}
}
.label-title {
font-size: 13px;
color: #595959;
font-weight: 500;
margin-bottom: 8px;
&[required] {
&::after {
content: '*';
color: #FF4D4F;
font-weight: bold;
margin-left: 4px;
}
}
}
.form-input {
background-color: #FAFAFA;
padding: 8px 12px;
border-radius: 8px;
}
:deep(.van-cell:after) {
border-bottom: 0px;
}
:deep(.van-popup) {
height: 50% !important;
}
.pop-title {
color: #262626;
font-size: 16px;
font-weight: 600;
}
.greyColor {
color: var(--van-text-color-2);
font-weight: 400;
}
.blueColor {
color: #607FF0;
font-weight: 500;
}
.sub-text {
color: #595959;
font-size: 13px;
font-weight: 400;
padding-bottom: 8px;
}
.tip {
color: #FA8C16;
font-size: 12px;
margin-top: 8px;
line-height: 16px;
}
.bg-fa {
background-color: #FAFAFA;
padding: 8px;
border-radius: 8px;
}
.doc-radio-group-now {
column-gap: 8px;
row-gap: 8px;
background-color: #FAFAFA;
width: 100%;
.van-radio {
background-color: #FFFFFF;
padding: 8px 12px;
border-radius: 8px;
justify-content: space-between;
margin-right: 0;
}
}
.card-input {
padding: 8px 12px;
border-radius: 8px;
}
:deep(.label-mr) {
margin-right: 8px;
}
</
style
>
\ No newline at end of file
src/doctor/followUp/separateFU/form/components/DyslipidemiaForm.vue
0 → 100644
View file @
3735a1aa
<
template
>
<van-form
ref=
"form"
>
<div
class=
"first-title"
>
<span
class=
"font-semibold"
>
随访信息
</span>
<div
class=
"btn-title"
>
引入数据
</div>
</div>
<!-- 随访方式 -->
<div
class=
"label-title mt-2"
required
>
随访方式
</div>
<van-field
v-model=
"form.visitWayName"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.visitWayName"
@
click=
"showVisitWay = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showVisitWay"
position=
"bottom"
>
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showVisitWay = false"
>
取消
</div>
<div>
随访方式(单选)
</div>
<div></div>
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
clearable
column-1
:options=
"store.getDict('CP00052')"
v-model:value=
"form.visitWay"
:fieldNames=
"
{ text: 'name', value: 'value' }"
@change="visitWayChange"
/>
</div>
</div>
</van-popup>
<!-- 症状 -->
<div
class=
"label-title mt-2"
required
>
症状
</div>
<van-field
v-model=
"form.symptomName"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.symptomName"
@
click=
"showSymptom = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showSymptom"
position=
"bottom"
>
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showSymptom = false"
>
取消
</div>
<div>
症状(可多选)
</div>
<div
class=
"blueColor"
@
click=
"symptomConfirm"
>
确定
</div>
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
multiple
column-2
:options=
"store.getDict('CP00064')"
v-model:value=
"form.symptom"
:fieldNames=
"
{ text: 'name', value: 'value' }"
@change="form.symptom = checkboxReject(form.symptom, [1])"
/>
</div>
</div>
</van-popup>
<template
v-if=
"(form.symptom || []).includes(99)"
>
<div
class=
"label-title mt-2"
>
其他症状
</div>
<van-field
v-model=
"form.symptomOther"
placeholder=
"请填写其他症状"
class=
"form-input"
/>
</
template
>
<!-- 血压 -->
<div
class=
"flex items-center justify-between tip-box mt-2 mb-2"
>
<div
class=
"label-title"
required
>
血压
</div>
<BloodPressurePanel
:pressureObj=
"pressureObj"
/>
</div>
<table
class=
"w-full mb-2"
>
<tr
class=
"sub-text"
>
<td>
收缩压(SBP)
</td>
<td
style=
"width: 1em"
></td>
<td>
舒张压(DBP)
</td>
</tr>
<tr>
<td
class=
"flex items-center"
>
<van-field
v-model=
"form.signSystolicPressure"
placeholder=
"60~300,整数"
:rules=
"rules.signSystolicPressure"
class=
"form-input"
>
<
template
#
extra
>
<span>
mmHg
</span>
</
template
>
</van-field>
</td>
<td
class=
"text-center"
>
<span
class=
"divide"
>
/
</span>
</td>
<td
class=
"flex items-center"
>
<van-field
v-model=
"form.signDiastolicPressure"
placeholder=
"30~300,整数"
:rules=
"rules.signDiastolicPressure"
class=
"form-input"
>
<
template
#
extra
>
<span>
mmHg
</span>
</
template
>
</van-field>
</td>
</tr>
</table>
<BloodPressureBt
:pressureObj=
"pressureObj"
@
getValue=
"setPressure"
>
开始测量
</BloodPressureBt>
<div
class=
"tip"
>
提示:点击“开始测量”按钮后将自动启动血压计设备,请勿再重复点击设备“开始/停止”按钮。
</div>
<!-- 身高 -->
<div
class=
"label-title mt-2"
required
>
身高
</div>
<van-field
v-model=
"form.signHeight"
placeholder=
"10~300,1位小数"
:rules=
"rules.signHeight"
class=
"form-input"
>
<
template
#
extra
>
<span>
cm
</span>
</
template
>
</van-field>
<!-- 体重 -->
<div
class=
"label-title mt-2"
required
>
体重
</div>
<van-field
v-model=
"form.signWeight"
placeholder=
"20~500,2位小数"
:rules=
"rules.signWeight"
class=
"form-input"
>
<
template
#
extra
>
<span>
kg
</span>
</
template
>
</van-field>
<!-- BMI -->
<div
class=
"label-title mt-2"
>
BMI(体质指数)
</div>
<van-field
readonly
v-model=
"form.signBmi"
placeholder=
"-"
class=
"form-input"
>
<
template
#
extra
>
<span>
kg/m²
</span>
</
template
>
</van-field>
<!-- 心率 -->
<div
class=
"label-title mt-2"
required
>
心率
</div>
<van-field
v-model=
"form.signHeartRate"
placeholder=
"10~200,整数"
:rules=
"rules.signHeartRate"
class=
"form-input"
>
<
template
#
extra
>
<span>
次/分
</span>
</
template
>
</van-field>
<!-- 其他体征 -->
<div
class=
"label-title mt-2"
>
其他
</div>
<van-field
type=
"textarea"
v-model=
"form.signOther"
:maxlength=
"120"
placeholder=
"如有其他体征情况请填写在此处,限120个字"
class=
"form-input"
/>
<!-- 吸烟 -->
<div
class=
"label-title mt-2"
required
>
吸烟
</div>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
是否正在吸烟
</div>
<van-field
:rules=
"rules.isSmoking"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.isSmoking"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00066')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 100%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
您大约从几岁起开始养成每天或基本每天都吸烟的习惯
</div>
<van-field
v-model=
"form.startSmokeAge"
placeholder=
"2~100,整数"
:rules=
"rules.startSmokeAge"
class=
"card-input"
>
<
template
#
extra
>
<span>
岁
</span>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1 || form.isSmoking === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
您最近7天是否吸烟
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.lastSevenSmoke"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('DC00001')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1 || form.isSmoking === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
日吸烟量
</div>
<van-field
v-model=
"form.daySmoking"
placeholder=
"0~100,整数"
:rules=
"rules.daySmoking"
class=
"card-input"
>
<
template
#
extra
>
<span>
支
</span>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1 || form.isSmoking === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
目标日吸烟量
</div>
<van-field
v-model=
"form.goalDaySmoking"
placeholder=
"0~100,整数"
:rules=
"rules.goalDaySmoking"
class=
"card-input"
>
<
template
#
extra
>
<span>
支
</span>
</
template
>
</van-field>
</div>
<!-- 饮酒 -->
<div
class=
"label-title mt-2"
required
>
饮酒
</div>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
是否正在饮酒
</div>
<van-field
:rules=
"rules.isDrink"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.isDrink"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00068')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 100%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isDrink === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
饮酒频率
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.drinkCondition"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 100%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isDrink === 1 || form.isDrink === 2"
class=
"flex mt-2"
>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
日饮酒量
</div>
<van-field
v-model=
"form.dayDrink"
placeholder=
"0~3000,整数"
:rules=
"rules.dayDrink"
class=
"card-input"
>
<
template
#
extra
>
<span>
ml
</span>
</
template
>
</van-field>
</div>
<div
class=
"bg-fa ml-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
目标日饮酒量
</div>
<van-field
v-model=
"form.goalDayDrink"
placeholder=
"0~3000,整数"
:rules=
"rules.goalDayDrink"
class=
"card-input"
>
<
template
#
extra
>
<span>
ml
</span>
</
template
>
</van-field>
</div>
</div>
<div
v-if=
"form.isDrink === 1 || form.isDrink === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
饮酒种类
</div>
<van-field
label=
"白酒"
v-model=
"form.drinkLiquor"
placeholder=
"0~3000,整数"
:rules=
"rules.drinkLiquor"
class=
"card-input"
label-width=
"36px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
<van-field
label=
"啤酒"
v-model=
"form.drinkBeer"
placeholder=
"0~3000,整数"
:rules=
"rules.drinkBeer"
class=
"card-input mt-2"
label-width=
"36px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
<van-field
label=
"红酒"
v-model=
"form.drinkRed"
placeholder=
"0~3000,整数"
:rules=
"rules.drinkRed"
class=
"card-input mt-2"
label-width=
"36px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
<van-field
label=
"黄酒"
v-model=
"form.drinkYellow"
placeholder=
"0~3000,整数"
:rules=
"rules.drinkYellow"
class=
"card-input mt-2"
label-width=
"36px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
<van-field
label=
"其他"
v-model=
"form.drinkOther"
placeholder=
"0~3000,整数"
:rules=
"rules.drinkOther"
class=
"card-input mt-2"
label-width=
"36px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
</div>
<!-- 运动 -->
<div
class=
"label-title mt-2"
required
>
运动
</div>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
有无规律活动
</div>
<van-field
:rules=
"rules.regularExercise"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.regularExercise"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.regularExercise === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
运动强度
</div>
<van-field
:rules=
"rules.exerciseStrength"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.exerciseStrength"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00070')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
目前运动情况
</div>
<div
class=
"flex"
>
<van-field
v-model=
"form.nowExerciseWeek"
placeholder=
"0~50,整数"
:rules=
"rules.nowExerciseWeek"
class=
"card-input"
>
<
template
#
extra
>
<span>
次/周
</span>
</
template
>
</van-field>
<van-field
v-model=
"form.nowExerciseMinute"
placeholder=
"0~500,整数"
:rules=
"rules.nowExerciseMinute"
class=
"card-input ml-2"
>
<
template
#
extra
>
<span>
分钟/次
</span>
</
template
>
</van-field>
</div>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
目标运动情况
</div>
<div
class=
"flex"
>
<van-field
v-model=
"form.targetExerciseWeek"
placeholder=
"0~50,整数"
:rules=
"rules.targetExerciseWeek"
class=
"card-input"
>
<
template
#
extra
>
<span>
次/周
</span>
</
template
>
</van-field>
<van-field
v-model=
"form.targetExerciseMinute"
placeholder=
"0~500,整数"
:rules=
"rules.targetExerciseMinute"
class=
"card-input ml-2"
>
<
template
#
extra
>
<span>
分钟/次
</span>
</
template
>
</van-field>
</div>
</div>
<!-- 摄盐情况 -->
<div
class=
"label-title mt-2"
required
>
摄盐情况(咸淡)
</div>
<van-field
:rules=
"rules.saltIntake"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.saltIntake"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00071')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 心理调整 -->
<div
class=
"label-title mt-2"
required
>
心理调整
</div>
<van-field
:rules=
"rules.psychologicalRecovery"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.psychologicalRecovery"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00072')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 遵医行为 -->
<div
class=
"label-title mt-2"
required
>
遵医行为
</div>
<van-field
:rules=
"rules.doctorAdvice"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.doctorAdvice"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00072')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 服药依从性 -->
<div
class=
"label-title mt-2"
required
>
服药依从性
</div>
<van-field
:rules=
"rules.medicationCompliance"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.medicationCompliance"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00080')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 药物不良反应 -->
<div
class=
"label-title mt-2"
required
>
药物不良反应
</div>
<van-field
:rules=
"rules.drugsAdverse"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.drugsAdverse"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<div
v-if=
"form.drugsAdverse === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
不良反应
</div>
<van-field
type=
"textarea"
v-model=
"form.drugsAdverseOther"
:maxlength=
"120"
placeholder=
"请填写具体描述哪种药物,何种不良反应,限120字"
class=
"card-input"
/>
</div>
<!-- 此次随访分类 -->
<div
class=
"label-title mt-2"
required
>
此次随访分类
</div>
<van-field
:rules=
"rules.visitType"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.visitType"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00085')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 目前诊断 -->
<div
class=
"label-title mt-2"
required
>
目前诊断
</div>
<van-field
v-model=
"form.currentDiagnosisName"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.currentDiagnosisName"
@
click=
"showCurrentDiagnosis = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showCurrentDiagnosis"
position=
"bottom"
>
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showCurrentDiagnosis = false"
>
取消
</div>
<div>
目前诊断(可多选)
</div>
<div
class=
"blueColor"
@
click=
"currentDiagnosisConfirm"
>
确定
</div>
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
multiple
column-2
:options=
"store.getDict('CP00086')"
v-model:value=
"form.currentDiagnosis"
:fieldNames=
"{ text: 'name', value: 'value' }"
/>
</div>
</div>
</van-popup>
<!-- 转诊 -->
<div
class=
"label-title mt-2"
required
>
转诊
</div>
<van-field
:rules=
"rules.isReferral"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.isReferral"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<div
v-if=
"form.isReferral === 1"
class=
"bg-fa mt-2"
>
<div
style=
"background-color: #fff; padding: 8px; border-radius: 8px"
>
<div
style=
"color: #262626; font-size: 14px"
>
转诊原因
</div>
<van-field
type=
"textarea"
v-model=
"form.referralReason"
:maxlength=
"120"
placeholder=
"请填写具体描述转诊原因,限120字"
class=
"form-input mt-2"
/>
</div>
<div
style=
"background-color: #fff; padding: 8px; border-radius: 8px"
class=
"mt-2"
>
<div
style=
"color: #262626; font-size: 14px"
>
转诊机构
</div>
<van-field
v-model=
"form.referralUnitName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showReferralUnit = true"
class=
"form-input mt-2"
/>
<DocUnit
v-model:show=
"showReferralUnit"
v-model:value=
"form.referralUnitId"
:valueName=
"form?.referralUnitName"
@
change=
"referralUnitChange"
/>
</div>
<div
style=
"background-color: #fff; padding: 8px; border-radius: 8px"
class=
"mt-2"
>
<div
style=
"color: #262626; font-size: 14px"
>
转诊科室
</div>
<van-field
v-model=
"form.referralOfficeName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showReferralOffice = true"
class=
"form-input mt-2"
/>
<DocOffice
v-model:show=
"showReferralOffice"
v-model:value=
"form.referralOfficeId"
:unitId=
"form.referralUnitId"
@
change=
"referralOfficeChange"
/>
</div>
</div>
<!-- 现场随访照片 -->
<div
class=
"label-title mt-2"
>
现场随访照片
</div>
<DocImageUpload
description=
"最多支持上传8个文件,支持上传图片或PDF文件,图片支持上传jpg、png、jpeg格式,文件大小请勿超过10M。"
lengthMessage=
"抱歉,最多可上传8个文件。"
:imageData=
"[]"
@
change=
"(ids, option) => form.visitImage = ids"
:maxLength=
"8"
/>
<!-- 下次随访日期 -->
<div
class=
"label-title"
required
>
下次随访日期
</div>
<van-field
v-model=
"form.nextVisitDate"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.nextVisitDate"
@
click=
"showNextVisitDate = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showNextVisitDate"
position=
"bottom"
>
<van-date-picker
v-model=
"form._nextVisitDate"
:min-date=
"nextVisitDateRange.min"
:max-date=
"nextVisitDateRange.max"
@
confirm=
"nextVisitDateConfirm"
@
cancel=
"showNextVisitDate = false"
/>
</van-popup>
<!-- 随访日期 -->
<div
class=
"label-title mt-2"
>
随访日期
</div>
<van-field
v-model=
"form.visitDate"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.visitDate"
@
click=
"showVisitDate = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showVisitDate"
position=
"bottom"
>
<van-date-picker
v-model=
"form._visitDate"
:min-date=
"visitDateRange.min"
:max-date=
"visitDateRange.max"
@
confirm=
"visitDateConfirm"
@
cancel=
"showVisitDate = false"
/>
</van-popup>
<!-- 随访单位 -->
<div
class=
"label-title mt-2"
>
随访单位
</div>
<van-field
v-model=
"form.visitUnitName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showVisitUnit = true"
class=
"form-input mt-2"
/>
<DocUnit
v-model:show=
"showVisitUnit"
v-model:value=
"form.visitUnitId"
:valueName=
"form?.visitUnitName"
@
change=
"visitUnitChange"
/>
<!-- 随访科室 -->
<div
class=
"label-title mt-2"
>
随访科室
</div>
<van-field
v-model=
"form.visitOfficeName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showVisitOffice = true"
class=
"form-input mt-2"
/>
<DocOffice
v-model:show=
"showVisitOffice"
v-model:value=
"form.visitOfficeId"
:unitId=
"form.visitUnitId"
@
change=
"visitOfficeChange"
/>
<!-- 随访医生 -->
<div
class=
"label-title mt-2"
>
随访医生
</div>
<van-field
v-model=
"form.visitDoctorName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showVisitDoctor = true"
class=
"form-input mt-2"
/>
<DocOfficeDoctor
v-model:show=
"showVisitDoctor"
:allowClear=
"false"
v-model:value=
"form.visitDoctorId"
:unitId=
"form.visitUnitId"
:officeId=
"form.visitOfficeId"
@
change=
"(option) => { form.visitDoctorName = option.staffName }"
/>
</van-form>
</template>
<
script
>
import
{
useStore
}
from
'@/doctor/store'
import
CheckBtn
from
'@/doctor/components/checkBtn/CheckBtn.vue'
import
{
checkboxReject
,
calculateBMI
,
fetchDataHandle
}
from
'@/utils/common'
import
BloodPressurePanel
from
'@/doctor/components/bloodPressure/BloodPressurePanel.vue'
import
BloodPressureBt
from
'@/doctor/components/bloodPressure/BloodPressureBt.vue'
import
DocImageUpload
from
'@/doctor/components/docImageUpload/DocImageUpload.vue'
import
DocUnit
from
'@/doctor/components/docUnit/DocUnit.vue'
import
DocOffice
from
'@/doctor/components/docOffice/DocOffice.vue'
import
DocOfficeDoctor
from
'@/doctor/components/docOfficeDoctor/DocOfficeDoctor.vue'
export
default
{
components
:
{
CheckBtn
,
BloodPressurePanel
,
BloodPressureBt
,
DocImageUpload
,
DocUnit
,
DocOffice
,
DocOfficeDoctor
},
inject
:
[
'pressureObj'
],
data
()
{
return
{
store
:
useStore
(),
form
:
{},
rules
:
{
visitWayName
:
[
{
required
:
true
,
message
:
'请选择随访方式'
}
],
symptomName
:
[
{
required
:
true
,
message
:
'请选择症状'
}
],
signSystolicPressure
:
[
{
required
:
true
,
message
:
'请填写收缩压'
}
],
signDiastolicPressure
:
[
{
required
:
true
,
message
:
'请填写舒张压'
}
],
signHeight
:
[
{
required
:
true
,
message
:
'请填写身高'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+
(\.\d{1})?
$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
10
&&
Number
(
value
)
<=
300
))
{
res
=
false
}
return
res
},
message
:
`请输入10到300之间的数字,允许一位小数`
}
],
signWeight
:
[
{
required
:
true
,
message
:
'请填写体重'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+
(\.\d{1,2})?
$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
20
&&
Number
(
value
)
<=
500
))
{
res
=
false
}
return
res
},
message
:
`请输入20到500之间的数字,允许两位小数`
}
],
signHeartRate
:
[
{
required
:
true
,
message
:
'请填写心率'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
10
&&
Number
(
value
)
<=
200
))
{
res
=
false
}
return
res
},
message
:
`请输入10到200之间的整数`
}
],
isSmoking
:
[
{
required
:
true
,
message
:
'请选择'
}
],
startSmokeAge
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
2
&&
Number
(
value
)
<=
100
))
{
res
=
false
}
return
res
},
message
:
`请输入2到100之间的整数`
}
],
daySmoking
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
100
))
{
res
=
false
}
return
res
},
message
:
`请输入0到100之间的整数`
}
],
goalDaySmoking
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
100
))
{
res
=
false
}
return
res
},
message
:
`请输入0到100之间的整数`
}
],
isDrink
:
[
{
required
:
true
,
message
:
'请选择'
}
],
dayDrink
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
goalDayDrink
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
drinkLiquor
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
drinkBeer
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
drinkRed
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
drinkYellow
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
drinkOther
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
regularExercise
:
[
{
required
:
true
,
message
:
'请选择'
}
],
exerciseStrength
:
[
{
required
:
true
,
message
:
'请选择'
}
],
nowExerciseWeek
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
50
))
{
res
=
false
}
return
res
},
message
:
`请输入0到50之间的整数`
}
],
nowExerciseMinute
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
500
))
{
res
=
false
}
return
res
},
message
:
`请输入0到500之间的整数`
}
],
targetExerciseWeek
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
50
))
{
res
=
false
}
return
res
},
message
:
`请输入0到50之间的整数`
}
],
targetExerciseMinute
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
500
))
{
res
=
false
}
return
res
},
message
:
`请输入0到500之间的整数`
}
],
saltIntake
:
[
{
required
:
true
,
message
:
'请选择'
}
],
psychologicalRecovery
:
[
{
required
:
true
,
message
:
'请选择'
}
],
doctorAdvice
:
[
{
required
:
true
,
message
:
'请选择'
}
],
medicationCompliance
:
[
{
required
:
true
,
message
:
'请选择'
}
],
drugsAdverse
:
[
{
required
:
true
,
message
:
'请选择'
}
],
visitType
:
[
{
required
:
true
,
message
:
'请选择'
}
],
currentDiagnosisName
:
[
{
required
:
true
,
message
:
'请选择'
}
],
isReferral
:
[
{
required
:
true
,
message
:
'请选择'
}
],
nextVisitDate
:
[
{
required
:
true
,
message
:
'请选择'
}
]
},
showVisitWay
:
false
,
showSymptom
:
false
,
// showAuxiliaryExamination: false
showCurrentDiagnosis
:
false
,
showReferralUnit
:
false
,
showReferralOffice
:
false
,
showNextVisitDate
:
false
,
nextVisitDateRange
:
{
min
:
undefined
,
max
:
undefined
},
showVisitDate
:
false
,
visitDateRange
:
{
min
:
undefined
,
max
:
undefined
},
showVisitUnit
:
false
,
showVisitOffice
:
false
,
showVisitDoctor
:
false
}
},
methods
:
{
checkboxReject
,
calculateBMI
,
visitWayChange
()
{
this
.
store
.
getDict
(
'CP00052'
).
forEach
(
item
=>
{
if
(
item
.
value
===
this
.
form
.
visitWay
)
{
this
.
form
.
visitWayName
=
item
.
name
}
})
this
.
showVisitWay
=
false
},
symptomConfirm
()
{
let
list
=
[]
this
.
store
.
getDict
(
'CP00064'
).
forEach
(
item
=>
{
let
selected
=
this
.
form
.
symptom
.
filter
(
e
=>
e
===
item
.
value
)
if
(
selected
&&
selected
.
length
)
{
list
.
push
(
item
.
name
)
}
})
this
.
form
.
symptomName
=
list
.
join
()
this
.
showSymptom
=
false
},
currentDiagnosisConfirm
()
{
let
list
=
[]
this
.
store
.
getDict
(
'CP00086'
).
forEach
(
item
=>
{
let
selected
=
this
.
form
.
currentDiagnosis
.
filter
(
e
=>
e
===
item
.
value
)
if
(
selected
&&
selected
.
length
)
{
list
.
push
(
item
.
name
)
}
})
this
.
form
.
currentDiagnosisName
=
list
.
join
()
this
.
showCurrentDiagnosis
=
false
},
setPressure
(
val
)
{
if
(
!
val
)
return
this
.
form
.
signSystolicPressure
=
val
.
systolicPressure
this
.
form
.
signDiastolicPressure
=
val
.
diastolicPressure
},
referralUnitChange
(
option
=
{})
{
this
.
form
.
referralUnitName
=
option
.
unitName
},
referralOfficeChange
(
option
=
{})
{
this
.
form
.
referralOfficeName
=
option
.
officeName
},
nextVisitDateConfirm
({
selectedValues
})
{
this
.
form
.
nextVisitDate
=
selectedValues
.
join
(
'-'
)
this
.
showNextVisitDate
=
false
},
visitDateConfirm
({
selectedValues
})
{
this
.
form
.
visitDate
=
selectedValues
.
join
(
'-'
)
this
.
showVisitDate
=
false
},
visitUnitChange
(
option
=
{})
{
this
.
form
.
visitUnitName
=
option
.
unitName
},
visitOfficeChange
(
option
=
{})
{
this
.
form
.
visitOfficeName
=
option
.
officeName
},
submit
()
{
return
new
Promise
((
resolve
,
reject
)
=>
{
this
.
$refs
.
form
.
validate
().
then
(()
=>
{
const
form
=
fetchDataHandle
(
this
.
form
,
{
symptom
:
'arrToStr'
,
currentDiagnosis
:
'arrToStr'
})
resolve
(
form
)
}).
catch
(
e
=>
{
})
})
}
},
watch
:
{
'form.signHeight'
:
{
handler
()
{
this
.
form
.
signBmi
=
this
.
calculateBMI
(
this
.
form
.
signHeight
,
this
.
form
.
signWeight
)
}
},
'form.signWeight'
:
{
handler
()
{
this
.
form
.
signBmi
=
this
.
calculateBMI
(
this
.
form
.
signHeight
,
this
.
form
.
signWeight
)
}
},
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.first-title {
display: flex;
align-items: center;
.btn-title {
background-color: #F0F3FF;
color: #607FF0;
border-radius: 9999px;
padding: 4px 16px;
margin-left: 8px;
}
}
.label-title {
font-size: 13px;
color: #595959;
font-weight: 500;
margin-bottom: 8px;
&[required] {
&::after {
content: '*';
color: #FF4D4F;
font-weight: bold;
margin-left: 4px;
}
}
}
.form-input {
background-color: #FAFAFA;
padding: 8px 12px;
border-radius: 8px;
}
:deep(.van-cell:after) {
border-bottom: 0px;
}
:deep(.van-popup) {
height: 50% !important;
}
.pop-title {
color: #262626;
font-size: 16px;
font-weight: 600;
}
.greyColor {
color: var(--van-text-color-2);
font-weight: 400;
}
.blueColor {
color: #607FF0;
font-weight: 500;
}
.sub-text {
color: #595959;
font-size: 13px;
font-weight: 400;
padding-bottom: 8px;
}
.tip {
color: #FA8C16;
font-size: 12px;
margin-top: 8px;
line-height: 16px;
}
.bg-fa {
background-color: #FAFAFA;
padding: 8px;
border-radius: 8px;
}
.doc-radio-group-now {
column-gap: 8px;
row-gap: 8px;
background-color: #FAFAFA;
width: 100%;
.van-radio {
background-color: #FFFFFF;
padding: 8px 12px;
border-radius: 8px;
justify-content: space-between;
margin-right: 0;
}
}
.card-input {
padding: 8px 12px;
border-radius: 8px;
}
:deep(.label-mr) {
margin-right: 8px;
}
</
style
>
\ No newline at end of file
src/doctor/followUp/separateFU/form/components/StrokeForm.vue
0 → 100644
View file @
3735a1aa
<
template
>
<van-form
ref=
"form"
>
<div
class=
"first-title"
>
<span
class=
"font-semibold"
>
随访信息
</span>
<div
class=
"btn-title"
>
引入数据
</div>
</div>
<!-- 随访方式 -->
<div
class=
"label-title mt-2"
required
>
随访方式
</div>
<van-field
v-model=
"form.visitWayName"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.visitWayName"
@
click=
"showVisitWay = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showVisitWay"
position=
"bottom"
>
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showVisitWay = false"
>
取消
</div>
<div>
随访方式(单选)
</div>
<div></div>
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
clearable
column-1
:options=
"store.getDict('CP00052')"
v-model:value=
"form.visitWay"
:fieldNames=
"
{ text: 'name', value: 'value' }"
@change="visitWayChange"
/>
</div>
</div>
</van-popup>
<!-- 症状 -->
<div
class=
"label-title mt-2"
required
>
症状
</div>
<van-field
v-model=
"form.symptomName"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.symptomName"
@
click=
"showSymptom = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showSymptom"
position=
"bottom"
>
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showSymptom = false"
>
取消
</div>
<div>
症状(可多选)
</div>
<div
class=
"blueColor"
@
click=
"symptomConfirm"
>
确定
</div>
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
multiple
column-2
:options=
"store.getDict('CP00064')"
v-model:value=
"form.symptom"
:fieldNames=
"
{ text: 'name', value: 'value' }"
@change="form.symptom = checkboxReject(form.symptom, [1])"
/>
</div>
</div>
</van-popup>
<template
v-if=
"(form.symptom || []).includes(99)"
>
<div
class=
"label-title mt-2"
>
其他症状
</div>
<van-field
v-model=
"form.symptomOther"
placeholder=
"请填写其他症状"
class=
"form-input"
/>
</
template
>
<!-- 血压 -->
<div
class=
"flex items-center justify-between tip-box mt-2 mb-2"
>
<div
class=
"label-title"
required
>
血压
</div>
<BloodPressurePanel
:pressureObj=
"pressureObj"
/>
</div>
<table
class=
"w-full mb-2"
>
<tr
class=
"sub-text"
>
<td>
收缩压(SBP)
</td>
<td
style=
"width: 1em"
></td>
<td>
舒张压(DBP)
</td>
</tr>
<tr>
<td
class=
"flex items-center"
>
<van-field
v-model=
"form.signSystolicPressure"
placeholder=
"60~300,整数"
:rules=
"rules.signSystolicPressure"
class=
"form-input"
>
<
template
#
extra
>
<span>
mmHg
</span>
</
template
>
</van-field>
</td>
<td
class=
"text-center"
>
<span
class=
"divide"
>
/
</span>
</td>
<td
class=
"flex items-center"
>
<van-field
v-model=
"form.signDiastolicPressure"
placeholder=
"30~300,整数"
:rules=
"rules.signDiastolicPressure"
class=
"form-input"
>
<
template
#
extra
>
<span>
mmHg
</span>
</
template
>
</van-field>
</td>
</tr>
</table>
<BloodPressureBt
:pressureObj=
"pressureObj"
@
getValue=
"setPressure"
>
开始测量
</BloodPressureBt>
<div
class=
"tip"
>
提示:点击“开始测量”按钮后将自动启动血压计设备,请勿再重复点击设备“开始/停止”按钮。
</div>
<!-- 身高 -->
<div
class=
"label-title mt-2"
required
>
身高
</div>
<van-field
v-model=
"form.signHeight"
placeholder=
"10~300,1位小数"
:rules=
"rules.signHeight"
class=
"form-input"
>
<
template
#
extra
>
<span>
cm
</span>
</
template
>
</van-field>
<!-- 体重 -->
<div
class=
"label-title mt-2"
required
>
体重
</div>
<van-field
v-model=
"form.signWeight"
placeholder=
"20~500,2位小数"
:rules=
"rules.signWeight"
class=
"form-input"
>
<
template
#
extra
>
<span>
kg
</span>
</
template
>
</van-field>
<!-- BMI -->
<div
class=
"label-title mt-2"
>
BMI(体质指数)
</div>
<van-field
readonly
v-model=
"form.signBmi"
placeholder=
"-"
class=
"form-input"
>
<
template
#
extra
>
<span>
kg/m²
</span>
</
template
>
</van-field>
<!-- 心率 -->
<div
class=
"label-title mt-2"
required
>
心率
</div>
<van-field
v-model=
"form.signHeartRate"
placeholder=
"10~200,整数"
:rules=
"rules.signHeartRate"
class=
"form-input"
>
<
template
#
extra
>
<span>
次/分
</span>
</
template
>
</van-field>
<!-- 其他体征 -->
<div
class=
"label-title mt-2"
>
其他
</div>
<van-field
type=
"textarea"
v-model=
"form.signOther"
:maxlength=
"120"
placeholder=
"如有其他体征情况请填写在此处,限120个字"
class=
"form-input"
/>
<!-- 吸烟 -->
<div
class=
"label-title mt-2"
required
>
吸烟
</div>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
是否正在吸烟
</div>
<van-field
:rules=
"rules.isSmoking"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.isSmoking"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00066')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 100%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
您大约从几岁起开始养成每天或基本每天都吸烟的习惯
</div>
<van-field
v-model=
"form.startSmokeAge"
placeholder=
"2~100,整数"
:rules=
"rules.startSmokeAge"
class=
"card-input"
>
<
template
#
extra
>
<span>
岁
</span>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1 || form.isSmoking === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
您最近7天是否吸烟
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.lastSevenSmoke"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('DC00001')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1 || form.isSmoking === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
日吸烟量
</div>
<van-field
v-model=
"form.daySmoking"
placeholder=
"0~100,整数"
:rules=
"rules.daySmoking"
class=
"card-input"
>
<
template
#
extra
>
<span>
支
</span>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isSmoking === 1 || form.isSmoking === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
目标日吸烟量
</div>
<van-field
v-model=
"form.goalDaySmoking"
placeholder=
"0~100,整数"
:rules=
"rules.goalDaySmoking"
class=
"card-input"
>
<
template
#
extra
>
<span>
支
</span>
</
template
>
</van-field>
</div>
<!-- 饮酒 -->
<div
class=
"label-title mt-2"
required
>
饮酒
</div>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
是否正在饮酒
</div>
<van-field
:rules=
"rules.isDrink"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.isDrink"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00068')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 100%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isDrink === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
饮酒频率
</div>
<van-field
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.drinkCondition"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 100%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.isDrink === 1 || form.isDrink === 2"
class=
"flex mt-2"
>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
日饮酒量
</div>
<van-field
v-model=
"form.dayDrink"
placeholder=
"0~3000,整数"
:rules=
"rules.dayDrink"
class=
"card-input"
>
<
template
#
extra
>
<span>
ml
</span>
</
template
>
</van-field>
</div>
<div
class=
"bg-fa ml-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
目标日饮酒量
</div>
<van-field
v-model=
"form.goalDayDrink"
placeholder=
"0~3000,整数"
:rules=
"rules.goalDayDrink"
class=
"card-input"
>
<
template
#
extra
>
<span>
ml
</span>
</
template
>
</van-field>
</div>
</div>
<div
v-if=
"form.isDrink === 1 || form.isDrink === 2"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
饮酒种类
</div>
<van-field
label=
"白酒"
v-model=
"form.drinkLiquor"
placeholder=
"0~3000,整数"
:rules=
"rules.drinkLiquor"
class=
"card-input"
label-width=
"36px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
<van-field
label=
"啤酒"
v-model=
"form.drinkBeer"
placeholder=
"0~3000,整数"
:rules=
"rules.drinkBeer"
class=
"card-input mt-2"
label-width=
"36px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
<van-field
label=
"红酒"
v-model=
"form.drinkRed"
placeholder=
"0~3000,整数"
:rules=
"rules.drinkRed"
class=
"card-input mt-2"
label-width=
"36px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
<van-field
label=
"黄酒"
v-model=
"form.drinkYellow"
placeholder=
"0~3000,整数"
:rules=
"rules.drinkYellow"
class=
"card-input mt-2"
label-width=
"36px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
<van-field
label=
"其他"
v-model=
"form.drinkOther"
placeholder=
"0~3000,整数"
:rules=
"rules.drinkOther"
class=
"card-input mt-2"
label-width=
"36px"
label-class=
"label-mr"
>
<
template
#
extra
>
<span>
ml/日
</span>
</
template
>
</van-field>
</div>
<!-- 运动 -->
<div
class=
"label-title mt-2"
required
>
运动
</div>
<div
class=
"bg-fa"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
有无规律活动
</div>
<van-field
:rules=
"rules.regularExercise"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.regularExercise"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
v-if=
"form.regularExercise === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
运动强度
</div>
<van-field
:rules=
"rules.exerciseStrength"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.exerciseStrength"
shape=
"dot"
direction=
"horizontal"
class=
"doc-radio-group-now"
>
<van-radio
v-for=
"item in store.getDict('CP00070')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
目前运动情况
</div>
<div
class=
"flex"
>
<van-field
v-model=
"form.nowExerciseWeek"
placeholder=
"0~50,整数"
:rules=
"rules.nowExerciseWeek"
class=
"card-input"
>
<
template
#
extra
>
<span>
次/周
</span>
</
template
>
</van-field>
<van-field
v-model=
"form.nowExerciseMinute"
placeholder=
"0~500,整数"
:rules=
"rules.nowExerciseMinute"
class=
"card-input ml-2"
>
<
template
#
extra
>
<span>
分钟/次
</span>
</
template
>
</van-field>
</div>
</div>
<div
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
required
style=
"color: #262626; font-size: 14px"
>
目标运动情况
</div>
<div
class=
"flex"
>
<van-field
v-model=
"form.targetExerciseWeek"
placeholder=
"0~50,整数"
:rules=
"rules.targetExerciseWeek"
class=
"card-input"
>
<
template
#
extra
>
<span>
次/周
</span>
</
template
>
</van-field>
<van-field
v-model=
"form.targetExerciseMinute"
placeholder=
"0~500,整数"
:rules=
"rules.targetExerciseMinute"
class=
"card-input ml-2"
>
<
template
#
extra
>
<span>
分钟/次
</span>
</
template
>
</van-field>
</div>
</div>
<!-- 摄盐情况 -->
<div
class=
"label-title mt-2"
required
>
摄盐情况(咸淡)
</div>
<van-field
:rules=
"rules.saltIntake"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.saltIntake"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00071')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 心理调整 -->
<div
class=
"label-title mt-2"
required
>
心理调整
</div>
<van-field
:rules=
"rules.psychologicalRecovery"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.psychologicalRecovery"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00072')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 遵医行为 -->
<div
class=
"label-title mt-2"
required
>
遵医行为
</div>
<van-field
:rules=
"rules.doctorAdvice"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.doctorAdvice"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00072')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 服药依从性 -->
<div
class=
"label-title mt-2"
required
>
服药依从性
</div>
<van-field
:rules=
"rules.medicationCompliance"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.medicationCompliance"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00080')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 药物不良反应 -->
<div
class=
"label-title mt-2"
required
>
药物不良反应
</div>
<van-field
:rules=
"rules.drugsAdverse"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.drugsAdverse"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<div
v-if=
"form.drugsAdverse === 1"
class=
"bg-fa mt-2"
>
<div
class=
"label-title"
style=
"color: #262626; font-size: 14px"
>
不良反应
</div>
<van-field
type=
"textarea"
v-model=
"form.drugsAdverseOther"
:maxlength=
"120"
placeholder=
"请填写具体描述哪种药物,何种不良反应,限120字"
class=
"card-input"
/>
</div>
<!-- 此次随访分类 -->
<div
class=
"label-title mt-2"
required
>
此次随访分类
</div>
<van-field
:rules=
"rules.visitType"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.visitType"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('CP00085')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
style=
"width: 48%"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<!-- 目前诊断 -->
<div
class=
"label-title mt-2"
required
>
目前诊断
</div>
<van-field
v-model=
"form.currentDiagnosisName"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.currentDiagnosisName"
@
click=
"showCurrentDiagnosis = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showCurrentDiagnosis"
position=
"bottom"
>
<div
class=
"p-4"
style=
"height: 100%"
>
<div
class=
"flex justify-between items-center mb-4 pop-title"
>
<div
class=
"greyColor"
@
click=
"showCurrentDiagnosis = false"
>
取消
</div>
<div>
目前诊断(可多选)
</div>
<div
class=
"blueColor"
@
click=
"currentDiagnosisConfirm"
>
确定
</div>
</div>
<div
style=
"height: 80%; overflow: auto"
>
<CheckBtn
multiple
column-2
:options=
"store.getDict('CP00086')"
v-model:value=
"form.currentDiagnosis"
:fieldNames=
"{ text: 'name', value: 'value' }"
/>
</div>
</div>
</van-popup>
<!-- 转诊 -->
<div
class=
"label-title mt-2"
required
>
转诊
</div>
<van-field
:rules=
"rules.isReferral"
style=
"padding: 0"
>
<
template
#
input
>
<van-radio-group
v-model=
"form.isReferral"
shape=
"dot"
direction=
"horizontal"
class=
"w-full doc-radio-group"
>
<van-radio
v-for=
"item in store.getDict('DC00069')"
:key=
"item.value"
:name=
"item.value"
label-position=
"left"
>
{{
item
.
name
}}
</van-radio>
</van-radio-group>
</
template
>
</van-field>
<div
v-if=
"form.isReferral === 1"
class=
"bg-fa mt-2"
>
<div
style=
"background-color: #fff; padding: 8px; border-radius: 8px"
>
<div
style=
"color: #262626; font-size: 14px"
>
转诊原因
</div>
<van-field
type=
"textarea"
v-model=
"form.referralReason"
:maxlength=
"120"
placeholder=
"请填写具体描述转诊原因,限120字"
class=
"form-input mt-2"
/>
</div>
<div
style=
"background-color: #fff; padding: 8px; border-radius: 8px"
class=
"mt-2"
>
<div
style=
"color: #262626; font-size: 14px"
>
转诊机构
</div>
<van-field
v-model=
"form.referralUnitName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showReferralUnit = true"
class=
"form-input mt-2"
/>
<DocUnit
v-model:show=
"showReferralUnit"
v-model:value=
"form.referralUnitId"
:valueName=
"form?.referralUnitName"
@
change=
"referralUnitChange"
/>
</div>
<div
style=
"background-color: #fff; padding: 8px; border-radius: 8px"
class=
"mt-2"
>
<div
style=
"color: #262626; font-size: 14px"
>
转诊科室
</div>
<van-field
v-model=
"form.referralOfficeName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showReferralOffice = true"
class=
"form-input mt-2"
/>
<DocOffice
v-model:show=
"showReferralOffice"
v-model:value=
"form.referralOfficeId"
:unitId=
"form.referralUnitId"
@
change=
"referralOfficeChange"
/>
</div>
</div>
<!-- 现场随访照片 -->
<div
class=
"label-title mt-2"
>
现场随访照片
</div>
<DocImageUpload
description=
"最多支持上传8个文件,支持上传图片或PDF文件,图片支持上传jpg、png、jpeg格式,文件大小请勿超过10M。"
lengthMessage=
"抱歉,最多可上传8个文件。"
:imageData=
"[]"
@
change=
"(ids, option) => form.visitImage = ids"
:maxLength=
"8"
/>
<!-- 下次随访日期 -->
<div
class=
"label-title"
required
>
下次随访日期
</div>
<van-field
v-model=
"form.nextVisitDate"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.nextVisitDate"
@
click=
"showNextVisitDate = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showNextVisitDate"
position=
"bottom"
>
<van-date-picker
v-model=
"form._nextVisitDate"
:min-date=
"nextVisitDateRange.min"
:max-date=
"nextVisitDateRange.max"
@
confirm=
"nextVisitDateConfirm"
@
cancel=
"showNextVisitDate = false"
/>
</van-popup>
<!-- 随访日期 -->
<div
class=
"label-title mt-2"
>
随访日期
</div>
<van-field
v-model=
"form.visitDate"
isLink
readonly
placeholder=
"请选择"
:rules=
"rules.visitDate"
@
click=
"showVisitDate = true"
class=
"form-input"
/>
<van-popup
v-model:show=
"showVisitDate"
position=
"bottom"
>
<van-date-picker
v-model=
"form._visitDate"
:min-date=
"visitDateRange.min"
:max-date=
"visitDateRange.max"
@
confirm=
"visitDateConfirm"
@
cancel=
"showVisitDate = false"
/>
</van-popup>
<!-- 随访单位 -->
<div
class=
"label-title mt-2"
>
随访单位
</div>
<van-field
v-model=
"form.visitUnitName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showVisitUnit = true"
class=
"form-input mt-2"
/>
<DocUnit
v-model:show=
"showVisitUnit"
v-model:value=
"form.visitUnitId"
:valueName=
"form?.visitUnitName"
@
change=
"visitUnitChange"
/>
<!-- 随访科室 -->
<div
class=
"label-title mt-2"
>
随访科室
</div>
<van-field
v-model=
"form.visitOfficeName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showVisitOffice = true"
class=
"form-input mt-2"
/>
<DocOffice
v-model:show=
"showVisitOffice"
v-model:value=
"form.visitOfficeId"
:unitId=
"form.visitUnitId"
@
change=
"visitOfficeChange"
/>
<!-- 随访医生 -->
<div
class=
"label-title mt-2"
>
随访医生
</div>
<van-field
v-model=
"form.visitDoctorName"
is-link
readonly
placeholder=
"请选择"
@
click=
"showVisitDoctor = true"
class=
"form-input mt-2"
/>
<DocOfficeDoctor
v-model:show=
"showVisitDoctor"
:allowClear=
"false"
v-model:value=
"form.visitDoctorId"
:unitId=
"form.visitUnitId"
:officeId=
"form.visitOfficeId"
@
change=
"(option) => { form.visitDoctorName = option.staffName }"
/>
</van-form>
</template>
<
script
>
import
{
useStore
}
from
'@/doctor/store'
import
CheckBtn
from
'@/doctor/components/checkBtn/CheckBtn.vue'
import
{
checkboxReject
,
calculateBMI
,
fetchDataHandle
}
from
'@/utils/common'
import
BloodPressurePanel
from
'@/doctor/components/bloodPressure/BloodPressurePanel.vue'
import
BloodPressureBt
from
'@/doctor/components/bloodPressure/BloodPressureBt.vue'
import
DocImageUpload
from
'@/doctor/components/docImageUpload/DocImageUpload.vue'
import
DocUnit
from
'@/doctor/components/docUnit/DocUnit.vue'
import
DocOffice
from
'@/doctor/components/docOffice/DocOffice.vue'
import
DocOfficeDoctor
from
'@/doctor/components/docOfficeDoctor/DocOfficeDoctor.vue'
export
default
{
components
:
{
CheckBtn
,
BloodPressurePanel
,
BloodPressureBt
,
DocImageUpload
,
DocUnit
,
DocOffice
,
DocOfficeDoctor
},
inject
:
[
'pressureObj'
],
data
()
{
return
{
store
:
useStore
(),
form
:
{},
rules
:
{
visitWayName
:
[
{
required
:
true
,
message
:
'请选择随访方式'
}
],
symptomName
:
[
{
required
:
true
,
message
:
'请选择症状'
}
],
signSystolicPressure
:
[
{
required
:
true
,
message
:
'请填写收缩压'
}
],
signDiastolicPressure
:
[
{
required
:
true
,
message
:
'请填写舒张压'
}
],
signHeight
:
[
{
required
:
true
,
message
:
'请填写身高'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+
(\.\d{1})?
$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
10
&&
Number
(
value
)
<=
300
))
{
res
=
false
}
return
res
},
message
:
`请输入10到300之间的数字,允许一位小数`
}
],
signWeight
:
[
{
required
:
true
,
message
:
'请填写体重'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+
(\.\d{1,2})?
$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
20
&&
Number
(
value
)
<=
500
))
{
res
=
false
}
return
res
},
message
:
`请输入20到500之间的数字,允许两位小数`
}
],
signHeartRate
:
[
{
required
:
true
,
message
:
'请填写心率'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
10
&&
Number
(
value
)
<=
200
))
{
res
=
false
}
return
res
},
message
:
`请输入10到200之间的整数`
}
],
isSmoking
:
[
{
required
:
true
,
message
:
'请选择'
}
],
startSmokeAge
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
2
&&
Number
(
value
)
<=
100
))
{
res
=
false
}
return
res
},
message
:
`请输入2到100之间的整数`
}
],
daySmoking
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
100
))
{
res
=
false
}
return
res
},
message
:
`请输入0到100之间的整数`
}
],
goalDaySmoking
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
100
))
{
res
=
false
}
return
res
},
message
:
`请输入0到100之间的整数`
}
],
isDrink
:
[
{
required
:
true
,
message
:
'请选择'
}
],
dayDrink
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
goalDayDrink
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
drinkLiquor
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
drinkBeer
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
drinkRed
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
drinkYellow
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
drinkOther
:
[
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
3000
))
{
res
=
false
}
return
res
},
message
:
`请输入0到3000之间的整数`
}
],
regularExercise
:
[
{
required
:
true
,
message
:
'请选择'
}
],
exerciseStrength
:
[
{
required
:
true
,
message
:
'请选择'
}
],
nowExerciseWeek
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
50
))
{
res
=
false
}
return
res
},
message
:
`请输入0到50之间的整数`
}
],
nowExerciseMinute
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
500
))
{
res
=
false
}
return
res
},
message
:
`请输入0到500之间的整数`
}
],
targetExerciseWeek
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
50
))
{
res
=
false
}
return
res
},
message
:
`请输入0到50之间的整数`
}
],
targetExerciseMinute
:
[
{
required
:
true
,
message
:
'请输入'
},
{
validator
:
(
value
,
rule
)
=>
{
let
res
=
true
const
regex
=
/^
\d
+$/
if
(
value
&&
!
(
regex
.
test
(
value
)
&&
Number
(
value
)
>=
0
&&
Number
(
value
)
<=
500
))
{
res
=
false
}
return
res
},
message
:
`请输入0到500之间的整数`
}
],
saltIntake
:
[
{
required
:
true
,
message
:
'请选择'
}
],
psychologicalRecovery
:
[
{
required
:
true
,
message
:
'请选择'
}
],
doctorAdvice
:
[
{
required
:
true
,
message
:
'请选择'
}
],
medicationCompliance
:
[
{
required
:
true
,
message
:
'请选择'
}
],
drugsAdverse
:
[
{
required
:
true
,
message
:
'请选择'
}
],
visitType
:
[
{
required
:
true
,
message
:
'请选择'
}
],
currentDiagnosisName
:
[
{
required
:
true
,
message
:
'请选择'
}
],
isReferral
:
[
{
required
:
true
,
message
:
'请选择'
}
],
nextVisitDate
:
[
{
required
:
true
,
message
:
'请选择'
}
]
},
showVisitWay
:
false
,
showSymptom
:
false
,
// showAuxiliaryExamination: false
showCurrentDiagnosis
:
false
,
showReferralUnit
:
false
,
showReferralOffice
:
false
,
showNextVisitDate
:
false
,
nextVisitDateRange
:
{
min
:
undefined
,
max
:
undefined
},
showVisitDate
:
false
,
visitDateRange
:
{
min
:
undefined
,
max
:
undefined
},
showVisitUnit
:
false
,
showVisitOffice
:
false
,
showVisitDoctor
:
false
}
},
methods
:
{
checkboxReject
,
calculateBMI
,
visitWayChange
()
{
this
.
store
.
getDict
(
'CP00052'
).
forEach
(
item
=>
{
if
(
item
.
value
===
this
.
form
.
visitWay
)
{
this
.
form
.
visitWayName
=
item
.
name
}
})
this
.
showVisitWay
=
false
},
symptomConfirm
()
{
let
list
=
[]
this
.
store
.
getDict
(
'CP00058'
).
forEach
(
item
=>
{
let
selected
=
this
.
form
.
symptom
.
filter
(
e
=>
e
===
item
.
value
)
if
(
selected
&&
selected
.
length
)
{
list
.
push
(
item
.
name
)
}
})
this
.
form
.
symptomName
=
list
.
join
()
this
.
showSymptom
=
false
},
currentDiagnosisConfirm
()
{
let
list
=
[]
this
.
store
.
getDict
(
'CP00086'
).
forEach
(
item
=>
{
let
selected
=
this
.
form
.
currentDiagnosis
.
filter
(
e
=>
e
===
item
.
value
)
if
(
selected
&&
selected
.
length
)
{
list
.
push
(
item
.
name
)
}
})
this
.
form
.
currentDiagnosisName
=
list
.
join
()
this
.
showCurrentDiagnosis
=
false
},
setPressure
(
val
)
{
if
(
!
val
)
return
this
.
form
.
signSystolicPressure
=
val
.
systolicPressure
this
.
form
.
signDiastolicPressure
=
val
.
diastolicPressure
},
referralUnitChange
(
option
=
{})
{
this
.
form
.
referralUnitName
=
option
.
unitName
},
referralOfficeChange
(
option
=
{})
{
this
.
form
.
referralOfficeName
=
option
.
officeName
},
nextVisitDateConfirm
({
selectedValues
})
{
this
.
form
.
nextVisitDate
=
selectedValues
.
join
(
'-'
)
this
.
showNextVisitDate
=
false
},
visitDateConfirm
({
selectedValues
})
{
this
.
form
.
visitDate
=
selectedValues
.
join
(
'-'
)
this
.
showVisitDate
=
false
},
visitUnitChange
(
option
=
{})
{
this
.
form
.
visitUnitName
=
option
.
unitName
},
visitOfficeChange
(
option
=
{})
{
this
.
form
.
visitOfficeName
=
option
.
officeName
},
submit
()
{
return
new
Promise
((
resolve
,
reject
)
=>
{
this
.
$refs
.
form
.
validate
().
then
(()
=>
{
const
form
=
fetchDataHandle
(
this
.
form
,
{
symptom
:
'arrToStr'
,
currentDiagnosis
:
'arrToStr'
})
resolve
(
form
)
}).
catch
(
e
=>
{
})
})
}
},
watch
:
{
'form.signHeight'
:
{
handler
()
{
this
.
form
.
signBmi
=
this
.
calculateBMI
(
this
.
form
.
signHeight
,
this
.
form
.
signWeight
)
}
},
'form.signWeight'
:
{
handler
()
{
this
.
form
.
signBmi
=
this
.
calculateBMI
(
this
.
form
.
signHeight
,
this
.
form
.
signWeight
)
}
},
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.first-title {
display: flex;
align-items: center;
.btn-title {
background-color: #F0F3FF;
color: #607FF0;
border-radius: 9999px;
padding: 4px 16px;
margin-left: 8px;
}
}
.label-title {
font-size: 13px;
color: #595959;
font-weight: 500;
margin-bottom: 8px;
&[required] {
&::after {
content: '*';
color: #FF4D4F;
font-weight: bold;
margin-left: 4px;
}
}
}
.form-input {
background-color: #FAFAFA;
padding: 8px 12px;
border-radius: 8px;
}
:deep(.van-cell:after) {
border-bottom: 0px;
}
:deep(.van-popup) {
height: 50% !important;
}
.pop-title {
color: #262626;
font-size: 16px;
font-weight: 600;
}
.greyColor {
color: var(--van-text-color-2);
font-weight: 400;
}
.blueColor {
color: #607FF0;
font-weight: 500;
}
.sub-text {
color: #595959;
font-size: 13px;
font-weight: 400;
padding-bottom: 8px;
}
.tip {
color: #FA8C16;
font-size: 12px;
margin-top: 8px;
line-height: 16px;
}
.bg-fa {
background-color: #FAFAFA;
padding: 8px;
border-radius: 8px;
}
.doc-radio-group-now {
column-gap: 8px;
row-gap: 8px;
background-color: #FAFAFA;
width: 100%;
.van-radio {
background-color: #FFFFFF;
padding: 8px 12px;
border-radius: 8px;
justify-content: space-between;
margin-right: 0;
}
}
.card-input {
padding: 8px 12px;
border-radius: 8px;
}
:deep(.label-mr) {
margin-right: 8px;
}
</
style
>
\ No newline at end of file
src/doctor/patientDetail/components/disease/Visit.vue
View file @
3735a1aa
<
template
>
<
template
>
<div
class=
"h-full disease-visit"
ref=
"list"
>
<div
class=
'h-full disease-visit'
ref=
'list'
>
<van-pull-refresh
v-model=
'loadingRefresh'
@
refresh=
'onRefresh'
<van-pull-refresh
v-model=
'loadingRefresh'
@
refresh=
'onRefresh'
:disabled=
'isRefreshDisable'
style=
"min-height: 100%"
>
:disabled=
'isRefreshDisable'
style=
'min-height: 100%'
>
<van-list
<van-list
v-model:loading=
'loading'
v-model:loading=
'loading'
:finished=
'finished'
:finished=
'finished'
...
@@ -9,53 +9,56 @@
...
@@ -9,53 +9,56 @@
:immediate-check=
'false'
:immediate-check=
'false'
@
load=
'onMore'
@
load=
'onMore'
>
>
<div
class=
"flex flex-col"
>
<div
class=
'flex flex-col'
>
<div
class=
"flex flex-col gap-y-2.5 py-3 px-4 mb-3 doc-list-card"
<div
class=
'flex flex-col gap-y-2.5 py-3 px-4 mb-3 doc-list-card'
v-for=
'item in list'
:key=
"item.id"
@
click=
"toDetail(item)"
>
v-for=
'item in list'
:key=
'item.id'
@
click=
'toDetail(item)'
>
<div>
<div>
<span
class=
"label"
>
服务类型
</span>
<span
class=
'label'
>
服务类型
</span>
<span>
{{
item
.
serveTypeName
||
'-'
}}
</span>
<span>
{{
item
.
serveTypeName
||
'-'
}}
</span>
</div>
</div>
<div>
<div>
<span
class=
"label"
>
随访日期
</span>
<span
class=
'label'
>
随访日期
</span>
<span>
{{
item
.
serveDate
}}
</span>
<span>
{{
item
.
serveDate
}}
</span>
</div>
</div>
<div>
<div>
<span
class=
"label"
>
随访分类
</span>
<span
class=
'label'
>
随访分类
</span>
<span>
{{
item
.
visitTypeName
||
'-'
}}
</span>
<span>
{{
item
.
visitTypeName
||
'-'
}}
</span>
</div>
</div>
<div
v-if=
"item.patientNo"
>
<div
v-if=
'item.patientNo'
>
<span
class=
"label"
>
就诊号
</span>
<span
class=
'label'
>
就诊号
</span>
<span>
{{
item
.
patientNo
||
'-'
}}
</span>
<span>
{{
item
.
patientNo
||
'-'
}}
</span>
</div>
</div>
<div
class=
"text-ellipsis"
v-if=
"item.diagnose"
>
<div
class=
'text-ellipsis'
v-if=
'item.diagnose'
>
<span
class=
"label"
>
诊断
</span>
<span
class=
'label'
>
诊断
</span>
<span>
{{
item
.
diagnose
||
'-'
}}
</span>
<span>
{{
item
.
diagnose
||
'-'
}}
</span>
</div>
</div>
<div
v-if=
"item.bloodPressure"
>
<div
v-if=
'item.bloodPressure'
>
<span
class=
"label"
>
血压
</span>
<span
class=
'label'
>
血压
</span>
<span>
{{
item
.
bloodPressure
||
'-'
}}
</span>
<span>
{{
item
.
bloodPressure
||
'-'
}}
</span>
</div>
</div>
<div>
<div>
<span
class=
"label"
>
数据来源
</span>
<span
class=
'label'
>
数据来源
</span>
<span>
{{
item
.
sourceName
||
'-'
}}
</span>
<span>
{{
item
.
sourceName
||
'-'
}}
</span>
</div>
</div>
<div>
<div>
<span
class=
"label"
>
随访医生
</span>
<span
class=
'label'
>
随访医生
</span>
<span>
{{
item
.
serveDoctorName
||
'-'
}}
</span>
<span>
{{
item
.
serveDoctorName
||
'-'
}}
</span>
</div>
</div>
<div
class=
"text-ellipsis"
>
<div
class=
'text-ellipsis'
>
<span
class=
"label"
>
随访机构
</span>
<span
class=
'label'
>
随访机构
</span>
<span>
{{
item
.
serveUnitName
||
'-'
}}
</span>
<span>
{{
item
.
serveUnitName
||
'-'
}}
</span>
</div>
</div>
<div
class=
"divider"
></div>
<div
class=
'divider'
></div>
<div
class=
"bt-group"
>
<div
class=
'bt-group'
>
<van-button
round
size=
"small"
class=
"doc-btn-primary"
@
click=
"toDetail(item)"
>
详情
</van-button>
<van-button
round
size=
'small'
class=
'doc-btn-primary'
@
click=
'toDetail(item)'
>
详情
<!--
<van-button
round
size=
"small"
class=
"doc-btn-primary"
v-if=
"item.allowUpdate == 1"
>
转诊
</van-button>
-->
</van-button>
<van-button
round
size=
"small"
class=
"doc-btn-primary"
@
click=
'editBtn(item)'
<!--
<van-button
round
size=
"small"
class=
"doc-btn-primary"
v-if=
"item.allowUpdate == 1"
>
转诊
</van-button>
-->
v-if=
"!(item.allowUpdate !==1 || item.serveType == 5)"
>
修改
</van-button>
<van-button
round
size=
'small'
class=
'doc-btn-primary'
@
click=
'editBtn(item)'
<van-button
round
size=
"small"
class=
"doc-btn-red"
@
click=
"delBtn(item)"
v-if=
'!(item.allowUpdate !==1 || item.serveType == 5)'
>
修改
v-if=
"!(item.allowUpdate !==1 || item.serveType == 5)"
>
删除
</van-button>
</van-button>
<van-button
round
size=
'small'
class=
'doc-btn-red'
@
click=
'delBtn(item)'
v-if=
'!(item.allowUpdate !==1 || item.serveType == 5)'
>
删除
</van-button>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -117,12 +120,12 @@ export default {
...
@@ -117,12 +120,12 @@ export default {
// pageIndex: this.pagination.pageIndex,
// pageIndex: this.pagination.pageIndex,
// pageSize: this.pagination.pageSize,
// pageSize: this.pagination.pageSize,
residentInfoId
:
this
.
residentInfoId
,
residentInfoId
:
this
.
residentInfoId
,
diseaseType
:
this
.
diseaseType
,
diseaseType
:
this
.
diseaseType
}
}
getVisitManageList
(
query
,
loading
).
then
(
res
=>
{
getVisitManageList
(
query
,
loading
).
then
(
res
=>
{
if
(
this
.
pagination
.
pageIndex
===
1
)
{
if
(
this
.
pagination
.
pageIndex
===
1
)
{
this
.
list
=
[]
this
.
list
=
[]
}
}
this
.
list
=
this
.
list
.
concat
(
res
.
data
||
[])
this
.
list
=
this
.
list
.
concat
(
res
.
data
||
[])
this
.
pagination
.
total
=
res
.
data
.
total
||
0
this
.
pagination
.
total
=
res
.
data
.
total
||
0
this
.
finished
=
this
.
list
.
length
>=
this
.
pagination
.
total
this
.
finished
=
this
.
list
.
length
>=
this
.
pagination
.
total
...
@@ -148,8 +151,19 @@ export default {
...
@@ -148,8 +151,19 @@ export default {
//数据来源为his时展示 `请在医生PC端查看详情`
//数据来源为his时展示 `请在医生PC端查看详情`
showConfirmDialog
({
showConfirmDialog
({
message
:
'请在医生PC端查看详情'
message
:
'请在医生PC端查看详情'
}).
then
(()
=>
{}).
catch
((
err
)
=>
{})
}).
then
(()
=>
{
}).
catch
((
err
)
=>
{
})
}
else
if
(
record
.
source
==
4
)
{
// 判断是否显示公卫随访
this
.
$router
.
push
({
path
:
`/systemIframe/doctorGWDetail`
,
query
:
{
src
:
`https://www.baidu.com/`
,
pageTitle
:
`公卫详情`
}
})
}
else
{
}
else
{
//随访详情
//随访详情
this
.
$router
.
push
({
this
.
$router
.
push
({
...
@@ -157,7 +171,7 @@ export default {
...
@@ -157,7 +171,7 @@ export default {
query
:
{
query
:
{
relationUuid
:
record
.
relationUuid
,
relationUuid
:
record
.
relationUuid
,
residentInfoId
:
this
.
residentInfoId
,
residentInfoId
:
this
.
residentInfoId
,
diseaseType
:
this
.
diseaseType
,
diseaseType
:
this
.
diseaseType
}
}
})
})
}
}
...
@@ -181,6 +195,6 @@ export default {
...
@@ -181,6 +195,6 @@ export default {
}
}
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
'less'
scoped
>
</
style
>
</
style
>
src/router/index.js
View file @
3735a1aa
...
@@ -2,7 +2,7 @@ import { createRouter, createWebHashHistory } from 'vue-router'
...
@@ -2,7 +2,7 @@ import { createRouter, createWebHashHistory } from 'vue-router'
const
doctorIframeConfig
=
{
const
doctorIframeConfig
=
{
component
:
()
=>
import
(
/* webpackChunkName: "iframe-page" */
'@/components/iframePage/IframePage.vue'
),
component
:
()
=>
import
(
/* webpackChunkName: "iframe-page" */
'@/components/iframePage/IframePage.vue'
),
props
:
route
=>
({
src
:
route
.
query
.
src
})
props
:
route
=>
({
src
:
route
.
query
.
src
,
pageTitle
:
route
.
query
.
pageTitle
})
}
}
const
routes
=
[
const
routes
=
[
...
...
src/utils/common.js
View file @
3735a1aa
...
@@ -227,7 +227,7 @@ export function callMobile(handlerInterface, parameters) {
...
@@ -227,7 +227,7 @@ export function callMobile(handlerInterface, parameters) {
}
}
}
}
// 判断
ios还是安卓
// 判断
是否是ios
export
function
isIOSWebKit
()
{
export
function
isIOSWebKit
()
{
const
aa
=
window
.
navigator
.
userAgent
;
const
aa
=
window
.
navigator
.
userAgent
;
if
(
!!
aa
.
match
(
/
\(
i
[^
;
]
+;
(
U;
)?
CPU.+Mac OS X/
))
{
// ios端
if
(
!!
aa
.
match
(
/
\(
i
[^
;
]
+;
(
U;
)?
CPU.+Mac OS X/
))
{
// ios端
...
...
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