Explorar el Código

厦门i健康/V1.7.4.6

chenyubai hace 1 año
padre
commit
28113bd458

+ 21 - 0
api/statistics-api.js

@ -194,6 +194,23 @@
		findPatientFollowListByCondition: function(data){
		    return httpRequest.get("statisticsExport/findPatientFollowListByCondition", {data: data});
		},
		//康复下转明细
		rehabilitationPatientInfo: function(data){
		    return httpRequest.get("doctor/specialist/rehabilitation/rehabilitationPatientInfo", {data: data});
		},
		// 康复下转分配,同步居民,同步病历
		synchronizePationSingle: function(data){
		    return httpRequest.post("doctor/specialist/rehabilitation/synchronizePationSingle", {data: data});
		},
		//康复下转获取签约信息
		getSignInfo: function(data){
		    return httpRequest.get("doctor/specialist/rehabilitation/getSignInfo", {data: data});
		},
		// 获取社区医院
		hospitalsByType: function(data){
		    return httpRequest.get("hospitals/hospitalsByType", {data: data});
		},
		
		
		
		
@ -269,6 +286,10 @@
		exfindPatientFollowListByCondition: function(data, filename){
			return httpRequest.downLoadFileForAjax("statisticsExport/exfindPatientFollowListByCondition", filename, data);
		},
		// 康复下转明细导出
		exportRehabilitationPatientInfo: function(data, filename){
			return httpRequest.downLoadFileForAjax("doctor/specialist/rehabilitation/exportRehabilitationPatientInfo", filename, data);
		},
		
        
    }

+ 62 - 1
app/rehabilitation/css/health_control.css

@ -264,7 +264,7 @@ li {
.dataa {
    width: 370px;
    width: 500px;
    justify-content: space-between;
}
@ -495,3 +495,64 @@ a:hover{
}
.w-100 {width: 100%;}
.h200 {height: 200px;}
.recoveryLabel{
	height: 28px;
	line-height: 28px;
	font-size: 14px;
	border-radius: 30px 0 0 30px;
	padding: 0px 10px 0 30px;
	background-color: rgba(255, 149, 38, 0.05);
	color: #FF9526;
	position: relative;
}
.recoveryLabel:after{
	content: '';
	height: 6px;
	width: 6px;
	border-radius: 50%;
	background-color: #FF9526;
	position: absolute;
	left: 15px;
	top: 10px;
}
.recoveryLabel1{
	height: 28px;
	line-height: 28px;
	font-size: 14px;
	border-radius: 30px 0 0 30px;
	padding: 0px 10px 0 30px;
	position: relative;
	background-color: rgba(246, 13, 50, 0.05);
	color: #F60D32;
}
.recoveryLabel1:after{
	content: '';
	height: 6px;
	width: 6px;
	border-radius: 50%;
	background-color: #F60D32;
	position: absolute;
	left: 15px;
	top: 10px;
}
.recoveryLabel2{
	height: 28px;
	line-height: 28px;
	font-size: 14px;
	border-radius: 30px 0 0 30px;
	padding: 0px 10px 0 30px;
	position: relative;
	background-color: rgba(133, 141, 148, 0.05);
	color: #858D94;
}
.recoveryLabel2:after{
	content: '';
	height: 6px;
	width: 6px;
	border-radius: 50%;
	background-color: #858D94;
	position: absolute;
	left: 15px;
	top: 10px;
}

+ 1 - 0
app/rehabilitation/html/health_control.html

@ -97,6 +97,7 @@
                                <p class="biaoqian" :id="'quote_'+data.id">
                                    <span class="span"></span> <span>{{data.healthyCondition}}</span>
                                </p>
								<p><div class="recoveryLabel" v-if="data.changeStatus">{{data.changeStatus==1?'签约医生变更':data.changeStatus==2?'签约社区变更':data.changeStatus==3?'签约过期':data.changeStatus==4?'已解约':'已死亡'}}</div></p>
                            </div>
                            <div class="datab ui-col-1 flex-box">
                                <p style="width: 120px">{{data.planTypeName}}</p>

+ 21 - 0
app/rehabilitation/html/rehabilitation_management.html

@ -56,6 +56,26 @@
				margin-left: auto;
				margin-right: auto;
			}
			.recoveryLabel{
				height: 28px;
				line-height: 28px;
				font-size: 14px;
				/* border-radius: 30px 0 0 30px; */
				padding: 0px 0px 0 10px;
				/* background-color: rgba(255, 149, 38, 0.05); */
				color: #FF9526;
				position: relative;
			}
			.recoveryLabel:after{
				content: '';
				height: 6px;
				width: 6px;
				border-radius: 50%;
				background-color: #FF9526;
				position: absolute;
				left: 0px;
				top: 10px;
			}
		</style>
	</head>
@ -104,6 +124,7 @@
							<div class="ui-col-1">
								<div class="mt10"><span class="c-f16 mr5">{{planInfo.patientName}}</span><span class="c-f16 c-999">({{planInfo.sex}} {{planInfo.age}}岁)</span></div>
								<div class="tag mt10 tag-1 ml20"></div>
								<div class="recoveryLabel" v-if="planInfo.changeStatus">{{planInfo.changeStatus==1?'签约医生变更':planInfo.changeStatus==2?'签约社区变更':planInfo.changeStatus==3?'签约过期':planInfo.changeStatus==4?'已解约':'已死亡'}}</div>
							</div>
							<div class="ui-col-0 div-patient-home c-f14 c-333">进入居民首页</div>
						</div>

