Browse Source

Merge branch 'master' of http://192.168.1.220:10080/raolu/PC-application

Xiao_yanpeng 7 years ago
parent
commit
401326d826
31 changed files with 2392 additions and 419 deletions
  1. 2 2
      app/record/html/lay_followUp_detail.html
  2. 72 0
      app/record/html/tpl_follow_detail/followup_.html
  3. 50 0
      app/record/html/tpl_follow_detail/followup_education.html
  4. 72 0
      app/record/html/tpl_follow_detail/followup_evaluate.html
  5. 71 0
      app/record/html/tpl_follow_detail/followup_guidance.html
  6. 31 0
      app/record/html/tpl_follow_detail/followup_inspect.html
  7. 133 0
      app/record/html/tpl_follow_detail/followup_medication.html
  8. 54 0
      app/record/html/tpl_follow_detail/followup_register.html
  9. 70 0
      app/record/html/tpl_follow_detail/followup_sign.html
  10. 50 0
      app/record/html/tpl_follow_detail/followup_symptom.html
  11. 6 6
      app/record/html/tpl_follow_detail/follow_tabs.html
  12. 83 0
      app/record/html/tpl_follow_detail/followup_target.html
  13. BIN
      app/record/html/tpl_follow_detail/image/dianxuan_btn.png
  14. BIN
      app/record/html/tpl_follow_detail/image/dianxuan_pre.png
  15. BIN
      app/record/html/tpl_follow_detail/image/gouxuan_btn.png
  16. BIN
      app/record/html/tpl_follow_detail/image/gouxuan_pre.png
  17. 15 0
      app/record/html/tpl_follow_detail/js/education.js
  18. 20 0
      app/record/html/tpl_follow_detail/js/evaluate.js
  19. 45 36
      app/record/html/tpl_follow_detail/js/followup-tabs.js
  20. 88 0
      app/record/html/tpl_follow_detail/js/guidance.js
  21. 56 0
      app/record/html/tpl_follow_detail/js/inspect.js
  22. 187 0
      app/record/html/tpl_follow_detail/js/medication.js
  23. 101 0
      app/record/html/tpl_follow_detail/js/symptom.js
  24. 101 0
      app/record/html/tpl_follow_detail/js/target.js
  25. 553 375
      app/statistics/css/common.css
  26. 1 0
      app/statistics/js/comprehensive-analysis.js
  27. 9 0
      app/statistics/js/resident-analysis-charts.js
  28. 374 0
      app/statistics/js/sign-progress.js
  29. 77 0
      app/statistics/sign-progress.html
  30. 8 0
      component/statistics/header-prompt.js
  31. 63 0
      component/statistics/sign-progress-filter.js

+ 2 - 2
app/record/html/lay_followUp_detail.html

@ -8,10 +8,10 @@
		<script type="text/javascript" src="../../../plugins/pace/pace.min.js"></script>
		<script type="text/javascript">
	        var search = window.location.search;
	        var url = './tpl_follow_detail/follow_tabs.html'+search;
	        var url = './tpl_follow_detail/followup_tabs.html'+search;
	        window.onload = function(){
	            document.getElementById("fv_tab").src = url;
//	            document.getElementById("fv_main").src = "followup-register.html"+search;
	            document.getElementById("fv_main").src = "tpl_follow_detail/followup_register.html"+search;
	        }
	    </script>
	</head>

+ 72 - 0
app/record/html/tpl_follow_detail/followup_.html

