Sfoglia il codice sorgente

慢阻肺统计报表

leiyu 1 anno fa
parent
commit
323d6cebac

+ 74 - 3
api/statistics-api.js

@ -237,10 +237,48 @@
		findHospitalEntryCount: function(data){
		    return httpRequest.get("copd/statistics/findHospitalEntryCount", {data: data}); 
		},
		//慢阻肺患者查询
		getCopdPatientInfoList: function(data){
			return httpRequest.get("copd/statistics/getCopdPatientInfoList", {data: data}); 
		},
		//慢阻肺入组进度表
		getCopdEntryData: function(data){
		    return httpRequest.get("copd/statistics/getCopdEntryData", {data: data}); 
		},
		
		//慢阻肺入组明细
		getCopdEntryCommunityData: function(data){
		    return httpRequest.get("copd/statistics/getCopdEntryCommunityData", {data: data}); 
		},
		
		
		
		//慢阻肺随访进度表
		getCopdFollowData: function(data){
			return httpRequest.get("copd/statistics/getCopdFollowData", {data: data}); 
		},
		//慢阻肺随访明细表-PC
		getCopdFollowDetailData: function(data){
			return httpRequest.get("copd/statistics/getCopdFollowDetailData", {data: data}); 
		},
		//阻肺呼吸训练数据【获取慢阻肺的呼吸的列表数据】
		findCopdHealthInfoList: function(data){
			return httpRequest.get("copd/statistics/findCopdHealthInfoList", {data: data}); 
		},
		// 一个患者所有的呼吸数据
		findCopdHealthInfoByCode: function(data){
			return httpRequest.get("copd/statistics/findCopdHealthInfoByCode", {data: data}); 
		},
		// 获取个案的随访信息【随访计划】
		findCopdPatientFollowList: function(data){
			return httpRequest.get("copd/statistics/findCopdPatientFollowList", {data: data}); 
		},
		// 综合分析导出
		statisticsExportExport: function(data, filename){
		    return httpRequest.downLoadFileForAjax("statisticsExport/export", filename, data);
@ -334,8 +372,41 @@
		exportXxzxMedicalHistoryList: function(data, filename){
			return httpRequest.downLoadFileForAjax("statisticsExport/exportXxzxMedicalHistoryList", filename, data);
		},
		
		// 慢阻肺入组进度表-PC-导出
		exportCopdEntryData: function(data, filename){
			return httpRequest.downLoadFileForAjax("copd/statistics/exportCopdEntryData", filename, data);
		},
		// 慢阻肺入组明细表-PC-导出
		exportCopdEntryCommunityData: function(data, filename){
			return httpRequest.downLoadFileForAjax("copd/statistics/exportCopdEntryCommunityData", filename, data);
		},
		//慢阻肺随访进度表-PC-导出
		exportCopdFollowData: function(data, filename){
			return httpRequest.downLoadFileForAjax("copd/statistics/exportCopdFollowData", filename, data);
		},
		 
		//慢阻肺随访明细表-PC-导出
		exportCopdFollowDetailData: function(data, filename){
			return httpRequest.downLoadFileForAjax("copd/statistics/exportCopdFollowDetailData", filename, data);
		},
		// 呼吸数据导出
		exoprtCopdHealthInfoList: function(data, filename){
			return httpRequest.downLoadFileForAjax("copd/statistics/exoprtCopdHealthInfoList", filename, data);
		},
		 // 慢阻肺患者查询导出
		 exportCopdPatientInfoList: function(data, filename){
			return httpRequest.downLoadFileForAjax("copd/statistics/exportCopdPatientInfoList", filename, data);
		},
		
		//导出随访计划
		exportConclusionList: function(data, filename){
			return httpRequest.downLoadFileForAjax("doctor/copd/exportConclusionList", filename, data);
		},
    }
    exports.statisticAPI = statisticAPI;

+ 8 - 6
app/statistics/html/comprehensive-query.html

@ -62,7 +62,7 @@
						<div class="resetSelected" v-if="tabsId != 2"> <div @click="reset">重置已选</div>  </div>
		        	</div>
		        	<div class="ui-col-1 bgc-fff p20" style="min-width: 900px;">
						<template v-if='handleNodeId != 46&& handleNodeId != 47&&handleNodeId!=48&&handleNodeId!=49&&handleNodeId!=50&&handleNodeId!=51&&handleNodeId!=52&&handleNodeId!=53' >
						<template v-if='handleNodeId != 46&& handleNodeId != 47&&handleNodeId!=48&&handleNodeId!=49&&handleNodeId!=50&&handleNodeId!=51&&handleNodeId!=52&&handleNodeId!=53&&handleNodeId!=54' >
							<div class="searchDiv" v-if="tabsId!=5">
								<template v-if="handleNodeId!=44&&expertFamilyIdType != 'zhuanke1'&&handleNodeId!=45">
									<el-radio v-model="radio" label="1">按签约年度:</el-radio>
@ -430,7 +430,7 @@
						
		        		<div class="searchDiv mt10" v-if="tabsId!=5">
							<template v-if="handleNodeId!=44&&handleNodeId!=46&&handleNodeId != 47&&handleNodeId!=48&&handleNodeId!=49&&handleNodeId!=50&&handleNodeId!=51&&handleNodeId!=52&&handleNodeId!=53">
							<template v-if="handleNodeId!=44&&handleNodeId!=46&&handleNodeId != 47&&handleNodeId!=48&&handleNodeId!=49&&handleNodeId!=50&&handleNodeId!=51&&handleNodeId!=52&&handleNodeId!=53&&handleNodeId!=54">
								<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>
@ -453,7 +453,7 @@
									<el-option v-for="(item , index) in specHosList" :key="index" :label="item.name" :value="item.code"></el-option>
								</el-select>
							</template>
							<template v-if="handleNodeId!=46&&handleNodeId != 47&&handleNodeId!=48&&handleNodeId!=49&&handleNodeId!=50&&handleNodeId!=51&&handleNodeId!=52&&handleNodeId!=53">
							<template v-if="handleNodeId!=46&&handleNodeId != 47&&handleNodeId!=48&&handleNodeId!=49&&handleNodeId!=50&&handleNodeId!=51&&handleNodeId!=52&&handleNodeId!=53&&handleNodeId!=54">
								<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>
@ -755,13 +755,14 @@
									</template>
								</el-table>
								<mzf-worksheet v-if="handleNodeId==46"></mzf-worksheet>
								<!-- <mzf-hzcx v-if="handleNodeId==47"></mzf-hzcx>
								<mzf-hzcx v-if="handleNodeId==47"></mzf-hzcx>
								<mzf-rzjd v-if="handleNodeId==48"></mzf-rzjd>
								<mzf-rzmx v-if="handleNodeId==49"></mzf-rzmx>
								<mzf-sfjd v-if="handleNodeId==50"></mzf-sfjd>
								<mzf-sfzmx v-if="handleNodeId==51"></mzf-sfzmx> -->
								<mzf-sfzmx v-if="handleNodeId==51"></mzf-sfzmx>
								<mzf-v1rzreport v-if="handleNodeId==52"></mzf-v1rzreport>
								<zbfz-detail v-if="handleNodeId==53"></zbfz-detail>
								<mzf-hxsj v-if="handleNodeId==54"></mzf-hxsj>
							</div>
							<div v-if="handleNodeShow == 3">
								<el-table v-if="collectCode == 1" border :data="diseaseReport" style="width: 100%" v-loading="loadingTwo" class="mt20" >
@ -803,7 +804,7 @@
							</div>
							<template v-if="handleNodeId!=46&&handleNodeId!=47&&handleNodeId!=48&&handleNodeId!=49&&handleNodeId!=50&&handleNodeId!=51&&handleNodeId!=52&&handleNodeId!=53">
							<template v-if="handleNodeId!=46&&handleNodeId!=47&&handleNodeId!=48&&handleNodeId!=49&&handleNodeId!=50&&handleNodeId!=51&&handleNodeId!=52&&handleNodeId!=53&&handleNodeId!=54">
								<div class="c-t-right mt20">
									<el-pagination 
									  @current-change="handleCurrentChange"
@ -861,6 +862,7 @@
    <script src="../js/mzfSfzmx.js" type="text/javascript" charset="utf-8"></script>
    <script src="../js/mzfV1rzReport.js" type="text/javascript" charset="utf-8"></script>
    <script src="../js/zbfzDetail.js" type="text/javascript" charset="utf-8"></script>
    <script src="../js/mzfHxsj.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>

+ 172 - 0
app/statistics/html/mzfHxsj.html

@ -0,0 +1,172 @@
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>慢阻肺呼吸训练数据</title>
    <meta name="author" content="yihu.com" />
    <meta name="format-detection" content="telephone=no" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"
    />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
    <link rel="stylesheet" type="text/css" href="../../../css/font-awesome.min.css" />
    <link rel="stylesheet" type="text/css" href="../../../css/style.min.css" />
    <link rel="stylesheet" type="text/css" href="../../../css/cross.css" />
    <link rel="stylesheet" type="text/css" href="../../../css/flex.css" />
    <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/mzfWorksheet.css" />
</head>
<style>
		
</style>
<body style="margin: 0;overflow-x: auto;" v-cloak>
    <div id="main" class="">
       <div class="ui-col-1 bgc-fff" style="min-width: 900px;">
		   <div class="flexibleBox">
			   <div class="maxBox">
				   <div class="inquireTime">查询时间 
						<el-date-picker
						v-model="startTime"
						type="date"
						placeholder="选择日期"
						:picker-options="setDisabled"
						@change='startTimeChange'>
						</el-date-picker> ~
						<el-date-picker
						v-model="endTime"
						type="date"
						placeholder="选择日期"
						:picker-options="setDisabled"
						@change='endTimeChange'>
						</el-date-picker>
					</div>
					<div class="mt10">
						<span class="mr10">地区</span>
						<el-select class="mr10" v-model="tertiary" placeholder="请选择" size="mini" multiple @change="tertiaryChange"  @remove-tag="clearTertiary">
							<el-option
							  v-for="item in tertiaryHospitalsData"
							  :key="item.areaCode"
							  :label="item.areaName"
							  :value="item.areaCode">
							</el-option>
						</el-select>
						<span class="mr10">三级医院</span>
						<el-select class="mr10" v-model="communityHospitals" placeholder="请选择" size="mini" multiple @change="comChange" @remove-tag="clearCommunityHospitals">
							<el-option
								v-for="item in communityHospitalsData"
								:key="item.hospitalCode"
								:label="item.hospitalName"
								:value="item.hospitalCode">
							</el-option>
						</el-select>
						<span class="mr10">社区医院</span>
							<el-select v-model="group" placeholder="请选择" size="mini" multiple clearable @change="groChange" @remove-tag="clearGroup" >
								<el-option
								  v-for="item in groupingData"
								  :key="item.hospitalCode"
								  :label="item.hospitalName"
								  :value="item.hospitalCode">
								</el-option>
							  </el-select>
					</div>
				   <el-form  class="handleNodeId-40 flex mt10">
						<el-form-item label="管理状态">
							<el-select v-model="region" placeholder="请选择" size="mini">
								<el-option
								  v-for="item in regionData"
								  :key="item.value"
								  :label="item.label"
								  :value="item.value">
								</el-option>
							  </el-select>
						</el-form-item>
						<el-form-item label="患者姓名" class="ml10">
						<el-input v-model="patientName"  size="mini" width="400" placeholder="请输入患者姓名"></el-input>
						</el-form-item>
						<div class="selectedButton ml10 mt10" class="dept-select formLeft" style="width: 300px;line-height: 38px;">
							<el-button type="primary" size="mini" @click="confirm">查询</el-button>
							<el-button type="ff9526" size="mini" @click="exportHandle">导出</el-button>
							<el-button type="info" size="mini"  @click="cancel">取消</el-button>
					</div>
				</el-form>
			   </div>
		   </div>
			<el-table  border :data="tableData"  style="width: 100%" v-loading="loadingTwo" height='650' class="mt20" >
				<template >
					<el-table-column  type="index" width='50' label="序号" align="center"></el-table-column>
					<el-table-column prop="patientCode" label="患者ID" align="center">
					</el-table-column>
					<el-table-column  prop="name"  label="患者姓名" align="center"></el-table-column>
					<el-table-column prop="entryTime" label="入组时间" align="center">
					</el-table-column>
					<el-table-column  prop="doctorName" label="管理医生" align="center"></el-table-column>
					<el-table-column  prop="startLoad" label="起始训练组抗" align="center"></el-table-column>
					<el-table-column  prop="targetLoad" label="当前训练组抗" align="center"></el-table-column>
					<el-table-column  prop="groupDays" label="入组天数" align="center"></el-table-column>
					<el-table-column  prop="compliance" label="训练依从性(有效训练总天数/入组天数*100%)" align="center"></el-table-column>
					<el-table-column  label="操作" align="center">
						<template slot-scope="scope">
							<el-button @click="showInfo(scope.row)" type="text" size="small">查看</el-button>
						</template>
					</el-table-column>
				</template>
			</el-table>
			<div class="c-t-right mt20">
				<el-pagination 
				  @current-change="handleCurrentChange"
				  :current-page.sync="currentPage"
				  :page-size="currentSize"
				  layout="total, prev, pager, next, jumper"
				  :total="datatotal">
				</el-pagination>
			</div>
       </div>
	   <el-dialog
	   title="个人详情"
	   :visible.sync="dialogVisible"
	   width="70%">
	   <el-table v-loading="loadingTwo"  border :data="dataInfo" style="width: 100%" height="500"  class="mt20" >
			<!-- <el-table-column  type="index" width='50'  label="序号" align="center"></el-table-column> -->
			 <el-table-column  prop="userName" label="患者姓名" align="center"></el-table-column>
			 <el-table-column  prop="groupTime" label="报告时间列表" align="center"></el-table-column>
			 <el-table-column  prop="groupDays" label="当日训练组数" align="center"></el-table-column>
			 <el-table-column  prop="startLoad" label="当前训练组数" align="center"></el-table-column>
			 <el-table-column  prop="compliance" label="本次最佳压力(最大吸气肌力MIP)" align="center"></el-table-column>
			 <el-table-column  label="操作" align="center">
				<template slot-scope="scope">
					<el-button @click="btn(scope.row)" type="text" size="small">pdf报告</el-button>
				</template>
			</el-table-column>
	   </el-table>
	 </el-dialog>
	 <el-dialog :visible.sync="showPdf" width="70%" height="600px">
		<iframe :src="url" frameborder="0" width="100%" height="600px"></iframe>
	 </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>
    <script src="../../../js/jquery-2.2.4.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../js/element-ui.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../plugins/toastr/toastr.min.js"></script>
    <script src="../../../js/es6-promise.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../js/underscore.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../js/util.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../api/http-request.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../api/home-api.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../api/statistics-api.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/common/event-bus.js"></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/mzfHxsj.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>