+ 88 - 0
app/statistics/css/comprehensive-query.css

@ -0,0 +1,88 @@
.handleNodeId-40{
	flex-wrap: wrap;
}
.handleNodeId-40 .el-form-item{
	margin-bottom: 0;
}
.handleNodeId-40 .el-form-item__content{
	float: left;
	width: 130px;
}
.handleNodeId-40 .hos-select .el-form-item__content{
	width: 200px;
}
.handleNodeId-40 .dept-select .el-form-item__content{
	width: 200px;
}
.el-table th{
	background: #F5F5FA;
}
.el-radio-button:first-child .el-radio-button__inner{
	border-radius: 15px 0 0 15px;
}
.el-radio-button:last-child .el-radio-button__inner{
	border-radius:  0 15px 15px 0;
}
.line1{
	line-height:1;
}
.formLeft{
	margin-left: 20px;
}
.formWidth{
	width:120px;
}
.formWidth200{
	width:200px;
}
.tabs{
	width: 300px;
	height: 35px;
	line-height: 35px;
	/* border: 1px solid red; */
	margin: 10px;
	/* border: 1px solid #f1f1f1; */
	display: flex;
}
.tabsBox{
	width: 32.55%;
	text-align: center;
	border: 1px solid #F1F1F1;
	height: 100%;
	cursor: pointer;
	display: inline-block;
	/* border-right: 0; */
}
.resetSelected{
	width: 98%;
	position: absolute;
	text-align: center;
	cursor: pointer;
	top: 770px;
}
.eliminate{
	margin-left: 20px;
	cursor:pointer ;
}
.label-no-float .el-form-item__label{
	float: none;
}
.particulars{
	font-size: 14px;
	padding: 3px 19px;
	cursor: pointer;
}
.particulars:hover{
	/* color: #409eff; */
	background-color:#409eff;
	color:#fff;
}
.handleNodeId-44{
	flex-wrap: wrap;
}
.handleNodeId-44 .el-form-item{
	margin-bottom: 0;
}
.operate{
	cursor: pointer;
}

+ 117 - 101
app/statistics/html/comprehensive-query.html

@ -17,77 +17,10 @@
    <link rel="stylesheet" type="text/css" href="../../../css/element-ui.css" />
    <link href="../../../plugins/toastr/toastr.min.css" rel="stylesheet">
    <link rel="stylesheet" type="text/css" href="../css/common.css" />
    <link rel="stylesheet" type="text/css" href="../css/comprehensive-query.css" />
</head>
<style>
	.handleNodeId-40{
		flex-wrap: wrap;
	}
	.handleNodeId-40 .el-form-item{
		margin-bottom: 0;
	}
	.handleNodeId-40 .el-form-item__content{
		float: left;
		width: 130px;
	}
	.handleNodeId-40 .hos-select .el-form-item__content{
		width: 200px;
	}
	.handleNodeId-40 .dept-select .el-form-item__content{
		width: 200px;
	}
		.el-table th{
			background: #F5F5FA;
		}
		.el-radio-button:first-child .el-radio-button__inner{
			border-radius: 15px 0 0 15px;
		}
		.el-radio-button:last-child .el-radio-button__inner{
			border-radius:  0 15px 15px 0;
		}
		.line1{
			line-height:1;
		}
		.formLeft{
			margin-left: 20px;
		}
		.formWidth{
			width:120px;
		}
		.formWidth200{
			width:200px;
		}
		.tabs{
			width: 300px;
			height: 35px;
			line-height: 35px;
			/* border: 1px solid red; */
			margin: 10px;
			/* border: 1px solid #f1f1f1; */
			display: flex;
		}
		.tabsBox{
			width: 32.55%;
			text-align: center;
			border: 1px solid #F1F1F1;
			height: 100%;
			cursor: pointer;
			display: inline-block;
			/* border-right: 0; */
		}
		.resetSelected{
			width: 98%;
			position: absolute;
			text-align: center;
			cursor: pointer;
			top: 770px;
		}
		.eliminate{
			margin-left: 20px;
			cursor:pointer ;
		}
		.label-no-float .el-form-item__label{
			float: none;
		}
	
</style>
<body style="margin: 0;overflow-x: auto;">
@ -105,7 +38,10 @@
							</el-tree>
						</template>
						<template v-if="tabsId == 2">
							<el-tree highlight-current class="bgc-f2f3f5" :data="detailInquire" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
							<div class="particulars" v-for="(item,index) in detailInquire[0].children" @click="handleNodeClick(item)" :style="handleNodeId==item.id?'background-color: #409eff;color:#fff;':''">
								{{item.label}}
							</div>
							<!-- <el-tree highlight-current class="bgc-f2f3f5" :data="detailInquire" :props="defaultProps" @node-click="handleNodeClick"></el-tree> -->
						</template>
						<template v-if="tabsId == 3">
							<el-tree class="bgc-f2f3f5" ref="collectTree"  :data="collect" show-checkbox node-key="id" :props="defaultProps"   @check-change="collectClick" @check='collCheck'>