@ -0,0 +1,72 @@
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" href="../../../../css/bootstrap.min.css" />
		<style type="text/css">
			em{font-style: normal;}
			.page_title{font-size: 18px;padding: 10px;margin-bottom: 0;text-align: center;}
			.inline-container{font-size: 0;}
			.row-inline-item{display: inline-block;margin-left: 20px;margin-top: 20px;}
			.row-inline-item span{font-size: 14px;}
			.form-control{display: inline-block;text-align: center;margin: 0 5px;width: 64px;border-radius: 0;padding: 2px 6px;line-height: 20px;height: 28px;}
			.form-control-100{width: 100px;}
			.form-control-120{width: 120px;}
			.form-control-180{width: 180px;text-align: left;}
			.form-control-380{width: 380px;text-align: left;}
			.red{color: #FF2222;margin-right: 3px;}
			.disabled-input *{pointer-events: none;}
			.slash{display: inline-block;width: 14.5px;text-align: center;}
		</style>
	</head>
	<body>
		<div id="app">
			<p class="page_title">4、生活方式指导</p>
			<div class="inline-container disabled-input">
				<div class="row-inline-item" v-for="list in evaluates">
					<div v-if="list.company>=2">
				 		<span><em v-if="list.require" class="red">*</em><em v-text="list.name">日吸烟量</em></span>
				 		<span v-for="input in list.inputs">
				 			<span v-if="input.type==3">
				 				<input type="number" class="form-control" :class="input.class" :value="input.value" />
				 				<span v-text="input.unit"></span>
				 			</span>
				 			<span v-if="input.type==5">
				 				<input type="text" class="form-control" :class="input.class" :value="input.value" />
				 				<span v-text="input.unit"></span>
				 			</span>
				 			<span v-else>
				 				<select class="form-control" :class="input.class">
				 					<option>请选择</option>
				 					<option v-for="name in input.value" v-text="name"></option>
				 				</select>
				 				<span v-text="input.unit"></span>
				 			</span>
				 		</span>
				    </div>
				    <div v-else>
				    	<span><em v-if="list.require" class="red">*</em><em v-text="list.name">日吸烟量</em></span>
			 			<span v-if="list.type==3">
			 				<input type="number" step="1" min="0" class="form-control" :class="list.class" :value="list.value" />
			 				<span v-text="list.unit"></span>
			 			</span>
			 			<span v-if="list.type==4">
			 				<input type="text" class="form-control" :class="list.class" :value="list.value" />
			 				<span v-text="list.unit"></span>
			 			</span>
			 			<span v-else>
			 				<select class="form-control" :class="list.class">
			 					<option>请选择</option>
			 					<option v-for="name in list.value" v-text="name"></option>
			 				</select>
			 				<span v-text="list.unit"></span>
			 			</span>
					</div>
				</div>
			</div>
		</div>
		<script type="text/javascript" src="../../../../js/vue.js" ></script>
		<script type="text/javascript" src="js/evaluate.js" ></script>
	</body>
</html>

+ 50 - 0
app/record/html/tpl_follow_detail/followup_education.html

@ -0,0 +1,50 @@
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" href="../../../../css/bootstrap.min.css" />
		<style type="text/css">
			em{font-style: normal;}
			.page_title{font-size: 18px;padding: 10px;margin-bottom: 0;text-align: center;}
			.inline-container{font-size: 0;}
			.row-inline-item{display: inline-block;margin-left: 20px;margin-top: 20px;}
			.row-inline-item span{font-size: 14px;}
			.form-control{display: inline-block;text-align: center;margin: 0 5px;width: 64px;border-radius: 0;padding: 2px 6px;line-height: 20px;height: 28px;}
			.form-control-100{width: 100px;}
			.form-control-120{width: 120px;}
			.form-control-180{width: 180px;text-align: left;}
			.form-control-380{width: 380px;text-align: left;}
			.form-control-556-180{width: 556px;height: 180px;text-align: left;}
			.red{color: #FF2222;margin-right: 3px;}
			/*.disabled-input *{pointer-events: none;}*/
			.slash{display: inline-block;width: 14.5px;text-align: center;}
			.row-inline-item>div>span:after{content: '/';display: inline-block;margin: 0 2px 0 -2px;}
			.row-inline-item>div>span:last-child:after{display: none;}
			.row-inline-item>div>span:first-child:after{display: none;}
		</style>
	</head>
	<body>
		<div id="app">
			<p class="page_title">8、健康教育</p>
			<div class="inline-container disabled-input">
				<div>
					<span>日期</span>
					<input type="datetime-local" class="form-control form-control-180"  :value="educations.time" />
				</div>
				<div class="pull-right">
					<span>记录者</span>
					<select class="form-control form-control-180">
						<option v-for="name in educations.records" v-text="name"></option>
					</select>
				</div>
				<div class="input-group">
					<span class="input-group-addon"></span>
					<div class="form-control form-control-556-180" v-text="educations.jynr"></div>
				</div>
			</div>
		</div>
		<script type="text/javascript" src="../../../../js/vue.js" ></script>
		<script type="text/javascript" src="js/education.js" ></script>
	</body>
</html>

+ 72 - 0
app/record/html/tpl_follow_detail/followup_evaluate.html

@ -0,0 +1,72 @@
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" href="../../../../css/bootstrap.min.css" />
		<style type="text/css">
			em{font-style: normal;}
			.page_title{font-size: 18px;padding: 10px;margin-bottom: 0;text-align: center;}
			.inline-container{font-size: 0;}
			.row-inline-item{display: inline-block;margin-left: 20px;margin-top: 20px;}
			.row-inline-item span{font-size: 14px;}
			.form-control{display: inline-block;text-align: center;margin: 0 5px;width: 64px;border-radius: 0;padding: 2px 6px;line-height: 20px;height: 28px;}
			.form-control-100{width: 100px;}
			.form-control-120{width: 120px;}
			.form-control-180{width: 180px;text-align: left;}
			.form-control-380{width: 380px;text-align: left;}
			.red{color: #FF2222;margin-right: 3px;}
			.disabled-input *{pointer-events: none;}
			.slash{display: inline-block;width: 14.5px;text-align: center;}
		</style>
	</head>
	<body>
		<div id="app">
			<p class="page_title">4、生活方式指导</p>
			<div class="inline-container disabled-input">
				<div class="row-inline-item" v-for="list in evaluates">
					<div v-if="list.company>=2">
				 		<span><em v-if="list.require" class="red">*</em><em v-text="list.name">日吸烟量</em></span>
				 		<span v-for="input in list.inputs">
				 			<span v-if="input.type==3">
				 				<input type="number" class="form-control" :class="input.class" :value="input.value" />
				 				<span v-text="input.unit"></span>
				 			</span>
				 			<span v-if="input.type==5">
				 				<input type="text" class="form-control" :class="input.class" :value="input.value" />
				 				<span v-text="input.unit"></span>
				 			</span>
				 			<span v-else>
				 				<select class="form-control" :class="input.class">
				 					<option>请选择</option>
				 					<option v-for="name in input.value" v-text="name"></option>
				 				</select>
				 				<span v-text="input.unit"></span>
				 			</span>
				 		</span>
				    </div>
				    <div v-else>
				    	<span><em v-if="list.require" class="red">*</em><em v-text="list.name">日吸烟量</em></span>
			 			<span v-if="list.type==3">
			 				<input type="number" step="1" min="0" class="form-control" :class="list.class" :value="list.value" />
			 				<span v-text="list.unit"></span>
			 			</span>
			 			<span v-if="list.type==4">
			 				<input type="text" class="form-control" :class="list.class" :value="list.value" />
			 				<span v-text="list.unit"></span>
			 			</span>
			 			<span v-else>
			 				<select class="form-control" :class="list.class">
			 					<option>请选择</option>
			 					<option v-for="name in list.value" v-text="name"></option>
			 				</select>
			 				<span v-text="list.unit"></span>
			 			</span>
					</div>
				</div>
			</div>
		</div>
		<script type="text/javascript" src="../../../../js/vue.js" ></script>
		<script type="text/javascript" src="js/evaluate.js" ></script>
	</body>
</html>

+ 71 - 0
app/record/html/tpl_follow_detail/followup_guidance.html

@ -0,0 +1,71 @@
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" href="../../../../css/bootstrap.min.css" />
		<style type="text/css">
			em{font-style: normal;}
			.page_title{font-size: 18px;padding: 10px;margin-bottom: 0;text-align: center;}
			.inline-container{font-size: 0;}
			.row-inline-item{display: inline-block;margin-left: 20px;margin-top: 20px;}
			.row-inline-item span{font-size: 14px;}
			.form-control{display: inline-block;text-align: center;margin: 0 5px;width: 64px;border-radius: 0;padding: 2px 6px;line-height: 20px;height: 28px;}
			.form-control-100{width: 100px;}
			.form-control-120{width: 120px;}
			.form-control-180{width: 180px;text-align: left;}
			.red{color: #FF2222;margin-right: 3px;}
			.disabled-input *{pointer-events: none;}
			.slash{display: inline-block;width: 14.5px;text-align: center;}
		</style>
	</head>
	<body>
		<div id="app">
			<p class="page_title">4、生活方式指导</p>
			<div class="inline-container disabled-input">
				<div class="row-inline-item" v-for="list in guidances">
					<div v-if="list.company>=2">
				 		<span><em v-if="list.require" class="red">*</em><em v-text="list.name">日吸烟量</em></span>
				 		<span v-for="input in list.inputs">
				 			<span v-if="input.type==3">
				 				<input type="number" class="form-control" :class="input.class" :value="input.value" />
				 				<span v-text="input.unit"></span>
				 			</span>
				 			<span v-if="input.type==5">
				 				<input type="text" class="form-control" :class="input.class" :value="input.value" />
				 				<span v-text="input.unit"></span>
				 			</span>
				 			<span v-else>
				 				<select class="form-control" :class="input.class">
				 					<option>请选择</option>
				 					<option v-for="name in input.value" v-text="name"></option>
				 				</select>
				 				<span v-text="input.unit"></span>
				 			</span>
				 		</span>
				    </div>
				    <div v-else>
				    	<span><em v-if="list.require" class="red">*</em><em v-text="list.name">日吸烟量</em></span>
			 			<span v-if="list.type==3">
			 				<input type="number" step="1" min="0" class="form-control" :class="list.class" :value="list.value" />
			 				<span v-text="list.unit"></span>
			 			</span>
			 			<span v-if="list.type==4">
			 				<input type="text" class="form-control" :class="list.class" :value="list.value" />
			 				<span v-text="list.unit"></span>
			 			</span>
			 			<span v-else>
			 				<select class="form-control" :class="list.class">
			 					<option>请选择</option>
			 					<option v-for="name in list.value" v-text="name"></option>
			 				</select>
			 				<span v-text="list.unit"></span>
			 			</span>
					</div>
				</div>
			</div>
		</div>
		<script type="text/javascript" src="../../../../js/vue.js" ></script>
		<script type="text/javascript" src="js/guidance.js" ></script>
	</body>
</html>

+ 31 - 0
app/record/html/tpl_follow_detail/followup_inspect.html

@ -0,0 +1,31 @@
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" href="../../../../css/bootstrap.min.css" />
		<style type="text/css">
			.page_title{font-size: 18px;padding: 10px;margin-bottom: 0;text-align: center;}
			.inline-container{font-size: 0;}
			.row-inline-item{display: inline-block;margin-left: 30px;margin-top: 20px;}
			.row-inline-item span{font-size: 14px;}
			.form-control{display: inline-block;margin: 0 5px;width: 80px;border-radius: 0;padding: 2px 6px;line-height: 20px;height: 28px;}
			.form-control-180{width: 180px;}
			.disabled-input label,.disabled-input input{pointer-events: none;}
		</style>
	</head>
	<body>
		<div id="app">
			<p class="page_title">3、实验室检查</p>
			<div class="inline-container disabled-input">
				<div class="row-inline-item" v-for="list in inspects">
					<span v-text="list.name">空腹血糖</span>
					<input type="text" class="form-control" :class="list.class" />
					<span v-text="list.unit"></span>
				</div>
			</div>
		</div>
		<script type="text/javascript" src="../../../../js/vue.js" ></script>
		<script type="text/javascript" src="js/inspect.js" ></script>
	</body>
</html>

+ 133 - 0
app/record/html/tpl_follow_detail/followup_medication.html

@ -0,0 +1,133 @@
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" href="../../../../css/bootstrap.min.css" />
		<style type="text/css">
			em{font-style: normal;}
			.page_title{font-size: 18px;padding: 10px;margin-bottom: 0;text-align: center;}
			.inline-container{font-size: 0;}
			.row-inline-item{display: inline-block;margin-left: 20px;margin-top: 20px;}
			.row-inline-item span{font-size: 14px;}
			.form-control{display: inline-block;text-align: center;margin: 0 5px;width: 64px;border-radius: 0;padding: 2px 6px;line-height: 20px;height: 28px;}
			.medication [class*='form-control']{margin: 0 30px 0 10px;}
			.medication .row-inline-item{margin-top: 10px;}
			.row-title{font-size: 14px;margin-left: 20px;color: #999;}
			.form-control-90{width: 90px;}
			.form-control-100{width: 100px;}
			.form-control-120{width: 120px;}
			.form-control-180{width: 180px;text-align: left;}
			.form-control-220{width: 220px;text-align: left;}
			.form-control-380{width: 380px;text-align: left;}
			.red{color: #FF2222;margin-right: 3px;}
			.disabled-input *{pointer-events: none;}
			.slash{display: inline-block;width: 14.5px;text-align: center;}
		</style>
	</head>
	<body>
		<div id="app">
			<p class="page_title">4、生活方式指导</p>
			<div class="inline-container medication disabled-input">
				<div class="type-row">
					<div class="row-title">
						<div class="row-inline-item form-control-220">物品名称</div>
						<div class="row-inline-item form-control-90">次剂量</div>
						<div class="row-inline-item form-control-90">单位</div>
						<div class="row-inline-item form-control-90">频次</div>
					</div>
					<div class="row-inline-item" v-for="list in evaluates">
						<div v-if="list.company>=2">
					 		<span><em v-if="list.require" class="red">*</em><em v-text="list.name">日吸烟量</em></span>
					 		<span v-for="input in list.inputs">
					 			<span v-if="input.type==3">
					 				<input type="number" class="form-control" :class="input.class" :value="input.value" />
					 				<span v-text="input.unit"></span>
					 			</span>
					 			<span v-if="input.type==5">
					 				<input type="text" class="form-control" :class="input.class" :value="input.value" />
					 				<span v-text="input.unit"></span>
					 			</span>
					 			<span v-else>
					 				<select class="form-control" :class="input.class">
					 					<option>请选择</option>
					 					<option v-for="(name,index) in input.value" :selected="input.select==index" v-text="name"></option>
					 				</select>
					 				<span v-text="input.unit"></span>
					 			</span>
					 		</span>
					    </div>
					    <div v-else>
					    	<span><em v-if="list.require" class="red">*</em><em v-text="list.name"></em></span>
				 			<span v-if="list.type==3">
				 				<input type="number" step="1" min="0" class="form-control" :class="list.class" :value="list.value" />
				 				<span v-text="list.unit"></span>
				 			</span>
				 			<span v-if="list.type==4">
				 				<input type="text" class="form-control" :class="list.class" :value="list.value" />
				 				<span v-text="list.unit"></span>
				 			</span>
				 			<span v-else>
				 				<select class="form-control" :class="list.class">
				 					<option>请选择</option>
				 					<option v-for="(name,index) in list.value" :selected="input.select==index" v-text="name"></option>
				 				</select>
				 				<span v-text="list.unit"></span>
				 			</span>
						</div>
					</div>
				</div>
				<div class="type-row">
					<div class="row-title">
						<div class="row-inline-item form-control-220">胰岛素物品名称</div>
						<div class="row-inline-item form-control-90">次剂量</div>
						<div class="row-inline-item form-control-90">单位</div>
						<div class="row-inline-item form-control-90">频次</div>
					</div>
					<div class="row-inline-item" v-for="list in insulinEvaluates">
						<div v-if="list.company>=2">
					 		<span><em v-if="list.require" class="red">*</em><em v-text="list.name">日吸烟量</em></span>
					 		<span v-for="input in list.inputs">
					 			<span v-if="input.type==3">
					 				<input type="number" class="form-control" :class="input.class" :value="input.value" />
					 				<span v-text="input.unit"></span>
					 			</span>
					 			<span v-if="input.type==5">
					 				<input type="text" class="form-control" :class="input.class" :value="input.value" />
					 				<span v-text="input.unit"></span>
					 			</span>
					 			<span v-else>
					 				<select class="form-control" :class="input.class">
					 					<option>请选择</option>
					 					<option v-for="(name,index) in input.value" :selected="input.select==index" v-text="name"></option>
					 				</select>
					 				<span v-text="input.unit"></span>
					 			</span>
					 		</span>
					    </div>
					    <div v-else>
					    	<span><em v-if="list.require" class="red">*</em><em v-text="list.name"></em></span>
				 			<span v-if="list.type==3">
				 				<input type="number" step="1" min="0" class="form-control" :class="list.class" :value="list.value" />
				 				<span v-text="list.unit"></span>
				 			</span>
				 			<span v-if="list.type==4">
				 				<input type="text" class="form-control" :class="list.class" :value="list.value" />
				 				<span v-text="list.unit"></span>
				 			</span>
				 			<span v-else>
				 				<select class="form-control" :class="list.class">
				 					<option>请选择</option>
				 					<option v-for="(name,index) in list.value" :selected="input.select==index" v-text="name"></option>
				 				</select>
				 				<span v-text="list.unit"></span>
				 			</span>
						</div>
					</div>
				</div>	
			</div>
		</div>
		<script type="text/javascript" src="../../../../js/vue.js" ></script>
		<script type="text/javascript" src="js/medication.js" ></script>
	</body>
</html>

+ 54 - 0
app/record/html/tpl_follow_detail/followup_register.html

@ -0,0 +1,54 @@
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" href="../../../../css/bootstrap.min.css" />
		<style type="text/css">
			.register_container{padding-top: 20px;}
			.form-control{display: inline-block;}
			.row-item{font-size: 14px;color: #333;margin-top: 20px;}
			.row-item input{width: 220px;background: #f5f5fa;border-radius: 0;padding: 2px 6px;line-height: 20px;height: 28px;}
			.disabled-input input{pointer-events: none;opacity: .8;}
		</style>
	</head>
	<body>
		<div class="register_container disabled-input text-center">
			<div class="row-item">
				<span>完成时间:</span>
				<input type="datetime-local" class="form-control" value="2018-03-11T16:00:00" />
			</div>
			<div class="row-item">
				<span>随访方式:</span>
				<input type="text" class="form-control" value="健管师随访" />
			</div>
			<div class="row-item">
				<span>随访类型:</span>
				<input type="text" class="form-control" value="健管师随访" />
			</div>
			<div class="row-item">
				<span>随访状态:</span>
				<input type="text" class="form-control" value="完成" />
			</div>
			<div class="row-item">
				<span>下次随访:</span>
				<input type="datetime-local" class="form-control" value="2018-03-11T16:00:00" />
			</div>
		</div>
		<script type="text/javascript">
			function getFormat(){
				format = "";
				var nTime = new Date();
				format += nTime.getFullYear()+"-";
				format += (nTime.getMonth()+1)<10?"0"+(nTime.getMonth()+1):(nTime.getMonth()+1);
				format += "-";
				format += nTime.getDate()<10?"0"+(nTime.getDate()):(nTime.getDate());
				format += "T";
				format += nTime.getHours()<10?"0"+(nTime.getHours()):(nTime.getHours());
				format += ":";
				format += nTime.getMinutes()<10?"0"+(nTime.getMinutes()):(nTime.getMinutes());
				format += ":00";
			}
		</script>
	</body>
</html>

+ 70 - 0
app/record/html/tpl_follow_detail/followup_sign.html

@ -0,0 +1,70 @@
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" href="../../../../css/bootstrap.min.css" />
		<style type="text/css">
			.page_title{font-size: 18px;padding: 10px;margin-bottom: 0;text-align: center;}
			.inline-container{font-size: 0;}
			.row-inline-item{display: inline-block;margin-left: 20px;margin-top: 20px;}
			.row-inline-item span{font-size: 14px;}
			.form-control{display: inline-block;margin: 0 5px;width: 64px;border-radius: 0;padding: 2px 6px;line-height: 20px;height: 28px;}
			.form-control-100{width: 100px;}
			.form-control-180{width: 180px;}
			.red{color: #FF2222;margin-right: 3px;}
			.disabled-input label,.disabled-input input{pointer-events: none;}
			.slash{display: inline-block;width: 14.5px;text-align: center;}
		</style>
	</head>
	<body>
		<div id="app">
			<p class="page_title">1、症状</p>
			<div class="inline-container disabled-input">
				<div class="row-inline-item" >
					<span><em class="red">*</em>血压</span>
					<input type="text" class="form-control" />
					<span class="slash">/</span>
					<input type="text" class="form-control" />
					<span>mmHg</span>
				</div>
				<div class="row-inline-item" >
					<span>身高</span>
					<input type="text" class="form-control" />
					<span>cm</span>
				</div>
				<div class="row-inline-item" >
					<span>体重</span>
					<input type="text" class="form-control" />
					<span>kg</span>
				</div>
				<div class="row-inline-item" >
					<span>体征指标</span>
					<input type="text" class="form-control" />
				</div>
				<div class="row-inline-item" >
					<span><em class="red">*</em>心率</span>
					<input type="text" class="form-control" />
				</div>
				<div class="row-inline-item" >
					<span>足背动脉搏动</span>
					<input type="text" class="form-control form-control-100" value="触及" />
				</div>
				<div class="row-inline-item" >
					<span>期望体重</span>
					<input type="text" class="form-control" />
					<span>kg</span>
				</div>
				<div class="row-inline-item" >
					<span>期望体征指标</span>
					<input type="text" class="form-control" />
				</div>
				<div class="row-inline-item" >
					<span>其他</span>
					<input type="text" class="form-control form-control-180" />
				</div>
			</div>
		</div>
		<script type="text/javascript" src="../../../../js/vue.js" ></script>
	</body>
</html>

+ 50 - 0
app/record/html/tpl_follow_detail/followup_symptom.html

@ -0,0 +1,50 @@
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" href="../../../../css/bootstrap.min.css" />
		<style type="text/css">
			.page_title{font-size: 18px;padding: 10px;margin-bottom: 0;text-align: center;}
			.inline-container{padding: 0 60px;font-size: 0;}
			.row-line-item{width: 160px;display: inline-block;font-size: 14px;margin-top: 20px;}
			.row-line-item-2{width: 320px;}
			.checkbox-inline{padding-left: 24px;}
			.radio-inline{padding-left: 30px;}
			.radio-inline+.radio-inline{margin-left: 20px;}
			.checkbox-inline input[type='checkbox'],.radio-inline input[type='radio']{opacity: 0;}
			input[type='checkbox']+span:before{content: '';position: absolute;left: 0;top: 4px;background: url(image/gouxuan_btn.png);width: 14px;height: 14px;display: inline-block;}
			input[type='checkbox']:checked+span:before{background: url(image/gouxuan_pre.png);}
			input[type='radio']+span:before{content: '';position: absolute;left: 0;top: 0;background: url(image/dianxuan_btn.png);width: 20px;height: 20px;display: inline-block;}
			input[type='radio']:checked+span:before{background: url(image/dianxuan_pre.png);}
			.remark{display: inline-block;width: 220px;border-radius: 0;padding: 2px 6px;line-height: 20px;height: 28px;}
			.disabled-input label,.disabled-input input{pointer-events: none;}
		</style>
	</head>
	<body>
		<div id="app">
			<p class="page_title">1、症状</p>
			<div class="inline-container disabled-input">
				<div class="row-line-item" v-for="item in symptoms">
					<label class="checkbox-inline">
						<input type="checkbox" value="1" :checked="item.isCkeck" />
						<span v-text="item.name">无症状</span>
					</label>
				</div>
				<div class="row-line-item row-line-item-2">
					<span>低血糖反应&nbsp;&nbsp;</span>
					<label class="radio-inline" v-for="item in hypoglycemia">
						<input type="radio" :value="item.value" :checked="item.isRadio" />
						<span v-text="item.name">无</span>
					</label>
				</div>
				<div class="row-line-item row-line-item-2">
					<span>其他</span>
					<input type="text" class="form-control remark" :value="remark" />
				</div>
			</div>
		</div>
		<script type="text/javascript" src="../../../../js/vue.js" ></script>
		<script type="text/javascript" src="js/symptom.js" ></script>
	</body>
</html>

+ 6 - 6
app/record/html/tpl_follow_detail/follow_tabs.html

@ -5,24 +5,24 @@
		<title></title>
		<link type="text/css" href="../../../../css/bootstrap.min.css" />
		<style type="text/css">
			*{box-sizing: border-box;}
			*{box-sizing: border-box;margin: 0;padding: 0;}
			.followup-tab{width: 120px;line-height: 42px;margin: 0;padding: 0;text-align: center;list-style: none;background: #f5f5f5;border-right: 1px solid #ddd;}
			.followup-tab:before{display: block;content: '';height: 10px;}
			.followup-tab li{padding-top: 10px;}
			.followup-tab li a{display: block;box-sizing: content-box;text-decoration: none;font-size: 14px;width: 100%;color: #666;}
			.followup-tab li.active a,.followup-tab li:hover a{background: #fff;color: #12b6f4;}
			.followup-tab li:hover a{border: none;}
			.followup-tab li.active a{border-right: 1px solid #fff;border-top: 1px solid #ddd;border-bottom: 1px solid #ddd;}
			.followup-tab li.active a{line-height: 40px;border-right: 1px solid #fff;border-top: 1px solid #ddd;border-bottom: 1px solid #ddd;}
		</style>
	</head>
	<body>
		<ul class="followup-tab" id="app">
			<li :class="index==activeidx?'active':''"  v-for="(list,index) in followUpTabs">
				<a :href="list.url" target="view_frame2" :data-index="index">{{list.name}}</a>
			<li :class="index==activeidx?'active':''" @click="activeidx=index"  v-for="(list,index) in followUpTabs">
				<a :href="list.url" target="view_frame2" :data-index="index" v-text="list.name"></a>
			</li>
		</ul>
		<script type="text/javascript" src="../../../../js/vue.js"></script>
		<script src="../../../../js/jquery-2.2.4.js"></script>
		<script src="../../js/follow-up.js"></script>
		<script src="./js/followup-tabs.js"></script>
		
	</body>
</html>

+ 83 - 0
app/record/html/tpl_follow_detail/followup_target.html

@ -0,0 +1,83 @@
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" href="../../../../css/bootstrap.min.css" />
		<style type="text/css">
			em{font-style: normal;}
			.page_title{font-size: 18px;padding: 10px;margin-bottom: 0;text-align: center;}
			.inline-container{font-size: 0;}
			.row-inline-item{display: inline-block;margin-left: 20px;margin-top: 20px;}
			.row-inline-item span{font-size: 14px;}
			.form-control{display: inline-block;text-align: center;margin: 0 5px;width: 64px;border-radius: 0;padding: 2px 6px;line-height: 20px;height: 28px;}
			.form-control-100{width: 100px;}
			.form-control-120{width: 120px;}
			.form-control-180{width: 180px;text-align: left;}
			.form-control-380{width: 380px;text-align: left;}
			.red{color: #FF2222;margin-right: 3px;}
			/*.disabled-input *{pointer-events: none;}*/
			.slash{display: inline-block;width: 14.5px;text-align: center;}
			.row-inline-item>div>span:after{content: '/';display: inline-block;margin: 0 2px 0 -2px;}
			.row-inline-item>div>span:last-child:after{display: none;}
			.row-inline-item>div>span:first-child:after{display: none;}
		</style>
	</head>
	<body>
		<div id="app">
			<p class="page_title">4、生活方式指导</p>
			<div class="inline-container disabled-input">
				<div class="row-inline-item" v-for="list in targets">
					<div v-if="list.company>=2">
				 		<span><em v-if="list.require" class="red">*</em><em v-text="list.name">日吸烟量</em></span>
				 		<span v-for="input in list.inputs">
				 			<span v-if="input.type==3">
				 				<input type="number" class="form-control" :class="input.class" :value="input.value" />
				 				<span v-text="input.unit"></span>
				 			</span>
				 			<span v-else-if="input.type==5">
				 				<input type="text" class="form-control" :class="input.class" :value="input.value" />
				 				<span v-text="input.unit"></span>
				 			</span>
				 			<span v-else-if="list.type==6">
				 				<input type="datetime-local" class="form-control" :class="list.class" :value="list.value" />
				 				<span v-text="list.unit"></span>
				 			</span>
				 			<span v-else>
				 				<select class="form-control" :class="input.class">
				 					<option>请选择</option>
				 					<option v-for="name in input.value" v-text="name"></option>
				 				</select>
				 				<span v-text="input.unit"></span>
				 			</span>
				 		</span>
				    </div>
				    <div v-else>
				    	<span><em v-if="list.require" class="red">*</em><em v-text="list.name">日吸烟量</em></span>
			 			<span v-if="list.type==3">
			 				<input type="number" step="1" min="0" class="form-control" :class="list.class" :value="list.value" />
			 				<span v-text="list.unit"></span>
			 			</span>
			 			<span v-else-if="list.type==5">
			 				<input type="text" class="form-control" :class="list.class" :value="list.value" />
			 				<span v-text="list.unit"></span>
			 			</span>
			 			<span v-else-if="list.type==6">
			 				<input type="datetime-local" class="form-control" :class="list.class" :value="list.value" />
			 				<span v-text="list.unit"></span>
			 			</span>
			 			<span v-else>
			 				<select class="form-control" :class="list.class">
			 					<option>请选择</option>
			 					<option v-for="name in list.value" v-text="name"></option>
			 				</select>
			 				<span v-text="list.unit"></span>
			 			</span>
					</div>
				</div>
			</div>
		</div>
		<script type="text/javascript" src="../../../../js/vue.js" ></script>
		<script type="text/javascript" src="js/target.js" ></script>
	</body>
</html>

BIN
app/record/html/tpl_follow_detail/image/dianxuan_btn.png


BIN
app/record/html/tpl_follow_detail/image/dianxuan_pre.png


BIN
app/record/html/tpl_follow_detail/image/gouxuan_btn.png


BIN
app/record/html/tpl_follow_detail/image/gouxuan_pre.png


+ 15 - 0
app/record/html/tpl_follow_detail/js/education.js

@ -0,0 +1,15 @@
new Vue({
  el: '#app',
  data: {
  	//type: 1复选框  2单选框  3 number类型  4下拉选择 5文本输入框  6时间datetime-local 7多行文本框
   	educations:{
   		time:'2018-03-11T16:00:00',
   		records:['张官府','张关顾'],
   		jkjy:'糖尿病健康教育处方',
   		jynr:'糖尿病健康教育处方糖尿病健康教育处方糖尿病健康教育处方糖尿病健康教育处方糖尿病健康教育处方糖尿病健康教育处方糖尿病健康教育处方'
   	}
  },
  mounted: function() {
  	
  }
})

+ 20 - 0
app/record/html/tpl_follow_detail/js/evaluate.js

@ -0,0 +1,20 @@
new Vue({
  el: '#app',
  data: {
  	//type: 1复选框  2单选框  3 number类型  4下拉选择 5文本输入框
   	evaluates:[
   		{
			name:'高血压随访分类',
			company:2,
			value:1,
			type:4,
			require:1,
			unit:'分钟/次',
			inputs:[{type:4,class:'form-control-120',value:['每周>3次','每周<=3次','极少运动','残疾、关节等原因不能运动','不详']},{type:5,class:'form-control-380',value:'患者情绪稳定'}],
	  	}
   	]
  },
  mounted: function() {
  	
  }
})

+ 45 - 36
app/record/html/tpl_follow_detail/js/followup-tabs.js

@ -1,52 +1,61 @@
function GetRequest() {  
   var url = location.search; //获取url中"?"符后的字串
   var theRequest = new Object();
   if (url.indexOf("?") != -1) {
      var str = url.substr(1);
      strs = str.split("&");
      for(var i = 0; i < strs.length; i ++) {
         theRequest[strs[i].split("=")[0]]=(strs[i].split("=")[1]);
      }
   }
   return theRequest;
}
new Vue({
  el: '#app',
  data: {
   	followUpTabs:[{
	    url: 'followup-register.html'+location.search,
	    url: 'followup_register.html'+location.search,
	    name: '随访登记'
	},{
	    url: 'questionaires.html'+location.search+'&pro_id=1&title=症状',
	    name: '症状'
	},{
	    url: 'questionaires.html'+location.search+'&pro_id=2&title=体征',
	    name: '体征'
	},{
	    url: 'questionaires.html'+location.search+'&pro_id=3&title=实验室检查',
	    name: '实验室检查'
	},{
	    url: 'questionaires.html'+location.search+'&pro_id=4&title=生活方式指导',
	    name: '生活方式指导'
	},{
	    url: 'questionaires.html'+location.search+'&pro_id=5&title=评价',
	    name: '评价'
	},{
	    url: 'drugs.html'+location.search+'&pro_id=6&title=用药情况',
	    name: '用药情况'
	},{
	    url: 'questionaires.html'+location.search+'&pro_id=7&title=控制目标',
	    name: '控制目标'
	},{
	    url: 'questionaires.html'+location.search+'&pro_id=8&title=健康教育',
	    name: '健康教育'
	},{
	    url: 'questionaires.html'+location.search+'&pro_id=9&title=转诊',
	    name: '转诊'
	}],
    activeidx: 0
		},{
		    url: 'followup_symptom.html'+location.search,
		    name: '症状'
		},{
		    url: 'followup_sign.html'+location.search,
		    name: '体征'
		},{
		    url: 'followup_inspect.html'+location.search,
		    name: '实验室检查'
		},{
		    url: 'followup_guidance.html'+location.search,
		    name: '生活方式指导'
		},{
		    url: 'followup_evaluate.html'+location.search,
		    name: '评价'
		},{
		    url: 'followup_medication.html'+location.search,
		    name: '用药情况'
		},{
		    url: 'followup_target.html'+location.search,
		    name: '控制目标'
		},{
		    url: 'questionaires.html'+location.search,
		    name: '健康教育'
		},{
		    url: 'questionaires.html'+location.search,
		    name: '转诊'
		}],
    activeidx: 0,
    clickOtherTab: true//其他是否可以点击
  },
  mounted: function() {
  	var query = GetRequest();
  	this.activeidx = query.pro_id || 0;
  }  
  }
})
$(function(){
    
    var html = template("fv_tab_tmp", {list: links});
    $("#fv_tabs").empty().append(html);
//  parent.document.getElementById('fv_main').src = links[0].url;
    
    $("#fv_tabs").on('click', 'a', function(){
        var $this = $(this),
            $li = $this.parent(),

+ 88 - 0
app/record/html/tpl_follow_detail/js/guidance.js

@ -0,0 +1,88 @@
new Vue({
  el: '#app',
  data: {
  	//type: 1复选框  2单选框  3 number类型  4下拉选择,
   	guidances:[
   		{
   			name:'日吸烟量',
   			type:3,//表示组件的类型
   			company:1,//表示组件数量
   			value:1,//表示组件的值
   			require:0,//表示组件是否加*号
   			unit:'支'//表示组件的单位
   		},	{
   			name:'日饮酒量',
   			type:3,
   			value:1,
   			require:0,
   			unit:'两'
   		},	{
   			name:'运动频率',
   			company:2,
   			value:1,
   			type:4,
   			require:1,
   			unit:'分钟/次',
   			inputs:[{type:4,class:'form-control-120',value:['每周>3次','每周<=3次','极少运动','残疾、关节等原因不能运动','不详']},{type:3,value:12}],
   		},	{
   			name:'日常吸烟期望',
   			type:3,
   			value:1,
   			require:0,
   			unit:'支'
   		},	{
   			name:'日常饮酒期望',
   			value:1,
   			type:3,
   			require:0,
   			unit:'两'
   		},	{
   			name:'日常运动期望',
   			company:2,
   			type:4,
   			value:1,
   			require:0,
   			unit:'分钟/次',
   			inputs:[{type:2,class:'form-control-120',value:['每周>3次','每周<=3次','极少运动','残疾、关节等原因不能运动','不详']},{type:3,value:12}],
   		},	{
   			name:'摄盐情况',
   			type:4,
   			value:['清','中','重'],
   			class:'form-control-120',
   			require:1,
   			unit:''
   		},	{
   			name:'摄盐情况期望',
   			type:4,
   			value:['清','中','重'],
   			class:'form-control-120',
   			require:0,
   			unit:''
   		},	{
   			name:'医德行为',
   			type:4,
   			value:['理想','良好','一般','差'],
   			class:'form-control-120',
   			require:0,
   			unit:''
   		},	{
   			name:'心理调整',
   			type:4,
   			value:['理想','良好','一般','差'],
   			class:'form-control-120',
   			require:0,
   			unit:''
   		},	{
   			name:'主食',
   			type:3,
   			value:['理想','良好','一般','差'],
   			class:'form-control-120',
   			require:0,
   			unit:'克/天'
   		}
   	]
  },
  mounted: function() {
  	
  }
})

+ 56 - 0
app/record/html/tpl_follow_detail/js/inspect.js

@ -0,0 +1,56 @@
new Vue({
  el: '#app',
  data: {
   	inspects:[
   		{
   			name:'空腹血糖',
   			value:1,
   			unit:'mol/L'
   		},	{
   			name:'餐后血糖',
   			value:1,
   			unit:'mol/L'
   		},	{
   			name:'糖化血红蛋白',
   			value:1,
   			unit:'mol/L'
   		},	{
   			name:'随机血糖',
   			value:1,
   			unit:'mol/L'
   		},	{
   			name:'检查日期',
   			value:1,
   			unit:'',
   			class:'form-control-180'
   		},	{
   			name:'甘油三酯',
   			value:1,
   			unit:'mol/L'
   		},	{
   			name:'总胆固醇',
   			value:1,
   			unit:'mol/L'
   		},	{
   			name:'低密度脂蛋白',
   			value:1,
   			unit:'mol/L'
   		},	{
   			name:'血清肌酐',
   			value:1,
   			unit:'mol/L'
   		},	{
   			name:'血尿素氮',
   			value:1,
   			unit:'mol/L'
   		},	{
   			name:'尿微量白蛋白',
   			value:1,
   			unit:'mol/L'
   		}
   	]
  },
  mounted: function() {
  	
  }
})

+ 187 - 0
app/record/html/tpl_follow_detail/js/medication.js

@ -0,0 +1,187 @@
new Vue({
  el: '#app',
  data: {
  	//type: 1复选框  2单选框  3 number类型  4下拉选择 5文本输入框
   	evaluates:[
   		{
				name:'',
				company:2,
				value:1,
				type:4,
				require:0,
				unit:'分钟/次',
				inputs:[
					{
						type:5,
						class:'form-control-220',
						value:'药物11111'
					},{
							type:5,
							class:'form-control-90',
							value:'4'
					},{
							type:4,
							class:'form-control-90',
							select:1,
							value:['ng','mg']
					},{
							type:4,
							class:'form-control-90',
							select:2,
							value:['s.i.g.','t.i.d','b.i.d','p.o','i.m.','i.v.','i.v.g.t.t.','q.d.','q.i.d.','q.n.','sos']//用法
					}
	   		]
	   	},
	   	{
				name:'',
				company:2,
				value:1,
				type:4,
				require:0,
				unit:'分钟/次',
				inputs:[
					{
						type:5,
						class:'form-control-220',
						value:'药物11111'
					},{
							type:5,
							class:'form-control-90',
							value:'4'
					},{
							type:4,
							class:'form-control-90',
							select:1,
							value:['ng','mg']
					},{
							type:4,
							class:'form-control-90',
							select:2,
							value:['s.i.g.','t.i.d','b.i.d','p.o','i.m.','i.v.','i.v.g.t.t.','q.d.','q.i.d.','q.n.','sos']//用法
					}
	   		]
	   	},
	   	{
				name:'',
				company:2,
				value:1,
				type:4,
				require:0,
				unit:'分钟/次',
				inputs:[
					{
						type:5,
						class:'form-control-220',
						value:'药物11111'
					},{
							type:5,
							class:'form-control-90',
							value:'4'
					},{
							type:4,
							class:'form-control-90',
							select:1,
							value:['ng','mg']
					},{
							type:4,
							class:'form-control-90',
							select:2,
							value:['s.i.g.','t.i.d','b.i.d','p.o','i.m.','i.v.','i.v.g.t.t.','q.d.','q.i.d.','q.n.','sos']//用法
					}
	   		]
	   	}
   	],
   	insulinEvaluates:[
   		{
				name:'',
				company:2,
				value:1,
				type:4,
				require:0,
				unit:'分钟/次',
				inputs:[
					{
						type:5,
						class:'form-control-220',
						value:'药物11111'
					},{
							type:5,
							class:'form-control-90',
							value:'4'
					},{
							type:4,
							class:'form-control-90',
							select:0,
							value:['ng','mg']
					},{
							type:4,
							class:'form-control-90',
							select:4,
							value:['s.i.g.','t.i.d','b.i.d','p.o','i.m.','i.v.','i.v.g.t.t.','q.d.','q.i.d.','q.n.','sos']//用法
					}
	   		]
	   	},
	   	{
				name:'',
				company:2,
				value:1,
				type:4,
				require:0,
				unit:'分钟/次',
				inputs:[
					{
						type:5,
						class:'form-control-220',
						value:'药物11111'
					},{
							type:5,
							class:'form-control-90',
							value:'4'
					},{
							type:4,
							class:'form-control-90',
							select:1,
							value:['ng','mg']
					},{
							type:4,
							class:'form-control-90',
							select:2,
							value:['s.i.g.','t.i.d','b.i.d','p.o','i.m.','i.v.','i.v.g.t.t.','q.d.','q.i.d.','q.n.','sos']//用法
					}
	   		]
	   	},
	   	{
				name:'',
				company:2,
				value:1,
				type:4,
				require:0,
				unit:'分钟/次',
				inputs:[
					{
						type:5,
						class:'form-control-220',
						value:'药物11111'
					},{
							type:5,
							class:'form-control-90',
							value:'4'
					},{
							type:4,
							class:'form-control-90',
							select:1,
							value:['ng','mg']
					},{
							type:4,
							class:'form-control-90',
							select:2,
							value:['s.i.g.','t.i.d','b.i.d','p.o','i.m.','i.v.','i.v.g.t.t.','q.d.','q.i.d.','q.n.','sos']//用法
					}
	   		]
	   	}
   	]
  },
  mounted: function() {
  	
  }
})

+ 101 - 0
app/record/html/tpl_follow_detail/js/symptom.js

@ -0,0 +1,101 @@
new Vue({
  el: '#app',
  data: {
   	symptoms:[
   		{
   			name:'无症状',
   			isCkeck:true
   		},{
   			name:'头痛头晕',
   			isCkeck:false
   		},{
   			name:'恶心呕吐',
   			isCkeck:false
   		},{
   			name:'眼花耳鸣',
   			isCkeck:false
   		},{
   			name:'呼吸困难',
   			isCkeck:false
   		},{
   			name:'心悸胸闷',
   			isCkeck:false
   		},{
   			name:'鼻翼出血不止',
   			isCkeck:false
   		},{
   			name:'四肢发麻',
   			isCkeck:false
   		},{
   			name:'下肢水肿',
   			isCkeck:false
   		},{
   			name:'多饮',
   			isCkeck:false
   		},{
   			name:'多食',
   			isCkeck:false
   		},{
   			name:'多尿',
   			isCkeck:false
   		},{
   			name:'视力模糊',
   			isCkeck:false
   		},{
   			name:'感染',
   			isCkeck:false
   		},{
   			name:'四肢麻痹',
   			isCkeck:false
   		},{
   			name:'体重下降',
   			isCkeck:false
   		}
   	],//症状
    hypoglycemia: [
    	{
    		name:'无',
    		value:0,
    		isRadio:0
    	},
    	{
    		name:'偶尔',
    		value:1,
    		isRadio:1
    	},{
    		name:'频繁',
    		value:2,
    		isRadio:0
    	}
    ],//低血糖反应
    remark: '1'//备注
  },
  mounted: function() {
  	
  }
})
$(function(){
    $("#fv_tabs").on('click', 'a', function(){
        var $this = $(this),
            $li = $this.parent(),
            index = $li.index();
        
        if(parent.clickOtherTab){
            $li.siblings().removeClass("active");
            $li.addClass("active");
            selectedTab = $this.data('index');
    //      reqLinkList.push(links[tab].url+'&from=tab&fromTabIdx='+fromTabIdx);
            var url = links[selectedTab].url;
            parent.document.getElementById('fv_main').src = url;
        }else{
            return false;
        }
    })
})
parent.goFollowupNextQuestionaire = function(){
    selectedTab ++;
    $("#fv_tabs a").eq(selectedTab).trigger('click');
}

+ 101 - 0
app/record/html/tpl_follow_detail/js/target.js

@ -0,0 +1,101 @@
new Vue({
  el: '#app',
  data: {
  	//type: 1复选框  2单选框  3 number类型  4下拉选择 5文本输入框  6时间datetime-local
   	targets:[
   		{
				name:'控制时间',
				company:1,
				value:'2018-03-11T16:00:00',
				type:6,
				require:0,
				unit:'',
				class:'form-control-180'
	  	},{
				name:'制定者',
				company:1,
				value:['陈医生','王医生'],
				type:4,
				require:0,
				unit:'',
				class:'form-control-120'
	  	},{
				name:'血压',
				company:2,
				type:4,
				require:0,
				unit:'',
				class:'form-control-120',
				inputs:[{type:3,value:80},{type:3,value:100}]
	  	},{
				name:'空腹血糖',
				company:1,
				value:'100',
				type:3,
				require:0,
				unit:'mmol/L',
	  	},{
				name:'餐后血糖',
				company:1,
				value:'100',
				type:3,
				require:0,
				unit:'mmol/L',
	  	},{
				name:'糖化血红蛋白',
				company:1,
				value:'200',
				type:3,
				require:0,
				unit:'%',
   			class:'form-control-120'
	  	},{
				name:'甘油三酯',
				company:1,
				value:'100',
				type:3,
				require:0,
				unit:'mmol/L'
	  	},{
				name:'总胆固醇',
				company:1,
				value:'10',
				type:3,
				require:0,
				unit:'mmol/L'
	  	},{
				name:'低密度脂蛋白',
				company:1,
				value:'300',
				type:3,
				require:0,
				unit:'mol/L',
   			class:'form-control-120'
	  	},{
				name:'体重',
				company:1,
				value:'120',
				type:3,
				require:0,
				unit:'kg'
	  	},{
   			name:'运动频率',
   			company:1,
   			type:4,
   			require:0,
   			value:['每周>3次','每周<=3次','极少运动','残疾、关节等原因不能运动','不详'],
   			class:'form-control-120'
   		},{
				name:'运动时长',
				company:1,
				value:'120',
				type:3,
				require:0,
				unit:'分钟/次'
	  	}
   	]
  },
  mounted: function() {
  	
  }
})

+ 553 - 375
app/statistics/css/common.css

@ -1,376 +1,433 @@
.c-12b7f5{
    color: #12b7f5;
}
.c-17b3ec{
    color: #17b3ec;
}
.c-4ecd70{
    color: #4ecd70;
}
.c-323232{
    color: #323232;
}
.c-19d5c5{
    color: #19d5c5;
}
.c-ffc800{
    color: #ffc800;
}
.c-75ed59{
    color: #75ed59;
}
.c-w-33{
    width: 33%;
}
ul{
    list-style: none;
}
.info-icon{
    vertical-align: middle;
    margin-bottom: 5px;
}
.information{
    background-color: rgba(0,0,0,0.5);
    font-size: 14px;
    color: #fff;
}
.information .ui-col-0{
    width: 40px;
    text-align: center;
}
.location-div{
    height: 40px;
    line-height: 40px;
    padding: 0 10px;
}
.location-div img{
    vertical-align: text-bottom;
}
.choose-label{
    color: #17B3EC;
    display: inline-block;
    max-width: 100%;
    _width: 100%;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}
.blue-column{
    display: inline-block;
    width: 4px;
    height: 12px;
    background-color: #12b7f5;
}
.date-tag{
    display: inline-block;
    text-align: center;
    width: 50px;
    padding: 5px 0;
    font-size: 14px;
    color: #17b3ec;
    border: 1px solid #17b3ec;
}
.date-tag:first-child{
    border-top-left-radius: 15px;
    border-bottom-left-radius: 15px;
}
.date-tag:nth-child(2){
    border-right: 0;
    border-left: 0;
}
.date-tag:nth-child(3){
    border-top-right-radius: 15px;
    border-bottom-right-radius: 15px;
}
.date-tag.active{
    background-color: #17b3ec;
    color: #fff;
}
.area-tab-panel{
    display: -webkit-box;
    height: 45px;
    line-height: 45px;
    margin: 0 50px;
    background-color: #fff;
    border: 1px solid #e1e1e1;
    border-bottom: 0;
    border-top-left-radius: 8px;
    border-top-right-radius: 8px;
    box-shadow: 0px 0px 1px #ccc;
}
.area-tab{
    -webkit-box-flex: 1;
    text-align: center;
    position: relative;
}
.area-tab:after{
    content: '';
    position: absolute;
    width: 1px;
    height: 20px;
    right: 0;
    top: 50%;
    margin-top: -10px;
    background-color: #e1e1e1;
}
.area-tab:last-child:after{
    width: 0;
}
.area-tab .border-line-right{
    display: inline-block;
    position: absolute;
    width: 1px;
    height: 20px;
    right: 0;
    top: 50%;
    margin-top: -10px;
    background-color: #e1e1e1;
}
.area-tab span{
    display: inline-block;
    height: 45px;
    border-bottom: 2px solid transparent;
    font-size: 16px;
    color: #666;
    padding: 0 10px;
}
.area-tab.active span{
    color: #12b7f5;
    border-bottom: 2px solid #12b7f5;
}
.bottom-list-table{
    border-top: 1px solid #e1e1e1;
    border-left: 1px solid #e1e1e1;
    border-right: 1px solid #e1e1e1;
    background-color: #fff;
    width: 100%;
    text-align: center;
    font-size: 14px;
    border-spacing: 0;
}
.bottom-list-table thead{
    height: 40px;
    background-color: #ebebf5;
    border-bottom: 1px solid #e1e1e1;
    color: #999;
}
.bottom-list-table thead tr{
    height: 40px;
.c-12b7f5 {
	color: #12b7f5;
}
.c-17b3ec {
	color: #17b3ec;
}
.c-4ecd70 {
	color: #4ecd70;
}
.c-323232 {
	color: #323232;
}
.c-19d5c5 {
	color: #19d5c5;
}
.c-ffc800 {
	color: #ffc800;
}
.c-75ed59 {
	color: #75ed59;
}
.c-w-33 {
	width: 33%;
}
ul {
	list-style: none;
}
.info-icon {
	vertical-align: middle;
	margin-bottom: 5px;
}
.information {
	background-color: rgba(0, 0, 0, 0.5);
	font-size: 14px;
	color: #fff;
}
.information .ui-col-0 {
	width: 40px;
	text-align: center;
}
.location-div {
	height: 40px;
	line-height: 40px;
	padding: 0 10px;
}
.location-div img {
	vertical-align: text-bottom;
}
.choose-label {
	color: #17B3EC;
	display: inline-block;
	max-width: 100%;
	_width: 100%;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}
.blue-column {
	display: inline-block;
	width: 4px;
	height: 12px;
	background-color: #12b7f5;
}
.date-tag {
	display: inline-block;
	text-align: center;
	width: 50px;
	padding: 5px 0;
	font-size: 14px;
	color: #17b3ec;
	border: 1px solid #17b3ec;
}
.date-tag:first-child {
	border-top-left-radius: 15px;
	border-bottom-left-radius: 15px;
}
.date-tag:nth-child(2) {
	border-right: 0;
	border-left: 0;
}
.date-tag:nth-child(3) {
	border-top-right-radius: 15px;
	border-bottom-right-radius: 15px;
}
.date-tag.active {
	background-color: #17b3ec;
	color: #fff;
}
.area-tab-panel {
	display: -webkit-box;
	height: 45px;
	line-height: 45px;
	margin: 0 50px;
	background-color: #fff;
	border: 1px solid #e1e1e1;
	border-bottom: 0;
	border-top-left-radius: 8px;
	border-top-right-radius: 8px;
	box-shadow: 0px 0px 1px #ccc;
}
.area-tab {
	-webkit-box-flex: 1;
	text-align: center;
	position: relative;
}
.area-tab:after {
	content: '';
	position: absolute;
	width: 1px;
	height: 20px;
	right: 0;
	top: 50%;
	margin-top: -10px;
	background-color: #e1e1e1;
}
.area-tab:last-child:after {
	width: 0;
}
.area-tab .border-line-right {
	display: inline-block;
	position: absolute;
	width: 1px;
	height: 20px;
	right: 0;
	top: 50%;
	margin-top: -10px;
	background-color: #e1e1e1;
}
.area-tab span {
	display: inline-block;
	height: 45px;
	border-bottom: 2px solid transparent;
	font-size: 16px;
	color: #666;
	padding: 0 10px;
}
.area-tab.active span {
	color: #12b7f5;
	border-bottom: 2px solid #12b7f5;
}
.bottom-list-table {
	border-top: 1px solid #e1e1e1;
	border-left: 1px solid #e1e1e1;
	border-right: 1px solid #e1e1e1;
	background-color: #fff;
	width: 100%;
	text-align: center;
	font-size: 14px;
	border-spacing: 0;
}
.bottom-list-table thead {
	height: 40px;
	background-color: #ebebf5;
	border-bottom: 1px solid #e1e1e1;
	color: #999;
}
.bottom-list-table thead tr {
	height: 40px;
}
.bottom-list-table td,
.bottom-list-table th{
    text-align: center;
    vertical-align: middle;
.bottom-list-table th {
	text-align: center;
	vertical-align: middle;
}
.bottom-list-table td{
    padding: 10px 0;
    border-bottom: 1px solid #e1e1e1;
.bottom-list-table td {
	padding: 10px 0;
	border-bottom: 1px solid #e1e1e1;
}
.bottom-list-table tbody>tr{
    border-bottom: 1px solid #e1e1e1;
.bottom-list-table tbody>tr {
	border-bottom: 1px solid #e1e1e1;
}
.bottom-list-table tbody>tr:hover{
    background-color: #f2f4f6;
.bottom-list-table tbody>tr:hover {
	background-color: #f2f4f6;
}
/*.bottom-list-table tbody>tr:first-child{
    border-top: 0;
}*/
.bottom-list-table tbody tr td.area-name{
    text-align: left;
    padding-left: 10px;
    font-size: 16px;
    display: -webkit-box;
    -webkit-box-pack: center;
    -webkit-box-align: center;
    
.bottom-list-table tbody tr td.area-name {
	text-align: left;
	padding-left: 10px;
	font-size: 16px;
	display: -webkit-box;
	-webkit-box-pack: center;
	-webkit-box-align: center;
}
@media only screen and (max-width: 320px) {
    .bottom-list-table tbody tr td.area-name{
        max-width: 125px;
    }
	.bottom-list-table tbody tr td.area-name {
		max-width: 125px;
	}
}
@media only screen and (min-width: 321px) and (max-width: 414px) {
    .bottom-list-table tbody tr td.area-name{
        max-width: 180px;
    }
	.bottom-list-table tbody tr td.area-name {
		max-width: 180px;
	}
}
@media only screen and (min-width: 414px) and (max-width: 640px) {
    .bottom-list-table tbody tr td.area-name{
        max-width: 200px;
    }
}
.bottom-list-table .fa{
    font-size: 18px;
    color: #909090;
}
.ranking{
    background-image: url(../../../images/paiming_4_icon.png);
    background-size: 18px 24px;
    width: 18px;
    height: 24px;
    font-size: 12px;
    line-height: 20px;
    color: #fff;
    text-align: center;
    margin-right: 10px;
    -webkit-box-flex: 0;
}
.ranking1{
    background-image: url(../../../images/paiming_1_icon.png);
}
.ranking2{
    background-image: url(../../../images/paiming_2_icon.png);
}
.ranking3{
    background-image: url(../../../images/paiming_3_icon.png);
}
.modal-overlay{
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.4);
    z-index: 9999;
    visibility: hidden;
    opacity: 0;
    -webkit-transition-duration: 400ms;
    transition-duration: 400ms;
}
.modal-overlay.modal-overlay-visible{
    visibility: visible;
    opacity: 1;
	.bottom-list-table tbody tr td.area-name {
		max-width: 200px;
	}
}
.bottom-list-table .fa {
	font-size: 18px;
	color: #909090;
}
.ranking {
	background-image: url(../../../images/paiming_4_icon.png);
	background-size: 18px 24px;
	width: 18px;
	height: 24px;
	font-size: 12px;
	line-height: 20px;
	color: #fff;
	text-align: center;
	margin-right: 10px;
	-webkit-box-flex: 0;
}
.ranking1 {
	background-image: url(../../../images/paiming_1_icon.png);
}
.ranking2 {
	background-image: url(../../../images/paiming_2_icon.png);
}
.ranking3 {
	background-image: url(../../../images/paiming_3_icon.png);
}
.modal-overlay {
	position: absolute;
	left: 0;
	top: 0;
	width: 100%;
	height: 100%;
	background: rgba(0, 0, 0, 0.4);
	z-index: 9999;
	visibility: hidden;
	opacity: 0;
	-webkit-transition-duration: 400ms;
	transition-duration: 400ms;
}
.modal-overlay.modal-overlay-visible {
	visibility: visible;
	opacity: 1;
}
.modal-content {
    height: 400px;
    position: absolute;
    width: 80%;
    z-index: 9999;
    top: 50%;
    left: 50%;
    margin-left: -40%;
    margin-top: -200px;
    display: none;
	height: 400px;
	position: absolute;
	width: 80%;
	z-index: 9999;
	top: 50%;
	left: 50%;
	margin-left: -40%;
	margin-top: -200px;
	display: none;
}
.div-header-title {
    height: 80px;
    background: #17B3EC;
    width: 100%;
    position: relative;
    border-top-left-radius: 10px;
    border-top-right-radius: 10px;
	height: 80px;
	background: #17B3EC;
	width: 100%;
	position: relative;
	border-top-left-radius: 10px;
	border-top-right-radius: 10px;
}
.div-close {
    width: 26px;
    height: 26px;
    background: url(../images/tankuang_guanbi_icon.png) no-repeat center top;
    background-size: 26px;
    position: absolute;
    top: 10px;
    right: 10px;
	width: 26px;
	height: 26px;
	background: url(../images/tankuang_guanbi_icon.png) no-repeat center top;
	background-size: 26px;
	position: absolute;
	top: 10px;
	right: 10px;
}
.div-overlay-img {
    width: 170px;
    height: 53px;
    background: url(../images/tankuang_bg_img.png) no-repeat center top;
    background-size: 170px 53px;
    position: absolute;
    top: 15px;
    left: 50%;
    margin-left: -85px;
	width: 170px;
	height: 53px;
	background: url(../images/tankuang_bg_img.png) no-repeat center top;
	background-size: 170px 53px;
	position: absolute;
	top: 15px;
	left: 50%;
	margin-left: -85px;
}
.div-overlay-title {
    position: absolute;
    top: 38px;
    left: 40%;
    color: #fff;
    font-weight: bold;
    font-size: 18px;
	position: absolute;
	top: 38px;
	left: 40%;
	color: #fff;
	font-weight: bold;
	font-size: 18px;
}
.div-overlay-content {
    height: 320px;
    background: #fff;
    width: 100%;
    border-bottom-left-radius: 10px;
    border-bottom-right-radius: 10px;
}
.div-jf-title2{
    position: absolute;
    font-size: 14px;
    top: 50%;
    width: 100%;
    margin-top: -21px;
	height: 320px;
	background: #fff;
	width: 100%;
	border-bottom-left-radius: 10px;
	border-bottom-right-radius: 10px;
}
.div-jf-title2 {
	position: absolute;
	font-size: 14px;
	top: 50%;
	width: 100%;
	margin-top: -21px;
}
/*总体分析页面样式*/
.l-banner{
    display: -webkit-box;
    height: auto;
    margin-bottom: 10px;
    padding: 0 10px;
}
.l-banner li{
    -webkit-box-flex: 0;
    width: calc(100% / 3);
}
.l-banner li:first-child{
    /*margin-left: 0;*/
}
.l-banner li .tag{
    width: 80%;
    border: 1px solid #e1e1e1;
    border-radius: 5px;
    text-align: center;
    padding: 17px 0;
    margin: 0 auto;
    position: relative;
}
.l-banner li .l-name{
    color: #666;
.l-banner {
	display: -webkit-box;
	height: auto;
	margin-bottom: 10px;
	padding: 0 10px;
}
.l-banner li {
	-webkit-box-flex: 0;
	width: calc(100% / 3);
}
.l-banner li:first-child {
	/*margin-left: 0;*/
}
.l-banner li .tag {
	width: 80%;
	border: 1px solid #e1e1e1;
	border-radius: 5px;
	text-align: center;
	padding: 17px 0;
	margin: 0 auto;
	position: relative;
}
.l-banner li .l-name {
	color: #666;
}
.l-banner li .tag.active,
.l-banner li .tag.active .l-name
{
    color: #12B7F5;
    border-color: #12B7F5;
}
.l-banner li .tag.active:after{
    content: "";
    width: 100%;
    height: 4px;
    background-color: #12B7F5;
    position: absolute;
    bottom: 0;
    left: 0;
    border-bottom-left-radius: 5px;
    border-bottom-right-radius: 5px;
}
.blur-cycle-box{
    position: absolute;
    width: 70px;
    height: 70px;
    top: 50%;
    margin-top: -35px;
    left: 50%;
    margin-left: -35px;
    /*z-index: 2;*/
    background-color: #17b3ec;
    border-radius: 50%;
    text-align: center;
}
.position-center-text{
    position: absolute;
    width: 100%;
    top: 50%;
    left: 0;
    text-align: center;
    margin-top: -10px;
.l-banner li .tag.active .l-name {
	color: #12B7F5;
	border-color: #12B7F5;
}
.l-banner li .tag.active:after {
	content: "";
	width: 100%;
	height: 4px;
	background-color: #12B7F5;
	position: absolute;
	bottom: 0;
	left: 0;
	border-bottom-left-radius: 5px;
	border-bottom-right-radius: 5px;
}
.blur-cycle-box {
	position: absolute;
	width: 70px;
	height: 70px;
	top: 50%;
	margin-top: -35px;
	left: 50%;
	margin-left: -35px;
	/*z-index: 2;*/
	background-color: #17b3ec;
	border-radius: 50%;
	text-align: center;
}
.position-center-text {
	position: absolute;
	width: 100%;
	top: 50%;
	left: 0;
	text-align: center;
	margin-top: -10px;
}
.div-header {
	padding: 0px 10px 0px 20px;
@ -460,44 +517,165 @@ ul{
.tac {
	text-align: center;
}
.role-select{
    height: 30px;
    min-width: 100px;
    display: inline-block;
}
.role-select select{
    width: 100%;
    height: 30px;
    appearance:none;
    -moz-appearance:none;
    -webkit-appearance:none;
    background: url(../../../images/zhankai_jiantou_icon.png) no-repeat scroll right center transparent;
    background-position-x: 95%;
    background-size: 11px 11px;
    padding-right: 30px;
    padding-left: 10px;
    border: none;
    color: #909090;
}
.section-header{
    position: relative;
}
.section-label{
    display: inline-block;
    padding: 3px 15px;
    background-color: #ebebf5;
    border-radius: 12px;
    font-size: 14px;
    position: relative;
}
.section-header .grey-line{
    display: inline-block;
    position: absolute;
    top: 50%;
    left: 10px;
    right: 10px;
    width: calc(100% - 20px);
    height: 1px;
    background-color: #ebebf5;
    z-index: -1;
.role-select {
	height: 30px;
	min-width: 100px;
	display: inline-block;
}
.role-select select {
	width: 100%;
	height: 30px;
	appearance: none;
	-moz-appearance: none;
	-webkit-appearance: none;
	background: url(../../../images/zhankai_jiantou_icon.png) no-repeat scroll right center transparent;
	background-position-x: 95%;
	background-size: 11px 11px;
	padding-right: 30px;
	padding-left: 10px;
	border: none;
	color: #909090;
}
.section-header {
	position: relative;
}
.section-label {
	display: inline-block;
	padding: 3px 15px;
	background-color: #ebebf5;
	border-radius: 12px;
	font-size: 14px;
	position: relative;
}
.section-header .grey-line {
	display: inline-block;
	position: absolute;
	top: 50%;
	left: 10px;
	right: 10px;
	width: calc(100% - 20px);
	height: 1px;
	background-color: #ebebf5;
	z-index: -1;
}
.div-radius-panel {
	width: 60px;
	height: 60px;
	background: #EBEBF5;
	border-radius: 60px;
	position: absolute;
	top: 50%;
	left: 50%;
	margin-top: -30px;
	margin-left: -30px;
}
.height-120 {
	height: 120px;
}
.div-data-value {
	position: absolute;
	bottom: -20px;
	width: 150px;
	left: 50%;
	margin-left: -75px;
}
.mlr8 {
	margin-left: 8px;
	margin-right: 8px;
}
.c-row .c-33 {
	text-align: center;
}
.c-row .c-33 a {
	display: inline-block;
	width: 100%;
	height: 24px;
	font-size: 12px;
	line-height: 24px;
	/*background: #EEEEEE;*/
	border: 1px solid #eee;
	border-radius: 5px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	color: #666;
}
.c-row .c-33.active a {
	color: #fff;
	border: 1px solid #12B7F5;
	background: #12B7F5;
}
.c-row .c-33 {
	width: calc(31.333333333333332% - 10px);
}
.filter-title {
	color: #333333;
	font-size: 14px;
	font-weight: bold;
}
a {
	background-color: transparent;
	text-decoration: none;
}
#footer {
	position: absolute;
	bottom: 10px;
	width: 100%;
	right: 10px;
}
.fr {
	float: right;
}
.div-foot-btn {
	height: 26px;
	line-height: 26px;
	width: 68px;
	background: #fafafa;
	text-align: center;
	border: 1px solid #dcdcdc;
	display: inline-block;
}
.div-foot-btn.active {
	border: 1px solid #12b7f5;
}
.div-title {
	font-size: 14px;
	color: #323232;
	margin: 20px;
}
.vuedal {
	will-change: initial !important;
	width: 400px !important;
	padding-right: 3px !important;
}
.vuedal header {
	padding-right: 20px !important;
}
.vuedal header .title {
	font-size: 16px !important;
	font-weight: bold !important;
	color: #333 !important;
}

+ 1 - 0
app/statistics/js/comprehensive-analysis.js

@ -294,6 +294,7 @@ function loadData(loadArr, vm){
                            name: '健康指导',
                            value: vm.topDatas.index_5
                        }];
                        debugger
                        drawPieChart('pieChart', arr, ['#ffc800', '#17b3ec']);
                    }
                }else{

+ 9 - 0
app/statistics/js/resident-analysis-charts.js

@ -21,6 +21,9 @@ function jiaoFeiData(yiJiaoFeiData, weiJiaoFeiData) {
		color: ['#12b7f5', '#FFC800'],
		series: [{
			type: 'pie',
			legendHoverLink: false,
            hoverAnimation: false,
            avoidLabelOverlap: false,
			radius: ['50%', '70%'],
			center: ['50%', '50%'], //饼图的位置 
			data: [{
@ -71,6 +74,9 @@ function healthData(jkrqdata, hbrqdata, gwrqdata, hfqrqdata, wbzdata) {
		color: ['#12B7F5', '#FB5DAB', '#CD67FD', '#FFC800', '#61EB41'],
		series: [{
			type: 'pie',
			legendHoverLink: false,
            hoverAnimation: false,
            avoidLabelOverlap: false,
			radius: ['50%', '70%'],
			center: ['25%', '50%'], //饼图的位置 
			data: [{
@ -215,6 +221,9 @@ function sexData(femaleData, maleData) {
		color: ['#12B7F5', '#FB5DAB'],
		series: [{
			type: 'pie',
			legendHoverLink: false,
            hoverAnimation: false,
            avoidLabelOverlap: false,
			radius: ['50%', '70%'],
			center: ['50%', '50%'], //饼图的位置 
			data: [{

+ 374 - 0
app/statistics/js/sign-progress.js

@ -0,0 +1,374 @@
var reqList = []; //记录请求的参数和url,用于后退时使用
Vue.use(Vuedals.default);
new Vue({
	el: "#main",
	data: {
		appname: "签约进展",
		isback: true,
		isrefresh: true,
		isfilter: true,
		isopen: false,
		//请求页面所需参数
		level: '',
		area: '',
		areaTitle: '',
		index: '3',
		selectedDateType: 1, //折线图坐标值1-日,2-周,3-月
		endDate: '',
		startDate: '',
		lowLevel: '',
		lowCode: '',
		chooseYear: '',
		userRole: '',
		analysisType: "1", // 筛选维度的id, 1-按任务,2-按人口,3-高血压,4-糖尿病,5-65岁以上人群
		analysisName:"按任务",
		signRateData:{
			signRateText:"",
			signRate:"",
			signAmount:"",
			signRateAll:"",
			completeRateText:"",
			completeRate:"",
			completeAmount:"",
			completeRateAll:""
		}
	},
	components: {
		vuedals: Vuedals.Component
	},
	methods: {
		changeTag: function(val) {
			this.index = val;
			loadData([1, 2], this);
			//存储请求所带的参数
			reqList.push({
				level: this.level,
				area: this.area,
				areaTitle: this.areaTitle,
				index: this.index,
				endDate: this.endDate,
				startDate: this.startDate,
				lowLevel: this.lowLevel,
				lowCode:this.lowCode
			})
		},
		getNewLineData: function(arg) {
			this.selectedDateType = arg.dateType;
			loadData([1], this);
		},
		getAreaData: function(arg) {
			//如果level改变,则需要重新加载整个页面的数据,否则只需加载底部区域数据
			if(arg.level == this.level) {
				this.lowLevel = arg.lowLevel;
				loadData([2], this);
			} else {
				this.level = arg.level;
				this.lowLevel = arg.lowLevel;
				this.area = arg.area;
				loadData([0, 1, 2], this);
			}
			//存储请求所带的参数
			reqList.push({
				level: this.level,
				area: this.area,
				areaTitle: this.areaTitle,
				index: this.index,
				endDate: this.endDate,
				startDate: this.startDate,
				lowLevel: this.lowLevel,
				lowCode:this.lowCode
			})
		}
	},
	mounted: function() {
		//初始化数据
		initData(this);
		//获得顶部各tab的值
		loadData([0, 1, 2], this); //参数组数表示请求的区域为上中下
		//存储请求所带的参数
		reqList.push({
			level: this.level,
			area: this.area,
			areaTitle: this.areaTitle,
			index: this.index,
			endDate: this.endDate,
			startDate: this.startDate,
			lowLevel: this.lowLevel,
			lowCode:this.lowCode
		});
		//设置监听器, 监听折线图日期变化
		var vm = this;
		//监听后退按钮的操作
		EventBus.$on("back-click", function(arg) {
			EventBus.$emit('update-statistics-time', {});//更新统计时间
			if(reqList.length == 1) {
				history.go(-1);
			} else {
				var preInfo = reqList.pop();
				var info = reqList[reqList.length - 1];
				vm.level = info.level;
				vm.area = info.area;
				vm.areaTitle = info.areaTitle;
				vm.lowLevel = info.lowLevel;
				vm.index = info.index;
				vm.lowCode = info.lowCode;
				loadData([0, 1, 2], vm);
			}
		});
		//监听页面刷新
		EventBus.$on("refresh-click", function(arg) {
			EventBus.$emit('update-statistics-time', {});//更新统计时间
			loadData([0, 1, 2], vm);
		});
		
		//弹出筛选框
		EventBus.$on('filter-click', function(arg) {
			//弹框显示筛选条件
            Vuedals.Bus.$emit('new', {
                title: '条件筛选',
                onClose:function(data){
                    
                },
                component: 'sign-progress-filter',
                props: {
                    
                }
            });
		});
	}
})
function initData(vm) {
	//获得缓存中缓存的角色权限
	var userRole = window.localStorage.getItem("selectedRole");
	if(!userRole) {
		return false;
	}
	vm.userRole = JSON.parse(userRole);
	vm.level = vm.userRole.code == '350200' ? 4 : vm.userRole.code.length == 6 ? 3 : 2;
	vm.area = vm.userRole.code;
	vm.areaTile = vm.userRole.name;
	var now = new Date();
	if(now.getMonth() >= 6) {
		vm.chooseYear = now.getFullYear();
	} else {
		vm.chooseYear = now.getFullYear() - 1;
	}
	vm.startDate = getStartDate(vm.chooseYear);
	vm.endDate = getEndDate(vm.chooseYear);
	//更新头部信息
	EventBus.$emit('update-all-prompt-info', {areaName:vm.areaTile,selectDate:vm.chooseYear+"年",dimensionVal:vm.analysisName});
}
function initReqParams(vm) {
	vm.index = 13;
	if(vm.lowCode) {
		vm.index = 17;
	}
	reqParam = [{
		url: "/statistics/sign_info",
		reqType: 'get',
		data: {
			level: vm.level,
			area: vm.area,
			lowCode: vm.lowCode,
			year: vm.chooseYear,
			endDate: vm.endDate
		}
	}, {
		url: "/statistics/interval_total",
		reqType: 'get',
		data: {
			level: vm.level,
			area: vm.area,
			startDate: vm.startDate,
			endDate: vm.endDate,
			interval: vm.selectedDateType,
			index: vm.index,
			lowCode: vm.lowCode
		}
	}, {
		url: "/statistics/lowlevel_all",
		reqType: 'get',
		data: {
			sort: 1,
			date: vm.endDate,
			level: vm.level,
			index: vm.index,
			area: vm.area,
			lowCode: vm.lowCode
		}
	}];
	if(vm.lowLevel) {
		reqParam[2].data.lowLevel = vm.lowLevel;
	}
	return reqParam;
}
function getTopReqParams(index1, vm) {
	var url = "statistics/interval_total",
		data = {
			index: index1,
			level: vm.level,
			area: vm.area,
			year: vm.chooseYear,
			endDate: vm.endDate,
			startDate: vm.startDate
		};
	return {
		url: url,
		data: data
	};
}
function getTopTagDatas(data,vm) {
	vm.signRateData.signRateText = data.signRate.rate.substring(0,data.signRate.rate.length-2) + "%"
	vm.signRateData.signRate = parseFloat(data.signRate.rate)/100;
	vm.signRateData.signAmount = data.signRate.sign;
	vm.signRateData.signRateAll = data.signRate.people;
	
	vm.signRateData.completeRateText = data.signTaskRate.rate.substring(0,data.signTaskRate.rate.length-2) + "%"
	vm.signRateData.completeRate = parseFloat(data.signTaskRate.rate)/100;
	vm.signRateData.completeAmount = data.signTaskRate.sign;
	vm.signRateData.completeRateAll = data.signTaskRate.people;
	 var signArr = [{
            name: '签约量',
            value: vm.signRateData.signAmount
        },{
            name: '签约总量',
            value: vm.signRateData.signRateAll
        }];
        
        var completeArr = [{
            name: '完成量',
            value: vm.signRateData.completeAmount
        },{
            name: '完成总量',
            value: vm.signRateData.completeRateAll
        }];
	 drawPieChart('signMain', signArr, ['#12b7f5', '#ebebf5']);//签约率
	 drawPieChart('completeMain', completeArr, ['#12b7f5', '#ebebf5']);//完成率
}
function loadData(loadArr, vm) {
	//获取其他请求的参数
	var reqParams = initReqParams(vm),
		reqPromise = [],
		newArr = []; //记录非顶部请求的请求数组
	for(i = 0; i < loadArr.length; i++) {
		var j = loadArr[i];
		var param = reqParams[j];
		reqPromise.push(httpRequest.get(param.url, {
			data: param.data
		}));
		newArr.push(loadArr[i]);
	}
	if(reqPromise.length > 0) {
		Promise.all(reqPromise).then(function(ress) {
			var res1, res2, res3;
			for(var i = 0; i < loadArr.length; i++) {
				var j = loadArr[i] + 1;
				if(j == 1) {
					res1 = ress[i];
				}
				if(j == 2) {
					res2 = ress[i];
				}
				if(j == 3) {
					res3 = ress[i];
				}
			}
			if(res1 && res1.status == 200) {
				getTopTagDatas(res1.data,vm);
			}
			if(res2 && res2.status == 200) {
				handleSecondPanelData(res2.data, vm);
			}
			if(res3) {
				if(res3.status == 200) {
					listHandle(res3.data, vm);
				} else {
					console.log(res3.msg);
				}
			}
		})
	}
}
function handleSecondPanelData(data, vm) {
	var xDatas = [],
		yDatas = [],
		names = [],
		colors = ['#12b7f5'],
		index_names = {
			'index_1': '总签约人数'
		};
	for(var p in data) {
		names.push(index_names[p]);
		var xData = _.map(data[p].data, function(o) {
			return o.range;
		});
		var yData = _.map(data[p].data, function(o) {
			return o.amount;
		});
		xDatas.push(xData);
		yDatas.push(yData);
	}
	EventBus.$emit("draw-line-chart", {
		panelName: "签约量趋势",
		quotaNames: names,
		xData: xDatas[0],
		yDatas: yDatas,
		colors: colors
	});
}
function listHandle(data, vm) {
	for(i in data) {
		var list = data[i];
		var topArr = [];
		topArr = soreRank(getKeyValueArr(list, 'amount'));
		var arr = _.map(list, function(o, index) {
			var cols = [o.name];
			if(vm.analysisType=="2" && vm.level>2 && vm.lowLevel!=1){
				cols.push(o.num);
			}else{
				cols.push(o.amount);
			}
            if(vm.level>2 && vm.lowLevel!=1){
	          	cols.push(o.signTaskNum);
	          	cols.push(parseFloat(o.rate).toFixed(2)+"%");
	        }else if(vm.chooseYear!="2016"){
	          cols.push(o.signRegulationNum);
	        }
			
			return {
				rank: topArr[index],
				code: o.code,
				name: o.name,
				cols: cols
			}
		});
		var activeTab =  $(".area-tab-panel .area-tab.active span").html();
		var headers = ["排名", "签约量", "目标率","当前签约率"];
		if(activeTab=="团队"){
			headers = ["排名", "签约量", "调控量"];
		}
		EventBus.$emit("render-area-data", {
			level: vm.level,
			area: vm.area,
			lowLevel: vm.lowLevel,
			headers: headers,
			rows: arr
		});
	}
}

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

@ -0,0 +1,77 @@
<!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/common.css" />
	</head>
	<body style="margin: 0;">
		<div id="main">
			<header-tab :appname="appname" :isback="isback" :isrefresh="isrefresh" :isfilter="isfilter" :isopen="isopen"></header-tab>
			<header-prompt></header-prompt>
			<!-- 饼图 -->
			<div class="mt10 mb30">
				<div class="c-row">
					<div class="c-50 c-t-center c-position-r">
						<div class="div-radius-panel">
							<div class="c-f16 c-12b7f5 mt15">{{signRateData.signRateText}}</div>
							<div class="c-f14 c-666">签约率</div>
						</div>
						<div id="signMain" class="c-100 height-120"></div>
						<div class="c-f12 c-999 div-data-value">
							<span class="c-f12 c-12b7f5 qianyuelv">{{signRateData.signAmount}}</span>/
							<span class="c-f12 c-333 qianyuezong">{{signRateData.signRateAll}}</span>
						</div>
					</div>
					<div class="c-50 c-t-center c-position-r">
						<div class="div-radius-panel">
							<div class="c-f16 c-12b7f5 mt15">{{signRateData.completeRateText}}</div>
							<div class="c-f14 c-666">完成率</div>
						</div>
						<div id="completeMain" class="c-100" style="height: 120px;"></div>
						<div class="c-f12 c-999 div-data-value">
							<span class="c-f12 c-12b7f5">{{signRateData.completeAmount}}</span>/
							<span class="c-f12 c-333">{{signRateData.completeRateAll}}</span>
						</div>
					</div>
				</div>
			</div>
			<!-- 折线图 -->
			<line-chart v-on:getlinedata="getNewLineData" class="mlr8"></line-chart>
			<!-- 底部区域图 -->
			<area-data-panel class="mt20 mlr8" v-on:getnewdata="getAreaData"></area-data-panel>
			<!--模态框组件-->
			<vuedals></vuedals>
		</div>
		<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/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="../../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="../../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>
		<script src="../../component/statistics/header-prompt.js" type="text/javascript" charset="utf-8"></script>
		<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/sign-progress-filter.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/common.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/sign-progress.js" type="text/javascript" charset="utf-8"></script>
	</body>
</html>

+ 8 - 0
component/statistics/header-prompt.js

@ -37,6 +37,14 @@ Vue.component('header-prompt', {
		EventBus.$on('update-dimension-name', function(arg) {
			vm.dimensionVal = arg.dimensionVal;
		});
		
		//更新所有信息
		EventBus.$on('update-all-prompt-info', function(arg) {
			vm.areaName = arg.areaName;
			getJieZhiTime(vm);
			vm.selectDate = arg.selectDate;
			vm.dimensionVal = arg.dimensionVal;
		});
	},
	methods: {
		

+ 63 - 0
component/statistics/sign-progress-filter.js

@ -0,0 +1,63 @@
(function(){
    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" id="signYear" v-html="yearHtml" @click="yearClick">\
				</div>\
				<div class="mt20 ml10 filter-title">统计维度</div>\
				<div class="div-content">\
					<div class="mt20 div-group-btn c-row ml40">\
						<div class="div-btn c-33 active">\
							<a href="#" class="f-fs14">按任务</a>\
						</div>\
						<div class="div-btn c-33">\
							<a href="#" class="f-fs14">按人口</a>\
						</div>\
						<div class="div-btn c-33">\
							<a href="#" class="f-fs14">65岁以上签约</a>\
						</div>\
					</div>\
					<div class="mt20 div-group-btn c-row ml40">\
						<div class="div-btn c-33">\
							<a href="#" class="f-fs14">高血压</a>\
						</div>\
						<div class="div-btn c-33">\
							<a href="#" class="f-fs14">糖尿病</a>\
						</div>\
					</div>\
				</div>\
			</div>',
        props:[],
        data: function(){
            return {
                yearHtml:""
            }
        },
        methods: {
        	 yearClick:function(){
	          	$(event.target.closest("div")).addClass('active').siblings().removeClass('active')
	          },
        	formatYearData: function () {     
        		//显示年份最低是2016年
				var now = new Date(),
				    year = now.getFullYear();
				var yearHtml = "";
				if(now.getMonth() >= 6){
				    yearHtml += '<div class="c-33 active" 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>";
				    }else{
				        yearHtml += '<div class="c-33" data-val="'+i+'"><a>'+i+"</a></div>";
				    }
				}
                  this.yearHtml = yearHtml;
           },
        },
        mounted: function(){
        	this.formatYearData();
        }
    });
    
})()