+ 131 - 132
app/statistics/html/mzfHzcx.html

@ -27,154 +27,153 @@
    <div id="main" class="">
       <div class="ui-col-1 bgc-fff" style="min-width: 900px;">
		   <div class="flexibleBox">
			   <div class="flex maxBox">
				   <div class="title">已选</div>
				   <div class="flex selectedBox">
						<div class="selected" v-for="(item,index) in list" :key="index">
							{{item.type==1?'地区':item.type==2?'三级医院':item.type==3?'社区医院':item.type==4?'分组':item.type==5?'管理状态':'时间'}}:{{item.label}} <i class="el-icon-circle-close" @click="deleteClick(item)"></i>
						</div>
				   </div>
				   <div class="selectedButton">
						<el-button type="primary" size="mini" @click="confirm">确定</el-button>
						<el-button type="ff9526" size="mini" @click="exportHandle">导出</el-button>
						<el-button type="info" size="mini"  @click="cancel">取消</el-button>
				   </div>
			   </div>
			   <div class="inquireTime">查询时间 
					<el-date-picker
					  v-model="startTime"
					  type="date"
					  placeholder="选择日期"
					  :picker-options="setDisabled"
					  @change='startTimeChange'>
					</el-date-picker> ~
					<el-date-picker
					  v-model="endTime"
					  type="date"
					  placeholder="选择日期"
					  :picker-options="setDisabled"
					  @change='endTimeChange'>
					</el-date-picker>
			   </div>
			   <div class="flex maxBox mt10">
				   <div class="flex selectedBoxTwo">
						<div class="selectedBoxTwoTitle">地区</div>
						<el-checkbox-group v-model="regionList" @change="change">
							<el-checkbox v-for="(t,x) in regionData" :key="x" :label="t" :key="t.label">{{t.label}}</el-checkbox>
						</el-checkbox-group>
				   </div>
			   </div>
			   <template v-if="show">
				   <div class="flex maxBox mt10">
					   <div class="titleHospital">三级医院</div>
					   <div class="flex selectedHospital" :style="showTwo?'overflow: inherit;height: auto;':'overflow: hidden;height:20px;'">
							<el-checkbox-group v-model="regionListList" @change="change">
								<el-checkbox v-for="(m,i) in tertiaryHospitalsData" :key="i" :label="m" :key="m.label">{{m.label}}</el-checkbox>
							</el-checkbox-group>
					   </div>
					   <div class="selectedButtonTwo" @click="showTwo = !showTwo">
						   {{!showTwo?'更多选项':'收起'}}
						   <i class="el-icon-arrow-down" v-if="!showTwo"></i><i class="el-icon-arrow-up" v-if="showTwo"></i>
					   </div>
				   </div>
				   <div class="flex maxBox mt10">
					   <div class="titleHospital">社区医院</div>
					   <div class="flex selectedHospital" :style="showThree?'overflow: inherit;height: auto;':'overflow: hidden;height:20px;'">
							<el-checkbox-group v-model="communityHospitalsList" @change="change">
								<el-checkbox v-for="(q,n) in communityHospitalsData" :key="n" :label="q" :key="q.label">{{q.label}}</el-checkbox>
							</el-checkbox-group>
					   </div>
					   <div class="selectedButtonTwo" @click="showThree = !showThree">
						   {{!showThree?'更多选项':'收起'}}
						   <i class="el-icon-arrow-down" v-if="!showThree"></i><i class="el-icon-arrow-up" v-if="showThree"></i>
					   </div>
				   </div>
				   <div class="flex maxBox mt10">
					   <div class="flex selectedBoxTwo">
							<div class="selectedBoxTwoTitle">分组</div>
							 <el-checkbox-group v-model="groupingList" @change="change">
								<el-checkbox v-for="(y,d) in groupingData" :key="d" :label="y" :key="y.label">{{y.label}}</el-checkbox>
							</el-checkbox-group>
					   </div>
				   </div>
				   <div class="flex maxBox mt10">
					   <div class="flex selectedBoxTwo">
						   <div class="selectedBoxTwoTitle">管理状态</div>
							<el-checkbox-group v-model="administrationStatusList" @change="change">
								<el-checkbox v-for="(k,e) in administrationStatusData" :key="e" :label="k" :key="k.label">{{k.label}}</el-checkbox>
							</el-checkbox-group>
			   <div class="maxBox">
				   	<div class="inquireTime">查询时间 
						<el-date-picker
						v-model="startTime"
						type="date"
						placeholder="选择日期"
						:picker-options="setDisabled"
						@change='startTimeChange'>
						</el-date-picker> ~
						<el-date-picker
						v-model="endTime"
						type="date"
						placeholder="选择日期"
						:picker-options="setDisabled"
						@change='endTimeChange'>
						</el-date-picker>
					</div>
					<div class="mt10">
						<span class="mr10">地区</span>
						<el-select class="mr10" v-model="tertiary" placeholder="请选择" size="mini" multiple @change="tertiaryChange"  @remove-tag="clearTertiary">
							<el-option
							  v-for="item in tertiaryHospitalsData"
							  :key="item.areaCode"
							  :label="item.areaName"
							  :value="item.areaCode">
							</el-option>
						  </el-select>
				
						<span class="mr10 ">三级医院</span>
						<el-select class="mr10" v-model="communityHospitals" placeholder="请选择" size="mini" multiple @change="comChange" @remove-tag="clearCommunityHospitals">
							<el-option
							  v-for="item in communityHospitalsData"
							  :key="item.hospitalCode"
							  :label="item.hospitalName"
							  :value="item.hospitalCode">
							</el-option>
						</el-select>
				
						<span class="mr10">社区</span>
						<el-select class="mr10" v-model="group" placeholder="请选择" size="mini" multiple @change="groChange" @remove-tag="clearGroup" >
							<el-option
							  v-for="item in groupingData"
							  :key="item.hospitalCode"
							  :label="item.hospitalName"
							  :value="item.hospitalCode">
							</el-option>
						</el-select>
					</div>
					<el-form  class="handleNodeId-40 flex mt10">
						<el-form-item label="管理状态">
							<el-select v-model="region" placeholder="请选择" size="mini">
								<el-option
								  v-for="item in regionData"
								  :key="item.value"
								  :label="item.label"
								  :value="item.value">
								</el-option>
							  </el-select>
						</el-form-item>
						<el-form-item label="阶段" class="ml10">
							<el-select v-model="stageType" placeholder="请选择" size="mini">
								<el-option
									v-for="item in stageData"
									:key="item.value"
									:label="item.label"
									:value="item.value">
								</el-option>
							</el-select>
						</el-form-item>
						<el-form-item label="患者姓名" class="ml10">
						<el-input v-model="patientName"  size="mini" width="400" placeholder="请输入患者姓名"></el-input>
						</el-form-item>
						<div class="selectedButton ml10 mt10" class="dept-select formLeft" style="width: 300px;line-height: 38px;">
							<el-button type="primary" size="mini" @click="confirm">查询</el-button>
							<el-button type="ff9526" size="mini" @click="exportHandle">导出</el-button>
							<el-button type="info" size="mini"  @click="cancel">取消</el-button>
					   </div>
				   </div>
			   </template>
			   <div class="more" @click="show = !show">{{!show?'更多选项':'收起'}}<i class="el-icon-arrow-down" v-if="!show"></i><i class="el-icon-arrow-up" v-if="show"></i></div>
					</el-form>
			   </div>
		   </div>
		   
		   
			<el-table  border :data="mzfHzcxData" style="width: 100%" v-loading="loadingTwo" height='650' class="mt20" >
			<el-table  border :data="tableData"  style="width: 100%" v-loading="loadingTwo" height='650' class="mt20" >
				<template >
					<el-table-column prop="name" label="患者姓名" align="center">
					<el-table-column  type="index" label="序号" align="center" width="50"></el-table-column>
					<el-table-column  prop="name"  label="患者姓名" align="center"></el-table-column>
					<el-table-column prop="groupScreeningCode" label="受试者编号" align="center">
					</el-table-column>
					<el-table-column  prop="age" label="年龄" align="center">
					</el-table-column>
					<el-table-column  prop="" label="性别" align="center">
						<template slot-scope="scope">
							<span>{{ scope&&scope.row.sex == 1 ? '男' : '女' }}</span>
						</template>
					</el-table-column>
					<el-table-column  prop="name"  label="受试者编号" align="center"></el-table-column>
					<el-table-column prop="name" label="年龄" align="center">
					<el-table-column  prop="idcard"" label="身份证" align="center"></el-table-column>
					<el-table-column  prop="mobile"" label="手机号" align="center"></el-table-column>
					<el-table-column  prop="ssc" label="社保卡号" align="center"></el-table-column>
					<el-table-column  prop="communityHospitalName" label="关联社区医院" align="center"></el-table-column>
					<el-table-column  prop="communityDoctorName" label="关联社区医生" align="center"></el-table-column>
					<el-table-column  prop="stageName" label="管理状态" align="center">
					</el-table-column>
					<el-table-column  prop="name" label="性别" align="center"></el-table-column>
					<el-table-column  prop="name"  label="身份证" align="center"></el-table-column>
					<el-table-column  prop="name" label="手机号" align="center"></el-table-column>
					<el-table-column  prop="name" label="社保卡号" align="center"></el-table-column>
					<el-table-column prop="name" label="关联社区医院" align="center"></el-table-column>
					<el-table-column prop="name" label="关联社区医生" align="center"></el-table-column>
					<el-table-column prop="name" label="管理状态" align="center"></el-table-column>
					<el-table-column prop="name" label="分组" align="center"></el-table-column>
					<el-table-column prop="name" label="添加时间" align="center"></el-table-column>
					<el-table-column prop="name" label="第一次纳排时间" align="center"></el-table-column>
					<el-table-column prop="name" label="入组时间" align="center"></el-table-column>
					
					<el-table-column  prop="groupScreeningName" label="分组" align="center"></el-table-column>
					<el-table-column  prop="copdCreatTime"" label="添加时间" align="center"></el-table-column>
					<el-table-column  prop="create_time" label="第一次纳排时间" align="center"></el-table-column>
					<el-table-column  prop="entryTime" label="入组时间" align="center"></el-table-column>
					<el-table-column  label="操作" align="center">
						<template slot-scope="scope">
							<div class="operate">
								<span @click="showSfjh(1, )">随访计划</span>
								<span @click="showSfjh(2, )">随访记录</span>
							</div>
							<el-button @click="showInfo(scope.row)" type="text" size="small">管理详细过程</el-button>
						</template>
					</el-table-column>
				</template>
			</el-table>
			<div class="c-t-right mt20">
				<el-pagination 
				  @current-change="handleCurrentChange"
				  :current-page.sync="currentPage"
				  :page-size="currentSize"
				  layout="total, prev, pager, next, jumper"
				  :total="datatotal">
				</el-pagination>
			</div>
			<template>
				<div class="c-t-right mt20 block" width="100%">
					<el-pagination 
					  @current-change="handleCurrentChange"
					  :current-page.sync="currentPage"
					  :page-size="currentSize"
					  :pager-count="10"
					  layout="total, prev, pager, next, jumper"
					  :total="datatotal">
					</el-pagination>
				</div>
			</template>
       </div>
	   <el-dialog
	   :title="num==1 ? '查看随访计划' : '查看随访记录'"
	   title="管理详细过程"
	   :visible.sync="dialogVisible"
	   width="70%">
	   <el-table v-if="num==1" v-loading="loadingTwo"  border :data="data" style="width: 100%" height="500"  class="mt20" >
			<el-table-column  type="index" width='50'  label="序号" align="center"></el-table-column>
			 <el-table-column  prop="" label="随访计划" align="center"></el-table-column>
			 <el-table-column  prop="" label="随访计划时间" align="center"></el-table-column>
			 <el-table-column  prop="" label="随访状态" align="center"></el-table-column>
			 <el-table-column  prop="" label="随访提交时间" align="center"></el-table-column>
			 <el-table-column  prop="" label="审核时间" align="center"></el-table-column>
			 <el-table-column  prop="" label="稽查时间" align="center"></el-table-column>
	   </el-table>
	   <el-table v-if="num ==2" v-loading="loadingTwo" border :data="data" style="width: 100%" height="500"  class="mt20" >
			<el-table-column  type="index" width='50'  label="序号" align="center"></el-table-column>
			<el-table-column  prop="" label="随访计划" align="center"></el-table-column>
			<el-table-column  prop="" label="随访表单" align="center"></el-table-column>
	   <el-table v-loading="loadingTwo"  border :data="dataInfo" style="width: 100%" height="500"  class="mt20" >
			 <el-table-column  type="index" width='50' label="序号" align="center"></el-table-column>
			 <el-table-column  prop="visit_count" label="随访计划" align="center"></el-table-column>
			 <el-table-column  prop="followup_plan_date" label="随访计划时间" align="center"></el-table-column>
			 <el-table-column  prop="statusName" label="随访状态" align="center"></el-table-column>
			 <el-table-column  prop="create_time" label="随访提交时间" align="center"></el-table-column>
			 <el-table-column  prop="examine_time" label="审核时间" align="center"></el-table-column>
			 <el-table-column  prop="check_time" label="稽查时间" align="center"></el-table-column>
			 <el-table-column  label="操作" align="center">
				<template slot-scope="scope">
					<el-button @click="showJl(scope.row)" type="text" size="small"> 随访记录</el-button>
				</template>
			</el-table-column>
	   </el-table>
	   <div class="c-t-right mt20">
			<el-pagination 
			@current-change="handleCurrentChange"
			:current-page.sync="currentPage"
			:page-size="currentSize"
			layout="total, prev, pager, next, jumper"
			:total="datatotal">
			</el-pagination>
		</div>
	 </el-dialog>
    </div>
	<script src="../../../js/FileSaver/FileSaver.js" type="text/javascript" charset="utf-8"></script>

