提交 ca2838cd 编写于 作者: guangjun.yang's avatar guangjun.yang

record-list home uniteValidate

上级 d21995f1
...@@ -235,4 +235,23 @@ html,body{ ...@@ -235,4 +235,23 @@ html,body{
.el-radio-button__orig-radio:checked+.el-radio-button__inner { .el-radio-button__orig-radio:checked+.el-radio-button__inner {
background-color: #449284 !important; background-color: #449284 !important;
border-color: #449284 !important; border-color: #449284 !important;
} }
\ No newline at end of file
.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
...@@ -181,9 +181,10 @@ ...@@ -181,9 +181,10 @@
return time.getTime() < Date.now() - 8.64e7 return time.getTime() < Date.now() - 8.64e7
} }
}, },
isShowProtocolDialog: false, isShowProtocolDialog: true,
isSentedProt: false, isSentedProt: false,
patientIds: [] patientIds: [],
sendMsgPatientIds: []
} }
}, },
created() { created() {
...@@ -201,11 +202,48 @@ ...@@ -201,11 +202,48 @@
methods: { methods: {
...mapActions('planManage', ['getTimeNodeList','getRemarkOption','getFollowupTemplate']), ...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() { sendMsgToPatients() {
authMessage({ patientIds: this.patientIds }).then(res => { authMessage({ patientIds: this.sendMsgPatientIds }).then(res => {
if (res.code === '000000') { if (res.code === '000000') {
this.$toast('已发送,请尽快联系居民同意授权'); this.$message({
message: '已发送,请尽快联系居民同意授权',
type: 'success'
});
} }
}); });
this.isShowDialog = false; this.isShowDialog = false;
...@@ -226,11 +264,11 @@ ...@@ -226,11 +264,11 @@
// console.log('监听保存校验结果',val) // console.log('监听保存校验结果',val)
this.checkForm = false this.checkForm = false
if(val.status){ if(val.status){
this.baseInfo.fPlanTimeReqList = val.setTimeNodeList this.baseInfo.fPlanTimeReqList = val.setTimeNodeList
// this.baseInfo.time = (new Date(this.baseInfo.time).getTime()) // this.baseInfo.time = (new Date(this.baseInfo.time).getTime())
// console.log(this.baseInfo.time) // console.log(this.baseInfo.time)
// 提交 // 提交
createFollowPlan(this.baseInfo).then(res=>{ createFollowPlan(this.baseInfo).then(res=>{
if(res.code=='000000'){ if(res.code=='000000'){
// 各种校验通过后,提交编辑内容,toast提示 // 各种校验通过后,提交编辑内容,toast提示
this.$message({ this.$message({
...@@ -273,6 +311,9 @@ ...@@ -273,6 +311,9 @@
this.isShowSelectPatient = getArguments[0]; this.isShowSelectPatient = getArguments[0];
const selectPatients = getArguments[1]; // 每次选中获取的人 const selectPatients = getArguments[1]; // 每次选中获取的人
this.hasSelectedList = selectPatients; this.hasSelectedList = selectPatients;
this.patientIds = selectPatients.map( item => {
return item.patientId
})
// console.log('呵呵呵呵',arguments) // console.log('呵呵呵呵',arguments)
this.baseInfo.patientIdList = []; this.baseInfo.patientIdList = [];
selectPatients.forEach((item)=>{ selectPatients.forEach((item)=>{
...@@ -299,43 +340,17 @@ ...@@ -299,43 +340,17 @@
this.$router.push({path: '/followup/plan-manage/plan-list'}) this.$router.push({path: '/followup/plan-manage/plan-list'})
}); });
}, },
nextClick(formName) { nextClick(formName) {
// 创建/修改履约计划 // 创建/修改履约计划
// 4、校验居民/医生是否签署协议 // 4、校验居民/医生是否签署协议
alert('创建/修改履约计划') alert('创建/修改履约计划')
// return console.log(this.hasSelectedList)
if(this.uniteValidateAction() == 1) {
// Add by Anndy Yang return;
// 统一验证:量表内是否存在敏感字段、居民是否签署隐私协议、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) {
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.activeTab = 'second';
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
...@@ -351,6 +366,9 @@ ...@@ -351,6 +366,9 @@
this.resourceId = String(this.baseInfo.resourceId) this.resourceId = String(this.baseInfo.resourceId)
// console.log( this.baseInfo.resourceId) // console.log( this.baseInfo.resourceId)
if(this.baseInfo.resourceId){ if(this.baseInfo.resourceId){
if(this.uniteValidateAction() == 1) {
return;
};
getFollowupTableTemplate(this.baseInfo.resourceId).then(res=>{ getFollowupTableTemplate(this.baseInfo.resourceId).then(res=>{
this.isStandedTemplate = true this.isStandedTemplate = true
this.standedTimeNodeList = res.data this.standedTimeNodeList = res.data
......
<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>
...@@ -32,8 +32,6 @@ ...@@ -32,8 +32,6 @@
<!--糖尿病--> <!--糖尿病-->
<diabetes v-if="scaleNo=='SCALE0002'" :showBtn="showBtn" :scaleType="scaleNo" :checkStart="checkStart" @checkEnd="checkEnd" :saveWay="saveWay" ></diabetes> <diabetes v-if="scaleNo=='SCALE0002'" :showBtn="showBtn" :scaleType="scaleNo" :checkStart="checkStart" @checkEnd="checkEnd" :saveWay="saveWay" ></diabetes>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -116,6 +116,7 @@ ...@@ -116,6 +116,7 @@
}) })
return; return;
}else{ }else{
// 校验内容是否全部填写
this.valid = true; this.valid = true;
} }
} }
......
...@@ -114,6 +114,7 @@ ...@@ -114,6 +114,7 @@
}) })
return; return;
}else{ }else{
// 校验内容是否全部填写
this.valid = true; this.valid = true;
} }
} }
......
<template> <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.showModule" class="content-box" >
<div v-if="!item.hideTitle" class="title">{{item.title}}</div> <div v-if="!item.hideTitle" class="title">{{item.title}}</div>
<el-form <el-form
...@@ -116,6 +116,7 @@ ...@@ -116,6 +116,7 @@
}) })
return; return;
}else{ }else{
// 校验内容是否全部填写
this.valid = true; this.valid = true;
} }
} }
......
<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>
...@@ -176,7 +176,7 @@ import BreadCrumb from "@/components/breadcrumb"; ...@@ -176,7 +176,7 @@ import BreadCrumb from "@/components/breadcrumb";
import followupDetail from "./dialog/followupDetail"; import followupDetail from "./dialog/followupDetail";
import ChangeFollowupStatus from "./dialog/change-followup-status"; import ChangeFollowupStatus from "./dialog/change-followup-status";
import { getSaasDomain } from "@/utils/index"; 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"; import { mapState, mapGetters, mapActions } from "vuex";
export default { export default {
...@@ -214,7 +214,10 @@ export default { ...@@ -214,7 +214,10 @@ export default {
isShowProtocolDialog1: false, isShowProtocolDialog1: false,
isShowProtocolDialog: false, isShowProtocolDialog: false,
scaleQuery: {}, scaleQuery: {},
isSentedProt: false isSentedProt: false,
scaleNo: '',
patientIds: [],
sendMsgPatientIds: [],
}; };
}, },
computed: { computed: {
...@@ -315,6 +318,7 @@ export default { ...@@ -315,6 +318,7 @@ export default {
async editRow(row) { async editRow(row) {
await this.getFormList(row.fuPlanTimesId); //获取量表列表 await this.getFormList(row.fuPlanTimesId); //获取量表列表
//获取量表列表情况 //获取量表列表情况
this.patientIds = [row.patientId];
if (this.formList.scalesList.length > 1) { if (this.formList.scalesList.length > 1) {
this.selectFormShow = true; this.selectFormShow = true;
this.ScaleData = { this.ScaleData = {
...@@ -322,24 +326,26 @@ export default { ...@@ -322,24 +326,26 @@ export default {
planPatientsTimesId: row.fuPlanPatientTimesId planPatientsTimesId: row.fuPlanPatientTimesId
}; };
} else if (this.formList.scalesList.length === 1) { } else if (this.formList.scalesList.length === 1) {
this.$router.push({ // this.$router.push({
path: "/followup/record-manage/form-template", // path: "/followup/record-manage/form-template",
query: { // query: {
doctorId: this.formList.doctorId, // doctorId: this.formList.doctorId,
scaleNo: this.formList.scalesList[0].resourceId, // scaleNo: this.formList.scalesList[0].resourceId,
planPatientsTimesId: row.fuPlanPatientTimesId, // planPatientsTimesId: row.fuPlanPatientTimesId,
planTimesId: row.planTimesId, // planTimesId: row.planTimesId,
showBtn: 1 // showBtn: 1
} // }
}); // });
// this.scaleQuery = { this.scaleQuery = {
// doctorId: this.formList.doctorId, doctorId: this.formList.doctorId,
// scaleNo: this.formList.scalesList[0].resourceId, scaleNo: this.formList.scalesList[0].resourceId,
// planPatientsTimesId: row.planPatientTimesId, planPatientsTimesId: row.fuPlanPatientTimesId,
// planTimesId: row.planTimesId, planTimesId: row.planTimesId,
// showBtn: 1 showBtn: 1
// } }
// this.needSign() this.scaleNo = this.formList.scalesList[0].resourceId;
this.uniteValidateAction()
} else { } else {
this.$message.warning("暂无量表!"); this.$message.warning("暂无量表!");
} }
...@@ -380,52 +386,82 @@ export default { ...@@ -380,52 +386,82 @@ export default {
}, },
goFormView(item) { goFormView(item) {
this.selectFormShow = false; this.selectFormShow = false;
this.$router.push({ // this.$router.push({
path: "/followup/record-manage/form-template", // path: "/followup/record-manage/form-template",
query: { // query: {
doctorId: this.ScaleData.doctorId, // doctorId: this.ScaleData.doctorId,
scaleNo: item.resourceId, // scaleNo: item.resourceId,
planPatientsTimesId: this.ScaleData.planPatientsTimesId, // planPatientsTimesId: this.ScaleData.planPatientsTimesId,
planTimesId: item.planTimesId, // planTimesId: item.planTimesId,
showBtn: 1 // showBtn: 1
} // }
}); // });
// this.scaleQuery = { this.scaleQuery = {
// doctorId: this.ScaleData.doctorId, doctorId: this.ScaleData.doctorId,
// scaleNo: item.resourceId, scaleNo: item.resourceId,
// planPatientsTimesId: this.ScaleData.planPatientsTimesId, planPatientsTimesId: this.ScaleData.planPatientsTimesId,
// planTimesId: item.planTimesId, planTimesId: item.planTimesId,
// showBtn: 1 showBtn: 1
// } };
// this.needSign() this.scaleNo = item.resourceId;
// this.patientIds = [this.ScaleData.patientId];
this.uniteValidateAction();
}, },
closeForm() { closeForm() {
this.selectFormShow = false; this.selectFormShow = false;
}, },
// 敏感词校验与签署协议逻辑
// 1. 判断量表内是否存在敏感词 // Add by Anndy Yang
// 2. 判断居民是否存签署协议 // 统一验证:量表内是否存在敏感字段、居民是否签署隐私协议、7天内是否发送过授权短信
// 3. 七天内是否发送过 uniteValidateAction() {
needSign(scaleId, query) { let validParams = {
// let statusConfig =await getStatusByScaleId(scaleId) scaleNo: this.scaleNo,
let statusConfig = { patientIds: this.patientIds, // pc端只传这个字段
isSensitive: 1, // 量表内是否存在敏感词 0: 否;1: 是 // planPatientsTimesId: planPatientsTimesId, // app端只传这个字段
hasProtocol: 0, // 居民是否存签署协议 0: 否;1: 是 protocolType: 5,
hasSented: 0 // 七天内是否发送过 0: 否;1: 是 userType: 1,
validateType: 1
}; };
if (statusConfig.isSensitive == 1 && statusConfig.hasProtocol == 0) {
this.isShowProtocolDialog = true uniteValidate(validParams).then(res => {
this.isSentedProt = statusConfig.hasSented == 1 let result = res;
} else { // 请求成功
this.jumpToScale() 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() { jumpToScale() {
// this.$router.push({ this.$router.push({
// path: "/followup/record-manage/form-template", path: "/followup/record-manage/form-template",
// query: this.scaleQuery query: this.scaleQuery
// }); });
}, },
// 关闭协议确认窗口 // 关闭协议确认窗口
...@@ -435,8 +471,8 @@ export default { ...@@ -435,8 +471,8 @@ export default {
}, },
// 发送短信通知 // 发送短信通知
sendMsg(residentId) { sendMsg() {
// this.sendMsgToResident(residentId); this.sendMsgToPatients();
this.closeProtocolDialog() this.closeProtocolDialog()
}, },
......
<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>
...@@ -140,6 +140,8 @@ import ChangeFollowupStatus from "./followup/record-manage/dialog/change-followu ...@@ -140,6 +140,8 @@ import ChangeFollowupStatus from "./followup/record-manage/dialog/change-followu
import { mapGetters, mapState, mapActions } from "vuex"; import { mapGetters, mapState, mapActions } from "vuex";
import * as commonUtil from "../utils/utils"; import * as commonUtil from "../utils/utils";
import { uniteValidate, authMessage } from '@/utils/followup/followapis'
let vm = null; let vm = null;
export default { export default {
components: { components: {
...@@ -162,7 +164,10 @@ export default { ...@@ -162,7 +164,10 @@ export default {
ScaleData: {}, ScaleData: {},
isShowProtocolDialog: true, isShowProtocolDialog: true,
scaleQuery: {}, scaleQuery: {},
isSentedProt: false isSentedProt: false,
scaleNo: '',
patientIds: [],
sendMsgPatientIds: [],
}; };
}, },
created() { created() {
...@@ -264,25 +269,27 @@ export default { ...@@ -264,25 +269,27 @@ export default {
}); });
}, },
goFormView(item) { goFormView(item) {
this.selectFormShow = false; // this.selectFormShow = false;
this.$router.push({ // this.$router.push({
path: "/followup/record-manage/form-template", // path: "/followup/record-manage/form-template",
query: { // query: {
doctorId: this.ScaleData.doctorId, // doctorId: this.ScaleData.doctorId,
scaleNo: item.resourceId, // scaleNo: item.resourceId,
planPatientsTimesId: this.ScaleData.planPatientsTimesId, // planPatientsTimesId: this.ScaleData.planPatientsTimesId,
planTimesId: item.planTimesId, // planTimesId: item.planTimesId,
showBtn: 1 // showBtn: 1
} // }
}); // });
// this.scaleQuery = { this.scaleQuery = {
// doctorId: this.ScaleData.doctorId, doctorId: this.ScaleData.doctorId,
// scaleNo: item.resourceId, scaleNo: item.resourceId,
// planPatientsTimesId: this.ScaleData.planPatientsTimesId, planPatientsTimesId: this.ScaleData.planPatientsTimesId,
// planTimesId: item.planTimesId, planTimesId: item.planTimesId,
// showBtn: 1 showBtn: 1
// } }
// this.needSign() this.scaleNo = item.resourceId;
// this.patientIds = [this.ScaleData.patientId];
this.uniteValidateAction()
}, },
closeForm() { closeForm() {
this.selectFormShow = false; this.selectFormShow = false;
...@@ -290,6 +297,7 @@ export default { ...@@ -290,6 +297,7 @@ export default {
async goToScale(row) { async goToScale(row) {
await this.getFormList(row.planTimesId); //获取量表列表 await this.getFormList(row.planTimesId); //获取量表列表
//获取量表列表情况 //获取量表列表情况
this.patientIds = [row.patientId];
if (this.formList.scalesList.length > 1) { if (this.formList.scalesList.length > 1) {
this.selectFormShow = true; this.selectFormShow = true;
this.ScaleData = { this.ScaleData = {
...@@ -297,24 +305,25 @@ export default { ...@@ -297,24 +305,25 @@ export default {
planPatientsTimesId: row.planPatientTimesId planPatientsTimesId: row.planPatientTimesId
}; };
} else if (this.formList.scalesList.length === 1) { } else if (this.formList.scalesList.length === 1) {
this.$router.push({ // this.$router.push({
path: "/followup/record-manage/form-template", // path: "/followup/record-manage/form-template",
query: { // query: {
doctorId: this.formList.doctorId, // doctorId: this.formList.doctorId,
scaleNo: this.formList.scalesList[0].resourceId, // scaleNo: this.formList.scalesList[0].resourceId,
planPatientsTimesId: row.planPatientTimesId, // planPatientsTimesId: row.planPatientTimesId,
planTimesId: row.planTimesId, // planTimesId: row.planTimesId,
showBtn: 1 // showBtn: 1
} // }
}); // });
// this.scaleQuery = { this.scaleQuery = {
// doctorId: this.formList.doctorId, doctorId: this.formList.doctorId,
// scaleNo: this.formList.scalesList[0].resourceId, scaleNo: this.formList.scalesList[0].resourceId,
// planPatientsTimesId: row.planPatientTimesId, planPatientsTimesId: row.planPatientTimesId,
// planTimesId: row.planTimesId, planTimesId: row.planTimesId,
// showBtn: 1 showBtn: 1
// } }
// this.needSign() this.scaleNo = this.formList.scalesList[0].resourceId;
this.uniteValidateAction()
} else { } else {
this.$message.warning("暂无量表!"); this.$message.warning("暂无量表!");
} }
...@@ -328,31 +337,123 @@ export default { ...@@ -328,31 +337,123 @@ export default {
}; };
this.isShowChangeDialog = true; this.isShowChangeDialog = true;
}, },
// 敏感词校验与签署协议逻辑
// 1. 判断量表内是否存在敏感词 // // Add by Anndy Yang
// 2. 判断居民是否存签署协议 // // 统一验证:量表内是否存在敏感字段、居民是否签署隐私协议、7天内是否发送过授权短信
// 3. 七天内是否发送过 // uniteValidateAction() {
needSign(scaleId, query) { // let validParams = {
// let statusConfig =await getStatusByScaleId(scaleId) // scaleNo: this.scaleNo,
let statusConfig = { // patientIds: this.patientIds, // pc端只传这个字段
isSensitive: 1, // 量表内是否存在敏感词 0: 否;1: 是 // // planPatientsTimesId: planPatientsTimesId, // app端只传这个字段
hasProtocol: 0, // 居民是否存签署协议 0: 否;1: 是 // protocolType: 5,
hasSented: 0 // 七天内是否发送过 0: 否;1: 是 // 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 uniteValidate(validParams).then(res => {
this.isSentedProt = statusConfig.hasSented == 1 let result = res;
} else { // 请求成功
this.jumpToScale() 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() { jumpToScale() {
// this.$router.push({ this.$router.push({
// path: "/followup/record-manage/form-template", path: "/followup/record-manage/form-template",
// query: this.scaleQuery query: this.scaleQuery
// }); });
}, },
// 关闭协议确认窗口 // 关闭协议确认窗口
...@@ -362,8 +463,8 @@ export default { ...@@ -362,8 +463,8 @@ export default {
}, },
// 发送短信通知 // 发送短信通知
sendMsg(residentId) { sendMsg() {
// this.sendMsgToResident(residentId); this.sendMsgToPatients();
this.closeProtocolDialog() this.closeProtocolDialog()
}, },
...@@ -492,27 +593,6 @@ export default { ...@@ -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> </style>
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册