@ -115,11 +51,13 @@
		        	</div>
		        	<div class="ui-col-1 bgc-fff p20" style="min-width: 900px;">
						<div class="searchDiv">
							<el-radio v-model="radio" label="1">按签约年度:</el-radio>
							<el-select v-model="chooseYear" class="pr20 formWidth">
								<el-option v-for="(item , index) in years" :key="index" :label="item" :value="item"></el-option>
							</el-select>
							<el-radio v-model="radio" label="2">创建时间:</el-radio>
							<template v-if="handleNodeId!=44">
								<el-radio v-model="radio" label="1">按签约年度:</el-radio>
								<el-select v-model="chooseYear" class="pr20 formWidth">
									<el-option v-for="(item , index) in years" :key="index" :label="item" :value="item"></el-option>
								</el-select>
							</template>
							<el-radio v-model="radio" label="2">{{handleNodeId=='44'?'下转时间:':'创建时间:'}}</el-radio>
							<el-date-picker v-model="start" type="date" unlink-panels placeholder="开始日期" value-format="yyyy-MM-dd" style="width:140px;"  :clearable="false" :picker-options="pickerOptions">
							</el-date-picker>
							<span class="c-999">-</span>
@ -338,12 +276,12 @@
											<el-input v-model="form7.doctorOne"  placeholder="请输入签约医生姓名查询"></el-input>
										</el-form-item>
										<el-form-item label="预约医院:" class="hos-select formLeft">
											<el-select v-model="form7.hospital" class='' placeholder="请选择" @change='hospitalChange'>
												<el-option  v-for="(item,index) in hospitalData" :key="item.value"    :value="item.value" :label="item.label"></el-option>
											<el-select v-model="form7.hospital" class='' placeholder="请输入或选择" @change='hospitalChange' filterable>
												<el-option   v-for="(item,index) in hospitalData" :key="item.value"    :value="item.value" :label="item.label"></el-option>
											</el-select>
										</el-form-item>
										<el-form-item label="预约科室:" class="dept-select formLeft">
											<el-select v-model="form7.administrativeOffice" class='' placeholder="请选择">
											<el-select v-model="form7.administrativeOffice" class='' placeholder="请输入或选择" filterable>
												<el-option  v-for="(item,index) in administrativeOffice" :key="item.value"    :value="item.value" :label="item.label"></el-option>
											</el-select>
										</el-form-item>
@ -386,6 +324,41 @@
									</el-form>
								</div>
							</div>
							<div v-if="handleNodeId==44" class="searchDiv">
								<div   class="mt5">
									<el-form  :model="form7" class="flex handleNodeId-44">
										<el-form-item label="患者姓名:" class="flex">
											<el-input v-model="form11.patientName"  placeholder="请输入患者姓名查询"></el-input>
										</el-form-item>
										<el-form-item label="下转状态:" class="flex formLeft">
											<el-select v-model="form11.status" class='' placeholder="请选择" filterable>
												<el-option  v-for="(item,index) in deorsumvergence" :key="item.value"    :value="item.value" :label="item.label"></el-option>
											</el-select>
										</el-form-item>
										<el-form-item label="下转医院:" class="flex formLeft">
											<el-select v-model="form11.hospitalCode" class='' placeholder="请选择" filterable>
												<el-option  v-for="(item,index) in rehabilitationHospital" :key="item.value"    :value="item.value" :label="item.label"></el-option>
											</el-select>
										</el-form-item>
										<el-form-item label="下转医生:" class="flex formLeft">
											<el-input v-model="form11.hospitalDoctor"  placeholder="请输入医生姓名查询"></el-input>
										</el-form-item>
										<el-form-item label="接收社区医院:" class="flex formLeft">
											<el-select v-model="form11.orgCode" class='' placeholder="请选择" filterable>
												<el-option  v-for="(item,index) in communityHospitals" :key="item.value"    :value="item.value" :label="item.label"></el-option>
											</el-select>
										</el-form-item>
										<el-form-item label="接收医生:" class="flex formLeft">
											<el-input v-model="form11.doctor"  placeholder="请输入患者姓名查询"></el-input>
										</el-form-item>
										<el-form-item label="档案状态:" class="flex formLeft">
											<el-select v-model="form11.archiveStatus" class='' placeholder="请选择" filterable>
												<el-option  v-for="(item,index) in archiveList" :key="item.value"    :value="item.value" :label="item.label"></el-option>
											</el-select>
										</el-form-item>
									</el-form>
								</div>
							</div>
						</template>
						
						