+ 37 - 90
app/statistics/html/mzfRzjd.html

@ -28,19 +28,7 @@
       <div class="ui-col-1 bgc-fff" style="min-width: 900px;">
		   <div class="flexibleBox">
			   <div class="flex maxBox">
				   <div class="title">已选</div>
				   <div class="flex selectedBox">
						<div class="selected" v-for="(item,index) in list" :key="index">
							{{item.type==1?'地区':item.type==2?'三级医院':item.type==3?'社区医院':item.type==4?'分组':item.type==5?'管理状态':'时间'}}:{{item.label}} <i class="el-icon-circle-close" @click="deleteClick(item)"></i>
						</div>
				   </div>
				   <div class="selectedButton">
						<el-button type="primary" size="mini" @click="confirm">确定</el-button>
						<el-button type="ff9526" size="mini" @click="exportHandle">导出</el-button>
						<el-button type="info" size="mini"  @click="cancel">取消</el-button>
				   </div>
			   </div>
			   <div class="inquireTime">查询时间 
				   <div class="inquireTime">查询时间 
					<el-date-picker
					  v-model="startTime"
					  type="date"
@ -55,154 +43,113 @@
					  :picker-options="setDisabled"
					  @change='endTimeChange'>
					</el-date-picker>
			   </div>
			   <div class="flex maxBox mt10">
				   <div class="flex selectedBoxTwo">
						<div class="selectedBoxTwoTitle">地区</div>
						<el-checkbox-group v-model="regionList" @change="change">
							<el-checkbox v-for="(t,x) in regionData" :key="x" :label="t" :key="t.label">{{t.label}}</el-checkbox>
						</el-checkbox-group>
					</div>
				   <div class="selectedButton">
						<el-button type="primary" size="mini" @click="confirm">查询</el-button>
						<el-button type="ff9526" size="mini" @click="exportHandle">导出</el-button>
						<!-- <el-button type="info" size="mini"  @click="cancel">取消</el-button> -->
				   </div>
			   </div>
			   <template v-if="show">
				   <div class="flex maxBox mt10">
					   <div class="titleHospital">三级医院</div>
					   <div class="flex selectedHospital" :style="showTwo?'overflow: inherit;height: auto;':'overflow: hidden;height:20px;'">
							<el-checkbox-group v-model="regionListList" @change="change">
								<el-checkbox v-for="(m,i) in tertiaryHospitalsData" :key="i" :label="m" :key="m.label">{{m.label}}</el-checkbox>
							</el-checkbox-group>
					   </div>
					   <div class="selectedButtonTwo" @click="showTwo = !showTwo">
						   {{!showTwo?'更多选项':'收起'}}
						   <i class="el-icon-arrow-down" v-if="!showTwo"></i><i class="el-icon-arrow-up" v-if="showTwo"></i>
					   </div>
				   </div>
				   <div class="flex maxBox mt10">
					   <div class="titleHospital">社区医院</div>
					   <div class="flex selectedHospital" :style="showThree?'overflow: inherit;height: auto;':'overflow: hidden;height:20px;'">
							<el-checkbox-group v-model="communityHospitalsList" @change="change">
								<el-checkbox v-for="(q,n) in communityHospitalsData" :key="n" :label="q" :key="q.label">{{q.label}}</el-checkbox>
							</el-checkbox-group>
					   </div>
					   <div class="selectedButtonTwo" @click="showThree = !showThree">
						   {{!showThree?'更多选项':'收起'}}
						   <i class="el-icon-arrow-down" v-if="!showThree"></i><i class="el-icon-arrow-up" v-if="showThree"></i>
					   </div>
				   </div>
				   <div class="flex maxBox mt10">
					   <div class="flex selectedBoxTwo">
							<div class="selectedBoxTwoTitle">分组</div>
							 <el-checkbox-group v-model="groupingList" @change="change">
								<el-checkbox v-for="(y,d) in groupingData" :key="d" :label="y" :key="y.label">{{y.label}}</el-checkbox>
							</el-checkbox-group>
					   </div>
				   </div>
				   <div class="flex maxBox mt10">
					   <div class="flex selectedBoxTwo">
						   <div class="selectedBoxTwoTitle">管理状态</div>
							<el-checkbox-group v-model="administrationStatusList" @change="change">
								<el-checkbox v-for="(k,e) in administrationStatusData" :key="e" :label="k" :key="k.label">{{k.label}}</el-checkbox>
							</el-checkbox-group>
					   </div>
				   </div>
			   </template>
			   <div class="more" @click="show = !show">{{!show?'更多选项':'收起'}}<i class="el-icon-arrow-down" v-if="!show"></i><i class="el-icon-arrow-up" v-if="show"></i></div>
		   </div>
		   
		   
			<el-table  border :data="mzfRzjdData" style="width: 100%" v-loading="loadingTwo" height='650' class="mt20" >
			<el-table  
			border 
			:data="mzfRzjdData" 
			:span-method="objectSpanMethod" 
			style="width: 100%" 
			v-loading="loadingTwo" 
			class="mt20" >
				<template >
					<!-- <el-table-column  type="index" width='50' label="序号" align="center"></el-table-column> -->
					<el-table-column prop="name" label="行政区" align="center">
					<el-table-column prop="areaName" label="行政区" align="center">
					</el-table-column>
					<el-table-column  prop="name"  label="三级医院" align="center"></el-table-column>
					<el-table-column prop="name" label="目标入组例数" align="center">
					<el-table-column  prop="gradeHospitalName"  label="三级医院" align="center"></el-table-column>
					<el-table-column prop="targetEntryCont" label="目标入组例数" align="center">
					</el-table-column>
					<el-table-column  prop="name" label="首例入组时间" align="center"></el-table-column>
					<el-table-column  prop="firstEntryTime" label="首例入组时间" align="center"></el-table-column>
					<el-table-column  label="康复组(例)" align="center">
						<el-table-column
						  prop="name"
						  prop="kf_value1"
						  label="新增入组"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  prop="kf_value2"
						  label="新增失访"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  prop="kf_value3"
						  label="在管"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  prop="kf_value4"
						  label="失访"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  label="总计"
						  prop="kf_value5"
						  label="已管理数"
						  align="center">
						</el-table-column>
					</el-table-column>
					<el-table-column  label="对照组(例)" align="center">
						<el-table-column
						  prop="name"
						  prop="dz_value1"
						  label="新增入组"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  prop="dz_value2"
						  label="新增失访"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  prop="dz_value3"
						  label="在管"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  prop="dz_value4"
						  label="失访"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  label="总计"
						  prop="dz_value5"
						  label="已管理数"
						  align="center">
						</el-table-column>
					</el-table-column>
					<el-table-column  label="总计(例)" align="center">
						<el-table-column
						  prop="name"
						  prop="all_value1"
						  label="新增入组"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  prop="all_value2"
						  label="新增失访"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  prop="all_value3"
						  label="在管"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  prop="all_value4"
						  label="失访"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  label="总计"
						  prop="all_value5"
						  label="已管理数"
						  align="center">
						</el-table-column>
					</el-table-column>
				</template>
			</el-table>
			<div class="c-t-right mt20">
			<!-- <div class="c-t-right mt20">
				<el-pagination 
				  @current-change="handleCurrentChange"
				  :current-page.sync="currentPage"
@ -210,7 +157,7 @@
				  layout="total, prev, pager, next, jumper"
				  :total="datatotal">
				</el-pagination>
			</div>
			</div> -->
       </div>
    </div>
	<script src="../../../js/FileSaver/FileSaver.js" type="text/javascript" charset="utf-8"></script>

+ 29 - 72
app/statistics/html/mzfRzmx.html

@ -28,19 +28,13 @@
       <div class="ui-col-1 bgc-fff" style="min-width: 900px;">
		   <div class="flexibleBox">
			   <div class="flex maxBox">
				   <div class="title">已选</div>
				   <!-- <div class="title">已选</div>
				   <div class="flex selectedBox">
						<div class="selected" v-for="(item,index) in list" :key="index">
							{{item.type==1?'地区':item.type==2?'三级医院':item.type==3?'社区医院':item.type==4?'分组':item.type==5?'管理状态':'时间'}}:{{item.label}} <i class="el-icon-circle-close" @click="deleteClick(item)"></i>
						</div>
				   </div>
				   <div class="selectedButton">
						<el-button type="primary" size="mini" @click="confirm">确定</el-button>
						<el-button type="ff9526" size="mini" @click="exportHandle">导出</el-button>
						<el-button type="info" size="mini"  @click="cancel">取消</el-button>
				   </div>
			   </div>
			   <div class="inquireTime">查询时间 
				   </div> -->
				   <div class="inquireTime">查询时间 
					<el-date-picker
					  v-model="startTime"
					  type="date"
@ -56,97 +50,60 @@
					  @change='endTimeChange'>
					</el-date-picker>
			   </div>
			   <div class="flex maxBox mt10">
				   <div class="flex selectedBoxTwo">
						<div class="selectedBoxTwoTitle">地区</div>
						<el-checkbox-group v-model="regionList" @change="change">
							<el-checkbox v-for="(t,x) in regionData" :key="x" :label="t" :key="t.label">{{t.label}}</el-checkbox>
						</el-checkbox-group>
				   <div class="selectedButton">
						<el-button type="primary" size="mini" @click="confirm">确定</el-button>
						<el-button type="ff9526" size="mini" @click="exportHandle">导出</el-button>
						<!-- <el-button type="info" size="mini"  @click="cancel">取消</el-button> -->
				   </div>
			   </div>
			   <template v-if="show">
				   <div class="flex maxBox mt10">
					   <div class="titleHospital">三级医院</div>
					   <div class="flex selectedHospital" :style="showTwo?'overflow: inherit;height: auto;':'overflow: hidden;height:20px;'">
							<el-checkbox-group v-model="regionListList" @change="change">
								<el-checkbox v-for="(m,i) in tertiaryHospitalsData" :key="i" :label="m" :key="m.label">{{m.label}}</el-checkbox>
							</el-checkbox-group>
					   </div>
					   <div class="selectedButtonTwo" @click="showTwo = !showTwo">
						   {{!showTwo?'更多选项':'收起'}}
						   <i class="el-icon-arrow-down" v-if="!showTwo"></i><i class="el-icon-arrow-up" v-if="showTwo"></i>
					   </div>
				   </div>
				   <div class="flex maxBox mt10">
					   <div class="titleHospital">社区医院</div>
					   <div class="flex selectedHospital" :style="showThree?'overflow: inherit;height: auto;':'overflow: hidden;height:20px;'">
							<el-checkbox-group v-model="communityHospitalsList" @change="change">
								<el-checkbox v-for="(q,n) in communityHospitalsData" :key="n" :label="q" :key="q.label">{{q.label}}</el-checkbox>
							</el-checkbox-group>
					   </div>
					   <div class="selectedButtonTwo" @click="showThree = !showThree">
						   {{!showThree?'更多选项':'收起'}}
						   <i class="el-icon-arrow-down" v-if="!showThree"></i><i class="el-icon-arrow-up" v-if="showThree"></i>
					   </div>
				   </div>
				   <div class="flex maxBox mt10">
					   <div class="flex selectedBoxTwo">
							<div class="selectedBoxTwoTitle">分组</div>
							 <el-checkbox-group v-model="groupingList" @change="change">
								<el-checkbox v-for="(y,d) in groupingData" :key="d" :label="y" :key="y.label">{{y.label}}</el-checkbox>
							</el-checkbox-group>
					   </div>
				   </div>
				   <div class="flex maxBox mt10">
					   <div class="flex selectedBoxTwo">
						   <div class="selectedBoxTwoTitle">管理状态</div>
							<el-checkbox-group v-model="administrationStatusList" @change="change">
								<el-checkbox v-for="(k,e) in administrationStatusData" :key="e" :label="k" :key="k.label">{{k.label}}</el-checkbox>
							</el-checkbox-group>
					   </div>
				   </div>
			   </template>
			   <div class="more" @click="show = !show">{{!show?'更多选项':'收起'}}<i class="el-icon-arrow-down" v-if="!show"></i><i class="el-icon-arrow-up" v-if="show"></i></div>
		   </div>
		   
		   
			<el-table  border :data="mzfRzmxData" style="width: 100%" v-loading="loadingTwo" height='650' class="mt20" >
			<el-table  
				border 
				:data="mzfRzmxData" 
				style="width: 100%" 
				v-loading="loadingTwo" 
				height='650' 
				class="mt20" 
				:span-method='objectSpanMethod'
				>
				<template >
					<!-- <el-table-column  type="index" width='50' label="序号" align="center"></el-table-column> -->
					<el-table-column  label="社区中心基本信息" align="center">
						<el-table-column
						  prop="name"
						  prop="areaName"
						  label="所属区域"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  prop="gradeHospitalName"
						  label="分管三级医院"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  prop="hospitalName"
						  label="社区中心名称"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  prop="groupName"
						  label="组别"
						  align="center">
						</el-table-column>
					</el-table-column>
					<el-table-column prop="name" label="首例入组时间YYYY/MM/DD" align="center">
					<el-table-column prop="firstEntryTime" label="首例入组时间YYYY/MM/DD" align="center">
					</el-table-column>
					<el-table-column  prop="name"  label="新增入组" align="center"></el-table-column>
					<el-table-column prop="name" label="新增失访" align="center">
					<el-table-column  prop="value1"  label="新增入组" align="center"></el-table-column>
					<el-table-column prop="value2" label="新增失访" align="center">
					</el-table-column>
					<el-table-column  prop="name" label="在管" align="center"></el-table-column>
					<el-table-column  prop="name" label="失访" align="center"></el-table-column>
					<el-table-column  prop="name" label="入管合计" align="center"></el-table-column>
					<el-table-column  prop="name" label="备注(如果有)" align="center"></el-table-column>
					<el-table-column  prop="value3" label="在管" align="center"></el-table-column>
					<el-table-column  prop="value4" label="失访" align="center"></el-table-column>
					<el-table-column  prop="value5" label="已管理数" align="center"></el-table-column>
					<!-- <el-table-column  prop="value6" label="备注(如果有)" align="center"></el-table-column> -->
				</template>
			</el-table>
			<div class="c-t-right mt20">
			<!-- <div class="c-t-right mt20">
				<el-pagination 
				  @current-change="handleCurrentChange"
				  :current-page.sync="currentPage"
