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

Merge branch 'dev-followup-0902' into release

......@@ -2,8 +2,8 @@
<html>
<head>
<meta charset="utf-8">
<meta content="云鹊医,云鹊健康,工作站,项目管理,教培项目,学情报告,随访管理,预约随访" name="keywords">
<meta content="云鹊医工作站用于管理人员的日常操作,支持提交内容审核、管理项目、管理随访计划等功能。" name="description">
<meta content="云鹊医,云鹊健康,工作站,项目管理,教培项目,学情报告,履约管理,预约履约" name="keywords">
<meta content="云鹊医工作站用于管理人员的日常操作,支持提交内容审核、管理项目、管理履约计划等功能。" name="description">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, minimal-ui">
<meta name="screen-orientation" content="portrait"/>
<meta name="apple-mobile-web-app-capable" content="yes">
......
<template>
<el-dialog title="本次随访详情" :visible.sync="dialogFormVisible" center :close-on-click-modal="false" :close-on-press-escape="false" width="800px">
<el-dialog title="本次履约详情" :visible.sync="dialogFormVisible" center :close-on-click-modal="false" :close-on-press-escape="false" width="800px">
<!--<el-form ref="statusForm" :model="statusForm" :rules="rules" label-suffix=":" label-width="120px">-->
<!--<el-form-item label="居民" style="margin-bottom:0;">-->
<!--<span>{{statusForm.nickname}}</span>-->
......
......@@ -22,6 +22,7 @@
<el-button
v-if="item.formType === 'button'"
type="primary"
:disabled="item.disabled"
@click="item.clickFunc ? item.clickFunc($event) : defaultClick($event)"
:icon="item.icon">{{ item.btnText }}
</el-button>
......@@ -65,6 +66,7 @@
<el-checkbox-group
v-else-if="item.formType === 'checkbox'"
v-model="form[item.model]"
:disabled="item.disabled"
@change="item.changeFun ? item.changeFun($event) : defaultFun($event)"
>
<el-checkbox
......@@ -79,6 +81,7 @@
<el-radio-group
v-else-if="item.formType === 'radio'"
v-model="form[item.model]"
:disabled="item.disabled"
@change="item.changeFun ? item.changeFun($event) : defaultFun($event)"
>
<el-radio
......
......@@ -81,7 +81,7 @@ const followRouters = {
component: newPlan,
name: 'newPlan',
meta: {
title: '新建随访计划',
title: '新建履约计划',
keepAlive: false //页面不需要缓存
},
},
......
......@@ -22,26 +22,26 @@ export default {
groupList: [], //分组列表
residentDetail: {}, //居民详情,
planDetail: {}, // 计划详情页,
nodeTimeList: [], //随访时间节点列表,
nodeTimeList: [], //履约时间节点列表,
nodeContent: {}, //时间节点详情
planOption: [], //随访计划select
planOption: [], //履约计划select
timeNodeList: [],
setTimeNodeList: [], //新建计划设置时间节点
planList: {}, //随访计划列表
remarkOption: [], //随访计划备注常量
markOptions: [], //随访 随访时间节点单位 常量
followTypeList: [], //随访 随访方式 常量
remindOptions: [], //随访 提醒医生天数 常量
pushTimeOptions: [], //随访 推送患教提醒天数 常量
planStatusOption: [], //随访计划状态常量
planList: {}, //履约计划列表
remarkOption: [], //履约计划备注常量
markOptions: [], //履约 履约时间节点单位 常量
followTypeList: [], //履约 履约方式 常量
remindOptions: [], //履约 提醒医生天数 常量
pushTimeOptions: [], //履约 推送患教提醒天数 常量
planStatusOption: [], //履约计划状态常量
formOptions: [],// 获取量表
templateOptions: [ // 获取随访计划模板
templateOptions: [ // 获取履约计划模板
{
id: 0,
name: '自定义模板'
}
],
followStartTimeList: [], //随访时间
followStartTimeList: [], //履约时间
residentCrumb: [], //居民面包屑
planModifyCrumb: [], //修改计划面包屑
selectResidentList: [], //修改计划已选居民
......@@ -176,7 +176,7 @@ export default {
});
},
getDateUnit(context, payload){
// 随访时间节点单位
// 履约时间节点单位
getBasicData({
numList: 'P017'
}).then(({data})=>{
......@@ -184,7 +184,7 @@ export default {
})
},
getFollowTypeList(context, payload){
// 随访方式
// 履约方式
getBasicData({
numList: 'P212'
}).then(({data})=>{
......@@ -214,7 +214,7 @@ export default {
})
},
getFollowupTemplate(context, payload){
// 获取随访模板
// 获取履约模板
getFollowupTemplate().then(({data})=>{
context.commit('GET_FOLLOW_TEMPLATE', data);
})
......
......@@ -3,9 +3,9 @@ import {getTodayAppointsList, getTodayOverview, getTodayPlans} from '@/utils/fol
export default {
namespaced: true,
state: {
todayPlansList: [], //今日随访列表
todayPlansList: [], //今日履约列表
todayAppointsList: [], //今日预约列表
todayOverview: [], //查询今日随访、预约、随访人数count
todayOverview: [], //查询今日履约、预约、履约人数count
},
mutations: {
GET_TODAY_PLAN_LIST(state, payload) {
......
import Vue from 'vue'
import Vuex from 'vuex'
import common from './education/common';
//随访
//履约
import followModules from './followup/index';
import getters from './getters'
//居民诊断
......
......@@ -236,20 +236,21 @@ html,body{
background-color: #449284 !important;
border-color: #449284 !important;
}
//popover组件的特殊处理
.el-popover {
::-webkit-scrollbar
{
width: 4px;
height: 10px;
background-color: #D8D8D8;
.prot-dialog {
.el-dialog__body {
padding: 25px 25px 10px;
}
::-webkit-scrollbar-thumb {
background-color: #D8D8D8;
&-tips-1 {
margin-top: 0px;
}
&-tips-2 {
margin-top: 20px;
font-size: 12px;
color: #aaa;
}
.more-text {
padding: 0 5px 0 5px;
max-height: 55px;
overflow-y: scroll;
&-tips-3 {
margin-top: 20px;
font-size: 12px;
color: #FF9A4B;
}
}
\ No newline at end of file
}
......@@ -56,7 +56,8 @@ service.interceptors.request.use(config => {
// console.log('环境变量>>>> ', process.env.BUILD_ENV);
// config.headers['token'] = 'BFD804F3A3194FBBBE113962222839F6';
// config.headers['token'] = 'F8209898391C40A0B8DBC1ED9E157291';
config.headers['token'] = 'E5F82EDD958941C29BCDDDED410ACDB3';
// config.headers['token'] = 'E5F82EDD958941C29BCDDDED410ACDB3';
config.headers['token'] = '04BEB8CAF7DE4E1AB861FC487E7ADAC8';
}else{
config.headers['token'] = localStorage.getItem('storageToken')
}
......
......@@ -27,7 +27,7 @@ export const getTodayOverview = (params) => {
url: getFollowUpSC(`/followup/overView/todayOverview`),
method: 'get',
params: params,
description: '获取今日随访、预约、随访人数',
description: '获取今日履约、预约、履约人数',
})
};
export const getTodayPlans = (params) => {
......@@ -36,7 +36,7 @@ export const getTodayPlans = (params) => {
url: getFollowUpSC(`/followup/overView/todayPlans`),
method: 'get',
params: params,
description: '查询今日随访计划',
description: '查询今日履约计划',
})
};
......@@ -48,7 +48,7 @@ export const createFollowPlan = (data) => {
url: getFollowUpSC(`/followup/plans`),
method: 'post',
data: data,
description: '新增、修改随访计划',
description: '新增、修改履约计划',
})
})
......@@ -82,7 +82,7 @@ export const getNodeTimeList = (planId) => {
headers,
url: getFollowUpSC(`/followup/plans/${planId}/time`),
method: 'get',
description: '获取随访时间节点列表',
description: '获取履约时间节点列表',
})
// })
......@@ -128,7 +128,7 @@ export const getFollowStartTimeList = (planId) => {
headers,
url: getFollowUpSC(`/followup/planPatient/${planId}/times`),
method: 'get',
description: '获取随访开始时间列表(居民相关)',
description: '获取履约开始时间列表(居民相关)',
})
// })
......@@ -272,7 +272,7 @@ export const changeEnteringStatus = (data) => {
url: getFollowUpSC(`/followup/entering/status/change`),
method: 'post',
data: data,
description: '变更随访状态',
description: '变更履约状态',
})
})
......@@ -284,7 +284,7 @@ export const getEnteringInfo = (patientId, fuPlanPatientTimesId) => {
url: getFollowUpSC(`/followup/entering/${patientId}/fuInfo/${fuPlanPatientTimesId}`),
method: 'get',
// params: params,
description: '随访单条信息查看',
description: '履约单条信息查看',
},)
// })
......@@ -319,7 +319,7 @@ export const getPlanPatientsList = (data) =>{
}
// 获取随访计划模板列表
// 获取履约计划模板列表
export const getFollowupTemplate = (data) => {
// return utils.checkAuth(()=>{
return fetch({
......@@ -327,13 +327,13 @@ export const getFollowupTemplate = (data) => {
url: getFollowUpSC(`/followup/plans/templets`),
method: 'get',
data: data,
description: '获取随访计划模板列表',
description: '获取履约计划模板列表',
})
// })
}
// 获取随访量表固定模板
// 获取履约量表固定模板
export const getFollowupTableTemplate = (id) => {
// return utils.checkAuth(()=>{
return fetch({
......@@ -341,7 +341,7 @@ export const getFollowupTableTemplate = (id) => {
url: getFollowUpSC(`/followup/plans/templets/${id}`),
method: 'get',
data: {},
description: '获取随访量表固定模板',
description: '获取履约量表固定模板',
})
// })
......@@ -484,4 +484,65 @@ export const updateScalesStatus = ( data ) => {
})
}
// 获取量表详情
export const getFirstAccess = () => {
return fetch({
url: getFollowUpSC(`/followup/overView/firstAccess`),
method: 'get',
data: {},
})
}
/**
* Add by Anndy Yang
* 统一验证:量表内是否存在敏感字段、居民是否签署隐私协议、7天内是否发送过授权短信
* @param {[type]} data
{
"scaleNo":"String,量表编号",
// "patientIds":"List<Integer>,医生/居民id集合", // pc端只传这个字段
"planPatientsTimesId": "planPatientsTimesId", // app端只传这个字段
"protocolType":"Integer,协议类型(1:平台用户协议,5:隐私协议)",
"userType":"Integer,用户类型(1:居民,2:医生,3:其他)",
"validateType":"1:3个条件依次校验,2:后面2个条件依次校验"
}
* @return {[type]}
{
"code": "000000",
"message": "成功",
"data": {
"levelType":"类型 1:量表不存在敏感字段,2:居民都已签署协议,3:7天内发送过授权短信,4:7天内未发送过授权短信"
"ids":"List<Integer>,未签署协议的id集合(需要发送授权短信的居民id集合)"
}
}
*/
export const uniteValidate = (data) => {
return fetch({
url: getFollowUpSC(`/followup/protocol/uniteValidate`),
method: 'post',
data: data,
})
};
/**
* Add by Anndy Yang
* [批量]医生给居民发送授权短信
* @param {[type]} data {"patientIds":"List<Integer>,居民id集合"}
* @return {[type]} [description]
*/
export const authMessage = (data) => {
return fetch({
url: getFollowUpSC(`/followup/protocol/authMessage`),
method: 'post',
data: data,
})
};
// 关于权限获取展示的模块信息
export const getScaleModels2 = (domain,scaleNo, params) => {
return fetch({
url: `${domain}/followup/protocol/${scaleNo}/models`,
method: 'get',
params: params,
})
}
import rangeJson from './rangConfig';
// 这个方法,是用户在选择随访轮次(6个月,12个月)后续操作
// 这个方法,是用户在选择履约轮次(6个月,12个月)后续操作
let checkNeedRule = (val) => {
const needRule = sessionStorage.getItem('needRule');
if( val!='0' && (!val||val=='') && (!needRule || needRule=='true') ){
......
......@@ -60,13 +60,13 @@ export default {
if (res.code == '000000') {
if (res.data == 1) {
// 点击 去加入,进入加入机构流程
alertMessage('您当前暂无机构,无法使用居民管理、随访管理和群发消息等功能,请在加入机构后重试。','去加入','暂不加入', ()=>{
alertMessage('您当前暂无机构,无法使用居民管理、履约管理和群发消息等功能,请在加入机构后重试。','去加入','暂不加入', ()=>{
location.href = getSaasHost() + '/pica-base/pica_join.html'
})
return new Promise((resolve, reject) => {
})
} else if (res.data == 2) {
alertMessage('您创建的机构正在审核中,暂无法使用居民管理、随访管理和群发消息等功能,请在审核通过后重试。','查看审核','取消', ()=>{
alertMessage('您创建的机构正在审核中,暂无法使用居民管理、履约管理和群发消息等功能,请在审核通过后重试。','查看审核','取消', ()=>{
location.href = getWsHost() + '/outside/status?tk=' + localStorage.getItem('storageToken')
})
return new Promise((resolve, reject) => {
......@@ -92,11 +92,11 @@ export default {
// res.data = 2
if (res.code == '000000') {
if (res.data == 1) {
alertMessage('您当前暂无机构,无法使用居民管理、随访管理和群发消息等功能,请在加入机构后重试。','去加入','暂不加入', ()=>{
alertMessage('您当前暂无机构,无法使用居民管理、履约管理和群发消息等功能,请在加入机构后重试。','去加入','暂不加入', ()=>{
location.href = getSaasHost() + '/pica-base/pica_join.html'
})
} else if (res.data == 2) {
alertMessage('您创建的机构正在审核中,暂无法使用居民管理、随访管理和群发消息等功能,请在审核通过后重试。','查看审核','取消', ()=>{
alertMessage('您创建的机构正在审核中,暂无法使用居民管理、履约管理和群发消息等功能,请在审核通过后重试。','查看审核','取消', ()=>{
location.href = getWsHost() + '/outside/status?tk=' + localStorage.getItem('storageToken')
})
} else if (res.data == 3) {
......
......@@ -26,7 +26,7 @@ export default [
},
{
field: 'nextBodyWeight',
name: '下次随访体重',
name: '下次履约体重',
min: 35,
max: 250
},
......@@ -44,7 +44,7 @@ export default [
},
{
field: 'nextSmokingAmount',
name: '下次随访日吸烟量',
name: '下次履约日吸烟量',
min: 0,
max: 99
},
......@@ -56,7 +56,7 @@ export default [
},
{
field: 'nextAlcoholConsumption',
name: '下次随访日饮酒量',
name: '下次履约日饮酒量',
min: 0,
max: 99
},
......@@ -74,13 +74,13 @@ export default [
},
{
field: 'nextWorkoutOfWeek',
name: '下次随访运动情况',
name: '下次履约运动情况',
min: 0,
max: 99
},
{
field: 'nextWorkoutDuration',
name: '下次随访运动情况',
name: '下次履约运动情况',
min: 0,
max: 99
},
......
......@@ -172,7 +172,7 @@ export function uploadImg() {
return getConfigByEnvType('qiniuImgUrl')
}
// 获取随访微服务服务器域名地址
// 获取履约微服务服务器域名地址
export function getFollowUpSC(url) {
return getConfigByEnvType('followUpSC') + url
}
......
<template>
<div class="finish-followup" v-if="showThisPage">
<el-dialog
title="选择随访开始时间"
title="选择履约开始时间"
:visible.sync="showAddPatientTime"
v-if="showThisPage"
:before-close="clickClose"
......@@ -16,11 +16,11 @@
<el-form-item label="已选居民:">
{{addPatientData.patientNames}}
</el-form-item>
<el-form-item label="随访开始时间:" prop="joinTime">
<el-form-item label="履约开始时间:" prop="joinTime">
<el-date-picker
v-model="addPatientData.joinTime"
type="date"
placeholder="请选择随访开始时间"
placeholder="请选择履约开始时间"
:editable="false"
format="yyyy-MM-dd"
value-format="timestamp"
......@@ -34,11 +34,24 @@
<el-button class="button-green" @click="addPatient" size="small" type="primary">确 定</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 { createFollowPlan } from '../../../../utils/followup/followapis'
import { createFollowPlan, uniteValidate, authMessage } from '../../../../utils/followup/followapis'
import { mapState, mapActions} from 'vuex';
export default {
name: "add-patient-time",
......@@ -62,13 +75,17 @@
showAddPatientTime: true,
rules: {
joinTime: [
{ required: true, message: '请选择随访开始时间', trigger: 'change' },
{ required: true, message: '请选择履约开始时间', trigger: 'change' },
],
}
},
isShowProtocolDialog: false,
isSentedProt: false,
patientIds: [],
sendMsgPatientIds: [],
}
},
mounted() {
//this.getFollowStartTimeList(this.$route.query.planId);// 获取随访时间列表
//this.getFollowStartTimeList(this.$route.query.planId);// 获取履约时间列表
},
computed: {
...mapState('planManage', {
......@@ -82,50 +99,153 @@
this.$emit('closeAddPatientTime',false)
},
addPatient() {
// 创建/修改履约计划
// 4、校验居民/医生是否签署协议
this.patientIds = this.addPatientData.patientIdList
this.$refs['addPatientData'].validate(valid => {
if (valid) {
if(this.$route.name == 'planModify') {
this.$emit('sendJoinTime',this.addPatientData.joinTime)
this.$emit('closeAddPatientTime',false)
} else {
const { id, patientIdList, joinTime } = this.addPatientData;
createFollowPlan({
id,
addPatients: true,
patientIdList,
joinTime
}).then((data) => {
if(data.code == '000000') {
this.$message({
message: '添加成功!',
type: 'success'
});
this.getResidentList({
planId: this.addPatientData.id,
status: this.addPatientData.status
})
this.$emit('closeAddPatientTime',false)
} else {
this.$message({
message: `${data.message}`,
type: 'error'
});
}
}).catch((err) => {
this.$message({
message: `${err.message}`,
type: 'error'
});
});
}
console.log(this.addPatientData)
// 4、校验居民/医生是否签署协议
// if(this.$route.name == 'planModify') {
// this.$emit('sendJoinTime',this.addPatientData.joinTime)
// this.$emit('closeAddPatientTime',false)
// } else {
// const { id, patientIdList, joinTime } = this.addPatientData;
// createFollowPlan({
// id,
// addPatients: true,
// patientIdList,
// joinTime
// }).then((data) => {
// if(data.code == '000000') {
// this.$message({
// message: '添加成功!',
// type: 'success'
// });
// this.getResidentList({
// planId: this.addPatientData.id,
// status: this.addPatientData.status
// })
// this.$emit('closeAddPatientTime',false)
// } else {
// this.$message({
// message: `${data.message}`,
// type: 'error'
// });
// }
// }).catch((err) => {
// this.$message({
// message: `${err.message}`,
// type: 'error'
// });
// });
// }
this.uniteValidateAction()
} else {
return false;
}
});
}
},
// Add by Anndy Yang
// 统一验证:量表内是否存在敏感字段、居民是否签署隐私协议、7天内是否发送过授权短信
uniteValidateAction() {
if(!this.patientIds.length) {
return;
}
let validParams = {
scaleNo: '',
patientIds: this.patientIds, // pc端只传这个字段
// planPatientsTimesId: planPatientsTimesId, // app端只传这个字段
protocolType: 5,
userType: 1,
validateType: 2
};
uniteValidate(validParams).then(res => {
let result = res;
// 请求成功
if (result.code === '000000') {
let levelType = result.data.levelType;
// 没有敏感字段或者居民已经签订过协议,则直接返回
if (levelType === 1 || levelType === 2) {
this.jumpToAddOrModifyPlan();
} 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.isShowProtocolDialog = false;
},
// 统一跳转到量表页面
jumpToAddOrModifyPlan() {
if(this.$route.name == 'planModify') {
this.$emit('sendJoinTime',this.addPatientData.joinTime)
this.$emit('closeAddPatientTime',false)
} else {
const { id, patientIdList, joinTime } = this.addPatientData;
createFollowPlan({
id,
addPatients: true,
patientIdList,
joinTime
}).then((data) => {
if(data.code == '000000') {
this.$message({
message: '添加成功!',
type: 'success'
});
this.getResidentList({
planId: this.addPatientData.id,
status: this.addPatientData.status
})
this.$emit('closeAddPatientTime',false)
} else {
this.$message({
message: `${data.message}`,
type: 'error'
});
}
}).catch((err) => {
this.$message({
message: `${err.message}`,
type: 'error'
});
});
}
},
// 关闭协议确认窗口
closeProtocolDialog() {
this.isShowProtocolDialog = false
this.jumpToAddOrModifyPlan()
},
// 发送短信通知
sendMsg() {
this.sendMsgToPatients();
this.closeProtocolDialog()
},
}
}
</script>
......
......@@ -22,7 +22,7 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="随访计划:" prop="planId">
<el-form-item label="履约计划:" prop="planId">
<el-select
v-model="planChangeData.planId"
@change="selectPlan"
......@@ -35,14 +35,14 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="随访开始时间:" prop="startDate">
<el-form-item label="履约开始时间:" prop="startDate">
<el-date-picker
v-model="planChangeData.startDate"
type="date"
format="yyyy-MM-dd"
value-format="timestamp"
:editable="false"
placeholder="选择随访开始时间">
placeholder="选择履约开始时间">
</el-date-picker>
</el-form-item>
</el-form>
......@@ -91,10 +91,10 @@
selectedGroup: [],
rules: {
planId: [
{ required: true, message: '请选择随访计划', trigger: 'change' },
{ required: true, message: '请选择履约计划', trigger: 'change' },
],
startDate: [
{ required: true, message: '请选择随访开始时间', trigger: 'change' },
{ required: true, message: '请选择履约开始时间', trigger: 'change' },
]
},
realGroup: [],
......@@ -103,7 +103,7 @@
},
mounted() {
this.getPlanOptions();
// 获取随访时间列表
// 获取履约时间列表
},
computed: {
...mapState('planManage', {
......
<template>
<div class="follow-time">
<el-dialog
title="随访开始时间"
title="履约开始时间"
:visible.sync="showFollowTime"
v-if="showThisPage"
:before-close="clickClose"
......@@ -13,7 +13,7 @@
style="width: 100%;margin-top: 20px;">
<el-table-column
prop="timeStr"
label="随访计划开始时间"
label="履约计划开始时间"
align="center">
</el-table-column>
<el-table-column
......
<template>
<div class="finish-followup" v-if="showThisPage">
<el-dialog
title="恢复随访"
title="恢复履约"
:visible.sync="showFinishFollowup"
v-if="showThisPage"
:before-close="clickClose"
......
......@@ -26,7 +26,7 @@
class="form-div"
>
<el-form :ref="itemTimeForm.formRef" :model="itemTimeForm" :rules="timeFormRules" label-suffix=":" label-width="140px" :inline-message="false" size="small">
<el-form-item label="本次随访时间" required>
<el-form-item label="本次履约时间" required>
<div style="display: flex;">
<el-form-item prop="timeNo">
<el-input
......@@ -52,7 +52,7 @@
</el-form-item>
</div>
</el-form-item>
<el-form-item label="随访方式" prop="type">
<el-form-item label="履约方式" prop="type">
<el-radio-group v-model="itemTimeForm.type" size="small">
<el-radio v-for="(item,index) in followTypeList" :key="index" :label="item.no" :disabled="itemIsDisabled(itemTimeForm)">{{item.value}}</el-radio>
</el-radio-group>
......@@ -105,7 +105,7 @@
<p class="yellow-font">当前计划中共{{totalNumber}}位居民(微信:{{wechatPatientNum}}位,短信:{{messagePatientNum}}位),本次定时推送任务在发送当日预计需要{{messagePatientNum}}条短信额度(微信推送不消耗额度,建议您让居民关注云鹊健康微信公众号),务必提前确保短信额度的充足。</p>
<p>需要更多额度,请前往「云鹊医App-个人中心-啾啾币中心」兑换短信额度后再进行预约,您也可以联系云鹊医客服购买短信额度,客服电话:400-920-8877</p>
</div>
<el-form-item label="随访登记表">
<el-form-item label="履约登记表">
<el-select
v-if="planId || itemTimeForm.followResourceId"
v-model="itemTimeForm.followResourceId"
......@@ -170,9 +170,9 @@
timeUnit: '',
timeUnitStr: '',
timeFormRules: {
timeNo: [{ required: true, message: '请添加随访时间', trigger: 'change' },{ validator: checkDay, trigger: 'blur' }],
timeUnit: [{ required: true, message: '请添加随访时间', trigger: 'change' }],
type: [{ required: true, message: '请选择随访方式', trigger: 'change' }],
timeNo: [{ required: true, message: '请添加履约时间', trigger: 'change' },{ validator: checkDay, trigger: 'blur' }],
timeUnit: [{ required: true, message: '请添加履约时间', trigger: 'change' }],
type: [{ required: true, message: '请选择履约方式', trigger: 'change' }],
},
isSelectCartoon: false,
activeTab: '0',
......@@ -261,7 +261,7 @@
header_name: pushData.sendContent
}
}
if(item.followupList && item.followupList.length > 0){ //followResourceId 随访量表
if(item.followupList && item.followupList.length > 0){ //followResourceId 履约量表
item.followResourceId = []
item.followupList.forEach((kkk)=>{
if(this.isStandedTemplate){
......@@ -328,12 +328,12 @@
initNewForm(){
this.setTimeNodeList.push({
formRef: 'form' + this.setTimeNodeList.length,
type: '',//随访方式
timeNo: '',//随访时间
timeUnit: '',//随访时间单位
type: '',//履约方式
timeNo: '',//履约时间
timeUnit: '',//履约时间单位
remindList: [],//提醒医生预约提前天数
pushContentList: [],//推送患教提前天数 漫画id
followupList: [],//随访量表id
followupList: [],//履约量表id
hasSelected: false,
isDisabled: false,
remindDay: [],
......@@ -348,11 +348,11 @@
},
// 一次性获取常量接口数据
getConstData(){
// 随访时间节点单位
// 履约时间节点单位
getBasicData({numList: 'P017'}).then(res=>{
this.markOptions = res.data.P017
})
// 随访方式
// 履约方式
getBasicData({numList: 'P212'}).then(res=>{
this.followTypeList = res.data.P212
})
......@@ -561,7 +561,7 @@
const lastIndex = this.activeTab;
const timeNo = this.setTimeNodeList[this.activeTab].timeNo;
setTimeout(()=>{
// 这里设置定时器是因为,如果填完时间,直接点击随访方式radio,会立即出发排序和重复事件
// 这里设置定时器是因为,如果填完时间,直接点击履约方式radio,会立即出发排序和重复事件
this.checkIsRepeat(timeNo,lastIndex);
// // 新增成功之后
// this.setTimeNodeList = this.sortKey(this.setTimeNodeList,'timeNo');
......@@ -706,7 +706,7 @@
this.setTimeNodeList[this.activeTab].pushContentList[0] = obj
this.$forceUpdate();
},
// 选择随访量表
// 选择履约量表
changeFollowId(val){
this.setTimeNodeList[this.activeTab].followupList = []
val.forEach((item)=>{
......
此差异已折叠。
......@@ -16,25 +16,25 @@
<div class="base-info" >
<div class="resident-info base-content">
<div class="content-div">
<div class="c-title">随访计划名称:</div>
<div class="c-title">履约计划名称:</div>
<div class="c-content">{{planDetail.name}}</div>
</div>
</div>
<div class="group-info base-content">
<div class="content-div">
<div class="c-title">随访居民:</div>
<div class="c-title">履约居民:</div>
<div class="c-content has-operation">{{planDetail.num}}<el-button type="text" @click="goToResidentList">查看居民></el-button></div>
</div>
</div>
<div class="followup-info base-content">
<div class="content-div">
<div class="c-title">随访模板:</div>
<div class="c-title">履约模板:</div>
<div class="c-content">{{planDetail.resourceName}}</div>
</div>
</div>
<div class="followup-info base-content">
<div class="content-div">
<div class="c-title">随访开始时间:</div>
<div class="c-title">履约开始时间:</div>
<div class="c-content has-operation">{{planDetail.timeStr}} <el-button class="btn-text" type="text" @click="goToFollowTime">查看全部></el-button></div>
</div>
</div>
......@@ -46,7 +46,7 @@
</div>
</div>
<div class="time-nodes" >
<p class="title">随访时间节点</p>
<p class="title">履约时间节点</p>
<div class="node-div">
<el-radio-group v-model="timeNodes" size="small">
<el-radio-button :key="item.id" v-for="item in planDetail.fPlanTimeReqList" :label="item.id">{{item.timeStr}}</el-radio-button>
......@@ -54,7 +54,7 @@
</div>
<div class="followup-contents" v-if="nodeContent.length">
<div class="content-div">
<div class="c-title">随访方式:</div>
<div class="c-title">履约方式:</div>
<div class="c-content">{{nodeContent[0].typeStr}}</div>
</div>
<div class="content-div">
......@@ -71,7 +71,7 @@
</div>
</div>
<div class="content-div">
<div class="c-title">随访登记表:</div>
<div class="c-title">履约登记表:</div>
<div class="c-content more-content">
<p class="click-text" v-for="item in nodeContent[0].followupList" @click="goToScale(item)">{{item.sendContent}}</p>
</div>
......@@ -98,7 +98,7 @@
data() {
return {
/*面包屑配置*/
curmbFirst: '随访管理',
curmbFirst: '履约管理',
curmbSecond: '计划管理',
curmbThird: '计划详情',
jumPathThird: '/followUp/plan-manage',
......@@ -114,7 +114,7 @@
},
mounted() {
this.getPlanDetail(this.$route.query.planId); //获取计划详情
this.getNodeTimeList(this.$route.query.planId); // 获取随访时间列表
this.getNodeTimeList(this.$route.query.planId); // 获取履约时间列表
},
computed: {
...mapState('planManage', {
......@@ -137,7 +137,7 @@
goToResidentList() {
let residentCrumb = [
{
name: '随访管理',
name: '履约管理',
href: null
},
{
......@@ -159,7 +159,7 @@
changePlan() {
let planModifyCrumb = [
{
name: '随访管理',
name: '履约管理',
href: null
},
{
......
......@@ -6,7 +6,7 @@
<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-form-item label="履约计划名称">
<el-input v-model="searchData.name" placeholder="请输入关键词" maxlength="20" style="width: 250px" clearable></el-input>
</el-form-item>
<el-form-item label="开始年份">
......@@ -28,12 +28,12 @@
</div>
</div>
<div class="table-content">
<div class="content-group-btn"><el-button type="primary" size="small" @click="addNewPlan">新建随访计划</el-button></div>
<div class="content-group-btn"><el-button type="primary" size="small" @click="addNewPlan">新建履约计划</el-button></div>
<div>
<el-table :data="planList.fPlanDtoList" style="width: 100%;margin-top: 20px;">
<el-table-column
prop="name"
label="随访计划名称"
label="履约计划名称"
min-width="180"
align="left"
:show-overflow-tooltip="true">
......@@ -81,21 +81,31 @@
</div>
</div>
</div>
<!-- 协议提醒 -->
<el-dialog class="prot-dialog" title="" :visible.sync="isShowProtocolDialog" 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>
</div>
</template>
<script>
import BreadCrumb from "@/components/breadcrumb";
import { mapState, mapActions} from 'vuex'
import {deletePlan, getVerifyStatus} from '@/utils/followup/followapis'
import { mapState, mapActions } from 'vuex'
import { deletePlan, getVerifyStatus } from '@/utils/followup/followapis'
import { getSaasDomain } from '@/utils/index'
import { getFirstAccess } from '@/utils/followup/followapis'
// import { messageBox } from '@/utils/utils'
export default {
components:{
BreadCrumb,
},
data(){
return{
curmbFirst: '随访管理',
curmbFirst: '履约管理',
curmbSecond: '计划管理',
searchData: {
name: '',
......@@ -149,6 +159,7 @@
total: 0,
pageSizes: [10,20,50,100]
},
isShowProtocolDialog: false,
}
},
computed: {
......@@ -157,14 +168,26 @@
})
},
created() {
},
mounted() {
this.init();
},
watch: {},
methods: {
...mapActions('planManage', ['getPlanList', 'setResidentCrumb', 'setPlanModifyCrumb']),
// 验证是否首次进入 ################
isFirstEnter() {
getFirstAccess().then((res) => {
if(res.code == '000000') {
this.isShowProtocolDialog = res.data
}
});
},
init() {
getVerifyStatus().then((res) => {
if(res.code === '000000') {
//认证通过,判断是否首次进入
this.isFirstEnter();
this.search(1);
}else if(res.code === '200008'){
this.$confirm(`${res.message}`, '提示', {
......@@ -212,7 +235,7 @@
visitRow(row){
let residentCrumb = [
{
name: '随访管理',
name: '履约管理',
href: null
},
{
......@@ -230,7 +253,7 @@
changeRow(row){
let planModifyCrumb = [
{
name: '随访管理',
name: '履约管理',
href: null
},
{
......@@ -278,11 +301,30 @@
filters: {},
}
</script>
<style lang="scss">
.plan-list-alert {
height: 200px !important;
.el-message-box__content {
padding: 0 35px 20px;
}
.el-message-box__message {
text-align: left;
}
.el-message-box__btns {
.el-button {
width: 200px;
span {
padding: 10px 50px;
}
}
}
}
</style>
<style scoped lang="scss">
@import '../../../style/followup/followup-common';
@import '../../../style/followup/element-reset.css';
.plan-list-wrapper{
.plan-list-content{
.search-input{
......
......@@ -19,25 +19,25 @@
</div>
</div>
<el-form ref="baseInfo" :model="planDetailData" :rules="rules" label-suffix=":" label-width="140px">
<el-form-item label="随访计划名称" prop="name">
<el-form-item label="履约计划名称" prop="name">
<el-input v-model="planDetailData.name" maxlength="20" style="width: 30%" size="small" clearable></el-input>
</el-form-item>
<el-form-item label="随访居民" required>
<el-form-item label="履约居民" required>
<div class="select-patients">
<el-button plain icon="el-icon-plus" size="small" @click="selectPatientHandler">{{planDetailData.patientIdList ? '继续添加' : '选择居民'}}</el-button><br>
<el-button type="text" class="mt10" size="small" @click="seeSelectedHandler" v-if="planDetailData.patientIdList">已选{{hasSelectedList.length}}<i class="el-icon-arrow-right"></i></el-button>
</div>
</el-form-item>
<el-form-item label="随访模板" prop="resourceName">
<el-form-item label="履约模板" prop="resourceName">
{{planDetailData.resourceName}}
</el-form-item>
<el-form-item label="随访开始时间" prop="timeStr">
<el-form-item label="履约开始时间" prop="timeStr">
{{planDetailData.timeStr}} <el-button class="btn-text" type="text" @click="goToFollowTime" size="small">查看全部></el-button>
</el-form-item>
<el-form-item label="备注">
<el-select
v-model="planDetailData.remarksStatus"
placeholder="请选择随访种类"
placeholder="请选择履约种类"
size="small"
:popper-append-to-body="false"
clearable>
......@@ -91,7 +91,7 @@
import FollowTime from '@/views/followup/plan-manage/dialog/follow-time';
import {createFollowPlan} from '@/utils/followup/followapis'
//添加居民选择随访时间
//添加居民选择履约时间
import addPatientTime from '@/views/followup/plan-manage/dialog/add-patient-time';
import { mapState, mapActions } from 'vuex'
......@@ -111,27 +111,27 @@
setTimeNodeList: [],
planDetailData: {},
planId: '',
isStandedTemplate: false, // 是否是固定的随访模板
standedTimeNodeList: [], // 如果是国定随访模板,获取固定数据后不可更改,只读
isStandedTemplate: false, // 是否是固定的履约模板
standedTimeNodeList: [], // 如果是国定履约模板,获取固定数据后不可更改,只读
checkForm: false,
patientIdList: [], //获取的病人列表
hasSelectedList: [], //已选居民
planModifyCrumb: [], //面包屑
rules: {
name: [{ required: true, message: '请输入随访计划名称', trigger: 'blur' }],
followupTemplate: [{ required: true, message: '请选择随访模板', trigger: 'change' }],
startTime: [{ required: true, message: '请选择随访开始时间', trigger: 'change' }],
name: [{ required: true, message: '请输入履约计划名称', trigger: 'blur' }],
followupTemplate: [{ required: true, message: '请选择履约模板', trigger: 'change' }],
startTime: [{ required: true, message: '请选择履约开始时间', trigger: 'change' }],
},
templateOptions: [
{
value: '0',
label: '随访模板一'
label: '履约模板一'
}, {
value: '1',
label: '随访模板二'
label: '履约模板二'
}, {
value: '2',
label: '随访模板三'
label: '履约模板三'
}
],
isShowSelectPatient: false, //显示居民选择框
......@@ -153,7 +153,7 @@
this.planId = String(this.$route.query.planId)
this.getPlanDetail(this.$route.query.planId); //获取计划详情
this.getRemarkOption()
this.getNodeTimeList(this.$route.query.planId); // 获取随访时间列表
this.getNodeTimeList(this.$route.query.planId); // 获取履约时间列表
let planModifyCrumbList = sessionStorage.getItem('planModifyCrumb');
this.planModifyCrumb = JSON.parse(planModifyCrumbList);
......@@ -218,6 +218,7 @@
id: this.$route.query.planId,
addPatients: true,
patientNames: showNames,
patientIdList: newIds,
}
} else {
this.hasSelectedList = JSON.parse(JSON.stringify(this.newHasSelectedList));
......
......@@ -13,8 +13,8 @@
<div class="title"><p>基本信息</p></div>
<div class="h-btn">
<el-button class="button-white" plain size="small" @click="changePlan">计划变更</el-button>
<el-button v-if="status==3" class="button-white" plain size="small" @click="finishFollowup">恢复随访</el-button>
<el-button v-else class="button-white" plain size="small" @click="finishFollowup">结束随访</el-button>
<el-button v-if="status==3" class="button-white" plain size="small" @click="finishFollowup">恢复履约</el-button>
<el-button v-else class="button-white" plain size="small" @click="finishFollowup">结束履约</el-button>
</div>
</div>
<div class="base-info">
......@@ -48,11 +48,11 @@
</div>
<div class="followup-info base-content">
<div class="content-div">
<div class="c-title">随访模板:</div>
<div class="c-title">履约模板:</div>
<div class="c-content">{{planDetails.resourceName}}</div>
</div>
<div class="content-div">
<div class="c-title">随访开始时间:</div>
<div class="c-title">履约开始时间:</div>
<div class="c-content">{{planDetails.timeStr}}</div>
</div>
<div class="content-div">
......@@ -60,13 +60,13 @@
<div class="c-content">{{planDetails.remarksStatusStr}}</div>
</div>
<div class="content-div">
<div class="c-title">随访状态:</div>
<div class="c-title">履约状态:</div>
<div class="c-content">{{planDetails.statusStr}}</div>
</div>
</div>
</div>
<div class="time-nodes">
<p class="title">随访时间节点</p>
<p class="title">履约时间节点</p>
<div class="node-div">
<el-radio-group v-model="timeNodes" size="small">
<el-radio-button :key="item.id" v-for="item in timeNodeList" :label="item.id">{{item.timeStr}}</el-radio-button>
......@@ -74,7 +74,7 @@
</div>
<div class="followup-contents">
<div class="content-div">
<div class="c-title">随访方式:</div>
<div class="c-title">履约方式:</div>
<div class="c-content">{{nodeContent.typeStr}}</div>
</div>
<div class="content-div">
......@@ -91,7 +91,7 @@
</div>
</div>
<div class="content-div">
<div class="c-title">随访登记表:</div>
<div class="c-title">履约登记表:</div>
<div class="c-content more-content">
<p class="click-text" v-for="item in nodeContent.followupList" @click="goToScale(item)" >{{item.sendContent}}</p>
</div>
......@@ -107,7 +107,7 @@
<script>
//变更计划dialog
import ChangePlan from '@/views/followup/plan-manage/dialog/change-plan';
//结束随访dialog
//结束履约dialog
import FinishFollowup from '@/views/followup/plan-manage/dialog/finish-followup';
import { mapState, mapActions } from 'vuex'
......@@ -120,14 +120,14 @@
data() {
return {
/*面包屑配置*/
curmbFirst: '随访管理',
curmbFirst: '履约管理',
curmbSecond: '计划管理',
curmbThird: '查看居民',
jumPathThird: '/followUp/plan-manage',
/*面包屑配置*/
timeNodes: 0,//时间节点
showChangePlan: false,//是否展示变更计划
showFinishFollowup: false, //是否展示结束随访,
showFinishFollowup: false, //是否展示结束履约,
planChangeData: {}, //变更信息
finishData: {}, //结束信息
planDetails: {}, //计划详情
......@@ -185,7 +185,7 @@
planId: this.residentDetail.fPlanDto.id,
patientName: this.residentDetail.patientName,
patientIdList: patientIdList,
title: this.status==3?'恢复随访':'结束随访',
title: this.status==3?'恢复履约':'结束履约',
reasonName: this.status==3?'恢复原因:':'结束原因:',
planPatientsIdList: planPatientsIdList
}
......
......@@ -2,7 +2,7 @@
<div class="resident-list">
<div class="bread-crumb">
<el-breadcrumb separator="/" >
<el-breadcrumb-item v-for="item in residentCrumb">
<el-breadcrumb-item v-for="(item, index) in residentCrumb" :key="index">
<a v-if="item.href" :href="item.href">{{item.name}}</a>
<span v-else >{{item.name}}</span>
</el-breadcrumb-item>
......@@ -30,7 +30,7 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="随访开始时间:" prop="startDate" size="small">
<el-form-item label="履约开始时间:" prop="startDate" size="small">
<el-select v-model="searchData.startDate" size="small" clearable :popper-append-to-body="false">
<el-option label="全部" value=""></el-option>
<el-option
......@@ -56,8 +56,8 @@
<el-radio-button label="3">已结束({{residentList.yesCount}})</el-radio-button>
</el-radio-group>
<div class="btn-left">
<el-button class="button-white" plain size="small" v-if="status==3" @click="finishFollowup('all')">恢复随访</el-button>
<el-button class="button-white" plain size="small" v-else @click="finishFollowup('all')">结束随访</el-button>
<el-button class="button-white" plain size="small" v-if="status==3" @click="finishFollowup('all')">恢复履约</el-button>
<el-button class="button-white" plain size="small" v-else @click="finishFollowup('all')">结束履约</el-button>
<el-button class="button-green" type="primary" size="small" @click="selectPatientHandler">添加居民</el-button>
</div>
</div>
......@@ -94,7 +94,7 @@
<el-table-column
width="160"
prop="time"
label="随访开始时间"
label="履约开始时间"
align="center">
</el-table-column>
<el-table-column
......@@ -109,8 +109,8 @@
align="center">
<template slot-scope="scope">
<el-button class="btn-right-class" type="text" @click="changePlan(scope.row)" >变更计划</el-button>|
<el-button class="btn-right-class" type="text" v-if="status==3" @click="finishFollowup(scope.row)" >恢复随访</el-button>
<el-button class="btn-right-class" type="text" v-else @click="finishFollowup(scope.row)" >结束随访</el-button>
<el-button class="btn-right-class" type="text" v-if="status==3" @click="finishFollowup(scope.row)" >恢复履约</el-button>
<el-button class="btn-right-class" type="text" v-else @click="finishFollowup(scope.row)" >结束履约</el-button>
</template>
</el-table-column>
</el-table>
......@@ -142,19 +142,20 @@
<add-patient-time
:showThisPage="showAddPatientTime"
:addPatientData="addPatientData"
@closeAddPatientTime="closeAddPatientTime"></add-patient-time>
@closeAddPatientTime="closeAddPatientTime">
</add-patient-time>
</div>
</template>
<script>
//变更计划dialog
import ChangePlan from '@/views/followup/plan-manage/dialog/change-plan';
//结束随访dialog
//结束履约dialog
import FinishFollowup from '@/views/followup/plan-manage/dialog/finish-followup';
//添加居民
// import SelectPatient from '@/views/followup/plan-manage/dialog/select-patient';
import SelectPatient from '@/views/patients/labels-manage/dialog/select-patitents';
//添加居民选择随访时间
//添加居民选择履约时间
import addPatientTime from '@/views/followup/plan-manage/dialog/add-patient-time';
import { mapState, mapActions } from 'vuex'
......@@ -180,16 +181,16 @@
status: 1, //列表筛选条件
showChangePlan: false,//是否展示变更计划
planChangeData: {}, //变更计划数据
showFinishFollowup: false, //是否展示结束随访
showFinishFollowup: false, //是否展示结束履约
finishData: {}, //结束数据
isShowSelectPatient: false, //显示居民选择框
hasSelectedList: [], //已选居民
finishPatientList: [], //结束随访居民(多选)
finishPatientList: [], //结束履约居民(多选)
initialPatientIdList: [], //初始居民
showAddPatientTime: false,//是否展示添加居民选择时间
addPatientData: {}, //选择时间数据
statusTotal: null, //每种状态的总数
planTitle: '', //随访计划名称
planTitle: '', //履约计划名称
residentCrumb: [], //面包屑
selectPatientType: 1,
getRowKeys(row) {
......@@ -207,7 +208,7 @@
});
this.getPlanStatusOption()
this.getGroupList(); //获取分组列表
this.getFollowStartTimeList(this.$route.query.planId);// 获取随访时间列表
this.getFollowStartTimeList(this.$route.query.planId);// 获取履约时间列表
let residentCrumbList = sessionStorage.getItem('residentCrumb');
residentCrumbList = JSON.parse(residentCrumbList);
if(residentCrumbList.length==4&&residentCrumbList[residentCrumbList.length-1].name!='查看居民') {
......@@ -264,7 +265,7 @@
if(this.residentCrumb.length === 3) {
residentCrumbs = [
{
name: '随访管理',
name: '履约管理',
href: null
},
{
......@@ -283,7 +284,7 @@
} else if(this.residentCrumb.length === 4) {
residentCrumbs = [
{
name: '随访管理',
name: '履约管理',
href: null
},
{
......@@ -372,7 +373,7 @@
planId: this.$route.query.planId,
patientName: patientNames,
patientIdList: patientIds,
title: this.status==3?'恢复随访':'结束随访',
title: this.status==3?'恢复履约':'结束履约',
reasonName: this.status==3?'恢复原因:':'结束原因:',
planPatientsIdList:planPatientsIdList
};
......@@ -386,7 +387,7 @@
planId: this.$route.query.planId,
patientName: row.patientName,
patientIdList: patientIds,
title: this.status==3?'恢复随访':'结束随访',
title: this.status==3?'恢复履约':'结束履约',
reasonName: this.status==3?'恢复原因:':'结束原因:',
planPatientsIdList: planPatientsIdList
};
......@@ -417,6 +418,8 @@
patientIds.push(item.patientId)
patientNames.push(item.nickname)
})
// 将选择的patientIds存入Store中
if(patientNames.length>5) {
const le = patientNames.length
patientNames = patientNames.slice(0,5)
......
<template>
<div class="dialog-wrap">
<el-dialog
title="变更随访状态"
title="变更履约状态"
:visible.sync="dialogFormVisible"
v-if="isShowChangeDialog"
center
......@@ -73,9 +73,9 @@
reason: this.statusForm.reason,
}).then(({data}) => {
if(data == 2) {
this.$message.success('随访状态变更成功!');
this.$message.success('履约状态变更成功!');
}else {
this.$message.error('随访状态变更失败!');
this.$message.error('履约状态变更失败!');
}
this.$emit('closeChangeStatus',false);
this.$refs['statusForm'].resetFields();
......
<template>
<el-dialog title="本次随访详情"
<el-dialog title="本次履约详情"
:visible.sync="dialogDetail"
v-if="dialogFormVisible"
center
......@@ -36,36 +36,36 @@
<div class="base-info pt10">
<div class="base-content">
<div class="content-div">
<div class="c-title">随访计划名称:</div>
<div class="c-title">履约计划名称:</div>
<div class="c-content">{{enteringInfo.name | emptyFileter}}</div>
</div>
</div>
<div class="group-info base-content">
<div class="content-div">
<div class="c-title">随访时间点:</div>
<div class="c-content" v-if="enteringInfo.timeNo">{{enteringInfo.timeNo}}随访</div>
<div class="c-title">履约时间点:</div>
<div class="c-content" v-if="enteringInfo.timeNo">{{enteringInfo.timeNo}}履约</div>
<div class="c-content" v-else>{{enteringInfo.timeNo | emptyFileter}}</div>
</div>
<div class="content-div">
<div class="c-title">随访方式:</div>
<div class="c-title">履约方式:</div>
<div class="c-content">{{enteringInfo.fuPlanType | emptyFileter}}</div>
</div>
<div class="content-div" v-if="enteringInfo.executePlanTime">
<div class="c-title">实际随访时间:</div>
<div class="c-title">实际履约时间:</div>
<div class="c-content">{{enteringInfo.executePlanTime}}</div>
</div>
<div class="content-div" v-else>
<div class="c-title">计划随访时间:</div>
<div class="c-title">计划履约时间:</div>
<div class="c-content">{{enteringInfo.fuPlanTime}}</div>
</div>
<div class="content-div">
<div class="c-title">预约随访时间:</div>
<div class="c-title">预约履约时间:</div>
<div class="c-content">{{enteringInfo.appointmentTime | emptyFileter}}</div>
</div>
</div>
<div class="group-info base-content flex-start">
<div class="content-div">
<div class="c-title">随访状态:</div>
<div class="c-title">履约状态:</div>
<div class="c-content">{{enteringInfo.status | emptyFileter}}</div>
</div>
<div class="content-div">
......@@ -100,7 +100,7 @@
</div>
<div class="base-info console-list">
<div class="list-item">
<p class="title">随访登记表</p>
<p class="title">履约登记表</p>
</div>
<div class="list-item" v-for="(item, index) in enteringInfo.fuTable" :key="index" v-if="enteringInfo.fuTable.length>0">
<p class="link-p" @click="goToScale(item)">{{item.name}}</p>
......
<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>
......@@ -2,7 +2,7 @@
<div class="form-show-scrollY">
<div class="form-template">
<BreadCrumb
:curmbFirst="'随访管理'"
:curmbFirst="'履约管理'"
:curmbSecond="breadTxt"
:curmbThird="'录入量表'"
:jumPathThird="jumPathThird"
......@@ -32,8 +32,6 @@
<!--糖尿病-->
<diabetes v-if="scaleNo=='SCALE0002'" :showBtn="showBtn" :scaleType="scaleNo" :checkStart="checkStart" @checkEnd="checkEnd" :saveWay="saveWay" ></diabetes>
</div>
</div>
</div>
</div>
......@@ -54,7 +52,7 @@
breadTxt: '录入管理',
jumPathThird: '/followup/record-manage/record-list',
checkStart: false,
showBtn: '1',
showBtn: '1', //值为0隐藏右上角按钮,值为1显示按钮
// resourceId: '',
saveWay: 1,
scaleNo: ''
......@@ -80,14 +78,14 @@
console.log('scaleNo=>',this.scaleNo)
// 0003 脑卒中、0002 糖尿病、0001 高血压
if(this.scaleNo == 'SCALE0003'){
this.titleText = '心脑血管病危险因素社区、乡镇人群随访表';
this.titleSmText = '(适用于社区、乡镇脑卒中高危人群满6个月、12个月时随访和中危人群满12个月时随访使用)';
this.titleText = '心脑血管病危险因素社区、乡镇人群履约表';
this.titleSmText = '(适用于社区、乡镇脑卒中高危人群满6个月、12个月时履约和中危人群满12个月时履约使用)';
}else if(this.scaleNo == 'SCALE0001'){
this.titleText = '高血压患者随访服务记录表';
this.titleSmText = '(本表为高血压患者在接受随访服务时由医生填写)';
this.titleText = '高血压患者履约服务记录表';
this.titleSmText = '(本表为高血压患者在接受履约服务时由医生填写)';
}else if(this.scaleNo == 'SCALE0002'){
this.titleText = '2 型糖尿病患者随访服务记录表 ';
this.titleSmText = '(本表为2型糖尿病患者在接受随访服务时由医生填写)';
this.titleText = '2 型糖尿病患者履约服务记录表 ';
this.titleSmText = '(本表为2型糖尿病患者在接受履约服务时由医生填写)';
}
if(this.$route.query.showBtn=='0'){
this.showBtn = String(this.$route.query.showBtn);
......
......@@ -3,7 +3,6 @@ import { checkRange, checkIsInteger, checkNumberIsToFixed, checkNumberIsToFixedT
export default ($this) => {
let hanldeValue = () => {
$this.addComponents.forEach((item,index)=>{
if(item.name == 'diabetesSourseAuxiliary'){
const glycosylatedHemoglobinPercent = item.formObject.glycosylatedHemoglobinPercent
const glycosylatedHemoglobinDate = item.formObject.glycosylatedHemoglobinDate
......
......@@ -8,7 +8,7 @@ export default ($this) => {
prop: 'name',
model: 'name',
label: '姓名:',
disabled: false,
disabled: true,
placeholder: '请输入姓名',
spanNum: 12,
maxlength: 30,
......@@ -37,12 +37,12 @@ export default ($this) => {
prop: 'followupDate',
model: 'followupDate',
placeholder: '请选择',
label: '随访日期:',
label: '履约日期:',
format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd',
dateType: 'date',
type: 'date',
rules: [{required: true, message: '请选择随访日期', trigger: ['submit','change']}],
rules: [{required: true, message: '请选择履约日期', trigger: ['submit','change']}],
spanNum: 12,
},
......@@ -52,13 +52,13 @@ export default ($this) => {
prop: 'followupType',
model: 'followupType',
spanNum: 24,
label: '随访方式:',
label: '履约方式:',
options: [
{ label: '门诊', value: '门诊' },
{ label: '家庭', value: '家庭' },
{ label: '电话', value: '电话' },
],
rules: [{ required: true, message: '请选择随访方式', trigger: ['submit','change'] }],
rules: [{ required: true, message: '请选择履约方式', trigger: ['submit','change'] }],
changeFun: (e)=>{
}
},
......
......@@ -24,14 +24,14 @@ export default ($this) => {
prop: 'nextSmokingAmount',
model: 'nextSmokingAmount',
disabled: false,
label: '下次随访目标日吸烟量:',
placeholder: '请输入下次随访日吸烟量',
label: '下次履约目标日吸烟量:',
placeholder: '请输入下次履约日吸烟量',
spanNum: 8,
maxlength: 30,
type: 'number',
labmsg: '',
slots: [{name: '支/日', type: 'append'}],
rules: [{ required: true, message: '请输入下次随访日吸烟量', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
rules: [{ required: true, message: '请输入下次履约日吸烟量', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
},
{
formType: 'input',
......@@ -54,14 +54,14 @@ export default ($this) => {
prop: 'nextAlcoholConsumption',
model: 'nextAlcoholConsumption',
disabled: false,
label: '下次随访目标日饮酒量:',
placeholder: '请输入下次随访日饮酒量',
label: '下次履约目标日饮酒量:',
placeholder: '请输入下次履约日饮酒量',
spanNum: 8,
maxlength: 30,
type: 'number',
labmsg: '',
slots: [{name: '两/日', type: 'append'}],
rules: [{ required: true, message: '请输入下次随访日饮酒量', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
rules: [{ required: true, message: '请输入下次履约日饮酒量', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
},
{
......@@ -100,14 +100,14 @@ export default ($this) => {
prop: 'nextWorkoutOfWeek',
model: 'nextWorkoutOfWeek',
disabled: false,
label: '下次随访目标运动情况:',
placeholder: '请输入下次随访运动情况',
label: '下次履约目标运动情况:',
placeholder: '请输入下次履约运动情况',
spanNum: 8,
maxlength: 30,
type: 'number',
labmsg: '',
slots: [{name: '次/周', type: 'append'}],
rules: [{ required: true, message: '请输入下次随访运动情况', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
rules: [{ required: true, message: '请输入下次履约运动情况', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
},
{
formType: 'input',
......@@ -115,13 +115,13 @@ export default ($this) => {
prop: 'nextWorkoutDuration',
model: 'nextWorkoutDuration',
disabled: false,
placeholder: '请输入下次随访运动情况',
placeholder: '请输入下次履约运动情况',
spanNum: 8,
maxlength: 30,
type: 'number',
labmsg: '',
slots: [{name: '分钟/次', type: 'append'}],
rules: [{ required: true, message: '请输入下次随访运动情况', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
rules: [{ required: true, message: '请输入下次履约运动情况', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
},
{
formType: 'input',
......
......@@ -65,15 +65,16 @@ export default ($this) => {
className: 'obj-form-title radio-block',
prop: 'followUpClassification',
model: 'followUpClassification',
disabled: false,
spanNum: 24,
label: '此次随访分类:',
label: '此次履约分类:',
options: [
{ label: '控制满意(血压控制满意,无其他异常)', value: '控制满意(血压控制满意,无其他异常)' },
{ label: '控制不满意(血压控制不满意,无其他异常)', value: '控制不满意(血压控制不满意,无其他异常)' },
{ label: '不良反应(存在药物不良反应)', value: '不良反应(存在药物不良反应)' },
{ label: '并发症(出现新的并发症或并发症出现异常)', value: '并发症(出现新的并发症或并发症出现异常)' },
],
rules: [{ required: true, message: '请选择此次随访分类', trigger: ['submit','change'] }],
rules: [{ required: true, message: '请选择此次履约分类', trigger: ['submit','change'] }],
changeFun: (e)=>{
}
},
......
......@@ -120,14 +120,14 @@ export default ($this) => {
className: 'float-none',
prop: 'nextBodyWeight',
model: 'nextBodyWeight',
label: '下次随访目标体重:',
label: '下次履约目标体重:',
disabled: false,
placeholder: '请输入(体重可以带1位小数点)',
spanNum: 8,
type: 'number',
labmsg: '次',
slots: [{name: 'kg', type: 'append'}],
rules: [{required: true, message: '请输入下次随访体重', trigger: ['submit','change']},{ validator: checkRange , trigger: ['submit','change'] }, {validator: checkNumberIsToFixed , trigger: ['submit','change']}],
rules: [{required: true, message: '请输入下次履约体重', trigger: ['submit','change']},{ validator: checkRange , trigger: ['submit','change'] }, {validator: checkNumberIsToFixed , trigger: ['submit','change']}],
changeFun: (val)=>{
$this.addComponents.forEach((item,index)=>{
if(item.name == 'diabetesSourseSign'){
......@@ -155,7 +155,7 @@ export default ($this) => {
className: 'float-none',
prop: 'nextBmi',
model: 'nextBmi',
label: '下次随访BMI(系统自动生成):',
label: '下次履约BMI(系统自动生成):',
disabled: true,
placeholder: '(这里是自动计算所得)',
spanNum: 8,
......
......@@ -8,12 +8,12 @@ export default ($this) => {
prop: 'nextFollowDay',
model: 'nextFollowDay',
placeholder: '请选择',
label: '下次随访日期:',
label: '下次履约日期:',
format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd',
dateType: 'date',
type: 'date',
rules: [{required: true, message: '请选择下次随访日期', trigger: ['submit','change']}],
rules: [{required: true, message: '请选择下次履约日期', trigger: ['submit','change']}],
spanNum: 12,
},
// {
......@@ -21,14 +21,14 @@ export default ($this) => {
// className: 'float-none',
// prop: 'doctorSignature',
// model: 'doctorSignature',
// label: '随访医生签名:',
// label: '履约医生签名:',
// disabled: false,
// placeholder: '请输入随访人员姓名',
// placeholder: '请输入履约人员姓名',
// spanNum: 12,
// maxlength: 30,
// type: 'text',
// labmsg: '次',
// rules: [{required: true, message: '请输入随访医生签名', trigger: ['submit','change']}],
// rules: [{required: true, message: '请输入履约医生签名', trigger: ['submit','change']}],
// },
]
}
......@@ -12,9 +12,9 @@ export default ($this) => {
spanNum: 24,
options: [
{ label: '无', value: '无', disabled: false },
{ label: '有', value: '有', disabled: false },
{ label: '有', value: '有', disabled: false},
],
rules: [{ required: true, message: '请选择随访期间有无症状', trigger: ['submit','change'] }],
rules: [{ required: true, message: '请选择履约期间有无症状', trigger: ['submit','change'] }],
changeFun: (e) => {
if(e == '有') {
$this.addComponents.forEach((item,index)=>{
......
......@@ -8,7 +8,7 @@ export default ($this) => {
prop: 'name',
model: 'name',
label: '姓名:',
disabled: false,
disabled: true,
placeholder: '请输入姓名',
spanNum: 12,
maxlength: 30,
......@@ -36,12 +36,12 @@ export default ($this) => {
prop: 'followupDate',
model: 'followupDate',
placeholder: '请选择',
label: '随访日期:',
label: '履约日期:',
format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd',
dateType: 'date',
type: 'date',
rules: [{required: true, message: '请选择随访日期', trigger: ['submit','change']}],
rules: [{required: true, message: '请选择履约日期', trigger: ['submit','change']}],
spanNum: 12,
},
......@@ -51,13 +51,13 @@ export default ($this) => {
prop: 'followupType',
model: 'followupType',
spanNum: 24,
label: '随访方式:',
label: '履约方式:',
options: [
{ label: '门诊', value: '门诊' },
{ label: '家庭', value: '家庭' },
{ label: '电话', value: '电话' },
],
rules: [{ required: true, message: '请选择随访方式', trigger: ['submit','change'] }],
rules: [{ required: true, message: '请选择履约方式', trigger: ['submit','change'] }],
changeFun: (e)=>{
}
},
......
......@@ -69,14 +69,14 @@ export default ($this) => {
prop: 'followUpClassification',
model: 'followUpClassification',
spanNum: 24,
label: '此次随访分类:',
label: '此次履约分类:',
options: [
{ label: '控制满意(血压控制满意,无其他异常)', value: '控制满意(血压控制满意,无其他异常)' },
{ label: '控制不满意(血压控制不满意,无其他异常)', value: '控制不满意(血压控制不满意,无其他异常)' },
{ label: '不良反应(存在药物不良反应)', value: '不良反应(存在药物不良反应)' },
{ label: '并发症(出现新的并发症或并发症出现异常)', value: '并发症(出现新的并发症或并发症出现异常)' },
],
rules: [{ required: true, message: '请选择此次随访分类', trigger: ['submit','change'] }],
rules: [{ required: true, message: '请选择此次履约分类', trigger: ['submit','change'] }],
changeFun: (e)=>{
}
},
......
......@@ -24,14 +24,14 @@ export default ($this) => {
prop: 'nextSmokingAmount',
model: 'nextSmokingAmount',
disabled: false,
label: '下次随访日吸烟量:',
placeholder: '请输入下次随访日吸烟量',
label: '下次履约日吸烟量:',
placeholder: '请输入下次履约日吸烟量',
spanNum: 8,
maxlength: 30,
type: 'number',
labmsg: '',
slots: [{name: '支/日', type: 'append'}],
rules: [{ required: true, message: '请输入下次随访日吸烟量', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
rules: [{ required: true, message: '请输入下次履约日吸烟量', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
},
......@@ -56,14 +56,14 @@ export default ($this) => {
prop: 'nextAlcoholConsumption',
model: 'nextAlcoholConsumption',
disabled: false,
label: '下次随访日饮酒量:',
placeholder: '请输入下次随访日饮酒量',
label: '下次履约日饮酒量:',
placeholder: '请输入下次履约日饮酒量',
spanNum: 8,
maxlength: 30,
type: 'number',
labmsg: '',
slots: [{name: '两/日', type: 'append'}],
rules: [{ required: true, message: '请输入下次随访日饮酒量', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
rules: [{ required: true, message: '请输入下次履约日饮酒量', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
},
{
......@@ -102,14 +102,14 @@ export default ($this) => {
prop: 'nextWorkoutOfWeek',
model: 'nextWorkoutOfWeek',
disabled: false,
label: '下次随访运动情况:',
placeholder: '请输入下次随访运动情况',
label: '下次履约运动情况:',
placeholder: '请输入下次履约运动情况',
spanNum: 8,
maxlength: 30,
type: 'number',
labmsg: '',
slots: [{name: '次/周', type: 'append'}],
rules: [{ required: true, message: '请输入下次随访运动情况', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
rules: [{ required: true, message: '请输入下次履约运动情况', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
},
{
formType: 'input',
......@@ -117,13 +117,13 @@ export default ($this) => {
prop: 'nextWorkoutDuration',
model: 'nextWorkoutDuration',
disabled: false,
placeholder: '请输入下次随访运动情况',
placeholder: '请输入下次履约运动情况',
spanNum: 8,
maxlength: 30,
type: 'number',
labmsg: '',
slots: [{name: '分钟/次', type: 'append'}],
rules: [{ required: true, message: '请输入下次随访运动情况', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
rules: [{ required: true, message: '请输入下次履约运动情况', trigger: ['submit','change'] },{ validator: checkRange , trigger: ['submit','change'] },{ validator: checkIsInteger , trigger: ['submit','change'] }]
},
......@@ -149,13 +149,13 @@ export default ($this) => {
prop: 'nextSaltIntake',
model: 'nextSaltIntake',
spanNum: 24,
label: '下次随访摄盐情况(咸淡):',
label: '下次履约摄盐情况(咸淡):',
options: [
{ label: '轻', value: '轻' },
{ label: '中', value: '中' },
{ label: '重', value: '重' },
],
rules: [{ required: true, message: '请选择下次随访摄盐情况', trigger: ['submit','change'] }],
rules: [{ required: true, message: '请选择下次履约摄盐情况', trigger: ['submit','change'] }],
changeFun: (e)=>{
}
},
......
......@@ -6,12 +6,12 @@ export default ($this) => {
prop: 'nextFollowDay',
model: 'nextFollowDay',
placeholder: '请选择',
label: '下次随访日期:',
label: '下次履约日期:',
format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd',
dateType: 'date',
type: 'date',
rules: [{required: true, message: '请选择下次随访日期', trigger: ['submit','change']}],
rules: [{required: true, message: '请选择下次履约日期', trigger: ['submit','change']}],
spanNum: 12,
},
// {
......@@ -19,14 +19,14 @@ export default ($this) => {
// className: 'float-none',
// prop: 'doctorSignature',
// model: 'doctorSignature',
// label: '随访医生签名:',
// label: '履约医生签名:',
// disabled: false,
// placeholder: '请输入随访人员姓名',
// placeholder: '请输入履约人员姓名',
// spanNum: 12,
// maxlength: 30,
// type: 'text',
// labmsg: '次',
// rules: [{required: true, message: '请输入随访医生签名', trigger: ['submit','change']}],
// rules: [{required: true, message: '请输入履约医生签名', trigger: ['submit','change']}],
// },
]
}
......@@ -119,14 +119,14 @@ export default ($this) => {
className: 'float-none',
prop: 'nextBodyWeight',
model: 'nextBodyWeight',
label: '下次随访体重:',
label: '下次履约体重:',
disabled: false,
placeholder: '请输入(体重可以带1位小数点)',
spanNum: 8,
type: 'number',
labmsg: '次',
slots: [{name: 'kg', type: 'append'}],
rules: [{required: true, message: '请输入下次随访体重', trigger: ['submit','change']},{ validator: checkRange , trigger: ['submit','change'] }, {validator: checkNumberIsToFixed , trigger: ['submit','change']}],
rules: [{required: true, message: '请输入下次履约体重', trigger: ['submit','change']},{ validator: checkRange , trigger: ['submit','change'] }, {validator: checkNumberIsToFixed , trigger: ['submit','change']}],
changeFun: (val)=>{
$this.addComponents.forEach((item,index)=>{
if(item.name == 'hypeDataSourceSign'){
......@@ -154,7 +154,7 @@ export default ($this) => {
className: 'float-none',
prop: 'nextBmi',
model: 'nextBmi',
label: '下次随访BMI(系统自动生成):',
label: '下次履约BMI(系统自动生成):',
disabled: true,
placeholder: '(这里是自动计算所得)',
spanNum: 8,
......
......@@ -14,7 +14,7 @@ export default ($this) => {
prop: 'name',
model: 'name',
label: '姓名:',
disabled: false,
disabled: true,
placeholder: '请输入姓名',
spanNum: 12,
maxlength: 30,
......@@ -42,12 +42,12 @@ export default ($this) => {
prop: 'inTurn',
model: 'inTurn',
spanNum: 24,
label: '随访轮次(距离建档时间):',
label: '履约轮次(距离建档时间):',
options: [
{ label: '6个月', value: '6个月' },
{ label: '12个月', value: '12个月' },
],
rules: [{ required: true, message: '请选择随访轮次', trigger: ['submit','change'] }],
rules: [{ required: true, message: '请选择履约轮次', trigger: ['submit','change'] }],
changeFun: (e)=>{
// console.log(e)
// if(e == '12个月'){
......
......@@ -7,42 +7,42 @@ export default ($this) => {
className: 'float-none',
prop: 'followUpOrgName',
model: 'followUpOrgName',
label: '随访单位名称:',
label: '履约单位名称:',
disabled: false,
placeholder: '请输入随访单位名称',
placeholder: '请输入履约单位名称',
spanNum: 12,
maxlength: 30,
type: 'text',
labmsg: '次',
rules: [{required: true, message: '请输入随访单位名称', trigger: ['submit','change']}],
rules: [{required: true, message: '请输入履约单位名称', trigger: ['submit','change']}],
},
{
formType: 'input',
className: 'float-none',
prop: 'followUpUser',
model: 'followUpUser',
label: '随访人员姓名:',
label: '履约人员姓名:',
disabled: false,
placeholder: '请输入随访人员姓名',
placeholder: '请输入履约人员姓名',
spanNum: 12,
maxlength: 30,
type: 'text',
labmsg: '次',
rules: [{required: true, message: '请输入随访人员姓名', trigger: ['submit','change']}],
rules: [{required: true, message: '请输入履约人员姓名', trigger: ['submit','change']}],
},
{
formType: 'input',
className: 'float-none',
prop: 'followUpMobile',
model: 'followUpMobile',
label: '随访人员联系电话:',
label: '履约人员联系电话:',
disabled: false,
placeholder: '请输入随访人员联系电话',
placeholder: '请输入履约人员联系电话',
spanNum: 12,
maxlength: 11,
type: 'tel',
labmsg: '次',
rules: [{required: true, message: '请输入随访人员联系电话', trigger: ['submit','change']},{ validator: checkMobile , trigger: ['submit','change'] }],
rules: [{required: true, message: '请输入履约人员联系电话', trigger: ['submit','change']},{ validator: checkMobile , trigger: ['submit','change'] }],
},
{
formType: 'date-picker',
......
......@@ -41,7 +41,7 @@ export default ($this) => {
spanNum: 24,
options: [
{ label: '面对面', value: '面对面', disabled: false },
{ label: '电话(限中危人群,高危人群6个月随访)', value: '电话(限中危人群,高危人群6个月随访)', disabled: false },
{ label: '电话(限中危人群,高危人群6个月履约)', value: '电话(限中危人群,高危人群6个月履约)', disabled: false },
],
rules: [{ required: true, message: '请选择调查方式', trigger: ['submit','change'] }]
},
......
......@@ -12,14 +12,14 @@ export default ($this) => {
className: 'obj-form-title',
prop: 'diseasedHappened',
model: 'diseasedHappened',
label: '随访期间有无新发脑血管病事件:',
label: '履约期间有无新发脑血管病事件:',
disabled: false,
spanNum: 24,
options: [
{ label: '无', value: '无', disabled: false },
{ label: '有', value: '有', disabled: false },
],
rules: [{ required: true, message: '请选择随访期间有无新发脑血管病事件', trigger: ['submit','change'] }]
rules: [{ required: true, message: '请选择履约期间有无新发脑血管病事件', trigger: ['submit','change'] }]
},
{
formType: 'input',
......@@ -42,13 +42,13 @@ export default ($this) => {
prop: 'firstTime',
model: 'firstTime',
placeholder: '请选择',
label: '随访期间第一次发病时间:',
label: '履约期间第一次发病时间:',
linkageRule: [{ name: 'diseasedHappened', value: ['有'] }],
format: 'yyyy',
valueFormat: 'yyyy',
dateType: 'year',
type: 'date',
rules: [{ required: true, message: '请选择随访期间第一次发病时间', trigger: ['submit','change'] }],
rules: [{ required: true, message: '请选择履约期间第一次发病时间', trigger: ['submit','change'] }],
spanNum: 12,
},
{
......
......@@ -12,14 +12,14 @@ export default ($this) => {
className: 'obj-form-title',
prop: 'happenedAgain',
model: 'happenedAgain',
label: '随访期间是否新发心脏病:',
label: '履约期间是否新发心脏病:',
disabled: false,
spanNum: 24,
options: [
{ label: '无', value: '无', disabled: false },
{ label: '有', value: '有', disabled: false },
],
rules: [{ required: true, message: '请选择随访期间是否新发心脏病', trigger: ['submit','change'] }],
rules: [{ required: true, message: '请选择履约期间是否新发心脏病', trigger: ['submit','change'] }],
changeFun(e){
if(e == '有') {
$this.addComponents.forEach((item,index)=>{
......@@ -139,7 +139,7 @@ export default ($this) => {
className: 'obj-form-title',
prop: 'atrialFibrillation',
model: 'atrialFibrillation',
label: '是否有房颤(包括既往及本次随访期间新发现的房颤患者):',
label: '是否有房颤(包括既往及本次履约期间新发现的房颤患者):',
disabled: false,
spanNum: 24,
options: [
......
......@@ -13,14 +13,14 @@ export default ($this) => {
className: 'obj-form-title',
prop: 'haveHypertension',
model: 'haveHypertension',
label: '随访期间新发现有高血压:',
label: '履约期间新发现有高血压:',
disabled: false,
spanNum: 24,
options: [
{ label: '无', value: '无', disabled: false },
{ label: '有', value: '有', disabled: false },
],
rules: [{ required: true, message: '请选择随访期间新发现有高血压', trigger: ['submit','change'] }]
rules: [{ required: true, message: '请选择履约期间新发现有高血压', trigger: ['submit','change'] }]
},
{
formType: 'date-picker',
......@@ -43,7 +43,7 @@ export default ($this) => {
className: 'obj-form-title',
prop: 'takeHypotensorFf',
model: 'takeHypotensorFf',
label: '是否有高血压(包括既往及本次随访期间新发现的高血压患者):',
label: '是否有高血压(包括既往及本次履约期间新发现的高血压患者):',
disabled: false,
spanNum: 24,
options: [
......
......@@ -12,14 +12,14 @@ export default ($this) => {
className: 'obj-form-title',
prop: 'haveDyslipidemia',
model: 'haveDyslipidemia',
label: '随访期间是否新发现有血脂异常:',
label: '履约期间是否新发现有血脂异常:',
disabled: false,
spanNum: 24,
options: [
{ label: '否', value: '否', disabled: false },
{ label: '是', value: '是', disabled: false },
],
rules: [{ required: true, message: '请选择随访期间是否新发现有血脂异常', trigger: ['submit','change'] }],
rules: [{ required: true, message: '请选择履约期间是否新发现有血脂异常', trigger: ['submit','change'] }],
changeFun(e){
if(e == '是') {
$this.addComponents.forEach((item,index)=>{
......@@ -75,7 +75,7 @@ export default ($this) => {
className: 'obj-form-title',
prop: 'dyslipidemiaIf',
model: 'dyslipidemiaIf',
label: '是否有血脂异常(包括既往及本次随访期间新发现的血脂异常患者):',
label: '是否有血脂异常(包括既往及本次履约期间新发现的血脂异常患者):',
disabled: false,
spanNum: 24,
options: [
......
......@@ -10,14 +10,14 @@ export default ($this) => {
className: 'obj-form-title',
prop: 'haveDiabetes',
model: 'haveDiabetes',
label: '随访期间是否新发现有糖尿病:',
label: '履约期间是否新发现有糖尿病:',
disabled: false,
spanNum: 24,
options: [
{ label: '否', value: '否', disabled: false },
{ label: '是', value: '是', disabled: false },
],
rules: [{ required: true, message: '请选择随访期间是否新发现有糖尿病', trigger: ['submit','change'] }]
rules: [{ required: true, message: '请选择履约期间是否新发现有糖尿病', trigger: ['submit','change'] }]
},
{
formType: 'date-picker',
......@@ -40,7 +40,7 @@ export default ($this) => {
className: 'obj-form-title',
prop: 'strokeMedicalIf',
model: 'strokeMedicalIf',
label: '是否为糖尿病患者(包括既往及本次随访期间新发现的糖尿病患者):',
label: '是否为糖尿病患者(包括既往及本次履约期间新发现的糖尿病患者):',
disabled: false,
spanNum: 24,
options: [
......
......@@ -3,7 +3,7 @@
<!--渲染不同的模块表单-->
<div v-if="canRender" v-for="(item, index) in addComponents">
<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}}<span class="gray-tip" v-if="item.disabled"><i class="el-icon-warning-outline" style="margin-right: 5px;"></i>获得居民授权才可进行此项填写</span></div>
<el-form
:ref="'form' + index"
:id="'form' + index"
......@@ -30,7 +30,7 @@
</template>
<script>
import { getDomain, getScaleModels, getScaleDetail, postScale, updateScalesStatus, submitScale } from '@/utils/followup/followapis'
import { getDomain, getScaleModels, getScaleDetail, postScale, updateScalesStatus, submitScale, getScaleModels2 } from '@/utils/followup/followapis'
// 量表 template
import FormScale from '@/components/followup/form/index'
......@@ -64,7 +64,7 @@
scaleNo: '',
doctorId: '',
planTimesId: '',
addComponents: [],
addComponents: [], //所需要展示的模块
addComponentsSourceList: [],
formData: {},//整个表单对象
dialogFormVisible: false,//是否显示添加用药情况dialog
......@@ -116,6 +116,7 @@
})
return;
}else{
// 校验内容是否全部填写
this.valid = true;
}
}
......@@ -204,16 +205,42 @@
// },
// 获取展示的模块
getFormModules(){
getScaleModels(this.domain,this.scaleNo).then(res=>{
let para = {
planPatientsTimesId: this.planPatientsTimesId
}
// getScaleModels(this.domain,this.scaleNo).then(res=>{
getScaleModels2(this.domain,this.scaleNo,para).then(res=>{
if(res.code=='000000'){
this.moduleList = res.data;
for(let i=0;i<this.moduleList.length;i++){
for(let j=0;j<this.addComponentsSourceList.length;j++){
if(this.moduleList[i]==this.addComponentsSourceList[j].formName){
this.addComponents.push(this.addComponentsSourceList[j])
// if(this.moduleList[i]==this.addComponentsSourceList[j].formName){
if(this.moduleList[i].modelCode==this.addComponentsSourceList[j].formName){
// this.addComponents.push(this.addComponentsSourceList[j])
//把获取到每个模块的disabeld状态更新进将要渲染的数组
this.addComponents.push({...this.addComponentsSourceList[j],disabled: this.moduleList[i].disabled})
}
}
}
/*start--根据当前模块是否获得居民权限,来判断是否可填写当前模块*/
this.addComponents.forEach((item,index)=>{
if (item.disabled === true) {
item.dataSource.forEach((item2,index2)=>{
// item2.disabled = true;
this.addComponents[index].dataSource[index2].disabled = true;
if (this.addComponents[index].dataSource[index2].rules) {
this.addComponents[index].dataSource[index2].rules[0].required = false;
}
})
}
})
console.log('糖尿病数组', this.addComponents)
/*end--*/
// if(this.showBtn!='0'){
// // 获取量表详情
// this.getFormDetail();
// }
}else{
this.$message({
message: res.message,
......@@ -242,6 +269,7 @@
for(let i=0;i<this.addComponents.length;i++){
let formName = this.addComponents[i].formName;
// let type2Obj = {};
//对用药情况模块的数据做特殊处理
if(this.formData[formName] && formName == 'h_s_002'){
let getDataHS002 = this.formData[formName];
if(Array.isArray(getDataHS002)){
......@@ -256,7 +284,7 @@
arrList: this.medication,
...this.type2Obj
}
}else if(this.formData[formName] && formName == 'diabetes_001'){
}else if(this.formData[formName] && formName == 'diabetes_001'){ //对症状模块做处理
this.addComponents[i].formObject = this.formData[formName];
let symptom = this.formData[formName].symptom;
this.addComponents[i].formObject.symptom = JSON.parse(symptom || '[]');
......@@ -293,9 +321,27 @@
});
this.medication = [...this.medication,...arrNew];
this.formData.h_s_002 = this.medication
//判断是否放开敏感字段
let hasDisabled = false;
this.addComponents.forEach((item,index)=>{
if (item.disabled === true) {
hasDisabled = true
}
})
postScale(this.domain,this.formData).then(res=>{
if(res.code=='000000'){
let doMsg = (this.saveWay==1) ? '提交成功' : '保存成功';
// let doMsg = (this.saveWay==1) ? '提交成功' : '保存成功';
// let doMsg = (this.saveWay==1 && hasDisabled === true) ? '非敏感信息提交成功' : '保存成功';
let doMsg = '';
if (this.saveWay==1) {
if(hasDisabled === true){
doMsg = '非敏感信息提交成功'
}else {
doMsg = '提交成功'
}
}else {
doMsg = '保存成功'
}
this.$message({
message: doMsg,
type: 'success'
......@@ -309,7 +355,7 @@
})
},1000)
}else{
let doMsg = (this.saveWay==1) ? '提交失败' : '保存失败';
let doMsg = (this.saveWay==1) ? '提交失败,请重试' : '保存失败';
this.$message({
message: doMsg,
type: 'error'
......@@ -338,6 +384,11 @@
font-weight: bold;
font-size: 18px;
border-bottom: 1px dashed #ccc;
.gray-tip{
color: #8C8C8C;
margin-left: 20px;
font-size: 16px;
}
}
}
}
......
......@@ -3,7 +3,7 @@
<!--渲染不同的模块表单-->
<div v-if="canRender" v-for="(item, index) in addComponents">
<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}}<span class="gray-tip" v-if="item.disabled"><i class="el-icon-warning-outline" style="margin-right: 5px;"></i>获得居民授权才可进行此项填写</span></div>
<el-form
:ref="'form' + index"
:id="'form' + index"
......@@ -32,7 +32,7 @@
</template>
<script>
import { getDomain, getScaleModels, getScaleDetail, postScale, updateScalesStatus, submitScale } from '@/utils/followup/followapis'
import { getDomain, getScaleModels, getScaleDetail, postScale, updateScalesStatus, submitScale, getScaleModels2 } from '@/utils/followup/followapis'
// 量表 template
import FormScale from '@/components/followup/form/index'
......@@ -114,6 +114,7 @@
})
return;
}else{
// 校验内容是否全部填写
this.valid = true;
}
}
......@@ -167,7 +168,7 @@
{name: 'hypeDataSourceHelpChecking',formObject: {},showModule: true,formName: 'hypertension_004',className: 'obj-form-title',dataSource: hypeDataSourceHelpChecking(this), hideTitle: false, title: '辅助检查'},
{name: 'hypeDataSourceMedicationUse',formObject: {arrList:this.medication,dosageDay:'',dosageNum:'',medicinesName:'',medicineType:''},showModule: true,formName: 'h_s_002',className: 'obj-form-title',dataSource: hypeDataSourceMedicationUse(this), hideTitle: false, title: '用药情况'},
{name: 'hypeDataSourceReferral',formObject: {reason:'',mechanism:'',department:''},showModule: true,formName: 'h_s_003',className: 'obj-form-title',dataSource: hypeDataSourceReferral(this), hideTitle: false, title: '转诊'},
{name: 'hypeDataSourceNextFollowDay',formObject: {nextFollowDay:''},showModule: true,formName: 'h_s_004',className: 'obj-form-title',dataSource: hypeDataSourceNextFollowDay(this), hideTitle: true, title: '下次随访日期'},
{name: 'hypeDataSourceNextFollowDay',formObject: {nextFollowDay:''},showModule: true,formName: 'h_s_004',className: 'obj-form-title',dataSource: hypeDataSourceNextFollowDay(this), hideTitle: true, title: '下次履约日期'},
]
},
// 获取白名单域名
......@@ -179,7 +180,10 @@
// 获取量表模块
this.getFormModules();
if(this.showBtn!='0'){
// 获取量表详情
this.getFormDetail();
}
}else{
this.$message({
message: res.message,
......@@ -195,21 +199,42 @@
// 获取展示的模块
getFormModules(){
getScaleModels(this.domain,this.scaleNo).then(res=>{
let para = {
planPatientsTimesId: this.planPatientsTimesId
}
// getScaleModels(this.domain,this.scaleNo).then(res=>{
getScaleModels2(this.domain,this.scaleNo,para).then(res=>{
if(res.code=='000000'){
this.moduleList = res.data;
for(let i=0;i<this.moduleList.length;i++){
for(let j=0;j<this.addComponentsSourceList.length;j++){
if(this.moduleList[i]==this.addComponentsSourceList[j].formName){
this.addComponents.push(this.addComponentsSourceList[j])
// if(this.moduleList[i]==this.addComponentsSourceList[j].formName){
if(this.moduleList[i].modelCode==this.addComponentsSourceList[j].formName){
// this.addComponents.push(this.addComponentsSourceList[j])
//把获取到每个模块的disabeld状态更新进将要渲染的数组
this.addComponents.push({...this.addComponentsSourceList[j],disabled: this.moduleList[i].disabled})
}
}
}
console.log('高血压展示模块',this.addComponents)
/*start--根据当前模块是否获得居民权限,来判断是否可填写当前模块*/
this.addComponents.forEach((item,index)=>{
if (item.disabled === true) {
item.dataSource.forEach((item2,index2)=>{
// item2.disabled = true;
this.addComponents[index].dataSource[index2].disabled = true;
if (this.addComponents[index].dataSource[index2].rules) {
this.addComponents[index].dataSource[index2].rules[0].required = false;
}
})
}
})
/*end--*/
if(this.showBtn!='0'){
// 获取量表详情
this.getFormDetail();
}
// if(this.showBtn!='0'){
// // 获取量表详情
// this.getFormDetail();
// }
}else{
this.$message({
......@@ -315,9 +340,26 @@
}
this.formData.hypertension_001.symptom = JSON.stringify(this.formData.hypertension_001.symptom);
// console.log(this.formData)
//判断是否放开敏感字段
let hasDisabled = false;
this.addComponents.forEach((item,index)=>{
if (item.disabled === true) {
hasDisabled = true
}
})
postScale(this.domain,this.formData).then(res=>{
if(res.code=='000000'){
let doMsg = (this.saveWay==1) ? '提交成功' : '保存成功';
// let doMsg = (this.saveWay==1) ? '非敏感信息提交成功' : '保存成功';
let doMsg = '';
if (this.saveWay==1) {
if(hasDisabled === true){
doMsg = '非敏感信息提交成功'
}else {
doMsg = '提交成功'
}
}else {
doMsg = '保存成功'
}
this.$message({
message: doMsg,
type: 'success'
......@@ -331,7 +373,7 @@
})
},1000)
}else{
let doMsg = (this.saveWay==1) ? '提交失败' : '保存失败';
let doMsg = (this.saveWay==1) ? '提交失败,请重试' : '保存失败';
this.$message({
message: doMsg,
type: 'error'
......@@ -359,6 +401,11 @@
font-weight: bold;
font-size: 22px;
border-bottom: 1px dashed #ccc;
.gray-tip{
color: #8C8C8C;
margin-left: 20px;
font-size: 16px;
}
}
}
}
......
此差异已折叠。
......@@ -47,7 +47,7 @@
</el-select>
</el-form-item>
</div>
<p class="warn-tips" v-if="reservationForm.appointmentDate">该日期已经成功预约{{getRevervationNum}}人,请确保能在此时间段完成预约的随访任务</p>
<p class="warn-tips" v-if="reservationForm.appointmentDate">该日期已经成功预约{{getRevervationNum}}人,请确保能在此时间段完成预约的履约任务</p>
</el-form-item>
<el-form-item label="变更原因" prop="reason">
<el-input type="textarea" v-model="reservationForm.changeReason" placeholder="请输入变更原因" maxlength="30" rows="3" style="width:60%;"></el-input>
......
<template>
<div class="dialog-wrap">
<el-dialog title="预约随访居民"
<el-dialog title="预约履约居民"
:visible.sync="reservationDialog"
v-if="isDialogShow"
center
......@@ -43,13 +43,13 @@
</el-select>
</el-form-item>
</div>
<p class="warn-tips" v-if="reservationForm.appointmentDate">该日期已经成功预约{{getRevervationNum}}人,请确保能在此时间段完成预约的随访任务</p>
<p class="warn-tips" v-if="reservationForm.appointmentDate">该日期已经成功预约{{getRevervationNum}}人,请确保能在此时间段完成预约的履约任务</p>
</el-form-item>
</el-form>
<div class="reservation-content content-list" v-if="reservationForm.appointmentDate && reservationForm.appointmentRange">
<div class="item">
<span class="title">发送内容:</span>
<p>{{userName}}医生邀请您在{{reservationForm.appointmentDate}}{{reservationForm.appointmentRange}}进行随访,请确认是否参加。</p>
<p>{{userName}}医生邀请您在{{reservationForm.appointmentDate}}{{reservationForm.appointmentRange}}进行履约,请确认是否参加。</p>
</div>
<div class="item">
<span class="title">本次推送:</span>
......
......@@ -9,8 +9,8 @@
<div class="search-div">
<div class="search-input">
<el-form :model="searchData" ref="searchData" :inline="true" :label-width="labelWidth">
<el-form-item label="随访计划名称:" prop="planName">
<el-input v-model="searchData.planName" size="small" placeholder="请输入随访计划名称" clearable></el-input>
<el-form-item label="履约计划名称:" prop="planName">
<el-input v-model="searchData.planName" size="small" placeholder="请输入履约计划名称" clearable></el-input>
</el-form-item>
<el-form-item label="姓名:" prop="nickname">
<el-input v-model="searchData.nickname" size="small" placeholder="请输入姓名" clearable></el-input>
......@@ -18,7 +18,7 @@
<el-form-item label="手机号:" prop="mobilePhone">
<el-input v-model="searchData.mobilePhone" size="small" placeholder="请输入手机号" clearable></el-input>
</el-form-item>
<el-form-item label="随访时间范围:" prop="planTimes" clearable>
<el-form-item label="履约时间范围:" prop="planTimes" clearable>
<el-date-picker
v-model="searchData.planTimes"
type="daterange"
......@@ -86,18 +86,18 @@
</el-table-column>
<el-table-column
prop="name"
label="随访计划名称"
label="履约计划名称"
align="center">
</el-table-column>
<el-table-column
width="160"
prop="fuPlanTime"
label="随访计划时间"
label="履约计划时间"
align="center">
</el-table-column>
<el-table-column
width="160"
label="随访预约时间"
label="履约预约时间"
align="center">
<template slot-scope="scope">
<span v-if="scope.row.status==1" style="color: #49C688;">未发送</span>
......@@ -136,6 +136,13 @@
<no-enough :isNoEnoughShow="isNoEnoughShow" @closeTipsDialog="closeTipsDialog"></no-enough>
<change-reservation :isChangeReservation="isChangeReservation" @closeChangeReserve="closeChangeReserve" :reservationForm="needPara"></change-reservation>
<followup-detail :dialogFormVisible="dialogDetailShow" @closeDetail="closeDetail" :enteringInfo="enteringInfo"></followup-detail>
<!-- 协议提醒 -->
<el-dialog class="prot-dialog" title="" :visible.sync="isShowProtocolDialog" 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>
</div>
</template>
......@@ -149,6 +156,7 @@
import NoEnough from './dialog/no-enough';
import ChangeReservation from "./dialog/change-reservation";
import followupDetail from "@/views/followup/record-manage/dialog/followupDetail";
import { getFirstAccess } from '@/utils/followup/followapis'
export default {
name: "reservation-list",
components: {
......@@ -161,7 +169,7 @@
data() {
return {
/*面包屑配置*/
curmbFirst: '随访管理',
curmbFirst: '履约管理',
curmbSecond: '预约管理',
/*面包屑配置*/
labelWidth: '125px', //标题长度
......@@ -199,12 +207,17 @@
return row.fuPlanPatientTimesId;
},
statusTotal: null, //每种状态的总数
isShowProtocolDialog: false,
}
},
created() {
},
mounted() {
// 验证是否首次进入 ################
// this.init();
this.isFirstEnter();
if(this.$route.query.planName && this.$route.query.appointTime && this.$route.query.status) {
this.searchData.planName = this.$route.query.planName;
this.searchData.planTimes = [this.$route.query.appointTime,this.$route.query.appointTime];
......@@ -234,6 +247,15 @@
methods: {
...mapActions('reservationManage', ['getReservationList','getCheckReservation']),
...mapActions('recordManage', [ 'getEnteringInfo']),
// 验证是否首次进入 ################
isFirstEnter() {
getFirstAccess().then((res) => {
if(res.code == '000000') {
this.isShowProtocolDialog1 = res.data
}
});
},
handleSizeChangePre(pageSize) {
this.getReservationList({
pageSize,
......@@ -311,7 +333,7 @@
sendReservation() {
// console.log('选择人员长度',this.selectionData.length)
if(this.selectionData.length > 100) {
this.$message.warning('每次最多选择100条单条随访进行预约!');
this.$message.warning('每次最多选择100条单条履约进行预约!');
return;
}else if(this.selectionData.length <= 0){
this.$message.warning('请选择要发送预约的居民!');
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
......@@ -154,7 +154,7 @@
},
mounted(){
if(vm.storageIdType==2){
// vm.setFollowSide()
vm.setFollowSide()
}
},
watch: {
......@@ -170,15 +170,15 @@
}
},
storageIdType(val,ov){
if(val==2){
// vm.setFollowSide()
}
// if(val==2){ // 调试时已经去掉了
vm.setFollowSide()
// } // 调试时已经去掉了
}
},
methods: {
setFollowSide(){
const followSider = {
title: '随访管理',
title: '履约管理',
icon: 'el-icon-edit-outline',
index: 'followup',
subs: [
......
......@@ -27,8 +27,8 @@ export default {
color: ["#FF9999", "#66CCFF"],
text: '培训前后知识点掌握情况变化',
xAxisData: [
"转诊与随访",
"转诊与随访",
"转诊与履约",
"转诊与履约",
"周三",
"治疗原则及降压目标",
"周五",
......@@ -42,8 +42,8 @@ export default {
color: ["#33FFFF", "#FF9999"],
text: '不同学历培训前后正确率对比',
xAxisData: [
"转诊与随访",
"转诊与随访",
"转诊与履约",
"转诊与履约",
"周三",
"治疗原则及降压目标",
"周五",
......
<template>
<div class="select-patient-dialog">
<el-dialog
title="添加居民"
:title="selectPatientDialogTitle"
:visible.sync="showSelectPatient"
v-if="isShowSelectPatient"
:before-close="clickClose"
......@@ -113,7 +113,7 @@
collapse-tags
filterable
class="set-width"
placeholder="请选择随访计划"
placeholder="请选择履约计划"
clearable>
<el-option
v-for="(item,index) in fuPlanOptions"
......@@ -200,7 +200,7 @@
<el-table-column
v-if="selectPatientType == 1"
prop="fuPlanName"
label="随访计划"
label="履约计划"
align="center"
width="180"
:show-overflow-tooltip="true">
......@@ -297,18 +297,23 @@
getRowKeys(row) {
return row.patientId;
},
// 添加居民
}
},
props: {
isShowSelectPatient: Boolean, //是否显示model,
patientIdList: Array,// 确定已经选过的居民
oldPatientIdList: Array,// 确定已经选过的居民
selectPatientType: Number, //获取居民列表所需字段,随访是1,分组是2,患教是3
selectPatientType: Number, //获取居民列表所需字段,履约是1,分组是2,患教是3
sourceId: {
type: String,
required: false,
default: '',
},
selectPatientDialogTitle: {
type: String,
default: '添加居民'
}
},
watch: {
isShowSelectPatient(val){
......@@ -347,7 +352,7 @@
this.labelOptions = this.labelOptions.concat(res.data.labelNameList);
});
// 获取随访计划列表
// 获取履约计划列表
getPlanList({
pageNo: -1,
}).then(res => {
......@@ -399,9 +404,9 @@
sex: this.searchData.sex,
searchCondition:this.searchData.searchCondition,
srvPackageId:this.srvPackageId,
addType: this.selectPatientType, //随访是1,分组是2,患教是3
addType: this.selectPatientType, //履约是1,分组是2,患教是3
fuPlanIdList: this.searchData.fuPlanIdList || [],
sourceId: this.sourceId, //若是随访的话,传planId;若是分组的话,传labeledId;
sourceId: this.sourceId, //若是履约的话,传planId;若是分组的话,传labeledId;
icdCodeList: this.searchData.icdCodeList
}
getPatientInfoList(data).then(res=>{
......@@ -435,7 +440,7 @@
}else {
item.showDiseaseNames = '-';
}
//针对随访项目
//针对履约项目
if(this.patientIdList.length > 0){
if(this.patientIdList.includes(item.patientId)){// 如果已经选过居民
this.$nextTick(()=>{
......
......@@ -94,7 +94,7 @@
<div class="record-date">{{item.finishedTime}}</div>
<div class="record-content">
<div class="record-title">
<p>{{item.name}}-{{item.seqNo}}随访</p>
<p>{{item.name}}-{{item.seqNo}}履约</p>
<span>{{item.fuTypeValue}}</span>
</div>
<div class="list-visit">
......@@ -102,7 +102,7 @@
<div class="right-item">{{item.sendContent | emptyFilter}}</div>
</div>
<div class="list-visit">
<span class="left-label">随访量表:</span>
<span class="left-label">履约量表:</span>
<div class="right-item">
<p v-for="(item2, index2) in item.scaleSimpleDtos" :key="index2" v-if="item.scaleSimpleDtos.length">{{item2.name}}
<span class="check-btn" @click="openScaleDetail(item2)">查看量表</span>
......@@ -119,7 +119,7 @@
<div class="no-record-content" v-if="!recordList.length">
<div class="no-record-info">
<img src="../../../assets/image/no-content1.png"/>
<p>暂无随访记录或您没有权限访问</p>
<p>暂无履约记录或您没有权限访问</p>
</div>
</div>
</el-tab-pane>
......@@ -278,7 +278,7 @@
tabChangeHandler(tab) {},
deleteCurrentPatient() {
// 把写的提示信息需要换行的地方分成数组 confirmText
const confirmText = ['您确定要删除此居民吗?', '删除后,您将无法对该居民发送患教和进行随访,重新添加该居民依旧可查看历史发送记录及随访记录'];
const confirmText = ['您确定要删除此居民吗?', '删除后,您将无法对该居民发送患教和进行履约,重新添加该居民依旧可查看历史发送记录及履约记录'];
const newDatas = [];
const h = this.$createElement;
for (const i in confirmText) {
......
......@@ -7,7 +7,7 @@
<section class="not-complete-content screenSet">
<h1 class="page-title">资料不全居民</h1>
<p class="tip" v-if="notCompleteList.length">
<span class="fontGreen">{{pagination.totalRows}}</span>居民仅通过微信扫码与您绑定,但未完善姓名、手机号等关键信息。提醒居民完善信息后,您将可以对居民进行消息推送和随访计划设置。
<span class="fontGreen">{{pagination.totalRows}}</span>居民仅通过微信扫码与您绑定,但未完善姓名、手机号等关键信息。提醒居民完善信息后,您将可以对居民进行消息推送和履约计划设置。
<el-button type="primary" style="float: right;" size="small" @click="sendCompleteMessageMultiple">批量提醒</el-button>
</p>
<el-table
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册