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

04BEB8CAF7DE4E1AB861FC487E7ADAC8

上级 6a351cc5
......@@ -55,8 +55,8 @@ service.interceptors.request.use(config => {
if( process.env.BUILD_ENV == "development" ){ // 本地开发环境
// console.log('环境变量>>>> ', process.env.BUILD_ENV);
// config.headers['token'] = 'BFD804F3A3194FBBBE113962222839F6';
config.headers['token'] = 'F8209898391C40A0B8DBC1ED9E157291';
// config.headers['token'] = '1E04ECA4D0A84702AAD5080622EE139A';
// config.headers['token'] = 'F8209898391C40A0B8DBC1ED9E157291';
config.headers['token'] = '04BEB8CAF7DE4E1AB861FC487E7ADAC8';
}else{
config.headers['token'] = localStorage.getItem('storageToken')
......
......@@ -484,4 +484,12 @@ export const updateScalesStatus = ( data ) => {
})
}
// 获取量表详情
export const getFirstAccess = () => {
return fetch({
url: getFollowUpSC(`/followup/overView/firstAccess`),
method: 'get',
data: {},
})
}
<template>
<div class="resident-list">
<bread-crumb
:curmbFirst="curmbFirst"
:curmbSecond="curmbSecond"
:curmbThird="curmbThird"
:jumPathThird="jumPathThird">
</bread-crumb>
<div class="new-plan-content f-main-content screenSet">
<div class="header">
<div class="title">
<span :class="{ 'active-class' : activeTab === 'second' }">①基本信息</span>
<i class="el-icon-arrow-right" style="color: #C0C4CC"></i>
<span :class="{ 'active-class' : activeTab === 'first' }">②履约时间节点</span>
</div>
<div class="plan-btns-group" v-if="activeTab === 'first'">
<el-button class="button-white" size="small" plain @click="cancelEdit" >取 消</el-button>
<el-button type="primary" size="small" @click="nextClick('baseInfo')">下一步</el-button>
</div>
<div class="plan-btns-group" v-if="activeTab === 'second'">
<el-button class="button-white" size="small" plain @click="preClick">上一步</el-button>
<el-button type="primary" size="small" @click="saveEdit">保 存</el-button>
</div>
</div>
<div class="edit-plan-content" v-if="activeTab === 'first'">
<el-form ref="baseInfo" :model="baseInfo" :rules="rules" label-suffix=":" label-width="140px" :inline-message="true" size="small">
<el-form-item label="履约计划名称" prop="name">
<el-input v-model="baseInfo.name" maxlength="20" style="width: 30%" clearable></el-input>
</el-form-item>
<el-form-item label="履约居民" required prop="hasSelectedNum">
<div style="display: flex">
<div>
<el-button plain icon="el-icon-plus" :style="noChoice?'border:1px solid red;':''" @click="selectPatientHandler">{{baseInfo.hasSelectedNum ? '继续添加' : '选择居民'}}</el-button><br>
<el-button type="text" class="mt10" @click="seeSelectedHandler" v-if="baseInfo.hasSelectedNum">已选{{baseInfo.hasSelectedNum}}<i class="el-icon-arrow-right"></i></el-button>
</div>
<p class="err-tips" v-if="noChoice">请添加履约居民</p>
</div>
</el-form-item>
<el-form-item label="履约模板" prop="resourceId">
<el-select
v-model="baseInfo.resourceId"
placeholder="请选择履约模板"
clearable>
<el-option
v-for="item in templateOptions"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<p class="tips">履约计划创建成功后,模板不可更换,请谨慎选择。</p>
<el-form-item label="履约开始时间" prop="time">
<el-date-picker
v-model="baseInfo.time"
type="date"
ref="beginDate"
placeholder="请选择履约开始时间"
:picker-options="pickerOptions"
value-format="timestamp"
clearable
@blur="handleDateInputConfirm"
style="width:380px;">
</el-date-picker>
</el-form-item>
<el-form-item label="备注">
<el-select
v-model="baseInfo.remarksStatus"
placeholder="请选择履约种类"
clearable>
<el-option
v-for="item in remarkOption"
:key="item.no"
:label="item.value"
:value="item.no">
</el-option>
</el-select>
</el-form-item>
</el-form>
</div>
<div class="edit-plan-content" v-show="activeTab === 'second'">
<set-time-node
:resourceId="resourceId"
:standedTimeNodeList="standedTimeNodeList"
:isStandedTemplate="isStandedTemplate"
:patientIdList="baseInfo.patientIdList"
:checkForm="checkForm"
@addListenSave="addListenSave"
/>
</div>
</div>
<select-patient
:isShowSelectPatient="isShowSelectPatient"
:patientIdList="baseInfo.patientIdList"
@closeSelectPatient="closeSelectPatient"
@sureSelectPatient="sureSelectPatient(arguments)"
:selectPatientType="selectPatientType"
/>
<has-selected-patient
v-if="isShowSelectedDialog"
:hasSelectedList="hasSelectedList"
@closeSelectedDialog="closeSelectedDialog"
@continueAdd="continueAdd"
/>
</div>
</template>
<script>
import BreadCrumb from '@/components/breadcrumb'
// import SelectPatient from '@/views/followup/plan-manage/dialog/select-patient';
import SelectPatient from '@/views/patients/labels-manage/dialog/select-patitents';
import HasSelectedPatient from '@/views/followup/plan-manage/dialog/has-selected-patient';
import SetTimeNode from '@/views/followup/plan-manage/dialog/set-time-node';
import { createFollowPlan, getFollowupTableTemplate } from '@/utils/followup/followapis'
import { mapState, mapActions } from 'vuex'
export default {
name: "addNewPlan",
components: {
BreadCrumb,
SelectPatient,
HasSelectedPatient,
SetTimeNode,
},
data() {
return {
setTimeNodeList: [],//重写后的setTimeNodeList
isStandedTemplate: false, // 是否是固定的履约模板
standedTimeNodeList: [], // 如果是国定履约模板,获取固定数据后不可更改,只读
checkForm: false,
/*面包屑配置*/
curmbFirst: '履约管理',
curmbSecond: '计划管理',
curmbThird: '新建履约计划',
jumPathThird: '/followUp/plan-manage',
activeTab: 'first',
resourceId: '',//当前选择的履约模板id
noName: false,
noResourceId: false,
noTime: false,
noChoice: false,
baseInfo: {
name: '',//履约计划名称
patientIdList: [],//履约居民列表
resourceId:'',//履约模板ID
time:'',//履约开始时间
remarksStatus: '',
fPlanTimeReqList: [],//时间节点列表
hasSelectedNum: 0,
},
isShowSelectPatient: false,
isShowSelectedDialog: false,
selectPatientType: 1,
hasSelectedList: [],
rules: {
name: [{ required: true, message: '请输入履约计划名称', trigger: 'blur' }],
hasSelectedNum: [{ required: true, message: '请添加履约居民', trigger: 'change' }],
resourceId: [{ required: true, message: '请选择履约模板', trigger: 'change' }],
time: [{ required: true, message: '请选择履约开始时间', trigger: 'change' }],
},
pickerOptions: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7
}
}
}
},
created() {
// 获取备注
this.getRemarkOption()
// 获取履约计划模板列表
this.getFollowupTemplate()
},
computed: {
...mapState('planManage',{
remarkOption: state => state.remarkOption,
templateOptions: state => state.templateOptions,
})
},
methods: {
...mapActions('planManage', ['getTimeNodeList','getRemarkOption','getFollowupTemplate']),
// 点击保存
saveEdit() {
// 点击保存,先进行校验,表单字段是否通过验证
this.checkForm = true
},
handleDateInputConfirm(e){
if(!this.baseInfo.time){
this.$refs.beginDate.picker.date = new Date();
}
},
// 监听保存校验结果
addListenSave(val){
// console.log('监听保存校验结果',val)
this.checkForm = false
if(val.status){
this.baseInfo.fPlanTimeReqList = val.setTimeNodeList
// this.baseInfo.time = (new Date(this.baseInfo.time).getTime())
// console.log(this.baseInfo.time)
// 提交
createFollowPlan(this.baseInfo).then(res=>{
if(res.code=='000000'){
// 各种校验通过后,提交编辑内容,toast提示
this.$message({
message: '创建成功',
type: 'success'
});
setTimeout(()=>{
this.$router.push({
path: '/followup/plan-manage/plan-list'
})
},2000)
}else{
this.$message({
message: '创建失败,' + res.message,
type: 'error'
});
}
})
}else{
this.$message({
message: val.message,
type: 'error'
});
}
},
selectPatientHandler() {
this.isShowSelectPatient = true;
},
closeSelectPatient(val) {
this.isShowSelectPatient = val;
},
seeSelectedHandler() {
this.isShowSelectedDialog = true;
},
closeSelectedDialog(val) {
this.isShowSelectedDialog = val;
},
sureSelectPatient() {
let getArguments = arguments[0];
this.isShowSelectPatient = getArguments[0];
const selectPatients = getArguments[1]; // 每次选中获取的人
this.hasSelectedList = selectPatients;
// console.log('呵呵呵呵',arguments)
this.baseInfo.patientIdList = [];
selectPatients.forEach((item)=>{
this.baseInfo.patientIdList.push(item.patientId);
})
this.baseInfo.hasSelectedNum = this.hasSelectedList.length;
if(this.baseInfo.hasSelectedNum > 0){
this.noChoice = false;
}
},
continueAdd(val) {
this.isShowSelectedDialog = val;
this.isShowSelectPatient = true;
},
cancelEdit() {
this.$confirm('是否放弃本次创建,放弃后数据不能被保存', '', {
confirmButtonText: '继续创建',
cancelButtonText: '确定放弃',
type: 'warning'
}).then(() => {
// 关闭弹层,继续创建
}).catch(() => {
// 确定放弃,跳出当前编辑页面
this.$router.push({path: '/followup/plan-manage/plan-list'})
});
},
nextClick(formName) {
//为方便调试,不做校验
// this.activeTab = 'second';
this.$refs[formName].validate((valid) => {
//用作校验
if(!this.baseInfo.hasSelectedNum) {
this.noChoice = true
return;
}else {
this.noChoice = false
}
if (valid) {
// console.log('当前选择的履约模板id为',this.baseInfo.resourceId)
this.resourceId = String(this.baseInfo.resourceId)
// console.log( this.baseInfo.resourceId)
if(this.baseInfo.resourceId){
getFollowupTableTemplate(this.baseInfo.resourceId).then(res=>{
this.isStandedTemplate = true
this.standedTimeNodeList = res.data
this.activeTab = 'second';
})
}else{
this.isStandedTemplate = false
this.standedTimeNodeList = [];
this.activeTab = 'second';
}
} else {
return false;
}
});
},
preClick() {
this.activeTab = 'first';
},
},
}
</script>
<style lang="scss" scoped>
@import '../../../style/followup/followup-common';
@import '../../../style/followup/element-reset.css';
.new-plan-content{
.header{
display: flex;
align-items: center;
justify-content: space-between;
padding-bottom: 20px;
border-bottom: $borderBottomStyle;
.title{
.active-class{
color: #9B9997;
}
}
}
.edit-plan-content{
padding: 30px 0;
.add-time-content{
padding-top: 20px;
.time-line-scroll{
width: 100%;
height: 50px;
box-sizing: border-box;
background-color: #F0F2F5;
padding: 8px 10px;
/*display: flex;*/
/*align-items: center;*/
overflow-x: scroll;
overflow-y: hidden;
white-space: nowrap;
position: relative;
cursor: pointer;
&::-webkit-scrollbar{
height: 6px;
}
&::-webkit-scrollbar-thumb {/*滚动条里面小方块*/
border-radius: 10px;
-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
background: rgba(0,0,0,0.1);
}
span{
display: inline-block;
background-color: #449284;
border-radius: 20px;
height: 28px;
line-height: 28px;
padding: 0 8px;
color: #ffffff;
font-size: 12px;
width: 95px;
}
}
.form-div{
padding-top: 30px;
}
}
}
.err-tips{
color: #F56C6C;
font-size: 12px;
margin-left: 10px;
}
.tips{
font-size: 12px;
color: #9B9997;
padding-left: 140px;
margin-top: -10px;
padding-bottom: 15px;
}
.el-message-box__content{
padding: 20px 15px;
}
}
.mt10{
margin-top: 10px;
}
.ml20{
margin-left: 20px;
}
</style>
......@@ -94,6 +94,7 @@
<select-patient
:isShowSelectPatient="isShowSelectPatient"
:selectPatientDialogTitle="baseInfo.hasSelectedNum ? '继续添加' : '选择居民'"
:patientIdList="baseInfo.patientIdList"
@closeSelectPatient="closeSelectPatient"
@sureSelectPatient="sureSelectPatient(arguments)"
......
......@@ -81,14 +81,23 @@
</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:{
......@@ -150,6 +159,7 @@
total: 0,
pageSizes: [10,20,50,100]
},
isShowProtocolDialog: false,
}
},
computed: {
......@@ -160,6 +170,7 @@
created() {
},
mounted() {
this.isFirstEnter();
this.init();
},
watch: {},
......@@ -167,32 +178,16 @@
...mapActions('planManage', ['getPlanList', 'setResidentCrumb', 'setPlanModifyCrumb']),
// 验证是否首次进入 ################
isFirstEnter() {
// getIsFirstEnter().then((res) => {
getVerifyStatus().then((res) => {
if(res.code !== '000000') {
this.search(1);
} else {
// this.$alert('根据相关规定,在您开展履约项目前,需要居民授权同意\《云鹊平台隐私协议\》,否则将导致履约量表部分信息无法录入', '', {
// confirmButtonText: '我知道了 ',
// showClose: false,
// // center: true,
// roundButton: true,
// customClass: 'plan-list-alert',
// callback: action => {
// return;
// }
// });
getFirstAccess().then((res) => {
if(res.code == '000000') {
this.isShowProtocolDialog = res.data
}
})
});
},
init() {
getVerifyStatus().then((res) => {
if(res.code === '000000') {
// 验证是否首次进入 ################
this.isFirstEnter()
// this.search(1);
this.search(1);
}else if(res.code === '200008'){
this.$confirm(`${res.message}`, '提示', {
confirmButtonText: '去认证',
......
......@@ -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>
......@@ -142,7 +142,8 @@
<add-patient-time
:showThisPage="showAddPatientTime"
:addPatientData="addPatientData"
@closeAddPatientTime="closeAddPatientTime"></add-patient-time>
@closeAddPatientTime="closeAddPatientTime">
</add-patient-time>
</div>
</template>
......
......@@ -5,9 +5,21 @@
<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
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-input
v-model="searchData.planName"
placeholder="请输入关键词"
style="width: 250px"
clearable
></el-input>
</el-form-item>
<el-form-item label="履约时间范围">
<el-date-picker
......@@ -18,14 +30,19 @@
end-placeholder="结束日期"
value-format="yyyy-MM-dd HH:mm:ss"
clearable
style="width:400px;">
</el-date-picker>
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-input
v-model="searchData.mobilePhone"
placeholder="请输入手机号"
maxlength="11"
clearable
></el-input>
</el-form-item>
</el-form>
</div>
......@@ -36,7 +53,7 @@
</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>全部({{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>
......@@ -51,21 +68,33 @@
<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>{{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>
<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>
<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
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>
......@@ -80,58 +109,100 @@
:current-page="paginationSet.pageNo"
:page-sizes="paginationSet.pageSizes"
:page-size="paginationSet.pageSize"
:total="paginationSet.total">
</el-pagination>
: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="选择量表"
<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">
:before-close="closeForm"
>
<div class="list-content">
<p v-for="(item, index) in formList.scalesList" :key="index" @click="goFormView(item)">{{item.sendContent}}</p>
<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 { mapState,mapGetters, mapActions } from 'vuex';
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:{
export default {
components: {
BreadCrumb,
followupDetail,
ChangeFollowupStatus
},
data(){
return{
curmbFirst: '履约管理',
curmbSecond: '录入管理',
data() {
return {
curmbFirst: "履约管理",
curmbSecond: "录入管理",
timeRangeList: [],
searchData: {
planName: '',
beginTime: '',
endTime: '',
nickname: '',
mobilePhone: ''
planName: "",
beginTime: "",
endTime: "",
nickname: "",
mobilePhone: ""
},
activeName: '',
activeName: "",
paginationSet: {
pageNo: 1,
pageSize: 10,
total: 0,
pageSizes: [10,20,50,100]
pageSizes: [10, 20, 50, 100]
},
statusForm: {},
enteringRow: {},
......@@ -139,97 +210,138 @@
isShowChangeDialog: false,
hasData: false,
selectFormShow: false,
ScaleData: {}
}
ScaleData: {},
isShowProtocolDialog1: false,
isShowProtocolDialog: false,
scaleQuery: {},
isSentedProt: false
};
},
computed: {
...mapState('recordManage',{
...mapState("recordManage", {
recordList: state => state.recordList,
enteringInfo: state => state.enteringInfo,
formList: state => state.formList,
formList: state => state.formList
}),
...mapGetters([
'_token',
])
...mapGetters(["_token"])
},
created() {
// 验证是否首次进入 ################
// this.init();
this.search(1);
},
mounted() {},
mounted() {
this.isFirstEnter();
},
methods: {
...mapActions('recordManage', ['getRecordList', 'getEnteringInfo', 'getFormList']),
async search(currentPage){
if(this.timeRangeList) {
...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 = '';
} else {
this.searchData.beginTime = "";
this.searchData.endTime = "";
}
await this.getRecordList({
...this.searchData,
status: this.activeName,
pageNo: currentPage || this.paginationSet.pageNo,
pageSize: this.paginationSet.pageSize,
pageSize: this.paginationSet.pageSize
});
if(this.recordList.enteringDtos){
if(this.recordList.enteringDtos.length > 0) {
if (this.recordList.enteringDtos) {
if (this.recordList.enteringDtos.length > 0) {
this.hasData = true;
}else {
} else {
this.hasData = false;
}
}
const {pageNo, pageSize, count, finishedCount, unfinishedCount} = this.recordList;
if(this.activeName == ''){
const {
pageNo,
pageSize,
count,
finishedCount,
unfinishedCount
} = this.recordList;
if (this.activeName == "") {
this.paginationSet.total = count;
}else if(this.activeName == 2){
} else if (this.activeName == 2) {
this.paginationSet.total = finishedCount;
}else if(this.activeName == 1){
} else if (this.activeName == 1) {
this.paginationSet.total = unfinishedCount;
}
this.paginationSet = {
...this.paginationSet,
pageNo,
pageSize: pageSize,
}
pageSize: pageSize
};
},
reseat(){
this.searchData.planName = '';
this.searchData.nickname = '';
this.searchData.mobilePhone = '';
reseat() {
this.searchData.planName = "";
this.searchData.nickname = "";
this.searchData.mobilePhone = "";
this.timeRangeList = [];
this.searchData.beginTime = '';
this.searchData.endTime = '';
this.searchData.beginTime = "";
this.searchData.endTime = "";
this.search(1);
},
async visitDetail(row){
await this.getEnteringInfo({patientId:row.patientId,fuPlanPatientTimesId:row.fuPlanPatientTimesId});
async visitDetail(row) {
await this.getEnteringInfo({
patientId: row.patientId,
fuPlanPatientTimesId: row.fuPlanPatientTimesId
});
this.dialogDetailShow = true;
// this.enteringRow = row;
},
closeDetail(val){
closeDetail(val) {
this.dialogDetailShow = val;
},
handlerClick(){
handlerClick() {
this.search(1);
},
async editRow(row){
async editRow(row) {
await this.getFormList(row.fuPlanTimesId); //获取量表列表
//获取量表列表情况
if(this.formList.scalesList.length > 1){
this.selectFormShow = true
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
}
}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}})
}else {
this.$message.warning('暂无量表!')
});
// 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({
......@@ -239,25 +351,27 @@
// }
// })
},
changeStatusRow(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}`);
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)
window.open(saasUrl);
},
handleSizeChangePre(pageSize){
this.paginationSet['pageSize'] = pageSize;
this.paginationSet['pageNo'] = 1;
handleSizeChangePre(pageSize) {
this.paginationSet["pageSize"] = pageSize;
this.paginationSet["pageNo"] = 1;
this.search();
},
handleCurrentChangePre(pageNo){
this.paginationSet['pageNo'] = pageNo;
handleCurrentChangePre(pageNo) {
this.paginationSet["pageNo"] = pageNo;
this.search();
},
closeChangeStatus(val){
closeChangeStatus(val) {
this.isShowChangeDialog = val;
this.search();
// let getArguments = arguments[0];
......@@ -266,48 +380,101 @@
},
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.$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 '';
return "";
} else {
let hash = {
1: '未完成',
2: '已完成'
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{
@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-top20 {
margin-top: 20px;
}
.status-span{
.status-span {
color: $picaGreen;
}
}
.list-content{
p{
.list-content {
p {
cursor: pointer;
line-height: 30px;
text-decoration: underline;
......
......@@ -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: {
......@@ -199,6 +207,7 @@
return row.fuPlanPatientTimesId;
},
statusTotal: null, //每种状态的总数
isShowProtocolDialog: false,
}
},
created() {
......@@ -208,6 +217,7 @@
// 验证是否首次进入 ################
// 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];
......@@ -237,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,
......
<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>
</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'
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: {}
}
},
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}});
},
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}})
}else {
this.$message.warning('暂无量表!')
}
},
changeFollowStatus(row) {
this.statusForm = {
fuPlanPatientTimesId: row.planPatientTimesId,
patientId: row.patientId,
nickname: row.patientName,
status: 1,
}
this.isShowChangeDialog = true
}
}
}
</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: 90px;
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>
......@@ -5,23 +5,31 @@
<el-row>
<el-col class="visitor screenSet" :span="24">
<div class="visitor-title">
<div class="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>
<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 :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>
<span class="text-btn" @click="goToScale(scope.row)">履约录入</span> |
<span class="text-btn" @click="changeFollowStatus(scope.row)">变更履约状态</span>
</template>
</el-table-column>
</el-table>
......@@ -29,34 +37,48 @@
</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 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 :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>
<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-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"/>
<img :src="item.url" />
<span>{{item.menuName}}</span>
<span>{{item.portalTime}}</span>
</div>
......@@ -65,35 +87,60 @@
</div>
<div class="no-message" v-else>
<div>
<img src="../assets/image/noData.png"/>
<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="选择量表"
<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">
:before-close="closeForm"
>
<div class="list-content">
<p v-for="(item, index) in formList.scalesList" :key="index" @click="goFormView(item)">{{item.sendContent}}</p>
<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 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'
let vm = null
import { mapGetters, mapState, mapActions } from "vuex";
import * as commonUtil from "../utils/utils";
let vm = null;
export default {
components: {
BreadCrumb,
......@@ -101,77 +148,87 @@ export default {
},
data() {
return {
curmbFirst: '数据总览',
curmbFirst: "数据总览",
spanFirstNum: 12,
spanSecondNum: 12,
tableData: [],
count: 0,
messageList:[],
messageList: [],
planBtn: true,
appointBtn: true,
isShowChangeDialog: false,
statusForm: {},
selectFormShow: false,
ScaleData: {}
}
ScaleData: {},
isShowProtocolDialog: true,
scaleQuery: {},
isSentedProt: false
};
},
created() {
vm = this
vm.getSystemData()
vm = this;
vm.getSystemData();
vm.getTodayPlansList({
status:0
status: 0
});
vm.getTodayAppointsList({
status:0
status: 0
});
/*vm.getTodayOverview({
status:0
});*/
},
computed: {
...mapGetters([
'_token'
]),
...mapState('workbench', {
...mapGetters(["_token"]),
...mapState("workbench", {
todayPlansList: state => state.todayPlansList,
todayAppointsList: state => state.todayAppointsList,
todayAppointsList: state => state.todayAppointsList
//todayOverview: state => state.todayOverview,
}),
...mapState('recordManage',{
formList: state => state.formList,
}),
...mapState("recordManage", {
formList: state => state.formList
})
},
// 挂载到Dom完成时
mounted: function() {
// commonUtil.resizeHeight()
},
methods: {
...mapActions('workbench', ['getTodayPlansList', 'getTodayAppointsList', 'getTodayOverview']),
...mapActions('recordManage', ['getFormList']),
...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');
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
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)
vm.$message.info(res.message);
}
})
});
},
changeTodayPlansList(status) {
if(status == 0) {
vm.planBtn = true
if (status == 0) {
vm.planBtn = true;
} else {
vm.planBtn = false
vm.planBtn = false;
}
vm.getTodayPlansList({
......@@ -179,34 +236,53 @@ export default {
});
},
changeTodayAppointsList(status) {
if(status == 0) {
vm.appointBtn = true
if (status == 0) {
vm.appointBtn = true;
} else {
vm.appointBtn = false
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}});
this.$router.push({
path: "/followup/reservation-manage/reservation-list",
query: { planName: planName, appointTime: appointTime, status: 1 }
});
},
closeChangeStatus(val){
closeChangeStatus(val) {
this.isShowChangeDialog = val;
let status = null
if(this.planBtn == true) {
status = 0
let status = null;
if (this.planBtn == true) {
status = 0;
} else {
status = 1
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.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;
......@@ -214,17 +290,33 @@ export default {
async goToScale(row) {
await this.getFormList(row.planTimesId); //获取量表列表
//获取量表列表情况
if(this.formList.scalesList.length > 1){
this.selectFormShow = true
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
}
}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}})
}else {
this.$message.warning('暂无量表!')
});
// 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("暂无量表!");
}
},
changeFollowStatus(row) {
......@@ -232,17 +324,56 @@ export default {
fuPlanPatientTimesId: row.planPatientTimesId,
patientId: row.patientId,
nickname: row.patientName,
status: 1,
}
this.isShowChangeDialog = true
status: 1
};
this.isShowChangeDialog = true;
},
// 敏感词校验与签署协议逻辑
// 1. 判断量表内是否存在敏感词
// 2. 判断居民是否存签署协议
// 3. 七天内是否发送过
needSign(scaleId, query) {
// let statusConfig =await getStatusByScaleId(scaleId)
let statusConfig = {
isSensitive: 1, // 量表内是否存在敏感词 0: 否;1: 是
hasProtocol: 0, // 居民是否存签署协议 0: 否;1: 是
hasSented: 0 // 七天内是否发送过 0: 否;1: 是
};
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()
},
}
}
};
</script>
<style lang="scss">
.home-wrap {
.list-content{
p{
.home-wrap {
.list-content {
p {
cursor: pointer;
line-height: 30px;
text-decoration: underline;
......@@ -256,11 +387,11 @@ export default {
background: #fff;
margin-top: 88px;
// min-height: 348px;
@media screen and (min-width:1240px) and (max-width:1900px) {
@media screen and (min-width: 1240px) and (max-width: 1900px) {
width: 95%;
height: 300px !important;
}
@media screen and (min-width:1900px) {
@media screen and (min-width: 1900px) {
width: 96.7%;
height: 380px !important;
}
......@@ -276,16 +407,16 @@ export default {
.visitor-more {
font-size: 12px;
color: #449284;
border: 1px solid rgba(68,146,132,0.3);
border: 1px solid rgba(68, 146, 132, 0.3);
padding: 5px 14px;
border-radius: 3px;
background: rgba(68,146,132,0.06);
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);
border: 1px solid rgba(68, 146, 132, 0.3);
padding: 5px 14px;
border-radius: 3px;
/*background: rgba(68,146,132,0.06);*/
......@@ -303,14 +434,14 @@ export default {
}
.message {
padding: 0 25px 30px;
/*margin-top: 20px;*/
margin-top: 90px;
// margin-top: 20px;
margin-top: 20px;
background: #fff;
@media screen and (min-width:1240px) and (max-width:1900px) {
@media screen and (min-width: 1240px) and (max-width: 1900px) {
width: 95%;
// height: 320px !important;
}
@media screen and (min-width:1900px) {
@media screen and (min-width: 1900px) {
width: 96.7%;
// height: 400px !important;
}
......@@ -328,7 +459,7 @@ export default {
padding: 7px;
.message-item {
padding: 10px 10px 15px;
border-bottom: 1px solid #EBEEF5;
border-bottom: 1px solid #ebeef5;
.text-top {
img {
float: left;
......@@ -348,7 +479,6 @@ export default {
color: #666;
margin-top: 15px;
}
}
}
}
......@@ -361,8 +491,28 @@ 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>
<template>
<div class="select-patient-dialog">
<el-dialog
title="添加居民"
:visible.sync="showSelectPatient"
v-if="isShowSelectPatient"
:before-close="clickClose"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="1100px"
top="2%"
center>
<div class="finish-content">
<el-form
ref="searchData"
:model="searchData"
:inline="true"
class="select-width"
size="small">
<div style="display: flex;justify-content: flex-end;margin-bottom: 15px">
<el-button plain size="small" @click="goAddPatient">+ 新增居民</el-button>
</div>
<div style="display: flex;justify-content: space-between;">
<div>
<el-form-item prop="sex">
<el-select
class="init-width"
v-model="searchData.sex"
placeholder="请选择性别"
clearable>
<el-option
v-for="(item,index) in sexOptions"
:key="index"
:label="item.value"
:value="item.no">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="ageRange">
<el-select
v-model="searchData.ageRange"
multiple
collapse-tags
filterable
placeholder="请选择年龄段"
class="init-width2"
clearable>
<el-option
v-for="(item,index) in ageOptions"
:key="index"
:label="item.value"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="diseaseId">
<!--<el-select
v-model="searchData.diseaseId"
multiple
collapse-tags
filterable
placeholder="请选择诊断"
class="set-width"
clearable>
<el-option
v-for="(item,index) in diseaseOptions"
:key="index"
:label="item.diseaseName"
:value="item.diseaseId">
</el-option>-->
<!--</el-select>-->
<el-select
v-model="searchData.icdCodeList"
multiple
collapse-tags
filterable
remote
reserve-keyword
placeholder="请选择或搜索诊断"
:remote-method="getDiseaseData"
:loading="loading"
class="set-width"
>
<el-option
v-for="item in icdOptions"
:key="item.icdCode"
:label="item.diseaseName"
:value="item.icdCode">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="labelId">
<el-select
v-model="searchData.labelId"
multiple
collapse-tags
filterable
class="set-width"
placeholder="请选择或搜索分组"
clearable>
<el-option
v-for="(item,index) in labelOptions"
:key="index"
:label="item.labelName"
:value="item.labelId">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="fuPlanIdList" v-if="selectPatientType == 1">
<el-select
v-model="searchData.fuPlanIdList"
multiple
collapse-tags
filterable
class="set-width"
placeholder="请选择履约计划"
clearable>
<el-option
v-for="(item,index) in fuPlanOptions"
:key="index"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="searchCondition">
<el-input
v-model="searchData.searchCondition"
placeholder="请输入姓名,手机号,身份证"
clearable
class="set-width">
<!--<i slot="prefix" class="el-input__icon el-icon-search" @click="searchHandler" style="cursor: pointer"></i>-->
</el-input>
</el-form-item>
</div>
<div>
<el-button type="primary" @click="searchHandler" size="small">查询</el-button>
<el-button plain @click="resetData('searchData')" size="small">重置</el-button>
</div>
</div>
</el-form>
<el-table
:data="patientsData"
ref="multipleTable"
center
style="width: 100%;margin-top: 10px;"
height="250"
:row-key="getRowKeys"
class="spe-table"
@selection-change="handleSelectionChange">
<el-table-column
type="selection"
align="center"
:reserve-selection="true"
:selectable="checkboxInit">
</el-table-column>
<el-table-column
prop="nickname"
label="姓名"
align="center">
</el-table-column>
<el-table-column
prop="sexStr"
label="性别"
min-width="50"
align="center">
</el-table-column>
<el-table-column
prop="ageStr"
label="年龄"
min-width="50"
align="center">
</el-table-column>
<el-table-column
prop="mobilePhone"
label="手机"
align="center"
min-width="130">
</el-table-column>
<el-table-column
prop="idNoStr"
label="身份证"
align="center"
min-width="130">
</el-table-column>
<el-table-column
prop="showDiseaseNames"
label="诊断"
align="center"
width="180"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="showLabelName"
label="分组"
align="center"
width="180"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
v-if="selectPatientType == 1"
prop="fuPlanName"
label="履约计划"
align="center"
width="180"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<span v-if="scope.row.fuPlanName">{{scope.row.fuPlanName}}</span>
<span v-else>-</span>
</template>
</el-table-column>
</el-table>
<el-row type="flex" justify="space-between" align="middle" class="margin-top15">
<!--<span>已选:{{newSelects.length}}人</span>-->
<span></span>
<el-pagination
background
v-if="patientsData.length"
@size-change="handleSizeChangePre"
@current-change="handleCurrentChangePre"
layout="total, sizes, prev, pager, next, jumper"
:current-page="paginationSet.pageNum"
:page-sizes="[15,30,50,100]"
:page-size="paginationSet.pageSize"
:total="paginationSet.total">
</el-pagination>
</el-row>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="clickClose" size="small" plain>取 消</el-button>
<el-button type="primary" size="small" @click="sureClick">确 定</el-button>
</div>
</el-dialog>
<el-dialog
class="reload-label-modal"
:visible.sync="showReloadModal"
width="320px"
:show-close="false"
:close-on-click-modal="false"
center>
<p class="tips">您刚才跳转到新增居民页面进行新增居民,请点击下方按钮刷新数据</p>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleReload">重新加载</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { mapState, mapActions } from 'vuex'
import { getConstants, getPatientInfoList, getDiseasesList, getLabelList, getIcdList } from '@/utils/patients/patientsapi'
import { getPlanList } from '@/utils/followup/followapis'
export default {
components: {},
name: "select-patient",
data() {
return {
showSelectPatient: true,
allSelects: [],
// eachSelects: [],//仅仅是操作选择的总人员
// totalSelect: [],// 当前所选的人
srvPackageId: '',
patientsData: [],
searchData: {
sex: null,
ageRange: [],
diseaseId: [],
labelId: [],
fuPlanIdList: [],
searchCondition: '',
icdCodeList: [],
},
paginationSet: {
pageNum: 1,
pageSize: 15,
total: 0
},
sexOptions: [{
no: '',
value: '不限'
}],
ageOptions: [
// {no: '', value: '年龄范围'}
],
diseaseOptions: [
// {diseaseId: '', diseaseName: '基础疾病'}
],
labelOptions: [
// {labelId: '', labelName: '分组'}
],
fuPlanOptions: [],
newSelects: [], //新选中的人
oldPatientList: [],
showReloadModal: false,
loading: false,
icdOptions: [],
getRowKeys(row) {
return row.patientId;
},
}
},
props: {
isShowSelectPatient: Boolean, //是否显示model,
patientIdList: Array,// 确定已经选过的居民
oldPatientIdList: Array,// 确定已经选过的居民
selectPatientType: Number, //获取居民列表所需字段,履约是1,分组是2,患教是3
sourceId: {
type: String,
required: false,
default: '',
},
},
watch: {
isShowSelectPatient(val){
if(val){
this.getPatientsList()
//获取搜索诊断
this.getDiseaseData();
// 获取常量 性别、年龄
getConstants({
numList: 'P057,P006'
}).then(res=>{
this.sexOptions = [{
no: '',
value: '不限'
}];
this.sexOptions = this.sexOptions.concat(res.data.P006);//性别
this.ageOptions = [
// {no: '', value: '年龄范围'}
];
this.ageOptions = this.ageOptions.concat(res.data.P057);//年龄段
});
// 获取所有疾病
getDiseasesList().then(res=>{
this.diseaseOptions = [
// {diseaseId: '', diseaseName: '基础疾病'}
];
this.diseaseOptions = this.diseaseOptions.concat(res.data);
});
// 获取所有分组
getLabelList({type: 1}).then(res=>{
this.labelOptions = [
// {labelId: '', labelName: '分组'}
]
this.labelOptions = this.labelOptions.concat(res.data.labelNameList);
});
// 获取履约计划列表
getPlanList({
pageNo: -1,
}).then(res => {
if(res.code == '000000') {
this.fuPlanOptions = res.data.fPlanDtoList;
}
})
}
},
},
methods: {
checkboxInit(row,index){
if(row.disableNum == undefined) {
return 1
} else {
return row.disableNum
}
},
getDiseaseData(query) {
// if (query !== '') {
let params = {
diseaseName: query ? query : '',
pageSize: 200,
pageNum: 1,
};
this.loading = true;
getIcdList(params).then(data => {
this.loading = false;
if(data.code == "000000") {
this.icdOptions = data.data;
}
}).catch((error) => {
this.$message({
message: error,
type: 'error'
});
});
// }else {
// this.icdOptions = [];
// }
},
getPatientsList(){
const data = {
pageSize: this.paginationSet.pageSize,
pageNo: this.paginationSet.pageNum,
labelIdList:this.searchData.labelId,
diseaseIdList: this.searchData.diseaseId,
ageList: this.searchData.ageRange,
sex: this.searchData.sex,
searchCondition:this.searchData.searchCondition,
srvPackageId:this.srvPackageId,
addType: this.selectPatientType, //履约是1,分组是2,患教是3
fuPlanIdList: this.searchData.fuPlanIdList || [],
sourceId: this.sourceId, //若是履约的话,传planId;若是分组的话,传labeledId;
icdCodeList: this.searchData.icdCodeList
}
getPatientInfoList(data).then(res=>{
if(res.data.patientList){
this.patientsData = res.data.patientList //接口获取的当页居民
this.getSex()
this.paginationSet.total = res.data.totalRows
// 设置所请求的当页人员是否成为选中状态
// console.log('传入的已选居民',this.patientIdList)
this.patientsData.forEach((item)=>{
item.disableNum = 1;
let diseaseNames = [];
let groupNames = []
//转化分组
if(item.labelModels) {
item.labelModels.forEach(item => {
groupNames.push(item.label)
});
item.showLabelName = groupNames.join('、');
} else {
item.showLabelName = '-';
}
//转化诊断
if(item.patientTypeModels) {
item.patientTypeModels.forEach(item => {
diseaseNames.push(item.diseaseName)
})
item.showDiseaseNames = diseaseNames.join('、');
}else {
item.showDiseaseNames = '-';
}
//针对履约项目
if(this.patientIdList.length > 0){
if(this.patientIdList.includes(item.patientId)){// 如果已经选过居民
this.$nextTick(()=>{
this.$refs.multipleTable.toggleRowSelection(item,true);
})
}
}
if(this.oldPatientIdList!=undefined&&this.oldPatientIdList.length) {
this.oldPatientList = [];
this.patientsData.forEach((item)=>{
if(this.oldPatientIdList.includes(item.patientId)){// 如果已经选过居民
item.disableNum = 0;
this.oldPatientList.push(item);
} else {
item.disableNum = 1
}
})
}
//针对分组详情
// this.patientIdList = res.data.selectedPatientIdList;
let selectedPatientIdList = res.data.selectedPatientIdList;
if(selectedPatientIdList && selectedPatientIdList.length > 0){
if(selectedPatientIdList.includes(item.patientId)){// 如果已经选过居民
this.$nextTick(()=>{
this.$refs.multipleTable.toggleRowSelection(item,true);
})
}
}
if(selectedPatientIdList && selectedPatientIdList.length > 0) {
this.patientsData.forEach((item)=>{
if(selectedPatientIdList.includes(item.patientId)){// 如果已经选过居民
item.disableNum = 0;
this.oldPatientList.push(item);
} else {
item.disableNum = 1
}
})
}
})
// console.log(this.oldPatientIdList)
}else{
this.patientsData = []
}
})
},
getSex(){
this.patientsData.forEach((item,index)=>{
if(item.sex==1){
this.patientsData[index].sexStr = '男'
}else if(item.sex==2){
this.patientsData[index].sexStr = '女'
}else{
this.patientsData[index].sexStr = '-'
}
if(!item.idNo) {
this.patientsData[index].idNoStr = '-'
}else {
this.patientsData[index].idNoStr = item.idNo
}
if(item.age || item.age == 0) {
this.patientsData[index].ageStr = item.age
}else {
this.patientsData[index].ageStr = '-'
}
})
},
// 对选中的居民进行去重
removeDuplicates(list){
return Array.from(new Set(list))
},
// 选择居民
handleSelectionChange(val) {
const _this = this;
_this.newSelects = [];
val.forEach(item => {
if(item.disableNum == 1) {
_this.newSelects.push(item)
}
})
},
// 切换分页
handleCurrentChangePre(val) {
this.paginationSet.pageNum = val
this.getPatientsList()
//控制切换页码的时候,滚动条滚到最上面
this.$refs.multipleTable.bodyWrapper.scrollTop = 0;
},
clickClose(){
// this.searchData.searchCondition = ''
this.searchData = {
sex: null,
ageRange: [],
diseaseId: [],
labelId: [],
fuPlanIdList: [],
searchCondition: '',
icdCodeList: [],
}
this.$emit('closeSelectPatient',false)
},
sureClick(){
if(this.newSelects.length) {
// this.searchData.searchCondition = ''
this.searchData = {
sex: null,
ageRange: [],
diseaseId: [],
labelId: [],
fuPlanIdList: [],
searchCondition: '',
icdCodeList: [],
}
this.$emit('sureSelectPatient',false,this.newSelects,this.oldPatientList)
} else {
this.$message.warning('请先选择!')
}
},
handleSizeChangePre(val) {
this.paginationSet.pageSize = val;
this.getPatientsList();
this.$refs.multipleTable.bodyWrapper.scrollTop = 0;
},
searchHandler() {
this.paginationSet.pageNum = 1;
this.getPatientsList();
this.$refs.multipleTable.bodyWrapper.scrollTop = 0;
},
resetData(formName) {
this.$refs[formName].resetFields();
this.getPatientsList();
this.$refs.multipleTable.bodyWrapper.scrollTop = 0;
},
goAddPatient() {
// this.$router.push({
// path: '/patients-manage/new-manage/new-patient'
// })
let routeData = this.$router.resolve({ path: '/patients-manage/new-manage/new-patient' });
window.open(routeData.href, '_blank');
this.showReloadModal = true;
},
handleReload() {
this.paginationSet.pageNum = 1;
this.getPatientsList();
this.$refs.multipleTable.bodyWrapper.scrollTop = 0;
this.showReloadModal = false;
},
ageDate(val){
let ageObj;
if(!val){
ageObj = {
ageBegin:'',
ageEnd:''
}
}else if(val.indexOf('+') > -1){
ageObj = {
ageBegin: 84,
ageEnd: 200
}
}else {
let ageItem = val.split('-');
ageObj = {
ageBegin:ageItem[0],
ageEnd:ageItem[1]
}
}
return ageObj;
}
},
}
</script>
<style lang="scss">
.init-width{
width: 100px !important;
.el-input{
width: 100px!important;
}
}
.init-width2{
width: 110px !important;
.el-input{
width: 110px!important;
}
}
.set-width{
width: 150px !important;
.el-input{
width: 150px!important;
}
}
</style>
<style lang="scss">
@import '../../../../style/patients-style/element-reset.css';
.select-patient-dialog {
.el-dialog__wrapper {
overflow: hidden;
.el-dialog--center {
/*height: 580px;*/
.el-dialog__body{
padding: 10px 25px 15px;
}
.el-table--scrollable-y,.el-table__body-wrapper {
&::-webkit-scrollbar{
width:5px;
}
&::-webkit-scrollbar-thumb {/*滚动条里面小方块*/
border-radius: 10px;
-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
background: rgba(0,0,0,0.1);
}
}
/*.el-dialog__body {
max-height: 80%;
overflow: hidden;
.finish-content {
height: 100%;
.el-table {
.el-table--scrollable-y .el-table__body-wrapper {
height: 80%;
}
}
}
}*/
}
}
.select-width .el-form-item{
/*width: 130px;*/
}
.margin-top15{
margin-top: 15px;
}
.el-form-item--mini.el-form-item, .el-form-item--small.el-form-item{
margin-bottom: 5px;
}
.el-select__tags-text{
display: inline-block;
max-width: 70px;
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;
}
.el-select .el-tag__close.el-icon-close{
top: -5px;
}
}
</style>
<template>
<div class="select-patient-dialog">
<el-dialog
title="添加居民"
:title="selectPatientDialogTitle"
:visible.sync="showSelectPatient"
v-if="isShowSelectPatient"
:before-close="clickClose"
......@@ -297,6 +297,7 @@
getRowKeys(row) {
return row.patientId;
},
// 添加居民
}
},
props: {
......@@ -309,6 +310,10 @@
required: false,
default: '',
},
selectPatientDialogTitle: {
type: String,
default: '添加居民'
}
},
watch: {
isShowSelectPatient(val){
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册