@ -416,29 +389,31 @@
						</template>
						
		        		<div class="searchDiv mt10">
		        			<label class="c-333 c-f14" for="">数据范围:</label>
		        			<el-select v-model="rangeCode" style="width:100px;" class="pr10">
				                <el-option v-for="(item , index) in rangeList" :key="index" :label="item.name" :value="item.code"></el-option>
				            </el-select>
		        			<label class="c-333 c-f14" for="" v-if="(initlevel == 4||initlevel == 3)&&rangeCode!='specHos'">地区:</label>
		        			<el-select v-model="areaCode" style="width:100px;" class="pr10" v-if="(initlevel == 4||initlevel == 3)&&rangeCode!='specHos'">
				                <el-option v-for="(item , index) in areaList" :key="index" :label="item.name" :value="item.code"></el-option>
				            </el-select>
		        			<label class="c-333 c-f14" for="" v-show="rangeCode!='town'&&rangeCode!='specHos'">社区:</label>
		        			<el-select v-model="communityCode" style="width:200px;" class="pr10" v-show="rangeCode!='town'&&rangeCode!='specHos'">
				                <el-option v-for="(item , index) in communityList" :key="index" :label="item.name" :value="item.code"></el-option>
				            </el-select>
		        			<label class="c-333 c-f14" for="" v-show="rangeCode == 'team'">团队:</label>
		        			<el-select v-model="teamCode" style="width:150px;" class="pr10" v-show="rangeCode == 'team'">
				                <el-option v-for="(item , index) in teamList" :key="index" :label="item.name" :value="item.id"></el-option>
				            </el-select>
							
							<label class="c-333 c-f14" for="" v-show="rangeCode == 'specHos'">医院:</label>
							<el-select v-model="specHosName" style="width:150px;" class="pr10" v-show="rangeCode == 'specHos'">
							    <el-option v-for="(item , index) in specHosList" :key="index" :label="item.name" :value="item.code"></el-option>
							</el-select>
							<template v-if="handleNodeId!=44">
								<label class="c-333 c-f14" for="">数据范围:</label>
								<el-select v-model="rangeCode" style="width:100px;" class="pr10">
									<el-option v-for="(item , index) in rangeList" :key="index" :label="item.name" :value="item.code"></el-option>
								</el-select>
								<label class="c-333 c-f14" for="" v-if="(initlevel == 4||initlevel == 3)&&rangeCode!='specHos'">地区:</label>
								<el-select v-model="areaCode" style="width:100px;" class="pr10" v-if="(initlevel == 4||initlevel == 3)&&rangeCode!='specHos'">
									<el-option v-for="(item , index) in areaList" :key="index" :label="item.name" :value="item.code"></el-option>
								</el-select>
								<label class="c-333 c-f14" for="" v-show="rangeCode!='town'&&rangeCode!='specHos'">社区:</label>
								<el-select v-model="communityCode" style="width:200px;" class="pr10" v-show="rangeCode!='town'&&rangeCode!='specHos'">
									<el-option v-for="(item , index) in communityList" :key="index" :label="item.name" :value="item.code"></el-option>
								</el-select>
								<label class="c-333 c-f14" for="" v-show="rangeCode == 'team'">团队:</label>
								<el-select v-model="teamCode" style="width:150px;" class="pr10" v-show="rangeCode == 'team'">
									<el-option v-for="(item , index) in teamList" :key="index" :label="item.name" :value="item.id"></el-option>
								</el-select>
								
								<label class="c-333 c-f14" for="" v-show="rangeCode == 'specHos'">医院:</label>
								<el-select v-model="specHosName" style="width:150px;" class="pr10" v-show="rangeCode == 'specHos'">
									<el-option v-for="(item , index) in specHosList" :key="index" :label="item.name" :value="item.code"></el-option>
								</el-select>
							</template>
							
				            <el-button type="primary" size="mini" @click="searchHandle">查询</el-button>
				            <el-button type="primary" size="mini" @click="searchHandle(true)">查询</el-button>
				            <el-button type="ff9526" size="mini" @click="exportHandle">导出</el-button>
							<span class="eliminate" @click="eliminateClick">清除筛选条件</span>
		        		</div>
