Przeglądaj źródła

总体分析 健康教育、待预约分析修改
时间控件修改

chenyue 5 lat temu
rodzic
commit
c13aea5e60
35 zmienionych plików z 760 dodań i 391 usunięć
  1. 5 0
      api/statistics-api.js
  2. 2 2
      app/recover/css/new_recover.css
  3. 37 25
      app/recover/html/new_recover.html
  4. 1 1
      app/rehabilitation/html/health_control.html
  5. 40 3
      app/statistics/css/common.css
  6. 3 1
      app/statistics/html/change-back.html
  7. 84 38
      app/statistics/html/comprehensive-analysis.html
  8. 3 1
      app/statistics/html/consulting-analysis.html
  9. 3 1
      app/statistics/html/estimate-analysis.html
  10. 1 1
      app/statistics/html/prescription-analysis.html
  11. 5 2
      app/statistics/html/qualifications-analysis.html
  12. 3 1
      app/statistics/html/renew-progress.html
  13. 6 3
      app/statistics/html/response-speed-analysis.html
  14. 6 3
      app/statistics/html/service-sheet-analysis.html
  15. 3 1
      app/statistics/html/sign-progress.html
  16. 6 3
      app/statistics/html/subsidy-cost.html
  17. 4 1
      app/statistics/js/change-back.js
  18. 53 0
      app/statistics/js/common.js
  19. 247 23
      app/statistics/js/comprehensive-analysis.js
  20. 4 2
      app/statistics/js/consulting-analysis.js
  21. 4 2
      app/statistics/js/estimate-analysis.js
  22. 4 2
      app/statistics/js/prescription-analysis.js
  23. 12 52
      app/statistics/js/qualifications-analysis.js
  24. 4 1
      app/statistics/js/renew-progress.js
  25. 12 52
      app/statistics/js/response-speed-analysis.js
  26. 12 52
      app/statistics/js/service-sheet-analysis.js
  27. 4 1
      app/statistics/js/sign-progress.js
  28. 12 52
      app/statistics/js/subsidy-cost.js
  29. 14 3
      component/statistics/area-data-panel.js
  30. 41 50
      component/statistics/line-chart.js
  31. 5 5
      component/statistics/prescription-filter.js
  32. 3 3
      component/statistics/resident-analysis-filter.js
  33. 2 2
      component/statistics/sign-progress-filter.js
  34. 113 0
      component/statistics/team-info-dyy.js
  35. 2 2
      component/statistics/year-filter.js

+ 5 - 0
api/statistics-api.js

@ -87,6 +87,11 @@
        },
        //补助费用导出excel
        subsidyExpenseExport:httpRequest.server+"doctor/statisticAnalyze/subsidyExpenseExport",
        
        //代预约记录
        GetReservationByTeamId: function(data){
            return httpRequest.post("/doctor/guahao/GetReservationByTeamId", {data: data});
        },
    }
    exports.statisticAPI = statisticAPI;

+ 2 - 2
app/recover/css/new_recover.css

