Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica.cloud.web-education-admin
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
提交
打开侧边栏
com.pica.cloud.education.frontend
pica.cloud.web-education-admin
提交
ca2838cd
提交
ca2838cd
编写于
9月 29, 2019
作者:
guangjun.yang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
record-list home uniteValidate
上级
d21995f1
变更
11
显示空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
1536 行增加
和
187 行删除
+1536
-187
common.scss
src/style/common.scss
+20
-1
new-plan.vue
src/views/followup/plan-manage/new-plan.vue
+59
-41
form-template copy.vue
src/views/followup/record-manage/form-template copy.vue
+154
-0
form-template.vue
src/views/followup/record-manage/form-template.vue
+0
-2
diabetes.vue
src/views/followup/record-manage/patient-scale/diabetes.vue
+1
-0
hypertension.vue
...ews/followup/record-manage/patient-scale/hypertension.vue
+1
-0
stroke.vue
src/views/followup/record-manage/patient-scale/stroke.vue
+3
-2
record-list copy.vue
src/views/followup/record-manage/record-list copy.vue
+485
-0
record-list.vue
src/views/followup/record-manage/record-list.vue
+96
-60
home copy 2.vue
src/views/home copy 2.vue
+556
-0
home.vue
src/views/home.vue
+161
-81
未找到文件。
src/style/common.scss
浏览文件 @
ca2838cd
...
...
@@ -236,3 +236,22 @@ html,body{
background-color
:
#449284
!
important
;
border-color
:
#449284
!
important
;
}
.prot-dialog
{
.el-dialog__body
{
padding
:
25px
25px
10px
;
}
&
-tips-1
{
margin-top
:
0px
;
}
&
-tips-2
{
margin-top
:
20px
;
font-size
:
12px
;
color
:
#aaa
;
}
&
-tips-3
{
margin-top
:
20px
;
font-size
:
12px
;
color
:
#FF9A4B
;
}
}
\ No newline at end of file
src/views/followup/plan-manage/new-plan.vue
浏览文件 @
ca2838cd
...
...
@@ -181,9 +181,10 @@
return
time
.
getTime
()
<
Date
.
now
()
-
8.64e7
}
},
isShowProtocolDialog
:
fals
e
,
isShowProtocolDialog
:
tru
e
,
isSentedProt
:
false
,
patientIds
:
[]
patientIds
:
[],
sendMsgPatientIds
:
[]
}
},
created
()
{
...
...
@@ -201,11 +202,48 @@
methods
:
{
...
mapActions
(
'planManage'
,
[
'getTimeNodeList'
,
'getRemarkOption'
,
'getFollowupTemplate'
]),
// Add by Anndy Yang
// 统一验证:量表内是否存在敏感字段、居民是否签署隐私协议、7天内是否发送过授权短信
async
uniteValidateAction
()
{
let
validParams
=
{
scaleNo
:
''
,
patientIds
:
this
.
patientIds
,
// pc端只传这个字段
// planPatientsTimesId: planPatientsTimesId, // app端只传这个字段
protocolType
:
5
,
userType
:
1
,
validateType
:
2
};
let
r
=
await
uniteValidate
(
validParams
).
then
(
res
=>
{
let
result
=
res
;
// 请求成功
if
(
result
.
code
===
'000000'
)
{
let
levelType
=
result
.
data
.
levelType
;
// 没有敏感字段或者居民已经签订过协议,则直接返回
if
(
levelType
===
1
||
levelType
===
2
)
{
return
0
;
}
else
if
(
levelType
===
3
)
{
this
.
isShowProtocolDialog
=
true
;
this
.
isSentedProt
=
false
;
return
1
;
}
else
if
(
levelType
===
4
)
{
this
.
isShowProtocolDialog
=
true
;
this
.
isSentedProt
=
true
;
this
.
sendMsgPatientIds
=
result
.
data
.
ids
;
return
1
;
}
}
});
},
// 发送协议授权短信给居民
sendMsgToPatients
()
{
authMessage
({
patientIds
:
this
.
p
atientIds
}).
then
(
res
=>
{
authMessage
({
patientIds
:
this
.
sendMsgP
atientIds
}).
then
(
res
=>
{
if
(
res
.
code
===
'000000'
)
{
this
.
$toast
(
'已发送,请尽快联系居民同意授权'
);
this
.
$message
({
message
:
'已发送,请尽快联系居民同意授权'
,
type
:
'success'
});
}
});
this
.
isShowDialog
=
false
;
...
...
@@ -227,8 +265,8 @@
this
.
checkForm
=
false
if
(
val
.
status
){
this
.
baseInfo
.
fPlanTimeReqList
=
val
.
setTimeNodeList
//
this.baseInfo.time = (new Date(this.baseInfo.time).getTime())
//
console.log(this.baseInfo.time)
//
this.baseInfo.time = (new Date(this.baseInfo.time).getTime())
//
console.log(this.baseInfo.time)
// 提交
createFollowPlan
(
this
.
baseInfo
).
then
(
res
=>
{
if
(
res
.
code
==
'000000'
){
...
...
@@ -273,6 +311,9 @@
this
.
isShowSelectPatient
=
getArguments
[
0
];
const
selectPatients
=
getArguments
[
1
];
// 每次选中获取的人
this
.
hasSelectedList
=
selectPatients
;
this
.
patientIds
=
selectPatients
.
map
(
item
=>
{
return
item
.
patientId
})
// console.log('呵呵呵呵',arguments)
this
.
baseInfo
.
patientIdList
=
[];
selectPatients
.
forEach
((
item
)
=>
{
...
...
@@ -299,43 +340,17 @@
this
.
$router
.
push
({
path
:
'/followup/plan-manage/plan-list'
})
});
},
nextClick
(
formName
)
{
// 创建/修改履约计划
// 4、校验居民/医生是否签署协议
alert
(
'创建/修改履约计划'
)
// return
// Add by Anndy Yang
// 统一验证:量表内是否存在敏感字段、居民是否签署隐私协议、7天内是否发送过授权短信
let
validParams
=
{
scaleNo
:
''
,
patientIds
:
this
.
hasSelectedList
,
// pc端只传这个字段
// planPatientsTimesId: planPatientsTimesId, // app端只传这个字段
protocolType
:
5
,
userType
:
1
,
validateType
:
1
};
uniteValidate
(
validParams
).
then
(
res
=>
{
let
result
=
res
;
// 请求成功
if
(
result
.
code
===
'000000'
)
{
let
levelType
=
result
.
data
.
levelType
;
// 没有敏感字段或者居民已经签订过协议,则直接返回
if
(
levelType
===
1
||
levelType
===
2
)
{
console
.
log
(
this
.
hasSelectedList
)
if
(
this
.
uniteValidateAction
()
==
1
)
{
return
;
}
else
if
(
levelType
===
3
)
{
this
.
isShowProtocolDialog
=
true
;
this
.
isSentedProt
=
false
;
}
else
if
(
levelType
===
4
)
{
this
.
isShowProtocolDialog
=
true
;
this
.
isSentedProt
=
true
;
// this.patientIds = result.data.ids;
}
}
});
};
// return
// 为方便调试,不做校验
// this.activeTab = 'second';
this
.
$refs
[
formName
].
validate
((
valid
)
=>
{
...
...
@@ -351,6 +366,9 @@
this
.
resourceId
=
String
(
this
.
baseInfo
.
resourceId
)
// console.log( this.baseInfo.resourceId)
if
(
this
.
baseInfo
.
resourceId
){
if
(
this
.
uniteValidateAction
()
==
1
)
{
return
;
};
getFollowupTableTemplate
(
this
.
baseInfo
.
resourceId
).
then
(
res
=>
{
this
.
isStandedTemplate
=
true
this
.
standedTimeNodeList
=
res
.
data
...
...
src/views/followup/record-manage/form-template copy.vue
0 → 100644
浏览文件 @
ca2838cd
<
template
>
<div
class=
"form-show-scrollY"
>
<div
class=
"form-template"
>
<BreadCrumb
:curmbFirst=
"'履约管理'"
:curmbSecond=
"breadTxt"
:curmbThird=
"'录入量表'"
:jumPathThird=
"jumPathThird"
/>
<div
class=
"resident-content f-main-content screenSet"
>
<el-row
:gutter=
"24"
align=
"middle"
type=
"flex"
class=
"form-header"
>
<el-col
:span=
"18"
>
{{
titleText
}}
</el-col>
<el-col
:span=
"6"
v-if=
"showBtn=='1'"
>
<el-button
type=
"primary"
size=
"small"
class=
"formSubmit"
@
click=
"formSubmit(1)"
>
提交
</el-button>
<el-button
class=
"button-white formTempSave"
size=
"small"
plain
@
click=
"formSubmit(2)"
>
暂存
</el-button>
</el-col>
</el-row>
<div
class=
"title-box"
>
<h1>
{{
titleText
}}
</h1>
<h2>
{{
titleSmText
}}
</h2>
</div>
<!--模板页面除了显示居民基本信息,将病种展示作为组件引入-->
<div
class=
"form-container"
>
<!--脑卒中-->
<stroke
v-if=
"scaleNo=='SCALE0003'"
:showBtn=
"showBtn"
:scaleType=
"scaleNo"
:checkStart=
"checkStart"
@
checkEnd=
"checkEnd"
:saveWay=
"saveWay"
/>
<!--高血压-->
<hypertension
v-if=
"scaleNo=='SCALE0001'"
:showBtn=
"showBtn"
:scaleType=
"scaleNo"
:checkStart=
"checkStart"
@
checkEnd=
"checkEnd"
:saveWay=
"saveWay"
></hypertension>
<!--糖尿病-->
<diabetes
v-if=
"scaleNo=='SCALE0002'"
:showBtn=
"showBtn"
:scaleType=
"scaleNo"
:checkStart=
"checkStart"
@
checkEnd=
"checkEnd"
:saveWay=
"saveWay"
></diabetes>
</div>
</div>
</div>
</div>
</
template
>
<
script
>
import
BreadCrumb
from
'@/components/breadcrumb'
// 脑卒中
import
stroke
from
'./patient-scale/stroke'
import
hypertension
from
'./patient-scale/hypertension'
import
diabetes
from
'./patient-scale/diabetes'
export
default
{
data
(){
return
{
titleText
:
''
,
titleSmText
:
''
,
breadTxt
:
'录入管理'
,
jumPathThird
:
'/followup/record-manage/record-list'
,
checkStart
:
false
,
showBtn
:
'1'
,
// resourceId: '',
saveWay
:
1
,
scaleNo
:
''
}
},
components
:
{
stroke
,
hypertension
,
BreadCrumb
,
diabetes
,
},
methods
:
{
formSubmit
(
val
){
this
.
saveWay
=
val
this
.
checkStart
=
true
;
},
checkEnd
(
val
){
this
.
checkStart
=
false
}
},
created
(){
this
.
scaleNo
=
this
.
$route
.
query
.
scaleNo
;
console
.
log
(
'scaleNo=>'
,
this
.
scaleNo
)
// 0003 脑卒中、0002 糖尿病、0001 高血压
if
(
this
.
scaleNo
==
'SCALE0003'
){
this
.
titleText
=
'心脑血管病危险因素社区、乡镇人群履约表'
;
this
.
titleSmText
=
'(适用于社区、乡镇脑卒中高危人群满6个月、12个月时履约和中危人群满12个月时履约使用)'
;
}
else
if
(
this
.
scaleNo
==
'SCALE0001'
){
this
.
titleText
=
'高血压患者履约服务记录表'
;
this
.
titleSmText
=
'(本表为高血压患者在接受履约服务时由医生填写)'
;
}
else
if
(
this
.
scaleNo
==
'SCALE0002'
){
this
.
titleText
=
'2 型糖尿病患者履约服务记录表 '
;
this
.
titleSmText
=
'(本表为2型糖尿病患者在接受履约服务时由医生填写)'
;
}
if
(
this
.
$route
.
query
.
showBtn
==
'0'
){
this
.
showBtn
=
String
(
this
.
$route
.
query
.
showBtn
);
}
},
}
</
script
>
<
style
lang=
"scss"
scoped
>
@import
'../../../style/followup/followup-common'
;
@import
'../../../style/followup/element-reset.css'
;
.form-show-scrollY
{
width
:
100%
;
height
:
100%
;
overflow
:
hidden
;
overflow-y
:
scroll
;
&
:
:-
webkit-scrollbar
{
width
:
8px
;
height
:
8px
;
background
:
#fff
;
}
}
.form-template
{
.form-header
{
/*position: fixed;*/
/*z-index:100000;*/
line-height
:
60px
;
height
:
60px
;
border-bottom
:
1px
solid
#e1e1e1
;
}
.patient-base-info
{
line-height
:
60px
;
height
:
60px
;
border-bottom
:
1px
dashed
#ccc
;
[
class
*=
el-col-
]
{
float
:
left
;
}
}
.title-box
{
padding
:
20px
;
text-align
:
center
;
h1
{
font-size
:
18px
;
font-weight
:
normal
;
}
h2
{
font-size
:
16px
;
font-weight
:
normal
;
margin-top
:
15px
;
}
}
.formSubmit
{
float
:
right
;
margin-left
:
10px
;
}
.formTempSave
{
float
:
right
;
}
.form-container
{
padding
:
0
10px
;
}
}
.title
{
font-weight
:
bold
;
}
</
style
>
src/views/followup/record-manage/form-template.vue
浏览文件 @
ca2838cd
...
...
@@ -32,8 +32,6 @@
<!--糖尿病-->
<diabetes
v-if=
"scaleNo=='SCALE0002'"
:showBtn=
"showBtn"
:scaleType=
"scaleNo"
:checkStart=
"checkStart"
@
checkEnd=
"checkEnd"
:saveWay=
"saveWay"
></diabetes>
</div>
</div>
</div>
</div>
...
...
src/views/followup/record-manage/patient-scale/diabetes.vue
浏览文件 @
ca2838cd
...
...
@@ -116,6 +116,7 @@
})
return
;
}
else
{
// 校验内容是否全部填写
this
.
valid
=
true
;
}
}
...
...
src/views/followup/record-manage/patient-scale/hypertension.vue
浏览文件 @
ca2838cd
...
...
@@ -114,6 +114,7 @@
})
return
;
}
else
{
// 校验内容是否全部填写
this
.
valid
=
true
;
}
}
...
...
src/views/followup/record-manage/patient-scale/stroke.vue
浏览文件 @
ca2838cd
<
template
>
<div
class=
"form-wrap"
>
<div
class=
"form-wrap"
v-if=
"canRender"
>
<!--渲染不同的模块表单-->
<div
v-if=
"canRender"
v-for=
"(item, index) in addComponents
"
>
<div
v-for=
"(item, index) in addComponents"
:key=
"index
"
>
<div
v-if=
"item.showModule"
class=
"content-box"
>
<div
v-if=
"!item.hideTitle"
class=
"title"
>
{{
item
.
title
}}
</div>
<el-form
...
...
@@ -116,6 +116,7 @@
})
return
;
}
else
{
// 校验内容是否全部填写
this
.
valid
=
true
;
}
}
...
...
src/views/followup/record-manage/record-list copy.vue
0 → 100644
浏览文件 @
ca2838cd
<
template
>
<div
class=
"record-list-wrapper"
>
<bread-crumb
:curmbFirst=
"curmbFirst"
:curmbSecond=
"curmbSecond"
></bread-crumb>
<div
class=
"record-list-content f-main-content screenSet"
>
<div
class=
"page-title"
>
录入管理
</div>
<div
class=
"search-div"
>
<div
class=
"search-input"
>
<el-form
ref=
"serchForm"
:model=
"searchData"
:inline=
"true"
label-suffix=
":"
label-width=
"125px"
size=
"small"
>
<el-form-item
label=
"履约计划名称"
>
<el-input
v-model=
"searchData.planName"
placeholder=
"请输入关键词"
style=
"width: 250px"
clearable
></el-input>
</el-form-item>
<el-form-item
label=
"履约时间范围"
>
<el-date-picker
v-model=
"timeRangeList"
type=
"datetimerange"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
value-format=
"yyyy-MM-dd HH:mm:ss"
clearable
style=
"width:400px;"
></el-date-picker>
</el-form-item>
<el-form-item
label=
"姓名"
>
<el-input
v-model=
"searchData.nickname"
placeholder=
"请输入姓名"
clearable
></el-input>
</el-form-item>
<el-form-item
label=
"手机号"
>
<el-input
v-model=
"searchData.mobilePhone"
placeholder=
"请输入手机号"
maxlength=
"11"
clearable
></el-input>
</el-form-item>
</el-form>
</div>
<div
class=
"search-btn"
>
<el-button
class=
"button-green"
size=
"small"
type=
"primary"
@
click=
"search(1)"
>
查询
</el-button>
<el-button
class=
"button-white"
size=
"small"
plain
@
click=
"reseat"
>
重置
</el-button>
</div>
</div>
<div
class=
"table-content"
>
<el-radio-group
v-model=
"activeName"
@
change=
"handlerClick"
size=
"small"
>
<el-radio-button
label
>
全部(
{{
recordList
.
count
}}
)
</el-radio-button>
<el-radio-button
label=
"2"
>
已完成(
{{
recordList
.
finishedCount
}}
)
</el-radio-button>
<el-radio-button
label=
"1"
>
未完成(
{{
recordList
.
unfinishedCount
}}
)
</el-radio-button>
</el-radio-group>
<el-table
:data=
"recordList.enteringDtos"
style=
"width: 100%;margin-top: 20px;"
>
<el-table-column
prop=
"nickname"
label=
"姓名"
min-width=
"100"
align=
"center"
>
<template
slot-scope=
"scope"
>
<!--
<span
style=
"cursor: pointer"
@
click=
"visitDetail(scope.row)"
>
{{
scope
.
row
.
nickname
}}
</span>
-->
<el-button
type=
"text"
@
click=
"visitDetail(scope.row)"
>
{{
scope
.
row
.
nickname
}}
</el-button>
</
template
>
</el-table-column>
<el-table-column
prop=
"mobilePhone"
label=
"手机号"
min-width=
"100"
align=
"center"
></el-table-column>
<el-table-column
prop=
"name"
label=
"履约计划名称"
min-width=
"150"
align=
"center"
></el-table-column>
<el-table-column
prop=
"followupType"
label=
"履约时间"
min-width=
"200"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
fuPlanInfo
}}
</span>
<br
/>
<span
v-if=
"scope.row.fuPlanExecuteTime"
>
{{
scope
.
row
.
fuPlanExecuteTime
}}
</span>
<span
v-if=
"!scope.row.fuPlanExecuteTime && scope.row.appointmentTime"
>
{{
scope
.
row
.
appointmentTime
}}
</span>
<br
/>
<span
v-if=
"!scope.row.fuPlanExecuteTime && !scope.row.appointmentTime"
>
{{
scope
.
row
.
fuPlanTime
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"status"
label=
"履约状态"
min-width=
"100"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<span
:class=
"scope.row.status == 1 ? 'status-span': ''"
>
{{
scope
.
row
.
status
|
statusFileter
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
fixed=
"right"
align=
"center"
min-width=
"210"
>
<
template
slot-scope=
"scope"
>
<el-button
class=
"btn-right-class"
type=
"text"
@
click=
"editRow(scope.row)"
>
履约录入
</el-button>
|
<el-button
class=
"btn-right-class"
type=
"text"
@
click=
"changeStatusRow(scope.row)"
>
变更履约状态
</el-button>
<!--|
<el-button
type=
"text"
@
click=
"sendRow(scope.row)"
>
发送患教
</el-button>
-->
</
template
>
</el-table-column>
</el-table>
<el-row
type=
"flex"
justify=
"end"
class=
"margin-top20"
>
<el-pagination
background
v-if=
"hasData"
@
size-change=
"handleSizeChangePre"
@
current-change=
"handleCurrentChangePre"
layout=
"total, sizes, prev, pager, next, jumper"
:current-page=
"paginationSet.pageNo"
:page-sizes=
"paginationSet.pageSizes"
:page-size=
"paginationSet.pageSize"
:total=
"paginationSet.total"
></el-pagination>
</el-row>
</div>
</div>
<followup-detail
:dialogFormVisible=
"dialogDetailShow"
@
closeDetail=
"closeDetail"
:enteringInfo=
"enteringInfo"
></followup-detail>
<change-followup-status
:isShowChangeDialog=
"isShowChangeDialog"
:statusForm=
"statusForm"
@
closeChangeStatus=
"closeChangeStatus"
></change-followup-status>
<el-dialog
title=
"选择量表"
:visible
.
sync=
"selectFormShow"
center
:close-on-click-modal=
"false"
:close-on-press-escape=
"false"
width=
"400px"
:before-close=
"closeForm"
>
<div
class=
"list-content"
>
<p
v-for=
"(item, index) in formList.scalesList"
:key=
"index"
@
click=
"goFormView(item)"
>
{{item.sendContent}}
</p>
</div>
</el-dialog>
<!-- 协议提醒 -->
<el-dialog
class=
"prot-dialog"
title
:visible
.
sync=
"isShowProtocolDialog1"
width=
"30%"
center
:show-close=
"false"
>
<p
class=
"prot-dialog-tips-1"
>
根据相关规定,在您开展履约之前,需要居民授权同意《云鹊平台隐私协议》,否则将导致履约量表部分信息无法录入
</p>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"small"
type=
"primary"
@
click=
"isShowProtocolDialog = false"
>
我知道了
</el-button>
</span>
</el-dialog>
<!-- 敏感词及协议校验 -->
<el-dialog
class=
"prot-dialog"
title=
""
:visible
.
sync=
"isShowProtocolDialog"
width=
"30%"
center
:show-close=
false
>
<p
class=
"prot-dialog-tips-1"
>
由于该居民尚未同意《云鹊平台隐私协议》,将导致履约量表部分信息无法录入,为了方便您的工作开展,请您发送短信提醒居民完成授权
</p>
<p
v-show=
"!isSentedProt"
class=
"prot-dialog-tips-2"
>
若您选择暂不发送,您只能录入量表的非敏感信息
</p>
<p
v-show=
"isSentedProt"
class=
"prot-dialog-tips-3"
>
为避免打扰居民,7天内只能发送1次,您已发送过短信,请尽快联系居民同意授权
</p>
<span
v-show=
"!isSentedProt"
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"small"
@
click=
"closeProtocolDialog"
>
暂不发送
</el-button>
<el-button
size=
"small"
type=
"primary"
@
click=
"sendMsg"
>
发送短信
</el-button>
</span>
<span
v-show=
"isSentedProt"
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"small"
type=
"primary"
@
click=
"closeProtocolDialog"
>
我知道了
</el-button>
</span>
</el-dialog>
</div>
</template>
<
script
>
import
BreadCrumb
from
"@/components/breadcrumb"
;
import
followupDetail
from
"./dialog/followupDetail"
;
import
ChangeFollowupStatus
from
"./dialog/change-followup-status"
;
import
{
getSaasDomain
}
from
"@/utils/index"
;
import
{
getFirstAccess
}
from
'@/utils/followup/followapis'
import
{
mapState
,
mapGetters
,
mapActions
}
from
"vuex"
;
export
default
{
components
:
{
BreadCrumb
,
followupDetail
,
ChangeFollowupStatus
},
data
()
{
return
{
curmbFirst
:
"履约管理"
,
curmbSecond
:
"录入管理"
,
timeRangeList
:
[],
searchData
:
{
planName
:
""
,
beginTime
:
""
,
endTime
:
""
,
nickname
:
""
,
mobilePhone
:
""
},
activeName
:
""
,
paginationSet
:
{
pageNo
:
1
,
pageSize
:
10
,
total
:
0
,
pageSizes
:
[
10
,
20
,
50
,
100
]
},
statusForm
:
{},
enteringRow
:
{},
dialogDetailShow
:
false
,
isShowChangeDialog
:
false
,
hasData
:
false
,
selectFormShow
:
false
,
ScaleData
:
{},
isShowProtocolDialog1
:
false
,
isShowProtocolDialog
:
false
,
scaleQuery
:
{},
isSentedProt
:
false
};
},
computed
:
{
...
mapState
(
"recordManage"
,
{
recordList
:
state
=>
state
.
recordList
,
enteringInfo
:
state
=>
state
.
enteringInfo
,
formList
:
state
=>
state
.
formList
}),
...
mapGetters
([
"_token"
])
},
created
()
{
// 验证是否首次进入 ################
// this.init();
this
.
search
(
1
);
},
mounted
()
{
this
.
isFirstEnter
();
},
methods
:
{
...
mapActions
(
"recordManage"
,
[
"getRecordList"
,
"getEnteringInfo"
,
"getFormList"
]),
// 验证是否首次进入 ################
isFirstEnter
()
{
getFirstAccess
().
then
((
res
)
=>
{
if
(
res
.
code
==
'000000'
)
{
this
.
isShowProtocolDialog1
=
res
.
data
}
});
},
async
search
(
currentPage
)
{
if
(
this
.
timeRangeList
)
{
this
.
searchData
.
beginTime
=
this
.
timeRangeList
[
0
];
this
.
searchData
.
endTime
=
this
.
timeRangeList
[
1
];
}
else
{
this
.
searchData
.
beginTime
=
""
;
this
.
searchData
.
endTime
=
""
;
}
await
this
.
getRecordList
({
...
this
.
searchData
,
status
:
this
.
activeName
,
pageNo
:
currentPage
||
this
.
paginationSet
.
pageNo
,
pageSize
:
this
.
paginationSet
.
pageSize
});
if
(
this
.
recordList
.
enteringDtos
)
{
if
(
this
.
recordList
.
enteringDtos
.
length
>
0
)
{
this
.
hasData
=
true
;
}
else
{
this
.
hasData
=
false
;
}
}
const
{
pageNo
,
pageSize
,
count
,
finishedCount
,
unfinishedCount
}
=
this
.
recordList
;
if
(
this
.
activeName
==
""
)
{
this
.
paginationSet
.
total
=
count
;
}
else
if
(
this
.
activeName
==
2
)
{
this
.
paginationSet
.
total
=
finishedCount
;
}
else
if
(
this
.
activeName
==
1
)
{
this
.
paginationSet
.
total
=
unfinishedCount
;
}
this
.
paginationSet
=
{
...
this
.
paginationSet
,
pageNo
,
pageSize
:
pageSize
};
},
reseat
()
{
this
.
searchData
.
planName
=
""
;
this
.
searchData
.
nickname
=
""
;
this
.
searchData
.
mobilePhone
=
""
;
this
.
timeRangeList
=
[];
this
.
searchData
.
beginTime
=
""
;
this
.
searchData
.
endTime
=
""
;
this
.
search
(
1
);
},
async
visitDetail
(
row
)
{
await
this
.
getEnteringInfo
({
patientId
:
row
.
patientId
,
fuPlanPatientTimesId
:
row
.
fuPlanPatientTimesId
});
this
.
dialogDetailShow
=
true
;
// this.enteringRow = row;
},
closeDetail
(
val
)
{
this
.
dialogDetailShow
=
val
;
},
handlerClick
()
{
this
.
search
(
1
);
},
async
editRow
(
row
)
{
await
this
.
getFormList
(
row
.
fuPlanTimesId
);
//获取量表列表
//获取量表列表情况
if
(
this
.
formList
.
scalesList
.
length
>
1
)
{
this
.
selectFormShow
=
true
;
this
.
ScaleData
=
{
doctorId
:
this
.
formList
.
doctorId
,
planPatientsTimesId
:
row
.
fuPlanPatientTimesId
};
}
else
if
(
this
.
formList
.
scalesList
.
length
===
1
)
{
this
.
$router
.
push
({
path
:
"/followup/record-manage/form-template"
,
query
:
{
doctorId
:
this
.
formList
.
doctorId
,
scaleNo
:
this
.
formList
.
scalesList
[
0
].
resourceId
,
planPatientsTimesId
:
row
.
fuPlanPatientTimesId
,
planTimesId
:
row
.
planTimesId
,
showBtn
:
1
}
});
// this.scaleQuery = {
// doctorId: this.formList.doctorId,
// scaleNo: this.formList.scalesList[0].resourceId,
// planPatientsTimesId: row.planPatientTimesId,
// planTimesId: row.planTimesId,
// showBtn: 1
// }
// this.needSign()
}
else
{
this
.
$message
.
warning
(
"暂无量表!"
);
}
// 不区分量表列表长度问题,直接调试量表录入
// this.$router.push({
// name: 'formTemplate',
// params: {
// data: row
// }
// })
},
changeStatusRow
(
row
)
{
this
.
statusForm
=
row
;
this
.
isShowChangeDialog
=
true
;
},
sendRow
(
row
)
{
let
saasUrl
=
getSaasDomain
(
`/pica-frontend/patientEduManage/pica_patient_edu_manage.html#/pageTab/message?patientId=
${
row
.
patientId
}
&nickname=
${
row
.
nickname
}
&token=
${
this
.
_token
}
`
);
// let saasUrl = getSaasDomain(`/pica-frontend/patientEduManage/pica_patient_edu_manage.html#/pageTab/message?patientId=${row.patientId}&nickname=${row.nickname}&token=8143DC2A026B4602BF7B746FB5AEE9A1`);
window
.
open
(
saasUrl
);
},
handleSizeChangePre
(
pageSize
)
{
this
.
paginationSet
[
"pageSize"
]
=
pageSize
;
this
.
paginationSet
[
"pageNo"
]
=
1
;
this
.
search
();
},
handleCurrentChangePre
(
pageNo
)
{
this
.
paginationSet
[
"pageNo"
]
=
pageNo
;
this
.
search
();
},
closeChangeStatus
(
val
)
{
this
.
isShowChangeDialog
=
val
;
this
.
search
();
// let getArguments = arguments[0];
// this.isShowChangeDialog = getArguments[0];
// this.statusForm = getArguments[1];
},
goFormView
(
item
)
{
this
.
selectFormShow
=
false
;
this
.
$router
.
push
({
path
:
"/followup/record-manage/form-template"
,
query
:
{
doctorId
:
this
.
ScaleData
.
doctorId
,
scaleNo
:
item
.
resourceId
,
planPatientsTimesId
:
this
.
ScaleData
.
planPatientsTimesId
,
planTimesId
:
item
.
planTimesId
,
showBtn
:
1
}
});
// this.scaleQuery = {
// doctorId: this.ScaleData.doctorId,
// scaleNo: item.resourceId,
// planPatientsTimesId: this.ScaleData.planPatientsTimesId,
// planTimesId: item.planTimesId,
// showBtn: 1
// }
// this.needSign()
},
closeForm
()
{
this
.
selectFormShow
=
false
;
},
// 敏感词校验与签署协议逻辑
// 1. 判断量表内是否存在敏感词
// 2. 判断居民是否存签署协议
// 3. 七天内是否发送过
needSign
(
scaleId
,
query
)
{
// let statusConfig =await getStatusByScaleId(scaleId)
let
statusConfig
=
{
isSensitive
:
1
,
// 量表内是否存在敏感词 0: 否;1: 是
hasProtocol
:
0
,
// 居民是否存签署协议 0: 否;1: 是
hasSented
:
0
// 七天内是否发送过 0: 否;1: 是
};
if
(
statusConfig
.
isSensitive
==
1
&&
statusConfig
.
hasProtocol
==
0
)
{
this
.
isShowProtocolDialog
=
true
this
.
isSentedProt
=
statusConfig
.
hasSented
==
1
}
else
{
this
.
jumpToScale
()
}
},
// 统一跳转到量表页面
jumpToScale
()
{
// this.$router.push({
// path: "/followup/record-manage/form-template",
// query: this.scaleQuery
// });
},
// 关闭协议确认窗口
closeProtocolDialog
()
{
this
.
isShowProtocolDialog
=
false
this
.
jumpToScale
()
},
// 发送短信通知
sendMsg
(
residentId
)
{
// this.sendMsgToResident(residentId);
this
.
closeProtocolDialog
()
},
},
filters
:
{
statusFileter
:
function
(
value
)
{
if
(
!
value
&&
value
!=
0
)
{
return
""
;
}
else
{
let
hash
=
{
1
:
"未完成"
,
2
:
"已完成"
};
return
hash
[
value
];
}
}
}
};
</
script
>
<
style
scoped
lang=
"scss"
>
@import
"../../../style/followup/followup-common"
;
@import
"../../../style/followup/element-reset.css"
;
.record-list-wrapper
{
.record-list-content
{
.search-input
{
max-width
:
none
;
flex
:
1
;
}
.margin-top20
{
margin-top
:
20px
;
}
.status-span
{
color
:
$picaGreen
;
}
}
.list-content
{
p
{
cursor
:
pointer
;
line-height
:
30px
;
text-decoration
:
underline
;
color
:
$picaGreen
;
}
}
}
</
style
>
src/views/followup/record-manage/record-list.vue
浏览文件 @
ca2838cd
...
...
@@ -176,7 +176,7 @@ import BreadCrumb from "@/components/breadcrumb";
import
followupDetail
from
"./dialog/followupDetail"
;
import
ChangeFollowupStatus
from
"./dialog/change-followup-status"
;
import
{
getSaasDomain
}
from
"@/utils/index"
;
import
{
getFirstAccess
}
from
'@/utils/followup/followapis'
import
{
getFirstAccess
,
uniteValidate
,
authMessage
}
from
'@/utils/followup/followapis'
import
{
mapState
,
mapGetters
,
mapActions
}
from
"vuex"
;
export
default
{
...
...
@@ -214,7 +214,10 @@ export default {
isShowProtocolDialog1
:
false
,
isShowProtocolDialog
:
false
,
scaleQuery
:
{},
isSentedProt
:
false
isSentedProt
:
false
,
scaleNo
:
''
,
patientIds
:
[],
sendMsgPatientIds
:
[],
};
},
computed
:
{
...
...
@@ -315,6 +318,7 @@ export default {
async
editRow
(
row
)
{
await
this
.
getFormList
(
row
.
fuPlanTimesId
);
//获取量表列表
//获取量表列表情况
this
.
patientIds
=
[
row
.
patientId
];
if
(
this
.
formList
.
scalesList
.
length
>
1
)
{
this
.
selectFormShow
=
true
;
this
.
ScaleData
=
{
...
...
@@ -322,24 +326,26 @@ export default {
planPatientsTimesId
:
row
.
fuPlanPatientTimesId
};
}
else
if
(
this
.
formList
.
scalesList
.
length
===
1
)
{
this
.
$router
.
push
({
path
:
"/followup/record-manage/form-template"
,
query
:
{
// this.$router.push({
// path: "/followup/record-manage/form-template",
// query: {
// doctorId: this.formList.doctorId,
// scaleNo: this.formList.scalesList[0].resourceId,
// planPatientsTimesId: row.fuPlanPatientTimesId,
// planTimesId: row.planTimesId,
// showBtn: 1
// }
// });
this
.
scaleQuery
=
{
doctorId
:
this
.
formList
.
doctorId
,
scaleNo
:
this
.
formList
.
scalesList
[
0
].
resourceId
,
planPatientsTimesId
:
row
.
fuPlanPatientTimesId
,
planTimesId
:
row
.
planTimesId
,
showBtn
:
1
}
});
// this.scaleQuery = {
// doctorId: this.formList.doctorId,
// scaleNo: this.formList.scalesList[0].resourceId,
// planPatientsTimesId: row.planPatientTimesId,
// planTimesId: row.planTimesId,
// showBtn: 1
// }
// this.needSign()
this
.
scaleNo
=
this
.
formList
.
scalesList
[
0
].
resourceId
;
this
.
uniteValidateAction
()
}
else
{
this
.
$message
.
warning
(
"暂无量表!"
);
}
...
...
@@ -380,52 +386,82 @@ export default {
},
goFormView
(
item
)
{
this
.
selectFormShow
=
false
;
this
.
$router
.
push
({
path
:
"/followup/record-manage/form-template"
,
query
:
{
doctorId
:
this
.
ScaleData
.
doctorId
,
scaleNo
:
item
.
resourceId
,
planPatientsTimesId
:
this
.
ScaleData
.
planPatientsTimesId
,
planTimesId
:
item
.
planTimesId
,
showBtn
:
1
}
});
// this.scaleQuery = {
// this.$router.push({
// path: "/followup/record-manage/form-template",
// query: {
// doctorId: this.ScaleData.doctorId,
// scaleNo: item.resourceId,
// planPatientsTimesId: this.ScaleData.planPatientsTimesId,
// planTimesId: item.planTimesId,
// showBtn: 1
// }
// this.needSign()
// });
this
.
scaleQuery
=
{
doctorId
:
this
.
ScaleData
.
doctorId
,
scaleNo
:
item
.
resourceId
,
planPatientsTimesId
:
this
.
ScaleData
.
planPatientsTimesId
,
planTimesId
:
item
.
planTimesId
,
showBtn
:
1
};
this
.
scaleNo
=
item
.
resourceId
;
// this.patientIds = [this.ScaleData.patientId];
this
.
uniteValidateAction
();
},
closeForm
()
{
this
.
selectFormShow
=
false
;
},
// 敏感词校验与签署协议逻辑
// 1. 判断量表内是否存在敏感词
// 2. 判断居民是否存签署协议
// 3. 七天内是否发送过
needSign
(
scaleId
,
query
)
{
// let statusConfig =await getStatusByScaleId(scaleId)
let
statusConfig
=
{
isSensitive
:
1
,
// 量表内是否存在敏感词 0: 否;1: 是
hasProtocol
:
0
,
// 居民是否存签署协议 0: 否;1: 是
hasSented
:
0
// 七天内是否发送过 0: 否;1: 是
// Add by Anndy Yang
// 统一验证:量表内是否存在敏感字段、居民是否签署隐私协议、7天内是否发送过授权短信
uniteValidateAction
()
{
let
validParams
=
{
scaleNo
:
this
.
scaleNo
,
patientIds
:
this
.
patientIds
,
// pc端只传这个字段
// planPatientsTimesId: planPatientsTimesId, // app端只传这个字段
protocolType
:
5
,
userType
:
1
,
validateType
:
1
};
if
(
statusConfig
.
isSensitive
==
1
&&
statusConfig
.
hasProtocol
==
0
)
{
this
.
isShowProtocolDialog
=
true
this
.
isSentedProt
=
statusConfig
.
hasSented
==
1
}
else
{
this
.
jumpToScale
()
uniteValidate
(
validParams
).
then
(
res
=>
{
let
result
=
res
;
// 请求成功
if
(
result
.
code
===
'000000'
)
{
let
levelType
=
result
.
data
.
levelType
;
// 没有敏感字段或者居民已经签订过协议,则直接返回
if
(
levelType
===
1
||
levelType
===
2
)
{
jumpToScale
();
}
else
if
(
levelType
===
3
)
{
this
.
isShowProtocolDialog
=
true
;
this
.
isSentedProt
=
true
;
}
else
if
(
levelType
===
4
)
{
this
.
isShowProtocolDialog
=
true
;
this
.
isSentedProt
=
false
;
this
.
sendMsgPatientIds
=
result
.
data
.
ids
;
}
}
});
},
// 发送协议授权短信给居民
sendMsgToPatients
()
{
authMessage
({
patientIds
:
this
.
sendMsgPatientIds
}).
then
(
res
=>
{
if
(
res
.
code
===
'000000'
)
{
this
.
$message
({
message
:
'已发送,请尽快联系居民同意授权'
,
type
:
'success'
});
}
});
this
.
isShowDialog
=
false
;
},
// 统一跳转到量表页面
jumpToScale
()
{
//
this.$router.push({
//
path: "/followup/record-manage/form-template",
//
query: this.scaleQuery
//
});
this
.
$router
.
push
({
path
:
"/followup/record-manage/form-template"
,
query
:
this
.
scaleQuery
});
},
// 关闭协议确认窗口
...
...
@@ -435,8 +471,8 @@ export default {
},
// 发送短信通知
sendMsg
(
residentId
)
{
// this.sendMsgToResident(residentId
);
sendMsg
()
{
this
.
sendMsgToPatients
(
);
this
.
closeProtocolDialog
()
},
...
...
src/views/home copy 2.vue
0 → 100644
浏览文件 @
ca2838cd
<
template
>
<div
class=
"home-wrap"
>
<bread-crumb
:curmbFirst=
"curmbFirst"
></bread-crumb>
<div
class=
"message-content"
>
<el-row>
<el-col
class=
"visitor screenSet"
:span=
"24"
>
<div
class=
"visitor-title"
>
<div
class=
"title"
>
今日履约:
<span
style=
"color:#449284;margin-right: 10px"
>
{{
todayPlansList
.
length
}}
人
</span>
<span
class=
"type-button"
:style=
"
{background:(planBtn?'rgba(68,146,132,0.06)':'#ffffff')}"
@click="changeTodayPlansList(0)"
>未完成
</span>
<span
class=
"type-button"
:style=
"
{background:(!planBtn?'rgba(68,146,132,0.06)':'#ffffff')}"
@click="changeTodayPlansList(1)"
>已过期
</span>
</div>
<span
class=
"visitor-more"
@
click=
"lookMore(1)"
>
查看更多
</span>
</div>
<div
class=
"visitor-info"
>
<el-table
:data=
"todayPlansList"
style=
"width: 100%"
>
<el-table-column
prop=
"patientName"
label=
"姓名"
align=
"center"
></el-table-column>
<el-table-column
prop=
"appointTime"
label=
"预约时间"
align=
"center"
></el-table-column>
<el-table-column
prop=
"fuTypeStr"
label=
"履约方式"
align=
"center"
></el-table-column>
<el-table-column
prop=
"content"
label=
"操作"
align=
"center"
>
<template
slot-scope=
"scope"
>
<span
class=
"text-btn"
@
click=
"goToScale(scope.row)"
>
履约录入
</span>
|
<span
class=
"text-btn"
@
click=
"changeFollowStatus(scope.row)"
>
变更履约状态
</span>
</
template
>
</el-table-column>
</el-table>
</div>
</el-col>
<el-col
class=
"visitor screenSet"
:span=
"24"
style=
"margin-top: 0;margin-bottom: 0;"
>
<div
class=
"visitor-title"
>
<div
class=
"title"
>
今日预约
<span
class=
"type-button"
:style=
"{background:(appointBtn?'rgba(68,146,132,0.06)':'#ffffff')}"
@
click=
"changeTodayAppointsList(0)"
style=
"margin-left: 10px;"
>
未完成
</span>
<span
class=
"type-button"
:style=
"{background:(!appointBtn?'rgba(68,146,132,0.06)':'#ffffff')}"
@
click=
"changeTodayAppointsList(1)"
>
已过期
</span>
</div>
<span
class=
"visitor-more"
@
click=
"lookMore(2)"
>
查看更多
</span>
</div>
<div
class=
"visitor-info"
>
<el-table
:data=
"todayAppointsList"
style=
"width: 100%"
>
<el-table-column
prop=
"planName"
label=
"履约计划名称"
align=
"center"
></el-table-column>
<el-table-column
prop=
"appointTime"
label=
"履约计划时间"
align=
"center"
></el-table-column>
<el-table-column
prop=
"appointedCount"
label=
"已经预约"
align=
"center"
></el-table-column>
<el-table-column
prop=
"notAppointedCount"
label=
"未预约"
align=
"center"
></el-table-column>
<el-table-column
prop=
"content"
label=
"操作"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<span
class=
"text-btn"
@
click=
"goToReservation(scope.row.planName, scope.row.appointTime)"
>
去预约
</span>
</
template
>
</el-table-column>
</el-table>
</div>
</el-col>
<el-col
class=
"message screenSet"
:span=
"24"
id=
"screenSet"
>
<div
class=
"message-title"
>
系统消息
<span>
今日消息:{{count}}条
</span>
</div>
<div
class=
"message-info"
v-if=
"messageList.length > 0"
>
<div
class=
"message-item"
v-for=
"(item,index) in messageList"
:key=
"index"
>
<div
class=
"text-top"
>
<img
:src=
"item.url"
/>
<span>
{{item.menuName}}
</span>
<span>
{{item.portalTime}}
</span>
</div>
<div
class=
"text-bottom"
v-html=
"item.content"
></div>
</div>
</div>
<div
class=
"no-message"
v-else
>
<div>
<img
src=
"../assets/image/noData.png"
/>
</div>
</div>
</el-col>
</el-row>
</div>
<change-followup-status
:isShowChangeDialog=
"isShowChangeDialog"
:statusForm=
"statusForm"
@
closeChangeStatus=
"closeChangeStatus()"
></change-followup-status>
<el-dialog
title=
"选择量表"
:visible
.
sync=
"selectFormShow"
center
:close-on-click-modal=
"false"
:close-on-press-escape=
"false"
width=
"400px"
:before-close=
"closeForm"
>
<div
class=
"list-content"
>
<p
v-for=
"(item, index) in formList.scalesList"
:key=
"index"
@
click=
"goFormView(item)"
>
{{item.sendContent}}
</p>
</div>
</el-dialog>
<!-- 敏感词及协议校验 -->
<el-dialog
class=
"prot-dialog"
title=
""
:visible
.
sync=
"isShowProtocolDialog"
width=
"30%"
center
:show-close=
false
>
<p
class=
"prot-dialog-tips-1"
>
由于该居民尚未同意《云鹊平台隐私协议》,将导致履约量表部分信息无法录入,为了方便您的工作开展,请您发送短信提醒居民完成授权
</p>
<p
v-show=
"!isSentedProt"
class=
"prot-dialog-tips-2"
>
若您选择暂不发送,您只能录入量表的非敏感信息
</p>
<p
v-show=
"isSentedProt"
class=
"prot-dialog-tips-3"
>
为避免打扰居民,7天内只能发送1次,您已发送过短信,请尽快联系居民同意授权
</p>
<span
v-show=
"!isSentedProt"
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"small"
@
click=
"closeProtocolDialog"
>
暂不发送
</el-button>
<el-button
size=
"small"
type=
"primary"
@
click=
"sendMsg"
>
发送短信
</el-button>
</span>
<span
v-show=
"isSentedProt"
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"small"
type=
"primary"
@
click=
"closeProtocolDialog"
>
我知道了
</el-button>
</span>
</el-dialog>
</div>
</template>
<
script
>
import
BreadCrumb
from
"../components/breadcrumb.vue"
;
import
{
setTimeout
,
setInterval
}
from
"timers"
;
import
ChangeFollowupStatus
from
"./followup/record-manage/dialog/change-followup-status"
;
import
{
mapGetters
,
mapState
,
mapActions
}
from
"vuex"
;
import
*
as
commonUtil
from
"../utils/utils"
;
import
{
uniteValidate
,
authMessage
}
from
'@/utils/followup/followapis'
let
vm
=
null
;
export
default
{
components
:
{
BreadCrumb
,
ChangeFollowupStatus
},
data
()
{
return
{
curmbFirst
:
"数据总览"
,
spanFirstNum
:
12
,
spanSecondNum
:
12
,
tableData
:
[],
count
:
0
,
messageList
:
[],
planBtn
:
true
,
appointBtn
:
true
,
isShowChangeDialog
:
false
,
statusForm
:
{},
selectFormShow
:
false
,
ScaleData
:
{},
isShowProtocolDialog
:
true
,
scaleQuery
:
{},
isSentedProt
:
false
,
scaleNo
:
''
,
patientIds
:
[],
sendMsgPatientIds
:
[],
};
},
created
()
{
vm
=
this
;
vm
.
getSystemData
();
vm
.
getTodayPlansList
({
status
:
0
});
vm
.
getTodayAppointsList
({
status
:
0
});
/*vm.getTodayOverview({
status:0
});*/
},
computed
:
{
...
mapGetters
([
"_token"
]),
...
mapState
(
"workbench"
,
{
todayPlansList
:
state
=>
state
.
todayPlansList
,
todayAppointsList
:
state
=>
state
.
todayAppointsList
//todayOverview: state => state.todayOverview,
}),
...
mapState
(
"recordManage"
,
{
formList
:
state
=>
state
.
formList
})
},
// 挂载到Dom完成时
mounted
:
function
()
{
// commonUtil.resizeHeight()
},
methods
:
{
...
mapActions
(
"workbench"
,
[
"getTodayPlansList"
,
"getTodayAppointsList"
,
"getTodayOverview"
]),
...
mapActions
(
"recordManage"
,
[
"getFormList"
]),
// 查看更多
lookMore
(
type
)
{
if
(
type
==
1
)
{
this
.
$router
.
push
(
"/followup/record-manage/record-list"
);
}
else
if
(
type
==
2
)
{
this
.
$router
.
push
(
"/followup/reservation-manage/reservation-list"
);
}
},
// 获取系统消息数据
getSystemData
()
{
vm
.
GET
(
"portal/portalMessage/queryPortalMessageInfo"
,
{
token
:
vm
.
_token
,
pageNo
:
1
,
pageSize
:
15
}).
then
(
res
=>
{
if
(
res
.
code
==
"000000"
)
{
vm
.
messageList
=
res
.
data
.
portalMessageModels
;
vm
.
count
=
res
.
data
.
count
;
}
else
{
vm
.
$message
.
info
(
res
.
message
);
}
});
},
changeTodayPlansList
(
status
)
{
if
(
status
==
0
)
{
vm
.
planBtn
=
true
;
}
else
{
vm
.
planBtn
=
false
;
}
vm
.
getTodayPlansList
({
status
:
status
});
},
changeTodayAppointsList
(
status
)
{
if
(
status
==
0
)
{
vm
.
appointBtn
=
true
;
}
else
{
vm
.
appointBtn
=
false
;
}
vm
.
getTodayAppointsList
({
status
:
status
});
},
goToReservation
(
planName
,
appointTime
)
{
this
.
$router
.
push
({
path
:
"/followup/reservation-manage/reservation-list"
,
query
:
{
planName
:
planName
,
appointTime
:
appointTime
,
status
:
1
}
});
},
closeChangeStatus
(
val
)
{
this
.
isShowChangeDialog
=
val
;
let
status
=
null
;
if
(
this
.
planBtn
==
true
)
{
status
=
0
;
}
else
{
status
=
1
;
}
this
.
getTodayPlansList
({
status
:
status
});
},
goFormView
(
item
)
{
this
.
selectFormShow
=
false
;
this
.
$router
.
push
({
path
:
"/followup/record-manage/form-template"
,
query
:
{
doctorId
:
this
.
ScaleData
.
doctorId
,
scaleNo
:
item
.
resourceId
,
planPatientsTimesId
:
this
.
ScaleData
.
planPatientsTimesId
,
planTimesId
:
item
.
planTimesId
,
showBtn
:
1
}
});
// this.scaleQuery = {
// doctorId: this.ScaleData.doctorId,
// scaleNo: item.resourceId,
// planPatientsTimesId: this.ScaleData.planPatientsTimesId,
// planTimesId: item.planTimesId,
// showBtn: 1
// }
// this.needSign()
// this.scaleNo = this.formList.scalesList[0].resourceId;
// this.patientIds = [row.patientId];
// this.uniteValidateAction()
},
closeForm
()
{
this
.
selectFormShow
=
false
;
},
async
goToScale
(
row
)
{
await
this
.
getFormList
(
row
.
planTimesId
);
//获取量表列表
//获取量表列表情况
if
(
this
.
formList
.
scalesList
.
length
>
1
)
{
this
.
selectFormShow
=
true
;
this
.
ScaleData
=
{
doctorId
:
this
.
formList
.
doctorId
,
planPatientsTimesId
:
row
.
planPatientTimesId
};
}
else
if
(
this
.
formList
.
scalesList
.
length
===
1
)
{
this
.
$router
.
push
({
path
:
"/followup/record-manage/form-template"
,
query
:
{
doctorId
:
this
.
formList
.
doctorId
,
scaleNo
:
this
.
formList
.
scalesList
[
0
].
resourceId
,
planPatientsTimesId
:
row
.
planPatientTimesId
,
planTimesId
:
row
.
planTimesId
,
showBtn
:
1
}
});
// this.scaleQuery = {
// doctorId: this.formList.doctorId,
// scaleNo: this.formList.scalesList[0].resourceId,
// planPatientsTimesId: row.planPatientTimesId,
// planTimesId: row.planTimesId,
// showBtn: 1
// }
// this.needSign()
// this.scaleNo = this.formList.scalesList[0].resourceId;
// this.patientIds = [row.patientId];
// this.uniteValidateAction()
}
else
{
this
.
$message
.
warning
(
"暂无量表!"
);
}
},
changeFollowStatus
(
row
)
{
this
.
statusForm
=
{
fuPlanPatientTimesId
:
row
.
planPatientTimesId
,
patientId
:
row
.
patientId
,
nickname
:
row
.
patientName
,
status
:
1
};
this
.
isShowChangeDialog
=
true
;
},
// Add by Anndy Yang
// 统一验证:量表内是否存在敏感字段、居民是否签署隐私协议、7天内是否发送过授权短信
async
uniteValidateAction
()
{
let
validParams
=
{
scaleNo
:
this
.
scaleNo
,
patientIds
:
this
.
patientIds
,
// pc端只传这个字段
// planPatientsTimesId: planPatientsTimesId, // app端只传这个字段
protocolType
:
5
,
userType
:
1
,
validateType
:
1
};
let
r
=
await
uniteValidate
(
validParams
).
then
(
res
=>
{
let
result
=
res
;
// 请求成功
if
(
result
.
code
===
'000000'
)
{
let
levelType
=
result
.
data
.
levelType
;
// 没有敏感字段或者居民已经签订过协议,则直接返回
if
(
levelType
===
1
||
levelType
===
2
)
{
jumpToScale
()
}
else
if
(
levelType
===
3
)
{
this
.
isShowProtocolDialog
=
true
;
this
.
isSentedProt
=
false
;
}
else
if
(
levelType
===
4
)
{
this
.
isShowProtocolDialog
=
true
;
this
.
isSentedProt
=
true
;
this
.
sendMsgPatientIds
=
result
.
data
.
ids
;
}
}
});
},
// 发送协议授权短信给居民
sendMsgToPatients
()
{
authMessage
({
patientIds
:
this
.
sendMsgPatientIds
}).
then
(
res
=>
{
if
(
res
.
code
===
'000000'
)
{
this
.
$message
({
message
:
'已发送,请尽快联系居民同意授权'
,
type
:
'success'
});
}
});
this
.
isShowDialog
=
false
;
},
// 敏感词校验与签署协议逻辑
// 1. 判断量表内是否存在敏感词
// 2. 判断居民是否存签署协议
// 3. 七天内是否发送过
needSign
(
scaleId
,
query
)
{
// let statusConfig =await getStatusByScaleId(scaleId)
let
statusConfig
=
{
isSensitive
:
1
,
// 量表内是否存在敏感词 0: 否;1: 是
hasProtocol
:
0
,
// 居民是否存签署协议 0: 否;1: 是
hasSented
:
0
// 七天内是否发送过 0: 否;1: 是
};
if
(
statusConfig
.
isSensitive
==
1
&&
statusConfig
.
hasProtocol
==
0
)
{
this
.
isShowProtocolDialog
=
true
this
.
isSentedProt
=
statusConfig
.
hasSented
==
1
}
else
{
this
.
jumpToScale
()
}
},
// 统一跳转到量表页面
jumpToScale
()
{
// this.$router.push({
// path: "/followup/record-manage/form-template",
// query: this.scaleQuery
// });
},
// 关闭协议确认窗口
closeProtocolDialog
()
{
this
.
isShowProtocolDialog
=
false
this
.
jumpToScale
()
},
// 发送短信通知
sendMsg
()
{
this
.
sendMsgToPatients
();
this
.
closeProtocolDialog
()
},
}
};
</
script
>
<
style
lang=
"scss"
>
.home-wrap
{
.list-content
{
p
{
cursor
:
pointer
;
line-height
:
30px
;
text-decoration
:
underline
;
color
:
#449284
;
}
}
.message-content
{
.visitor
{
padding
:
0
25px
30px
;
margin-bottom
:
20px
;
background
:
#fff
;
margin-top
:
88px
;
// min-height: 348px;
@media
screen
and
(
min-width
:
1240px
)
and
(
max-width
:
1900px
)
{
width
:
95%
;
height
:
300px
!
important
;
}
@media
screen
and
(
min-width
:
1900px
)
{
width
:
96
.7%
;
height
:
380px
!
important
;
}
.visitor-title
{
height
:
80px
;
line-height
:
80px
;
margin-right
:
20px
;
text-align
:
right
;
.title
{
float
:
left
;
font-size
:
20px
;
}
.visitor-more
{
font-size
:
12px
;
color
:
#449284
;
border
:
1px
solid
rgba
(
68
,
146
,
132
,
0
.3
);
padding
:
5px
14px
;
border-radius
:
3px
;
background
:
rgba
(
68
,
146
,
132
,
0
.06
);
cursor
:
pointer
;
}
.type-button
{
font-size
:
12px
;
color
:
#449284
;
border
:
1px
solid
rgba
(
68
,
146
,
132
,
0
.3
);
padding
:
5px
14px
;
border-radius
:
3px
;
/*background: rgba(68,146,132,0.06);*/
background
:
#ffffff
;
cursor
:
pointer
;
}
}
.visitor-info
{
margin-right
:
20px
;
.text-btn
:hover
{
cursor
:
pointer
;
color
:
#449284
;
}
}
}
.message
{
padding
:
0
25px
30px
;
// margin-top: 20px;
margin-top
:
20px
;
background
:
#fff
;
@media
screen
and
(
min-width
:
1240px
)
and
(
max-width
:
1900px
)
{
width
:
95%
;
// height: 320px !important;
}
@media
screen
and
(
min-width
:
1900px
)
{
width
:
96
.7%
;
// height: 400px !important;
}
.message-title
{
font-size
:
20px
;
height
:
80px
;
line-height
:
80px
;
span
{
font-size
:
14px
;
color
:
#717377
;
margin-left
:
8px
;
}
}
.message-info
{
padding
:
7px
;
.message-item
{
padding
:
10px
10px
15px
;
border-bottom
:
1px
solid
#ebeef5
;
.text-top
{
img
{
float
:
left
;
width
:
16px
;
margin-top
:
3px
;
}
span
:nth-child
(
2
)
{
padding
:
10px
;
}
span
:nth-child
(
3
)
{
font-size
:
12px
;
color
:
#999
;
}
}
.text-bottom
{
font-size
:
14px
;
color
:
#666
;
margin-top
:
15px
;
}
}
}
}
.no-message
{
text-align
:
center
;
img
{
width
:
100px
;
// margin-top: 17%;
margin
:
6%
0
6%
;
}
}
}
}
</
style
>
src/views/home.vue
浏览文件 @
ca2838cd
...
...
@@ -140,6 +140,8 @@ import ChangeFollowupStatus from "./followup/record-manage/dialog/change-followu
import
{
mapGetters
,
mapState
,
mapActions
}
from
"vuex"
;
import
*
as
commonUtil
from
"../utils/utils"
;
import
{
uniteValidate
,
authMessage
}
from
'@/utils/followup/followapis'
let
vm
=
null
;
export
default
{
components
:
{
...
...
@@ -162,7 +164,10 @@ export default {
ScaleData
:
{},
isShowProtocolDialog
:
true
,
scaleQuery
:
{},
isSentedProt
:
false
isSentedProt
:
false
,
scaleNo
:
''
,
patientIds
:
[],
sendMsgPatientIds
:
[],
};
},
created
()
{
...
...
@@ -264,25 +269,27 @@ export default {
});
},
goFormView
(
item
)
{
this
.
selectFormShow
=
false
;
this
.
$router
.
push
({
path
:
"/followup/record-manage/form-template"
,
query
:
{
doctorId
:
this
.
ScaleData
.
doctorId
,
scaleNo
:
item
.
resourceId
,
planPatientsTimesId
:
this
.
ScaleData
.
planPatientsTimesId
,
planTimesId
:
item
.
planTimesId
,
showBtn
:
1
}
});
// this.scaleQuery = {
// this.selectFormShow = false;
// this.$router.push({
// path: "/followup/record-manage/form-template",
// query: {
// doctorId: this.ScaleData.doctorId,
// scaleNo: item.resourceId,
// planPatientsTimesId: this.ScaleData.planPatientsTimesId,
// planTimesId: item.planTimesId,
// showBtn: 1
// }
// this.needSign()
// });
this
.
scaleQuery
=
{
doctorId
:
this
.
ScaleData
.
doctorId
,
scaleNo
:
item
.
resourceId
,
planPatientsTimesId
:
this
.
ScaleData
.
planPatientsTimesId
,
planTimesId
:
item
.
planTimesId
,
showBtn
:
1
}
this
.
scaleNo
=
item
.
resourceId
;
// this.patientIds = [this.ScaleData.patientId];
this
.
uniteValidateAction
()
},
closeForm
()
{
this
.
selectFormShow
=
false
;
...
...
@@ -290,6 +297,7 @@ export default {
async
goToScale
(
row
)
{
await
this
.
getFormList
(
row
.
planTimesId
);
//获取量表列表
//获取量表列表情况
this
.
patientIds
=
[
row
.
patientId
];
if
(
this
.
formList
.
scalesList
.
length
>
1
)
{
this
.
selectFormShow
=
true
;
this
.
ScaleData
=
{
...
...
@@ -297,24 +305,25 @@ export default {
planPatientsTimesId
:
row
.
planPatientTimesId
};
}
else
if
(
this
.
formList
.
scalesList
.
length
===
1
)
{
this
.
$router
.
push
({
path
:
"/followup/record-manage/form-template"
,
query
:
{
doctorId
:
this
.
formList
.
doctorId
,
scaleNo
:
this
.
formList
.
scalesList
[
0
].
resourceId
,
planPatientsTimesId
:
row
.
planPatientTimesId
,
planTimesId
:
row
.
planTimesId
,
showBtn
:
1
}
});
// this.scaleQuery = {
// this.$router.push({
// path: "/followup/record-manage/form-template",
// query: {
// doctorId: this.formList.doctorId,
// scaleNo: this.formList.scalesList[0].resourceId,
// planPatientsTimesId: row.planPatientTimesId,
// planTimesId: row.planTimesId,
// showBtn: 1
// }
// this.needSign()
// });
this
.
scaleQuery
=
{
doctorId
:
this
.
formList
.
doctorId
,
scaleNo
:
this
.
formList
.
scalesList
[
0
].
resourceId
,
planPatientsTimesId
:
row
.
planPatientTimesId
,
planTimesId
:
row
.
planTimesId
,
showBtn
:
1
}
this
.
scaleNo
=
this
.
formList
.
scalesList
[
0
].
resourceId
;
this
.
uniteValidateAction
()
}
else
{
this
.
$message
.
warning
(
"暂无量表!"
);
}
...
...
@@ -328,31 +337,123 @@ export default {
};
this
.
isShowChangeDialog
=
true
;
},
// 敏感词校验与签署协议逻辑
// 1. 判断量表内是否存在敏感词
// 2. 判断居民是否存签署协议
// 3. 七天内是否发送过
needSign
(
scaleId
,
query
)
{
// let statusConfig =await getStatusByScaleId(scaleId)
let
statusConfig
=
{
isSensitive
:
1
,
// 量表内是否存在敏感词 0: 否;1: 是
hasProtocol
:
0
,
// 居民是否存签署协议 0: 否;1: 是
hasSented
:
0
// 七天内是否发送过 0: 否;1: 是
// // Add by Anndy Yang
// // 统一验证:量表内是否存在敏感字段、居民是否签署隐私协议、7天内是否发送过授权短信
// uniteValidateAction() {
// let validParams = {
// scaleNo: this.scaleNo,
// patientIds: this.patientIds, // pc端只传这个字段
// // planPatientsTimesId: planPatientsTimesId, // app端只传这个字段
// protocolType: 5,
// userType: 1,
// validateType: 1
// };
// uniteValidate(validParams).then(res => {
// let result = res;
// // 请求成功
// if (result.code === '000000') {
// let levelType = result.data.levelType;
// // 没有敏感字段或者居民已经签订过协议,则直接返回
// if (levelType === 1 || levelType === 2) {
// jumpToScale()
// } else if (levelType === 3) {
// this.isShowProtocolDialog = true;
// this.isSentedProt = false;
// } else if (levelType === 4) {
// this.isShowProtocolDialog = true;
// this.isSentedProt = true;
// this.sendMsgPatientIds = result.data.ids;
// }
// }
// });
// },
// // 发送协议授权短信给居民
// sendMsgToPatients() {
// authMessage({ patientIds: this.sendMsgPatientIds }).then(res => {
// if (res.code === '000000') {
// this.$message({
// message: '已发送,请尽快联系居民同意授权',
// type: 'success'
// });
// }
// });
// this.isShowDialog = false;
// },
// // 统一跳转到量表页面
// jumpToScale() {
// // this.$router.push({
// // path: "/followup/record-manage/form-template",
// // query: this.scaleQuery
// // });
// },
// // 关闭协议确认窗口
// closeProtocolDialog() {
// this.isShowProtocolDialog = false
// this.jumpToScale()
// },
// // 发送短信通知
// sendMsg() {
// this.sendMsgToPatients();
// this.closeProtocolDialog()
// },
// Add by Anndy Yang
// 统一验证:量表内是否存在敏感字段、居民是否签署隐私协议、7天内是否发送过授权短信
uniteValidateAction
()
{
let
validParams
=
{
scaleNo
:
this
.
scaleNo
,
patientIds
:
this
.
patientIds
,
// pc端只传这个字段
// planPatientsTimesId: planPatientsTimesId, // app端只传这个字段
protocolType
:
5
,
userType
:
1
,
validateType
:
1
};
if
(
statusConfig
.
isSensitive
==
1
&&
statusConfig
.
hasProtocol
==
0
)
{
this
.
isShowProtocolDialog
=
true
this
.
isSentedProt
=
statusConfig
.
hasSented
==
1
}
else
{
this
.
jumpToScale
()
uniteValidate
(
validParams
).
then
(
res
=>
{
let
result
=
res
;
// 请求成功
if
(
result
.
code
===
'000000'
)
{
let
levelType
=
result
.
data
.
levelType
;
// 没有敏感字段或者居民已经签订过协议,则直接返回
if
(
levelType
===
1
||
levelType
===
2
)
{
jumpToScale
();
}
else
if
(
levelType
===
3
)
{
this
.
isShowProtocolDialog
=
true
;
this
.
isSentedProt
=
true
;
}
else
if
(
levelType
===
4
)
{
this
.
isShowProtocolDialog
=
true
;
this
.
isSentedProt
=
false
;
this
.
sendMsgPatientIds
=
result
.
data
.
ids
;
}
}
});
},
// 发送协议授权短信给居民
sendMsgToPatients
()
{
authMessage
({
patientIds
:
this
.
sendMsgPatientIds
}).
then
(
res
=>
{
if
(
res
.
code
===
'000000'
)
{
this
.
$message
({
message
:
'已发送,请尽快联系居民同意授权'
,
type
:
'success'
});
}
});
this
.
isShowDialog
=
false
;
},
// 统一跳转到量表页面
jumpToScale
()
{
//
this.$router.push({
//
path: "/followup/record-manage/form-template",
//
query: this.scaleQuery
//
});
this
.
$router
.
push
({
path
:
"/followup/record-manage/form-template"
,
query
:
this
.
scaleQuery
});
},
// 关闭协议确认窗口
...
...
@@ -362,8 +463,8 @@ export default {
},
// 发送短信通知
sendMsg
(
residentId
)
{
// this.sendMsgToResident(residentId
);
sendMsg
()
{
this
.
sendMsgToPatients
(
);
this
.
closeProtocolDialog
()
},
...
...
@@ -492,27 +593,6 @@ export default {
}
}
}
.prot-dialog
{
.el-dialog__body
{
padding
:
25px
25px
10px
;
}
&
-tips-1
{
margin-top
:
0px
;
}
&
-tips-2
{
margin-top
:
20px
;
font-size
:
12px
;
color
:
#aaa
;
}
&
-tips-3
{
margin-top
:
20px
;
font-size
:
12px
;
color
:
#FF9A4B
;
}
}
</
style
>
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录