@ -605,11 +580,38 @@
										</el-table-column>
									</template>
								</el-table>
								<el-table v-if="handleNodeId==44" border   :key="tableKey" :data="recoveryList" style="width: 100%" v-loading="loadingTwo" class="mt20" >
									<template >
										<el-table-column  type="index" label="序号" align="center"></el-table-column>
										<el-table-column  prop="name" label="患者姓名" align="center"></el-table-column>
										<el-table-column  prop="age" label="年龄" align="center"></el-table-column>
										<el-table-column  prop="sex" label="性别" align="center"></el-table-column>
										<el-table-column  prop="mobile" label="患者手机号" align="center"></el-table-column>
										<el-table-column  prop="hospitalName" label="下转医院" align="center"></el-table-column>
										<el-table-column  prop="hospitalDoctor" label="下转医生" align="center"></el-table-column>
										<el-table-column  prop="createTime" label="下转时间" align="center"></el-table-column>
										<el-table-column  prop="statusName" label="下转状态" align="center"></el-table-column>
										<el-table-column  prop="orgName" label="接收社区医院" align="center"></el-table-column>
										<el-table-column  prop="doctorName" label="接收签约医生" align="center"></el-table-column>
										<el-table-column  prop="receiveTime" label="接收时间" align="center"></el-table-column>
										<el-table-column  prop="archiveStatusName" label="档案状态" align="center"></el-table-column>
										<el-table-column  prop="img" label="操作" align="center" width='100'>
											<template slot-scope="scope">
												<div class="operate">
													<div v-if="scope.row.status==0" @click="operation(1,scope.row)">分配</div>
													<div  @click="operation(2,scope.row)">查看签约</div>
													<div v-if="scope.row.status==5" @click="operation(3,scope.row)">同步居民</div>
													<div v-if="scope.row.status==3" @click="operation(4,scope.row)">同步病历</div>
												</div>
											</template>
										</el-table-column>
									</template>
								</el-table>
							</div>
							<div v-if="handleNodeShow == 3">
								<el-table v-if="collectCode == 1" border :data="diseaseReport" style="width: 100%" v-loading="loadingTwo" class="mt20" >
									<el-table-column v-if='diseaseReport.length!=0' type="index" label="序号" align="center"></el-table-column>
									<el-table-column v-for='(item,index) in diseaseColumn'  :prop="item"  :label='diseaseHeader[index]' align="center"></el-table-column>
									<el-table-column v-for='(item,index) in diseaseColumn'  :prop="item" :label="index==0?diseaseHeader[index]:''" :render-header="index==0?'': renderTableHeader" align="center"></el-table-column>
								</el-table>
								<el-table v-if="collectCode == 2" border :data="getDeviceReport" style="width: 100%" v-loading="loadingTwo" class="mt20" >
									<el-table-column v-if='getDeviceReport.length!=0' type="index" label="序号" align="center"></el-table-column>
@ -636,6 +638,19 @@
        </div>
        <!--模态框组件-->
        <vuedals></vuedals>
		<el-dialog
		  title="查看签约信息"
		  :visible.sync="dialogVisible"
		  width="70%">
		  <el-table  border :data="signatoryList" style="width: 100%" height="500"  class="mt20" >
		  	<template >
		  		<el-table-column  prop="hospitalName" label="签约社区医院" align="center"></el-table-column>
		  		<el-table-column  prop="doctorName" label="签约医生" align="center"></el-table-column>
		  		<el-table-column  prop="applyDate" label="签约时间" align="center"></el-table-column>
		  		<el-table-column  prop="signYear" label="签约年度" align="center"></el-table-column>
		  	</template>
		  </el-table>
		</el-dialog>
    </div>
	<script src="../../../js/FileSaver/FileSaver.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../js/vue.js" type="text/javascript" charset="utf-8"></script>
@ -652,6 +667,7 @@
    <script src="../../../component/common/vuedals.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/header-tab.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/header-prompt.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript" src="../../../api/sign_api.js"></script>
    <script src="../js/common.js" type="text/javascript" charset="utf-8"></script>
    <script src="../js/comprehensive-query.js" type="text/javascript" charset="utf-8"></script>
</body>

+ 27 - 0
app/statistics/html/sign-progress.html

@ -15,6 +15,11 @@
		<link href="../../../plugins/toastr/toastr.min.css" rel="stylesheet">
        <link rel="stylesheet" type="text/css" href="../../../css/element-ui.css"/>
		<link rel="stylesheet" type="text/css" href="../css/common.css" />
		<style type="text/css">
			.title{
				line-height: 40px;
			}
		</style>
	</head>
	<body style="margin: 0;">
@ -50,6 +55,28 @@
			</div>
			<!-- 折线图 -->
			<line-chart v-on:getlinedata="getNewLineData" lineid="lineChart" class="mlr8"></line-chart>
			
			<div class="mt20 plr10">
				<div class="c-f16 title plr10 c-333">签约年限占比</div>
				<div class="flex" style="width: 336px;display: flex;margin: auto;">
					<div id="mainTu" style="height: 200px;width: 200px;"></div>
					<div id="qianyueNXList" style="padding-top: 55px;">
						<div style="display: flex;margin-top: 10px;">
							<div style="height: 15px;width: 15px;margin-right: 10px;background: #0EBF97;margin-top: 2px;"></div>
							<div id='year1'>一年{{year1}}人</div>
						</div>
						<div style="display: flex;margin-top: 10px;">
							<div style="height: 15px;width: 15px;margin-right: 10px;background: #15AAE0;margin-top: 2px;"></div>
							<div id='year2'>两年{{year2}}人</div>
						</div>
						<div style="display: flex;margin-top: 10px;">
							<div style="height: 15px;width: 15px;margin-right: 10px;background: #935DF6;margin-top: 2px;"></div>
							<div id='year3'>三年{{year3}}人</div>
						</div>
					</div>
				</div>
			</div>
			
			<!-- 底部区域图 -->
			<area-data-panel class="mt20 mlr8" v-on:getnewdata="getAreaData"></area-data-panel>
			<!--模态框组件-->

+ 4 - 2
app/statistics/js/change-back.js

