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
a9677931
Commit
a9677931
authored
Dec 02, 2024
by
songrui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
医生端 修改居民信息
parent
0f6d77b6
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
539 additions
and
6 deletions
+539
-6
Doctor.vue
src/doctor/Doctor.vue
+1
-1
BaseInfo.vue
src/doctor/archives/form/BaseInfo.vue
+489
-0
DocNavBar.vue
src/doctor/components/docNavBar/DocNavBar.vue
+1
-1
PatientDetail.vue
src/doctor/patientDetail/PatientDetail.vue
+43
-4
index.js
src/router/index.js
+5
-0
No files found.
src/doctor/Doctor.vue
View file @
a9677931
...
...
@@ -52,7 +52,7 @@ export default {
if
(
!
token
)
{
token
=
sessionStorage
.
getItem
(
'token'
)
if
(
process
.
env
.
NODE_ENV
!==
'production'
)
{
token
=
'
e85be59c-b842-4e7a-b8eb-b9be87df2b56
'
token
=
'
c57e0e9b-4d0d-4e50-9946-771e8ef39ca0
'
}
}
if
(
token
)
{
...
...
src/doctor/archives/form/BaseInfo.vue
0 → 100644
View file @
a9677931
<
template
>
<div>
<!--
<van-nav-bar
title=
'修改居民信息'
left-text=
''
left-arrow
@
click-left=
'toBack'
></van-nav-bar>
-->
<DocNavBar
title=
"修改居民信息"
class=
"shrink-0"
></DocNavBar>
<div
class=
'p-4 h-overflow'
>
<van-form
ref=
'form'
>
<div
class=
'title'
>
居民信息
</div>
<!--
<div
class=
'label-title'
>
证件类型
</div>
<van-field
v-model=
'form.certificateTypeName'
is-link
readonly
placeholder=
'证件类型'
class=
'input-back mt-2 form-input'
:rules=
'rules.certificateTypeName'
/>
-->
<div
class=
'label-title mt-5'
>
证件号码
</div>
<van-field
v-model=
'form.idCard'
readonly
placeholder=
'证件号码'
class=
'input-back mt-2 form-input'
:rules=
'rules.idCard'
/>
<div
class=
'label-title mt-5'
>
姓名
</div>
<van-field
v-model=
'form.residentName'
clearable
placeholder=
'姓名'
class=
'input-back mt-2 form-input'
:rules=
'rules.residentName'
/>
<div
class=
'label-title mt-5'
>
性别
</div>
<van-field
v-model=
'form.genderName'
is-link
readonly
placeholder=
'性别'
class=
'input-back mt-2 form-input'
:rules=
'rules.genderName'
/>
<div
class=
'label-title mt-5'
>
出生日期
</div>
<van-field
v-model=
'form.dataBirth'
is-link
readonly
placeholder=
'出生日期'
class=
'input-back mt-2 form-input'
:rules=
'rules.dataBirth'
/>
<div
class=
'label-title mt-5'
>
本人电话
</div>
<van-field
v-model=
'form.telephone'
clearable
placeholder=
'本人电话'
class=
'input-back mt-2 form-input'
:rules=
'rules.telephone'
/>
<div
class=
'label-title mt-5'
>
民族
</div>
<van-field
v-model=
'form.nationalName'
is-link
readonly
name=
'national'
placeholder=
'请选择'
class=
'input-back mt-2 form-input'
:rules=
'rules.nationalName'
@
click=
'showNational = true'
/>
<van-popup
v-model:show=
'showNational'
position=
'bottom'
>
<van-picker
:columns-field-names=
"
{ text: 'name', value: 'value' }"
:columns="store.getDict('DC00006')"
@confirm='nationalConfirm'
@cancel='showNational = false'
/>
</van-popup>
<div
class=
'label-title mt-5'
>
年龄
</div>
<van-field
v-model=
'form.currentAge'
readonly
placeholder=
'年龄'
class=
'input-back mt-2 form-input'
:rules=
'rules.currentAge'
/>
<div
class=
'label-title mt-5'
>
现住址
</div>
<van-field
v-model=
'form.presentCodeName'
is-link
readonly
placeholder=
'请选择所在地区'
class=
'input-back mt-2 form-input'
:rules=
'rules.presentCodeName'
@
click=
'showPresent = true'
>
<template
#
input
>
<span
class=
'text-end'
>
{{
form
.
presentCodeName
}}
</span>
</
template
>
</van-field>
<van-popup
v-model:show=
'showPresent'
:close-on-click-overlay=
'false'
position=
'bottom'
>
<DocAddress
v-model:value=
'form.presentCode'
@
close=
'showPresent = false'
:viewData=
'addressRecord.presentCode'
@
change=
'presentChange'
/>
</van-popup>
<div
class=
'no-req-label mt-5'
>
详细地址
</div>
<van-field
v-model=
'form.nowAddress'
clearable
class=
'input-back mt-2 form-input'
placeholder=
'请填写详细地址'
maxlength=
'50'
/>
<div
class=
'flex items-center justify-between mt-5'
>
<div
class=
'label-title '
>
户口地址
</div>
<van-button
size=
'mini'
plain
type=
'primary'
@
click=
'setRegisteredAddress'
>
同步现住址
</van-button>
</div>
<van-field
v-model=
'form.registeredCodeName'
is-link
readonly
placeholder=
'请选择所在地区'
class=
'input-back mt-2 form-input'
:rules=
'rules.registeredCode'
@
click=
'showRegistered = true'
>
<
template
#
input
>
<span
class=
'text-end'
>
{{
form
.
registeredCodeName
}}
</span>
</
template
>
</van-field>
<van-popup
v-model:show=
'showRegistered'
:close-on-click-overlay=
'false'
position=
'bottom'
>
<DocAddress
v-model:value=
'form.registeredCode'
@
close=
'showRegistered = false'
:viewData=
'addressRecord.registeredCode'
@
change=
'registeredChange'
/>
</van-popup>
<div
class=
'no-req-label mt-5'
>
详细地址
</div>
<van-field
v-model=
'form.permanentAddress'
clearable
class=
'input-back mt-2 form-input'
placeholder=
'请填写详细地址'
maxlength=
'50'
/>
<div
class=
'title mt-5'
>
联系人信息
</div>
<div
class=
'no-req-label mt-5'
>
联系人姓名
</div>
<van-field
v-model=
'form.contactName'
clearable
placeholder=
'联系人姓名'
class=
'input-back mt-2 form-input'
:rules=
'rules.contactName'
/>
<div
class=
'no-req-label mt-5'
>
与居民关系
</div>
<van-field
v-model=
'form.relationName'
readonly
is-link
placeholder=
'与居民关系'
class=
'input-back mt-2 form-input'
@
click=
'showRelation= true'
/>
<van-popup
v-model:show=
'showRelation'
position=
'bottom'
>
<van-picker
:columns-field-names=
"{ text: 'name', value: 'value' }"
:columns=
"store.getDict('DC00023')"
@
confirm=
'relationlConfirm'
@
cancel=
'showRelation = false'
/>
</van-popup>
<van-field
v-if=
'form.relation == 99'
v-model=
'form.relationOther'
clearable
placeholder=
'其他关系'
class=
'input-back mt-2 form-input'
/>
<div
class=
'no-req-label mt-5'
>
联系电话
</div>
<van-field
v-model=
'form.contactPhone'
clearable
placeholder=
'联系电话'
class=
'input-back mt-2 form-input'
:rules=
'rules.contactPhone'
/>
</van-form>
</div>
<div
class=
'px-5 grow flex flex-col justify-end pt-2 pb-2'
>
<van-button
type=
'primary'
block
round
@
click=
'onSubmit'
>
提交
</van-button>
</div>
</div>
</template>
<
script
>
import
{
addToArr
}
from
'@/utils/common'
import
{
useStore
}
from
'@/doctor/store'
import
DocAddress
from
'@/components/docAddress/DocAddress'
import
DocNavBar
from
'@/doctor/components/docNavBar/DocNavBar.vue'
import
{
getChronicResidentsId
}
from
'@/api/doctor/generalFU'
import
{
updateResident
}
from
'@/api/doctor/resident'
const
defaultForm
=
(
info
=
{})
=>
{
const
form
=
{
id
:
undefined
,
residentInfoId
:
undefined
,
// 年龄
currentAge
:
undefined
,
// 出生地详细地址
birthAddress
:
undefined
,
// 出生地编码
birthCode
:
undefined
,
// 证件类型,[DC00004]
certificateType
:
1
,
certificateTypeName
:
'身份证'
,
// 联系人姓名
contactName
:
undefined
,
contactName2
:
undefined
,
// 联系人电话
contactPhone
:
undefined
,
// 与居民关系,[DC00023]
contactRelation
:
undefined
,
contactRelationName
:
undefined
,
// 出生日期
dataBirth
:
undefined
,
// 职业,[DC00010]
duty
:
undefined
,
dutyName
:
undefined
,
// 文化程度(学历),[DC00007]
education
:
undefined
,
educationName
:
undefined
,
// 性别,[DC00005]
gender
:
undefined
,
genderName
:
undefined
,
// 身份证号
idCard
:
undefined
,
// innerMarital: undefined,
// 民族,[DC00006]
national
:
undefined
,
nationalName
:
undefined
,
// 现住址
nowAddress
:
undefined
,
// 户籍地址
permanentAddress
:
undefined
,
// 现住址编码
presentCode
:
undefined
,
presentCodeName
:
undefined
,
// 户籍地编码
registeredCode
:
undefined
,
registeredCodeName
:
undefined
,
// 居民档案id
residentId
:
undefined
,
// 姓名
residentName
:
undefined
,
// 本人电话
telephone
:
undefined
,
// 工作单位
workUnit
:
undefined
,
// 与居民关系
relation
:
undefined
,
relationName
:
undefined
,
relationOther
:
undefined
,
// 人群
chronicCrowd
:
undefined
,
chronicTagsArray
:
undefined
,
firstScreenDate
:
undefined
,
firstScreenResult
:
undefined
,
highTagsArray
:
undefined
,
highTags
:
undefined
,
latelyDiagnoseDate
:
undefined
,
latelyScreenDate
:
undefined
,
// 建档单位、科室、医生
createDoctorId
:
undefined
,
createDoctorName
:
undefined
,
createOfficeId
:
undefined
,
createOfficeName
:
undefined
,
createUnitId
:
undefined
,
createUnitName
:
undefined
,
// 当前人群-显示type=CP00181
groupsArrays
:
undefined
,
// 当前人群-查询
groups
:
undefined
,
}
Reflect
.
ownKeys
(
form
).
forEach
(
key
=>
{
if
(
info
[
key
]
!=
undefined
)
{
form
[
key
]
=
info
[
key
]
}
})
return
form
}
export
default
{
name
:
'BaseInfo'
,
components
:
{
DocAddress
,
DocNavBar
},
props
:
{
info
:
{
default
:
()
=>
{
return
{}
}
}
},
data
()
{
return
{
store
:
useStore
(),
// 民族
showNational
:
false
,
showRelation
:
false
,
// 现住址
showPresent
:
false
,
// 户籍地址
showRegistered
:
false
,
// 地址回显使用
addressRecord
:
{},
form
:
{},
rules
:
{
certificateTypeName
:
[{
required
:
true
,
message
:
'请选择证件类型'
}],
idCard
:
[{
required
:
true
,
message
:
'请填写证件号码'
}],
residentName
:
[{
required
:
true
,
message
:
'请填写姓名'
}],
genderName
:
[{
required
:
true
,
message
:
'请选择性别'
}],
dataBirth
:
[{
required
:
true
,
message
:
'请选择出生日期'
}],
nationalName
:
[{
required
:
true
,
message
:
'请选择名族'
}],
currentAge
:
[{
required
:
true
,
message
:
'请填写年龄'
}],
telephone
:
[{
required
:
true
,
message
:
'请填写本人电话'
}],
contactName
:
[{
required
:
false
,
message
:
'请填写联系人姓名'
}],
contactPhone
:
[{
required
:
false
,
message
:
'请填写联系电话'
}],
presentCodeName
:
[{
required
:
true
,
message
:
'请选择所在地区'
}],
registeredCode
:
[{
required
:
true
,
message
:
'请选择所在地区'
}]
}
}
},
computed
:
{
authInfo
()
{
return
this
.
store
.
$state
.
authInfo
},
residentInfoId
()
{
return
this
.
$route
.
query
.
residentInfoId
}
},
created
()
{
this
.
load
()
},
methods
:
{
async
load
()
{
const
res
=
await
getChronicResidentsId
(
this
.
residentInfoId
)
this
.
form
=
defaultForm
(
res
.
data
)
if
(
this
.
form
.
presentCode
)
{
this
.
addressRecord
.
presentCode
=
addToArr
(
this
.
form
.
presentCode
)
}
if
(
this
.
form
.
registeredCode
)
{
this
.
addressRecord
.
registeredCode
=
addToArr
(
this
.
form
.
registeredCode
)
}
},
// 民族
nationalConfirm
({
selectedValues
,
selectedOptions
})
{
this
.
form
.
national
=
selectedValues
[
0
]
this
.
form
.
nationalName
=
selectedOptions
[
0
].
name
this
.
showNational
=
false
},
//与居民关系
relationlConfirm
({
selectedValues
,
selectedOptions
})
{
this
.
form
.
relation
=
selectedValues
[
0
]
this
.
form
.
relationName
=
selectedOptions
[
0
].
name
this
.
showRelation
=
false
},
// 现住址
presentChange
(
val
)
{
const
selectedOptions
=
val
.
selectedOptions
this
.
form
.
presentCodeName
=
selectedOptions
.
map
(
e
=>
e
.
text
).
join
(
'/'
)
},
// 户口地址
registeredChange
(
val
)
{
const
selectedOptions
=
val
.
selectedOptions
this
.
form
.
registeredCodeName
=
selectedOptions
.
map
(
e
=>
e
.
text
).
join
(
'/'
)
if
(
!
this
.
form
.
presentCode
&&
selectedOptions
.
length
>=
5
)
{
this
.
form
.
presentCode
=
val
.
value
this
.
form
.
presentCodeName
=
this
.
form
.
registeredCodeName
}
},
// 同步现住址
setRegisteredAddress
()
{
this
.
$refs
.
form
.
validate
([
'presentCode'
]).
then
(
res
=>
{
this
.
form
.
registeredCode
=
this
.
form
.
presentCode
this
.
form
.
registeredCodeName
=
this
.
form
.
presentCodeName
this
.
form
.
permanentAddress
=
this
.
form
.
nowAddress
this
.
addressRecord
.
registeredCode
=
addToArr
(
this
.
form
.
presentCode
)
}).
catch
(
err
=>
console
.
warn
(
err
))
},
onSubmit
()
{
this
.
$refs
.
form
.
validate
().
then
(()
=>
{
let
par
=
{
...
this
.
form
}
updateResident
(
par
).
then
(()
=>
{
this
.
toBack
()
})
}).
catch
((
e
)
=>
{
console
.
warn
(
'ArchiveCommon error'
,
e
)
})
},
toBack
()
{
this
.
$router
.
back
()
}
}
}
</
script
>
<
style
scoped
lang=
'less'
>
.h-overflow {
height: calc(100vh - 110px);
overflow-y: auto;
}
.title {
font-weight: bold;
margin-bottom: 20px;
}
.label-title {
font-size: 13px;
color: #595959;
font-weight: 500;
&::after {
content: "*";
color: red;
font-weight: bold;
margin-left: 4px;
}
}
.no-req-label {
font-size: 13px;
color: #595959;
font-weight: 500;
}
.form-input {
padding: 8px 12px;
border-radius: 8px;
}
.input-back {
background: #FAFAFA;
}
.tel-back {
background: #F5F5F5;
padding: 8px;
border-radius: 0px 0px 8px 8px;
}
.tel {
background: #FFFFFF;
padding: 8px;
border-radius: 8px;
}
.tel-label {
color: #607FF0;
font-weight: bold;
}
.p-12-0 {
padding: 12px 0px;
}
:deep(.van-nav-bar .van-icon) {
color: #000000;
}
:deep(.van-cell-group--inset) {
overflow: visible;
}
:deep(.van-cell) {
overflow: visible;
}
:deep(.van-field__error-message) {
position: absolute;
}
:deep(.van-cell:after) {
border-bottom: 0px;
}
</
style
>
\ No newline at end of file
src/doctor/components/docNavBar/DocNavBar.vue
View file @
a9677931
...
...
@@ -7,7 +7,7 @@
</span>
</slot>
</div>
<div
class=
"grow text-center title"
>
<div
class=
"grow text-center
font-semibold
title"
>
<slot>
{{
title
}}
</slot>
...
...
src/doctor/patientDetail/PatientDetail.vue
View file @
a9677931
...
...
@@ -2,7 +2,7 @@
<div
class=
"h-full flex flex-col patient-detail"
>
<DocNavBar
title=
"居民详情"
class=
"shrink-0"
>
<template
#
right
>
<span
class=
"text-primary"
>
新增
</span>
<span
class=
"text-primary"
@
click=
"() => addVisible = true"
>
新增
</span>
</
template
>
</DocNavBar>
<div
class=
"grow flex flex-col"
style=
"background: #f5f5f5;min-height: 0px;"
>
...
...
@@ -12,7 +12,7 @@
<span
class=
"name mr-2"
>
{{ residentInfo.residentName || '-' }}
</span>
<span
class=
"tag mr-2"
>
{{ residentInfo.currentAge || '-' }}岁
</span>
<span
class=
"tag mr-2"
>
{{ residentInfo.genderName || '-' }}
</span>
<doc-icon
type=
"doc-edit"
class=
"text-primary"
/>
<doc-icon
type=
"doc-edit"
class=
"text-primary"
@
click=
"toArchivesEdit"
/>
</div>
<div
class=
"flex flex-col gap-y-2.5"
>
<div>
...
...
@@ -60,6 +60,24 @@
<div
class=
"grow py-3 px-2"
style=
"min-height: 0px;"
v-if=
"residentInfo.id"
>
<ScreeningList
v-if=
"activeTabItem.id === 'SCREENING'"
/>
</div>
<van-popup
v-model:show=
"addVisible"
position=
"bottom"
>
<div
class=
"popup-bottom-panel"
>
<div
class=
"p-4 text-16 flex items-center justify-between"
style=
"border-bottom: 1px solid #c0ccdf;"
>
<span
class=
"left"
@
click=
"addVisible = false"
>
取消
</span>
<span
class=
"font-semibold"
>
请选择
</span>
<span
class=
"right"
style=
"width: .32rem;"
></span>
</div>
<div
class=
"p-4"
>
<CheckBtn
:options=
"addOptions"
@
change=
"onAddChange"
column-1
/>
<div
class=
"pb-4"
></div>
</div>
</div>
</van-popup>
</div>
</div>
</template>
...
...
@@ -70,12 +88,14 @@ import ChronicTag from '@/doctor/components/chronicTag/ChronicTag.vue'
import
{
queryResidentInfo
}
from
'@/api/doctor/resident.js'
import
{
showNotify
}
from
'vant'
import
ScreeningList
from
'./components/screening/Index.vue'
import
CheckBtn
from
'@/doctor/components/checkBtn/CheckBtn.vue'
export
default
{
components
:
{
DocNavBar
,
ChronicTag
,
ScreeningList
ScreeningList
,
CheckBtn
},
data
()
{
return
{
...
...
@@ -83,7 +103,12 @@ export default {
// 折叠
collapsed
:
true
,
// 标签页index
activeTab
:
0
activeTab
:
0
,
// 新增弹窗
addVisible
:
false
,
addOptions
:
[
{
name
:
'新增通用随访'
,
value
:
1
,
path
:
'/doctor/followUp/generalFU/add'
}
]
}
},
provide
()
{
...
...
@@ -134,6 +159,20 @@ export default {
queryResidentInfo
({
residentInfoId
:
this
.
residentInfoId
}).
then
(
res
=>
{
this
.
residentInfo
=
res
.
data
||
{}
})
},
onAddChange
(
val
,
option
)
{
console
.
log
(
val
,
option
)
this
.
addVisible
=
false
this
.
$router
.
push
({
path
:
option
.
path
,
query
:
{
residentInfoId
:
this
.
residentInfoId
}
})
},
toArchivesEdit
()
{
this
.
$router
.
push
({
path
:
'/doctor/archives-form'
,
query
:
{
residentInfoId
:
this
.
residentInfoId
}
})
}
}
}
...
...
src/router/index.js
View file @
a9677931
...
...
@@ -55,6 +55,11 @@ const routes = [
name
:
'doctor-patient-detail'
,
component
:
()
=>
import
(
/* webpackChunkName: "doctor" */
'@/doctor/patientDetail/PatientDetail.vue'
)
},
{
path
:
'archives-form'
,
name
:
'doctor-archives-form'
,
component
:
()
=>
import
(
/* webpackChunkName: "doctor" */
'@/doctor/archives/form/BaseInfo.vue'
)
},
{
...
...
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