@ -154,7 +111,7 @@
				  layout="total, prev, pager, next, jumper"
				  :total="datatotal">
				</el-pagination>
			</div>
			</div> -->
       </div>
    </div>
	<script src="../../../js/FileSaver/FileSaver.js" type="text/javascript" charset="utf-8"></script>

+ 41 - 93
app/statistics/html/mzfSfjd.html

@ -28,19 +28,13 @@
       <div class="ui-col-1 bgc-fff" style="min-width: 900px;">
		   <div class="flexibleBox">
			   <div class="flex maxBox">
				   <div class="title">已选</div>
				   <!-- <div class="title">已选</div>
				   <div class="flex selectedBox">
						<div class="selected" v-for="(item,index) in list" :key="index">
							{{item.type==1?'地区':item.type==2?'三级医院':item.type==3?'社区医院':item.type==4?'分组':item.type==5?'管理状态':'时间'}}:{{item.label}} <i class="el-icon-circle-close" @click="deleteClick(item)"></i>
						</div>
				   </div>
				   <div class="selectedButton">
						<el-button type="primary" size="mini" @click="confirm">确定</el-button>
						<el-button type="ff9526" size="mini" @click="exportHandle">导出</el-button>
						<el-button type="info" size="mini"  @click="cancel">取消</el-button>
				   </div>
			   </div>
			   <div class="inquireTime">查询时间 
				   </div> -->
				   <div class="inquireTime">查询时间 
					<el-date-picker
					  v-model="startTime"
					  type="date"
@ -56,78 +50,32 @@
					  @change='endTimeChange'>
					</el-date-picker>
			   </div>
			   <div class="flex maxBox mt10">
				   <div class="flex selectedBoxTwo">
						<div class="selectedBoxTwoTitle">地区</div>
						<el-checkbox-group v-model="regionList" @change="change">
							<el-checkbox v-for="(t,x) in regionData" :key="x" :label="t" :key="t.label">{{t.label}}</el-checkbox>
						</el-checkbox-group>
				   <div class="selectedButton">
						<el-button type="primary" size="mini" @click="confirm">确定</el-button>
						<el-button type="ff9526" size="mini" @click="exportHandle">导出</el-button>
						<!-- <el-button type="info" size="mini"  @click="cancel">取消</el-button> -->
				   </div>
				   
			   </div>
			   <template v-if="show">
				   <div class="flex maxBox mt10">
					   <div class="titleHospital">三级医院</div>
					   <div class="flex selectedHospital" :style="showTwo?'overflow: inherit;height: auto;':'overflow: hidden;height:20px;'">
							<el-checkbox-group v-model="regionListList" @change="change">
								<el-checkbox v-for="(m,i) in tertiaryHospitalsData" :key="i" :label="m" :key="m.label">{{m.label}}</el-checkbox>
							</el-checkbox-group>
					   </div>
					   <div class="selectedButtonTwo" @click="showTwo = !showTwo">
						   {{!showTwo?'更多选项':'收起'}}
						   <i class="el-icon-arrow-down" v-if="!showTwo"></i><i class="el-icon-arrow-up" v-if="showTwo"></i>
					   </div>
				   </div>
				   <div class="flex maxBox mt10">
					   <div class="titleHospital">社区医院</div>
					   <div class="flex selectedHospital" :style="showThree?'overflow: inherit;height: auto;':'overflow: hidden;height:20px;'">
							<el-checkbox-group v-model="communityHospitalsList" @change="change">
								<el-checkbox v-for="(q,n) in communityHospitalsData" :key="n" :label="q" :key="q.label">{{q.label}}</el-checkbox>
							</el-checkbox-group>
					   </div>
					   <div class="selectedButtonTwo" @click="showThree = !showThree">
						   {{!showThree?'更多选项':'收起'}}
						   <i class="el-icon-arrow-down" v-if="!showThree"></i><i class="el-icon-arrow-up" v-if="showThree"></i>
					   </div>
				   </div>
				   <div class="flex maxBox mt10">
					   <div class="flex selectedBoxTwo">
							<div class="selectedBoxTwoTitle">分组</div>
							 <el-checkbox-group v-model="groupingList" @change="change">
								<el-checkbox v-for="(y,d) in groupingData" :key="d" :label="y" :key="y.label">{{y.label}}</el-checkbox>
							</el-checkbox-group>
					   </div>
				   </div>
				   <div class="flex maxBox mt10">
					   <div class="flex selectedBoxTwo">
						   <div class="selectedBoxTwoTitle">管理状态</div>
							<el-checkbox-group v-model="administrationStatusList" @change="change">
								<el-checkbox v-for="(k,e) in administrationStatusData" :key="e" :label="k" :key="k.label">{{k.label}}</el-checkbox>
							</el-checkbox-group>
					   </div>
				   </div>
			   </template>
			   <div class="more" @click="show = !show">{{!show?'更多选项':'收起'}}<i class="el-icon-arrow-down" v-if="!show"></i><i class="el-icon-arrow-up" v-if="show"></i></div>
		   </div>
		   
		   
			<el-table  border :data="mzfSfjdData" style="width: 100%" v-loading="loadingTwo" height='650' class="mt20" >
			<el-table  border :data="mzfSfjdData" :span-method="objectSpanMethod" style="width: 100%" v-loading="loadingTwo" height='650' class="mt20" >
				<template >
					<!-- <el-table-column  type="index" width='50' label="序号" align="center"></el-table-column> -->
					<el-table-column prop="name" label="行政区" align="center">
					<el-table-column prop="areaName" label="行政区" align="center">
					</el-table-column>
					<el-table-column  prop="name"  label="三级医院" align="center"></el-table-column>
					<el-table-column prop="name" label="分组" align="center">
					<el-table-column  prop="gradeHospitalName"  label="三级医院" align="center"></el-table-column>
					<el-table-column prop="groupName" label="分组" align="center">
					</el-table-column>
					<el-table-column  prop="name" label="目标入组数" align="center"></el-table-column>
					<el-table-column  prop="name"  label="启动筛选时间" align="center"></el-table-column>
					<el-table-column  prop="name" label="首例入组时间" align="center"></el-table-column>
					<el-table-column  prop="targetEntryCont" label="目标入组数" align="center"></el-table-column>
					<el-table-column  prop="createTime"  label="启动筛选时间" align="center"></el-table-column>
					<el-table-column  prop="firstEntryTime" label="首例入组时间" align="center"></el-table-column>
					<el-table-column  prop="" label="随访例数" align="center">
						<el-table-column
						prop=""
						label="v1筛选"
						align="center">
							<el-table-column
							prop="name"
							prop="v1Count"
							label="-"
							align="center">
						</el-table-column>
@ -137,12 +85,12 @@
						label="v2入组"
						align="center">
							<el-table-column
							prop="name"
							prop="v2Count1"
							label="正常访视"
							align="center">
							</el-table-column>
							<el-table-column
							prop="name"
							prop="v2Count2"
							label="超窗"
							align="center">
							</el-table-column>
@ -152,12 +100,12 @@
						label="v3"
						align="center">
							<el-table-column
							prop="name"
							prop="v3Count1"
							label="正常访视"
							align="center">
							</el-table-column>
							<el-table-column
							prop="name"
							prop="v3Count2"
							label="超窗"
							align="center">
							</el-table-column>
@ -167,12 +115,12 @@
						label="v4"
						align="center">
							<el-table-column
							prop="name"
							prop="v4Count1"
							label="正常访视"
							align="center">
							</el-table-column>
							<el-table-column
							prop="name"
							prop="v4Count2"
							label="超窗"
							align="center">
							</el-table-column>
@ -182,12 +130,12 @@
						label="v5"
						align="center">
							<el-table-column
							prop="name"
							prop="v5Count1"
							label="正常访视"
							align="center">
							</el-table-column>
							<el-table-column
							prop="name"
							prop="v5Count2"
							label="超窗"
							align="center">
							</el-table-column>
@ -197,12 +145,12 @@
						label="v6"
						align="center">
							<el-table-column
							prop="name"
							prop="v6Count1"
							label="正常访视"
							align="center">
							</el-table-column>
							<el-table-column
							prop="name"
							prop="v6Count2"
							label="超窗"
							align="center">
							</el-table-column>
@ -212,12 +160,12 @@
						label="合计"
						align="center">
							<el-table-column
							prop="name"
							prop="allCount1"
							label="正常访视"
							align="center">
							</el-table-column>
							<el-table-column
							prop="name"
							prop="allCount2"
							label="超窗"
							align="center">
							</el-table-column>
@ -229,7 +177,7 @@
						label="自愿退出"
						align="center">
							<el-table-column
								prop="name"
								prop="endValue1"
								label="-"
								align="center">
							</el-table-column>
@ -239,7 +187,7 @@
						  label="SAE"
						  align="center">
							  <el-table-column
								  prop="name"
								  prop="endValue2"
								  label="-"
								  align="center">
							  </el-table-column>
@ -249,7 +197,7 @@
						  label="不符合纳排"
						  align="center">
							  <el-table-column
								  prop="name"
								  prop="endValue3"
								  label="-"
								  align="center">
							  </el-table-column>
@ -259,7 +207,7 @@
						  label="失访"
						  align="center">
							  <el-table-column
								  prop="name"
								  prop="endValue4"
								  label="-"
								  align="center">
							  </el-table-column>
@ -269,7 +217,7 @@
						  label="妊娠"
						  align="center">
							  <el-table-column
								  prop="name"
								  prop="endValue5"
								  label="-"
								  align="center">
							  </el-table-column>
@ -279,27 +227,27 @@
						  label="死亡"
						  align="center">
							  <el-table-column
								  prop="name"
								  prop="endValue6"
								  label="-"
								  align="center">
							  </el-table-column>
					  </el-table-column>
					  <el-table-column
						  prop=""
						  label="合计"
						  label="其他"
						  align="center">
							  <el-table-column
								  prop="name"
								  prop="endValue7"
								  label="-"
								  align="center">
							  </el-table-column>
					  </el-table-column>
					  <el-table-column
						  prop=""
						  label="其他"
						  label="合计"
						  align="center">
							  <el-table-column
								  prop="name"
								  prop="allEndValue1_7"
								  label="-"
								  align="center">
							  </el-table-column>
@ -309,7 +257,7 @@
					<el-table-column prop="name" label="总例数" align="center">
						<el-table-column
						prop="name"
						prop="allCount"
						label="-"
						align="center">
						</el-table-column>
@ -317,7 +265,7 @@
					<el-table-column prop="name" label="备注(如果有)" align="center"></el-table-column>
				</template>
			</el-table>
			<div class="c-t-right mt20">
			<!-- <div class="c-t-right mt20">
				<el-pagination 
				  @current-change="handleCurrentChange"
				  :current-page.sync="currentPage"
@ -325,7 +273,7 @@
				  layout="total, prev, pager, next, jumper"
				  :total="datatotal">
				</el-pagination>
			</div>
			</div> -->
       </div>
    </div>
	<script src="../../../js/FileSaver/FileSaver.js" type="text/javascript" charset="utf-8"></script>

+ 37 - 29
app/statistics/html/mzfSfzmx.html