@ -134,7 +134,7 @@ function initData(vm) {
	vm.area = vm.userRole.code;
	vm.areaTitle = vm.userRole.name;
	var now = new Date();
	if(now.getMonth() >= 6) {
	if(now.getMonth() >= 6 || now.getFullYear()>=2023) {
		vm.chooseYear = now.getFullYear();
	} else {
		vm.chooseYear = now.getFullYear() - 1;
@ -295,12 +295,14 @@ function handleSecondPanelData(data, vm) {
		xDatas.push(xData);
		yDatas.push(yData);
	}
	
	
	EventBus.$emit("draw-line-chart", {
		panelName: labels[vm.index],
		quotaNames: names,
		xData: xDatas[0],
		yDatas: yDatas,
		colors: colors
		colors: colors,
	});
}

+ 240 - 11
app/statistics/js/comprehensive-query.js

@ -61,6 +61,7 @@ new Vue({
			  {label: '微信绑定明细', id:'41'},
			  {label: '居民积分明细', id:'42'},
			  {label: '入户访视明细', id:'43'},
			  {label: '康复下转明细', id:'44'},
			]
		}],
		handleNodeShow:1,
@ -169,6 +170,15 @@ new Vue({
			resident:'',
			doctorTwo:'',
		},
		form11:{
			patientName:'',
			status:'',
			hospitalCode:'',
			hospitalDoctor:'',
			orgCode:'',
			doctor:'',
			archiveStatus:'',
		},
		getHealthData:[],
		form8:{
			renew:'',
@ -188,7 +198,7 @@ new Vue({
					{id: "kfxzrs",label:'康复下转人数',code:'1',},
					{id: "kfxzrc",label:'康复下转人次',code:'1',},
					{id: "szrs",label:'上转人数',code:'1',},
					{id: "szrc",label:'上转人数',code:'1',},
					{id: "szrc",label:'上转人次',code:'1',},
				],
			},
			{
@ -226,6 +236,15 @@ new Vue({
		getDoorHeader:[],
		
		isCheck: false,
		deorsumvergence:[{value:'',label:'全部'}],
		rehabilitationHospital:[{value:'',label:'全部'}],
		archiveList:[{value:'',label:'全部'}],
		recoveryList:[],
		dialogVisible:false,
		signatoryList:[],
		tableKey:'',
		indicator:[],
		communityHospitals:[],
	},
	components: {
		vuedals: Vuedals.Component
@ -259,6 +278,112 @@ new Vue({
		}
	},
	methods: {
		renderTableHeader:function(h, { column, $index }) {
			 return h("div", [
					h("span", this.diseaseHeader[$index-1] + "  ", {
					  align: "center",
					  marginTop: "10px"
					}),
					h(
					  "el-popover",
					  {
						props: {
						  placement: "top-start",    // 一般 icon 处可添加浮层说明,浮层位置等属性
						  width: "100",
						  trigger: "hover"
						}
					  },
					  [
						h("p", this.indicator[$index-2], {
						  class: "text-align: center; margin: 0"
						}),
						h("i", {                            // 生成 i 标签 ,添加icon 设置 样式,slot 必填
						  class: "el-icon-question",
						  style: "color:#ccc,margin:18px,padding-top:10px",
						  slot: "reference"
						})
					  ]
					)
				  ])
		},
		// 获取康复下转明细 ---  下转状态
		deorsumvergenceStatusFunction:function(name) {
			var vm = this
			signAPI.getDictByDictName({name:name}).then(function(res){
			    if (res.status === 200) {
					if(name == 'rehabilitation_status') {
						res.list.forEach(function(v){
							vm.deorsumvergence.push({
								value:v.code,
								label:v.value,
							})
						})
					} 
					if(name == 'rehabilitation_hospital') {
						res.list.forEach(function(v){
							vm.rehabilitationHospital.push({
								value:v.code,
								label:v.value,
							})
						}) 
					} 
					if(name == 'archive_status') {
						res.list.forEach(function(v){
							vm.archiveList.push({
								value:v.code,
								label:v.value,
							})
						})
					}
			    }
			})
		},
		// 获取社区医院
		hospitalsByType:function() {
			var vm = this
			statisticAPI.hospitalsByType({
				type:1,code:'350200'
			}).then(function(res){
				if(res.status == 200){
					res.list.forEach(function(v){
						vm.communityHospitals.push({
							value:v.code,
							label:v.name,
						})
					})
				}
			}).catch(function(err){
				console.log(err,"Errr")
			})
		},
		// 康复下转操作
		operation:function(num,item) {
			var vm = this
			if(num != 2) {
				statisticAPI.synchronizePationSingle({id:item.id}).then(function(res){
					if(res.status == 200) {
						toastr.info("操作成功")
						this.tableKey = Math.random()
					}else{
						toastr.error(res.msg)
					}
				}).catch(function(err){
					console.log(err,"Errr")
				})
			}else{
				vm.signatoryList = []
				statisticAPI.getSignInfo({idcard:item.idcard}).then(function(res){
					if(res.status == 200) {
						if(res.data!=null) {
							vm.signatoryList.push(res.data)
						}
					}
				}).catch(function(err){
					console.log(err,"Errr")
				})
				this.dialogVisible = true
			}
		},
		getImgurl: function(url){
			return httpRequest.getImgUrl(url)
		},
@ -302,7 +427,7 @@ new Vue({
		},
		// 清除
		eliminateClick:function() {
			this.radio = '1'
			this.radio = this.handleNodeId==44?'2':'1'
			this.radio1 = ''
			this.radio2 = ''
			this.radio3 = ''
@ -361,6 +486,15 @@ new Vue({
				renew : ''
			}
			this.facilitySign = ''
			this.form11 = {
				patientName:'',
				status:'',
				hospitalCode:'',
				hospitalDoctor:'',
				orgCode:'',
				doctor:'',
				archiveStatus:'',
			}
			initData(this)
			// initTime(this)
			// initScope(this)
@ -467,16 +601,16 @@ new Vue({
			}
		},
		// 点击明细查询树形图
		handleNodeClick:function(name,data) {
		handleNodeClick:function(item) {
			var vm = this
			vm.handleNodeId = 0
			vm.derive = name.label
			if(data.id>=33) {      //明细查询以下
			vm.derive = item.label
			// if(data.id>=33) {     //明细查询以下
				vm.handleNodeShow = 2  //  明细查询tabs为2
				vm.tableHeader = []    //  选择统计的数组
				vm.analyseData = []    //  明细查询数组
			}
			vm.handleNodeId = data.data.id    //切换后的id
			// }
			vm.handleNodeId = item.id    //切换后的id
			vm.radio = '1'        //签约年度  --创建时间
			vm.radio1 = ''      //咨询分析咨询状态
			vm.radio2 = ''
@ -538,6 +672,15 @@ new Vue({
			this.form8 = {
				renew : ''
			}
			this.form11 = {
				patientName:'',
				status:'',
				hospitalCode:'',
				hospitalDoctor:'',
				orgCode:'',
				doctor:'',
				archiveStatus:'',
			}
			initTime(vm)      //时间初始化
			initScope(vm)    //数据范围初始化
			vm.currentPage = 1
@ -992,6 +1135,7 @@ new Vue({
			}
			return parameter
		},
		// 入户访视
		interview:function() {
			var vm = this
			vm.loadingTwo = true
@ -1007,6 +1151,49 @@ new Vue({
				}
			})
		},
		// 康复下转明细传参
		recoveryParameter:function() {
			var vm = this
			vm.searchJsonTime = vm.beforeReq()
			var parameter = {
				// signYear:vm.radio=='1'?vm.chooseYear:'',     //签约年度
				// team:vm.teamCode,     //团队
				// area:vm.areaCode=='350200'?'':vm.areaCode,   //地区
				// range:vm.rangeCode,      //数据范围(town区传值area,hospital医院传值hospital,team团队传值team) 
				
				startTime:vm.radio=='2'?vm.searchJsonTime.start:'',   //开始时间
				endTime:vm.radio=='2'?vm.searchJsonTime.end:'',    //结束时间
				size:vm.currentSize,
				page:vm.currentPage,
				patientName:vm.form11.patientName,
				status:vm.form11.status,
				hospitalCode:vm.form11.hospitalCode,
				orgCode:vm.form11.orgCode,
				hospitalDoctor:vm.form11.hospitalDoctor,
				doctor:vm.form11.doctor,
				archiveStatus:vm.form11.archiveStatus,
			}
			return parameter
		},
		// 康复下转
		recovery:function() {
			var vm = this
			vm.loadingTwo = true
			vm.lastAjax = "doctor/specialist/rehabilitation/rehabilitationPatientInfo"
			statisticAPI.rehabilitationPatientInfo(vm.recoveryParameter()).then(function(res){
				if(res.status == 200) {
					vm.loadingTwo = false
					res.detailModelList.forEach(function(v){
						v.sex = v.sex==1?'男':'女'
					})
					vm.recoveryList = res.detailModelList
					vm.datatotal = res.totalCount
				}else{
					vm.loadingTwo = false
					vm.$message.error(res.msg)
				}
			})
		},
		
		
		
@ -1035,9 +1222,25 @@ new Vue({
			vm.loadingTwo = true
			statisticAPI.getSpecialDiseaseReport(vm.getSpecialParameter()).then(function(res){
				if(res.status == 200) {
					vm.indicator = []
					res.data.column.forEach(function(v){
						if(v == 'kfxzrs') {
							vm.indicator.push('康复计划人数')
						}
						if(v == 'kfxzrc') {
							vm.indicator.push('康复计划数')
						}
						if(v == 'szrs') {
							vm.indicator.push('预约挂号人数')
						}
						if(v == 'szrc') {
							vm.indicator.push('预约挂号数')
						}
					})
					vm.loadingTwo = false
					vm.diseaseReport = res.data.list
					vm.diseaseColumn = res.data.column	
					vm.diseaseColumn = res.data.column
					// '康复计划人数','康复计划数','预约挂号人数','预约挂号数'
					vm.diseaseHeader = res.data.header
					vm.datatotal = res.data.list.length
				}else{
@ -1217,7 +1420,7 @@ new Vue({
			return {start:startDate,end:endDate,checked:checked.join(",")}
		},
		// 查询
		searchHandle:function(){
		searchHandle:function(status){
			// console.log(this.beforeReq())
			var vm = this
			vm.searchJsonTime = vm.beforeReq()
@ -1249,7 +1452,7 @@ new Vue({
				// 上门服务汇总
				vm.getDoorServerOrderReport()
			}else{
				vm.detailFunction(vm.handleNodeId)
				vm.detailFunction(vm.handleNodeId,status)
			}
		},
		getStatisticDataList:function(){
@ -1544,6 +1747,19 @@ new Vue({
						console.error(err)
					})
					 
				}else{vm.fullscreenLoading = false}
			}else if(vm.handleNodeId == 44) {
				// 康复下转导出
				if(vm.recoveryList.length!=0) {
					statisticAPI.exportRehabilitationPatientInfo(vm.recoveryParameter(),vm.derive+".xls").then(function(res){
						vm.fullscreenLoading = false
					})
					.catch(function(err){
						toastr.info(err)
						vm.fullscreenLoading = false
						console.error(err)
					})
					 
				}else{vm.fullscreenLoading = false}
			}else if(vm.collectCode == 1) {
				// 专病汇总
@ -1603,7 +1819,7 @@ new Vue({
			});
			$("#main").removeClass("c-hide");
		},
		detailFunction:function(id) {
		detailFunction:function(id,status) {
			var vm = this
			window.ajaxInsArr[vm.lastAjax]&&window.ajaxInsArr[vm.lastAjax].abort()
			if(id == 33) {
@ -1639,8 +1855,21 @@ new Vue({
			}else if(id == 43) {
				// 入户访视
				vm.interview()
			}else if(id == 44) {
				// 康复下转
				vm.radio = '2'
				vm.recovery()
				if(!status) {
					vm.pullDown()
				}
			}
		},
		pullDown:function() {
			this.deorsumvergenceStatusFunction('archive_status') //档案状态
			this.deorsumvergenceStatusFunction('rehabilitation_status') //下转状态
			this.deorsumvergenceStatusFunction('rehabilitation_hospital') //下转医院
			this.hospitalsByType()
		},
		// 下一页  上一页
      	handleCurrentChange:function(val) {
			var vm = this

+ 114 - 1
app/statistics/js/sign-progress.js

@ -35,11 +35,124 @@ new Vue({
		yearHtml: "",
		contentHtml: "",
        isloading:false,  //加载中
		year1:'0',
		year2:'0',
		year3:'0',
	},
	components: {
		vuedals: Vuedals.Component
	},
	methods: {
		lowlevelTotal:function(){
			var vm = this
			var url = "/statistics/leveltwo_increment"
			    params = {
			        area:vm.area, 
			        level:vm.level, 
			        endDate: vm.endDate,
					index:187,
					slaveKey2:vm.lowCode,
			    };
			httpRequest.get(url,{data:params}).then(function(res){
				if(res.status == 200) {
					var index187 = res.data.index_187
					index187.forEach(function(t){
						t.value = t.amount
						t.name = '签约' + t.name
						if(t.code == 1) {
							vm.year1 = t.value
						}else if(t.code == 2) {
							vm.year2 = t.value
						}else if(t.code == 3) {
							vm.year3 = t.value
						}
					})
					var myChart = echarts.init(document.getElementById('mainTu'));
					var option;
					option = {
						color:['#0EBF97','#15AAE0','#935DF6'],
						series: [
							{
								type: 'pie',
								radius: ['55%', '70%'],
								avoidLabelOverlap: false,
								center:[80,'50%'],
								label: {
									normal: {
										show: false,
										position: 'center'
									}
								},
								emphasis: {
									label: {
										show: true,
										fontSize: 14,
										formatter: function(e, e1, e2, e3){
											var data = e.data
											return ['{a|'+data.name+'}', '{b|'+ data.rate +'%}'].join('\n')
										},
										rich: {
											a: {
												lineHeight: 20
											},
											b: {
												lineHeight: 20
											},
										}
									}
								},
								data:index187
							}
						]
					};
					
					myChart.setOption(option);
					myChart.on('click', function (params) {
						for(var i=0; i<3; i++){
							if(i != params.dataIndex){
								myChart.dispatchAction({
								    type: 'downplay',
								    dataIndex: i
								});
							} else {
								myChart.dispatchAction({
								    type: 'highlight',
								    dataIndex: i
								});
							}
						}
					});
					$('#qianyueNXList>div').on('click', function(){
						myChart.dispatchAction({
						    type: 'downplay',
						    dataIndex: [0,1,2]
						});
						myChart.dispatchAction({
						    type: 'highlight',
						    dataIndex: $(this).index(),
						});
					})
					
				}
			})
			return
			sendGet(url, params, null, function(res){
			    if(res.status == 200){
					if(res.data&&res.data.index_187) {
						$('#qianyueMap').show()
						$('#no_result_wrap').hide()
						var index187 = res.data.index_187
						
						
					}else{
						$('#qianyueMap').hide()
						$('#no_result_wrap').show()
					}
			    }else{
			        mui.toast(res.msg);
			    }
			}, true);
		},
		getNewLineData: function(arg) {
			this.selectedDateType = arg.dateType;
			loadData([1], this);
@ -92,7 +205,7 @@ new Vue({
			lowCode: this.lowCode,
			analysisType: this.analysisType
		});
		this.lowlevelTotal()
		//设置监听器, 监听折线图日期变化
		var vm = this;
		//监听后退按钮的操作