Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
agcs2.0-web
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
liang
agcs2.0-web
Commits
e7cc4f5a
Commit
e7cc4f5a
authored
Apr 23, 2023
by
miaojiale
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' into dev_Miaojiale
parents
b34d8d8f
617144fe
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
2232 additions
and
545 deletions
+2232
-545
followup.js
src/api/followup.js
+17
-8
download.png
src/assets/img/Home/download.png
+0
-0
file.png
src/assets/img/Home/file.png
+0
-0
trustee.png
src/assets/img/Home/trustee.png
+0
-0
FormItemText.vue
src/components/FormComponents/CustomForm/FormItemText.vue
+2
-1
index.vue
src/views/Home/index.vue
+179
-165
AllianceApply.vue
src/views/Home/notice/components/AllianceApply.vue
+190
-0
HospitalsList.vue
src/views/Home/notice/components/HospitalsList.vue
+258
-0
tpl.js
src/views/Home/notice/components/tpl.js
+339
-0
index.vue
src/views/Home/notice/index.vue
+116
-0
index.vue
src/views/audit-qualitycontrol/index.vue
+4
-0
publicDialog.vue
src/views/followupentry/components/publicDialog.vue
+13
-2
followaudit.vue
src/views/followupentry/followaudit.vue
+455
-271
index.vue
src/views/followupentry/index.vue
+3
-2
FollowUpDetail.vue
src/views/followupquery/FollowUpDetail.vue
+56
-0
FollowReview.vue
src/views/followupquery/components/FollowReview.vue
+324
-0
MyCustomForm.vue
src/views/followupquery/components/MyCustomForm.vue
+196
-0
index.vue
src/views/followupquery/index.vue
+76
-91
index.vue
src/views/followupresearch/index.vue
+1
-2
ConfigForms.vue
src/views/screening/components/ConfigForms.vue
+1
-2
FormTab.vue
src/views/screening/components/FormTab.vue
+2
-1
No files found.
src/api/followup.js
View file @
e7cc4f5a
import
request
from
"
@/utils/request
"
;
import
request
from
"
@/utils/request
"
/**
* 随访
...
...
@@ -10,7 +10,7 @@ export function getFollowSearch(params = {}) {
url
:
"
/disease-data/follow/search
"
,
method
:
"
get
"
,
params
,
})
;
})
}
//随访调查 列表
export
function
getFollowSurvey
(
params
=
{})
{
...
...
@@ -18,7 +18,7 @@ export function getFollowSurvey(params = {}) {
url
:
"
/disease-data/follow/survey
"
,
method
:
"
get
"
,
params
,
})
;
})
}
///////////////审核质控/////////////////////
//随访已审核列表
...
...
@@ -27,7 +27,7 @@ export function getFollowCheck(params = {}) {
url
:
"
/disease-data/dataCheck/follow/check
"
,
method
:
"
get
"
,
params
,
})
;
})
}
//随访待审核列表
export
function
getFollowUncheck
(
params
=
{})
{
...
...
@@ -35,19 +35,19 @@ export function getFollowUncheck(params = {}) {
url
:
"
/disease-data/dataCheck/follow/unCheck
"
,
method
:
"
get
"
,
params
,
})
;
})
}
//随访病例待审核(详情数据)
export
function
getFollowUnCheckDetail
(
id
)
{
return
request
({
url
:
`/disease-data/dataCheck/follow/unCheck/detail/
${
id
}
`
,
method
:
"
get
"
,
})
;
})
}
//随访病例审核
export
function
putFollowCheck
(
data
=
{})
{
return
request
({
url
:
"
/disease-data/dataCheck/follow/check
"
,
url
:
"
/disease-data/dataCheck/follow/
un
check
"
,
method
:
"
put
"
,
data
,
})
...
...
@@ -59,4 +59,13 @@ export function putFollowCheckAdvice(data = {}) {
method
:
"
put
"
,
data
,
})
}
\ No newline at end of file
}
// 随访查询详情list
export
function
getFollowRecord
(
params
=
{})
{
return
request
({
url
:
"
/disease-data/follow/search/detail
"
,
method
:
"
get
"
,
params
,
})
}
src/assets/img/Home/download.png
0 → 100644
View file @
e7cc4f5a
604 Bytes
src/assets/img/Home/file.png
0 → 100644
View file @
e7cc4f5a
507 Bytes
src/assets/img/Home/trustee.png
0 → 100644
View file @
e7cc4f5a
260 KB
src/components/FormComponents/CustomForm/FormItemText.vue
View file @
e7cc4f5a
...
...
@@ -76,7 +76,8 @@ export default {
},
methods
:
{
handleUnionName
(
v
)
{
return
this
.
unionLists
.
filter
((
e
)
=>
e
.
id
==
v
)[
0
].
unionName
const
union
=
this
.
unionList
.
find
((
e
)
=>
e
.
id
==
v
)
||
{}
return
union
.
unionName
||
""
},
},
filters
:
{
...
...
src/views/Home/index.vue
View file @
e7cc4f5a
<
template
>
<div
id=
"con"
>
<div
class=
"top flex"
>
<div
class=
"left box"
>
<video
:src=
"videoSrc"
controls
class=
"video"
/>
</div>
<!-- 新闻会议tab -->
<div
class=
"right box tabbox videoboxs"
>
<el-tabs
v-model=
"curTab"
@
tab-click=
"handleClick"
>
<el-tab-pane
v-for=
"(e, index) in tabList"
:key=
"index"
:label=
"e.title"
:name=
"index + 1 + ''"
>
<ul
class=
"tabslist"
>
<li
v-for=
"(item, index) in noticeList"
:key=
"index"
title=
"点击查看pdf文件"
@
click=
"setPdf(item)"
>
<div
class=
"left"
>
<div
class=
"circle"
></div>
{{
item
.
articleTitle
}}
</div>
<div
class=
"right"
>
{{
item
.
createTime
}}
</div>
</li>
</ul>
</el-tab-pane>
</el-tabs>
</div>
</div>
<!-- 联盟地图 -->
<div
class=
"dataAnalysis map_box"
>
<div
class=
"flex"
>
<div
class=
"left box cenbox"
>
<div
class=
"box_title text-center"
>
联盟地图
</div>
<!--
<img
class=
"map"
src=
"~@/assets/img/Home/map.png"
alt=
""
/>
-->
<Map></Map>
<Notice
v-show=
"isNotice"
></Notice>
<div
v-show=
"!isNotice"
>
<div
class=
"top flex"
>
<div
class=
"left box"
>
<video
:src=
"videoSrc"
controls
class=
"video"
/>
</div>
<div
class=
"right box tabbox"
style=
"height: 458px"
>
<el-tabs
v-model=
"exTab"
>
<!-- 新闻会议tab -->
<div
class=
"right box tabbox videoboxs"
>
<el-tabs
v-model=
"curTab"
@
tab-click=
"handleClick"
>
<el-tab-pane
v-for=
"(e, index) in
example
"
v-for=
"(e, index) in
tabList
"
:key=
"index"
:label=
"e.title"
:name=
"
e.title
"
:name=
"
index + 1 + ''
"
>
<ul
class=
"tabslist"
style=
"height: 380px"
:loading=
"listLoading"
>
<ul
class=
"tabslist"
>
<li
v-for=
"(item, index) in
exampl
eList"
v-for=
"(item, index) in
notic
eList"
:key=
"index"
title=
"点击查看pdf文件"
@
click=
"setPdf(item)"
...
...
@@ -60,145 +26,187 @@
<div
class=
"circle"
></div>
{{
item
.
articleTitle
}}
</div>
<div
class=
"right"
>
{{
item
.
createTime
}}
</div>
<div
class=
"right"
>
{{
item
.
createTime
}}
11
</div>
</li>
</ul>
</el-tab-pane>
</el-tabs>
</div>
</div>
</div>
<!-- 机构排名 -->
<div
class=
"dataAnalysis"
style=
"background: #fff"
>
<div
class=
"flex"
style=
"margin-bottom: 0px"
>
<div
class=
"box cenbox cenboxs"
>
<div
class=
"range left_range"
>
<div
class=
"text-center"
>
<span
class=
"range_title text-center"
>
累计上报合格病例数机构排名
</span>
</div>
<div
class=
"rangecontent"
>
<div
class=
"top20"
></div>
<ul
class=
"rangeList"
>
<li
v-for=
"(item, index) in rangeList"
:key=
"index"
:style=
"
{
color: index
<
3
?
'
#4E68FF
'
:
'
#333333
',
alignSelf:
index
>
9 ? 'flex-end' : '',
}"
<!-- 联盟地图 -->
<div
class=
"dataAnalysis map_box"
>
<div
class=
"flex"
>
<div
class=
"left box cenbox"
>
<div
class=
"box_title text-center"
>
联盟地图
</div>
<!--
<img
class=
"map"
src=
"~@/assets/img/Home/map.png"
alt=
""
/>
-->
<Map></Map>
</div>
<div
class=
"right box tabbox"
style=
"height: 458px"
>
<el-tabs
v-model=
"exTab"
>
<el-tab-pane
v-for=
"(e, index) in example"
:key=
"index"
:label=
"e.title"
:name=
"e.title"
>
<ul
class=
"tabslist"
style=
"height: 380px"
:loading=
"listLoading"
>
<div>
{{
index
+
1
}}
</div>
<div>
{{
item
.
unionName
}}
</div>
<div>
{{
item
.
nums
}}
</div>
</li>
</ul>
</div>
<li
v-for=
"(item, index) in exampleList"
:key=
"index"
title=
"点击查看pdf文件"
@
click=
"setPdf(item)"
>
<div
class=
"left"
>
<div
class=
"circle"
></div>
{{
item
.
articleTitle
}}
</div>
<div
class=
"right"
>
{{
item
.
createTime
}}
</div>
</li>
</ul>
</el-tab-pane>
</el-tabs>
</div>
<div
class=
"range"
>
<div
class=
"text-center"
>
<span
class=
"range_title text-center"
>
近90天上报量机构排名
</span>
</div>
</div>
<!-- 机构排名 -->
<div
class=
"dataAnalysis"
style=
"background: #fff"
>
<div
class=
"flex"
style=
"margin-bottom: 0px"
>
<div
class=
"box cenbox cenboxs"
>
<div
class=
"range left_range"
>
<div
class=
"text-center"
>
<span
class=
"range_title text-center"
>
累计上报合格病例数机构排名
</span>
</div>
<div
class=
"rangecontent"
>
<div
class=
"top20"
></div>
<ul
class=
"rangeList"
>
<li
v-for=
"(item, index) in rangeList"
:key=
"index"
:style=
"
{
color: index
<
3
?
'
#4E68FF
'
:
'
#333333
',
alignSelf:
index
>
9 ? 'flex-end' : '',
}"
>
<div>
{{
index
+
1
}}
</div>
<div>
{{
item
.
unionName
}}
</div>
<div>
{{
item
.
nums
}}
</div>
</li>
</ul>
</div>
</div>
<div
class=
"rangecontent"
>
<div
class=
"top10"
></div>
<ul
class=
"rangeList"
>
<li
v-for=
"(item, index) in curQuarterList"
:key=
"index"
:style=
"
{
color: index
<
3
?
'
#4E68FF
'
:
'
#333333
',
}"
<div
class=
"range"
>
<div
class=
"text-center"
>
<span
class=
"range_title text-center"
>
近90天上报量机构排名
</span
>
<div>
{{
index
+
1
}}
</div>
<div>
{{
item
.
unionName
}}
</div>
<div>
{{
item
.
nums
}}
</div>
</li>
</ul>
</div>
<div
class=
"rangecontent"
>
<div
class=
"top10"
></div>
<ul
class=
"rangeList"
>
<li
v-for=
"(item, index) in curQuarterList"
:key=
"index"
:style=
"
{
color: index
<
3
?
'
#4E68FF
'
:
'
#333333
',
}"
>
<div>
{{
index
+
1
}}
</div>
<div>
{{
item
.
unionName
}}
</div>
<div>
{{
item
.
nums
}}
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 健康科普 -->
<div
class=
"healthPopularization"
>
<div
class=
"title_box"
>
<div
class=
"title"
>
健康科普
</div>
<div
class=
"empty"
></div>
<!-- 健康科普 -->
<div
class=
"healthPopularization"
>
<div
class=
"title_box"
>
<div
class=
"title"
>
健康科普
</div>
<div
class=
"empty"
></div>
</div>
<ul
class=
"typeList"
>
<li
v-for=
"(item, index) in typeList"
:key=
"index"
:style=
"
{ backgroundImage: 'url(' + item.src + ')' }"
@click="
$router.push({
path: '/healthpopularization',
query: { tabIndex: index },
})
"
>
{{
item
.
name
}}
</li>
</ul>
</div>
<ul
class=
"typeList"
>
<li
v-for=
"(item, index) in typeList"
:key=
"index"
:style=
"
{ backgroundImage: 'url(' + item.src + ')' }"
@click="
$router.push({
path: '/healthpopularization',
query: { tabIndex: index },
})
"
>
{{
item
.
name
}}
</li>
</ul>
</div>
<!-- 科学研究 -->
<div
class=
"scientificresearch"
>
<div
class=
"title_box"
>
<div
class=
"title"
>
科学研究
</div>
<div
class=
"empty"
></div>
</div>
<ul
class=
"researchList"
>
<li
v-for=
"(item, index) in researchList"
:key=
"index"
@
click=
"
$router.push(
{
path: '/scientificresearch',
query: { tabIndex: index },
})
"
>
{{
item
}}
</li>
</ul>
</div>
<!-- 粘性定位 -->
<div
v-show=
"showFixed"
class=
"fixed_box"
>
<ul
class=
"f_list"
>
<el-popover
popper-class=
"poperbackground"
v-for=
"(item, index) in rigBarList"
:key=
"index"
placement=
"left-start"
title=
""
width=
"200"
trigger=
"hover"
:content=
"item.content"
>
<!-- 科学研究 -->
<div
class=
"scientificresearch"
>
<div
class=
"title_box"
>
<div
class=
"title"
>
科学研究
</div>
<div
class=
"empty"
></div>
</div>
<ul
class=
"researchList"
>
<li
slot=
"reference"
:style=
"
{ background: fixIndex == index ? '#4e68ff' : '#fff' }"
@mouseenter="fixIndex = index"
@mouseleave="fixIndex = -1"
v-for=
"(item, index) in researchList"
:key=
"index"
@
click=
"
$router.push(
{
path: '/scientificresearch',
query: { tabIndex: index },
})
"
>
<template
v-if=
"fixIndex == index"
>
<img
:src=
"item.src2"
alt=
""
/><span
style=
"color: #fff"
>
{{
item
.
name
}}
</span>
</
template
>
<
template
v-else
>
<img
:src=
"item.src1"
alt=
""
/><span>
{{
item
.
name
}}
</span>
</
template
>
{{
item
}}
</li>
</el-popover>
</ul>
</ul>
</div>
<!-- 粘性定位 -->
<div
v-show=
"showFixed"
class=
"fixed_box"
>
<ul
class=
"f_list"
>
<el-popover
popper-class=
"poperbackground"
v-for=
"(item, index) in rigBarList"
:key=
"index"
placement=
"left-start"
title=
""
width=
"200"
trigger=
"hover"
:content=
"item.content"
>
<li
slot=
"reference"
:style=
"
{ background: fixIndex == index ? '#4e68ff' : '#fff' }"
@mouseenter="fixIndex = index"
@mouseleave="fixIndex = -1"
>
<template
v-if=
"fixIndex == index"
>
<img
:src=
"item.src2"
alt=
""
/><span
style=
"color: #fff"
>
{{
item
.
name
}}
</span>
</
template
>
<
template
v-else
>
<img
:src=
"item.src1"
alt=
""
/><span>
{{
item
.
name
}}
</span>
</
template
>
</li>
</el-popover>
</ul>
</div>
</div>
<!-- 弹窗 -->
<pdf-dialog
ref=
"pdfDialog"
...
...
@@ -212,10 +220,12 @@ import { getRankTotal, getCurrentQuarter } from "@/api/Home"
import
{
articleList
}
from
"
@/api/operation-management
"
import
Map
from
"
./Map
"
import
PdfDialog
from
"
./PdfDialog/index.vue
"
import
Notice
from
"
./notice/index.vue
"
export
default
{
components
:
{
Map
,
PdfDialog
},
components
:
{
Map
,
PdfDialog
,
Notice
},
data
()
{
return
{
isNotice
:
false
,
curPdf
:
{},
pdfSrc
:
""
,
fixIndex
:
-
1
,
...
...
@@ -311,6 +321,10 @@ export default {
},
methods
:
{
setPdf
(
item
)
{
if
(
item
.
moduleType
===
2
)
{
this
.
isNotice
=
true
return
}
this
.
$refs
.
pdfDialog
.
showPdf
=
true
this
.
curPdf
=
item
this
.
pdfSrc
=
...
...
src/views/Home/notice/components/AllianceApply.vue
0 → 100644
View file @
e7cc4f5a
<
template
>
<div
class=
"container"
>
<h2>
申请加入国家消化道早癌防治中心联盟
</h2>
<div
class=
"sub_title"
>
申请阶段
</div>
<div
class=
"content"
>
<h3>
1、下载申请材料
</h3>
<div
class=
"upload_item"
v-for=
"item in list"
:key=
"item.id"
>
<div
class=
"img-file"
>
<img
src=
"@/assets/img/Home/file.png"
alt=
""
/>
</div>
<div
style=
"float: left"
class=
"upload_label"
>
<strong>
{{
item
.
label
}}
</strong>
<span>
{{
item
.
size
}}
</span>
</div>
<div
class=
"img-load"
@
click=
"download(item)"
>
<img
src=
"@/assets/img/Home/download.png"
alt=
""
/>
</div>
</div>
<h3>
2、发送至邮箱
</h3>
<p>
service@gecachina.cn
</p>
<h3>
3、定期参与入盟培训
</h3>
<p>
培训内容:新系统使用、筛查方法及医患沟通等
</p>
<h3>
4、材料认证 - 开通账户
</h3>
<p>
a. 回复确认入盟邀请函
</p>
<p>
b. 账户开通:门诊、体检、、社区
</p>
<h3>
5、数据审核
</h3>
<p>
a.
按要求上传足量病例后,联盟官网将公示入盟医院:三甲医院需上传100例数据,非三甲医院需上传50例
</p>
<p>
b. 目前已入联盟但未公示的医院,需补充病例才可公示
</p>
<h3>
6、官网公示 - 申请成功
</h3>
</div>
<div
class=
"sub_title"
>
运行阶段
</div>
<div
class=
"content"
>
<h3>
1、定期沟通会 - 数据上传
</h3>
<p>
a. 根据指导建议做出积极响应:制定后续跟进计划
</p>
<p>
b. 已在官网公示名单中的医院将定期开启回溯重申,如不合格将从名单中摘除
</p>
<h3>
2、正式授牌
</h3>
<p>
正式入盟后需要定期上传筛查数据(高质量且有效)才可获得授牌
</p>
</div>
</div>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
list
:
[
{
id
:
1
,
url
:
"
http://www.ncrcgastro.org/d/file/coordination/apply/2020-05-27/67235e21623910e9e0c04f23fa3314d6.docx
"
,
label
:
"
国家消化道早癌防治中心”(早期胃癌筛查项目)申请表.docx
"
,
size
:
"
35.7 KB
"
,
},
{
id
:
2
,
url
:
"
http://www.ncrcgastro.org/d/file/coordination/apply/2019-06-05/3ecfa10aa09afdf73526d41cda151d0f.pdf
"
,
label
:
"
早期胃癌筛查项目 申请表填写标准(1).pdf
"
,
size
:
"
351 KB
"
,
},
{
id
:
3
,
url
:
"
http://www.ncrcgastro.org/d/file/coordination/apply/2019-06-05/a18cf8ea29d870da693ea8bd79d2ce33.docx
"
,
label
:
"
信息系统账号申请表(2).docx
"
,
size
:
"
22 KB
"
,
},
{
id
:
4
,
url
:
"
http://www.ncrcgastro.org/d/file/coordination/apply/2019-06-12/206be4b4d462aa5812dbba723e69f518.docx
"
,
label
:
"
GECA联盟申请Q&A问答汇总.docx
"
,
size
:
"
216 KB
"
,
},
],
}
},
methods
:
{
download
({
url
,
label
})
{
const
el
=
document
.
createElement
(
"
a
"
)
el
.
download
=
label
el
.
target
=
"
_blank
"
el
.
style
.
display
=
"
none
"
el
.
href
=
url
document
.
body
.
appendChild
(
el
)
el
.
click
()
URL
.
revokeObjectURL
(
el
.
href
)
document
.
body
.
removeChild
(
el
)
},
},
mounted
()
{},
watch
:
{},
}
</
script
>
<
style
lang=
"scss"
scoped
>
.container
{
padding
:
30px
10px
;
h2
{
font-weight
:
bold
;
font-size
:
28px
;
text-align
:
center
;
height
:
36px
;
font-size
:
32px
;
font-family
:
AlibabaPuHuiTiB
;
letter-spacing
:
3px
;
margin-bottom
:
50px
;
color
:
#4e68ff
;
line-height
:
36px
;
}
.content
{
padding-left
:
30px
;
letter-spacing
:
1px
;
h3
{
font-size
:
18px
;
font-weight
:
bold
;
color
:
#333333
;
line-height
:
50px
;
margin-top
:
10px
;
}
p
{
line-height
:
20px
;
padding-left
:
15px
;
}
}
.upload_item
{
width
:
780px
;
height
:
60px
;
background
:
#f5f5f5
;
border-radius
:
8px
;
line-height
:
60px
;
overflow
:
hidden
;
margin-bottom
:
20px
;
.img-file
{
float
:
left
;
padding
:
0
10px
;
width
:
60px
;
line-height
:
60px
;
img
{
transform
:
translateY
(
10px
);
width
:
40px
;
height
:
40px
;
}
}
.upload_label
{
float
:
left
;
}
.img-load
{
float
:
right
;
width
:
60px
;
height
:
60px
;
background-color
:
#ebeeff
;
text-align
:
center
;
cursor
:
pointer
;
img
{
transform
:
translateY
(
10px
);
width
:
28px
;
height
:
28px
;
}
}
strong
{
color
:
#333333
;
font-size
:
16px
;
margin-right
:
10px
;
}
}
.sub_title
{
font-size
:
18px
;
font-weight
:
bold
;
color
:
#333333
;
margin
:
10px
;
padding-left
:
15px
;
letter-spacing
:
2px
;
position
:
relative
;
&
:
:
before
{
content
:
" "
;
border-left
:
4px
solid
#4e68ff
;
position
:
absolute
;
height
:
18px
;
top
:
4px
;
left
:
0
;
}
}
}
</
style
>
src/views/Home/notice/components/HospitalsList.vue
0 → 100644
View file @
e7cc4f5a
<
template
>
<div
class=
"container"
>
<h2>
GECA联盟理事及医院名单
</h2>
<div
v-for=
"row in list"
:key=
"row.label"
>
<div
class=
"sub_title"
>
{{
row
.
label
}}
</div>
<div
class=
"content"
>
<span
v-for=
"item in row.items"
:key=
"item"
>
{{
item
}}
</span>
</div>
</div>
<div
style=
"padding-left: 48px"
>
<img
src=
"@/assets/img/Home/trustee.png"
alt=
""
/>
</div>
<div
class=
"sub_title"
>
CEGA联盟医院名单
</div>
<el-table
:data=
"tableData"
:span-method=
"objectSpanMethod"
border
>
<el-table-column
width=
"60"
type=
"index"
>
<template
#header
>
<div>
序号
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"s"
label=
"省份/直辖市"
min-width=
"160px"
>
</el-table-column>
<el-table-column
prop=
"n"
label=
"医院名称"
align=
"left"
min-width=
"340px"
>
</el-table-column>
<el-table-column
prop=
"a"
label=
"授牌医院"
min-width=
"110px"
class-name=
"mark"
>
</el-table-column>
<el-table-column
prop=
"t"
label=
"填报数据医院"
min-width=
"140px"
class-name=
"mark"
>
</el-table-column>
</el-table>
</div>
</template>
<
script
>
import
tableData
from
"
./tpl
"
export
default
{
data
()
{
return
{
list
:
[
{
label
:
"
名誉理事长
"
,
items
:
[
"
白书忠
"
,
"
程书钧
"
,
"
樊代明
"
,
"
赫捷
"
,
"
林东昕
"
,
"
沈洪兵
"
,
"
沈祖尧
"
,
"
王陇德
"
,
"
于金明
"
,
"
詹启敏
"
,
"
张雁灵
"
,
"
郑树
"
,
],
},
{
label
:
"
顾问
"
,
items
:
[
"
姜庆五
"
,
"
陆星华
"
,
"
夏玉亭
"
,
"
游苏宁
"
,
"
于中麟
"
,
"
袁媛
"
,
"
张齐联
"
,
"
张子琪
"
,
],
},
{
label
:
"
副理事长
"
,
items
:
[
"
曹志强
"
,
"
曾强
"
,
"
陈刚
"
,
"
陈广域
"
,
"
陈昱湖
"
,
"
陈薇娜
"
,
"
陈卫昌
"
,
"
丁俊峰
"
,
"
房静远
"
,
"
冯佶
"
,
"
高峰
"
,
"
郭学刚
"
,
"
何纳
"
,
"
吉朋松
"
,
"
季加孚
"
,
"
金震东
"
,
"
兰平
"
,
"
李少辉
"
,
"
李挺
"
,
"
李汛
"
,
"
李延青
"
,
"
廖专
"
,
"
令孤恩强
"
,
"
刘峰
"
,
"
刘小梅
"
,
"
吕宾
"
,
"
马进
"
,
"
唐承薇
"
,
"
王贵齐
"
,
"
王磊
"
,
"
王立东
"
,
"
邬堂春
"
,
"
吴开春
"
,
"
徐国良
"
,
"
杨爱明
"
,
"
杨嘉林
"
,
"
杨民
"
,
"
杨云生
"
,
"
姚俊杰
"
,
"
张澍田
"
,
"
张晓华
"
,
"
周丽雅
"
,
"
邹晓平
"
,
],
},
{
label
:
"
秘书长
"
,
items
:
[
"
杜奕奇
"
],
},
{
label
:
"
常务副秘书长
"
,
items
:
[
"
柏愚
"
,
"
蔡全才
"
,
"
王洛伟
"
],
},
{
label
:
"
副秘书长
"
,
items
:
[
"
柴宁莉
"
,
"
常佳
"
,
"
董莉君
"
,
"
冀明
"
,
"
李方
"
,
"
李锐
"
,
"
钱朝斌
"
,
"
颜杰
"
,
"
姚方
"
,
"
尹畅
"
,
"
张磊
"
,
],
},
{
label
:
"
秘书
"
,
items
:
[
"
陈丽竹
"
,
"
崔勇
"
,
"
杜寒
"
,
"
郝阳帆
"
,
"
胡良皞
"
,
"
胡亚琴
"
,
"
王天骄
"
,
"
吴萍
"
,
"
辛磊
"
,
"
徐美玲
"
,
"
张辉
"
,
"
张颖
"
,
],
},
{
label
:
"
常务理事
"
,
},
],
tableData
,
}
},
methods
:
{
objectSpanMethod
({
row
,
column
,
rowIndex
,
columnIndex
})
{
if
(
columnIndex
===
1
)
{
if
(
row
.
span
)
{
return
{
rowspan
:
row
.
span
,
colspan
:
1
,
}
}
else
{
return
{
rowspan
:
0
,
colspan
:
0
,
}
}
}
},
},
mounted
()
{},
watch
:
{},
}
</
script
>
<
style
lang=
"scss"
scoped
>
.container
{
padding
:
30px
10px
;
::v-deep
.el-table
{
margin-top
:
20px
;
margin-left
:
20px
;
width
:
820px
;
font-size
:
16px
;
td
.mark
.cell
{
font-weight
:
bold
;
color
:
#4e68ff
;
}
td
.is-left
{
text-align
:
left
;
}
}
h2
{
font-weight
:
bold
;
font-size
:
28px
;
text-align
:
center
;
height
:
36px
;
font-size
:
32px
;
font-family
:
AlibabaPuHuiTiB
;
letter-spacing
:
3px
;
margin-bottom
:
50px
;
color
:
#4e68ff
;
line-height
:
36px
;
}
.sub_title
{
font-size
:
18px
;
font-weight
:
bold
;
color
:
#333333
;
margin
:
10px
20px
;
padding-left
:
15px
;
letter-spacing
:
2px
;
position
:
relative
;
&
:
:
before
{
content
:
" "
;
border-left
:
4px
solid
#4e68ff
;
position
:
absolute
;
height
:
18px
;
top
:
4px
;
left
:
0
;
}
}
.content
{
width
:
800px
;
font-size
:
16px
;
font-family
:
AlibabaPuHuiTiR
;
color
:
#333333
;
line-height
:
35px
;
padding-left
:
50px
;
padding-bottom
:
10px
;
span
{
display
:
inline-block
;
width
:
65px
;
margin-right
:
50px
;
text-align
:
justify
;
text-align-last
:
justify
;
}
}
}
</
style
>
src/views/Home/notice/components/tpl.js
0 → 100644
View file @
e7cc4f5a
export
default
[
//1
{
n
:
"
北京大学第三医院
"
,
s
:
"
北京市
"
,
a
:
"
✔
"
,
span
:
11
},
{
n
:
"
北京京煤集团总医院
"
,
s
:
"
北京市
"
},
{
n
:
"
北京市和平里医院
"
,
s
:
"
北京市
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
北京协和医院
"
,
s
:
"
北京市
"
,
a
:
"
✔
"
},
{
n
:
"
北京燕化医院
"
,
s
:
"
北京市
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
陆军总医院
"
,
s
:
"
北京市
"
,
a
:
"
✔
"
},
{
n
:
"
清华大学第一附属医院
"
,
s
:
"
北京市
"
,
a
:
"
✔
"
},
{
n
:
"
首都医科大学附属北京天坛医院
"
,
s
:
"
北京市
"
,
a
:
"
✔
"
},
{
n
:
"
首都医科大学附属北京友谊医院
"
,
s
:
"
北京市
"
,
a
:
"
✔
"
},
{
n
:
"
中国人民解放军总医院
"
,
s
:
"
北京市
"
,
a
:
"
✔
"
},
{
n
:
"
中国医学科学院肿瘤医院
"
,
s
:
"
北京市
"
,
a
:
"
✔
"
},
//12
{
n
:
"
复旦大学附属中山医院
"
,
s
:
"
上海市
"
,
a
:
"
✔
"
,
span
:
10
},
{
n
:
"
上海交通大学医学院附属仁济医院
"
,
s
:
"
上海市
"
,
a
:
"
✔
"
},
{
n
:
"
上海交通大学医学院附属瑞金医院
"
,
s
:
"
上海市
"
,
a
:
"
✔
"
},
{
n
:
"
上海市第八人民医院
"
,
s
:
"
上海市
"
},
{
n
:
"
上海市光华中西医结合医院
"
,
s
:
"
上海市
"
,
a
:
"
✔
"
},
{
n
:
"
上海市浦东医院
"
,
s
:
"
上海市
"
,
a
:
"
✔
"
},
{
n
:
"
上海市普陀区中心医院
"
,
s
:
"
上海市
"
},
{
n
:
"
上海市松江区中心医院
"
,
s
:
"
上海市
"
,
a
:
"
✔
"
},
{
n
:
"
上海长海医院
"
,
s
:
"
上海市
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
同济大学附属同济医院
"
,
s
:
"
上海市
"
,
a
:
"
✔
"
},
//22
{
n
:
"
陆军军医大学大坪医院
"
,
s
:
"
重庆市
"
,
a
:
"
✔
"
,
span
:
7
},
{
n
:
"
陆军军医大学西南医院
"
,
s
:
"
重庆市
"
,
a
:
"
✔
"
},
{
n
:
"
陆军军医大学新桥医院
"
,
s
:
"
重庆市
"
,
a
:
"
✔
"
},
{
n
:
"
沙坪坝区人民医院
"
,
s
:
"
重庆市
"
},
{
n
:
"
重庆市中医院
"
,
s
:
"
重庆市
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
重庆市肿瘤医院
"
,
s
:
"
重庆市
"
},
{
n
:
"
重庆医科大学附属第二医院
"
,
s
:
"
重庆市
"
,
a
:
"
✔
"
},
//29
{
n
:
"
安徽淮南朝阳医院
"
,
s
:
"
安徽省
"
,
span
:
10
},
{
n
:
"
安徽省蚌埠医学院第二附属医院
"
,
s
:
"
安徽省
"
},
{
n
:
"
安徽省立医院
"
,
s
:
"
安徽省
"
},
{
n
:
"
安徽医科大学第一附属医院
"
,
s
:
"
安徽省
"
,
a
:
"
✔
"
},
{
n
:
"
安庆市立医院
"
,
s
:
"
安徽省
"
,
a
:
"
✔
"
},
{
n
:
"
蚌埠医学院第一附属医院
"
,
s
:
"
安徽省
"
,
a
:
"
✔
"
},
{
n
:
"
淮北市人民医院
"
,
s
:
"
安徽省
"
,
t
:
"
✔
"
},
{
n
:
"
皖南医学院第二附属医院
"
,
s
:
"
安徽省
"
,
t
:
"
✔
"
},
{
n
:
"
皖南医学院弋矶山医院
"
,
s
:
"
安徽省
"
,
a
:
"
✔
"
},
{
n
:
"
中国人民解放军海军安庆医院
"
,
s
:
"
安徽省
"
},
//39
{
n
:
"
福建省老年医院
"
,
s
:
"
福建省
"
,
span
:
10
},
{
n
:
"
福建省立医院南院(省立金山医院)
"
,
s
:
"
福建省
"
,
t
:
"
✔
"
},
{
n
:
"
福建省肿瘤医院
"
,
s
:
"
福建省
"
,
a
:
"
✔
"
},
{
n
:
"
福建医科大学附属第二医院
"
,
s
:
"
福建省
"
},
{
n
:
"
南京军区福州总医院
"
,
s
:
"
福建省
"
,
a
:
"
✔
"
},
{
n
:
"
宁德市医院
"
,
s
:
"
福建省
"
},
{
n
:
"
宁德市中医院
"
,
s
:
"
福建省
"
},
{
n
:
"
三明市第一医院
"
,
s
:
"
福建省
"
},
{
n
:
"
石狮市总医院
"
,
s
:
"
福建省
"
,
a
:
"
✔
"
},
{
n
:
"
漳州正兴医院
"
,
s
:
"
福建省
"
},
// 49
{
n
:
"
兰州大学第一医院
"
,
s
:
"
甘肃省
"
,
a
:
"
✔
"
,
span
:
3
},
{
n
:
"
兰州市第一人民医院
"
,
s
:
"
甘肃省
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
武威肿瘤医院
"
,
s
:
"
甘肃省
"
,
a
:
"
✔
"
},
//52
{
n
:
"
潮州市人民医院
"
,
s
:
"
广东省
"
,
span
:
43
},
{
n
:
"
东源县中医院
"
,
s
:
"
广东省
"
},
{
n
:
"
佛冈县人民医院
"
,
s
:
"
广东省
"
},
{
n
:
"
佛山市第二人民医院
"
,
s
:
"
广东省
"
},
{
n
:
"
佛山市中医院
"
,
s
:
"
广东省
"
},
{
n
:
"
广东韶关市第一人民医院
"
,
s
:
"
广东省
"
},
{
n
:
"
广东省佛山市南海区人民医院
"
,
s
:
"
广东省
"
},
{
n
:
"
广东省惠州市第一人民医院
"
,
s
:
"
广东省
"
},
{
n
:
"
广东省惠州市中心人民医院
"
,
s
:
"
广东省
"
,
t
:
"
✔
"
},
{
n
:
"
广东省罗定市人民医院
"
,
s
:
"
广东省
"
},
{
n
:
"
广东省人民医院
"
,
s
:
"
广东省
"
},
{
n
:
"
广东省人民医院珠海医院
"
,
s
:
"
广东省
"
},
{
n
:
"
广东省四会市人民医院
"
,
s
:
"
广东省
"
},
{
n
:
"
广东省肇庆市高要区人民医院
"
,
s
:
"
广东省
"
},
{
n
:
"
广东省中山市黄圃人民医院
"
,
s
:
"
广东省
"
},
{
n
:
"
广东省中医院珠海医院
"
,
s
:
"
广东省
"
},
{
n
:
"
广州市第一人民医院
"
,
a
:
"
✔
"
,
s
:
"
广东省
"
},
{
n
:
"
广州市番禺区中心医院
"
,
a
:
"
✔
"
,
s
:
"
广东省
"
},
{
n
:
"
广州市花都区人民医院
"
,
s
:
"
广东省
"
},
{
n
:
"
广州市中西医结合医院
"
,
s
:
"
广东省
"
},
{
n
:
"
广州医科大学附属第二医院
"
,
a
:
"
✔
"
,
s
:
"
广东省
"
,
t
:
"
✔
"
},
{
n
:
"
广州医科大学附属第五医院
"
,
a
:
"
✔
"
,
s
:
"
广东省
"
},
{
n
:
"
广州中医药大学第一附属医院
"
,
s
:
"
广东省
"
},
{
n
:
"
怀集县人民医院
"
,
s
:
"
广东省
"
},
{
n
:
"
暨南大学附属第一医(广州华侨医院)
"
,
s
:
"
广东省
"
},
{
n
:
"
江门市中心医院
"
,
s
:
"
广东省
"
},
{
n
:
"
茂名市人民医院
"
,
a
:
"
✔
"
,
s
:
"
广东省
"
,
t
:
"
✔
"
},
{
n
:
"
南方医科大学南方医院
"
,
a
:
"
✔
"
,
s
:
"
广东省
"
,
t
:
"
✔
"
},
{
n
:
"
南方医科大学深圳医院
"
,
a
:
"
✔
"
,
s
:
"
广东省
"
},
{
n
:
"
南方医科大学珠江医院
"
,
s
:
"
广东省
"
},
{
n
:
"
清远市人民医院
"
,
s
:
"
广东省
"
,
a
:
"
✔
"
},
{
n
:
"
韶关市粤北人民医院
"
,
s
:
"
广东省
"
},
{
n
:
"
深圳市宝安第二人民医院(集团)
"
,
s
:
"
广东省
"
,
a
:
"
✔
"
},
{
n
:
"
深圳市罗湖区人民医院
"
,
s
:
"
广东省
"
},
{
n
:
"
中国人民解放军南部战区总医院
"
,
s
:
"
广东省
"
},
{
n
:
"
中山大学附属第二医院
"
,
s
:
"
广东省
"
},
{
n
:
"
中山大学附属第六医院
"
,
s
:
"
广东省
"
},
{
n
:
"
中山大学附属第五医院
"
,
s
:
"
广东省
"
},
{
n
:
"
中山大学附属第一医院
"
,
s
:
"
广东省
"
,
a
:
"
✔
"
},
{
n
:
"
中山市小榄人民医院
"
,
s
:
"
广东省
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
中信健康管理中心
"
,
s
:
"
广东省
"
,
a
:
"
✔
"
},
{
n
:
"
珠海市人民医院
"
,
s
:
"
广东省
"
,
t
:
"
✔
"
,
a
:
"
✔
"
},
{
n
:
"
遵义医学院第五附属珠海医院
"
,
s
:
"
广东省
"
},
// 95
{
n
:
"
贵州省第三人民医院
"
,
s
:
"
贵州省
"
,
span
:
4
},
{
n
:
"
贵州省医科大学附属医院
"
,
s
:
"
贵州省
"
},
{
n
:
"
贵州省肿瘤医院
"
,
s
:
"
贵州省
"
},
{
n
:
"
遵义医学院附属医院
"
,
s
:
"
贵州省
"
,
a
:
"
✔
"
},
// 99
{
n
:
"
海南省肿瘤医院
"
,
s
:
"
海南省
"
,
a
:
"
✔
"
,
span
:
1
},
// 100
{
n
:
"
哈励逊国际和平医院
"
,
s
:
"
河北省
"
,
span
:
7
},
{
n
:
"
邯郸市第一医院
"
,
s
:
"
河北省
"
},
{
n
:
"
邯郸市中心医院
"
,
s
:
"
河北省
"
},
{
n
:
"
河北省人民医院
"
,
s
:
"
河北省
"
,
a
:
"
✔
"
},
{
n
:
"
河北医科大学第二医院
"
,
s
:
"
河北省
"
,
a
:
"
✔
"
},
{
n
:
"
河北医科大学第三医院
"
,
s
:
"
河北省
"
,
a
:
"
✔
"
},
{
n
:
"
邢台医学高等专科学校第一附属医院
"
,
s
:
"
河北省
"
},
// 107
{
n
:
"
河南宏力医院
"
,
s
:
"
河南省
"
,
span
:
10
},
{
n
:
"
河南中医药大学第三附属医院
"
,
s
:
"
河南省
"
,
a
:
"
✔
"
},
{
n
:
"
黄河水利委员会黄河中心医院
"
,
s
:
"
河南省
"
,
a
:
"
✔
"
},
{
n
:
"
平煤神马医疗集团总医院
"
,
s
:
"
河南省
"
},
{
n
:
"
西峡县人民医院
"
,
s
:
"
河南省
"
},
{
n
:
"
新乡市第一人民医院
"
,
s
:
"
河南省
"
},
{
n
:
"
新乡医学院第一附属医院
"
,
s
:
"
河南省
"
,
a
:
"
✔
"
},
{
n
:
"
许昌市人民医院
"
,
s
:
"
河南省
"
},
{
n
:
"
郑州大学第五附属医院
"
,
s
:
"
河南省
"
,
a
:
"
✔
"
},
{
n
:
"
郑州颐和医院
"
,
s
:
"
河南省
"
},
// 117
{
n
:
"
大庆油田总医院
"
,
s
:
"
黑龙江省
"
,
span
:
15
,
a
:
"
✔
"
},
{
n
:
"
哈尔滨汽轮机厂医院
"
,
s
:
"
黑龙江省
"
},
{
n
:
"
哈尔滨医科大学附属第二医院
"
,
s
:
"
黑龙江省
"
},
{
n
:
"
哈尔滨医科大学附属第一医院
"
,
s
:
"
黑龙江省
"
,
a
:
"
✔
"
},
{
n
:
"
鹤岗鹤矿医院
"
,
s
:
"
黑龙江省
"
},
{
n
:
"
鹤岗市人民医院
"
,
s
:
"
黑龙江省
"
},
{
n
:
"
黑龙江省医院
"
,
s
:
"
黑龙江省
"
,
a
:
"
✔
"
},
{
n
:
"
黑龙江中医药大学附属第二医院
"
,
s
:
"
黑龙江省
"
},
{
n
:
"
鸡西矿业集团总医院
"
,
s
:
"
黑龙江省
"
},
{
n
:
"
鸡西人民医院
"
,
s
:
"
黑龙江省
"
},
{
n
:
"
佳木斯大学附属第一医院
"
,
s
:
"
黑龙江省
"
},
{
n
:
"
七台河市七煤医院
"
,
s
:
"
黑龙江省
"
},
{
n
:
"
七台河市人民医院
"
,
s
:
"
黑龙江省
"
},
{
n
:
"
双鸭山人民医院
"
,
s
:
"
黑龙江省
"
,
t
:
"
✔
"
},
{
n
:
"
双鸭山市双矿医院
"
,
s
:
"
黑龙江省
"
},
// 132
{
n
:
"
恩施土家族苗族自治州中心医院
"
,
span
:
20
,
s
:
"
湖北省
"
},
{
n
:
"
湖北民族学院附属民大医院
"
},
{
n
:
"
湖北省第三人民医院
"
},
{
n
:
"
湖北省建始县人民医院
"
},
{
n
:
"
华中科技大学同济医学院附属同济医院
"
},
{
n
:
"
华中科技大学同济医学院附属协和医院
"
},
{
n
:
"
荆门市第二人民医院
"
},
{
n
:
"
荆门市第一人民医院
"
},
{
n
:
"
荆门市中医医院
"
},
{
n
:
"
荆州市第一人民医院
"
},
{
n
:
"
荆州市中心医院
"
},
{
n
:
"
三峡大学附属仁和医院
"
},
{
n
:
"
十堰市人民医院
"
},
{
n
:
"
十堰市太和医院
"
},
{
n
:
"
武汉大学人民医院
"
,
a
:
"
✔
"
},
{
n
:
"
武汉大学中南医院
"
,
a
:
"
✔
"
},
{
n
:
"
武汉市中心医院
"
,
a
:
"
✔
"
},
{
n
:
"
宜昌市第一人民医院
"
},
{
n
:
"
宜昌市夷陵医院
"
},
{
n
:
"
宜昌市中心人民医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
// 152
{
n
:
"
南华大学附属第二医院
"
,
span
:
4
,
s
:
"
湖南省
"
},
{
n
:
"
南华大学附属第一医院
"
,
a
:
"
✔
"
},
{
n
:
"
中南大学湘雅二医院
"
,
a
:
"
✔
"
},
{
n
:
"
中南大学湘雅医院
"
},
// 156
{
n
:
"
吉林大学第一医院
"
,
span
:
3
,
s
:
"
吉林省
"
,
a
:
"
✔
"
},
{
n
:
"
吉林大学中日联谊医院
"
,
a
:
"
✔
"
},
{
n
:
"
长春市中心医院
"
,
a
:
"
✔
"
},
// 159
{
n
:
"
鹅湖人民医院
"
,
s
:
"
江苏省
"
,
a
:
"
✔
"
,
span
:
24
},
{
n
:
"
江南大学附属医院
"
,
a
:
"
✔
"
},
{
n
:
"
江苏省第二中医院
"
},
{
n
:
"
江苏省人民医院
"
,
a
:
"
✔
"
},
{
n
:
"
江阴市人民医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
昆山市第三人民医院
"
,
t
:
"
✔
"
},
{
n
:
"
昆山中医医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
连云港市第二人民医院
"
},
{
n
:
"
南京鼓楼医院
"
,
a
:
"
✔
"
},
{
n
:
"
南京市第一医院
"
,
a
:
"
✔
"
},
{
n
:
"
南京医科大学第二附属医院
"
,
a
:
"
✔
"
},
{
n
:
"
苏州大学附属第一医院
"
,
a
:
"
✔
"
},
{
n
:
"
泰康仙林鼓楼医院
"
,
t
:
"
✔
"
},
{
n
:
"
无锡市第二人民医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
无锡市第二中医医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
无锡市第三人民医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
无锡市人民医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
无锡市锡山人民医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
无锡市中医医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
徐州医科大学附属医院
"
,
a
:
"
✔
"
},
{
n
:
"
盐城市大丰同仁医院
"
},
{
n
:
"
宜兴市人民医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
镇江市第一人民医院
"
,
a
:
"
✔
"
},
{
n
:
"
中国人民解放军第101医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
//183
{
n
:
"
赣南医学院第一附属医院
"
,
s
:
"
江西省
"
,
span
:
13
,
a
:
"
✔
"
},
{
n
:
"
赣州市人民医院
"
,
a
:
"
✔
"
},
{
n
:
"
江西省九江学院附属医院
"
},
{
n
:
"
南昌大学第一附属医院
"
,
a
:
"
✔
"
},
{
n
:
"
南昌市第一医院
"
},
{
n
:
"
萍乡市人民医院
"
,
t
:
"
✔
"
},
{
n
:
"
上饶市立医院
"
},
{
n
:
"
上饶市人民医院
"
},
{
n
:
"
宜春市人民医院
"
},
{
n
:
"
鹰潭市人民医院
"
},
{
n
:
"
鹰潭市中医院
"
},
{
n
:
"
于都县人民医院
"
,
a
:
"
✔
"
},
{
n
:
"
中国人民解放军联勤保障部队第九〇八医院
"
},
//196
{
n
:
"
本溪市中心医院
"
,
s
:
"
辽宁省
"
,
span
:
3
},
{
n
:
"
营口市中心医院
"
},
{
n
:
"
中国医科大学附属盛京医院
"
,
a
:
"
✔
"
},
//199
{
n
:
"
青海大学附属医院
"
,
s
:
"
青海省
"
,
span
:
1
},
//200
{
n
:
"
滨州医学院附属医院
"
,
s
:
"
山东省
"
,
a
:
"
✔
"
,
span
:
15
},
{
n
:
"
德州市人民医院
"
},
{
n
:
"
临沂市中心医院
"
},
{
n
:
"
青岛大学附属医院
"
,
a
:
"
✔
"
},
{
n
:
"
庆云县人民医院
"
},
{
n
:
"
山东大学齐鲁医院
"
,
a
:
"
✔
"
},
{
n
:
"
山东省立医院
"
,
a
:
"
✔
"
},
{
n
:
"
胜利油田中心医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
滕州市中心人民医院
"
},
{
n
:
"
威海市立医院
"
},
{
n
:
"
威海市中心医院
"
,
a
:
"
✔
"
},
{
n
:
"
烟台市烟台山医院
"
,
a
:
"
✔
"
},
{
n
:
"
烟台毓璜顶医院
"
,
a
:
"
✔
"
},
{
n
:
"
阳光融和医院
"
},
{
n
:
"
中国人民解放军联勤保障部队第九七〇医院
"
},
//215
{
n
:
"
大同大学附属医院
"
,
s
:
"
山西省
"
,
span
:
11
},
{
n
:
"
大同市第二人民医院肿瘤医院
"
,
a
:
"
✔
"
},
{
n
:
"
大同市第三人民医院
"
},
{
n
:
"
大同市第五人民医院
"
},
{
n
:
"
山西晋城无烟煤矿业集团有限责任公司总医院
"
},
{
n
:
"
山西省人民医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
山西省中医药研究院
"
},
{
n
:
"
太原市中心医院
"
},
{
n
:
"
同煤集团公司总医院
"
},
{
n
:
"
长治医学院附属和平医院
"
,
a
:
"
✔
"
},
{
n
:
"
中化二建集团医院
"
},
// 226
{
n
:
"
安康市中心医院
"
,
s
:
"
陕西省
"
,
span
:
7
,
a
:
"
✔
"
},
{
n
:
"
宝鸡市人民医院
"
},
{
n
:
"
西安交通大学第二附属医院
"
,
a
:
"
✔
"
},
{
n
:
"
西安交通大学第一附属医院
"
,
a
:
"
✔
"
},
{
n
:
"
西安市中心医院
"
},
{
n
:
"
西安医学院第一附属医院
"
},
{
n
:
"
榆林市第二医院
"
,
a
:
"
✔
"
},
//233
{
n
:
"
阿坝藏族羌族自治州人民医院
"
,
s
:
"
四川省
"
,
span
:
30
,
t
:
"
✔
"
},
{
n
:
"
成都市第二人民医院
"
},
{
n
:
"
成都市第三人民医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
成都市第五人民医院
"
},
{
n
:
"
成都市龙泉驿区第一人民医院
"
,
t
:
"
✔
"
},
{
n
:
"
成都市郫都区人民医院
"
},
{
n
:
"
成都市温江区人民医院
"
},
{
n
:
"
成都天府新区人民医院
"
},
{
n
:
"
成都医学院第一附属医院
"
},
{
n
:
"
川北医学院附属医院
"
},
{
n
:
"
达川区人民医院
"
},
{
n
:
"
达州市中西医结合医院
"
},
{
n
:
"
达州市中心医院
"
},
{
n
:
"
都江堰市人民医院
"
,
t
:
"
✔
"
},
{
n
:
"
广元市第三人民医院
"
},
{
n
:
"
广元市第四人民医院
"
},
{
n
:
"
广元市中心医院
"
},
{
n
:
"
乐山市人民医院
"
,
a
:
"
✔
"
},
{
n
:
"
绵阳市中心医院
"
},
{
n
:
"
绵竹市人民医院
"
},
{
n
:
"
四川宝石花医院
"
},
{
n
:
"
四川大学华西医院
"
,
a
:
"
✔
"
},
{
n
:
"
四川简阳市人民医院
"
,
t
:
"
✔
"
},
{
n
:
"
四川省科学城医院
"
},
{
n
:
"
四川省内江市中医院
"
},
{
n
:
"
四川省人民医院
"
,
a
:
"
✔
"
},
{
n
:
"
四川省自贡市第一人民医院
"
,
t
:
"
✔
"
},
{
n
:
"
西藏自治区人民政府驻成都办事处医院
"
,
a
:
"
✔
"
},
{
n
:
"
雅安市人民医院
"
},
{
n
:
"
中江县人民医院
"
},
//263
{
n
:
"
大理白族自治州人民医院
"
,
a
:
"
✔
"
,
s
:
"
云南省
"
,
span
:
6
},
{
n
:
"
个旧市人民医院
"
},
{
n
:
"
昆明医科大学第一附属医院
"
,
a
:
"
✔
"
},
{
n
:
"
曲靖市第一人民医院
"
,
a
:
"
✔
"
},
{
n
:
"
文山市人民医院
"
},
{
n
:
"
云南省第一人民医院
"
,
a
:
"
✔
"
},
//269
{
n
:
"
滨海县人民医院
"
,
s
:
"
浙江省
"
,
span
:
9
},
{
n
:
"
淳安县第一人民医院
"
},
{
n
:
"
建德市第一人民医院
"
},
{
n
:
"
宁波市医疗中心李惠利医院
"
},
{
n
:
"
桐庐县中医院
"
},
{
n
:
"
永康方大瑞金医院
"
},
{
n
:
"
浙江衢化医院
"
},
{
n
:
"
浙江省台州医院
"
,
a
:
"
✔
"
},
{
n
:
"
浙江省中医院
"
,
a
:
"
✔
"
},
//278
{
n
:
"
广西象州县中医医院
"
,
s
:
"
广西壮族自治区
"
,
span
:
5
},
{
n
:
"
广西医科大学第一附属医院
"
,
a
:
"
✔
"
},
{
n
:
"
广西壮族自治区南溪山医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
{
n
:
"
桂林市第二人民医院
"
},
{
n
:
"
钦州第二人民医院
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
//283
{
n
:
"
宁夏回族自治区人民医院
"
,
s
:
"
宁夏回族自治区
"
,
span
:
3
},
{
n
:
"
宁夏人民医院宁南医院
"
,
s
:
"
宁夏回族自治区
"
,
t
:
"
✔
"
},
{
n
:
"
宁夏医科大学总医院
"
,
s
:
"
宁夏回族自治区
"
,
a
:
"
✔
"
,
t
:
"
✔
"
},
// 286
{
n
:
"
巴彦淖尔市医院
"
,
s
:
"
内蒙古自治区
"
,
span
:
15
},
{
n
:
"
包钢集团第三职工医院
"
},
{
n
:
"
包头市蒙医中医医院
"
},
{
n
:
"
包头市中心医院
"
},
{
n
:
"
包头市肿瘤医院
"
},
{
n
:
"
包头医学院第二附属医院
"
},
{
n
:
"
鄂尔多斯市中心医院
"
,
a
:
"
✔
"
},
{
n
:
"
呼和浩特市第一医院
"
},
{
n
:
"
呼伦贝尔市人民医院
"
},
{
n
:
"
内蒙古科技大学包头医学院第一附属医院
"
,
a
:
"
✔
"
},
{
n
:
"
内蒙古医科大学附属医院
"
,
a
:
"
✔
"
},
{
n
:
"
内蒙古自治区人民医院
"
},
{
n
:
"
内蒙古自治区中医医院
"
},
{
n
:
"
乌海市人民医院
"
},
{
n
:
"
准格尔旗中心医院
"
},
{
n
:
"
新疆维吾尔自治区人民医院
"
,
s
:
"
新疆维吾尔自治区
"
,
span
:
3
,
a
:
"
✔
"
},
{
n
:
"
新疆伊犁哈萨克自治州友谊医院
"
,
s
:
"
新疆维吾尔自治区
"
,
a
:
"
✔
"
},
{
n
:
"
新疆医科大学第一附属医院
"
,
s
:
"
新疆维吾尔自治区
"
,
a
:
"
✔
"
},
]
src/views/Home/notice/index.vue
0 → 100644
View file @
e7cc4f5a
<
template
>
<el-container>
<el-aside
width=
"240px"
>
<h3
class=
"side_title"
>
通知公告
</h3>
<ul
class=
"side-list"
>
<li
:class=
"currentComponent === name ? 'active' : ''"
v-for=
"
{ isTop, time, name, label } in list"
:key="name"
@click="currentComponent = name"
>
<h4>
{{
label
}}
</h4>
<div>
<span
class=
"isTop"
v-if=
"isTop"
>
置顶
</span>
<span
class=
"time"
>
{{
time
}}
</span>
</div>
</li>
</ul>
</el-aside>
<el-main>
<component
:is=
"currentComponent"
></component>
</el-main>
</el-container>
</
template
>
<
script
>
import
AllianceApply
from
"
./components/AllianceApply.vue
"
import
HospitalsList
from
"
./components/HospitalsList.vue
"
export
default
{
name
:
"
Notice
"
,
components
:
{
AllianceApply
,
HospitalsList
,
},
data
()
{
return
{
list
:
[
{
name
:
"
AllianceApply
"
,
label
:
"
申请加入国家消化道早癌防治中心联盟
"
,
time
:
"
2022-09-20
"
,
isTop
:
true
,
},
{
name
:
"
HospitalsList
"
,
label
:
"
GECA联盟理事及医院名单
"
,
time
:
"
2022-11-20
"
,
isTop
:
true
,
},
],
currentComponent
:
"
AllianceApply
"
,
}
},
methods
:
{},
mounted
()
{},
watch
:
{},
}
</
script
>
<
style
lang=
"scss"
scoped
>
.el-aside
{
background-color
:
#fff
;
border-radius
:
4px
;
.side_title
{
font-size
:
18px
;
font-weight
:
bold
;
color
:
#333333
;
margin
:
20px
;
padding-left
:
15px
;
letter-spacing
:
2px
;
border-radius
:
4px
;
position
:
relative
;
&
:
:
before
{
content
:
" "
;
border-left
:
4px
solid
#4e68ff
;
position
:
absolute
;
height
:
18px
;
top
:
4px
;
left
:
0
;
}
}
.side-list
{
li
{
padding
:
20px
15px
;
cursor
:
pointer
;
font-size
:
12px
;
&
.active
{
background
:
rgba
(
78
,
104
,
255
,
0
.06
);
h4
{
color
:
#4e68ff
;
}
}
h4
{
font-size
:
16px
;
letter-spacing
:
1px
;
font-weight
:
bold
;
line-height
:
26px
;
}
.isTop
{
width
:
32px
;
height
:
20px
;
padding
:
2px
5px
;
color
:
#7085fe
;
background
:
rgba
(
112
,
133
,
254
,
0
.1
);
border-radius
:
1px
;
}
.time
{
color
:
#999999
;
}
}
}
}
.el-main
{
background-color
:
#fff
;
border-radius
:
4px
;
margin-left
:
20px
;
}
</
style
>
src/views/audit-qualitycontrol/index.vue
View file @
e7cc4f5a
...
...
@@ -227,8 +227,12 @@ export default {
this
.
$router
.
push
({
path
:
"
/followaudit
"
,
query
:
{
id
:
data
[
"
id
"
],
unionId
:
data
[
"
unionId
"
],
unionName
:
data
[
"
unionName
"
],
patientId
:
data
.
patientId
,
checkStatus
:
data
[
"
checkStatus
"
],
checkNote
:
data
[
"
checkNote
"
],
},
})
}
else
{
...
...
src/views/followupentry/components/publicDialog.vue
View file @
e7cc4f5a
<
template
>
<div>
<el-dialog
center
:visible.sync=
"dialogVisible"
width=
"40%"
show-close
@
closed=
"cancelSubmit"
>
<el-dialog
center
:visible.sync=
"dialogVisible"
width=
"40%"
show-close
@
closed=
"cancelSubmit"
>
<slot
name=
"content"
></slot>
<slot
name=
"footer"
></slot>
</el-dialog>
...
...
@@ -24,4 +30,9 @@ export default {
},
}
</
script
>
<
style
lang=
"scss"
scoped
></
style
>
<
style
lang=
"scss"
scoped
>
::v-deep
.el-dialog__body
{
border-top
:
none
;
text-align
:
center
;
}
</
style
>
src/views/followupentry/followaudit.vue
View file @
e7cc4f5a
...
...
@@ -4,59 +4,80 @@
<div
class=
"audit-detail_header p-24"
>
<div
class=
"left"
>
<span>
当前审核
</span>
<span
class=
"f-b"
>
【
{{
medicalCombination
}}
】【剩余
{{
mcCount
}}
】
</span
<span
class=
"f-b"
>
【
{{
$route
.
query
.
unionName
}}
】
</span>
<span
v-if=
"!editStatus"
class=
"f-b"
>
【【剩余
{{
auditNum
||
0
}}
】
</span
>
</div>
<div
class=
"right"
>
<el-button
class=
"btn"
@
click=
"$router.go(-1)"
>
返回
</el-button>
</div>
</div>
<div
class=
"table-content p-24"
>
<follow-review
:form-data-list=
"followNum"
:tab-active=
"tabActive"
></follow-review>
</div>
<div
class=
"choose-handle p-24"
>
<span
v-if=
"!editStatus"
>
请选择审核结果:
</span>
<div
class=
"btn_group"
>
<el-button
v-for=
"(item, index) in btnGroup"
:key=
"index"
type=
"primary"
class=
"p-btn"
size=
"medium"
@
click=
"showDialog(item.value)"
>
{{
item
.
text
}}
</el-button
>
<span
v-if=
"editStatus"
class=
"op"
>
驳回修改建议:胃镜图片不合规
</span>
<el-empty
v-if=
"isEmpty"
></el-empty>
<template
v-if=
"!isEmpty"
>
<div
class=
"table-content p-24"
>
<FollowReview
:currentRow=
"currentRow"
titlePosition=
"left"
>
</FollowReview>
</div>
</div>
<public-dialog
ref=
"editDialog"
@
onCancel=
"onCancel"
>
<div
class=
"choose-handle p-24"
>
<div
class=
"btn_group"
>
<el-button
v-for=
"(item, index) in btnGroup"
:key=
"index"
type=
"primary"
class=
"p-btn"
size=
"medium"
@
click=
"showDialog(item.value)"
>
{{
item
.
text
}}
</el-button
>
<span
v-if=
"editStatus"
class=
"op"
>
{{
checkStatus
==
"
2
"
?
"
驳回修改建议 :
"
:
checkStatus
==
"
4
"
?
"
不合格原因 :
"
:
""
}}
{{
checkStatus
==
"
3
"
?
""
:
checkNote
}}
</span
>
</div>
</div>
</
template
>
<!-- 编辑提交前弹窗 -->
<public-dialog
ref=
"editDialog"
@
onSubmit=
"onSubmit"
@
onCancel=
"onCancel"
>
<!-- 修改审核结果 优先触发提示 -->
<
template
v-if=
"!confirmStatus"
slot=
"content"
>
<div
class=
"title"
>
温馨提示
</div>
<div
class=
"content"
>
<div
class=
"showTips"
>
该病例已经审核【驳回修改】,需要改为
{{
该病例已经审核【
{{
checkStatus
==
2
?
"
驳回修改
"
:
checkStatus
==
3
?
"
合格
"
:
checkStatus
==
4
?
"
不合格
"
:
""
}}
】,需要改为
{{
btnGroup
[
curBtn
-
1
]
?
btnGroup
[
curBtn
-
1
].
text
:
""
}}
吗
</div>
</div>
<div
class=
"btn"
>
<el-button
type=
"primary"
:loading=
"loading"
@
click=
"onCancel"
>
否
</el-button
>
<el-button
type=
"primary"
:loading=
"loading"
@
click=
"editSubmit"
>
是
</el-button
>
<el-button
type=
"primary"
@
click=
"onCancel"
>
否
</el-button>
<el-button
type=
"primary"
@
click=
"editSubmit"
>
是
</el-button>
</div>
</
template
>
</public-dialog>
<public-dialog
ref=
"publicDialog"
@
onCancel=
"onCancel"
>
<public-dialog
ref=
"publicDialog"
:show-close=
"showClose"
@
onSubmit=
"onSubmit"
@
onCancel=
"onCancel"
>
<!-- 审核结果回显 -->
<
template
v-if=
"!confirmStatus"
slot=
"content"
>
<
template
v-if=
"!confirmStatus
&& !editLabelFlag
"
slot=
"content"
>
<div
class=
"title"
>
{{
btnGroup
[
curBtn
-
1
]
?
btnGroup
[
curBtn
-
1
].
text
:
""
}}
</div>
...
...
@@ -72,7 +93,7 @@
>
<el-form-item
:label=
"curBtn == 2 ? '不合格原因' : '驳回修改建议'"
prop=
"reson"
prop=
"re
a
son"
>
<el-input
v-model=
"form.reason"
...
...
@@ -83,28 +104,103 @@
></el-input>
</el-form-item>
</el-form>
<!-- 标签 -->
<div
v-loading=
"tagLoading"
class=
"tag-form"
>
<el-tag
v-for=
"(item, index) in tagList"
:key=
"index"
size=
"medium"
:class=
"item.isSelect ? '' : 'unselect-tag'"
@
click=
"seleckTag(item, index)"
>
<span>
{{
item
.
note
}}
</span>
</el-tag>
<p
class=
"handle-row"
@
click=
"showNote = true"
>
编辑标签
</p>
<!-- 标签部分 -->
<div
class=
"labelPlace"
>
<div
class=
"labelList"
>
<template
v-for=
"(item, index) in reasonList"
>
<div
v-if=
"item.note ? item.note.length
<
=
8
:
false
"
:key=
"index"
:class=
"[
'listItem',
selectedReason.includes(item.note) ? 'active' : '',
]"
@
click=
"setReason(item)"
>
<!-- selectedReason.includes(item) ? 'active' : '', -->
{{
item
.
note
}}
</div>
<template
v-if=
"item.note ? item.note.length > 8 : false"
>
<el-tooltip
:key=
"index"
class=
"item"
effect=
"dark"
:content=
"item.note"
placement=
"top"
>
<div
:class=
"[
'listItem',
selectedReason.includes(item.note) ? 'active' : '',
]"
@
click=
"setReason(item)"
>
<!-- selectedReason.includes(item) ? 'active' : '', -->
{{
item
.
note
}}
</div>
</el-tooltip>
</
template
>
</template>
</div>
<div
class=
"labelEdit"
>
<span
@
click=
"editLabel"
>
编辑标签
</span>
</div>
</div>
</div>
</div>
<div
class=
"btn"
>
<el-button
type=
"primary"
:loading=
"loading"
@
click=
"onSubmit"
>
确 定
</el-button
<el-button
type=
"primary"
:loading=
"loading"
@
click=
"onSubmit"
>
{{
editStatus
? curBtn == 1
? "好的"
: "提交"
: "确认并进入下一例审核"
}}
</el-button>
</div>
</template>
<!-- 标签的弹窗 -->
<
template
v-if=
"!confirmStatus && editLabelFlag"
slot=
"content"
>
<div
class=
"left-back"
@
click=
"editLabelFlag = false"
>
<i
class=
"el-icon-back"
></i>
</div>
<div
class=
"title"
>
编辑标签
</div>
<div
class=
"content"
>
<ul
class=
"edit_reasonList"
>
<li
v-for=
"(item, index) in reasonList"
:key=
"index"
>
<el-input
v-model=
"item.note"
style=
"width: 86%"
placeholder=
"请输入标签内容"
clearable
>
</el-input>
<el-button
type=
"text"
style=
"color: red"
:disabled=
"reasonList.length == 1 && item.note == ''"
@
click=
"deleteLabel(index)"
>
删除
</el-button
>
<el-button
v-show=
"index == reasonList.length - 1"
type=
"text"
@
click=
"addLabel"
>
新增
</el-button
>
</li>
</ul>
</div>
<div
class=
"btn"
>
<el-button
type=
"primary"
:loading=
"loading"
style=
"padding: 0 30px"
@
click=
"saveLabel"
>
保存
</el-button
>
</div>
</
template
>
<!-- 提交后结果 -->
<!-- 提交后
合格
结果 -->
<
template
v-if=
"confirmStatus"
slot=
"content"
>
<div
class=
"title"
>
{{
btnGroup
[
curBtn
-
1
].
text
}}
</div>
<div
class=
"content"
>
...
...
@@ -114,23 +210,20 @@
<div
class=
"label"
>
{{
curBtn
==
2
?
"
不合格原因
"
:
"
驳回修改建议
"
}}
</div>
<div
class=
"re
son"
>
{{
form
.
re
son
}}
</div>
<div
class=
"re
ason"
>
{{
form
.
rea
son
}}
</div>
</div>
</div>
<div
v-if=
"curBtn != 1"
class=
"showTips"
>
该病例审核
{{
curBtn
==
2
?
"
不合格原因
"
:
"
驳回修改建议
"
}}
提交成功!
</div>
<div
class=
"btn"
>
<el-button
type=
"primary"
:loading=
"auditLoading"
@
click=
"nextExample"
>
<span
v-if=
"tabActive
<
formEdit
.
length
-
1
"
>
确认并进入下一列审核
</span
>
<span
v-else
>
确 定
</span>
</el-button>
<el-button
type=
"primary"
:loading=
"loading"
@
click=
"nextExample"
>
{{
editStatus
?
curBtn
==
1
?
"
好的
"
:
"
提交
"
:
"
确认并进入下一例审核
"
}}
</el-button>
</div>
</
template
>
</public-dialog>
...
...
@@ -138,240 +231,310 @@
</template>
<
script
>
import
publicDialog
from
"
./components/publicDialog.vue
"
import
followReview
from
"
./components/followReview.vue
"
import
{
getFollowUnCheckDetail
,
putFollowCheck
}
from
"
@/api/followup
"
import
{
getSysCheckNote
,
postSysCheckNote
}
from
"
@/api/note
"
import
FollowReview
from
"
../followupquery/components/FollowReview.vue
"
import
{
getFollowUnCheckDetail
,
putFollowCheck
,
putFollowCheckAdvice
,
}
from
"
@/api/followup
"
import
{
saveSysCheckNote
,
getSysCheckNote
}
from
"
@/api/screeningAudit
"
export
default
{
components
:
{
publicDialog
,
f
ollowReview
},
components
:
{
publicDialog
,
F
ollowReview
},
data
()
{
return
{
medicalCombination
:
"
无锡市人民医院医联体
"
,
mcCount
:
7
,
isEmpty
:
false
,
currentRow
:
{},
checkStatus
:
null
,
editLabelFlag
:
false
,
auditNum
:
0
,
editStatus
:
false
,
//进入的状态是第一次审核还是修改审核,false为第一次,true为修改
followNum
:
[
//随访次数数据
{
followId
:
123
,
formRecordId
:
123
},
{
followId
:
123
,
formRecordId
:
123
},
{
followId
:
123
,
formRecordId
:
123
},
{
followId
:
123
,
formRecordId
:
123
},
],
//第几次随访数据
formEdit
:
{
name
:
"
djksh
"
,
contact_phone
:
"
12345678
"
,
is_accept
:
"
0
"
,
gas_exam
:
"
15
"
,
G_17
:
"
5
"
,
},
//填报数据
form
:
{},
form
:
{
reason
:
""
,
},
patientId
:
""
,
// 当前人的patientId
checkNote
:
""
,
checkStatus
:
""
,
// 传入的checkstatus
curUnion
:
""
,
// 当前医联体
id
:
""
,
rules
:
{
reason
:
[{
required
:
true
,
message
:
"
请填写
"
,
trigger
:
"
blur
"
}],
},
reasonList
:
[],
selectedReason
:
[],
btnGroup
:
[
{
text
:
"
合格
"
,
value
:
3
,
value
:
1
,
},
{
text
:
"
不合格
"
,
value
:
4
,
value
:
2
,
},
{
text
:
"
驳回修改
"
,
value
:
2
,
value
:
3
,
},
],
loading
:
false
,
curBtn
:
0
,
//点击的按钮
curComponent
:
"
follow
Review
"
,
curBtn
:
0
,
curComponent
:
"
screen
Review
"
,
confirmStatus
:
false
,
tagList
:
[
// {
// note: "不合格原因",
// isSelect: false,
// },
// {
// note: "不合格原因不合格原因",
// },
// {
// note: "不合格原因",
// },
// {
// note: "不合格原因",
// },
// {
// note: "不合格原因",
// },
],
newNote
:
""
,
minHeight
:
"
170px
"
,
showNote
:
false
,
}
},
computed
:
{
unionId
()
{
return
this
.
$route
.
query
.
id
return
this
.
$route
.
query
.
unionId
},
showClose
()
{
return
this
.
curBtn
==
1
?
false
:
true
},
},
watch
:
{
// tagList(){
// this.$nextTick(() => {
// this.minHeight = this.$refs.publicContent.offsetHeight + "px"
// })
// }
},
created
()
{
// this.getDetail
()
this
.
init
()
},
methods
:
{
showDialog
(
val
,
index
)
{
console
.
log
(
"
显示框
"
,
val
)
async
getFollowUnCheckDetail
()
{
this
.
loading
=
true
let
res
=
await
getFollowUnCheckDetail
(
this
.
unionId
)
const
{
now
,
nums
}
=
res
.
data
this
.
auditNum
=
nums
this
.
currentRow
=
{
...
now
,
followBatch
:
1
}
this
.
loading
=
false
this
.
isEmpty
=
!
nums
},
init
()
{
const
{
patientId
,
checkStatus
,
checkNote
,
id
}
=
this
.
$route
.
query
this
.
editStatus
=
Boolean
(
patientId
)
if
(
patientId
)
{
this
.
currentRow
=
{
id
,
patientId
:
patientId
,
followBatch
:
1
,
}
this
.
checkStatus
=
checkStatus
this
.
checkNote
=
checkNote
}
else
{
this
.
getFollowUnCheckDetail
()
}
},
this
.
curBtn
=
index
+
1
if
(
!
this
.
editStatus
)
{
if
(
this
.
curBtn
==
1
)
{
// 走接口,保存合格
this
.
confirmStatus
=
true
}
else
if
(
this
.
curBtn
==
2
)
{
this
.
rules
.
reason
[
0
].
message
=
"
请输入不合格原因
"
//获取审核标签
this
.
getSysCheckNote
()
}
else
{
d
this
.
rules
.
reason
[
0
].
message
=
"
请输入驳回修改建议
"
// 获取标签
getSysCheckNote
()
{
getSysCheckNote
().
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
let
{
data
}
=
res
if
(
data
&&
data
.
length
>
0
)
{
this
.
reasonList
=
data
}
else
{
this
.
reasonList
=
[{
note
:
""
}]
}
}
this
.
$refs
.
publicDialog
.
dialogVisible
=
true
})
},
// 编辑标签
editLabel
()
{
this
.
editLabelFlag
=
true
},
// 提交接口
putFollowCheck
(
checkStatus
,
func
)
{
const
{
id
,
patientId
}
=
this
.
currentRow
let
params
=
{
id
,
checkStatus
:
checkStatus
,
checkNote
:
this
.
form
.
reason
,
patientId
,
}
putFollowCheck
(
params
)
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
&&
res
.
data
)
{
func
()
}
else
{
this
.
loading
=
false
}
})
.
catch
(()
=>
{
this
.
loading
=
false
})
},
//! 修改审核结果
putFollowCheckAdvice
(
checkStatus
,
func
)
{
const
{
id
,
patientId
}
=
this
.
currentRow
let
params
=
{
id
,
checkStatus
:
checkStatus
,
checkNote
:
this
.
form
.
reason
,
patientId
,
}
putFollowCheckAdvice
(
params
)
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
&&
res
.
data
)
{
this
.
loading
=
false
this
.
checkStatus
=
checkStatus
this
.
checkNote
=
this
.
form
.
reason
func
()
}
else
{
this
.
loading
=
false
this
.
$refs
.
publicDialog
.
dialogVisible
=
false
}
})
.
catch
(()
=>
{
this
.
loading
=
false
})
},
// 设置理由
setReason
({
note
})
{
if
(
this
.
selectedReason
.
includes
(
note
))
{
this
.
selectedReason
=
this
.
selectedReason
.
filter
((
e
)
=>
e
!=
note
)
}
else
{
this
.
selectedReason
.
push
(
note
)
}
this
.
form
.
reason
=
this
.
selectedReason
.
join
(
"
、
"
)
},
//! 合格提交 checkStatus 合格-3 不合格-4 驳回修改-2 待审核-1
showDialog
(
val
)
{
this
.
curBtn
=
val
if
(
this
.
editStatus
)
{
//! 精准编辑
this
.
$refs
.
editDialog
.
dialogVisible
=
true
}
else
{
//! 医联体的审核
if
(
val
==
1
)
{
this
.
$confirm
(
"
确定要提交审核吗?
"
,
"
警告
"
,
{
type
:
"
warning
"
,
})
.
then
(()
=>
{
if
(
this
.
curBtn
==
1
)
{
// 走接口,保存合格
this
.
putFollowCheck
(
"
3
"
,
()
=>
{
this
.
confirmStatus
=
true
})
}
})
.
catch
(()
=>
{})
}
else
{
this
.
getSysCheckNote
()
if
(
this
.
curBtn
==
2
)
{
this
.
rules
.
reason
[
0
].
message
=
"
请输入不合格原因
"
}
else
{
this
.
rules
.
reason
[
0
].
message
=
"
请输入驳回修改建议
"
}
this
.
$refs
.
publicDialog
.
dialogVisible
=
true
}
}
},
// 不合格提交
onSubmit
()
{
this
.
loading
=
true
// 切换文本
if
(
this
.
curBtn
!=
1
)
{
this
.
$refs
.
form
.
validate
((
valid
)
=>
{
if
(
valid
)
{
let
status
=
this
.
curBtn
==
2
?
"
4
"
:
this
.
curBtn
==
3
?
"
2
"
:
""
if
(
this
.
editStatus
)
{
this
.
putFollowCheckAdvice
(
status
,
()
=>
{
this
.
$message
.
success
(
"
提交审核成功
"
)
this
.
onCancel
()
})
}
else
{
this
.
putFollowCheck
(
status
,
()
=>
{
this
.
$message
.
success
(
"
提交审核成功
"
)
this
.
nextExample
()
})
}
}
else
{
this
.
loading
=
false
return
false
}
})
}
// this.$refs.publicDialog.dialogVisible = true
},
onCancel
()
{
this
.
confirmStatus
=
false
this
.
editLabelFlag
=
false
this
.
selectedReason
=
[]
if
(
this
.
curBtn
!=
1
)
{
this
.
form
=
{}
this
.
form
=
{
reason
:
""
}
}
this
.
$refs
.
editDialog
.
dialogVisible
=
false
this
.
$refs
.
publicDialog
.
dialogVisible
=
false
// this.$refs.noteDialog.dialogVisible = false
if
(
this
.
$refs
.
form
)
{
this
.
$refs
.
form
.
clearValidate
()
}
},
// 修改提交
editSubmit
()
{
// this.$refs.editDialog.dialogVisible = false
if
(
this
.
curBtn
==
1
)
{
// 走接口,保存合格
this
.
confirmStatus
=
true
}
else
if
(
this
.
curBtn
==
2
)
{
this
.
rules
.
reason
[
0
].
message
=
"
请输入不合格原因
"
if
(
this
.
editStatus
)
{
// 走接口,保存合格
this
.
putFollowCheckAdvice
(
"
3
"
,
()
=>
{
this
.
confirmStatus
=
true
this
.
$refs
.
publicDialog
.
dialogVisible
=
true
this
.
selectedReason
=
[]
})
}
}
else
{
this
.
rules
.
reason
[
0
].
message
=
"
请输入驳回修改建议
"
this
.
getSysCheckNote
()
if
(
this
.
curBtn
==
2
)
{
this
.
rules
.
reason
[
0
].
message
=
"
请输入不合格原因
"
}
else
{
this
.
rules
.
reason
[
0
].
message
=
"
请输入驳回修改建议
"
}
this
.
$refs
.
publicDialog
.
dialogVisible
=
true
}
this
.
$refs
.
publicDialog
.
dialogVisible
=
true
},
nextExample
()
{
if
(
Number
(
this
.
tabActive
)
<
this
.
formEdit
.
length
-
1
)
{
this
.
tabActive
=
String
(
Number
(
this
.
tabActive
)
+
1
)
}
console
.
log
(
"
tab激活
"
,
this
.
tabActive
)
this
.
onCancel
()
},
async
getDetail
()
{
this
.
loading
=
true
let
res
=
await
getFollowUnCheckDetail
(
this
.
unionId
)
if
(
res
.
code
==
1
)
{
this
.
formEdit
=
res
.
data
[
0
]
}
this
.
loading
=
false
},
//审核
async
handleCheck
()
{
this
.
auditLoading
=
true
let
params
=
{
id
:
this
.
formEdit
[
this
.
tabActive
],
checkStatus
:
this
.
btnGroup
[
this
.
curBtn
].
value
,
checkNote
:
this
.
form
.
reason
,
patientId
:
this
.
unionId
,
}
console
.
log
(
"
审核值
"
,
params
)
// let res = await putFollowCheck(params)
// if(res.code==1){
// // this.formEdit=res.data //调试注释
// }
this
.
auditLoading
=
false
},
// 获取审核标签
async
getSysCheckNote
()
{
this
.
tagLoading
=
true
let
res
=
await
getSysCheckNote
()
if
(
res
.
code
==
1
)
{
this
.
tagList
=
res
.
data
}
this
.
tagLoading
=
false
},
//选择标签
seleckTag
(
item
,
index
)
{
this
.
tagList
[
index
][
"
isSelect
"
]
=
true
this
.
form
.
reason
=
this
.
form
.
reason
+
item
.
note
+
"
、
"
this
.
$forceUpdate
()
},
//标签保存
async
saveTag
()
{
let
params
=
this
.
tagList
.
map
((
e
)
=>
e
.
note
)
let
res
=
await
postSysCheckNote
(
params
)
if
(
res
.
code
==
1
)
{
this
.
$message
.
success
(
"
保存标签成功
"
)
this
.
getSysCheckNote
()
// this.$refs.noteDialog.dialogVisible = false
if
(
this
.
editStatus
)
{
this
.
loading
=
false
this
.
onCancel
()
}
else
{
this
.
onCancel
()
this
.
getFollowUnCheckDetail
()
}
},
//标签添加
addTag
()
{
this
.
tagList
.
push
({
note
:
""
,
})
this
.
$forceUpdate
()
},
//标签删除
delTag
(
item
,
index
)
{
deleteLabel
(
i
)
{
this
.
$confirm
(
"
确定要删除该标签吗?
"
,
"
警告
"
,
{
type
:
"
warning
"
,
})
.
then
(()
=>
{
this
.
tagList
=
this
.
tagList
.
filter
((
e
,
i
)
=>
i
!=
index
)
this
.
reasonList
=
this
.
reasonList
.
filter
((
e
,
index
)
=>
index
!=
i
)
if
(
this
.
reasonList
.
length
==
0
)
{
this
.
reasonList
=
[
{
note
:
""
,
},
]
}
})
.
catch
(()
=>
{})
},
//标签对话框关闭
handleNoteDialog
(
i
)
{
this
.
showNote
=
false
this
.
getSysCheckNote
()
// 增加标签
addLabel
()
{
this
.
reasonList
.
push
({
note
:
""
,
})
},
// 保存标签
saveLabel
()
{
let
arr
=
this
.
reasonList
.
map
((
e
)
=>
e
.
note
)
saveSysCheckNote
(
arr
).
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
$message
.
success
(
"
保存标签成功
"
)
this
.
getSysCheckNote
()
this
.
editLabelFlag
=
false
}
})
},
// //标签保存对话框操作
// noteSave(){
// this.$refs.noteDialog.dialogVisible = false
// this.getSysCheckNote()
// },
// //添加、编辑标签
// async handleTag(item){
// if(!item.note) return
// else{
// let params = {
// note:item.note
// }
// item.id ? params['id']=item.id : ''
// let res = item.id ? await putSysCheckNote(params) : await postSysCheckNote(params)
// }
// }
},
}
</
script
>
<
style
lang=
"scss"
scoped
>
::v-deep
.el-dialog__body
{
border-top
:
none
;
text-align
:
center
;
.tips
{
font-size
:
16px
;
}
.tips
{
font-size
:
16px
;
}
.p-24
{
padding
:
0
24px
;
...
...
@@ -382,6 +545,8 @@ export default {
}
#audit-detail
{
display
:
flex
;
flex-direction
:
column
;
// padding: 22px 24px;
.audit-detail_header
{
height
:
65px
;
...
...
@@ -390,11 +555,13 @@ export default {
display
:
flex
;
justify-content
:
space-between
;
.right
{
display
:
flex
;
align-items
:
center
;
.btn
{
margin-top
:
0px
;
width
:
80px
;
height
:
32px
;
border-radius
:
4px
;
margin-top
:
0px
;
}
}
}
...
...
@@ -405,7 +572,7 @@ export default {
font-size
:
14px
;
font-family
:
AlibabaPuHuiTiM
;
color
:
#333333
;
box-shadow
:
0px
1px
0px
0px
rgba
(
0
,
0
,
0
,
0
.1
);
// box-shadow: 0px -
1px 0px 0px rgba(0, 0, 0, 0.1);
border-top
:
1px
solid
rgba
(
0
,
0
,
0
,
0
.1
);
display
:
flex
;
.btn_group
{
...
...
@@ -425,7 +592,7 @@ export default {
line-height
:
26px
;
}
.content
{
margin
:
28px
23
px
;
margin
:
58
px
;
.pass
{
font-size
:
18px
;
font-family
:
AlibabaPuHuiTiM
;
...
...
@@ -436,7 +603,8 @@ export default {
.btn
{
margin-top
:
20px
;
.el-button
{
// width: 100px;
min-width
:
100px
;
border-radius
:
5px
;
height
:
32px
;
}
}
...
...
@@ -457,59 +625,75 @@ export default {
margin-left
:
20px
;
}
.table-content
{
// height: calc(100vh - 260px);
// overflow: auto;
padding-top
:
20px
;
padding-bottom
:
20px
;
}
.tag-form
{
text-align
:
initial
;
::v-deep
{
.el-tag
{
margin
:
0px
12px
12px
0px
;
.empty
{
width
:
100%
;
height
:
15px
;
background
:
#f6f8f9
;
}
.left-back
{
position
:
absolute
;
padding
:
7px
5px
;
top
:
10px
;
font-size
:
20px
;
text-align
:
left
;
cursor
:
pointer
;
}
.labelPlace
{
.labelList
{
display
:
flex
;
flex-wrap
:
wrap
;
.listItem
{
cursor
:
pointer
;
border-color
:
#4e68ff
;
span
{
display
:
inline-block
;
}
}
.unselect-tag
{
max-width
:
200px
;
white-space
:
nowrap
;
display
:
block
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
padding
:
8px
12px
;
border
:
1px
solid
rgba
(
78
,
104
,
255
,
0
.06
);
background
:
rgba
(
78
,
104
,
255
,
0
.06
);
border-radius
:
2px
;
margin
:
0
12px
12px
0
;
font-size
:
14px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
color
:
#353a45
;
border-color
:
#edf0ff
;
user-select
:
none
;
}
.active
{
background
:
rgba
(
78
,
104
,
255
,
0
.1
);
color
:
#4e68ff
;
border-radius
:
2px
;
border
:
1px
solid
#4e68ff
;
}
}
.handle-row
{
color
:
#4e68ff
;
text-decoration
:
underline
;
.labelEdit
{
font-size
:
14px
;
text-align
:
right
;
cursor
:
pointer
;
}
}
.note-dialog
{
::v-deep
{
.tag-input
{
.el-input__inner
{
background-color
:
rgba
(
78
,
104
,
255
,
0
.06
);
border-radius
:
2px
;
}
}
.handle-text
{
line-height
:
36px
;
span
{
cursor
:
pointer
;
}
user-select
:
none
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
color
:
rgba
(
78
,
120
,
255
);
text-decoration
:
underline
;
&
:active
{
color
:
rgba
(
78
,
50
,
255
);
}
}
}
.left-back
{
position
:
absolute
;
padding
:
7px
5px
;
top
:
10px
;
font-size
:
22px
;
text-align
:
left
;
cursor
:
pointer
;
}
::v-deep
{
.el-dialog__headerbtn
{
font-weight
:
bold
;
font-size
:
22px
;
.edit_reasonList
{
li
{
display
:
flex
;
margin-bottom
:
16px
;
.el-button
{
margin-left
:
12px
;
font-size
:
14px
;
}
}
}
</
style
>
src/views/followupentry/index.vue
View file @
e7cc4f5a
...
...
@@ -88,10 +88,11 @@ export default {
this
.
$router
.
push
({
path
:
"
/followupquery
"
,
query
:
{}
})
},
getFollowList
()
{
const
followId
=
this
.
followId
const
key
=
followId
?
"
followId
"
:
"
patientId
"
getFollowList
({
patientId
:
this
.
patientId
,
[
key
]:
this
[
key
]
,
}).
then
((
res
)
=>
{
// console.log(res)
if
(
res
.
code
==
1
)
{
this
.
screenList
=
res
.
data
||
[]
}
...
...
src/views/followupquery/FollowUpDetail.vue
0 → 100644
View file @
e7cc4f5a
<
template
>
<div>
<FollowReview
:currentRow=
"currentRow"
titlePosition=
"top"
>
<template
#button
>
<el-button
style=
"padding: 8px 20px"
v-if=
"isShowEdit"
@
click=
"handleEdit"
>
修 改
</el-button
>
<el-button
style=
"padding: 8px 20px; margin-left: 20px"
@
click=
"$emit('back')"
>
返 回
</el-button
>
</
template
>
</FollowReview>
</div>
</template>
<
script
>
import
FollowReview
from
"
./components/FollowReview
"
export
default
{
name
:
"
FollowUpDetail
"
,
props
:
{
currentRow
:
{},
},
components
:
{
FollowReview
,
},
data
()
{
return
{}
},
methods
:
{
handleEdit
()
{
const
{
patientId
,
followId
}
=
this
.
currentRow
this
.
$router
.
push
({
path
:
"
/followupentry
"
,
query
:
{
patientId
,
followId
,
model
:
"
edit
"
,
getData
:
1
,
formType
:
2
,
},
})
},
},
computed
:
{
isShowEdit
()
{
const
{
checkStatus
,
followBatch
}
=
this
.
currentRow
return
followBatch
>
0
&&
checkStatus
!==
3
&&
checkStatus
!==
4
},
},
}
</
script
>
src/views/followupquery/components/FollowReview.vue
0 → 100644
View file @
e7cc4f5a
<
template
>
<!-- 随访审核详情 -->
<div
class=
"follow-form"
>
<el-header
v-if=
"titlePosition === 'top'"
>
<div
class=
"follow-tab-top"
>
<el-tabs
v-model=
"activeTab"
type=
"card"
>
<el-tab-pane
label=
"筛查"
name=
"0"
></el-tab-pane>
<el-tab-pane
v-for=
"(item, index) in followList"
:key=
"index"
:label=
"'第' + Number(index + 1) + '次随访数据'"
:name=
"String(index + 1)"
></el-tab-pane>
</el-tabs>
</div>
<div
class=
"extra_btn"
>
<slot
name=
"button"
></slot>
</div>
</el-header>
<el-container>
<el-aside
width=
"auto"
v-if=
"titlePosition === 'left'"
>
<div
class=
"follow-tab"
ref=
"follow-tab"
>
<el-tabs
v-model=
"activeTab"
tab-position=
"right"
style=
"height: 200px"
>
<el-tab-pane
label=
"筛查病例数据"
name=
"0"
>
<template
slot=
"label"
>
<div
class=
"tab-label"
>
筛查病例数据
</div></
template
>
</el-tab-pane>
<el-tab-pane
v-for=
"(item, index) in followList"
:key=
"index"
:name=
"String(index + 1)"
>
<
template
slot=
"label"
>
<div
class=
"tab-label"
>
{{
"
第
"
+
Number
(
index
+
1
)
+
"
次随访数据
"
}}
</div></
template
>
</el-tab-pane>
</el-tabs>
</div>
</el-aside>
<el-main
class=
"transition-box"
v-loading=
"fromLoading"
>
<div
class=
"my_form"
>
<MyCustomForm
v-show=
"activeTab === '0'"
v-for=
"form in formTabs"
:key=
"form.id"
:form=
"form"
:patientId=
"currentRow.patientId"
></MyCustomForm>
<MyCustomForm
v-show=
"activeTab !== '0'"
v-for=
"form in followForms"
:key=
"form.id"
:form=
"form"
:patientId=
"currentRow.patientId"
:followId=
"followId"
></MyCustomForm>
</div>
</el-main>
<el-aside
width=
"auto"
class=
"transition-box"
>
<div
class=
"follow-list"
>
<ul
class=
"list"
>
<li
v-for=
"(item, index) in screenList"
:key=
"index"
>
<div
class=
"time"
>
{{ item.update_time || item.create_time }}
</div>
<div
class=
"time"
>
{{ item.update_user_name || item.create_time }}
</div>
<div
class=
"time"
>
{{ item.sub_title }}
</div>
</li>
</ul>
</div>
</el-aside>
</el-container>
</div>
</template>
<
script
>
import
{
mapGetters
}
from
"
vuex
"
import
CustomForm
from
"
@/components/FormComponents/CustomForm/index
"
import
MyCustomForm
from
"
./MyCustomForm.vue
"
import
{
getCurrentFormByType
}
from
"
@/api/coop-group.js
"
import
{
getFollowList
}
from
"
@/api/patient
"
import
{
getFollowRecord
}
from
"
@/api/followup
"
export
default
{
name
:
"
FollowReview
"
,
components
:
{
CustomForm
,
MyCustomForm
,
},
provide
()
{
return
{
showIndex
:
true
,
}
},
props
:
{
currentRow
:
{},
titlePosition
:
{
type
:
String
,
default
:
"
left
"
,
validator
:
function
(
value
)
{
return
[
"
left
"
,
"
top
"
].
includes
(
value
)
},
},
},
data
()
{
return
{
fromLoading
:
false
,
formTabs
:
[],
followForms
:
[],
activeTab
:
"
0
"
,
screenList
:
[],
followList
:
[],
}
},
computed
:
{
...
mapGetters
({
group
:
[
"
user/group
"
],
}),
isEmpty
()
{
return
this
.
formTabs
.
length
},
followId
()
{
return
(
(
this
.
followList
[
this
.
activeTab
-
1
]
&&
this
.
followList
[
this
.
activeTab
-
1
].
followId
)
||
null
)
},
},
watch
:
{
followId
()
{
this
.
getLogList
()
},
"
currentRow.patientId
"
:
{
handler
(
val
)
{
if
(
val
)
{
this
.
getCurrentFormByType
()
this
.
getFollowInfo
()
this
.
getLogList
()
}
},
immediate
:
true
,
},
},
methods
:
{
getLogList
()
{
const
obj
=
{
patientId
:
this
.
currentRow
.
patientId
,
followId
:
this
.
followId
,
}
const
key
=
obj
.
followId
?
"
followId
"
:
"
patientId
"
getFollowList
({
[
key
]:
obj
[
key
],
}).
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
screenList
=
res
.
data
||
[]
}
})
},
getCurrentFormByType
(
type
=
1
)
{
this
.
fromLoading
=
true
getCurrentFormByType
({
type
,
groupId
:
this
.
group
.
groupId
,
}).
then
((
res
)
=>
{
this
.
fromLoading
=
false
if
(
res
.
code
===
1
)
{
const
list
=
res
.
data
.
map
((
item
,
index
)
=>
{
return
{
id
:
item
.
id
,
formId
:
item
.
formId
,
label
:
item
.
tabName
,
}
})
if
(
type
===
2
)
{
this
.
followForms
=
list
}
else
{
this
.
formTabs
=
list
}
}
})
},
getFollowRecord
()
{
getFollowRecord
({
patientId
:
this
.
currentRow
.
patientId
,
patientFrom
:
this
.
$store
.
getters
[
"
table/selectedIndex
"
],
}).
then
((
res
)
=>
{
this
.
followList
=
res
.
data
.
filter
((
_
)
=>
_
.
followBatch
>
0
)
const
len
=
this
.
followList
.
length
this
.
activeTab
=
String
(
len
)
const
el
=
this
.
$refs
[
"
follow-tab
"
]
if
(
el
&&
len
>
10
)
{
setTimeout
(()
=>
{
el
.
scrollTop
=
(
len
-
10
)
*
60
},
0
)
}
})
},
getFollowInfo
()
{
const
{
followBatch
}
=
this
.
currentRow
if
(
!
followBatch
)
return
this
.
getCurrentFormByType
(
2
)
this
.
getFollowRecord
()
},
},
}
</
script
>
<
style
lang=
"scss"
scoped
>
.el-header
{
display
:
flex
;
margin-top
:
20px
;
padding-right
:
0
;
justify-content
:
space-between
;
}
.follow-tab-top
{
width
:
calc
(
100vh
-
200px
);
padding-left
:
10px
;
::v-deep
{
.el-tabs--card
>
.el-tabs__header
{
border-bottom
:
none
;
}
.el-tabs--card
>
.el-tabs__header
.el-tabs__nav
{
border
:
none
;
}
.el-tabs--card
>
.el-tabs__header
.el-tabs__item
{
min-width
:
116px
;
text-align
:
center
;
background
:
#f0f1fa
;
font-size
:
14px
;
border
:
none
;
}
.el-tabs--card
>
.el-tabs__header
.el-tabs__item.is-active
{
background
:
#4e68ff
;
color
:
#fff
;
}
}
}
.my_form
{
height
:
calc
(
100vh
-
280px
);
overflow-y
:
auto
;
}
.el-main
{
padding
:
0px
20px
;
}
.extra_btn
{
width
:
170px
;
text-align
:
right
;
margin-top
:
5px
;
}
.follow-tab
{
border-radius
:
4px
;
border
:
1px
solid
#cccccc
;
height
:
calc
(
100vh
-
280px
);
overflow
:
overlay
;
::v-deep
{
.tab-label
{
border-bottom
:
1px
solid
#ccc
;
padding
:
0
20px
;
height
:
52px
;
line-height
:
52px
;
}
.el-tabs__header
{
margin-left
:
0px
;
}
.
el-tabs__nav-wrap
.
is-right
:
:
after
{
width
:
0px
;
}
.el-tabs__active-bar.is-right
{
width
:
3px
;
}
.el-tabs--right
{
height
:
auto
!
important
;
}
.tab-title
{
padding
:
16px
;
background
:
#fafafa
;
color
:
#333333
;
border-bottom
:
1px
solid
#cccccc
;
}
.el-tabs__item
{
width
:
180px
;
padding
:
0
;
background
:
#fafafa
;
height
:
52px
;
line-height
:
52px
;
transition
:
all
1s
;
}
.el-tabs__item.is-active
{
background
:
transparent
;
}
}
}
.follow-list
{
border-radius
:
4px
;
border
:
1px
solid
#cccccc
;
height
:
100%
;
background
:
#fafafa
;
height
:
calc
(
100vh
-
280px
);
overflow-y
:
overlay
;
li
{
padding
:
18px
22px
;
border-bottom
:
1px
solid
#ccc
;
// cursor: pointer;
.time
{
font-size
:
14px
;
margin-bottom
:
8px
;
font-family
:
AlibabaPuHuiTiR
;
text-align
:
left
;
&
:first-child
{
color
:
#4e68ff
;
}
}
}
}
</
style
>
src/views/followupquery/components/MyCustomForm.vue
0 → 100644
View file @
e7cc4f5a
<
template
>
<div>
<el-skeleton
v-if=
"isEmpty"
animated
/>
<custom-form
v-if=
"!isEmpty"
class=
"mb-20"
v-loading=
"pageLoading"
ref=
"form"
:options=
"widgetFormPreview"
:form-edit=
"formEdit"
></custom-form>
</div>
</
template
>
<
script
>
import
{
getPatientDetail
,
getFollowDetail
}
from
"
@/api/patient.js
"
import
{
getFormDetail
}
from
"
@/api/field
"
import
CustomForm
from
"
@/components/FormComponents/CustomForm/index
"
export
default
{
name
:
"
MyCustomForm
"
,
components
:
{
CustomForm
},
props
:
{
form
:
{},
patientId
:
{},
followId
:
{},
},
data
()
{
return
{
widgetFormPreview
:
{},
loading
:
false
,
formLoading
:
false
,
formEdit
:
{},
formRecordId
:
null
,
}
},
computed
:
{
isEmpty
()
{
return
!
(
Object
.
keys
(
this
.
widgetFormPreview
)
||
this
.
widgetFormPreview
)
.
length
},
getTabFollowId
()
{
return
this
.
tabFollowId
()
},
pageLoading
()
{
return
this
.
loading
||
this
.
formLoading
},
},
watch
:
{
followId
:
{
handler
()
{
this
.
getFollowDetail
()
},
immediate
:
true
,
},
},
created
()
{
this
.
initData
()
this
.
initForm
()
},
methods
:
{
initData
()
{
this
.
getPatientDetail
()
},
initForm
()
{
this
.
formLoading
=
true
getFormDetail
(
this
.
form
.
formId
)
.
then
((
res
)
=>
{
if
(
res
.
code
===
1
&&
res
.
data
)
{
const
formJson
=
res
.
data
.
formJson
this
.
$emit
(
"
setFormJson
"
,
formJson
)
const
obj
=
eval
(
"
(
"
+
formJson
+
"
)
"
)
obj
.
disabled
=
true
obj
.
closeBtn
=
true
obj
.
detail
=
true
this
.
widgetFormPreview
=
obj
}
})
.
finally
(()
=>
{
this
.
formLoading
=
false
})
},
getFollowDetail
()
{
// 随访数据查询
if
(
!
this
.
followId
)
return
this
.
$nextTick
(()
=>
{
this
.
$refs
.
form
&&
this
.
$refs
.
form
.
resetForm
()
})
this
.
loading
=
true
getFollowDetail
({
followId
:
this
.
followId
,
formId
:
this
.
form
.
formId
,
})
.
then
((
res
)
=>
{
this
.
formatData
(
res
)
})
.
finally
(()
=>
{
this
.
loading
=
false
})
},
getPatientDetail
()
{
// 筛查数据查询
this
.
$nextTick
(()
=>
{
this
.
$refs
.
form
&&
this
.
$refs
.
form
.
resetForm
()
})
if
(
!
this
.
patientId
||
this
.
followId
)
return
this
.
loading
=
true
getPatientDetail
({
patientId
:
this
.
patientId
,
formId
:
this
.
form
.
formId
,
})
.
then
((
res
)
=>
{
this
.
formatData
(
res
)
})
.
finally
(()
=>
{
this
.
loading
=
false
})
},
formatData
(
res
,
cache
)
{
const
d
=
res
.
data
||
{}
const
form
=
d
.
data
||
{}
for
(
const
key
in
form
)
{
Object
.
prototype
.
toString
.
call
(
form
[
key
])
==
"
[object Number]
"
?
(
form
[
key
]
=
String
(
form
[
key
]))
:
""
}
this
.
formEdit
=
form
},
},
}
</
script
>
<
style
scoped
lang=
"scss"
>
.el-main
{
position
:
relative
;
padding
:
0
;
// box-shadow: 0px 5px 4px red;
.arrow
{
position
:
absolute
;
right
:
0
;
top
:
0
;
cursor
:
pointer
;
font-size
:
22px
;
z-index
:
9
;
}
.header
{
height
:
5px
;
box-shadow
:
0px
3px
4px
rgb
(
0
21
41
/
8%
);
padding-right
:
20px
;
position
:
relative
;
font-size
:
15px
;
z-index
:
999
;
}
}
.el-aside
{
padding-left
:
10px
;
border-left
:
1px
solid
#ccc
;
.side-content
{
height
:
calc
(
100vh
-
#{
"272px"
}
);
// overflow: auto;
}
}
.my-form
{
// height: calc(100vh - #{"310px"});
overflow-y
:
auto
;
padding-top
:
20px
;
// position: relative;
&
:
:-
webkit-scrollbar-thumb
{
background-color
:
#fff
;
}
&
:hover::-webkit-scrollbar-thumb
{
background-color
:
rgba
(
0
,
0
,
0
,
0
.4
);
}
&
.no-scroll
{
height
:
auto
;
}
}
.label
{
font-size
:
14px
;
color
:
#8492a6
;
line-height
:
38px
;
float
:
left
;
margin-right
:
20px
;
}
.value
{
font-size
:
14px
;
line-height
:
38px
;
float
:
left
;
font-weight
:
600
;
margin-right
:
50px
;
}
.el-slider
{
float
:
left
;
width
:
150px
;
}
</
style
>
src/views/followupquery/index.vue
View file @
e7cc4f5a
<
template
>
<!-- 随访查询 -->
<div
class=
"screeningSearch"
>
<div
class=
"top"
>
<form-components
ref=
"form"
:forms=
"formList"
:form-edit=
"formEdit"
@
handleSearch=
"onSearch"
></form-components>
</div>
<div
class=
"bot"
>
<el-table-self
ref=
"table"
:table-data=
"tableData"
:columns=
"columns"
:header-class=
"'newHeader'"
:list-loading=
"listLoading"
:current-page=
"pageIndex"
:total-count=
"total"
:page-sizes=
"pageSizes"
:page-size=
"pageSize"
@
pageSizeChange=
"handleSizeChange"
@
currentPageChange=
"handleCurrentChange"
/>
<div
v-show=
"!isDetail"
>
<div
class=
"top"
>
<form-components
ref=
"form"
:forms=
"formList"
:form-edit=
"formEdit"
@
handleSearch=
"onSearch"
></form-components>
</div>
<div
class=
"bot"
>
<el-table-self
ref=
"table"
:table-data=
"tableData"
:columns=
"columns"
:header-class=
"'newHeader'"
:list-loading=
"listLoading"
:current-page=
"pageIndex"
:total-count=
"total"
:page-sizes=
"pageSizes"
:page-size=
"pageSize"
@
pageSizeChange=
"handleSizeChange"
@
currentPageChange=
"handleCurrentChange"
/>
</div>
</div>
<FollowUpDetail
:currentRow=
"currentRow"
v-if=
"isDetail"
@
back=
"back"
></FollowUpDetail>
</div>
</
template
>
<
script
>
import
FormComponents
from
"
@/components/FormComponents
"
import
CustomsTable
from
"
@/components/CustomsTable
"
import
paginationMixin
from
"
@/components/TabComponents/mixin
"
import
searchMixin
from
"
../searchMixin
"
import
{
getCurrentFormByType
}
from
"
@/api/coop-group.js
"
import
{
getFollowSearch
}
from
"
@/api/followup
"
import
{
getDictDetail
}
from
"
@/api/dict.js
"
import
FollowUpDetail
from
"
./FollowUpDetail.vue
"
export
default
{
components
:
{
FormComponents
,
// CustomsTable
,
FollowUpDetail
,
},
mixins
:
[
paginationMixin
,
searchMixin
],
data
()
{
return
{
isDetail
:
false
,
followId
:
""
,
listLoading
:
false
,
keyword
:
""
,
...
...
@@ -98,6 +105,17 @@ export default {
return
row
.
screeningTime
?
row
.
screeningTime
:
"
--
"
},
},
{
label
:
"
审核状态
"
,
value
:
"
checkStatus
"
,
minWidth
:
120
,
formatter
:
(
row
)
=>
{
return
this
.
$handle
.
formatDicList
(
this
.
dictMap
[
"
checkStatus
"
],
String
(
row
.
checkStatus
)
)
},
},
{
label
:
"
风险评估结果
"
,
minWidth
:
120
,
...
...
@@ -138,34 +156,29 @@ export default {
operations
:
[
{
isIndex
:
true
,
func
:
this
.
rowOpration
,
func
:
this
.
handleDetail
,
formatter
(
row
)
{
return
{
label
:
"
查
询
"
,
label
:
"
查
看
"
,
type
:
"
text
"
,
}
},
},
// {
// isIndex: true,
// func: this.handleEdit,
// formatter(row) {
// if (row.checkStatus != 3 && row.checkStatus != 4) {
// return {
// label: "修改",
// type: "text",
// }
// } else {
// return {
// label: "",
// type: "text",
// style: {
// display: "none",
// },
// }
// }
// },
// },
{
isIndex
:
true
,
func
:
this
.
handleEdit
,
formatter
(
row
)
{
return
{
label
:
"
修改
"
,
type
:
"
text
"
,
}
},
isHidden
({
checkStatus
,
followBatch
})
{
return
(
checkStatus
===
3
||
checkStatus
===
4
||
followBatch
===
0
)
},
},
],
},
],
...
...
@@ -252,6 +265,7 @@ export default {
},
],
formEdit
:
{},
currentRow
:
{},
}
},
watch
:
{
...
...
@@ -262,28 +276,15 @@ export default {
pageIndex
(
val
)
{
sessionStorage
.
setItem
(
"
followQuery-pageIndex
"
,
val
)
},
followId
(
v
)
{
if
(
v
)
{
this
.
listLoading
=
true
this
.
$nextTick
(()
=>
{
setTimeout
(()
=>
{
this
.
listLoading
=
false
let
query
=
{
...
this
.
$route
.
query
}
this
.
$router
.
replace
({
query
:
{}
})
this
.
$router
.
push
({
path
:
"
/followupentry
"
,
query
:
query
,
})
},
500
)
})
}
},
},
created
()
{
this
.
initSearchForm
()
},
mounted
()
{
this
.
followId
=
this
.
$route
.
query
.
followId
const
followId
=
this
.
$route
.
query
.
followId
if
(
followId
)
{
this
.
handleDetail
({
...
this
.
$route
.
query
})
}
// this.formEdit = sessionStorage.getItem('followQuery-form') ? JSON.parse(sessionStorage.getItem('followQuery-form')) : {}
this
.
pageSize
=
Number
(
sessionStorage
.
getItem
(
"
followQuery-pageSize
"
))
||
10
this
.
pageIndex
=
...
...
@@ -291,6 +292,13 @@ export default {
this
.
getCurrentFormByType
(
2
)
},
methods
:
{
back
()
{
this
.
isDetail
=
false
const
followId
=
this
.
$route
.
query
.
followId
if
(
followId
)
{
this
.
$router
.
replace
({
path
:
"
/followupquery
"
,
query
:
{}
})
}
},
changeModified
()
{
this
.
modifiedFlag
=
!
this
.
modifiedFlag
},
...
...
@@ -310,35 +318,13 @@ export default {
followId
:
data
.
id
,
model
:
"
edit
"
,
getData
:
1
,
formType
:
2
,
},
})
},
rowOpration
(
data
,
i
,
index
)
{
console
.
log
(
data
)
if
(
data
.
followBatch
==
0
)
{
// 筛查
this
.
$router
.
push
({
path
:
"
/followupentry
"
,
query
:
{
patientId
:
data
.
patientId
,
followId
:
data
.
id
,
model
:
"
view
"
,
getData
:
1
,
formType
:
1
,
// 去筛查的表单还是随访的表单
},
})
}
else
{
this
.
$router
.
push
({
path
:
"
/followupentry
"
,
query
:
{
patientId
:
data
.
patientId
,
followId
:
data
.
id
,
model
:
"
view
"
,
getData
:
1
,
formType
:
2
,
},
})
}
handleDetail
(
row
)
{
this
.
isDetail
=
true
this
.
currentRow
=
row
},
onSearch
(
form
)
{
console
.
log
(
form
)
...
...
@@ -352,7 +338,6 @@ export default {
},
async
handleSearch
()
{
this
.
listLoading
=
true
console
.
log
(
this
.
$refs
.
form
.
form
)
let
params
=
{
pageSize
:
this
.
pageSize
,
...
...
src/views/followupresearch/index.vue
View file @
e7cc4f5a
...
...
@@ -95,6 +95,7 @@ export default {
return
row
.
screeningTime
?
row
.
screeningTime
:
"
--
"
},
},
{
label
:
"
风险评估结果
"
,
minWidth
:
120
,
...
...
@@ -275,7 +276,6 @@ export default {
},
changePage
(
v
)
{
this
.
page
[
v
.
type
]
=
v
.
value
console
.
log
(
this
.
page
)
this
.
$refs
.
customTable
.
loading
=
false
},
onSearch
(
form
)
{
...
...
@@ -285,7 +285,6 @@ export default {
this
.
handleSearch
()
},
rowOpration
(
data
,
i
)
{
console
.
log
(
"
跳转
"
,
data
,
i
)
sessionStorage
.
setItem
(
"
formEdit
"
,
JSON
.
stringify
(
data
))
this
.
$router
.
push
({
path
:
`/followupentry`
,
...
...
src/views/screening/components/ConfigForms.vue
View file @
e7cc4f5a
...
...
@@ -393,8 +393,7 @@ export default {
query
:
{
patientId
:
this
.
patientId
,
followId
:
this
.
followId
||
this
.
tabFollowId
,
model
:
"
view
"
,
getData
:
1
,
followBatch
:
1
,
},
})
this
.
$refs
.
followDialog
.
dialogVisible
=
false
...
...
src/views/screening/components/FormTab.vue
View file @
e7cc4f5a
...
...
@@ -306,8 +306,9 @@ export default {
params
.
statusMap
.
is_draft
=
this
.
isDraft
}
// 处理followId 针对随访查询的列表数据的查询和修改操作
if
(
this
.
$route
.
path
==
"
/followupentry
"
&&
this
.
activeName
!=
"
index0
"
)
{
if
(
this
.
$route
.
path
==
"
/followupentry
"
)
{
params
.
followId
=
this
.
followId
||
this
.
getTabFollowId
params
.
formRecordId
=
this
.
formData
.
formRecordId
}
this
.
$emit
(
"
handleConfirm
"
,
params
,
done
,
(
res
)
=>
{
// 多次填写的表单新增时,获取最新数据
...
...
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