@ -28,19 +28,13 @@
       <div class="ui-col-1 bgc-fff" style="min-width: 900px;">
		   <div class="flexibleBox">
			   <div class="flex maxBox">
				   <div class="title">已选</div>
				   <!-- <div class="title">已选</div>
				   <div class="flex selectedBox">
						<div class="selected" v-for="(item,index) in list" :key="index">
							{{item.type==1?'地区':item.type==2?'三级医院':item.type==3?'社区医院':item.type==4?'分组':item.type==5?'管理状态':'时间'}}:{{item.label}} <i class="el-icon-circle-close" @click="deleteClick(item)"></i>
						</div>
				   </div>
				   <div class="selectedButton">
						<el-button type="primary" size="mini" @click="confirm">确定</el-button>
						<el-button type="ff9526" size="mini" @click="exportHandle">导出</el-button>
						<el-button type="info" size="mini"  @click="cancel">取消</el-button>
				   </div>
			   </div>
			   <div class="inquireTime">查询时间 
				   </div> -->
				<div class="inquireTime">查询时间 
					<el-date-picker
					  v-model="startTime"
					  type="date"
@ -55,8 +49,15 @@
					  :picker-options="setDisabled"
					  @change='endTimeChange'>
					</el-date-picker>
			   	</div>
				   <div class="selectedButton">
						<el-button type="primary" size="mini" @click="confirm">确定</el-button>
						<el-button type="ff9526" size="mini" @click="exportHandle">导出</el-button>
						<!-- <el-button type="info" size="mini"  @click="cancel">取消</el-button> -->
				   </div>
			   </div>
			   <div class="flex maxBox mt10">
			   <!-- <div class="flex maxBox mt10">
				   <div class="flex selectedBoxTwo">
						<div class="selectedBoxTwoTitle">地区</div>
						<el-checkbox-group v-model="regionList" @change="change">
@ -106,77 +107,84 @@
					   </div>
				   </div>
			   </template>
			   <div class="more" @click="show = !show">{{!show?'更多选项':'收起'}}<i class="el-icon-arrow-down" v-if="!show"></i><i class="el-icon-arrow-up" v-if="show"></i></div>
			   <div class="more" @click="show = !show">{{!show?'更多选项':'收起'}}<i class="el-icon-arrow-down" v-if="!show"></i><i class="el-icon-arrow-up" v-if="show"></i></div> -->
		   </div>
		   
		   
			<el-table  border :data="mzfSfzmxData" style="width: 100%" v-loading="loadingTwo" height='650' class="mt20" >
			<el-table 
			 border 
			 :data="mzfSfzmxData" 
			 :span-method="objectSpanMethod"
			 style="width: 100%" 
			 v-loading="loadingTwo" 
			 height='650' 
			 class="mt20" >
				<template >
					<!-- <el-table-column  type="index" width='50' label="序号" align="center"></el-table-column> -->
					<el-table-column  label="社区中心基本信息" align="center">
						<el-table-column
						  prop="name"
						  prop="areaName"
						  label="所属区域"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  prop="gradeHospitalName"
						  label="分管三级医院"
						  align="center">
						</el-table-column>
						<el-table-column
						  prop="name"
						  prop="hospitalName"
						  label="社区中心名称"
						  align="center">
						</el-table-column>
					</el-table-column>
					</el-table-column>
					<el-table-column prop="name" label="分组" align="center"></el-table-column>
					<el-table-column  prop="name"  label="启动筛选时间(YYYY/MM/DD)" align="center"></el-table-column>
					<el-table-column  prop="name" label="首例入组时间(YYYY/MM/DD)" align="center"></el-table-column>
					<el-table-column prop="groupName" label="分组" align="center"></el-table-column>
					<el-table-column  prop="createTime"  label="启动筛选时间(YYYY/MM/DD)" align="center"></el-table-column>
					<el-table-column  prop="entryTime" label="首例入组时间(YYYY/MM/DD)" align="center"></el-table-column>
					<el-table-column  prop="" label="随访例数" align="center">
						<el-table-column
						prop=""
						prop="v1Count"
						label="v1筛选"
						align="center">
					  </el-table-column>
					  <el-table-column
						prop=""
						prop="v2Count"
						label="v2入组"
						align="center">
					  </el-table-column>
					  <el-table-column
						prop=""
						prop="v3Count"
						label="v3"
						align="center">
					  </el-table-column>
					  <el-table-column
						prop=""
						prop="v4Count"
						label="v4"
						align="center">
					  </el-table-column>
					  <el-table-column
						prop=""
						prop="v5Count"
						label="v5"
						align="center">
						</el-table-column>
						<el-table-column
						prop=""
						prop="v6Count"
						label="v6"
						align="center">
						</el-table-column>
						<el-table-column
						prop=""
						prop="followAllCount"
						label="合计"
						align="center">
						</el-table-column>
					</el-table-column>
					<el-table-column prop="name" label="在管人数(随访中)" align="center">
					<el-table-column prop="managedCount" label="在管人数(随访中)" align="center">
					</el-table-column>
					<el-table-column prop="name" label="脱落总例数(提前结束研究/到期未完成随访)" align="center"></el-table-column>
					<el-table-column prop="fallOffNum" label="脱落总例数(提前结束研究/到期未完成随访)" align="center"></el-table-column>
				</template>
			</el-table>
			<div class="c-t-right mt20">
			<!-- <div class="c-t-right mt20">
				<el-pagination 
				  @current-change="handleCurrentChange"
				  :current-page.sync="currentPage"
@ -184,7 +192,7 @@
				  layout="total, prev, pager, next, jumper"
				  :total="datatotal">
				</el-pagination>
			</div>
			</div> -->
       </div>
    </div>
	<script src="../../../js/FileSaver/FileSaver.js" type="text/javascript" charset="utf-8"></script>

+ 292 - 0
app/statistics/js/1.js

@ -0,0 +1,292 @@
var template = ''
$.ajax('../html/mzfHzcx.html',{
	data: {},
	dataType: 'html',
	cache: false,
	timeout: 60000, 
	async: false,
	error: function(res) {
	},
	success: function(res) {
		template = res
	}
})
Vue.component('mzf-hzcx', {
	props: [],
	template: template,
	data: function() {
		return {
			tableData:[],
			testArr1: [],
			testArr2: [],
			testPosition1: 0,
			testPosition2: 0,
			list:[],
			startTime:new Date('2023','05','26'),
			endTime:new Date(),
			regionData:[
				{label:'全部',value:'8'},
				{label:'未管理',value:'0'},
				{label:'在管',value:'1'},
				{label:'失访',value:'2'},
				{label:'出组',value:'3'},
				{label:'不纳入管理 ',value:'4'},
				{label:'入组 ',value:'5'},
				{label:'死亡 ',value:'6'},
				{label:'已管理 ',value:'7'},
			],
			region: '8', //管理状态
			tertiaryHospitalsData:[],
			tertiary: '', //地区
			communityHospitalsData:[],
			communityHospitals:'', // 三级医院
			groupingData:[],
			group: '', // 社区
			stageType: '0,1,2,10,20',// 阶段
			// 0:慢阻肺测试患者 1:第一阶段  2:第二阶段   10:测试账号  20:其他'   全部 0,1,2,10,20
			stageData: [
				{label:'全部',value:'0,1,2,10,20'},
				{label:'慢阻肺测试患者',value:'0'},
				{label:'第二阶段 ',value:'1'},
				{label:'测试账号',value:'10'},
				{label:'其他',value:'20'},
			],
			queryLevel: 1, // :1.全部 2.区  3.等级医院 4.社区医院
			patientName: '', // 患者姓名
			administrationStatusList:[],
			administrationStatusData:[
				{label:'全部',id:'1',type:'5'}
			],
			show:false,
			showTwo:false,
			showThree:false,
			currentPage:1,
			currentSize:10, 
			datatotal:0, //总数
			loadingTwo:false,
			setDisabled:{
				disabledDate:function(time) {
					return time.getTime() < new Date('2023','05','26') || time.getTime() > Date.now();
				}
			},
			s:'',
			e:'',
			dialogVisible: false,
			dataInfo: [],
			dialogVisible1: false,
			dataJl: []
		}
	},
	created: function(){
		this.s = this.startTime.format('yyyy-MM-dd')
		this.e = this.endTime.format('yyyy-MM-dd')
		this.list.unshift({type:'0',id:'time',label:this.s +"~"+ this.e})
		this.getCopdPatientInfoList(1, 1, '350200')
		this.cascadingFindHosptail(1, '')
	},
	watch:{
		'startTime':{
			 handler:function(o) {
				if(!o) {
					this.list.splice(0,1)
				}
			 },
			 deep: true,
			 immediate: true
		},
		'endTime':{
			 handler:function(o) {
				if(!o) {
					this.list.splice(0,1)
				}
			 },
			 deep: true,
			 immediate: true
		},
	},
	methods: {
		// 获取地区
		cascadingFindHosptail: function(type, val, hos) {
			var vm = this
			var data = {
				findType: type ? type: 1,
				areaCode: val.length!=0 ? val.join(',') : '',
				hosptialCode: hos ? hos.join(',') : ''
			}
			statisticAPI.cascadingFindHosptail({
				jsonStr: JSON.stringify(data)
			}).then(function(res){
				if(res.status===200) {
					console.log(res, 'dq');
					if(type == 2) {
						vm.communityHospitalsData = res.data
					} else if(type == 3) {
						vm.groupingData = res.data
					}
					else {
						vm.tertiaryHospitalsData = res.data
					}
				}
			})
		},
		tertiaryChange: function(val) {
			console.log(val, 'xz');
			var vm = this
			vm.queryLevel = 2
			vm.cascadingFindHosptail(2, val)
		},
		comChange: function (val) {
			console.log(val, 'xz');
			var vm = this
			vm.queryLevel = 3
			vm.cascadingFindHosptail(3, vm.tertiary , val)
		},
		groChange() {
			var vm = this
			vm.queryLevel = 4
		},
		getCopdPatientInfoList:function (page, queryLevel, code) {
			var vm = this
			vm.loadingTwo = true
			var data = {
				startTime:this.startTime.format('yyyy-MM-dd'),
				endTime:this.endTime.format('yyyy-MM-dd'),
				stageType: vm.stageType,
				findType: 2,
				copdState: vm.region,
				page: page,
				size: 10,
				searchKey: vm.patientName,
				queryLevel: queryLevel,
				queryCode: code,
				hosptialCode: '', // 医院code
				pageIf: "true"
			}
			statisticAPI.getCopdPatientInfoList({
				json:JSON.stringify(data)
			}).then(function(res){
				if(res.status == 200) {
					console.log(res,'hc');
					vm.loadingTwo = false
					vm.tableData = res.data.list
					vm.datatotal = res.data.count
				}
			}).catch(function(err){
				vm.loadingTwo = false
			})
		},
		startTimeChange:function(o) {
			if(!this.list[0] || this.list[0].type!=0) {
			 this.list.unshift({type:'0',id:'time',label:o.format('yyyy-MM-dd') +"~"+ this.endTime.format('yyyy-MM-dd')})
			}else{
				this.list[0].label = o.format('yyyy-MM-dd') +"~"+ this.endTime.format('yyyy-MM-dd')
			}
		},
		endTimeChange:function(o) {
			if(!this.list[0] || this.list[0].type!=0) {
				this.list.unshift({type:'0',id:'time',label:this.startTime.format('yyyy-MM-dd') +"~"+ o.format('yyyy-MM-dd')})
			}else{
				this.list[0].label = this.startTime.format('yyyy-MM-dd') +"~"+ o.format('yyyy-MM-dd')
			}
		},
		deleteClick:function(item) {
			if(item.id == "time") {
				this.startTime = ''
				this.endTime = ''
				this.list.splice(0,1)
			}
			var index = this.list.findIndex(function(v){
				return item.id == v.id
			})
			this.list.splice(index,1)
		},
		// 下一页  上一页
		handleCurrentChange:function(val) {
			var vm = this
			vm.currentPage = val
			vm.getCopdPatientInfoList(val)
		},
		change:function(val) {
			this.list = this.list.concat(val)
		},
		// 确定
		confirm:function() {
			// 全部 , 也是默认
			if(this.queryLevel == 1) {
				this.findCopdHealthInfoList(1, 1 , '')
			} else if(this.queryLevel == 2) {
				// 地区
				var areaCode = this.tertiary.join(',')
				this.findCopdHealthInfoList('', this.queryLevel, areaCode)
			}else if(this.queryLevel == 3) {
				// 三级医院
				var areaCode = this.communityHospitals.join(',')
				this.findCopdHealthInfoList('', this.queryLevel, areaCode)
			}else if(this.queryLevel == 4) {
				// 社区
				var areaCode = this.group.join(',')
				this.findCopdHealthInfoList('', this.queryLevel, areaCode)
			}
	
		},
		// 取消
		cancel:function() {
			this.startTime = new Date('2023','05','26')
			this.endTime = new Date()
			this.tertiary = '',
			this.communityHospitals = ''
			this.group = ''
			this.queryLevel = 1
		},
		// 查看
		showInfo: function(item) {
			var vm = this
			vm.dialogVisible = true
			// patientCode
			var data = {
				patientCode: item.patientCode
			}
			statisticAPI.findCopdHealthInfoByCode({
				jsonStr:JSON.stringify(data)
			}).then(function(res){
				if(res.status == 200) {
					console.log(res,'info');
				}
			})
		},
		// 记录
		showJl: function() {
			var vm = this
			vm.dialogVisible1 = true
			// patientCode
			var data = {
				patientCode: item.patientCode
			}
			statisticAPI.findCopdHealthInfoByCode({
				jsonStr:JSON.stringify(data)
			}).then(function(res){
				if(res.status == 200) {
					console.log(res,'info');
				}
			})
		},
		// 导出
		exportHandle:function() {
			var vm = this
			vm.loadingTwo = true
			statisticAPI.exportHospitalWorkStatistics({
				startDate:this.startTime.format('yyyy-MM-dd'),
				endDate:this.endTime.format('yyyy-MM-dd')
			},'慢阻肺入组进度表.xls').then(function(res){
				vm.loadingTwo = false
			})
		},
		
	}
})