@ -45,7 +45,7 @@ p {margin-bottom: 0; margin-top: 0;}
.c-h100-79 {height: calc(100% - 79px);}
.w-100-66 {width: calc(100% - 66px);}
.w-100-78 {width: calc(100% - 78px);}
.w-100-300 {width: calc(100% - 301px);}
.w-100-400 {width: calc(100% - 401px);}
.muban_con {
	width: 400px;
	margin: 0 auto;
@ -176,7 +176,7 @@ ul {
.el-input__inner {
	height: 24px;
	line-height: 24px;
	border: 0px;
	/*border: 0px;*/
	background-color: transparent;
	cursor: pointer;
}

+ 37 - 25
app/recover/html/new_recover.html

@ -16,7 +16,7 @@
	<div id="app" v-cloak>
		<div class="c-position-a" style="top: -999px; left: -999px;" v-show="isTest"></div>
		<div class="c-h100 clearfix">
	        <div class="fl c-h100 w300 person_info c-border-r" style="overflow: hidden;">
	        <div class="fl c-h100 w400 person_info c-border-r" style="overflow: hidden;">
	        	<div v-if="!patiInfo" class="c-h100" style="overflow: auto;">
		        	<div  class="c-border-b c-t-center pt20">
		        		<div class="set-photo imgw80">
@ -57,8 +57,8 @@
		        	</ul>
		        	<h4 class="h30 m0 c-f14 c-border-b">诊疗信息</h4>
		        	<ul class="c-333 m0 p0 pb20" >
	        			<div class="input-group" >
	        				<label style="transform: translateY(50%); color: #999999;font-weight: normal;">就诊事件:</label>
	        			<div class="input-group mtb10" >
	        				<label style="transform: translateY(50%); color: #999999;font-weight: normal;">就诊事件:</label>
							<div class="input-group-btn" style="width: 80%; transform: translateY(50%);top: -5px;">
								<button style="width:223px;padding: 0; text-overflow: ellipsis; overflow: hidden;" v-bind:disabled="edit" type="button" class="btn btn-white dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
									{{diagnosisInfo[indexOrder].orgName}}
@ -69,20 +69,20 @@
								</ul>
							</div>
						</div>
		        		<li class="pt10"style="display: flex;" id="department">
		        			<label class="c-999" style="font-weight: normal;">入院科室:</label>
		        		<li class="pt10" style="display: flex;" id="department">
		        			<label class="c-999" style="font-weight: normal;">入院科室:</label>
		        			<input class="form-control" v-bind:disabled="edit" v-bind:value="nodata == true? '请输入': subsidiaryInfo.data.department" style=" text-align: center; height: 22px; border-radius: 3px; width: 80%;">
		        		</li>
		        		<li class="pt10"style="display: flex;" id="attendingDoctor">
		        			<label class="c-999" style="font-weight: normal;">主治医师:</label>
		        		<li class="pt10" style="display: flex;" id="attendingDoctor">
		        			<label class="c-999" style="font-weight: normal;">主治医师:</label>
		        			<input class="form-control" v-bind:disabled="edit" v-bind:value="nodata == true? '请输入': subsidiaryInfo.data.attendingDoctor" style="text-align: center; height: 22px; border-radius: 3px; width: 80%;">
		        		</li>
		        		<li class="pt10"style="display: flex;" id="admissionDiagnosis">
		        			<label class="c-999" style="font-weight: normal;">入院诊断:</label>
		        		<li class="pt10" style="display: flex;" id="admissionDiagnosis">
		        			<label class="c-999" style="font-weight: normal;">入院诊断:</label>
		        			<input class="form-control" v-bind:disabled="edit" v-bind:value="nodata == true? '请输入': subsidiaryInfo.data.admissionDiagnosis" style="text-align: center; height: 22px; border-radius: 3px; width: 80%;">
		        		</li>
		        		<li class="pt10"style="display: flex;" id="dischargeDiagnosis">
		        			<label class="c-999" style="font-weight: normal;">出院诊断:</label>
		        		<li class="pt10" style="display: flex;" id="dischargeDiagnosis">
		        			<label class="c-999" style="font-weight: normal;">出院诊断:</label>
		        			<input class="form-control" v-bind:disabled="edit" v-bind:value="nodata == true? '请输入': subsidiaryInfo.data.dischargeDiagnosis" style="text-align: center; height: 22px; border-radius: 3px; width: 80%;">
		        		</li>
		        	</ul>
@ -92,7 +92,7 @@
		        	<button type="button" class="btn btn-default fr" style="width: 60px; background: #12B7F5; border-radius: 0px ;border: 0px ;" @click="editdiagnosis()" v-html="edit == true? '编辑':'保存'"></button>
	        	</div>
	        </div>
	        <div class="fl c-h100 w-100-300">
	        <div class="fl c-h100 w-100-400">
	        	<div class="c-h100 plr5" v-if="!isPlan">
		        	<h4 class="m0 pl15 lh40 c-border-b f-w500 c-position-r"><span class="c-position-a set-blue-span"></span>配置康复计划</h4>
		        	<div style="overflow: hidden; height: calc(100% - 41px);">
@ -109,7 +109,7 @@
			        </div>
		        </div>
		        <div class="clearfix c-h100" v-else>
		        	<div class="fl w-100-300 c-h100">
		        	<div class="fl w-100-400 c-h100">
		        		<div class="plr5 c-h100-79">
		        			<h4 class="m0 pl15 lh40 c-border-b set-label f-w500 c-position-r">
		        				<em class="c-position-a set-blue-span"></em>
@ -122,11 +122,11 @@
		        						<div class="fl w-100-78 c-333">
		        							<p :class='detail.isTimeSame ? "m0 p0 mb10 txt-ells cur-pit c-red" : "m0 p0 mb10 txt-ells cur-pit"' @click="lookProject(detail)">{{detail.specialistServiceItemDO.title}}</p>
	        								<div class="clearfix">
	        									<p class="w300 m0 mb10 p0 fl"><span class="c-999">医&emsp;&emsp;院:</span>{{detail.hospitalName}}</p>
	        									<p class="w400 m0 mb10 p0 fl"><span class="c-999">医&emsp;&emsp;院:</span>{{detail.hospitalName}}</p>
	        									<p class="m0 p0 mb10 fl"><span class="c-999">费&emsp;&emsp;用:</span>{{detail.expense}}{{detail.specialistServiceItemDO.unit}}</p>
	        								</div>
		        							<div class="m0 p0 clearfix">
		        								<div class="w300 m0 mb10 p0 fl clearfix">
		        								<div class="w400 m0 mb10 p0 fl clearfix">
	        										<span class="fl c-999">选择频次:</span>
	        										<div class="fl c-position-r w100">
	        											<p class="m0 p0 plr10 c-border cur-pit set-xia" :class="{'set-shang':detail.selectFre}" @click="changeSelectFre(index, detail.selectFre)">{{detail.frequencyCode}}</p>
@ -153,14 +153,19 @@
        									<div>
        										<div class="clearfix">
	        										<span class="fl c-999 lh24">起始时间:</span>
	        										<div class="fl maxw600 c-border mb10">
	        										<div class="fl maxw600 mb10">
	        											<!--<p class="lh24 pl10 mb5 mr20 clearfix" v-for="(time, ind) in detail.specialistServiceItemDO.selectDateRange" :key="ind" v-if="detail.specialistServiceItemDO.selectDateRange.length">
		        											<span class="pb10 mr10">{{time.startTime}}</span>至<span class="pb10 ml10">{{time.endTime}}</span><span class="pb10 ml5 c-red cur-pit" @click="spliceTimeRange(index, ind)">删除</span>
		        										</p>-->
	        											<el-date-picker  v-model="detail.value14" type="daterange" :picker-options="pickerOptions1" value-format="yyyy-MM-dd" @input="getRandgeDate(index)" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
														<el-date-picker v-model="detail.value14[0]" type="date" placeholder="开始日期" value-format="yyyy-MM-dd" :picker-options="pickerOptions1" @input="getRandgeDate(index)">
														</el-date-picker>
														<span>—</span>
														<el-date-picker v-model="detail.value14[1]" type="date" placeholder="结束日期" value-format="yyyy-MM-dd" :picker-options="pickerOptions1" @input="getRandgeDate(index)">
														</el-date-picker>
	        											<!--<el-date-picker  v-model="detail.value14" type="daterange" :picker-options="pickerOptions1" value-format="yyyy-MM-dd" @input="getRandgeDate(index)" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>-->
	        										</div>
	        										<span class="fl lh24 mlr10 c-999">或</span>
	        										<div class="fl maxw600 c-border mb10">
	        										<div class="fl maxw600 mb10">
	        											<!--<p class="fl pl10 lh24 mb5 mr20 clearfix" v-for="(time, ind) in detail.specialistServiceItemDO.executeTime" :key="ind" v-if="detail.specialistServiceItemDO.executeTime.length">
		        											<span class="fl pb10">{{time}}</span><span class="fl pb10 ml5 c-red cur-pit" @click="spliceTimeArr(index, ind)">删除</span>
		        										</p>-->
@ -196,7 +201,7 @@
	        				</div>
	        			</div>
		        	</div>
		        	<div class="fr w300 c-h100 c-border-l">
		        	<div class="fr w400 c-h100 c-border-l">
		        		<div class="plr5 c-h100">
		        			<h4 class="m0 pl15 lh40 c-border-b c-position-r f-w500">
		        				<em class="c-position-a set-blue-span"></em>添加其他项目
@ -574,7 +579,7 @@
															o3.isSelect = true
															o3.selectDoc = false
															o3.selectDate = 1
															o3.value14 = null
															o3.value14 = []
															o3.value15 = null
															o3.specialistServiceItemDO.executeTime = []
															o3.specialistServiceItemDO.selectDateRange = []
@ -688,7 +693,7 @@
//			    		this.templateDetail[index] = detail
			    		this.isTest = !this.isTest
			    		obj.specialistServiceItemDO.executeTime = []
			    		obj.value14 = null
			    		obj.value14 = []
			    		obj.value15 = null
			    		this.templateDetail.push(obj)
			    		this.checkAllMoney()
@ -719,7 +724,7 @@
                		this.selectProjectDetail.isSelect = true
                		this.selectProjectDetail.selectDoc = false
                		this.selectProjectDetail.selectDate = 1
						this.selectProjectDetail.value14 = null
						this.selectProjectDetail.value14 = []
						this.selectProjectDetail.value15 = null
                		this.selectProjectDetail.specialistServiceItemDO.executeTime = []
                		this.selectProjectDetail.specialistServiceItemDO.selectDateRange = []
@ -871,15 +876,22 @@
                		}
                		var arr = this.templateDetail[index].value15
                		this.templateDetail[index].specialistServiceItemDO.executeTime = arr
                		this.templateDetail[index].value14 = null
                		this.templateDetail[index].value14 = []
                		this.isTest = !this.isTest
                		this.checkAllMoney()
                		this.judgeHavePlan()
                	},
                	// 选择周期
                	getRandgeDate: function(index) {
                		var vm = this,
                			projectId = vm.templateDetail[index].hospitalServiceItemId;
                		var vm = this
                		var templateDetail=this.templateDetail[index]
                		if(!templateDetail.value14[0]&&!templateDetail.value14[1]){
                			return false;
                		}else if(templateDetail.value14[0]>templateDetail.value14[1]){
                			showWarningMessage("开始时间应小于结束时间!")
                			return false;
                		}
                		var	projectId = vm.templateDetail[index].hospitalServiceItemId;
                		vm.templateDetail = $.map(vm.templateDetail, function(o, index) {
								if(projectId == o.hospitalServiceItemId) {
									o.isTimeSame = false

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

@ -141,7 +141,7 @@
                </tr>
            </table>
            <navigation :pages="pagetotal" :current="currentPage" @navpage="search" :total="total" :size="pagesize"></navigation>
            <navigation v-if="tablelist.length" :pages="pagetotal" :current="currentPage" @navpage="search" :total="total" :size="pagesize"></navigation>
        </div>
    </div>

+ 40 - 3
app/statistics/css/common.css

@ -363,6 +363,7 @@ ul {
	height: auto;
	margin-bottom: 10px;
	padding: 0 10px;
	margin-top: 20px;
}
.l-banner li {
@ -665,23 +666,35 @@ a {
	margin: 20px;
}
.vuedal {
.vuedal.md {
	will-change: initial !important;
	width: 400px !important;
	padding-right: 3px !important;
	margin-left: -200px;
	padding: 0 !important;}
.vuedal header {
.vuedal.md header {
	padding: 10px 20px 0 20px;
}
.vuedal header .title {
.vuedal.md header .title {
	font-size: 16px !important;
	font-weight: bold !important;
	color: #333 !important;
}
.vuedal.lg header {
	font-size: 18px;
    color: #333333;
    padding-bottom: 15px;
}
.vuedal.lg header .close {
    font-size: 32px;
    line-height: 30px;
}
.mod {
	background-color: #fff;
}
@ -819,3 +832,27 @@ body .el-table th.gutter{
    line-height: 28px;
    width: 10%;
}
.team-info-dyy .ui-col-1,.team-info-dyy .ui-col-0{word-break: break-all;}
.dyy-title{
	font-size: 16px;
	color:#333333;
	padding-bottom: 20px;
	border-bottom: 1px solid #e1e1e1;
}
#sc_table{}
#sc_table tr td:nth-child(2):hover{
	color:#12B7F5;
	cursor: pointer;
}
#sc_table th,#sc_table td{
	height: 40px;
    font-size: 14px;
    padding-left:5px;
    padding-right:5px;
}
#sc_table th{
	background-color: #F5F5FA;
	text-align: center;
    color: #909090;
    font-weight: normal;
}

+ 3 - 1
app/statistics/html/change-back.html

@ -13,11 +13,12 @@
		<link rel="stylesheet" type="text/css" href="../../../css/style.min.css" />
		<link rel="stylesheet" type="text/css" href="../../../css/cross.css" />
		<link href="../../../plugins/toastr/toastr.min.css" rel="stylesheet">
		<link rel="stylesheet" type="text/css" href="../../../css/element-ui.css" />
		<link rel="stylesheet" type="text/css" href="../css/common.css" />
	</head>
	<body style="margin: 0;">
		<div id="main" class="c-hide">
		<div id="main" class="c-hide" v-loading.fullscreen.lock="isloading">
			<header-tab :appname="appname" :isback="isback" :isrefresh="isrefresh" :isfilter="isfilter" :isopen="isopen"></header-tab>
			<header-prompt></header-prompt>
			  <div class="clearfix ">
@ -60,6 +61,7 @@
		<script src="../js/echarts.min.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../api/http-request.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../api/statistics-api.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/element-ui.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../component/common/event-bus.js"></script>
		<script src="../../../component/common/vuedals.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../component/statistics/header-tab.js" type="text/javascript" charset="utf-8"></script>

+ 84 - 38
app/statistics/html/comprehensive-analysis.html

@ -9,10 +9,12 @@
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <meta name="apple-mobile-web-app-status-bar-style" content="black" />
        <link rel="shortcut icon" href="../../../favicon.ico">
		<link rel="stylesheet" type="text/css" href="../../../css/bootstrap.min.css" />
        <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 href="../../../plugins/toastr/toastr.min.css" rel="stylesheet">
        <link rel="stylesheet" type="text/css" href="../../../css/element-ui.css"/>
        <link rel="stylesheet" type="text/css" href="../css/common.css"/>
        <style>
            .tip{
@ -54,19 +56,24 @@
       color: rgb(255, 255, 255);
       font-size: 14px;
       font-family: sans-serif;
    border-radius: 4px;
    padding: 5px;
    visibility: hidden;
    min-width: 242px;
    z-index: 99999;
	    border-radius: 4px;
	    padding: 5px;
	    visibility: hidden;
	    min-width: 242px;
	    z-index: 99999;
	    text-align: left;
    }
    .shadowr{
        left: -70%;
    }
    .article-bar, .send-bar{height:15px;width:0%;}
    .article-bar{background: #7a97e0;}
    .send-bar{background: #17b3ec;}
    .c-f36 {font-size: 36px;}
        </style>
    </head>
    <body>
        <div id="main" class="c-hide">
        <div id="main" class="plr20 c-hide" v-loading.fullscreen.lock="isloading">
            <header-tab :appname="appname" :isback="isback" :isrefresh="isrefresh" :isfilter="isfilter" :isopen="false" ></header-tab>
            <header-prompt></header-prompt>
            <div class="clearfix ">
@ -74,19 +81,19 @@
                    <li class="active" >
                        <div class="tag" :class="{'active': index==3}" @click="changeTag(3)">
                            <div id="index_3" class="c-f18">{{topDatas['index_3']}}</div>
                            <div class="mt5 c-f14 l-name">咨询量</div>
                            <div class="mt5 c-f16 l-name">咨询量</div>
                        </div>
                    </li>
                    <li>
                        <div class="tag" :class="{'active': index==4}" @click="changeTag(4)">
                            <div id="index_4" class="c-f18">{{topDatas['index_4']}}</div>
                            <div class="mt5 c-f14 l-name">随访量</div>
                            <div class="mt5 c-f16 l-name">随访量</div>
                        </div>
                    </li>
                    <li>
                        <div class="tag" :class="{'active': index==5}" @click="changeTag(5)">
                            <div id="index_5" class="c-f18">{{topDatas['index_5'] + topDatas['index_83']}}</div>
                            <div class="mt5 c-f14 l-name">健康教育</div>
                            <div class="mt5 c-f16 l-name">健康教育</div>
                        </div>
                    </li>
                </ul>
@ -94,72 +101,108 @@
                    <li>
                        <div class="tag" :class="{'active': index==27}" @click="changeTag(27)">
                            <div id="index_27" class="c-f18">{{topDatas['index_27']}}</div>
                            <div class="mt5 c-f14 l-name">代预约量</div>
                            <div class="mt5 c-f16 l-name">代预约量</div>
                        </div>
                    </li>
                    <li>
                        <div class="tag" :class="{'active': index==21}" @click="changeTag(21)">
                            <div id="index_21" class="c-f18">{{topDatas['index_21']}}</div>
                            <div class="mt5 c-f14 l-name">绑定微信</div>
                            <div class="mt5 c-f16 l-name">绑定微信</div>
                        </div>
                    </li>
                    <li>
                        <div class="tag" :class="{'active': index==20}" @click="changeTag(20)">
                            <div id="index_20" class="c-f18">{{topDatas['index_20']}}</div>
                            <div class="mt5 c-f14 l-name">绑定设备</div>
                            <div class="mt5 c-f16 l-name">绑定设备</div>
                        </div>
                    </li>
                </ul>
            </div>
            <div  class="mt20 c-border bgc-fff" v-show="index=='27'">
            	<div class="c-border-b plr10 ptb10 c-f16 c-333">代预约情况</div>
            	<div  class="ui-grid ui-grid-middle ptb30">
            		<div class="ui-col-1  c-position-r c-border-r">
                        <div class="health-count c-f20 c-17b3ec pt35 c-t-center" >待预约等级医院<img @mouseenter="jumpTip('dyy1')" @mouseleave="leaveTip('dyy1')"class="tip" data-val="dyy1"  width="16" src="../../../images/icon_wenhao.png" alt=""></div>
                        <div class="shadow" id="shadowdyy1" style="left: 50%;top:0px;">家庭医生帮助居民代预约到医院的预约人次</div>
                        <div class="c-f36 c-333 pb35 mt30 c-t-center">{{topDatas['index_124']}}</div>
            		</div>
            		<div class="ui-col-1  c-position-r">
                        <div class="health-count c-f20 c-17b3ec pt35 c-t-center" >待预约社区医院<img @mouseenter="jumpTip('dyy2')" @mouseleave="leaveTip('dyy2')"class="tip" data-val="dyy2"  width="16" src="../../../images/icon_wenhao.png" alt=""></div>
                        <div class="shadow  shadowr" id="shadowdyy2" style="left: 50%;top:0px;">家庭医生帮助居民代预约到社区医院的预约人次</div>
                        <div class="c-f36 c-333 pb35 mt30 c-t-center">{{topDatas['index_125']}}</div>
            		</div>
            	</div>
            </div>
            <!-- 折线图 -->
            <line-chart v-on:getlinedata="getNewLineData" lineid="lineChart"></line-chart>
            <!-- 饼图 健康教育-->
            <div v-show="index=='5'" class="mt20 c-border bgc-fff">
                <div class="c-border-b plr10 ptb10 c-f16 c-333">全市概况</div>
                <div class="c-border-b plr10 ptb10 c-f16 c-333">推送情况</div>
                <div class="ui-grid ui-grid-middle ptb10">
                    <div class="ui-col-0 c-t-center c-ffc800 plr15 c-w-33">
                        <!-- <div class="c-f20 wz-num">{{topDatas['index_83']}}</div>
                        <div class="c-f12">健康文章推送量</div> -->
                        <div class="c-f14 health-title" style="padding-bottom: 10px;">健康文章</div>
                        <div class="ui-grid" style="margin-top: 47px;">
                    <div class="ui-col-1 c-t-center c-ffc800 plr15 c-w-33">
                        <div class="health-count c-f20 c-ffc800 ptb20 c-t-center">健康文章</div>
                        <div class="ui-grid mb50">
                            <div class="ui-col-1 c-position-r">
                                <div class="c-f16 black">{{topDatas['index_83']}}</div>
                                <div class="c-f12 visible-xs-inline-block health-count black"style="margin-top: 5px;">触达人数</div><img @mouseenter="jumpTip(1)" @mouseleave="leaveTip(1)"class="tip" data-val="1"  width="12" src="../../../images/icon_wenhao.png" alt="">
                                <div class="c-f24 c-333 mt20 c-t-center">{{topDatas['index_83']}}</div>
                                <div class="health-count c-f16 c-333 pt10 c-t-center" >触达人数<img @mouseenter="jumpTip(1)" @mouseleave="leaveTip(1)"class="tip" data-val="1"  width="16" src="../../../images/icon_wenhao.png" alt=""></div>
                                <div class="shadow" id="shadow1">以微信绑定账号+家庭成员为统计口径</div>
                            </div>
                            <div class="ui-col-1 c-position-r">
                                <div class="c-f16 black">{{topDatas['index_103']}}</div>
                                <div class="visible-xs-inline-block c-f12 health-count black" style="margin-bottom: 33px;margin-top: 5px;">推送人数</div><img @mouseenter="jumpTip(2)" @mouseleave="leaveTip(2)" class="tip" data-val="2" width="12" src="../../../images/icon_wenhao.png" alt="">
                                <div class="c-f24 c-333 mt20 c-t-center">{{topDatas['index_103']}}</div>
                                <div class="health-count c-f16 c-333 pt10 c-t-center" >推送人数<img @mouseenter="jumpTip(2)" @mouseleave="leaveTip(2)"class="tip" data-val="2"  width="16" src="../../../images/icon_wenhao.png" alt=""></div>
                                <div class="shadow" id="shadow2">以微信绑定账号为统计口径</div>
                            </div>
                        </div>
                    </div>
                    <div class="ui-col-1 c-position-r c-t-center">
                        <div class="position-center-text c-f12">推送情况</div>
                    <div class="ui-col-0 c-position-r c-t-center" style="width:30%;">
                        <div class="position-center-text c-f16">推送情况</div>
                        <div id="pieChart" style="width: 100%; height:100px;"></div>
                    </div>
                    <div class="ui-col-0 c-t-center c-17b3ec plr15 c-w-33">
                        <!-- <div class="c-f20 zd-num">{{topDatas['index_5']}}</div>
                        <div class="c-f12">健康指导推送量</div> -->
                        <div class="c-f14 health-title" style="padding-bottom: 10px;">健康指导</div>
                        <div class="ui-grid" style="margin-top: 47px;">
                    <div class="ui-col-1 c-t-center c-ffc800 plr15 c-w-33">
                        <div class="health-count c-f20 c-17b3ec ptb20 c-t-center">健康指导</div>
                        <div class="ui-grid mb50">
                            <div class="ui-col-1 c-position-r">
                                <div class="c-f16 black">{{topDatas['index_5']}}</div>
                                <div class="visible-xs-inline-block c-f12 health-count black" style="margin-top: 5px;">触达人数</div><img @mouseenter="jumpTip(3)" @mouseleave="leaveTip(3)" class="tip" data-val="3" width="12" src="../../../images/icon_wenhao.png" alt="">
                                <div class="shadow" id="shadow3">以微信绑定账号+家庭成员为统计口径</div>
                                <div class="c-f24 c-333 mt20 c-t-center">{{topDatas['index_5']}}</div>
                                <div class="health-count c-f16 c-333 pt10 c-t-center" >触达人数<img @mouseenter="jumpTip(3)" @mouseleave="leaveTip(3)"class="tip" data-val="3"  width="16" src="../../../images/icon_wenhao.png" alt=""></div>
                                <div class="shadow" id="shadow1">以微信绑定账号+家庭成员为统计口径</div>
                            </div>
                            <div class="ui-col-1 c-position-r">
                                <div class="c-f16 black">{{topDatas['index_106']}}</div>
                                <div class="visible-xs-inline-block c-f12 health-count black" style="margin-bottom: 33px;margin-top: 5px;">推送人数</div><img @mouseenter="jumpTip(4)" @mouseleave="leaveTip(4)" class="tip" data-val="4" width="12" src="../../../images/icon_wenhao.png" alt="">
                                <div class="shadow shadowr" id="shadow4">以微信绑定账号为统计口径</div>
                                <div class="c-f24 c-333 mt20 c-t-center">{{topDatas['index_106']}}</div>
                                <div class="health-count c-f16 c-333 pt10 c-t-center" >推送人数<img @mouseenter="jumpTip(4)" @mouseleave="leaveTip(4)"class="tip" data-val="4"  width="16" src="../../../images/icon_wenhao.png" alt=""></div>
                                <div class="shadow" id="shadow2">以微信绑定账号为统计口径</div>
                            </div>
                        </div>
                    </div>
                    
                </div>
            </div>
        	<!--健康教育对应的指标数据 start-->
            <div v-show="index=='5'" class="c-border bgc-fff mt20 article-panel">
                <div class="ptb10 plr10 c-border-b">
                    <span class="c-323232 c-f16 ml5">内容统计</span>
                </div>
                <div class="plr10 ptb10 c-323232">
                    <div class="ui-grid ui-grid-middle">
                        <div class="ui-col-0">文章总数</div>
                        <div class="article-bar mlr10"></div>
                        <div class="ui-col-1"><span class="article-total-count">0</span>篇</div>
                    </div>
                    <div class="ui-grid ui-grid-middle mt5">
                        <div class="ui-col-0">推送文章</div>
                        <div class="send-bar mlr10"></div>
                        <div class="ui-col-1"><span class="article-send-count">0</span>篇</div>
                    </div>
                    <div class="ui-grid c-border-t mt10 pt10">
                        <div class="ui-col-0" style="width: 50%;">
                            <div class="pie-chart" id="articleChart" style="height: 150px; width: 100%;"></div>
                        </div>
                        <div class="ui-col-1">
                            <div class="pie-chart" id="sendChart" style="height: 150px; width: 100%;"></div>
                        </div>
                    </div>
                </div>
            </div>            	
            <!-- 折线图 -->
            <line-chart  v-show="index=='5'" class="mt10" v-on:getlinedata="getNewLineData5" lineid="lineChart5"></line-chart>
            <!-- 微信绑定统计 -->
            <div v-show="index=='21'" class="mt20 c-border bgc-fff">
                <div class="c-border-b plr10 ptb20 c-f16 c-333">{{wxTotal.label}}</div>
@ -196,6 +239,7 @@
        <script src="../../../plugins/echarts/3.8.5/echarts.min.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../api/http-request.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../api/statistics-api.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/element-ui.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../component/common/event-bus.js"></script>
        <script src="../../../component/common/vuedals.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../component/statistics/header-tab.js" type="text/javascript" charset="utf-8"></script>
@ -204,6 +248,8 @@
        <script src="../../../component/statistics/line-chart.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../component/statistics/area-data-panel.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../component/statistics/team-info.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../component/statistics/team-info-dyy.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../component/common/pagination.js"></script>
        <script src="../js/common.js" type="text/javascript" charset="utf-8"></script>
        <script src="../js/comprehensive-analysis.js" type="text/javascript" charset="utf-8"></script>
    </body>

+ 3 - 1
app/statistics/html/consulting-analysis.html

@ -13,10 +13,11 @@
        <link rel="stylesheet" type="text/css" href="../../../css/style.min.css"/>
        <link rel="stylesheet" type="text/css" href="../../../css/cross.css"/>
        <link href="../../../plugins/toastr/toastr.min.css" rel="stylesheet">
        <link rel="stylesheet" type="text/css" href="../../../css/element-ui.css"/>
        <link rel="stylesheet" type="text/css" href="../css/common.css"/>
    </head>
    <body>
        <div id="main" class="c-hide">
        <div id="main" class="c-hide" v-loading.fullscreen.lock="isloading">
            <header-tab :appname="appname" :isback="isback" :isrefresh="isrefresh" :isfilter="isfilter" :isopen="false" ></header-tab>
            <header-prompt></header-prompt>
            <div class="clearfix ">
@ -67,6 +68,7 @@
        <script src="../../../plugins/echarts/3.8.5/echarts.min.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../api/http-request.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../api/statistics-api.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/element-ui.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../component/common/event-bus.js"></script>
        <script src="../../../component/common/vuedals.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../component/statistics/header-tab.js" type="text/javascript" charset="utf-8"></script>

+ 3 - 1
app/statistics/html/estimate-analysis.html

@ -13,6 +13,7 @@
        <link rel="stylesheet" type="text/css" href="../../../css/style.min.css"/>
        <link rel="stylesheet" type="text/css" href="../../../css/cross.css"/>
        <link href="../../../plugins/toastr/toastr.min.css" rel="stylesheet">
        <link rel="stylesheet" type="text/css" href="../../../css/element-ui.css"/>
        <link rel="stylesheet" type="text/css" href="../css/common.css"/>
        <style>
            .tag{
@ -25,7 +26,7 @@
        </style>
    </head>
    <body>
        <div id="main" class="c-hide">
        <div id="main" class="c-hide" v-loading.fullscreen.lock="isloading">
            <header-tab :appname="appname" :isback="true" :isrefresh="true" :isfilter="false" :isopen="false" ></header-tab>
            <header-prompt></header-prompt>
            <div class="c-t-center mt20">
@ -55,6 +56,7 @@
        <script src="../../../plugins/echarts/3.8.5/echarts.min.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../api/http-request.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../api/statistics-api.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/element-ui.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../component/common/event-bus.js"></script>
        <script src="../../../component/common/vuedals.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../component/statistics/header-tab.js" type="text/javascript" charset="utf-8"></script>

+ 1 - 1
app/statistics/html/prescription-analysis.html

@ -21,7 +21,7 @@
        </style>
    </head>
    <body>
        <div id="main" class="c-hide">
        <div id="main" class="c-hide"  v-loading.fullscreen.lock="isloading">
            <header-tab 
                appname="长处方分析" 
                isback="true" 

+ 5 - 2
app/statistics/html/qualifications-analysis.html

@ -32,7 +32,10 @@
				<div class="flex searchDiv">
					<div class="f_s_0">
						<span class="c-f16 c-333 pr10">时&emsp;&emsp;间</span>
						<el-date-picker v-model="dateValue" type="daterange" align="right" unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="defaultValue" value-format="yyyy-MM-dd" :picker-options="pickerOptions">
						<el-date-picker v-model="dateValue[0]" type="date" unlink-panels placeholder="开始日期" value-format="yyyy-MM-dd" :clearable="false" :picker-options="pickerOptions" >
						</el-date-picker>
						<span>—</span>
						<el-date-picker v-model="dateValue[1]" type="date" unlink-panels placeholder="结束日期" value-format="yyyy-MM-dd" :clearable="false" :picker-options="pickerOptions">
						</el-date-picker>
					</div>
					<div class="f_s_0 ml20">
@ -47,7 +50,7 @@
                        <span class="btn bgc-FF9630 ml20 fr" @click="exportData()">导出</span>
					</div>
				</div>
				<el-table border :data="tableData" style="width: 100%" class="mt20">
				<el-table border :data="tableData" style="width: 100%" class="mt20" v-loading="isloading">
					<el-table-column prop="area" label="地区/机构" min-width="200">
						<template slot-scope="scope">
							<div @click="treeClick(scope.row,scope.$index)" style="cursor: pointer;">

+ 3 - 1
app/statistics/html/renew-progress.html

@ -13,11 +13,12 @@
		<link rel="stylesheet" type="text/css" href="../../../css/style.min.css" />
		<link rel="stylesheet" type="text/css" href="../../../css/cross.css" />
		<link href="../../../plugins/toastr/toastr.min.css" rel="stylesheet">
        <link rel="stylesheet" type="text/css" href="../../../css/element-ui.css"/>
		<link rel="stylesheet" type="text/css" href="../css/common.css" />
	</head>
	<body style="margin: 0;">
		<div id="main" class="c-hide">
		<div id="main" class="c-hide" v-loading.fullscreen.lock="isloading">
			<header-tab :appname="appname" :isback="isback" :isrefresh="isrefresh" :isfilter="isfilter" :isopen="isopen"></header-tab>
			<header-prompt></header-prompt>
			<!-- 饼图 -->
@ -65,6 +66,7 @@
		<script src="../js/echarts.min.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../api/http-request.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../api/statistics-api.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/element-ui.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../component/common/event-bus.js"></script>
		<script src="../../../component/common/vuedals.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../component/statistics/header-tab.js" type="text/javascript" charset="utf-8"></script>

+ 6 - 3
app/statistics/html/response-speed-analysis.html

@ -32,8 +32,11 @@
				<div class="flex searchDiv">
                    <div class="f_s_0">
                        <span class="c-f16 c-333 pr10">时&emsp;&emsp;间</span>
                        <el-date-picker v-model="dateValue" type="daterange" align="right" unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="defaultValue" value-format="yyyy-MM-dd" :picker-options="pickerOptions">
                        </el-date-picker>
						<el-date-picker v-model="dateValue[0]" type="date" unlink-panels placeholder="开始日期" value-format="yyyy-MM-dd" :clearable="false" :picker-options="pickerOptions" >
						</el-date-picker>
						<span>—</span>
						<el-date-picker v-model="dateValue[1]" type="date" unlink-panels placeholder="结束日期" value-format="yyyy-MM-dd" :clearable="false" :picker-options="pickerOptions">
						</el-date-picker>
                    </div>
                    <div class="f_s_0 ml20">
                        <span class="c-f16 c-333 pr10">区域范围</span>
@ -56,7 +59,7 @@
                        <span class="btn bgc-FF9630 ml20 fr" @click="exportData()">导出</span>
                    </div>
                </div>
				<el-table border :data="tableData" style="width: 100%" class="mt20">
				<el-table border :data="tableData" style="width: 100%" class="mt20"  v-loading="isloading">
					<el-table-column prop="area" label="地区/机构" min-width="200">
						<template slot-scope="scope">
							<div @click="treeClick(scope.row,scope.$index)" style="cursor: pointer;">

+ 6 - 3
app/statistics/html/service-sheet-analysis.html

@ -40,8 +40,11 @@
				<div class="flex searchDiv">
                    <div class="f_s_0">
                        <span class="c-f16 c-333 pr10">时&emsp;&emsp;间</span>
                        <el-date-picker v-model="dateValue" type="daterange" align="right" unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="defaultValue" value-format="yyyy-MM-dd" :picker-options="pickerOptions">
                        </el-date-picker>
						<el-date-picker v-model="dateValue[0]" type="date" unlink-panels placeholder="开始日期" value-format="yyyy-MM-dd" :clearable="false" :picker-options="pickerOptions" >
						</el-date-picker>
						<span>—</span>
						<el-date-picker v-model="dateValue[1]" type="date" unlink-panels placeholder="结束日期" value-format="yyyy-MM-dd" :clearable="false" :picker-options="pickerOptions">
						</el-date-picker>
                    </div>
                    <div class="f_s_0 ml20">
                        <span class="c-f16 c-333 pr10">区域范围</span>
@ -62,7 +65,7 @@
                        <span class="btn bgc-FF9630 ml20 fr" @click="exportData()">导出</span>
                    </div>
                </div>
				<el-table border :data="tableData" style="width: 100%" class="mt20">
				<el-table border :data="tableData" style="width: 100%" class="mt20" v-loading="isloading">
					<el-table-column prop="area" label="地区/机构" min-width="200">
                        <template slot-scope="scope">
                            <div @click="treeClick(scope.row,scope.$index)" style="cursor: pointer;">

+ 3 - 1
app/statistics/html/sign-progress.html

@ -13,11 +13,12 @@
		<link rel="stylesheet" type="text/css" href="../../../css/style.min.css" />
		<link rel="stylesheet" type="text/css" href="../../../css/cross.css" />
		<link href="../../../plugins/toastr/toastr.min.css" rel="stylesheet">
        <link rel="stylesheet" type="text/css" href="../../../css/element-ui.css"/>
		<link rel="stylesheet" type="text/css" href="../css/common.css" />
	</head>
	<body style="margin: 0;">
		<div id="main" class="c-hide">
		<div id="main" class="c-hide"  v-loading.fullscreen.lock="isloading">
			<header-tab :appname="appname" :isback="isback" :isrefresh="isrefresh" :isfilter="isfilter" :isopen="isopen"></header-tab>
			<header-prompt></header-prompt>
			<!-- 饼图 -->
@ -65,6 +66,7 @@
		<script src="../js/echarts.min.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../api/http-request.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../api/statistics-api.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/element-ui.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../component/common/event-bus.js"></script>
		<script src="../../../component/common/vuedals.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../component/statistics/header-tab.js" type="text/javascript" charset="utf-8"></script>

+ 6 - 3
app/statistics/html/subsidy-cost.html

@ -27,8 +27,11 @@
				<div class="flex searchDiv">
                    <div class="f_s_0">
                        <span class="c-f16 c-333 pr10">时&emsp;&emsp;间</span>
                        <el-date-picker v-model="dateValue" type="daterange" align="right" unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="defaultValue" value-format="yyyy-MM-dd" :picker-options="pickerOptions">
                        </el-date-picker>
						<el-date-picker v-model="dateValue[0]" type="date" unlink-panels placeholder="开始日期" value-format="yyyy-MM-dd" :clearable="false" :picker-options="pickerOptions" >
						</el-date-picker>
						<span>—</span>
						<el-date-picker v-model="dateValue[1]" type="date" unlink-panels placeholder="结束日期" value-format="yyyy-MM-dd" :clearable="false" :picker-options="pickerOptions">
						</el-date-picker>
                    </div>
                    <div class="f_s_0 ml20">
                        <span class="c-f16 c-333 pr10">区域范围</span>
@ -42,7 +45,7 @@
                        <span class="btn bgc-FF9630 ml20 fr" @click="exportData()">导出</span>
                    </div>
                </div>
				<el-table border :data="tableData" style="width: 100%" class="mt20">
				<el-table border :data="tableData" style="width: 100%" class="mt20" v-loading="isloading">
					<el-table-column prop="area" label="地区/机构" min-width="200">
						<template slot-scope="scope">
							<div @click="treeClick(scope.row,scope.$index)" style="cursor: pointer;">

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

@ -24,7 +24,8 @@ new Vue({
			index_2: 0,
			index_9: 0,
			index_10: 0
		}
		},
        isloading:false,  //加载中
	},
	components: {
		vuedals: Vuedals.Component
@ -236,8 +237,10 @@ function loadData(loadArr, vm) {
			newArr.push(loadArr[i]);
		}
	}
    vm.isloading=true    
	if(reqPromise.length > 0) {
		Promise.all(reqPromise).then(function(ress) {
        	vm.isloading=false
			var res1 = [],
			res2 = [];
			if(ress.length==2){

+ 53 - 0
app/statistics/js/common.js

@ -63,6 +63,59 @@ function soreRank(arr){
    return temp;
}
/*
 * 绘制饼图
 */
function drawPie(elId, arry, color, legend, center, radius, title){
    var pieChart = echarts.init(document.getElementById(elId));
    var options = {
        tooltip: {
            trigger: 'item',
            formatter: "{b} : {c} ({d}%)",
//          position: ['50%', '50%']
        },
        color: color,
        series: [
        {
            type:'pie',
            radius: ['80%', '99%'],
            startAngle: 270,
            legendHoverLink: false,
            hoverAnimation: false,
            avoidLabelOverlap: false,
            label: {
                normal: {
                    show: false,
                    textStyle: {
                        color: "#000"
                    }
                }
            },
            labelLine: {
                normal: {
                    show: false 
                }
            },
            data:arry,
        }]
    };
    if(legend){
        options.legend = legend;
    }
    if(center){
        options.series[0].center = center;
    }
    if(radius){
        options.series[0].radius = radius;
    }
    if(title){
        options.title = title
    }
    pieChart.clear();
    pieChart.setOption(options);
}
/*
 * 绘制饼图
 * arry [{name: '', value: ''}]

+ 247 - 23
app/statistics/js/comprehensive-analysis.js

@ -16,6 +16,7 @@ new Vue({
        areaTitle: '',
        index: '3',
        selectedDateType: 1,
        selectedDateType5:1,
        endDate: '',
        startDate: '',
        lowLevel: '',
@ -32,6 +33,8 @@ new Vue({
            index_20: 0,
            index_21: 0,
            index_27: 0,
            index_124: 0,
            index_125: 0,
            index_86: 0
        },
        //微信绑定统计数据
@ -40,7 +43,8 @@ new Vue({
            amount1: '', //已缴费人数
            amount2: '', //未缴费人数
            rate: ''//绑定率
        }
        },
        isloading:false,  //加载中
    },
    components: {
        vuedals: Vuedals.Component
@ -64,12 +68,17 @@ new Vue({
            this.selectedDateType = arg.dateType;
            loadData([1], this);
        },
        getNewLineData5:function(arg){
        	this.selectedDateType5 = arg.dateType;
        	getArticleData(this)
        	
        },
        jumpTip:function(tab){
            console.log("mouseenter");
            $('#shadow'+tab).attr("style","visibility:visible")
            $('#shadow'+tab).css("visibility","visible")
        },
        leaveTip:function(tab){
            $('#shadow'+tab).attr("style","visibility:hidden")
            $('#shadow'+tab).css("visibility","hidden")
        },
        getAreaData: function(arg){
@ -102,12 +111,12 @@ new Vue({
        $(".tip").on('mouseenter', function(){
            console.log("mouse enter");
            var val = $(this).attr("data-val");
            $('#shadow'+val).attr("style","visibility:visible")
            $('#shadow'+val).css("visibility","visible")
        })
        $(".tip").on('mouseleave', function(){
            console.log("mouse leave");
            var val = $(this).attr("data-val");
            $('#shadow'+val).attr("style","visibility:hidden")
            $('#shadow'+val).css("visibility","hidden")
        })
        //初始化数据
        initData(this);
@ -243,11 +252,13 @@ function initReqParams(vm){
        url3 = "statistics/lowlevel_total_mesh";
    }else if(vm.index == '5'){
        url3 = '/statistics/article_lowlevel_total';
    }else if(vm.index == '27'){
        url3 = '/statistics/lowlevel_all';
    }
    reqParam = [{
        url: url2,
        data:{
            index: vm.index == '5' ? '5,83' : vm.index,
            index: vm.index == '5' ? '5,83' : vm.index == 27 ? '27,124,125' : vm.index,
            level: vm.level, 
            area: vm.area, 
            startDate: vm.startDate, 
@ -273,7 +284,7 @@ function initReqParams(vm){
        }
    }];
    
    if(vm.index == '20' || vm.index == '21'){
    if(vm.index == '20' || vm.index == '21' || vm.index == '27'){
        reqParam[1].data.date = vm.endDate;
    }else{
        reqParam[1].data.endDate = vm.endDate;
@ -309,7 +320,7 @@ function getTopReqParams(index1, vm){
function getTopTagDatas(vm){
    var reqs = [],
        indexs = ['3', '4', '5', '27', '21', '20'];
        indexs = ['3', '4', '5', '27', '21', '20','124','125'];
    for(i=0; i<indexs.length; i++){
        var item = getTopReqParams(indexs[i], vm);
        reqs.push(httpRequest.get(item.url, {data: item.data}));
@ -320,6 +331,9 @@ function getTopTagDatas(vm){
            if(res.status == 200){
                for(key in res.data){
                    vm.topDatas[key] = res.data[key];
                    if(vm.chooseYear<2019&&(key=="index_124"||key=="index_125")){
                    	vm.topDatas[key]="--"
                    }
                }
            }else{
                console.log(res.msg);
@ -333,6 +347,7 @@ function loadData(loadArr, vm){
        getTopTagDatas(vm);
    }
    
    vm.isloading=true
    //获取其他请求的参数
    var reqParams = initReqParams(vm),
        reqPromise = [],
@ -353,7 +368,8 @@ function loadData(loadArr, vm){
        newArr.push(3);
    }
    if(reqPromise.length > 0){
        Promise.all(reqPromise).then(function(ress){
        Promise.all(reqPromise).then(function(ress){        	
       		vm.isloading=false
            var res2, res3, res4;
            for(var i=0; i<newArr.length; i++){
                var j = newArr[i] + 1;
@ -372,6 +388,7 @@ function loadData(loadArr, vm){
                if(res2.status == 200){
                    handleSecondPanelData(res2.data, vm);
                    if(vm.index == '5'){
                    	getArticleData(vm)
                        var arr = [{
                            name: '健康文章',
                            value: vm.topDatas.index_83
@ -408,27 +425,37 @@ function handleSecondPanelData(data, vm){
    var xDatas = [],
        yDatas = [],
        names = [],
        colors = ['#12b7f5', '#cd67fd'],
        colors = ['#12b7f5', '#cd67fd','#FF9526'],
        labels = {'3': '咨询量新增趋势', '4': '随访量新增趋势', '5': '触达人数新增趋势', '20': '绑定设备新增趋势', '21': '绑定微信新增趋势', '27': '代预约量新增趋势'}
        index_names = {'index_3': '咨询量', 'index_4': '随访量', 'index_5': '健康指导','index_27':'代预约量','index_21': '绑定微信','index_20': '绑定设备', 'index_83': "健康文章"};
        index_names = {'index_3': '咨询量', 'index_4': '随访量', 'index_5': '健康指导','index_27':'代预约量','index_21': '绑定微信','index_20': '绑定设备', 'index_83': "健康文章", 'index_124': "代预约等级医院", 'index_125': "代预约社区医院"};
    for(var p in data){
        names.push(index_names[p]);
        if(p == 'index_21' || p == 'index_20' || p == "index_86"){
            var xData = _.map(data[p].data, function(o){
            xData = _.map(data[p].data, function(o){
                return o.range;
            });
            var yData = _.map(data[p].data, function(o){
            yData = _.map(data[p].data, function(o){
                return o.amount;
            });
        }else{
            var xData = _.map(data[p], function(o){
                return o.range;
            });
            var yData = _.map(data[p], function(o){
                return o.amount;
            });
        	if(data[p][0].range){
	            xData = _.map(data[p], function(o){
	                return o.range;
	            });
	            yData = _.map(data[p], function(o){
	                return o.amount;
	            });
        	}else{
        		if(p=='index_124'||p=='index_125'){
        			xData=[];yData=[]
        			_.each(data["index_27"], function(o){
		                yData.push(0)
		                xData.push(o.range)
		            });
        		}
        	}
        }
        console.log(xData);
//      console.log(xData);
        xDatas.push(xData);
        yDatas.push(yData);
    }
@ -438,7 +465,8 @@ function handleSecondPanelData(data, vm){
        xData : xDatas[0],
        yDatas : yDatas,
        colors : colors,
        selectedDateType: vm.selectedDateType
        selectedDateType: vm.selectedDateType,
        nowlineid : "lineChart"
    });
}
@ -463,6 +491,15 @@ function listHandle(data, vm){
                cols.push(o.bindRate + '%');
                cols.push(o.weChatAmount1);
                cols.push(o.weChatAmount0);
            }else if(vm.index == '27'){
            	if(vm.chooseYear<2019){            		
	                cols.push("--");
	                cols.push("--");
            	}else{
	                cols.push(o.reservationTotal1Amount0);
	                cols.push(o.reservationTota2Amount0);
            	}
                cols.push(o.reservationTotalAmount0);
            }else{
                cols.push(o.amount);
                if(vm.index == '5'){
@ -483,10 +520,11 @@ function listHandle(data, vm){
            '5': ["排名", "总触达人数", "阅读量", "阅读率"],
            '20': ["排名", "绑定设备"],
            '21': ["排名", "绑定率", "已缴费", "未缴费"],
            "27": ["排名", "代预约量"]
            "27": ["排名", "代预约等级医院", "代预约社区医院", "代预约量"]
        };
        
        EventBus.$emit("render-area-data",{
        	index: vm.index,
            level: vm.level,
            area: vm.area,
            lowLevel: vm.lowLevel,
@ -533,4 +571,190 @@ function getKeyValueArr2(list, key){
    }
    
    return arr;
}
}
//获得健康文章相关的其他的内容
function getArticleData(vm){
    vm.isloading=true
    var reqss=[],reqs = [{
        url: "/statistics/getAppActicleStatisticsData",
        data: {startDate: vm.startDate, endDate: vm.endDate, area: vm.area},
        reqType: 'get'
    }, {
        url: "/statistics/getAppActicleTrendStatisticsData",
        data: {startDate: vm.startDate, endDate: vm.endDate, area: vm.area},
        reqType: 'get'
    }];
    _.each(reqs,function(item){
    	reqss.push(httpRequest.get(item.url, {data: item.data}))
    })
    Promise.all(reqss).then(function(ress){
        var res1 = ress[0],
            res2 = ress[1];
        if(res1.status == 200){
            var data1 = res1.data;
            $(".article-total-count").text(data1.totalContentCount);
            $(".article-send-count").text(data1.totalPushCount);
            var per = '',
                full = '50%';
            if(parseInt(data1.totalContentCount) > parseInt(data1.totalPushCount)){
                per = data1.totalPushCount / data1.totalContentCount * 50;
                $(".article-bar").css('width', "50%");
                $(".send-bar").css('width', per+"%");
            }else{
                if(data1.totalPushCount != 0){
                    per = data1.totalContentCount / data1.totalPushCount * 50;
                    $(".send-bar").css('width', "50%");
                }else{
                    per = 0;
                    $(".send-bar").css('width', 0);
                }
                
                $(".article-bar").css('width', per+"%");
            }
            
            var legend = {
                orient: 'vertical',
	            x: '40%',
	            data: [],
	            itemGap: 30,
	            top: 'middle',
	            icon: 'circle',
	            align: 'left',
            };
            var colors = ["#15c1b0", "#428ffd", "#9892fb", "#f67279", "#fdc44f"];
            legendNames = [];
            var arr1 = _.map(data1.contentDistrPie, function(o){
                var obj = {
                    name: o.categoryName,
                    count: parseInt(o.contentCount)
                };
                legend.data.push(o.categoryName)
                legendNames.push(obj);
                return {
                    value: parseInt(o.contentCount),
                    name: o.categoryName
                }
            });
            legend.formatter = function(name){
                var total = 0;
                var target;
//              console.log(this)
                for (var i = 0, l = legendNames.length; i < l; i++) {
                    total += parseInt(legendNames[i].count);
                    if (legendNames[i].name == name) {
                        target = parseInt(legendNames[i].count);
                    }
                }
//              console.log(((target/total)*100).toFixed(2)+'% (' + name +')');
                return ((target/total)*100).toFixed(2)+'% (' + name +')';
            }
            var title = {
                text: '内容分布',
                x:'left',
                textStyle:{
                    fontWeight: 400,
                    fontSize: 16
                }
            }
            drawPie("articleChart", arr1, colors, legend, ['25%', '50%'], ['55%', '70%'], title);
            var arr2 = [
                {value: parseInt(data1.userBehaviorPie.shareCount), name: '分享'},
                {value: parseInt(data1.userBehaviorPie.browseCount), name: '浏览'},
                {value: parseInt(data1.userBehaviorPie.collectCount), name: '收藏'},
                {value: parseInt(data1.userBehaviorPie.zanCount), name: '点赞'},
            ];
            var legendNames2 = [{name: "分享", count: parseInt(data1.userBehaviorPie.shareCount)},
                                {name: "浏览", count: parseInt(data1.userBehaviorPie.browseCount)},
                                {name: "收藏", count: parseInt(data1.userBehaviorPie.collectCount)},
                                {name: "点赞", count: parseInt(data1.userBehaviorPie.zanCount)}];
            legend.data=["分享","浏览","收藏","点赞"]
            legend.formatter = function(name){
                var total = 0;
                var target;
                for (var i = 0, l = legendNames2.length; i < l; i++) {
                    total += legendNames2[i].count;
                    if (legendNames2[i].name == name) {
                        target = legendNames2[i].count;
//                      console.log(target)
                    }
                }
                var rs = "";
                if(total == 0){
                    rs = "0% ("+name+")";
                }else{
                    rs = ((target/total)*100).toFixed(2)+'% (' + name +')'
                }
                return rs;
            }
            var title = {
                text: '推送分析',
                x:'left',
                textStyle:{
                    fontWeight: 400,
                    fontSize: 16
                }
            }
            drawPie("sendChart", arr2, colors, legend, ['25%', '50%'], ['55%', '70%'], title)
        }else{
            vm.$message.error(res1.msg);
        }
        if(res2.status == 200){
            articleTrendData = res2.data;
            handleArticleTrendChart(articleTrendData,vm);
        }else{
            vm.$message.error(res2.msg);
        }
        vm.isloading=false
    })
}
/*
 * 处理健康文章运营统计折线图数据
 */
function handleArticleTrendChart(articleTrendData,vm){
    var data = {};
    if(vm.selectedDateType5 == 1){
        data = articleTrendData.day;
    }else if(vm.selectedDateType5 == 2){
        data = articleTrendData.week;
    }else{
        data = articleTrendData.month;
    }
    var dataZoom_end,
        xDatas = [],
        yDatas = [],
        names = [],
        colors = [];
    for(var p in data){
        if(p == 'contentList'){
            names.push("新增内容量");
            colors.push('#1dff67');
        }else if(p == 'pushList'){
            names.push("新增推送量");
            colors.push('#ffd132');
        }else if(p == 'readList'){
            names.push("新增阅读量");
            colors.push('#00deff');
        }
        var xData = _.map(data[p], function(o){
            return o.date;
        });
        var yData = _.map(data[p], function(o){
            return o.count;
        });
        
        xDatas.push(xData);
        yDatas.push(yData);
    }
    EventBus.$emit("draw-line-chart", {
        panelName : "运营统计",
        quotaNames : names,
        xData : xDatas[0],
        yDatas : yDatas,
        colors : colors,
        selectedDateType: vm.selectedDateType5,        
        nowlineid : "lineChart5",
        unit:"篇"
    });
}

+ 4 - 2
app/statistics/js/consulting-analysis.js

@ -19,7 +19,8 @@ new Vue({
            noRelyCount: 0,
            noRelyRate: 0,
            relyRate: 0
        }
        },
        isloading:false,  //加载中
    },
    components: {
        vuedals: Vuedals.Component
@ -162,9 +163,10 @@ function loadData(loadArr, vm){
        var param = reqParams[j];
        reqPromise.push(httpRequest.get(param.url, {data: param.data}));
    }
        
    vm.isloading=true    
    if(reqPromise.length > 0){
        Promise.all(reqPromise).then(function(ress){
        	vm.isloading=false
            var res1, res2, res2;
            for(var i=0; i<loadArr.length; i++){
                var j = loadArr[i] + 1;

+ 4 - 2
app/statistics/js/estimate-analysis.js

@ -9,7 +9,8 @@ new Vue({
        area: '',
        startDate: '',
        endDate: '',
        avg: 0
        avg: 0,
        isloading:false,
    },
    components: {
        vuedals: Vuedals.Component
@ -135,7 +136,7 @@ function loadData(loadArr, vm){
            reqPromise.push(httpRequest.get(param.url, {data: param.data}));
        }
    }
    
    vm.isloading=true
    //因为中间区域的请求时间较长,所以另外放出来处理
    if(sendPanelReq.length > 0){
        //删除loadArr里的1
@ -198,6 +199,7 @@ function handleSecondPanelData(data, vm){
        yData.push(item.socre);
    }
    drawLine(xData, yData, '平均评分', '#12b7f5');
	vm.isloading=false
}
function listHandle(data, vm){

+ 4 - 2
app/statistics/js/prescription-analysis.js

@ -46,7 +46,8 @@ new Vue({
            {name: "19~30岁", color: "#4ce428", value: 0},
            {name: "31~50岁", color: "#24bbfa", value: 0},
            {name: "51~64岁", color: "#fb5dab", value: 0},
            {name: "65岁以上", color: "#9b5ffd", value: 0}]
            {name: "65岁以上", color: "#9b5ffd", value: 0}],
        isloading:false,
    },
    components: {
        vuedals: Vuedals.Component
@ -387,9 +388,10 @@ function loadData(loadArr, vm){
        var param = reqParams[j];
        reqPromise.push(httpRequest.get(param.url, {data: param.data}));
    }
        
    vm.isloading=true    
    if(reqPromise.length > 0){
        Promise.all(reqPromise).then(function(ress){
        	vm.isloading=false
            var res1, res2, res2;
            for(var i=0; i<loadArr.length; i++){
                var j = loadArr[i] + 1;

+ 12 - 52
app/statistics/js/qualifications-analysis.js

@ -17,54 +17,13 @@ new Vue({
		tableData: [],
		valueArea: "350203",
		optionsArea: [{code:"350203",name:"思明区"}],
		dateValue: "",
		defaultValue: ['00:00:00', '23:59:59'],
		dateValue: [],
		pickerOptions: {
			shortcuts: [{
				text: '最近一周',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
					picker.$emit('pick', [start, end]);
				}
			}, {
				text: '最近一个月',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setMonth(start.getMonth() - 1);
					picker.$emit('pick', [start, end]);
				}
			}, {
				text: '最近三个月',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setMonth(start.getMonth() - 3);
					picker.$emit('pick', [start, end]);
				},
			}, {
				text: '最近半年',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setMonth(start.getMonth() - 6);
					picker.$emit('pick', [start, end]);
				},
			}, {
				text: '最近一年',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setFullYear(start.getFullYear() - 1);
					picker.$emit('pick', [start, end]);
				},
			}],
			disabledDate: function(d) {
				return d > new Date();
			}
		}
		},
        isloading:false,  //加载中
	},
	components: {
		vuedals: Vuedals.Component
@ -75,7 +34,7 @@ new Vue({
		var end = new Date();
		var start = new Date();
		start.setDate(1)
		vm.dateValue = [start, end]
		vm.dateValue = [start.format("yyyy-MM-dd"), end.format("yyyy-MM-dd")]
		vm.initData()
//      vm.getDistrict()
		//初始化数据
@ -97,18 +56,19 @@ new Vue({
		initData: function() {
		    var vm=this
		    var startDate,endDate
		    if(typeof(vm.dateValue[0])!="string"){
		        startDate=vm.dateValue[0].format("yyyy-MM-dd")
                endDate=vm.dateValue[1].format("yyyy-MM-dd")
		    }else{
		        startDate=vm.dateValue[0]
                endDate=vm.dateValue[1]
		    }		   
		    if(vm.dateValue[0]>vm.dateValue[1]){
		    	vm.$message.warning("开始时间应小于结束时间")
		    	return false
		    }
		    vm.isloading=true
	        startDate=vm.dateValue[0]
            endDate=vm.dateValue[1]
            var params={
                userAgent:localStorage.getItem('wlyyAgentForDoc'),
                area:vm.valueArea,startDate:startDate,endDate:endDate,
            }
            statisticAPI.doorQualificationAnalyze(params).then(function(res) {
		    	vm.isloading=false
                if(res.status == 200) {
                    vm.tableData=res.data
                    util.treeTableXcode(vm.tableData);

+ 4 - 1
app/statistics/js/renew-progress.js

@ -33,7 +33,8 @@ new Vue({
			switchAmount: "",
			switchRateAll: ""
		},
		contentHtml: ""
		contentHtml: "",
        isloading:false,  //加载中
	},
	components: {
		vuedals: Vuedals.Component
@ -324,8 +325,10 @@ function loadData(loadArr, vm) {
		}));
		newArr.push(loadArr[i]);
	}
	vm.isloading=true
	if(reqPromise.length > 0) {
		Promise.all(reqPromise).then(function(ress) {
			vm.isloading=false
			var res1, res2, res3;
			for(var i = 0; i < loadArr.length; i++) {
				var j = loadArr[i] + 1;

+ 12 - 52
app/statistics/js/response-speed-analysis.js

@ -18,54 +18,13 @@ new Vue({
        valueArea: "350203",
        optionsArea: [{code:"350203",name:"思明区"}],
		roleType:"1",  //1、调度员,2、服务医生
		dateValue: "",
		defaultValue: ['00:00:00', '23:59:59'],
		dateValue: [],
		pickerOptions: {
			shortcuts: [{
				text: '最近一周',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
					picker.$emit('pick', [start, end]);
				}
			}, {
				text: '最近一个月',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setMonth(start.getMonth() - 1);
					picker.$emit('pick', [start, end]);
				}
			}, {
				text: '最近三个月',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setMonth(start.getMonth() - 3);
					picker.$emit('pick', [start, end]);
				},
			}, {
				text: '最近半年',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setMonth(start.getMonth() - 6);
					picker.$emit('pick', [start, end]);
				},
			}, {
				text: '最近一年',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setFullYear(start.getFullYear() - 1);
					picker.$emit('pick', [start, end]);
				},
			}],
			disabledDate: function(d) {
				return d > new Date();
			}
		}
		},
		isloading:false,  //加载中
	},
	components: {
		vuedals: Vuedals.Component
@ -76,7 +35,7 @@ new Vue({
		var end = new Date();
		var start = new Date();
		start.setDate(1)
		vm.dateValue = [start, end]
		vm.dateValue = [start.format("yyyy-MM-dd"), end.format("yyyy-MM-dd")]
		//初始化数据
        vm.initData()
//      vm.getDistrict()
@ -98,18 +57,19 @@ new Vue({
        initData: function() {
            var vm=this
            var startDate,endDate
            if(typeof(vm.dateValue[0])!="string"){
                startDate=vm.dateValue[0].format("yyyy-MM-dd")
                endDate=vm.dateValue[1].format("yyyy-MM-dd")
            }else{
                startDate=vm.dateValue[0]
                endDate=vm.dateValue[1]
            }          
		    if(vm.dateValue[0]>vm.dateValue[1]){
		    	vm.$message.warning("开始时间应小于结束时间")
		    	return false
		    }
		    vm.isloading=true
	        startDate=vm.dateValue[0]
            endDate=vm.dateValue[1]
            var params={
                userAgent:localStorage.getItem('wlyyAgentForDoc'),
                area:vm.valueArea,startDate:startDate,endDate:endDate,roleType:vm.roleType
            }
            statisticAPI.doorResponseAnalyze(params).then(function(res) {
		    	vm.isloading=false
                if(res.status == 200) {
                    vm.tableData=res.data
                    util.treeTableXcode(vm.tableData);

+ 12 - 52
app/statistics/js/service-sheet-analysis.js

@ -19,54 +19,13 @@ new Vue({
		optionsArea: [{code:"350203",name:"思明区"}],
		valueType:'',
		optionsType:[{name:'全部',code:''},{name:'家医代预约',code:'3'},{name:'居民自主预约',code:'1'}],//发起类型(1本人发起 2家人待预约 3家医代预约)
		dateValue: "",
		defaultValue: ['00:00:00', '23:59:59'],
		dateValue: [],
		pickerOptions: {
			shortcuts: [{
				text: '最近一周',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
					picker.$emit('pick', [start, end]);
				}
			}, {
				text: '最近一个月',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setMonth(start.getMonth() - 1);
					picker.$emit('pick', [start, end]);
				}
			}, {
				text: '最近三个月',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setMonth(start.getMonth() - 3);
					picker.$emit('pick', [start, end]);
				},
			}, {
				text: '最近半年',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setMonth(start.getMonth() - 6);
					picker.$emit('pick', [start, end]);
				},
			}, {
				text: '最近一年',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setFullYear(start.getFullYear() - 1);
					picker.$emit('pick', [start, end]);
				},
			}],
			disabledDate: function(d) {
				return d > new Date();
			}
		}
		},
        isloading:false,  //加载中
	},
	components: {
		vuedals: Vuedals.Component
@ -78,7 +37,7 @@ new Vue({
		var start = new Date();
		start.setDate(1)
//		start.setFullYear(start.getFullYear() - 1);
		vm.dateValue = [start, end]
		vm.dateValue = [start.format("yyyy-MM-dd"), end.format("yyyy-MM-dd")]
		//初始化数据
        vm.initData()
//      vm.getDistrict()
@ -100,19 +59,20 @@ new Vue({
        initData: function() {
            var vm=this
            var startDate,endDate
            if(typeof(vm.dateValue[0])!="string"){
                startDate=vm.dateValue[0].format("yyyy-MM-dd")
                endDate=vm.dateValue[1].format("yyyy-MM-dd")
            }else{
                startDate=vm.dateValue[0]
                endDate=vm.dateValue[1]
            }          
		    if(vm.dateValue[0]>vm.dateValue[1]){
		    	vm.$message.warning("开始时间应小于结束时间")
		    	return false
		    }
		    vm.isloading=true
	        startDate=vm.dateValue[0]
            endDate=vm.dateValue[1]
            var params={
                userAgent:localStorage.getItem('wlyyAgentForDoc'),
				area:vm.valueArea,startDate:startDate,endDate:endDate,
				type:vm.valueType
            }
            statisticAPI.doorServiceOrderAnalyze(params).then(function(res) {
		    	vm.isloading=false
                if(res.status == 200) {
                    vm.tableData=res.data
                    util.treeTableXcode(vm.tableData);

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

@ -33,7 +33,8 @@ new Vue({
			completeRateAll: ""
		},
		yearHtml: "",
		contentHtml: ""
		contentHtml: "",
        isloading:false,  //加载中
	},
	components: {
		vuedals: Vuedals.Component
@ -307,8 +308,10 @@ function loadData(loadArr, vm) {
		}));
		newArr.push(loadArr[i]);
	}
	vm.isloading=true
	if(reqPromise.length > 0) {
		Promise.all(reqPromise).then(function(ress) {
			vm.isloading=false
			var res1, res2, res3;
			for(var i = 0; i < loadArr.length; i++) {
				var j = loadArr[i] + 1;

+ 12 - 52
app/statistics/js/subsidy-cost.js

@ -17,54 +17,13 @@ new Vue({
		tableData: [],
        valueArea: "350203",
        optionsArea: [{code:"350203",name:"思明区"}],
		dateValue: "",
		defaultValue: ['00:00:00', '23:59:59'],
		dateValue: [],
		pickerOptions: {
			shortcuts: [{
				text: '最近一周',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
					picker.$emit('pick', [start, end]);
				}
			}, {
				text: '最近一个月',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setMonth(start.getMonth() - 1);
					picker.$emit('pick', [start, end]);
				}
			}, {
				text: '最近三个月',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setMonth(start.getMonth() - 3);
					picker.$emit('pick', [start, end]);
				},
			}, {
				text: '最近半年',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setMonth(start.getMonth() - 6);
					picker.$emit('pick', [start, end]);
				},
			}, {
				text: '最近一年',
				onClick: function(picker) {
					var end = new Date();
					var start = new Date();
					start.setFullYear(start.getFullYear() - 1);
					picker.$emit('pick', [start, end]);
				},
			}],
			disabledDate: function(d) {
				return d > new Date();
			}
		}
		},
        isloading:false,  //加载中
	},
	components: {
		vuedals: Vuedals.Component
@ -75,7 +34,7 @@ new Vue({
		var end = new Date();
		var start = new Date();
		start.setDate(1)
		vm.dateValue = [start, end]
		vm.dateValue = [start.format("yyyy-MM-dd"), end.format("yyyy-MM-dd")]
		//初始化数据
        vm.initData()
//      vm.getDistrict()
@ -96,18 +55,19 @@ new Vue({
        initData: function() {
            var vm=this
            var startDate,endDate
            if(typeof(vm.dateValue[0])!="string"){
                startDate=vm.dateValue[0].format("yyyy-MM-dd")
                endDate=vm.dateValue[1].format("yyyy-MM-dd")
            }else{
                startDate=vm.dateValue[0]
                endDate=vm.dateValue[1]
            }          
		    if(vm.dateValue[0]>vm.dateValue[1]){
		    	vm.$message.warning("开始时间应小于结束时间")
		    	return false
		    }
		    vm.isloading=true
	        startDate=vm.dateValue[0]
            endDate=vm.dateValue[1]
            var params={
                userAgent:localStorage.getItem('wlyyAgentForDoc'),
                area:vm.valueArea,startDate:startDate,endDate:endDate,
            }
            statisticAPI.subsidyExpense(params).then(function(res) {
		    	vm.isloading=false
                if(res.status == 200) {
                    vm.tableData=res.data
                    util.treeTableXcode(vm.tableData);

+ 14 - 3
component/statistics/area-data-panel.js

@ -26,6 +26,7 @@
        props:[],
        data: function(){
            return {
            	index: '',
                level: '',
                lowLevel: '',
                area: '',
@ -38,6 +39,7 @@
        mounted: function(){
            var vm = this;
            EventBus.$on("render-area-data", function(arg){
            	vm.index = arg.index;
                vm.level = arg.level;
                vm.lowLevel = arg.lowLevel;
                vm.area = arg.area;
@ -90,13 +92,22 @@
                        lowLevel: this.lowLevel,
                    });
                }else{
                	var title="团队信息"
                	var size="md"
                	var component='team-info'
                	if(this.index==27){
                		title="团队信息和代预约记录"
                		size="lg"
                		component='team-info-dyy'
                	}
                    //弹框显示团队信息
                    Vuedals.Bus.$emit('new', {
                        title: '团队信息',
                        component: 'team-info',
                        title: title,
                        component: component,
                        props: {
                            teamId: row.code
                        }
                        },
                        size:size
                    });
                }
            },

+ 41 - 50
component/statistics/line-chart.js

@ -6,7 +6,7 @@
        template: '<div class="mtb10 bgc-fff c-border pb10">\
            <div class="ui-grid ui-grid-middle plr10 c-border-b">\
                <div class="ui-col-0">\
                    <span class="c-333 c-bold c-f14">{{panelName}}</span>\
                    <span class="c-333 c-f16">{{panelName}}</span>\
                </div>\
                <div class="ui-col-1 c-t-right ptb5">\
                    <span class="date-tag" :class="{active: selectedDateType == 1}" data-type="1" @click="changeType(1)">日</span><!--\
@ -18,16 +18,24 @@
                <div v-if="showDatePanel" class="ui-col-1" >\
                    <span>数据时间:</span>\
                    <el-date-picker\
                      v-model="dateValue"\
                      type="daterange"\
                      align="right"\
                      v-model="defaultValue[0]"\
                      type="date"\
                      unlink-panels\
                      range-separator="至"\
                      start-placeholder="开始日期"\
                      end-placeholder="结束日期"\
                      :default-value="defaultValue"\
                      placeholder="开始日期"\
                      :picker-options="pickerOptions2"\
                      @change="dateChange"\
                      value-format="yyyy-MM-dd"\
                    >\
                    </el-date-picker>\
                    <span>—</span>\
                    <el-date-picker\
                      v-model="defaultValue[1]"\
                      type="date"\
                      unlink-panels\
                      placeholder="结束日期"\
                      :picker-options="pickerOptions2"\
                      @change="dateChange"\
                      value-format="yyyy-MM-dd"\
                    >\
                    </el-date-picker>\
                </div>\
@ -36,7 +44,7 @@
            </div>\
            <div class="line-chart" :id="lineid" style="height: 200px; width: 100%;"></div>\
        </div>',
        props:['lineid', 'showDatePanel', "chooseYear"],
        props:['lineid', 'showDatePanel'],
        data: function(){
            return {
                selectedDateType: 1,
@ -47,37 +55,13 @@
                dateValue: "",
                defaultValue: [],
                pickerOptions2: {
                    shortcuts: [{
                        text: '最近一周',
                        onClick: function(picker) {
                          var end = new Date();
                          var start = new Date();
                          start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
                          picker.$emit('pick', [start, end]);
                        }
                    }, {
                        text: '最近一个月',
                        onClick: function(picker) {
                          var end = new Date();
                          var start = new Date();
                          start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
                          picker.$emit('pick', [start, end]);
                        }
                    }, {
                        text: '最近三个月',
                        onClick: function(picker) {
                          var end = new Date();
                          var start = new Date();
                          start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
                          picker.$emit('pick', [start, end]);
                        }
                    }],
                    disabledDate: function(d){
                        var start = new Date(getStartDate(chooseYear)+" 00:00:00"),
                            end = new Date(getEndDate(chooseYear)+" 23:59:59");
                        return d < start || d > end;
                    }
                }
                },
                chooseYear:"",
            }
        },
        methods: {
@ -86,26 +70,33 @@
                //触发页面更新折线图的数据,触发器是父类页面自定在组件上的
                this.$emit("getlinedata", {dateType: type});
            },
            dateChange: function(val){
                var start = val[0].format("yyyy-MM-dd"),
                    end = val[1].format("yyyy-MM-dd");
                this.$emit("getlinedata", {dateType: this.selectedDateType, dateValue: [start, end]});
            dateChange: function(){
            	var vm=this
            	if(vm.defaultValue[0]&&vm.defaultValue[1]){
            		if(vm.defaultValue[0]>vm.defaultValue[1]){
            			vm.$message.warning("开始时间应小于结束时间")
            		}else{
            			this.$emit("getlinedata", {dateType: this.selectedDateType, dateValue: [vm.defaultValue[0], vm.defaultValue[1]]});
            		}
            	}
            }
        },
        mounted: function(){
            var vm = this;
            EventBus.$on("draw-line-chart", function(arg){
                vm.panelName = arg.panelName;
                if(arg.selectedDateType){
                    vm.selectedDateType = arg.selectedDateType;
                }
                if(arg.unit){
                    vm.unit = arg.unit;
                }
                vm.dateValue = arg.dateValue;
                vm.chooseYear = arg.chooseYear;
                chooseYear = arg.chooseYear;
                drawLine(vm, arg);
            	if(!arg.nowlineid||arg.nowlineid == vm.lineid){            		
	                vm.panelName = arg.panelName;
	                if(arg.selectedDateType){
	                    vm.selectedDateType = arg.selectedDateType;
	                }
	                if(arg.unit){
	                    vm.unit = arg.unit;
	                }
	                vm.dateValue = arg.dateValue;
//	                vm.chooseYear = arg.chooseYear;
	                chooseYear = arg.chooseYear;
	                drawLine(vm, arg);
            	}
            })
            
            EventBus.$on("change-date-value", function(arg){

+ 5 - 5
component/statistics/prescription-filter.js

@ -3,15 +3,15 @@
        template: '<div style="height: 400px;overflow: auto;">\
            <div class="mt10 ml10 filter-title">统计维度</div>\
            <div class="c-row mt10 plr20">\
                <div v-for="type in types" class="c-33 mt10" :class="{\'active\': sumType==type.value}" @click="selectType(type.value)"><a>{{type.name}}</a></div>\
                <div v-for="type in types" class="c-33 mt10" style="margin-left:0;margin-right:3%;" :class="{\'active\': sumType==type.value}" @click="selectType(type.value)"><a>{{type.name}}</a></div>\
            </div>\
            <div class="mt10 ml10 filter-title">慢病类型</div>\
            <div class="c-row mt20 plr20">\
                <div v-for="dis in diseases" class="c-33 mt10" :class="{\'active\': disease==dis.code}" @click="selectDisease(dis.code)"><a>{{dis.name}}</a></div>\
            <div class="c-row mt10 plr20">\
                <div v-for="dis in diseases" class="c-33 mt10" style="margin-left:0;margin-right:3%;" :class="{\'active\': disease==dis.code}" @click="selectDisease(dis.code)"><a>{{dis.name}}</a></div>\
            </div>\
            <div class="mt10 ml10 filter-title">年度维度</div>\
            <div class="c-row mt20 plr20">\
                <div v-for="year in years" class="c-33 mt10" :class="{\'active\': chooseYear==year}" @click="selectYear(year)"><a>{{year}}</a></div>\
            <div class="c-row mt10 plr20">\
                <div v-for="year in years" class="c-33 mt10" style="margin-left:0;margin-right:3%;" :class="{\'active\': chooseYear==year}" @click="selectYear(year)"><a>{{year}}</a></div>\
            </div>\
            <div id="footer">\
                <div class="c-row btn-wrap c-border-top fr">\

+ 3 - 3
component/statistics/resident-analysis-filter.js

@ -33,13 +33,13 @@
				    year = now.getFullYear();
				var yearHtml = "";
				if(now.getMonth() >= 6){
				    yearHtml += '<div class="c-33 active" data-val="'+year+'"><a>'+year+"</a></div>";
				    yearHtml += '<div  class="c-33 mt20 active" style="margin-left:0;margin-right:3%;" data-val="'+year+'"><a>'+year+"</a></div>";
				}
				for(i=year-1; i>=2016; i--){
				    if(i == (year-1) && now.getMonth() < 6){
				        yearHtml += '<div class="c-33 active" data-val="'+i+'"><a>'+i+"</a></div>";
				        yearHtml += '<div  class="c-33 mt20 active" style="margin-left:0;margin-right:3%;" data-val="'+i+'"><a>'+i+"</a></div>";
				    }else{
				        yearHtml += '<div class="c-33" data-val="'+i+'"><a>'+i+"</a></div>";
				        yearHtml += '<div  class="c-33 mt20" style="margin-left:0;margin-right:3%;" data-val="'+i+'"><a>'+i+"</a></div>";
				    }
				}
                  this.yearHtml = yearHtml;

+ 2 - 2
component/statistics/sign-progress-filter.js

@ -2,8 +2,8 @@
    Vue.component('sign-progress-filter',{
        template:'<div style="height: 400px;overflow: auto;margin-bottom: 50px;">\
				<div class="mt10 ml10 filter-title">统计年份</div>\
				<div class="c-row mt20 ml40 mr10" id="signYear">\
				    <div v-for="year in years" class="c-33" :class="{\'active\': year==chooseYear}" @click="yearClick(year)"><a>{{year}}</a></div>\
				<div class="c-row ml40 mr10" id="signYear">\
				    <div v-for="year in years"  class="c-33 mt20" style="margin-left:0;margin-right:3%;" :class="{\'active\': year==chooseYear}" @click="yearClick(year)"><a>{{year}}</a></div>\
				</div>\
				<div class="mt20 ml10 filter-title">统计维度</div>\
				<div class="div-content">\

+ 113 - 0
component/statistics/team-info-dyy.js

@ -0,0 +1,113 @@
(function(){
    Vue.component('team-info-dyy',{
        template: '<div class="team-info-dyy" style="height:500px;overflow:auto;">\
        	<div class="dyy-title">团队信息</div>\
        	<div class="ui-grid mt20 c-f16 c-333 plr20">\
        		<div class="ui-col-0 pr10" style="width:50%"><span class="c-999">团队名称:</span>{{team.name}}</div>\
        		<div class="ui-col-0 pl10" style="width:50%"><span class="c-999">所在社区:</span>{{team.hospitalName}}</div>\
        	</div>\
        	<div class="mt20 c-f16 c-333 plr20" style="word-break: break-all;"><span class="c-999">团队长:</span>{{team.leaderName}}</div>\
        	<div class="mt20 c-f16 c-333 plr20 pb40 c-border-b mb20" style="word-break: break-all;"><span class="c-999">团队成员:</span><span v-for="(member, index) in members">{{index==0? "": " 、"}}{{member.name}}</span>\</div>\
            <div class="dyy-title">代预约记录</div>\
            <div id="sc_table" class="p20">\
				<table class="table-bordered table-striped width-100 c-t-center">\
					<thead>\
						<tr>\
							<th>居民姓名</th>\
							<th>挂号时间</th>\
							<th>预约医生</th>\
							<th>预约医院</th>\
							<th>就诊时间</th>\
						</tr>\
					</thead>\
					<tbody v-loading="isloading">\
						<tr v-if="!wujilu" v-for="(data, index) in tablelist">\
							<td style="width:80px">{{data.name}}</td>\
							<td >{{data.czrq}}</td>\
							<td >{{data.doctorName}}</td>\
							<td>{{data.orgName}}</td>\
							<td >{{data.startTime}}</td>\
						</tr>\
						<tr v-if="wujilu">\
							<td colspan="6">无记录</td>\
						</tr>\
					</tbody>\
				</table>\
				<navigation :pages="pagetotal" :current="currentPage" @navpage="search" :total="total" :size="pagesize"></navigation>\
			</div>\
        </div>',
        props:['teamId'],
        data: function(){
            return {
                team: {},
                members: [],
                memberLength: 0,                
				pagesize: 5,
				total: "",
				pagetotal: '', //总页数
				currentPage: 1, //当前页数
				tablelist: [],
				wujilu: false,
				isloading:false,
            }
        },
        mounted: function(){
            console.log(this.teamId);
            var vm = this;
            getTeamInfo(vm);
            vm.getDatas()
        },
        methods:{
        	getDatas:function(){
        		var vm = this
				var params = {
					teamId: 5 || vm.teamId,
					pageIndex: vm.currentPage,
					pageSize: vm.pagesize
				}
				vm.isloading=true
				statisticAPI.GetReservationByTeamId(params).then(function(res) {
					vm.isloading=false
					if(res.status == 200) {
						vm.wujilu = false
						vm.total = res.data.total
						vm.pagetotal = Math.ceil(res.data.total / vm.pagesize)
						vm.tablelist = res.data.list;
						if(vm.tablelist.length == 0) {
							vm.wujilu = true
						}
					} else {
						showErrorMessage(res.msg);
					}
				})
        	},        
			//页面跳转
			search: function(page) {
				var vm = this
				vm.currentPage = page
				vm.getDatas()
			},
        }
    });
    
    function getTeamInfo(vm){
        var params = {
            teamId: vm.teamId
        };
        statisticAPI.getTeamInfo(params).then(function(res){
            if(res.status == 200){
                vm.team = res.data.team;
                vm.members = res.data.members;
                vm.memberLength = res.data.members.length;
            }else{
                console.log(res.msg);
            }
        })
    }
    
	function showErrorMessage(msg) {
		layer.msg(msg, {
			icon: 5
		})
	}
})()

+ 2 - 2
component/statistics/year-filter.js

@ -2,8 +2,8 @@
    Vue.component('year-filter', {
        template: '<div style="height: 400px;overflow: auto;">\
            <div class="mt10 ml10 filter-title">统计年份</div>\
            <div class="c-row mt20 ml40 mr10">\
                <div v-for="year in years" class="c-33" :class="{\'active\': year==selectedYear}" @click="chooseYear(year)"><a>{{year}}</a></div>\
            <div class="c-row ml40 mr10">\
                <div v-for="year in years" class="c-33 mt20" style="margin-left:0;margin-right:3%;" :class="{\'active\': year==selectedYear}" @click="chooseYear(year)"><a>{{year}}</a></div>\
            </div>\
            <div id="footer">\
                <div class="c-row btn-wrap c-border-top fr">\