+ 6 - 5
app/statistics/js/comprehensive-query.js

@ -68,12 +68,13 @@ new Vue({
			  {label: '康复下转明细', id:'44'},
			  {label: '邀请专科回复明细', id:'45'},
			  {label:'慢阻肺医院工作量表',id:'46'},
			//   {label: '慢阻肺患者查询', id:'47'},
			//   {label: '慢阻肺入组进度', id:'48'},
			//   {label: '慢阻肺入组总明细', id:'49'},
			//   {label: '慢阻肺随访进度', id:'50'},
			//   {label: '慢阻肺随访总明细', id:'51'},
			  {label: '慢阻肺患者查询', id:'47'},
			  {label: '慢阻肺入组进度', id:'48'},
			  {label: '慢阻肺入组总明细', id:'49'},
			  {label: '慢阻肺随访进度', id:'50'},
			  {label: '慢阻肺随访总明细', id:'51'},
			  {label: 'v1\入组情况报表', id:'52'},
			  {label: '阻肺呼吸训练数据', id:'54'},
			]
		}],
		handleNodeShow:1,

+ 344 - 0
app/statistics/js/mzfHxsj.js

@ -0,0 +1,344 @@
var template = ''
$.ajax('../html/mzfHxsj.html',{
	data: {},
	dataType: 'html',
	cache: false,
	timeout: 60000, 
	async: false,
	error: function(res) {
	},
	success: function(res) {
		template = res
	}
})
Vue.component('mzf-hxsj', {
	props: [],
	template: template,
	data: function() {
		return {
			tableData:[],
			testArr1: [],
			testArr2: [],
			testPosition1: 0,
			testPosition2: 0,
			list:[],
			startTime:new Date('2023','05','26'),
			endTime:new Date(),
			regionData:[
				{label:'全部',value:'8'},
				{label:'未管理',value:'0'},
				{label:'在管',value:'1'},
				{label:'失访',value:'2'},
				{label:'出组',value:'3'},
				{label:'不纳入管理 ',value:'4'},
				{label:'入组 ',value:'5'},
				{label:'死亡 ',value:'6'},
				{label:'已管理 ',value:'7'},
			],
			region: '8', //管理状态
			tertiaryHospitalsData:[],
			tertiary: [], //地区
			communityHospitalsData:[],
			communityHospitals: [], // 三级医院
			groupingData:[],
			group: [], // 社区
			queryLevel: 1, // :1.全部 2.区  3.等级医院 4.社区医院
			patientName: '', // 患者姓名
			administrationStatusList:[],
			administrationStatusData:[
				{label:'全部',id:'1',type:'5'}
			],
			show:false,
			showTwo:false,
			showThree:false,
			currentPage:1,
			currentSize:10, 
			datatotal:0, //总数
			loadingTwo:false,
			setDisabled:{
				disabledDate:function(time) {
					return time.getTime() < new Date('2023','05','26') || time.getTime() > Date.now();
				}
			},
			s:'',
			e:'',
			dialogVisible: false,
			dataInfo: [],
			url: '',
			showPdf: false
		}
	},
	created: function(){
		this.s = this.startTime.format('yyyy-MM-dd')
		this.e = this.endTime.format('yyyy-MM-dd')
		this.list.unshift({type:'0',id:'time',label:this.s +"~"+ this.e})
		this.findCopdHealthInfoList(1, 1 , '350200')
		this.cascadingFindHosptail(1, '')
	},
	watch:{
		'startTime':{
			 handler:function(o) {
				if(!o) {
					this.list.splice(0,1)
				}
			 },
			 deep: true,
			 immediate: true
		},
		'endTime':{
			 handler:function(o) {
				if(!o) {
					this.list.splice(0,1)
				}
			 },
			 deep: true,
			 immediate: true
		},
	},
	methods: {
		// 获取地区
		cascadingFindHosptail: function(type, val, hos) {
			var vm = this
			var data = {
				findType: type ? type: 1,
				areaCode: val.length!=0 ? val.join(',') : '',
				hosptialCode: hos ? hos.join(',') : ''
			}
			statisticAPI.cascadingFindHosptail({
				jsonStr: JSON.stringify(data)
			}).then(function(res){
				if(res.status===200) {
					console.log(res, 'dq');
					if(type == 2) {
						vm.communityHospitalsData = res.data
					} else if(type == 3) {
						vm.groupingData = res.data
					}
					else {
						vm.tertiaryHospitalsData = res.data
					}
				}
			})
		},
		tertiaryChange: function(val) {
			if(val.length == 0) {
				this.communityHospitals = []
				this.communityHospitalsData = []
				this.group = []
				this.groupingData = []
			}else {
				this.queryLevel = 2
				this.cascadingFindHosptail(2, val)
			}
			
		},
		comChange: function (val) {
			var vm = this
			if(val.length == 0) {
				vm.groupingData = []
				vm.group = []
			}else {
				vm.queryLevel = 3
				vm.cascadingFindHosptail(3, vm.tertiary , val)
			}
		
		},
		groChange: function() {
			var vm = this
			vm.queryLevel = 4
		},
		// 清除
		clearGroup: function() {
			if(this.group.length == 0) {
				this.queryLevel = 3
			}
		},
		clearCommunityHospitals:function(val) {
			if(this.communityHospitals.length == 0) {
				this.queryLevel = 2
				this.groupingData = []
			}
		},
		clearTertiary: function() {
			if(this.tertiary.length == 0) {
				this.queryLevel = 1
			}
		},
		findCopdHealthInfoList:function (page, queryLevel, code) {
			var vm = this
			vm.loadingTwo = true
			var data = {
				startTime:this.startTime.format('yyyy-MM-dd'),
				endTime:this.endTime.format('yyyy-MM-dd'),
				stageType: 2,
				findType: 5,
				copdState: vm.region,
				page: page,
				size: 10,
				searchKey: vm.patientName,
				queryLevel: queryLevel,
				queryCode: code,
				pageIf: "true"
			}
			statisticAPI.findCopdHealthInfoList({
				jsonStr:JSON.stringify(data)
			}).then(function(res){
				if(res.status == 200) {
					console.log(res,'hxsj');
					vm.loadingTwo = false
					vm.tableData = res.data.list
					vm.datatotal = res.data.count
				}
			}).catch(function(err){
				vm.loadingTwo = false
			})
		},
		startTimeChange:function(o) {
			if(!this.list[0] || this.list[0].type!=0) {
			 this.list.unshift({type:'0',id:'time',label:o.format('yyyy-MM-dd') +"~"+ this.endTime.format('yyyy-MM-dd')})
			}else{
				this.list[0].label = o.format('yyyy-MM-dd') +"~"+ this.endTime.format('yyyy-MM-dd')
			}
		},
		endTimeChange:function(o) {
			if(!this.list[0] || this.list[0].type!=0) {
				this.list.unshift({type:'0',id:'time',label:this.startTime.format('yyyy-MM-dd') +"~"+ o.format('yyyy-MM-dd')})
			}else{
				this.list[0].label = this.startTime.format('yyyy-MM-dd') +"~"+ o.format('yyyy-MM-dd')
			}
		},
		deleteClick:function(item) {
			if(item.id == "time") {
				this.startTime = ''
				this.endTime = ''
				this.list.splice(0,1)
			}
			var index = this.list.findIndex(function(v){
				return item.id == v.id
			})
			this.list.splice(index,1)
		},
		// 下一页  上一页
		handleCurrentChange:function(val) {
			var vm = this
			vm.currentPage = val
			if(this.queryLevel == 1) {
				this.findCopdHealthInfoList(val, 1 , '350200')
			} else if(this.queryLevel == 2) {
				// 地区
				var areaCode = this.tertiary.join(',')
				this.findCopdHealthInfoList(val, this.queryLevel, areaCode)
			}else if(this.queryLevel == 3) {
				// 三级医院
				var areaCode = this.communityHospitals.join(',')
				this.findCopdHealthInfoList(val, this.queryLevel, areaCode)
			}else if(this.queryLevel == 4) {
				// 社区
				var areaCode = this.group.join(',')
				this.findCopdHealthInfoList(val, this.queryLevel, areaCode)
			}
		},
		change:function(val) {
			this.list = this.list.concat(val)
		},
		// 确定
		confirm:function() {
			// 全部 , 也是默认
			if(this.queryLevel == 1) {
				this.findCopdHealthInfoList(1, 1 , '350200')
			} else if(this.queryLevel == 2) {
				// 地区
				var areaCode = this.tertiary.join(',')
				this.findCopdHealthInfoList(1, this.queryLevel, areaCode)
			}else if(this.queryLevel == 3) {
				// 三级医院
				var areaCode = this.communityHospitals.join(',')
				this.findCopdHealthInfoList(1, this.queryLevel, areaCode)
			}else if(this.queryLevel == 4) {
				// 社区
				var areaCode = this.group.join(',')
				this.findCopdHealthInfoList(1, this.queryLevel, areaCode)
			}
	
		},
		// 取消
		cancel:function() {
			this.startTime = new Date('2023','05','26')
			this.endTime = new Date()
			this.tertiary = []
			this.communityHospitals = []
			this.group = []
			this.patientName = ''
			this.region = '8'
			this.queryLevel = 1
		},
		// 查看
		showInfo: function(item) {
			var vm = this
			vm.dialogVisible = true
			var data = {
				patientCode: item.patientCode
			}
			statisticAPI.findCopdHealthInfoByCode({
				jsonStr:JSON.stringify(data)
			}).then(function(res){
				if(res.status == 200) {
					vm.dataInfo = res.data
				}
			})
		},
		btn: function(item) {
			this.showPdf = true
			this.url = item.url
		},
		// 导出
		exportHandle:function() {
			// 全部 , 也是默认
			if(this.queryLevel == 1) {
				this.exoprtCopdHealthInfoList(1, 1 , '')
			} else if(this.queryLevel == 2) {
				// 地区
				var areaCode = this.tertiary.join(',')
				this.exoprtCopdHealthInfoList(1, this.queryLevel, areaCode)
			}else if(this.queryLevel == 3) {
				// 三级医院
				var areaCode = this.communityHospitals.join(',')
				this.exoprtCopdHealthInfoList(1, this.queryLevel, areaCode)
			}else if(this.queryLevel == 4) {
				// 社区
				var areaCode = this.group.join(',')
				this.exoprtCopdHealthInfoList(1, this.queryLevel, areaCode)
			}
		},
		exoprtCopdHealthInfoList: function(page, queryLevel, code) {
			var vm = this
			vm.loadingTwo = true
			var data = {
				startTime:this.startTime.format('yyyy-MM-dd'),
				endTime:this.endTime.format('yyyy-MM-dd'),
				stageType: 2,
				findType: 5,
				copdState: vm.region,
				page: page,
				size: 10,
				searchKey: vm.patientName,
				queryLevel: queryLevel,
				queryCode: code,
				pageIf: ""
			}
			var jsonStr = JSON.stringify(data)
			statisticAPI.exoprtCopdHealthInfoList({
				jsonStr: encodeURIComponent(jsonStr)
			},'阻肺呼吸训练数据.xls').then(function(res){
				vm.loadingTwo = false
			})
		}
		
	}
})

+ 246 - 38
app/statistics/js/mzfHzcx.js

@ -16,29 +16,56 @@ Vue.component('mzf-hzcx', {
	template: template,
	data: function() {
		return {
			mzfHzcxData:[{name: '测试数据'}],
			tableData:[],
			testArr1: [],
			testArr2: [],
			testPosition1: 0,
			testPosition2: 0,
			list:[],
			startTime:new Date('2023','05','26'),
			endTime:new Date(),
			regionList:[],
			regionData:[
				{label:'全市',id:'1',type:'1'}
				{label:'全部',value:'8'},
				{label:'未管理',value:'0'},
				{label:'在管',value:'1'},
				{label:'失访',value:'2'},
				{label:'出组',value:'3'},
				{label:'不纳入管理 ',value:'4'},
				{label:'入组 ',value:'5'},
				{label:'死亡 ',value:'6'},
				{label:'已管理 ',value:'7'},
			],
			regionListList:[],
			tertiaryHospitalsData:[
				{label:'全部',id:'1',type:'2'}
			region: '8', //管理状态
			tertiaryHospitalsData:[],
			tertiary: [], //地区
			communityHospitalsData:[],
			communityHospitals: [], // 三级医院
			groupingData:[],
			group: [], // 社区
			queryLevel: 1, // :1.全部 2.区  3.等级医院 4.社区医院
			patientName: '', // 患者姓名
			stageType: '0,1,2,10,20',// 阶段
			// 0:慢阻肺测试患者 1:第一阶段  2:第二阶段   10:测试账号  20:其他'   全部 0,1,2,10,20
			stageData: [
				{label:'全部',value:'0,1,2,10,20'},
				{label:'慢阻肺测试患者',value:'0'},
				{label:'第一阶段 ',value:'1'},
				{label:'第二阶段 ',value:'2'},
				{label:'测试账号',value:'10'},
				{label:'其他',value:'20'},
			],
			communityHospitalsList:[],
			communityHospitalsData:[
				{label:'全部',id:'1',type:'3'}
			],
			groupingList:[],
			groupingData:[
				{label:'全部',id:'1',type:'4'}
			],
			administrationStatusList:[],
			administration:[],
			administrationStatusData:[
				{label:'全部',id:'1',type:'5'}
				{label:'全部',value:'0'},
				{label:'康复组',value:'1'},
				{label:'对照组',value:'2'}
			],
			show:false,
			showTwo:false,
@ -55,14 +82,17 @@ Vue.component('mzf-hzcx', {
			s:'',
			e:'',
			dialogVisible: false,
			num: ''
			dataInfo: [],
			dialogVisible1: false,
			dataJl: []
		}
	},
	created: function(){
		this.s = this.startTime.format('yyyy-MM-dd')
		this.e = this.endTime.format('yyyy-MM-dd')
		this.list.unshift({type:'0',id:'time',label:this.s +"~"+ this.e})
		// this.hospitalWorkStatistics()
		this.getCopdPatientInfoList(1, 1 , '350200')
		this.cascadingFindHosptail(1, '')
	},
	watch:{
		'startTime':{
@ -85,16 +115,102 @@ Vue.component('mzf-hzcx', {
		},
	},
	methods: {
		hospitalWorkStatistics:function() {
		// 获取地区
		cascadingFindHosptail: function(type, val, hos) {
			var vm = this
			var data = {
				findType: type ? type: 1,
				areaCode: val.length!=0 ? val.join(',') : '',
				hosptialCode: hos ? hos.join(',') : ''
			}
			statisticAPI.cascadingFindHosptail({
				jsonStr: JSON.stringify(data)
			}).then(function(res){
				if(res.status===200) {
					console.log(res, 'dq');
					if(type == 2) {
						vm.communityHospitalsData = res.data
					} else if(type == 3) {
						vm.groupingData = res.data
					}
					else {
						vm.tertiaryHospitalsData = res.data
					}
				}
			})
		},
		tertiaryChange: function(val) {
			if(val.length == 0) {
				this.communityHospitals = []
				this.communityHospitalsData = []
				this.group = []
				this.groupingData = []
			}else {
				this.queryLevel = 2
				this.cascadingFindHosptail(2, val)
			}
			
		},
		comChange: function (val) {
			var vm = this
			if(val.length == 0) {
				vm.groupingData = []
				vm.group = []
			}else {
				vm.queryLevel = 3
				vm.cascadingFindHosptail(3, vm.tertiary , val)
			}
		
		},
		admChange: function() {
		},
		groChange: function() {
			var vm = this
			vm.queryLevel = 4
		},
		// 清除
		clearGroup: function() {
			if(this.group.length == 0) {
				this.queryLevel = 3
			}
		},
		clearCommunityHospitals:function(val) {
			if(this.communityHospitals.length == 0) {
				this.queryLevel = 2
				this.groupingData = []
			}
		},
		clearTertiary: function() {
			if(this.tertiary.length == 0) {
				this.queryLevel = 1
			}
		},
		getCopdPatientInfoList:function (page, queryLevel, code) {
			var vm = this
			vm.loadingTwo = true
			statisticAPI.hospitalWorkStatistics({
				startDate:this.startTime.format('yyyy-MM-dd'),
				endDate:this.endTime.format('yyyy-MM-dd')
			var data = {
				startTime:this.startTime.format('yyyy-MM-dd'),
				endTime:this.endTime.format('yyyy-MM-dd'),
				stageType: vm.stageType,
				findType: 2,
				copdState: vm.region,
				page: page,
				size: 10,
				searchKey: vm.patientName,
				queryLevel: queryLevel,
				queryCode: code,
				hosptialCode: '', // 医院code
				pageIf: "true"
			}
			statisticAPI.getCopdPatientInfoList({
				json:JSON.stringify(data)
			}).then(function(res){
				if(res.status == 200) {
					console.log(res,'hxsj');
					vm.loadingTwo = false
					vm.mzfHzcxData = res.data
					vm.tableData = res.data.list
					vm.datatotal = res.data.count
				}
			}).catch(function(err){
				vm.loadingTwo = false
@ -129,41 +245,133 @@ Vue.component('mzf-hzcx', {
		handleCurrentChange:function(val) {
			var vm = this
			vm.currentPage = val
			if(this.queryLevel == 1) {
				this.getCopdPatientInfoList(val, 1 , '350200')
			} else if(this.queryLevel == 2) {
				// 地区
				var areaCode = this.tertiary.join(',')
				this.getCopdPatientInfoList(val, this.queryLevel, areaCode)
			}else if(this.queryLevel == 3) {
				// 三级医院
				var areaCode = this.communityHospitals.join(',')
				this.getCopdPatientInfoList(val, this.queryLevel, areaCode)
			}else if(this.queryLevel == 4) {
				// 社区
				var areaCode = this.group.join(',')
				this.getCopdPatientInfoList(val, this.queryLevel, areaCode)
			}
		},
		change:function(val) {
			this.list = this.list.concat(val)
		},
		// 确定
		confirm:function() {
			this.hospitalWorkStatistics()
			// 全部 , 也是默认
			if(this.queryLevel == 1) {
				this.getCopdPatientInfoList(1, 1 , '350200')
			} else if(this.queryLevel == 2) {
				// 地区
				var areaCode = this.tertiary.join(',')
				this.getCopdPatientInfoList(1, this.queryLevel, areaCode)
			}else if(this.queryLevel == 3) {
				// 三级医院
				var areaCode = this.communityHospitals.join(',')
				this.getCopdPatientInfoList(1, this.queryLevel, areaCode)
			}else if(this.queryLevel == 4) {
				// 社区
				var areaCode = this.group.join(',')
				this.getCopdPatientInfoList(1, this.queryLevel, areaCode)
			}
	
		},
		// 取消
		cancel:function() {
			this.startTime = new Date('2023','05','26')
			this.endTime = new Date()
			if(!this.list[0] || this.list[0].type!=0) {
			 this.list.unshift({type:'0',id:'time',label:this.startTime.format('yyyy-MM-dd') +"~"+ this.endTime.format('yyyy-MM-dd')})
			}else{
				this.list[0].label = this.startTime.format('yyyy-MM-dd') +"~"+ this.endTime.format('yyyy-MM-dd')
			this.tertiary = []
			this.communityHospitals = []
			this.group = []
			this.patientName = ''
			this.region = '8'
			this.stageType = '0,1,2,10,20'
			this.queryLevel = 1
		},
		// 查看
		showInfo: function(item) {
			var vm = this
			vm.dialogVisible = true
			var data = {
				patientCode: item.patientCode
			}
			statisticAPI.findCopdPatientFollowList({
				jsonStr:JSON.stringify(data)
			}).then(function(res){
				if(res.status == 200) {
					console.log(res, '记录');
					vm.dataInfo = res.data
				}
			})
		},
		showJl: function(item) {
			console.log(item,'item');
			var vm = this
			var data = {
				followupId: item.followupId,
				visitCount: item.visit_count
			}
			var jsonStr = JSON.stringify(data)
			statisticAPI.exportConclusionList({
				// jsonStr: encodeURIComponent(jsonStr)
				followupId: item.followupId,
				visitCount: item.visit_count
			},'随访计划.pdf').then(function(res){
				vm.loadingTwo = false
			})
		},
		// 导出
		exportHandle:function() {
			// 全部 , 也是默认
			if(this.queryLevel == 1) {
				this.exportCopdPatientInfoList(1, 1 , '350200')
			} else if(this.queryLevel == 2) {
				// 地区
				var areaCode = this.tertiary.join(',')
				this.exportCopdPatientInfoList(1, this.queryLevel, areaCode)
			}else if(this.queryLevel == 3) {
				// 三级医院
				var areaCode = this.communityHospitals.join(',')
				this.exportCopdPatientInfoList(1, this.queryLevel, areaCode)
			}else if(this.queryLevel == 4) {
				// 社区
				var areaCode = this.group.join(',')
				this.exportCopdPatientInfoList(1, this.queryLevel, areaCode)
			}
		},
		exportCopdPatientInfoList: function(page, queryLevel, code) {
			var vm = this
			vm.loadingTwo = true
			statisticAPI.exportHospitalWorkStatistics({
				startDate:this.startTime.format('yyyy-MM-dd'),
				endDate:this.endTime.format('yyyy-MM-dd')
			},'慢阻肺医院工作量表.xls').then(function(res){
			var data = {
				startTime:this.startTime.format('yyyy-MM-dd'),
				endTime:this.endTime.format('yyyy-MM-dd'),
				stageType: vm.stageType,
				findType: 2,
				copdState: vm.region,
				page: page,
				size: 10,
				searchKey: vm.patientName,
				queryLevel: queryLevel,
				queryCode: code,
				hosptialCode: '', // 医院code
				pageIf: ""
			}
			var jsonStr = JSON.stringify(data)
			statisticAPI.exportCopdPatientInfoList({
				json: encodeURIComponent(jsonStr)
			},'慢阻肺患者查询.xls').then(function(res){
				vm.loadingTwo = false
			})
		},
		// 计划/记录
		showSfjh: function(num,id) {
			var vm = this
			vm.num = num
			this.dialogVisible = true
		}
		
	}
})

+ 67 - 22
app/statistics/js/mzfRzjd.js

@ -16,7 +16,11 @@ Vue.component('mzf-rzjd', {
	template: template,
	data: function() {
		return {
			mzfRzjdData:[{name: '测试数据'}],
			mzfRzjdData:[],
			testArr1: [],
			testArr2: [],
			testPosition1: 0,
			testPosition2: 0,
			list:[],
			startTime:new Date('2023','05','26'),
			endTime:new Date(),
@ -60,7 +64,7 @@ Vue.component('mzf-rzjd', {
		this.s = this.startTime.format('yyyy-MM-dd')
		this.e = this.endTime.format('yyyy-MM-dd')
		this.list.unshift({type:'0',id:'time',label:this.s +"~"+ this.e})
		// this.hospitalWorkStatistics()
		this.getCopdEntryData()
	},
	watch:{
		'startTime':{
@ -83,16 +87,21 @@ Vue.component('mzf-rzjd', {
		},
	},
	methods: {
		hospitalWorkStatistics:function() {
		getCopdEntryData:function() {
			var vm = this
			vm.loadingTwo = true
			statisticAPI.hospitalWorkStatistics({
				startDate:this.startTime.format('yyyy-MM-dd'),
				endDate:this.endTime.format('yyyy-MM-dd')
			var data = {
				startTime:this.startTime.format('yyyy-MM-dd'),
				endTime:this.endTime.format('yyyy-MM-dd')
			}
			statisticAPI.getCopdEntryData({
				jsonStr:JSON.stringify(data)
			}).then(function(res){
				if(res.status == 200) {
					console.log(res,'入组随访计划');
					vm.loadingTwo = false
					vm.mzfRzjdData = res.data
					vm.getSpanArr(vm.mzfRzjdData)
				}
			}).catch(function(err){
				vm.loadingTwo = false
@ -133,30 +142,66 @@ Vue.component('mzf-rzjd', {
		},
		// 确定
		confirm:function() {
			this.hospitalWorkStatistics()
			this.getCopdEntryData()
		},
		// 取消
		cancel:function() {
			this.startTime = new Date('2023','05','26')
			this.endTime = new Date()
			if(!this.list[0] || this.list[0].type!=0) {
			 this.list.unshift({type:'0',id:'time',label:this.startTime.format('yyyy-MM-dd') +"~"+ this.endTime.format('yyyy-MM-dd')})
			}else{
				this.list[0].label = this.startTime.format('yyyy-MM-dd') +"~"+ this.endTime.format('yyyy-MM-dd')
			}
		},
		// cancel:function() {
		// 	this.startTime = new Date('2023','05','26')
		// 	this.endTime = new Date()
		// 	if(!this.list[0] || this.list[0].type!=0) {
		// 	 this.list.unshift({type:'0',id:'time',label:this.startTime.format('yyyy-MM-dd') +"~"+ this.endTime.format('yyyy-MM-dd')})
		// 	}else{
		// 		this.list[0].label = this.startTime.format('yyyy-MM-dd') +"~"+ this.endTime.format('yyyy-MM-dd')
		// 	}
		// },
		// 导出
		exportHandle:function() {
			var vm = this
			vm.loadingTwo = true
			statisticAPI.exportHospitalWorkStatistics({
				startDate:this.startTime.format('yyyy-MM-dd'),
				endDate:this.endTime.format('yyyy-MM-dd')
			},'慢阻肺入组进度表.xls').then(function(res){
			var data = {
				startTime:this.startTime.format('yyyy-MM-dd'),
				endTime:this.endTime.format('yyyy-MM-dd')
			}
			var jsonStr = JSON.stringify(data)
			statisticAPI.exportCopdEntryData({
				jsonStr: encodeURIComponent(jsonStr)
			},'慢阻肺入组进度.xls').then(function(res){
				vm.loadingTwo = false
			})
		},
		
		
		//表格合并单元格跨行,实现首列根据不同类型进行跨行
		getSpanArr: function(data) {
			this.spanArr = []
			for (var i = 0; i < data.length; i++) {
				if (i === 0) {
					this.spanArr.push(1);
					this.podds = 0
				} else {
					/*判断当前元素与上一个元素type值是否相同
					*相同就+1,代表需要合并的行+1
					*/
					if (data[i].areaName === data[i - 1].areaName) {
						this.spanArr[this.podds] += 1;
						this.spanArr.push(0);
					} else {
						this.spanArr.push(1);
						this.podds = i;
					}
				}
			}
		},
		//得到行、列的合并值
		objectSpanMethod: function({row, column, rowIndex, columnIndex}) {
			if (columnIndex === 0) {
				const _rows = this.spanArr[rowIndex];
				const _cols = _rows > 0 ? 1 : 0;
				return {
					rowspan: _rows,  //跨的行合并数
					colspan: _cols   //跨的列合并数
				}
			}
		},
	
	}
})

+ 69 - 12
app/statistics/js/mzfRzmx.js

@ -16,7 +16,15 @@ Vue.component('mzf-rzmx', {
	template: template,
	data: function() {
		return {
			mzfRzmxData:[{name: '测试数据'}],
			mzfRzmxData:[],
			testArr1: [],
			testArr2: [],
			testArr3: [],
			// testArr4: [],
			testPosition1: 0,
			testPosition2: 0,
			testPosition3: 0,
			// testPosition4: 0,
			list:[],
			startTime:new Date('2023','05','26'),
			endTime:new Date(),
@ -54,13 +62,17 @@ Vue.component('mzf-rzmx', {
			},
			s:'',
			e:'',
			courseArr: [],
			coursePos: 0,
			mergeObj: {},
            mergeArr: ['areaName', 'gradeHospitalName', 'hospitalName', 'groupName',],
		}
	},
	created: function(){
		this.s = this.startTime.format('yyyy-MM-dd')
		this.e = this.endTime.format('yyyy-MM-dd')
		this.list.unshift({type:'0',id:'time',label:this.s +"~"+ this.e})
		// this.hospitalWorkStatistics()
		this.getCopdEntryCommunityData()
	},
	watch:{
		'startTime':{
@ -83,16 +95,22 @@ Vue.component('mzf-rzmx', {
		},
	},
	methods: {
		hospitalWorkStatistics:function() {
		getCopdEntryCommunityData:function() {
			var vm = this
			vm.loadingTwo = true
			statisticAPI.hospitalWorkStatistics({
				startDate:this.startTime.format('yyyy-MM-dd'),
				endDate:this.endTime.format('yyyy-MM-dd')
			var data = {
				startTime:this.startTime.format('yyyy-MM-dd'),
				endTime:this.endTime.format('yyyy-MM-dd')
			}
			statisticAPI.getCopdEntryCommunityData({
				jsonStr:JSON.stringify(data)
			}).then(function(res){
				if(res.status == 200) {
					console.log(res,'明细');
					vm.loadingTwo = false
					vm.mzfRzmxData = res.data
					vm.getSpanArr(vm.mzfRzmxData)
				}
			}).catch(function(err){
				vm.loadingTwo = false
@ -133,7 +151,7 @@ Vue.component('mzf-rzmx', {
		},
		// 确定
		confirm:function() {
			this.hospitalWorkStatistics()
			this.getCopdEntryCommunityData()
		},
		// 取消
		cancel:function() {
@ -149,14 +167,53 @@ Vue.component('mzf-rzmx', {
		exportHandle:function() {
			var vm = this
			vm.loadingTwo = true
			statisticAPI.exportHospitalWorkStatistics({
				startDate:this.startTime.format('yyyy-MM-dd'),
				endDate:this.endTime.format('yyyy-MM-dd')
			},'慢阻肺医院工作量表.xls').then(function(res){
			var data = {
				startTime:this.startTime.format('yyyy-MM-dd'),
				endTime:this.endTime.format('yyyy-MM-dd')
			}
			var jsonStr = JSON.stringify(data)
			statisticAPI.exportCopdEntryCommunityData({
				jsonStr: encodeURIComponent(jsonStr)
			},'慢阻肺入组总明细.xls').then(function(res){
				vm.loadingTwo = false
			})
		},
		
		// getSpanArr方法
		getSpanArr(data) {
			this.mergeArr.forEach((key, index1) => {
				var count = 0; // 用来记录需要合并行的起始位置
				this.mergeObj[key] = []; // 记录每一列的合并信息
				data.forEach((item, index) => {
					// index == 0表示数据为第一行,直接 push 一个 1
					if(index === 0) {
						this.mergeObj[key].push(1); 
					} else {
						// 判断当前行是否与上一行其值相等 如果相等 在 count 记录的位置其值 +1 表示当前行需要合并 并push 一个 0 作为占位
						if(item[key] === data[index - 1][key]) { 
							this.mergeObj[key][count] += 1;
							this.mergeObj[key].push(0);
						} else {
							// 如果当前行和上一行其值不相等 
							count = index; // 记录当前位置 
							this.mergeObj[key].push(1); // 重新push 一个 1
						}
					}
				})
			})
		},
		//得到行、列的合并值
		objectSpanMethod: function({row, column, rowIndex, columnIndex}) {
            if(this.mergeArr.indexOf(column.property) !== -1) { 
                // 判断其值是不是为0 
                if(this.mergeObj[column.property][rowIndex]) { 
                    return [this.mergeObj[column.property][rowIndex], 1]
                } else {
                    // 如果为0则为需要合并的行
                    return [0, 0]; 
                }
            }
		},
		
	}
})

+ 57 - 12
app/statistics/js/mzfSfjd.js

@ -16,7 +16,7 @@ Vue.component('mzf-sfjd', {
	template: template,
	data: function() {
		return {
			mzfSfjdData:[{name: '测试数据'}],
			mzfSfjdData:[],
			list:[],
			startTime:new Date('2023','05','26'),
			endTime:new Date(),
@ -54,13 +54,15 @@ Vue.component('mzf-sfjd', {
			},
			s:'',
			e:'',
			mergeObj: {},
            mergeArr: ['areaName', 'gradeHospitalName', 'groupName',],
		}
	},
	created: function(){
		this.s = this.startTime.format('yyyy-MM-dd')
		this.e = this.endTime.format('yyyy-MM-dd')
		this.list.unshift({type:'0',id:'time',label:this.s +"~"+ this.e})
		// this.hospitalWorkStatistics()
		this.getCopdFollowData()
	},
	watch:{
		'startTime':{
@ -83,16 +85,21 @@ Vue.component('mzf-sfjd', {
		},
	},
	methods: {
		hospitalWorkStatistics:function() {
		getCopdFollowData:function() {
			var vm = this
			vm.loadingTwo = true
			statisticAPI.hospitalWorkStatistics({
				startDate:this.startTime.format('yyyy-MM-dd'),
				endDate:this.endTime.format('yyyy-MM-dd')
			var data = {
				startTime:this.startTime.format('yyyy-MM-dd'),
				endTime:this.endTime.format('yyyy-MM-dd')
			}
			statisticAPI.getCopdFollowData({
				jsonStr:JSON.stringify(data)
			}).then(function(res){
				if(res.status == 200) {
					vm.loadingTwo = false
					console.log(res, 'sfjd');
					vm.mzfSfjdData = res.data
					vm.getSpanArr(vm.mzfSfjdData)
				}
			}).catch(function(err){
				vm.loadingTwo = false
@ -133,7 +140,7 @@ Vue.component('mzf-sfjd', {
		},
		// 确定
		confirm:function() {
			this.hospitalWorkStatistics()
			this.getCopdFollowData()
		},
		// 取消
		cancel:function() {
@ -145,18 +152,56 @@ Vue.component('mzf-sfjd', {
				this.list[0].label = this.startTime.format('yyyy-MM-dd') +"~"+ this.endTime.format('yyyy-MM-dd')
			}
		},
		// 导出
		// 导出 慢阻肺随访进度
		exportHandle:function() {
			var vm = this
			vm.loadingTwo = true
			statisticAPI.exportHospitalWorkStatistics({
				startDate:this.startTime.format('yyyy-MM-dd'),
				endDate:this.endTime.format('yyyy-MM-dd')
			var data = {
				startTime:this.startTime.format('yyyy-MM-dd'),
				endTime:this.endTime.format('yyyy-MM-dd')
			}
			var jsonStr = JSON.stringify(data)
			statisticAPI.exportCopdFollowData({
				jsonStr: encodeURIComponent(jsonStr)
			},'慢阻肺随访进度.xls').then(function(res){
				vm.loadingTwo = false
			})
		},
		
		
		getSpanArr(data) {
			this.mergeArr.forEach((key, index1) => {
				var count = 0; // 用来记录需要合并行的起始位置
				this.mergeObj[key] = []; // 记录每一列的合并信息
				data.forEach((item, index) => {
					// index == 0表示数据为第一行,直接 push 一个 1
					if(index === 0) {
						this.mergeObj[key].push(1); 
					} else {
						// 判断当前行是否与上一行其值相等 如果相等 在 count 记录的位置其值 +1 表示当前行需要合并 并push 一个 0 作为占位
						if(item[key] === data[index - 1][key]) { 
							this.mergeObj[key][count] += 1;
							this.mergeObj[key].push(0);
						} else {
							// 如果当前行和上一行其值不相等 
							count = index; // 记录当前位置 
							this.mergeObj[key].push(1); // 重新push 一个 1
						}
					}
				})
			})
		},
		//得到行、列的合并值
		objectSpanMethod: function({row, column, rowIndex, columnIndex}) {
            if(this.mergeArr.indexOf(column.property) !== -1) { 
                // 判断其值是不是为0 
                if(this.mergeObj[column.property][rowIndex]) { 
                    return [this.mergeObj[column.property][rowIndex], 1]
                } else {
                    // 如果为0则为需要合并的行
                    return [0, 0]; 
                }
            }
		},	
	}
})

+ 64 - 10
app/statistics/js/mzfSfzmx.js

@ -16,7 +16,15 @@ Vue.component('mzf-sfzmx', {
	template: template,
	data: function() {
		return {
			mzfSfzmxData:[{name: '测试数据'}],
			mzfSfzmxData:[],
			testArr1: [],
			testArr2: [],
			testArr3: [],
			testArr4: [],
			testPosition1: 0,
			testPosition2: 0,
			testPosition3: 0,
			testPosition4: 0,
			list:[],
			startTime:new Date('2023','05','26'),
			endTime:new Date(),
@ -54,13 +62,15 @@ Vue.component('mzf-sfzmx', {
			},
			s:'',
			e:'',
			mergeObj: {},
            mergeArr: ['areaName', 'gradeHospitalName', 'hospitalName', 'groupName',],
		}
	},
	created: function(){
		this.s = this.startTime.format('yyyy-MM-dd')
		this.e = this.endTime.format('yyyy-MM-dd')
		this.list.unshift({type:'0',id:'time',label:this.s +"~"+ this.e})
		// this.hospitalWorkStatistics()
		this.getCopdFollowDetailData()
	},
	watch:{
		'startTime':{
@ -83,16 +93,21 @@ Vue.component('mzf-sfzmx', {
		},
	},
	methods: {
		hospitalWorkStatistics:function() {
		getCopdFollowDetailData:function() {
			var vm = this
			vm.loadingTwo = true
			statisticAPI.hospitalWorkStatistics({
				startDate:this.startTime.format('yyyy-MM-dd'),
				endDate:this.endTime.format('yyyy-MM-dd')
			var data = {
				startTime:this.startTime.format('yyyy-MM-dd'),
				endTime:this.endTime.format('yyyy-MM-dd')
			}
			statisticAPI.getCopdFollowDetailData({
				jsonStr:JSON.stringify(data)
			}).then(function(res){
				if(res.status == 200) {
					console.log(res,'sfmx');
					vm.loadingTwo = false
					vm.mzfSfzmxData = res.data
					vm.getSpanArr(vm.mzfSfzmxData)
				}
			}).catch(function(err){
				vm.loadingTwo = false
@ -133,7 +148,7 @@ Vue.component('mzf-sfzmx', {
		},
		// 确定
		confirm:function() {
			this.hospitalWorkStatistics()
			this.getCopdFollowDetailData()
		},
		// 取消
		cancel:function() {
@ -149,14 +164,53 @@ Vue.component('mzf-sfzmx', {
		exportHandle:function() {
			var vm = this
			vm.loadingTwo = true
			statisticAPI.exportHospitalWorkStatistics({
				startDate:this.startTime.format('yyyy-MM-dd'),
				endDate:this.endTime.format('yyyy-MM-dd')
			var data = {
				startTime:this.startTime.format('yyyy-MM-dd'),
				endTime:this.endTime.format('yyyy-MM-dd')
			}
			var jsonStr = JSON.stringify(data)
			statisticAPI.exportCopdFollowDetailData({
				jsonStr: encodeURIComponent(jsonStr)
			},'慢阻肺随访总明细.xls').then(function(res){
				vm.loadingTwo = false
			})
		},
		
		getSpanArr(data) {
			this.mergeArr.forEach((key, index1) => {
				var count = 0; // 用来记录需要合并行的起始位置
				this.mergeObj[key] = []; // 记录每一列的合并信息
				data.forEach((item, index) => {
					// index == 0表示数据为第一行,直接 push 一个 1
					if(index === 0) {
						this.mergeObj[key].push(1); 
					} else {
						// 判断当前行是否与上一行其值相等 如果相等 在 count 记录的位置其值 +1 表示当前行需要合并 并push 一个 0 作为占位
						if(item[key] === data[index - 1][key]) { 
							this.mergeObj[key][count] += 1;
							this.mergeObj[key].push(0);
						} else {
							// 如果当前行和上一行其值不相等 
							count = index; // 记录当前位置 
							this.mergeObj[key].push(1); // 重新push 一个 1
						}
					}
				})
			})
		},
		//得到行、列的合并值
		objectSpanMethod: function({row, column, rowIndex, columnIndex}) {
            if(this.mergeArr.indexOf(column.property) !== -1) { 
                // 判断其值是不是为0 
                if(this.mergeObj[column.property][rowIndex]) { 
                    return [this.mergeObj[column.property][rowIndex], 1]
                } else {
                    // 如果为0则为需要合并的行
                    return [0, 0]; 
                }
            }
		},
		
	}
})