Переглянути джерело

康复下转和康复管理优化

yht2016 5 роки тому
батько
коміт
4eb9b30025

+ 8 - 0
api/rehabilitation-api.js

@ -152,6 +152,14 @@
		// 获取居民签约的专科团队
		findPatientTeamList: function(data){
			return httpRequest.get("doctor/specialist/findPatientTeamList", {data: data})
		},
		// 获取不限频次的服务项记录
		selectByPlanDetaiId: function(data){
			return httpRequest.get("doctor/specialist/rehabilitation/selectByPlanDetaiId", {data: data})
		},
		// 根据患者身份证或社保卡号进行搜索添加出院记录
		getPatientByIdcardOrSsc: function(data){
			return httpRequest.post("doctor/rehabilitation/getPatientByIdcardOrSsc", {data: data})
		}
	}
    exports.rehaAPI = rehaAPI;

+ 15 - 1
app/recover/css/common.css

@ -19,6 +19,19 @@
.w-220{
	width: 220px;
}
.w-300{
    width: 300px;
}
.bgc-f5f5fa{
    background-color: #f5f5fa;
}
.c-FF0000{
    color: #FF0000
}
.lh28{
    height: 28px;
	line-height: 28px;
}
.h30{
	height: 30px;
	line-height: 30px;
@ -30,7 +43,7 @@
	display: inline-block;
}
.btn-size-s{
    width: 80px;
    min-width: 80px;
    height: 30px;
    font-size: 14px;
}
@ -81,6 +94,7 @@
}
/* 输入框样式 */
.form-control{
    display: inline-block;
	border-radius: 3px;
	padding: 0 12px;
	box-sizing: border-box;

+ 4 - 3
app/recover/css/new_recover.css

@ -134,18 +134,19 @@ ul {
}
.bgc-999 {background-color: #999;}
.w100 {width: 100px;}
.custom-dropdown{width: 140px;}
.set-xia {
	background: url(../../../images/tiaozhuan_xia_icon.png) no-repeat no-repeat 85px center;
	background: url(../../../images/tiaozhuan_xia_icon.png) no-repeat no-repeat 125px center;
	background-size: 8px 4px;
}
.set-shang {
	background: url(../../../images/tiaozhuan_shang_icon.png) no-repeat no-repeat 85px center;
	background: url(../../../images/tiaozhuan_shang_icon.png) no-repeat no-repeat 125px center;
	background-size: 8px 4px;
}
.doc_list {
	width: 100%;
	left: 0;
	top: 16px;
	width: 98px;
	z-index: 999;
	background-color: #ffffff;
}

+ 29 - 2
app/recover/css/personal-manage.css

@ -14,7 +14,7 @@
.w30 {width: 30px;}
.set-dianxian {
	width: 20px;
	height: 36px;
	height: 59px;
	background: url(../images/dianxian.png) no-repeat repeat center center;
}
.mt13 {margin-top: 13px;}
@ -30,7 +30,12 @@
	width: 10px;
	height: 10px;
	border-radius: 50%;
	margin-left: -5px;
}
.recover-list::-webkit-scrollbar{
	width: 0;
}
.w-100-220 {width: calc(100% - 220px);}
.record-li:hover {
	background-color: #f1f6f5;
@ -113,6 +118,7 @@
	align-items: center;
}
.zhibiao_icon{
	display: inline-block;
	padding-right: 10px;
	position: relative;
}
@ -136,4 +142,25 @@
.zhibiao_icon.high::after{
	background: url('../images/zhibiao_gao_icon.png') no-repeat;
	background-size: 100% 100%;
}
}
.icon-group{position: absolute;top: 15px;right: 15px;z-index: 1;}
.icon-edit{font-size: 22px; color: #12b7f5;}
.icon-close{font-size: 22px;}
.btn-yuyue{background-color: #02cfb9;color: #fff;}
.btn-yuyue:hover,.btn-yuyue:link{color: #fff;background-color: #01c1ad;}
.btn-12b7f5{color: #fff;background-color: #12b7f5;}
.btn-12b7f5:hover,.btn-12b7f5:link{color: #fff;background-color: #12b7f5;}
.btn-disabled{background-color: #eee;color: #999;}
.btn-disabled:hover, .btn-disabled:link{background-color: #eee;color: #999;}
.btn-fuwuma{background-color: #2dbe55;color: #fff;}
.btn-fuwuma:hover,.btn-fuwuma:link{color: #fff;background-color: #209440;}
.btn-zhidao{background-color: #12b7f5;color: #fff;}
.btn-zhidao:hover,.btn-zhidao:link{color: #fff;background-color: #10a0d6;}
.upload-box{margin-top:0;padding: 10px 0 10px 10px;overflow: hidden;border: 1px solid #d7dce6;}
.upload-box li{width: 60px;height: 60px;position: relative;display: block;float: left;margin-right: 10px;}
.upload-box li img{width: 100%;display: block;}
.upload-img-box{width: 100%;height: 100%;overflow: hidden;}
.delete-img{position: absolute;right: -5px;top: -5px;color: #fff;background-color: #ccc;border-radius: 100%;text-align: center;line-height: 15px;width: 15px;height: 15px;}
.upload-img{position: absolute;left: 0;right: 0;top: 0;bottom: 0;opacity: 0;z-index: 3;font-size: 0;width: 100%;height: 100%;}
.add-img{font-size: 40px;line-height: 60px;font-weight: 500;width: 60px;height: 60px;display: block;text-align: center;border: 1px dashed #d7dce6;color: #bec8d2;}

+ 267 - 44
app/recover/html/medical-records.html

@ -14,6 +14,13 @@
				width: 381px !important;
				left: 89px!important;
			}
			.upload-box{margin-top:0;padding: 10px 0 10px 10px;overflow: hidden;border: 1px solid #d7dce6;}
			.upload-box li{width: 60px;height: 60px;position: relative;display: block;float: left;margin-right: 10px;}
			.upload-box li img{width: 100%;display: block;}
			.upload-img-box{width: 100%;height: 100%;overflow: hidden;}
			.delete-img{position: absolute;right: -5px;top: -5px;color: #fff;background-color: #ccc;border-radius: 100%;text-align: center;line-height: 15px;width: 15px;height: 15px;}
			.upload-img{position: absolute;left: 0;right: 0;top: 0;bottom: 0;opacity: 0;z-index: 3;font-size: 0;width: 100%;height: 100%;}
			.add-img{font-size: 40px;line-height: 60px;font-weight: 500;width: 60px;height: 60px;display: block;text-align: center;border: 1px dashed #d7dce6;color: #bec8d2;}
		</style>
	</head>
	<body class="m0">
@ -24,6 +31,31 @@
				<el-date-picker v-model="admissionTime" type="date" placeholder="请选择">
				</el-date-picker>
            </div>
        </div>
		<div class="pt10 flex ui-row mt10">
            <label class="c-999 required" style="font-weight: normal;">入院诊断:</label>
            <div class="flex1">
				<div class="flex">
				    <el-autocomplete
						class="w-220"
						v-model="admittingDiagnosisValue"
						:fetch-suggestions="fetchAdmittingDiagnosis"
						placeholder="请输入内容"
						@select="handleSelect"
					></el-autocomplete>
					<button type="button" class="btn btn-12B7F5 btn-size-s ml15" style="border-radius: 0;" @click="saveDiagnosisWrap('admitting')">+ 添加</button>
				</div>
				<div>
					<el-tag
						v-for="(v, i) in admittingTags"
						:key="i"
						closable
						class="mr5 mt5"
						@close="closeTag('admitting', i)">
						{{v}}
					</el-tag>
				</div>
            </div>
        </div>
        <div class="pt10 flex ui-row mt10">
            <label class="c-999 required" style="font-weight: normal;">出院时间:</label>
@ -34,25 +66,25 @@
            </div>
        </div>
        <div class="pt10 flex ui-row mt10">
            <label class="c-999 required" style="font-weight: normal;">诊断结果:</label>
            <label class="c-999 required" style="font-weight: normal;">出院诊断:</label>
            <div class="flex1">
				<div class="flex">
				    <el-autocomplete
						class="w-220"
						v-model="diagnosisValue"
						:fetch-suggestions="getIcd10Info"
						v-model="dischargeDiagnosisValue"
						:fetch-suggestions="fetchDischargeDiagnosis"
						placeholder="请输入内容"
						@select="handleSelect"
					></el-autocomplete>
					<button type="button" class="btn btn-12B7F5 btn-size-s ml15" style="border-radius: 0;" @click="saveDiagnosisWrap">+ 添加</button>
					<button type="button" class="btn btn-12B7F5 btn-size-s ml15" style="border-radius: 0;" @click="saveDiagnosisWrap('')">+ 添加</button>
				</div>
				<div>
					<el-tag
						v-for="(v, i) in tags"
						v-for="(v, i) in dischargeTags"
						:key="i"
						closable
						class="mr5 mt5"
						@close="closeTag(i)">
						@close="closeTag('discharge', i)">
						{{v}}
					</el-tag>
				</div>
@ -64,10 +96,35 @@
                <textarea v-model="advice" class="p10 c-333" style="height: 160px; width: 100%; border:1px solid #e1e1e1; resize:none;box-sizing: border-box"></textarea>
            </div>
        </div>
		<div class="pt10 flex ui-row mt10">
            <label class="c-999 required" style="font-weight: normal;">病历图片:</label>
			<div class="flex1">
				<ul class="upload-box">
					<li class="flex-box" v-for="(img,index) in upImgs">
						<div class="upload-img-box">      						
							<img :src="img.baseUrl" @click="previewImg(img.baseUrl)"/>
						</div>
						<a class="delete-img" @click="deleteImg(index)">&times;</a>
					</li>
					<li class="flex-box" v-if="upImgs.length<6">
						<span class="add-img">+</span>
						<input type="file" @change="upLoadImgToBase64" class="upload-img" />
					</li>
				</ul>
				<div>({{upImgs.length}}/6)</div>
			</div>
		</div>
		
        <div class="c-t-center mt20">
            <button type="button" class="btn btn-white btn-size-m mr15" @click="cancelMedicalRecords">取消</button>
            <button type="button" class="btn btn-12B7F5 btn-size-m" @click="addMedicalRecords">保存</button>
        </div>
	</div>
		<!--查看图片-->
	<div id="outerdiv" style="position:fixed;top:0;left:0;background:rgba(0,0,0,0.7);z-index:2;width:100%;height:100%;display:none;">
		<div id="innerdiv" style="position:absolute;">
			<img id="bigimg" style="border:5px solid #fff;" src="" />
		</div>
	</div>
		<script src="../../../js/vue.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../js/jquery-2.2.4.js"></script>
@ -120,16 +177,24 @@
					},
					admissionTime: '',
					dischargeTime: '',
					diseaseData: [], //诊断列表
					diagnosisValue: '',
					diagnosisObj: {},
					tags: [],//诊断标签
					tagsObj: {},
					admittingDiagnosisValue: '',
					admittingDiagnosisObj: {},
					admittingTagsObj: {},
					admittingTags: [],//入院诊断标签
					dischargeDiagnosisValue: '',
					dischargeDiagnosisObj: {},
					dischargeTagsObj: {},
					dischargeTags: [],//出院诊断标签
					advice: '',
					doctorCode: docInfo.uid,
					patient: httpData.patient,
					patientName: decodeURI(httpData.patientName),
					medicalRecordsId: '',
					upImgs: [],
					upImgArr: [],
					imgData: {
						accept: 'image/gif, image/jpeg, image/png, image/jpg',
					},
                },
                mounted: function() {
					if(httpData['medicalRecordsId']){
@ -143,33 +208,123 @@
						var vm = this
						vm.admissionTime = model.admissionTime
						vm.dischargeTime = model.dischargeTime
						vm.tags = model.diagnosisName.split(',')
						var diagnosisCodeArr = model.diagnosis.split(',')
						$.each(vm.tags, function(index, o){
							vm.tagsObj[o] = diagnosisCodeArr[index]
						vm.admittingTags = model.admittingDiagnosisName.split(',')
						var admittingCodeArr = model.admittingDiagnosis.split(',')
						$.each(vm.admittingTags, function(index, o){
							vm.admittingTagsObj[o] = admittingCodeArr[index]
						})
						vm.dischargeTags = model.dischargeDiagnosisName.split(',')
						var dischargeCodeArr = model.dischargeDiagnosis.split(',')
						$.each(vm.dischargeTags, function(index, o){
							vm.dischargeTagsObj[o] = dischargeCodeArr[index]
						})
						var imgList = model.images.split(',')||[]
						$.each(imgList, function(index, item){
							var obj = {
								baseUrl: httpRequest.getImgUrl(item)
							}
							vm.upImgs.push(obj)
						})
						console.log('vm.tagsObj', vm.tagsObj)
						vm.advice = model.advice
					},
					handleSelect: function(res){
						
					},
					deleteImg: function(idx) {
						console.log(idx)
						this.upImgs.splice(idx, 1)
					},
					upLoadImgToBase64: function() {
						var vm = this;
						var img1 = event.target.files[0];
						var reader = new FileReader();
						var type = img1.type; //文件的类型,判断是否是图片  
						var size = img1.size; //文件的大小,判断图片的大小  
						if(this.imgData.accept.indexOf(type) == -1) {
							alert('请选择我们支持的图片格式!');
							return false;
						}
						if(size > 3145728) {
							alert('请选择3M以内的图片!');
							return false;
						}
						reader.readAsDataURL(img1);
						reader.onload = function(e) {
							vm.upImgs.push({
								baseUrl: e.target.result
							});
							vm.upImgArr.push(img1);
							vm.uploadImg(vm.upImgArr);
						}
					},
					//上传图片
					uploadImg: function(data) {
						var vm = this;
						var len = data.length;
						if(len==0){
							return
						}
						var file = data[len - 1];
						var formData = new FormData();
						formData.append('file', file);
						rehaAPI.upload(formData).then(function(res) {
							if(res.status == 200) {
								vm.upImgs[len - 1].img = res.data;
								data.pop();
								vm.$forceUpdate()
								vm.uploadImg(data);
							} else {
								layer.msg(res.msg, {
									icon: 5
								});
							}
						})
					},
					//添加诊断
					saveDiagnosisWrap: function(){
						if(this.diagnosisValue.trim().length>0){
							if(this.tagsObj[this.diagnosisValue]){
								showInfoMessage('该诊断已被添加')
								return false
					saveDiagnosisWrap: function(type){
						if(type=='admitting'){
							if(this.admittingDiagnosisValue.trim().length>0){
								if(this.admittingTagsObj[this.admittingDiagnosisValue]){
									showInfoMessage('该诊断已被添加')
									return false
								}
								this.admittingTagsObj[this.admittingDiagnosisValue] = this.admittingDiagnosisObj[this.admittingDiagnosisValue]
								this.admittingTags.push(this.admittingDiagnosisValue)
								this.admittingDiagnosisValue = ''
							}
						} else {
							if(this.dischargeDiagnosisValue.trim().length>0){
								if(this.dischargeTagsObj[this.dischargeDiagnosisValue]){
									showInfoMessage('该诊断已被添加')
									return false
								}
								this.dischargeTagsObj[this.dischargeDiagnosisValue] = this.dischargeDiagnosisObj[this.dischargeDiagnosisValue]
								this.dischargeTags.push(this.dischargeDiagnosisValue)
								this.dischargeDiagnosisValue = ''
							}
							this.tags.push(this.diagnosisValue)
							this.diagnosisValue = ''
						}
					},
					//删除诊断标签
					closeTag: function(i){
						this.tags.splice(i, 1)
					closeTag: function(type, i){
						if(type=='admitting'){
							var key = this.admittingTags[i]
							delete this.admittingTagsObj[key]
							this.admittingTags.splice(i, 1)
						} else {
							var key = this.dischargeTags[i]
							delete this.dischargeTagsObj[key]
							this.dischargeTags.splice(i, 1)
						}
					},
					fetchAdmittingDiagnosis: function(queryString, cb){
						var vm = this
						vm.getIcd10Info('admitting',queryString, cb)
					},
					getIcd10Info: function(queryString, cb){
					fetchDischargeDiagnosis: function(queryString, cb){
						var vm = this
						vm.getIcd10Info('discharge',queryString, cb)
					},
					getIcd10Info: function(type, queryString, cb){
						var vm = this,nameKey = queryString,
			    			params = {
								nameKey:nameKey,
@ -178,12 +333,24 @@
							}
						rehaAPI.getIcd10Info(params).then(function(res){
							if(res.status == 200) {
								vm.diseaseData = $.each(res.data, function(i, o){
									vm.diagnosisObj[o.code]=o.name
									o.value = o.name								
									return o
								})
								cb(vm.diseaseData);
								var arr = []
								if(type=='admitting'){
									var admittingDiseaseData = $.each(res.data, function(i, o){
										vm.admittingDiagnosisObj[o.name]=o.code
										o.value = o.name								
										return o
									})
									arr = admittingDiseaseData
								} else if(type=='discharge') {
									var dischargeDiseaseData = $.each(res.data, function(i, o){
										vm.dischargeDiagnosisObj[o.name]=o.code
										o.value = o.name								
										return o
									})
									arr = dischargeDiseaseData
								}
								cb(arr);
							} else {
								showErrorMessage(res.msg);
							}
@ -192,6 +359,9 @@
					cancelMedicalRecords: function(){
						top.recoverVue.closeMedicalRecords()
					},
					previewImg: function(url){
						imgShow("#outerdiv", "#innerdiv", "#bigimg", url);
					},
					addMedicalRecords: function(){
						var vm = this
						if(!this.admissionTime){
@ -206,29 +376,43 @@
                			showWarningMessage("入院时间应小于出院时间!")
                			return false;
                		}
						if(this.tags.length<=0){
							showErrorMessage('请添加诊断!')
						if(this.admittingTags.length<=0){
							showErrorMessage('请添加入院诊断!')
							return false
						}
						if(this.dischargeTags.length<=0){
							showErrorMessage('请添加出院诊断!')
							return false
						}
						if(!this.advice||this.advice.trim().length<=0){
							showErrorMessage('请输入医嘱小结!')
							return false
						}
						var diagnosisArr=[], diagnosisNameArr=[];
						$.each(vm.diseaseData, function(i, o){
							$.each(vm.tags, function(index, value){
								if(o.value==value){
									diagnosisArr.push(o.code)
									diagnosisNameArr.push(o.value)
								}
						var admittingDiagnosisArr=[], admittingDiagnosisNameArr=[],
							dischargeDiagnosisArr = [], dischargeDiagnosisNameArr = []
							$.each(vm.admittingTags, function(index, value){
								var code = vm.admittingTagsObj[value]
								admittingDiagnosisArr.push(code)
								admittingDiagnosisNameArr.push(value)
							})
							$.each(vm.dischargeTags, function(index, value){
								var code = vm.dischargeTagsObj[value]
								dischargeDiagnosisArr.push(code)
								dischargeDiagnosisNameArr.push(value)
							})
						var imgList=[];
						$.each(vm.upImgs, function(index, item){
							imgList.push(item.img)
						})
						var jsonData = {
							admissionTime: new Date(this.admissionTime).format('yyyy-MM-dd HH:mm:ss'),
							dischargeTime: new Date(this.dischargeTime).format('yyyy-MM-dd HH:mm:ss'),
							diagnosis: diagnosisArr.join(','),
							diagnosisName: diagnosisNameArr.join(','),
							advice: this.advice
							admittingDiagnosis: admittingDiagnosisArr.join(','), // 入院诊断
							admittingDiagnosisName: admittingDiagnosisNameArr.join(','), //入院诊断名称
							dischargeDiagnosis: dischargeDiagnosisArr.join(','), // 出院诊断
							dischargeDiagnosisName: dischargeDiagnosisNameArr.join(','), // 出院诊断名称,多个用逗号
							advice: this.advice,
							images: imgList.join(',')
						}
						var params = {
							doctorCode: vm.doctorCode,
@ -239,10 +423,13 @@
						if(vm.medicalRecordsId){
							params['id'] = vm.medicalRecordsId
						}
						// console.log('paramsparamsparamsparamsparams', jsonData)
						// return 
						var loading = layer.load(0, {shade: false})
						rehaAPI.createMedicalRecords(params).then(function(res){
							layer.close(loading)
							if(res.status==200){
								console.log('res.data', res.data)
								if(vm.medicalRecordsId){
									top.recoverVue.completeMedicalRecords('edit', res.data)
								} else {
@ -258,6 +445,42 @@
					}
                }
            })
			function imgShow(outerdiv, innerdiv, bigimg, src){
			//      var src = _this.attr("src");//获取当前点击的pimg元素中的src属性  
			$(bigimg).attr("src", src);//设置#bigimg元素的src属性  
				/*获取当前点击图片的真实大小,并显示弹出层及大图*/  
			$("<img/>").attr("src", src).load(function(){  
				var windowW = $(window).width();//获取当前窗口宽度  
				var windowH = $(window).height();//获取当前窗口高度  
				var realWidth = this.width;//获取图片真实宽度  
				var realHeight = this.height;//获取图片真实高度  
				var imgWidth, imgHeight;  
				var scale = 0.8;//缩放尺寸,当图片真实宽度和高度大于窗口宽度和高度时进行缩放  
					
				if(realHeight>windowH*scale) {//判断图片高度  
					imgHeight = windowH*scale;//如大于窗口高度,图片高度进行缩放  
					imgWidth = imgHeight/realHeight*realWidth;//等比例缩放宽度  
					if(imgWidth>windowW*scale) {//如宽度扔大于窗口宽度  
						imgWidth = windowW*scale;//再对宽度进行缩放  
					}  
				} else if(realWidth>windowW*scale) {//如图片高度合适,判断图片宽度  
					imgWidth = windowW*scale;//如大于窗口宽度,图片宽度进行缩放  
								imgHeight = imgWidth/realWidth*realHeight;//等比例缩放高度  
				} else {//如果图片真实高度和宽度都符合要求,高宽不变  
					imgWidth = realWidth;  
					imgHeight = realHeight;  
				}  
						$(bigimg).css("width",imgWidth);//以最终的宽度对图片缩放  
					
				var w = (windowW-imgWidth)/2;//计算图片与窗口左边距  
				var h = (windowH-imgHeight)/2;//计算图片与窗口上边距  
				$(innerdiv).css({"top":h, "left":w});//设置#innerdiv的top和left属性  
				$(outerdiv).fadeIn("fast");//淡入显示#outerdiv及.pimg  
			});  
			$(outerdiv).click(function(){//再次点击淡出消失弹出层  
				$(this).fadeOut("fast");  
			}); 
			}
		</script>
	</body>
</html>

+ 38 - 110
app/recover/html/new_recover.html

@ -139,7 +139,7 @@
		        			<div class="c-h100-41" style="overflow: hidden;">
		        				<ul class="c-h100 p0 m0" style="overflow: auto;">
		        					<li class="mt10 plr10 ptb5 c-border b-r-3 clearfix" v-for="(detail, index) in templateDetail" :key="index">
										<div v-if="detail.name=='康复咨询'||detail.name=='远程健康监测'">
										<div v-if="detail.code=='2'||detail.code=='3'">
											<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.name}}</p>
												<div class="clearfix">
@ -175,16 +175,16 @@
												<div class="m0 p0 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>
														<div class="fl c-position-r custom-dropdown">
															<p class="m0 p0 plr10 c-border cur-pit set-xia" :class="{'set-shang':detail.selectFre}" @click="changeSelectFre(index, detail.selectFre)">{{detail.frequencyName}}</p>
															<ul class="m0 p0 c-border-b c-border-l c-border-r c-position-a doc_list" v-if="detail.selectFre" style="overflow-y: auto; height: 100px;">
																<li class="plr10 c-border-t cur-pit" v-for="(list, indDoc) in detail.frequencyList" :key="indDoc" @click="selectFre(index, list)">{{list.code}}</li>
																<li class="plr10 c-border-t cur-pit" v-for="(list, indDoc) in detail.frequencyList" :key="indDoc" @click="selectFre(index, list)">{{list.name}}</li>
															</ul>
														</div>
													</div>
													<div class="m0 mb10 p0 fl clearfix">
													<div v-if="detail.frequencyName!='不限频次'" class="m0 mb10 p0 fl clearfix">
														<span class="fl c-999">执行人员:</span>
														<div class="fl c-position-r w100">
														<div class="fl c-position-r custom-dropdown">
															<p class="m0 p0 plr10 c-border cur-pit set-xia" :class="{'set-shang':detail.selectDoc}" @click="changeSelectDoc(index, detail.selectDoc)">{{detail.executeDoctorName}}</p>
															<ul class="m0 p0 c-border-b c-border-l c-border-r c-position-a doc_list" v-if="detail.selectDoc" style="overflow-y: auto; max-height: 100px;">
																<li class="plr10 c-border-t cur-pit" v-for="(list, indDoc) in detail.docList" :key="indDoc" @click="selectLi(index, list)">{{list.name}}</li>
@ -192,12 +192,12 @@
														</div>
													</div>
												</div>
												<div class="pl65 mb10 set-label" v-if="detail.frequency.unit == 'H'">
												<div v-if="detail.frequencyName!='不限频次'" class="pl65 mb10 set-label" v-if="detail.frequency.unit == 'H'">
													<span :class="detail.timeType == 1 ? 'pl20 mr5 cur-pit active' : 'pl20 mr5 cur-pit'" @click="selectTimeType(index, 1)">白天</span>
													<span :class="detail.timeType == 2 ? 'pl20 mr5 cur-pit active' : 'pl20 mr5 cur-pit'" @click="selectTimeType(index, 2)">晚上</span>
													<span :class="detail.timeType == 0 ? 'pl20 cur-pit active' : 'pl20 cur-pit'" @click="selectTimeType(index, 0)">全天</span>
												</div>
												<div>
												<div v-if="detail.frequencyName!='不限频次'">
													<div class="clearfix">
														<span class="fl c-999 lh24">起始时间:</span>
														<div class="fl maxw600 mb10">
@ -222,9 +222,9 @@
												</div>
											</div>
											<div class='fr w60 c-t-right clearfix'>
												<p class="m0 p0 mb10">×{{mul(detail.executeTime.length, detail.frequency.count)}}</p>
												<p v-if="detail.frequencyName!='不限频次'" class="m0 p0 mb10">×{{mul(detail.executeTime.length, detail.frequency.count)}}</p>
												<div class="clearfix mb10"><span class="fr sub-tap cur-pit" @click="subTemplate(index, detail)"></span></div>
												<div class="clearfix"><span class="fr fuzhi-tap cur-pit" @click="copyTemplate(index, detail)"></span></div>
												<div v-if="detail.frequencyName!='不限频次'" class="clearfix"><span class="fr fuzhi-tap cur-pit" @click="copyTemplate(index, detail)"></span></div>
											</div>
										</div>
		        					</li>
@ -392,7 +392,8 @@
					showAdviceContentTip: false,
					curMedicalRecordsIndex: -1,
					diseaseCodeArr: [],
					diseaseNameArr: []
					diseaseNameArr: [],
					isEditServiceItem: httpData['isEditServiceItem']||false
				},
				watch: {
					adviceContent: function(){
@ -417,7 +418,6 @@
                		this.templateDetail = []
						this.pati = {patient: httpData.patient}
                		this.getPatientInfo()
                		// this.diagnosisQuery()
					} 
					if(httpData.teamCode){
						this.teamCode = httpData.teamCode
@ -430,7 +430,7 @@
						var vm = this
						this.selectPatientIndex = layer.open({
							type: 2,
							area: ['480px', '520px'],
							area: ['480px', '650px'],
							shade: 0.5,
							title: '添加住院病历',
							closeBtn: 1,
@ -617,7 +617,7 @@
			    		recoverAPI.selectFrequencys().then(function(res) {
							layer.close(loadding)
							if(res.status == 200) {
								vm.frequencyList = res.data
								vm.frequencyList = [{code:'', name: '不限频次'}].concat(res.data)
							} else {
								showErrorMessage(res.msg);
							}
@ -636,11 +636,6 @@
							if(res.status == 200) {
								vm.patiInfo = res.data
								vm.pati.patientName = res.data.name
								vm.jDlist.push({
									name: docInfo.name,
									code: docInfo.uid,
									hospitalName: docInfo.hospitalName
								})
								vm.jDlist.push({
									name: vm.patiInfo.ssDoctorName || vm.patiInfo.jtDoctorName,
									code: vm.patiInfo.ssDoctor || vm.patiInfo.jtDoctor,
@ -651,6 +646,11 @@
									code: vm.patiInfo.ssDoctorHealth || vm.patiInfo.jtDoctorHealth,
									hospitalName: vm.patiInfo.jtHospitalName
								})
								vm.jDlist.push({
									name: docInfo.name,
									code: docInfo.uid,
									hospitalName: docInfo.hospitalName
								})
								// 获取居民标签
								vm.getPatientLabelInfo()
								if(!vm.teamCode){
@ -737,6 +737,7 @@
												// 默认频次
												o1.selectFre = false
												o1.frequencyCode = vm.frequencyList[0].code
												o1.frequencyName = vm.frequencyList[0].Name
												o1.frequency = vm.frequencyList[0]
												o1.frequencyList = vm.frequencyList
												o1.timeType = 0
@ -777,63 +778,6 @@
							}
						})
					},
                	// 服务项目列表
                	// findServiceItemsByHospital: function() {
                	// 	var vm = this,
			    	// 		loadding = layer.load(0, {shade: false}),
			    	// 		params = {
			    	// 			doctor: docInfo.uid,
					// 			patient: this.pati.patient,
					// 			serviceItemName: this.searchKey
			    	// 		}
					// 	recoverAPI.findServiceItemsByHospital(params).then(function(res) {
					// 		layer.close(loadding)
					// 		if(res.status == 200) {
					// 			vm.projectList = $.each(res.data[0], function(index, o) {
					// 				$.each(vm.templateResult, function(index1, o1) {
					// 					if(o1.specialistServiceItemDO.itemType == o.itemType) {
					// 						$.each(o.item, function(index2, o2) {
					// 							if(o1.specialistServiceItemDO.diseaseItem == o2.itemName) {
					// 								$.each(o2.hospitalServiceItems, function(index3, o3) {
					// 									if(o3.serviceItemId == o1.serviceItemId) {
					// 										o3.isSelect = true
					// 										o3.selectDoc = false
					// 										o3.selectDate = 1
					// 										o3.value14 = []
					// 										o3.value15 = null
					// 										o3.specialistServiceItemDO.executeTime = []
					// 										o3.specialistServiceItemDO.selectDateRange = []
					// 										// 默认频次
					// 										o3.selectFre = false
					// 										o3.frequencyCode = vm.frequencyList[0].code
					// 										o3.frequency = vm.frequencyList[0]
					// 										o3.frequencyList = vm.frequencyList
					// 										o3.timeType = 0
					// 										o3.remark = null
					// 										// 标识 (1 社区 2 医院 3 社区、医院)
					// 										if(o3.flag == 2) {
					// 											o3.executeDoctor = vm.zDlist[0].code
					// 											o3.executeDoctorName = vm.zDlist[0].name
					// 											o3.docList = vm.zDlist
					// 										} else {
					// 											o3.executeDoctor = vm.jDlist[0].code
					// 											o3.executeDoctorName = vm.jDlist[0].name
					// 											o3.docList = vm.jDlist
					// 										}
					// 										vm.templateDetail.push(o3)
					// 									}
					// 								});
					// 							}
					// 						});
					// 					}
					// 				});
					// 				return o;
					// 			});
					// 		} else {
					// 			showErrorMessage(res.msg);
					// 		}
					// 	})
                	// },
                	searchProject: function() {
						this.getServiceItemList(true)
                	},
@ -857,9 +801,11 @@
			    	selectFre: function(index, list) {
			    		this.templateDetail[index].selectFre = false
			    		this.templateDetail[index].frequencyCode = list.code
						this.templateDetail[index].frequencyName = list.name
			    		this.templateDetail[index].frequency = list
			    		this.templateDetail[index] = this.templateDetail[index]
			    		this.isTest = !this.isTest
						this.judgeHavePlan()
			    	},
			    	// 选择时间段
			    	selectTimeType: function(index, timetype) {
@ -944,6 +890,7 @@
                		// 频次选择
                		this.selectProjectDetail.selectFre = false
                		this.selectProjectDetail.frequencyCode = this.frequencyList[0].code
						this.selectProjectDetail.frequencyName = this.frequencyList[0].name
                		this.selectProjectDetail.frequency = this.frequencyList[0]
                		this.selectProjectDetail.frequencyList = this.frequencyList
                		this.selectProjectDetail.timeType = 0
@ -957,6 +904,7 @@
						if(this.selectProjectDetail.code!='2'&&this.selectProjectDetail.code!='3'){
							this.havePlan = false
						}
						this.judgeHavePlan()
						
                	},
                	// 查看项目
@ -1147,12 +1095,18 @@
                	judgeHavePlan: function() {
						var arr = []
                		for(var k = 0; k < this.templateDetail.length; k++) {
							if(this.templateDetail[k].code!='2'&&this.templateDetail[k].code!='3'){
							if(this.templateDetail[k].code=='2'||this.templateDetail[k].code=='3'){
								arr.push(true)
							} else if(this.templateDetail[k].frequencyCode){
								console.log('this.templateDetail[k].frequencyCode', this.templateDetail[k].frequencyCode)
								if(this.templateDetail[k].executeTime[0]) {
									arr.push(true)
								}else {
									arr.push(false)
								}
							} else {
								console.log('this.templateDetail[k].frequencyCode', this.templateDetail[k].frequencyCode)
								arr.push(true)
							}
						}
						var flag = _.every(arr, Boolean)
@ -1198,18 +1152,18 @@
							
						};
						$.each(vm.templateDetail, function(index, o) {
							if(o.code=='2'||o.code=='3'){
								var obj = {
							var obj;
							if(o.code=='2'||o.code=='3'||!o.frequencyCode){
								obj = {
									hospitalServiceItemId: o.code,
									type: 2,
									doctor: '',
									doctorName: '',
									doctor: vm.jDlist[0].code,
									doctorName: vm.jDlist[0].name,
									executeTimes: '',
									frequencyCode: '',
									timeType: 0,
									remark: o.remark || ''
								}
								data.detail.push(obj)
							}else{
								if(o.executeTime.length) {
									var executeTime = []
@ -1217,7 +1171,7 @@
										v += ' 00:00'
										executeTime.push(v)
									});
									var obj = {
									obj = {
										hospitalServiceItemId: o.code,
										type: 2,
										doctor: o.executeDoctor,
@ -1227,9 +1181,9 @@
										timeType: o.timeType,
										remark: o.remark || ''
									}
									data.detail.push(obj)
								}
							}
							data.detail.push(obj)
						});
						var params = {
@ -1241,32 +1195,6 @@
							layer.close(loadding)
							if(res.status == 200) {
								vm.isPlanId = res.data
								// if(vm.isPlanId){
								// 	var thr_parems ={
								// 		patient:vm.pati.patient,
								// 		patientName:vm.pati.patientName,
								// 		planId:vm.isPlanId,
								// 		hospitalName:$('.input-group-btn button').text().trim(),
								// 		department:$('#department').find('input').val(),//vm.subsidiaryInfo.data.department|| ""
								// 		attendingDoctorName:$('#attendingDoctor').find('input').val(),//vm.subsidiaryInfo.data.attendingDoctor ||""
								// 		admittingDiagnosis:$('#admissionDiagnosis').find('input').val(),//vm.subsidiaryInfo.data.admissionDiagnosis || ""
								// 		dischargeDiagnosis:$('#dischargeDiagnosis').find('input').val(),//vm.subsidiaryInfo.data.dischargeDiagnosis|| ""
								// 		advice:$('.tipText').val().trim(),//vm.subsidiaryInfo.data.dischargeOrder ||""
								// 		dischargeTime:vm.subsidiaryInfo.data.dischargeTime || ""
								// 	}
								// 	loadding = layer.load(0, {shade: false});
								// 	recoverAPI.preservationInfo(thr_parems).then(function(res){
								// 		layer.close(loadding)
								// 		if (res.status == 200) {
								// 			setTimeout(function() {
								// 				window.location.href = "../../rehabilitation/html/health_control.html"
								// 			}, 1000)
								// 			showSuccessMessage('保存成功')
								// 		}else{
								// 			showErrorMessage(res.msg);
								// 		}
								// 	})
								// }
								setTimeout(function() {
									window.location.href = "../../rehabilitation/html/health_control.html"
								}, 1000)

+ 79 - 44
app/recover/html/personal-manage.html

@ -3,10 +3,13 @@
	<head>
		<meta charset="UTF-8">
		<title>康复管理</title>
		<link rel="stylesheet" type="text/css" href="../../../css/bootstrap.min.css" />
		<link rel="stylesheet" type="text/css" href="../../../css/cross.css" />
		<link rel="stylesheet" type="text/css" href="../../../css/cross.ui.css" />
		<link rel="stylesheet" type="text/css" href="../../../css/style.min.css" />
		<link href="../../../plugins/toastr/toastr.min.css" rel="stylesheet">
		<link rel="stylesheet" href="../../../plugins/toastr/toastr.min.css">
		<link rel="stylesheet" href="../../../plugins/element-ui/element-ui.css" />
		<link rel="stylesheet" href="../css/common.css" />
		<link rel="stylesheet" type="text/css" href="../css/new_recover.css" />
		<link rel="stylesheet" type="text/css" href="../css/personal-manage.css" />
	</head>
@ -42,7 +45,6 @@
					</p>
    			</div>
    			<h4 class="m0 pl15 lh40 c-border-b c-position-r"><em class="c-position-a set-blue-span"></em>服务医生</h4>
    			<!--<div class="pt10 pb10" style="overflow: hidden; height: 190px;">-->
    			<div class="pt10 pb10 ui-col-0" style="overflow: hidden; height: 190px;">
	    			<ul class="p0 m0 c-h100" style="overflow: auto;">
	    				<li class="clearfix plr20 ptb10 doc-li" v-for="(docInfo, index) in docList" :key="index">
@ -129,50 +131,66 @@
						</ul>
					</div>
	    			<h4 class="m0 pl15 pr5 lh40 c-border-tb clearfix c-position-r"><em class="c-position-a set-blue-span"></em>康复相关记录<span class="fr w80 c-333 c-f12 c-t-center">已完成:{{finishData.planDetailFinish}}</span></h4>
	    			<div class="ui-col-1" style="overflow: hidden; overflow-y: auto;">
	    				<ul class="p0 m0 c-h100 c-999">
	    					<li class="clearfix plr10 cur-pit record-li" v-for="(plan, index) in planDetailList" :class="{'bgc-dff5fc c-12b7f5':plan.istaDay}" @click="lookProject(plan)">
	    						<div class="fl w80 ptb10 c-t-right">
	    							<p class="p0 m0 lh18">{{plan.executeTime}}</p>
	    						</div>
	    						<div class="fl set-dianxian plr20 ptb10 clerfix">
	    							<span class="fl set-taday mt8 c-t-center c-fff" v-if="plan.istaDay">今</span>
	    							<span class="fl mlr5 mt13 set-row bgc-e1e1e1" v-else></span>
	    						</div>
	    						<div class="fl ptb10 w-100-220">
									<div class="ui-grid ui-grid-middle" style="height: 36px;">
										<p class="p0 m0 lh18">{{plan.title}}</p>
					<div style="height:calc(100% - 271px);overflow: hidden; overflow-y: auto;">
						<server-items-detail ref="serverItemsDetail" v-if="showServerItemDetail" :patientname="recoverPatInfo.patientInfo.patientName" :patientcode="recoverPatInfo.patientInfo.patientCode" :planid="planId" :serveriteminfo="serverItemInfo" @onclose="showServerItemDetail=false"></server-items-detail>
						<div v-if="!showServerItemDetail" style="height:calc(100% - 100px);overflow: hidden; overflow-y: auto;" class="recover-list">
							<ul class="p0 m0 c-h100 c-999">
								<li class="clearfix plr10 cur-pit record-li" v-for="(plan, index) in planDetailList" :class="{'bgc-dff5fc c-12b7f5':plan.istaDay}" @click="lookProject(plan)">
									<div class="fl w80 ptb10 c-t-right">
										<p class="p0 m0 lh18">{{plan.executeTime}}</p>
									</div>
	    						</div>
	    						<div class="fr ptb10 w60 c-t-center">
	    							<p class="p0 m0 lh18">已完成</p>
	    							<p class="p0 m0 lh18">查看</p>
	    						</div>
	    					</li>
	    					<li class="plr20" v-if="isFinishMore">
	    						<div class="c-border lh40 b-r-3 c-t-center cur-pit" @click="addEventPage()">点击查看更早时间</div>
	    					</li>
	    					<li class="ptb10 c-t-center c-333" v-if="!planDetailList.length">暂无相关记录</li>
	    				</ul>
					</div>
					<div class="plr10 pb10">
						<div class="mt10" v-for="(o, i) in limitlessItems">
							<div v-if="o.code=='2'" class="flex vc c-f14 c-border plr10 ptb5 link-control" @click="goConsulting">
								<div class="flex1 c-12b7f5 ellipsis-1">
									康复咨询
								</div>
							</div>
							<div v-if="o.code=='3'" class="flex vc c-f14 c-border plr10 ptb5">
									<div class="fl set-dianxian plr20 ptb10 clerfix">
										<span class="fl set-taday mt8 c-t-center c-fff" v-if="plan.istaDay">今</span>
										<span class="fl mlr5 mt13 set-row bgc-e1e1e1" v-else></span>
									</div>
									<div class="fl ptb10 w-100-220">
										<div class="ui-grid ui-grid-middle" style="height: 36px;">
											<p class="p0 m0 lh18">{{plan.title}}</p>
										</div>
									</div>
									<div class="fr ptb10 w60 c-t-center">
										<p class="p0 m0 lh18">已完成</p>
										<p class="p0 m0 lh18">查看</p>
									</div>
								</li>
								<li class="plr20" v-if="isFinishMore">
									<div class="c-border lh40 b-r-3 c-t-center cur-pit" @click="addEventPage()">点击查看更早时间</div>
								</li>
								<li class="ptb10 c-t-center c-333" v-if="!planDetailList.length">暂无相关记录</li>
							</ul>
						</div>
						<!-- 服务项列表 -->
						<div v-if="!showServerItemDetail" class="plr10 pb10">
							<div v-for="(o, i) in limitlessItems" class="flex vc c-f14 c-border plr10 ptb5 mt10 link-control" @click="viewServerItemsDetail(o)">
								<div class="flex1 c-12b7f5 ellipsis-1">
									远程健康监测
								</div>
								<!-- o.type 1: 血糖 2: 血压  -->
								<div v-if="o.type==1">
									<div class="zhibiao_icon" :class="{'low':o.levelClazz1=='low', 'high':o.levelClazz1=='high'}">{{o.levelName}}血糖:{{o.value1}}</div>
									{{o.name}}
								</div>
								<div v-if="o.type==2" class="flex vc" style="flex-direction: column">
									<div class="zhibiao_icon" :class="{'low':o.levelClazz1=='low', 'high':o.levelClazz1=='high'}">收缩压:{{o.value1}}</div>
									<div class="zhibiao_icon" :class="{'low':o.levelClazz2=='low', 'high':o.levelClazz2=='high'}">舒张压:{{o.value2}}</div>
								<div style="width: 250px;">
									<div class="flex lh28">
										<span>完成情况:</span>
										<div class="flex1" v-if="!o.frequency_code"><span class="c-FF0000">{{o.compeletTotal}}</span>次</div>
										<div class="flex1" v-else><span class="c-FF0000">{{o.compeletTotal}}/{{o.total}}</span></div>
									</div>
									<div v-if="o.code!='3'" class="flex lh28">
										<span>上次完成:</span>
										<div class="flex1">{{o.firstDate?o.firstDate:'--'}}</div>
									</div>
									<div v-if="o.frequency_code" class="flex lh28">
										<span>下次计划:</span>
										<div class="flex1">{{o.lastDate?o.lastDate:'--'}}</div>
									</div>
									<div v-if="o.code=='3'" class="flex lh28">
										<!-- o.type 1: 血糖 2: 血压  -->
										<span>最近体征:</span>
										<div v-if="!o.type" class="">--</div>
										<div v-else-if="o.type==1">
											<span class="zhibiao_icon" :class="{'low':o.levelClazz1=='low', 'high':o.levelClazz1=='high'}">{{o.levelName}}血糖:{{o.value1}}</span>
										</div>
										<div v-else-if="o.type==2" class="flex vc">
											<span class="zhibiao_icon" :class="{'low':o.levelClazz1=='low', 'high':o.levelClazz1=='high'}">收缩压:{{o.value1}}</span>
											<span class="zhibiao_icon" :class="{'low':o.levelClazz2=='low', 'high':o.levelClazz2=='high'}">舒张压:{{o.value2}}</span>
										</div>
									</div>
								</div>
							</div>
						</div>
@ -267,6 +285,7 @@
        <script src="../../../js/jquery-2.2.4.js"></script>
        <script src="../../../plugins/layer/layer.min.js"></script>
        <script src="../../../plugins/toastr/toastr.min.js"></script>
		<script type="text/javascript" src="../../../plugins/element-ui/element-ui.js"></script>
        <script src="../../../plugins/echarts/3.8.5/echarts.js" type="text/javascript"></script>
        <script src="../../../component/rehabilitation/my-echart.js"></script>
        <script src="../../../js/bootstrap.min.js"></script>
@ -274,6 +293,7 @@
        <script src="../../../js/underscore.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/util.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../api/http-request.js" type="text/javascript"></script>
		<script type="text/javascript" src="../../../component/rehabilitation/server-items-detail.js"></script>
		<script type="text/javascript" src="../../../api/rehabilitation-api.js"></script>
		<script src="../../../api/recover_api.js" type="text/javascript"></script>
		<script type="text/javascript">
@ -350,8 +370,11 @@
					recentRecoverDetail: undefined,
					medicalRecordsList: [], // 住院病历列表
					limitlessItems: [], // 不限频次服务项列表
					showServerItemDetail: false,
					serverItemInfo: undefined,
					docList: [],
					planId: httpData['planId']
					planId: httpData['planId'],
					islimit: false
                },
                mounted: function() {
					this.patientRehabilitationDetail()
@ -489,6 +512,18 @@
							}
						})
					},
					viewServerItemsDetail: function(o){
						if(o.code=='2'){
							showInfoMessage('请从“消息-患者消息列表”中查看患者的康复咨询记录')
							return
						}
						if(o.code=='3'){
							return
						}
						this.serverItemInfo = o
						this.showServerItemDetail = true
						this.islimit = o.frequency_code?true:false
					},
					calendarPlanDetailItems: function(planId){
						var vm=this;
						var year = new Date().getFullYear()

+ 15 - 1
app/rehabilitation/css/common.css

@ -19,6 +19,19 @@
.w-220{
	width: 220px;
}
.w-300{
    width: 300px;
}
.bgc-f5f5fa{
    background-color: #f5f5fa;
}
.c-FF0000{
    color: #FF0000
}
.lh28{
    height: 28px;
	line-height: 28px;
}
.h30{
	height: 30px;
	line-height: 30px;
@ -30,7 +43,7 @@
	display: inline-block;
}
.btn-size-s{
    width: 80px;
    min-width: 80px;
    height: 30px;
    font-size: 14px;
}
@ -81,6 +94,7 @@
}
/* 输入框样式 */
.form-control{
    display: inline-block;
	border-radius: 3px;
	padding: 0 12px;
	box-sizing: border-box;

+ 32 - 2
app/rehabilitation/css/rehabilitation_management.css

@ -454,7 +454,15 @@ html,


/*列表展示*/

.time-axis::-webkit-scrollbar{
	width: 0;
}
.time-axis table>tr>th {
    border-top: 1px solid #e7eaec;
    line-height: 1.42857;
    padding: 8px;
    vertical-align: middle;
}
.time-axis td {
	border: none !important;
	color: inherit;
@ -830,6 +838,7 @@ html,
	border-color: #12b7f5;
}
.zhibiao_icon{
	display: inline-block;
	padding-right: 10px;
	position: relative;
}
@ -853,4 +862,25 @@ html,
.zhibiao_icon.high::after{
	background: url('../images/zhibiao_gao_icon.png') no-repeat;
	background-size: 100% 100%;
}
}
.icon-group{position: absolute;top: 15px;right: 15px;z-index: 1;}
.icon-edit{font-size: 22px; color: #12b7f5;}
.icon-close{font-size: 22px;}
.btn-yuyue{background-color: #02cfb9;color: #fff;}
.btn-yuyue:hover,.btn-yuyue:link{color: #fff;background-color: #01c1ad;}
.btn-12b7f5{color: #fff;background-color: #12b7f5;}
.btn-12b7f5:hover,.btn-12b7f5:link{color: #fff;background-color: #12b7f5;}
.btn-disabled{background-color: #eee;color: #999;}
.btn-disabled:hover, .btn-disabled:link{background-color: #eee;color: #999;}
.btn-fuwuma{background-color: #2dbe55;color: #fff;}
.btn-fuwuma:hover,.btn-fuwuma:link{color: #fff;background-color: #209440;}
.btn-zhidao{background-color: #12b7f5;color: #fff;}
.btn-zhidao:hover,.btn-zhidao:link{color: #fff;background-color: #10a0d6;}

.upload-box{margin-top:0;padding: 10px 0 10px 10px;overflow: hidden;border: 1px solid #d7dce6;}
.upload-box li{width: 60px;height: 60px;position: relative;display: block;float: left;margin-right: 10px;}
.upload-box li img{width: 100%;display: block;}
.upload-img-box{width: 100%;height: 100%;overflow: hidden;}
.delete-img{position: absolute;right: -5px;top: -5px;color: #fff;background-color: #ccc;border-radius: 100%;text-align: center;line-height: 15px;width: 15px;height: 15px;}
.upload-img{position: absolute;left: 0;right: 0;top: 0;bottom: 0;opacity: 0;z-index: 3;font-size: 0;width: 100%;height: 100%;}
.add-img{font-size: 40px;line-height: 60px;font-weight: 500;width: 60px;height: 60px;display: block;text-align: center;border: 1px dashed #d7dce6;color: #bec8d2;}

+ 55 - 3
app/rehabilitation/html/addRecoveryDown.html

@ -28,6 +28,7 @@
			<div class="ui-row-item flex">
				<button class="btn btn-12B7F5 btn-size-s ml10" @click="onSearch">搜索</button>
				<button class="btn btn-12B7F5 btn-size-s ml10" @click="viewQrcodeBox">扫码下转</button>
				<button class="btn btn-12B7F5 btn-size-s ml10" @click="addPatient">+ 添加患者</button>
			</div>
        </div>
		<div v-if="patientInfo" >
@ -83,11 +84,19 @@
		</div>
		<div v-else class="c-t-center mt50"><img src="../images/wushuju_img.png" alt=""> <p class="c-999 mt10">{{emptyText}}</p></div>
	</div>
		<div id="addPatientPanel" style="display: none;" class="c-t-center">
			<div class="mt40">
				<input type="text" id="inputControl1" placeholder="请输入患者身份证相关信息检索" class="form-control w-300 h30">
			</div>
			<div class="mt20 c-FF0000 c-f15">
				注:可根据患者身份证或社保卡号进行搜索
			</div>
		</div>
		<script src="../../../js/vue.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../js/jquery-2.2.4.js"></script>
        <script src="../../../plugins/layer/layer.min.js"></script>
		<script src="../../../plugins/toastr/toastr.min.js"></script>
		<script type="text/javascript" src="../../../plugins/element-ui/element-ui.js"></script>
		<script src="../../../plugins/element-ui/element-ui.js" type="text/javascript"></script>
        <script src="../../../js/bootstrap.min.js"></script>
        <script src="../../../js/es6-promise.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../js/underscore.js" type="text/javascript" charset="utf-8"></script>
@ -146,7 +155,8 @@
					emptyText: '暂无数据',
					is_sign_specialist: false,
					is_sign_my: false,
					signTeamInfo: {}
					signTeamInfo: {},
					selectPatientIndex: undefined,
                },
                mounted: function() {
					this.getSpecialistTeamList()
@ -160,6 +170,47 @@
					}
				},
                methods: {
					addPatient: function(){
						var vm = this
						$('#inputControl1').val('')
						$("#addPatientPanel").css('display','block')
						this.selectPatientIndex = layer.open({
							type: 1,
							area: ['400px', '260px'],
							shade: 0.5,
							title: '添加患者',
							btn: ['确定', '关闭'], //只是为了演示
							shadeClose: false, //点击遮罩关闭层
							content: $("#addPatientPanel"),
							yes: function(){
								var str = $('#inputControl1').val()
								if(str.trim().length==0){
									showErrorMessage('请输入患者身份证相关信息检索!')
									return
								}
								vm.getPatientByIdcardOrSsc(str)
							},
						});
					},
					getPatientByIdcardOrSsc: function(inputValue){
						var vm = this
						var params = {
							patientInfo: inputValue, // 居民身份证或者社保卡
							type: 1, // 1患者家签列表 2康复下转列表
						}
						var loading = layer.load(0, {shade: false})
						rehaAPI.getPatientByIdcardOrSsc(params).then(function(res){
							layer.close(loading)
							if(res.status==200){
								if(res.data&&res.data.patient){
									this.getPatient(res.data.patient)
									layer.close(vm.selectPatientIndex)
								}
							} else {
								showErrorMessage(res.data)
							}
						})
					},
					signSpecialist: function(is_sign_specialist, is_sign_my, patientCode){
						this.is_sign_specialist = is_sign_specialist
						this.is_sign_my = is_sign_my
@ -322,9 +373,10 @@
							}
						})
						vm.healthLabel = vm.allLabel['healthLabel'] || []
						vm.curHealthStatu = vm.patientInfo.healthLabel&&vm.patientInfo.healthLabel.length>0?vm.patientInfo.healthLabel[0].label:res.data['healthLabel'][0].labelCode
						vm.curHealthStatu = vm.healthLabel[0].labelCode
						vm.diseaseLabel = dLabel
						vm.customLabel = cLabel
						vm.$forceUpdate()
					},
					// 获取居民标签字典(健康情况、疾病类型、自定义分组)
					getSpecialistPatientLabel: function(teamId){

+ 6 - 2
app/rehabilitation/html/guide_the_message.html

@ -17,11 +17,15 @@
		        <a role="button" class="flex-box">
		          <div class="flex-box-item service-top">
		          	<p class="service-name"><!--<span class="service-index">1</span>--><span>{{service.title}}</span></p>
		         	<div class="label-group">
		         	<div v-if="islimit" class="label-group">
		         		<span class="pull-right mt5" v-if="service.statusName=='已完成'"><i class="icon icon-gouxuan icon-18 mr5"></i>{{service.statusName}}</span>
		         		<span class="label-blue">{{service.shortExecuteTime}}</span>
		         		<span class="label-blue" v-if="service.shortExecuteTime">{{service.shortExecuteTime}}</span>
		         		<span class="label-blue" v-for="doctor in service.executeDoctorList">{{doctor}}</span>
		         	</div>
					<div v-else class="label-group">
		         		<span class="pull-right mt5" v-if="service.recordStatus==1"><i class="icon icon-gouxuan icon-18 mr5"></i>{{service.recordStatus==1?'已完成':'未完成'}}</span>
		         		<span class="label-blue" v-for="doctor in service.executeDoctorList">{{doctor}}</span>
					</div>
		          </div>
		          <!--<span class="icon icon-arrow-down ml50"></span>-->
		        </a>

+ 48 - 45
app/rehabilitation/html/rehabilitation_management.html

@ -8,8 +8,10 @@
		<link rel="stylesheet" type="text/css" href="../../../css/bootstrap.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" href="../../../plugins/toastr/toastr.min.css">
		<link rel="stylesheet" href="../../../plugins/element-ui/element-ui.css" />
		<link rel="stylesheet" type="text/css" href="../css/date.css" />
		<link rel="stylesheet" href="../css/common.css" />
		<link rel="stylesheet" href="../css/rehabilitation_management.css" />
		<style>
			.plr11{
@ -59,12 +61,12 @@
	<body>
		<div class="c-container ui-grid ui-grid-vertical" id="app" v-cloak>
			<div class="page-title flex-box ui-col-0">
			<div class="page-title flex-box ui-col-0" style="justify-content: flex-start">
				<div class="flex-box-item mw400" flex-grow="2">
					<span class="page-title-name">康复计划</span>
					<a class="icon icon-back icon-16 mr10" href="javascript:history.back();"></a><i class="icon icon-shuaxin icon-16" @click="refreshPage"></i>
				</div>
				<div class="flex-box-item text-center" flex-grow="5">
				<div v-if="!showServerItemDetail" class="flex-box-item text-center" flex-grow="5">
					<!-- <div class="div-kuaisu-task" @click="changeSearch(1)" v-show="tabStatus!=3">快速找任务</div> -->
					<div class="pull-right switch-list" v-show="tabStatus!=3">
						<span class="rili" :class="{active:(tabStatus==1)}" @click="tabStatus=1"><i class="icon icon-rili icon-20"></i></span>
@ -142,18 +144,6 @@
						<div class="ui-grid">
							<textarea placeholder="此处内容是康复建议" readonly class="m0 p10 c-333 mt10 bg-f5f5fa" style="width: 100%;outline: 0;height: 200px;border: 1px solid rgb(225, 225, 225); resize: none;">{{planInfo.adviceContent}}</textarea>
						</div>
						<!-- <div class="w-100 c-border pb23 plr13 mt10 mb50">
							<div class="ui-grid pt20">
								<div class="ui-col-1" v-if="diagnosisInformation">
									<div class="ui-grid">
										<div class="c-f14 c-999 ui-col-1">{{diagnosisInformation.dischargeDiagnosis}}</div>
										<div class="c-f14 c-999 ui-col-0">{{diagnosisInformation.dischargeTime}}</div>
									</div>
									<div class="dialos-textarea c-f14 c-333">{{diagnosisInformation.advice}}</div>
								</div>
								<div class="ui-col-1 c-t-center" v-if="!diagnosisInformation">无医嘱小结</div>
							</div>
						</div> -->
						<div class="ui-grid c-border-b lh30 mt15">
							<div class="ui-col-0 div-line"></div>
							<div class="ui-col-1 c-f16 c-333">住院病历</div>
@ -173,11 +163,13 @@
						<iframe id="framePage" src="" style="width: 100%;height: 100%;border: 0;"></iframe>
					</div>
					<div class="nav-content-center bgc-fff c-position-r c-h100 div-right ui-col-1" style="margin-left: 460px;" v-show="tabStatus!=3">
						<span v-if="!isFastSearch" style="position: absolute;top: 15px;left: 101px;">
						<i class="icon icon-prev icon-20" @click="preMonth"></i>
						<span class="currentDay">{{currentDay}}</span>
						<i class="icon icon-next icon-20" @click="nextMonth"></i></span>
						<div class="calendar-content ui-grid ui-grid-vertical" v-show="tabStatus==1">
						<div v-if="!showServerItemDetail" style="position: absolute;top: 15px;left: 101px;">
							<span v-if="!isFastSearch">
							<i class="icon icon-prev icon-20" @click="preMonth"></i>
							<span class="currentDay">{{currentDay}}</span>
							<i class="icon icon-next icon-20" @click="nextMonth"></i></span>
						</div>
						<div v-show="!showServerItemDetail&&tabStatus==1" class="calendar-content ui-grid ui-grid-vertical">
							<div class="calendar-descript">
								<span>图例注释: </span><i class="icon icon-blue"></i> <span>专科团队</span>&emsp;<i class="icon icon-green"></i> <span>家医团队</span>&emsp; <i class="icon icon-flag"></i> <span>我的任务</span>
							</div>
@ -243,8 +235,6 @@
                                </div>
                                <div class="calendar-days">
                                    <div v-for="items in calendarData" class="flex-box">
                                        <!--
                                    -->
                                        <div class="calendar-day" v-for="item in items" @click="viewDetail(item.planDetailIds)" :is-future="item.future">
                                            <span class="day-number">{{item.day}}</span>
                                            <div class="task-icon">
@ -272,8 +262,8 @@
    							</div>
							</div>
						</div>
						<div class="mt50 ui-grid ui-grid-vertical" style="height:calc(100% - 50px)" v-show="tabStatus==2">
							<div class="time-axis ui-col-1 c-h100" style="overflow-y: auto">							
						<div v-show="!showServerItemDetail&&tabStatus==2" class="mt50" style="height:calc(100% - 50px); overflow-y: auto">
							<div class="time-axis" style="max-height: calc(100% - 200px); overflow-y: auto">							
								<div>
									<table class="table">
										<tr>
@ -296,7 +286,7 @@
											</td>
											<td class="executor">{{item.doctor_name}}</td>
											<td class="place-of-execution">{{item.hospital_name}}</td>
											<td class="view-task" @click="viewDetail(item.id,item.status,1)">查看</td>
											<td class="view-task" @click="viewDetail(item.id,1)">查看</td>
											<td class="task-status" :class="item.future==-1?'c-ff3b30':(item.status==0?'c-666':'')">{{item.status==0?'未完成':(item.status==1?'已完成':'已预约')}}</td>
										</tr>
										<tr v-if="!timeAxisData.length">
@ -308,45 +298,58 @@
									</table>
								</div>
							</div>
							<div class="plr10 pb10 ui-col-0">
								<div class="mt10" v-for="(o, i) in limitlessItems">
									<div v-if="o.code=='2'" class="flex vc c-f14 c-border plr10 ptb5 link-control">
										<div class="flex1 c-12b7f5 ellipsis-1"  @click="goConsulting">
											康复咨询
										</div>
							<div class="plr10 pb10">
								<div v-for="(o, i) in limitlessItems" class="flex vc c-f14 c-border plr10 ptb5 mt10 link-control" @click="viewServerItemsDetail(o)">
									<div class="flex1 c-12b7f5 ellipsis-1">
										{{o.name}}
									</div>
									<div v-if="o.code=='3'" class="flex vc c-f14 c-border plr10 ptb5">
										<div class="flex1 c-12b7f5 ellipsis-1">
											远程健康监测
									<div style="width: 250px;">
										<div class="flex lh28">
											<span>完成情况:</span>
											<div class="flex1" v-if="!o.frequency_code"><span class="c-FF0000">{{o.compeletTotal}}</span>次</div>
											<div class="flex1" v-else><span class="c-FF0000">{{o.compeletTotal}}/{{o.total}}</span></div>
										</div>
										<div v-if="o.code!='3'" class="flex lh28">
											<span>上次完成:</span>
											<div class="flex1">{{o.firstDate?o.firstDate:'--'}}</div>
										</div>
										<!-- o.type 1: 血糖 2: 血压  -->
										<div v-if="o.type==1">
											<div class="zhibiao_icon" :class="{'low':o.levelClazz1=='low', 'high':o.levelClazz1=='high'}">{{o.levelName}}血糖:{{o.value1}}</div>
										<div v-if="o.frequency_code" class="flex lh28">
											<span>下次计划:</span>
											<div class="flex1">{{o.lastDate?o.lastDate:'--'}}</div>
										</div>
										<div v-if="o.type==2" class="flex vc" style="flex-direction: column">
											<div class="zhibiao_icon" :class="{'low':o.levelClazz1=='low', 'high':o.levelClazz1=='high'}">收缩压:{{o.value1}}</div>
											<div class="zhibiao_icon" :class="{'low':o.levelClazz2=='low', 'high':o.levelClazz2=='high'}">舒张压:{{o.value2}}</div>
										<div v-if="o.code=='3'" class="flex lh28">
											<!-- o.type 1: 血糖 2: 血压  -->
											<span>最近体征:</span>
											<div v-if="!o.type" class="">--</div>
											<div v-else-if="o.type==1">
												<span class="zhibiao_icon" :class="{'low':o.levelClazz1=='low', 'high':o.levelClazz1=='high'}">{{o.levelName}}血糖:{{o.value1}}</span>
											</div>
											<div v-else-if="o.type==2" class="flex vc">
												<span class="zhibiao_icon" :class="{'low':o.levelClazz1=='low', 'high':o.levelClazz1=='high'}">收缩压:{{o.value1}}</span>
												<span class="zhibiao_icon" :class="{'low':o.levelClazz2=='low', 'high':o.levelClazz2=='high'}">舒张压:{{o.value2}}</span>
											</div>
										</div>
									</div>
								</div>
							</div>
						</div>
						<server-items-detail ref="serverItemsDetail" v-if="showServerItemDetail" :patientname="planInfo.patientName" :patientcode="planInfo.patientCode" :planid="planId" :serveriteminfo="serverItemInfo" @onclose="showServerItemDetail=false"></server-items-detail>
					</div>
				</div>
			</div>
		</div>
		</div>
		<script type="text/javascript" src="../../../js/vue.js"></script>
		<script type="text/javascript" src="../../../js/jquery-2.2.4.js"></script>
		<script src="../../../js/es6-promise.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../plugins/toastr/toastr.min.js"></script>
		<script type="text/javascript" src="../../../js/es6-promise.js" charset="utf-8"></script>
		<script type="text/javascript" src="../../../plugins/toastr/toastr.min.js"></script>
		<script type="text/javascript" src="../../../plugins/element-ui/element-ui.js"></script>
		<script type="text/javascript" src="../../../api/http-request.js"></script>
		<script type="text/javascript" src="../../../plugins/layer/layer.min.js"></script>
		<script type="text/javascript" src="../../../api/rehabilitation-api.js"></script>
		<script type="text/javascript" src="../../../api/recover_api.js"></script>
		<script type="text/javascript" src="../../../js/underscore-1.9.1.js"></script>
		<script src="../../../js/util.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript" src="../../../component/rehabilitation/server-items-detail.js"></script>
		<script type="text/javascript" src="../../../js/util.js" charset="utf-8"></script>
		<script type="text/javascript" src="../js/rehabilitation_management.js"></script>
	</body>

+ 15 - 23
app/rehabilitation/js/guide_the_message.js

@ -32,16 +32,18 @@ top.rehabilitationGuideVue = new Vue({
		isCollapse: false,
		upImgs: [],
		upImgArr: [],
		planid: httpData['planid'],
		planid: httpData['planid'], // 服务项id
		service: {
			relationRecordImg:{},
			messageList:{},
		},
		pId: httpData['pId'],
		pId: httpData['pId'], // 康复计划id
		oprateType: httpData['oprateType'], // oprateType 1 查看单个服务项
		patient: httpData['patient'],
		patientName: decodeURI(httpData['patientName']),
		layerIndex: undefined
		layerIndex: undefined,
		recordId: httpData['recordId'],
		islimit: false
	},
	mounted: function() {
		this.getServiceItem();
@ -83,13 +85,13 @@ top.rehabilitationGuideVue = new Vue({
				layer.close(current); //再执行关闭
			})
		},
		//健康指导
		//康复指导
		kfzd:function(){
			var vm=this
			KFZDlayerIndex = layer.open({
				type: 2,
				//				  offset: ['100px'], //右下角弹出
				area: ['80%', '650px'],
				area: ['660px', '650px'],
				shade: 0.5,
				title: '康复指导',
				fixed: true, //不固定
@ -128,23 +130,7 @@ top.rehabilitationGuideVue = new Vue({
				icon: 1
			});
		},
		jkjy: function(patient, planId) {
			var vm = this
			top.layer.open({
				type: 2,
				//				  offset: ['100px'], //右下角弹出
				area: ['80%', '648px'],
				shade: 0.5,
				title: '健康教育',
				fixed: true, //不固定
				maxmin: true,
				closeBtn: 1,
				shift: 5,
				shadeClose: false, //点击遮罩关闭层
				content: '../../article/html/article.html?code=' + patient + '&planId=' + planId + '&isReha=true'
			});
		},
		//						健康指导
		//康复指导
		jkzd: function(planId,patient) {
			var vm = this
			top.layer.open({
@ -188,7 +174,8 @@ top.rehabilitationGuideVue = new Vue({
				shade: false
			}); //0代表加载的风格,支持0-2
			rehaAPI.serviceItem({
				planDetailId: vm.planid
				planDetailId: vm.planid,
				recordId: vm.recordId
			}).then(function(res) {
				top.layer.close(loadding);
				if(res.status == 200) {
@ -215,6 +202,11 @@ top.rehabilitationGuideVue = new Vue({
						})
					}
					if(vm.service.frequencyCode){
						vm.islimit = true
					} else {
						vm.islimit = false
					}
				} else {
					top.layer.msg(res.msg, {
						icon: 5

+ 24 - 7
app/rehabilitation/js/rehabilitation_management.js

@ -73,7 +73,10 @@
			diagnosisInformation: null,
			searchData: [], // 搜索计划安排(去年、今年、明年)
			medicalRecordsList: [], //病历列表
			limitlessItems: []
			limitlessItems: [],
			showServerItemDetail: false,
			serverItemInfo: undefined,
			islimit: false
		},
		mounted:function(){
			if(!this.planId){
@ -219,7 +222,7 @@
					location.href = "../../recover/html/personal-manage.html?patientCode=" + vm.patientCode+'&planId='+vm.planId
				})
			},
			viewDetail:function(planids,status,type){
			viewDetail:function(planids,type){
				var vm=this;
				if(!planids){
					layer.msg('无服务项',{icon:5})
@ -257,6 +260,11 @@
					
				});
			},
			excuteServerItem: function(type, detailId){
				if(type==1){
					
				}
			},
			changeStatus:function(val){
				this.status=this.status==val?null:val;
			},
@ -324,7 +332,7 @@
			goToLoadData:function(flag){//flag是否更新数据
				this.tabStatus==1 && (!this.calendarData.length || flag) && this.calendar();
				this.tabStatus==2 && (!this.timeAxisData.length || flag) && this.timeAxis();
				this.changeSearch(-1)
				// this.changeSearch(-1)
			},
			calendar:function(){
			  var nlstr = new Date(this.ynow,this.mnow,1);  //当月第一天
@ -536,7 +544,7 @@
				this.calendarPlanDetailList();
				this.calendarPlanDetailItems();
			},
//						时间轴请求
			//时间轴请求
			calendarPlanDetailList:function(){
				var vm=this;
				var __days=vm.__xData;
@ -569,6 +577,18 @@
					}
				})
			},
			viewServerItemsDetail: function(o){
				if(o.code=='2'){
					showInfoMessage('请从“消息-患者消息列表”中查看患者的康复咨询记录')
					return
				}
				if(o.code=='3'){
					return
				}
				this.serverItemInfo = o
				this.showServerItemDetail = true
				this.islimit = o.frequency_code?true:false
			},
			calendarPlanDetailItems: function(){
				var vm=this;
				var __days=vm.__xData;
@ -643,9 +663,6 @@
					}
				}, 5)
			},
			goConsulting: function(){
				showInfoMessage('请从“消息-患者消息列表”中查看患者的康复咨询记录')
			},
			//邀请视频聊天
			openVideoChat: function(otherDoc){
				var vm = this;

+ 4 - 23
app/rehabilitation/js/service_item_content.js

@ -201,32 +201,13 @@ methods:{
		}
		return httpRequest.get(url, {data: params})
	},
	//健康教育
	jkjy:function(patient,planId){
		var vm=this
		layer.open({
			type: 2,
			area: ['90%', '600px'],
			shade: 0.5,
			title: '健康教育',
			fixed: true, //不固定
			maxmin: true,
			closeBtn: 1,
			shift: 5,
			shadeClose: false, //点击遮罩关闭层
			content: '../../article/html/article.html?code='+patient+'&planId='+planId+'&isReha=true',
			end: function() { // 未点击确定按钮,点击关闭按钮  
				vm.getServiceItemList();    
			}
		});
	},
//			健康指导
	//康复指导
	kfzd:function(planDetaiId){
		var vm=this
		KFZDlayerIndex = layer.open({
			type: 2,
			//				  offset: ['100px'], //右下角弹出
			area: ['80%', '650px'],
			area: ['660px', '650px'],
			shade: 0.5,
			title: '康复指导',
			fixed: true, //不固定
@ -327,7 +308,7 @@ methods:{
			}
		})
	},
//						暂未开放
	// 暂未开放
	zwkf:function(){
		layer.msg('此功能暂未开放',{icon:1});
	},
@ -335,7 +316,7 @@ methods:{
		var vm=this;
		layer.open({
			type: 2,
//				  offset: ['100px'], //右下角弹出
			// offset: ['100px'], //右下角弹出
			area: ['80%', '650px'],
			shade: 0.5,
			title: '完成项目确认',

+ 916 - 0
component/rehabilitation/server-items-detail.js

@ -0,0 +1,916 @@
var currentGMT=new Date();//当前时间GMT
function showSuccessMessage(msg) {
	layer.msg(msg, {
		icon: 1
	})
}
function showSuccessMessage(msg) {
	layer.msg(msg, {
		icon: 1
	})
}
function showErrorMessage(msg) {
	layer.msg(msg, {
		icon: 5
	})
}
function showWarningMessage(msg) {
	layer.msg(msg, {
		icon: 2
	})
}
function showInfoMessage(msg) {
	layer.msg(msg, {
		icon: 6
	})
}
function closeFollowUpLayer(planDetaiId, relationCode){
	_vm.closeAllLayer('创建随访计划', planDetaiId, 6, relationCode)
}
function closeKFZDlayer(planDetaiId){
	_vm.closeAllLayer('发送康复指导', planDetaiId, 5)
}
var _vm 
Vue.component('server-items-detail', {
    template: '<div class="p15 ui-grid ui-grid-vertical" style="height:calc(100%);position: relative;">\
					<div class="icon-group">\
						<i class="icon-edit el-icon-edit-outline mr15"></i>\
						<i class="icon-close el-icon-close" @click="onClose"></i>\
					</div>\
    				<div class="c-t-center c-f18 c-333 mt15">服务内容-{{serveriteminfo.name}}</div>\
					<div class="c-t-center c-f17 c-666 mt10">{{patientname}}患者{{serveriteminfo.name}}计划</div>\
					<div class="c-333 ptb10 c-f17 mt10">指导留言</div>\
            		<div class="c-f14 c-666" v-if="!message.isImg">{{message.content}}</div>\
            		<div class="mt10" v-else><img :src="message.content" @click="previewImg(message.content)" style="width:60px;height:60px;"  :data-preview-src="message.content" data-preview-group="1"/></div>\
					<div v-if="islimit" class="mtb15 ui-grid">\
						<div class="ui-col-1">\
							<i class="icon icon-prev icon-20" @click="preMonth"></i>\
							<span class="currentDay">{{currentDay}}</span>\
							<i class="icon icon-next icon-20" @click="nextMonth"></i></span>\
						</div>\
						<div class="pull-right switch-list" style="text-align:center">\
							<span class="rili" :class="{active:(tabStatus==1)}" @click="tabStatus=1"><i class="icon icon-rili icon-20"></i></span>\
							<span class="shijianzhou" :class="{active:(tabStatus==2)}" @click="tabStatus=2"><i class="icon icon-liebiao icon-20"></i></span>\
						</div>\
					</div>\
					<div v-if="islimit&&tabStatus==1" class="ui-col-1" style="overflow: hidden; overflow-y: scroll;">\
						<div class="calendar-week">\
							<div class="flex-box text-center">\
								<div class="flex-box-item">周一</div>\
								<div class="flex-box-item">周二</div>\
								<div class="flex-box-item">周三</div>\
								<div class="flex-box-item">周四</div>\
								<div class="flex-box-item">周五</div>\
								<div class="flex-box-item">周六</div>\
								<div class="flex-box-item">周日</div>\
							</div>\
						</div>\
						<div class="calendar-days">\
							<div v-for="items in calendarData" class="flex-box">\
								<div class="calendar-day" v-for="item in items" @click="viewDetail(item.planDetailIds)" :is-future="item.future">\
									<span class="day-number">{{item.day}}</span>\
									<div class="task-icon">\
										<i v-if="item.myTaskFlag" class="icon icon-flag icon-20"></i>\
										<i v-if="item.finishFlag" class="icon icon-check"></i>\
									</div>\
									<div class="coloured-box">\
										<span v-if="item.specialist" class="coloured-ribbon coloured-ribbon-blue">专<br />科</span>\
										<span v-if="item.family" class="coloured-ribbon coloured-ribbon-green">家<br />医</span>\
									</div>\
									<div class="progress-box">\
										<div class="progress" :style="{opacity:item.specialist?\'1\':\'0\'}">\
											<span>{{(item.specialist && item.specialist.finish)}}/{{(item.specialist && item.specialist.all)}}</span>\
											<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" :style="{width: (item.specialist?(item.specialist.finish/item.specialist.all):0)*100+\'%\'}"></div>\
										</div>\
										<div class="progress" :style="{opacity:item.family?\'1\':\'0\'}">\
											<span>{{(item.family && item.family.finish)}}/{{(item.family && item.family.all)}}</span>\
											<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="2" aria-valuemin="0" aria-valuemax="100" :style="{width: (item.family?(item.family.finish/item.family.all):0)*100+\'%\'}"></div>\
										</div>\
										<p v-if="!item.noService" class="mb0 f12" :class="{\'visibility-hide\':!curTask}" style="line-height: 1;">{{curTaskName || \'&emsp;\'}}</p>\
									</div>\
									<p v-if="item.noService" class="no-server">无服务项</p>\
								</div>\
							</div>\
						</div>\
					</div>\
					<div v-show="tabStatus==2" class="ui-col-1 mt10" style="overflow-y: auto">\
						<div class="time-axis">\
							<div>\
								<table class="table">\
									<tr>\
										<th style="padding-right: 50px;text-align: right;">时间</th>\
										<th>项目</th>\
										<th>执行人员</th>\
										<th>执行地点</th>\
										<th class="text-center">相关记录</th>\
										<th class="text-center">状态</th>\
									</tr>\
									<tr v-for="item in timeAxisData" :is-future="item.future">\
										<td class="time text-right time-box">\
											<p class="mb5">{{item.date}}</p>\
											<p class="mb0">{{item.time}}</p>\
											<span class="cur-status">{{item.html}}</span>\
										</td>\
										<td class="project-name mw400">\
											<p class="mb5">{{item.name}}</p>\
											<p class="ellipsis mb0">{{item.content}}</p>\
										</td>\
										<td class="executor">{{item.doctorName}}</td>\
										<td class="place-of-execution">{{item.hospitalName}}</td>\
										<td class="view-task" @click="onViewDetail(item,1)">查看</td>\
										<td class="task-status" :class="item.future==-1?\'c-ff3b30\':(item.status==0?\'c-666\':\'\')">{{item.status==0?\'未完成\':(item.status==1?\'已完成\':\'已预约\')}}</td>\
									</tr>\
									<tr v-if="!timeAxisData.length">\
										<td colspan="6" class="f16 ptb10 text-center">\
											<img src="../../../images/wushuju_img.png"  class="mt50"/>\
											<p class="c-666">暂无数据</p>\
										</td>\
									</tr>\
								</table>\
							</div>\
						</div>\
					</div>\
					<div class="c-t-center mt15">\
						<button v-if="service.isZk&&service.executeDoctorCode!=docInfo.uid" class="btn btn-12b7f5" @click="zdly(service)">指导留言</button>\
						<button v-else-if="!service.isZk&&service.executeDoctorCode==docInfo.uid" class="btn btn-12b7f5" @click="zdly(service)">查看留言</button>\
						<button v-if="!service.isZk&&serveriteminfo.code==\'1\'" class="btn btn-yuyue" @click="addCompleteRecord()">添加完成记录</button>\
						<button v-if="!service.isZk&&serveriteminfo.code==\'4\'" class="btn btn-yuyue" @click="sendSpecialistWeixinMessage(planDetaiId,4)">发送提醒</button>\
						<button v-if="!service.isZk&&serveriteminfo.code==\'5\'" class="btn btn-yuyue" @click="kfzd()">发送康复指导</button>\
						<button v-if="!service.isZk&&serveriteminfo.code==\'6\'" class="btn btn-yuyue" @click="excuteServerItem(6)">创建随访计划</button>\
						<button v-if="!service.isZk&&serveriteminfo.code==\'7\'" class="btn btn-yuyue" @click="sendSpecialistWeixinMessage(planDetaiId,7)">发送提醒</button>\
						<button v-if="!service.isZk&&serveriteminfo.code==\'7\'" class="btn btn-12b7f5" @click="qwapp">代预约</button>\
					</div>\
					<div id="completeRecord" style="display: none; padding: 15px 15px 0;">\
						<div class="note-info pt10">\
							<p class="f14 c-333">服务完成笔记</p>\
							<textarea class="form-control" style="resize: none;" rows="4" placeholder="可备注您的服务记录" v-model="node"></textarea>\
						</div>\
						<div class="note-info ptb10">\
							<p class="f14 c-333">相关记录</p>\
							<ul class="upload-box">\
								<li class="flex-box" v-for="(img,index) in upImgs">\
									<div class="upload-img-box">\
										<img :src="img.baseUrl" @click="previewImg(img.baseUrl)"/>\
									</div>\
									<a class="delete-img" @click="deleteImg(index)">&times;</a>\
								</li>\
								<li class="flex-box" v-if="upImgs.length<5">\
									<span class="add-img">+</span>\
									<input type="file" @change="upLoadImgToBase64" class="upload-img" />\
								</li>\
							</ul>\
						</div>\
					</div>\
    			</div>',
    props: ['patientname','patientcode', 'planid', 'serveriteminfo'],
    data: function() {
        return {
			ynow: currentGMT.getFullYear(),//年份
			mnow: currentGMT.getMonth(),//月份(比实际少一个月---0开始至11)
			dnow: currentGMT.getDate(),//当前日
			currentDay:null,//带中文格式的当前年月
			calendarData:[],//日历数据
			timeAxisData: [], //时间轴数据
			tabStatus: 1,
			title: '',
			docInfo: JSON.parse(window.localStorage.getItem('wlyyAgent')),
			upImgs: [],
			upImgArr: [],
			imgData: {
				accept: 'image/gif, image/jpeg, image/png, image/jpg',
			},
			node: '',
			layerIndex: undefined,
			planDetaiId:'',
			service:{
				relationRecordImg:{},
				messageList:{},
			},
			message:{isImg:false,content:""},
			KFZDlayerIndex: undefined,
			islimit: false
        }
    },
	watch:{
		tabStatus:function(){
			if(this.islimit){
				this.goToLoadData(true);
			}
		}
	},
    mounted: function() {
		_vm = this
		this.initData()
    },
    methods: {
		initData: function(){
			var vm = this
			this.planDetaiId = this.serveriteminfo.id
			this.getServiceItem()
		},
		getServiceItem: function() {
			var vm = this;
			var loadding = top.layer.load(0, {
				shade: false
			}); //0代表加载的风格,支持0-2
			rehaAPI.serviceItem({
				planDetailId: vm.planDetaiId
			}).then(function(res) {
				top.layer.close(loadding);
				if(res.status == 200) {
					vm.service = res.data;
					var isZK=vm.docInfo.doctorType==1?true:false;
					vm.service.isZK=isZK;
					if(vm.service.isMyTask==1){//执行者										
						vm.service.isCK=true;//无法显示按钮
						if(vm.docInfo.uid==vm.service.specialistDoctorCode){//说明我自己是创建者
							vm.service.isCK=false;
							vm.service.isCreate=true;
						}
					}else{
						if(vm.docInfo.uid==vm.service.specialistDoctorCode){//说明我自己是创建者
							vm.service.isCreate=true;
						}
					}
					var messageIndex = _.findLastIndex(vm.service.messageList, {doctorType: 1});
					if(messageIndex>-1){
						var message = vm.service.messageList[messageIndex]
						vm.message = vm.getContent(message.content,message.contentType)
					}else{
						vm.message.content = "无"
					}
					if(vm.service.frequencyCode){
						vm.islimit = true
						vm.calendar()
						vm.monDetail()
					} else {
						vm.islimit = false
						vm.tabStatus = 2
						vm.selectByPlanDetaiId()
					}
				} else {
					showErrorMessage(res.msg)
				}
			})
		},
		closeAllLayer: function(name, planDetaiId, type, relationCode){
			if(name=='预览康复指导'){
				layer.close()
			} else if(name=='创建随访计划'){
				this.saveRehabilitationOperateRecord(planDetaiId, type, relationCode)
				layer.close()
			} else if(name=='发送康复指导'){
				this.saveRehabilitationOperateRecord(planDetaiId, type)
				layer.close(this.KFZDlayerIndex)
			}
		},
		// 提醒患者 num 1康复指导2康复下转3复诊提醒4上门服务提醒5家签提醒
		sendSpecialistWeixinMessage: function(planDetaiId, type){
			var vm = this
			var text = ''
			var patientName = vm.patientname
			var patientCode = vm.patientcode
			if(type==4){ // 上门服务
				text = '请问您是否确认提醒'+patientName+'居民预约上门护理服务?'
			} else if(type==7){ // 康复复诊
				text = '请问您是否确认提醒'+patientName+'居民进行复诊?'
			}
			var current=layer.confirm(text, { 
				btn: ['确定', '取消'],
				title: "提示"
			}, function (index) {
				var _type = type == 4? 4:type==7?3:''
				var loading = layer.load(0, {shade: false})
				var params = {
					patient: patientCode,
					doctor: vm.docInfo.uid,
					type: _type,
					relationCode: planDetaiId,
					planId: vm.planid
				}
				rehaAPI.sendSpecialistWeixinMessage(params).then(function(res){
					layer.close(loading)
					if(res.status == 200){
						showSuccessMessage('提交成功!')
						if(_type==3 || _type==4){ // 提醒患者后,即认为是已完成
							vm.saveRehabilitationOperateRecord(planDetaiId, type)
						}
					} else {
						showErrorMessage(res.msg)
					}
				})
				layer.close(current); //再执行关闭
			})
		},
		// 添加完成记录
		addCompleteRecord: function(){
			var vm = this
			var detailId = this.planDetaiId
			var type = vm.serveriteminfo.code
			$("#completeRecord").css('display','block')
			this.layerIndex = layer.open({
				type: 1,
				area: ['500px', '450px'],
				shade: 0.5,
				title: '添加完成记录',
				btn: ['确定', '关闭'], //只是为了演示
				shadeClose: false, //点击遮罩关闭层
				content: $("#completeRecord"),
				yes: function(){
					vm.saveRehabilitationOperateRecord(detailId, 1)
					layer.close(vm.layerIndex)
				},
			});
		},
		monDetail:function(){
			this.currentDay = this.ynow + '年'+ (this.mnow + 1) +'月';
		},
		is_leap:function(year) {  //判断是否为闰年
			return (year%100==0?res=(year%400==0?1:0):res=(year%4==0?1:0));
		},
		preMonth:function(){  //上一个月
			if(this.mnow<=0){
			this.mnow=11;
			this.ynow=this.ynow-1;
			}else{
			this.mnow--;
			}
			this.monDetail();
			this.goToLoadData(true);
		},
		getPreMouth:function(){
			var pMnow,pYnow;
			if(this.mnow<=0){
				pMnow=11;
				pYnow=this.ynow-1;
				}else{
				pMnow=this.mnow-1;
				pYnow=this.ynow;
				}
			var m_days=new Array(31,(28+this.is_leap(pYnow)),31,30,31,30,31,31,30,31,30,31);  //每个月的天数
			return {
					days:m_days[pMnow],
					date:pYnow+'-'+(++pMnow>=10?pMnow:"0"+pMnow)
				}
		},
		nextMonth:function(){   //下一个月
			if(this.mnow>=11){
			this.mnow=0;
			this.ynow=this.ynow+1;
			}else{
				this.mnow++;
			}
			this.monDetail();
			this.goToLoadData(true);			
		},
		getNextMouth:function(){
			var nMnow,nYnow;
			if(this.mnow>=11){
				nMnow=0;
				nYnow=this.ynow+1;
				}else{
					nMnow=this.mnow+1;
					nYnow=this.ynow;
				}
			var m_days=new Array(31,(28+this.is_leap(nYnow)),31,30,31,01,31,31,30,31,30,31);  //每个月的天数
			return {
					days:m_days[nMnow],
					date:nYnow+'-'+(++nMnow>=10?nMnow:"0"+nMnow)
				}
		},
		goToLoadData:function(flag){//flag是否更新数据
			this.tabStatus==1 && (!this.calendarData.length || flag) && this.calendar();
			this.tabStatus==2 && (!this.timeAxisData.length || flag) && this.timeAxis();		
		},
		calendar:function(){
			var nlstr = new Date(this.ynow,this.mnow,1);  //当月第一天
			var firstday = nlstr.getDay()-1;//第一天星期几,默认是周日  我们改成周一
			firstday=firstday==-1?6:firstday;//如果是-1,说明当月的第一天是周日
			var m_days=new Array(31,(28+this.is_leap(this.ynow)),31,30,31,30,31,31,30,31,30,31);  //每个月的天数
			var tr_str=Math.ceil((m_days[this.mnow] + firstday)/7);   //当前月天数+第一天是星期几的数值   获得 表格行数
			var c_days=m_days[this.mnow];//当前月份的天数
			var p_arr=this.getPreMouth();
			var n_arr=this.getNextMouth();
			var i,k,idx,date_str;
			var dataArr=[];//天数/年月
			for(i=0;i<tr_str;i++) { //表格的行
				for(k=0;k<7;k++) { //表格每行的单元格
				idx=i*7+k; //单元格自然序列号
				date_str=idx-firstday+1; //计算日期
				var __ym;
				if(date_str<=0){//过滤无效日期(小于等于零的、大于月总天数的)
					date_str=date_str+p_arr['days'];//当前日期+上个月的天数就是上个月的日期
					__ym=p_arr['date'];
				}else if(date_str>c_days){
					date_str=date_str-c_days;//下个月的日期就是这个月的天数-当月的天数
					__ym=n_arr['date'];
				}else{
					__ym=this.ynow+'-'+(this.mnow>=9?"":"0")+(this.mnow+1);
				}
				dataArr.push({
					day:date_str,
					date:__ym
				});
				}
			}
			this.__Data=dataArr;
			this.calenderPlanDetail();
		},
		// 日历有计划数据处理
		planHandleData: function(data, day, mounth) {
			var item = data;
			item.day = day;
			if(mounth) {item.mounth = mounth}
			var finishFlag=false
			var sFlag=false;
			var fFlag=false;
			if(item.specialist){
				if(item.specialist.all==item.specialist.finish){
					sFlag=true;
				}
			}else{
				sFlag = true;
			}
			if(item.family){
				if(item.family.all==item.family.finish){
					fFlag = true;
				}
			}else{
				fFlag = true;
			}
			finishFlag = sFlag && fFlag;
			item.finishFlag=finishFlag;
			return item
		},
		calenderPlanDetail:function(){
			var vm=this;
			var __days=vm.__Data;
			var lastDay=(__days.concat()).pop().day;
			lastDay=lastDay>9?lastDay:'0'+lastDay;
			if(vm.searchTask || vm.status || vm.status == 0) {
				vm.isFastSearch = true
			} else {
				vm.isFastSearch = false
			}
			var params={
				executeStartTime: vm.isFastSearch ? '' : __days[0].date+'-'+__days[0].day+' 00:00:00',//日历开始时间(格式:yyyy-MM-dd HH:mm:ss)
				executeEndTime: vm.isFastSearch ? '' : (__days.concat()).pop().date+'-'+lastDay+' 23:59:59',//日历结束时间(格式:yyyy-MM-dd HH:mm:ss)
				planId:vm.planid,//计划id
				searchTask: vm.serveriteminfo.code,//快速查找任务:(1、我的任务,2、健康教育,3、健康指导,4、随访)
				status: null,//任务状态(0未完成,1已完成,2已预约)
			}
			rehaAPI.calendarPlanDetail(params).then(function(res){
				vm.curTask=vm.searchTask;
				vm.curTaskName=vm.searchTaskName;
				vm.calendarData=[];
				var list = [];
				if(res.status==200){
					var data=res.data
					// 快速查找
					if(vm.isFastSearch) {
						vm.searchData = []
						var searchData0 = [],
							searchData1 = [],
							searchData2 = [];
						for(var setM = 1; setM <= 12; setM++) {
							var _setM = setM > 9 ? setM : '0' + setM,
								_setY = new Date().getFullYear();
							var data0 = [],
								data1 = [],
								data2 = [];
							for(var i in data) {
								var getY = i.split("-")[0],
									getM = i.split("-")[1],
									getD = i.split("-")[2];
								// 去年
								if(_setY - 1 == getY && _setM == getM) {
									var item = vm.planHandleData(data[i], getD, getM)
									data0.push(item)
									data.length && data.splice(i,1);
								} else if(_setY == getY && _setM == getM) { // 今年
									var item = vm.planHandleData(data[i], getD, getM)
									data1.push(item)
									data.length && data.splice(i,1);
								} else if(_setY + 1 == getY && _setM == getM) { // 明年
									var item = vm.planHandleData(data[i], getD, getM)
									data2.push(item)
									data.length && data.splice(i,1);
								}
							}
							if(data0.length) {
								var dataSort = vm.daysSort(data0)
								var addlen = (dataSort.length + 1) % 7 ? (dataSort.length + 1) % 7 : 7
								for(var i = 0; i < 7 - addlen; i++) {
									dataSort.push({
										noService:true
									})	
								}
								searchData0.push(dataSort)
							}
							if(data1.length) {
								var dataSort = vm.daysSort(data1)
								var addlen = (dataSort.length + 1) % 7 ? (dataSort.length + 1) % 7 : 7
								for(var i = 0; i < 7 - addlen; i++) {
									dataSort.push({
										noService:true
									})	
								}
								searchData1.push(dataSort)
							}
							if(data2.length) {
								var dataSort = vm.daysSort(data2)
								var addlen = (dataSort.length + 1) % 7 ? (dataSort.length + 1) % 7 : 7
								for(var i = 0; i < 7 - addlen; i++) {
									dataSort.push({
										noService:true
									})	
								}
								searchData2.push(dataSort)
							}
						}
						if(searchData0.length) {vm.searchData.push(searchData0)}
						if(searchData1.length) {vm.searchData.push(searchData1)}
						if(searchData2.length) {vm.searchData.push(searchData2)}
						return false;
					}
					// 正常日历
					var _currentTimeStamp=+new Date(new Date().setHours(0, 0, 0, 0));
					for(var i in __days){
						var _key=__days[i].date+'-'+(__days[i].day>9?__days[i].day:'0'+__days[i].day);
						var item={
								noService:true,
								day:__days[i].day
							};
						for(var j in data){
							if(_key==j){
								item = vm.planHandleData(data[j], __days[i].day)
								data.length && data.splice(j,1);
								break;
							}
						}
						var thatTime=+new Date(_key)-8*60*60*1000;
						var future=_currentTimeStamp>thatTime?0:(_currentTimeStamp==thatTime?1:2);
						item.future=future;
						list.push(item);
//							vm.calendarData.push(item);
					}
					vm.calendarData = _.chunk(list, 7)
				}
			})
		},
		//时间轴请求
		timeAxis:function(){
			var m_days=new Array(31,(28+this.is_leap(this.ynow)),31,30,31,30,31,31,30,31,30,31);  //每个月的天数
			var c_days=m_days[this.mnow];//当前月份的天数
			var __ym=this.ynow+'-'+(this.mnow>=9?"":"0")+(this.mnow+1);
			var dataArr=[];//天数/年月
			for(;c_days>0;c_days--){
				dataArr.push({
					day:c_days,
					date:__ym
				});
			}
			this.__xData=dataArr;
			this.calendarPlanDetailList();
		},
		//限频次 时间轴请求
		calendarPlanDetailList:function(){
			var vm=this;
			var __days=vm.__xData;
			var lastDay=(__days.concat()).pop().day;
			lastDay=lastDay>9?lastDay:'0'+lastDay;
			var params={
				executeEndTime:__days[0].date+'-'+__days[0].day+' 00:00:00',//日历开始时间(格式:yyyy-MM-dd HH:mm:ss)
				executeStartTime:(__days.concat()).pop().date+'-'+lastDay+' 23:59:59',//日历结束时间(格式:yyyy-MM-dd HH:mm:ss)
				planId:vm.planid,//计划id
				searchTask:vm.serveriteminfo.code, // 服务项
				status: null, //任务状态(0未完成,1已完成,2已预约)
			}
			rehaAPI.calendarPlanDetailList(params).then(function(res){
				if(res.status==200){
					var _currentTimeStamp=+new Date(new Date().setHours(0, 0, 0, 0))
					vm.timeAxisData=_.map(res.data||{},function(o){
						var _time=o.executeTime.split(' ');
						var thatTime=+new Date(_time[0]);
						var future=_currentTimeStamp>thatTime?0:(_currentTimeStamp==thatTime?1:2);
						(o.status==0 && _currentTimeStamp>thatTime) && (future=-1)
						var _html=o.status==2?'预':(future==-1?'逾':'');
						_html=future==1?'今':_html;
						if(_html=='预') future=3;
						o.html=_html
						o.date=_time[0];
						o.time=_time[1];
						o.future=future;
						o.doctorName = o.doctor_name
						o.hospitalName = o.hospital_name
						return o;
					})||[];
				} else {
					showErrorMessage(res.msg)
				}
			})
		},
		//不限频次 时间轴请求
		selectByPlanDetaiId: function(){
			var vm = this
			var params = {
				planId: this.planid,
				code: vm.serveriteminfo.code,
				page: 1,
				pagesize: 10000
			}
			rehaAPI.selectByPlanDetaiId(params).then(function(res){
				if(res.status == 200){
					var arr = []
					if(res.data.list&&res.data.list.length>0){
						var list = res.data.list
						var _currentTimeStamp=+new Date(new Date().setHours(0, 0, 0, 0))
						console.log('_currentTimeStamp=======', _currentTimeStamp)
						arr=_.map(list||[],function(o){
							var _time=o.completeTime.split(' ');
							var thatTime=+new Date(_time[0]);
							var future=_currentTimeStamp>thatTime?0:(_currentTimeStamp==thatTime?1:2);
							(o.status==0 && _currentTimeStamp>thatTime) && (future=-1)
							var _html=o.status==2?'预':(future==-1?'逾':'');
							_html=future==1?'今':_html;
							if(_html=='预') future=3;
							o.html=_html
							o.date=_time[0];
							o.time=_time[1];
							o.future=future;
							return o;
						})||[];
					}
					vm.timeAxisData = arr
				} else {
					showErrorMessage(res.msg)
				}
			})
		},
		zdly: function(data) {
			var vm = this
			var otherCode, otherName;
			var planDetailId = data.planDetaiId;
			if(vm.docInfo.doctorType == 1) {
				otherCode = data.familyDoctorCode;
				otherName = data.familyDoctorName;
			} else {
				otherCode = data.specialistDoctorCode;
				otherName = data.specialistDoctorName;
			}
			top.layer.open({
				type: 2,
				area: ['80%', '600px'],
				shade: 0.5,
				title: '指导留言',
				fixed: true, //不固定
				maxmin: true,
				closeBtn: 1,
				shift: 5,
				shadeClose: false, //点击遮罩关闭层
				content: '../../consulting/html/consulting.html?otherCode=' + otherCode + '&otherName=' + encodeURI(otherName) + '&planDetailId=' + planDetailId,
				end: function() { // 未点击确定按钮,点击关闭按钮      
					vm.initData()   
				}
			});
		},
		//康复指导
		kfzd:function(){
			var vm=this
			this.KFZDlayerIndex = layer.open({
				type: 2,
				//				  offset: ['100px'], //右下角弹出
				area: ['660px', '650px'],
				shade: 0.5,
				title: '康复指导',
				fixed: true, //不固定
				maxmin: true,
				closeBtn: 1,
				shift: 5,
				shadeClose: false, //点击遮罩关闭层
				content:'../../rehabilitation/html/rehabilitation_guidance.html?patient='+vm.patientcode+'&planDetaiId='+vm.planDetaiId+'&planId='+vm.planid,
				end: function() { // 未点击确定按钮,点击关闭按钮  
					vm.initData()   
				}
			});
		},
		upLoadImgToBase64: function() {
			var vm = this;
			var img1 = event.target.files[0];
			var reader = new FileReader();
			var type = img1.type; //文件的类型,判断是否是图片  
			var size = img1.size; //文件的大小,判断图片的大小  
			if(this.imgData.accept.indexOf(type) == -1) {
				alert('请选择我们支持的图片格式!');
				return false;
			}
			if(size > 3145728) {
				alert('请选择3M以内的图片!');
				return false;
			}
			reader.readAsDataURL(img1);
			reader.onload = function(e) {
				vm.upImgs.push({
					baseUrl: e.target.result
				});
				vm.upImgArr.push(img1);
				vm.uploadImg(vm.upImgArr);
			}
		},
		//上传图片
		uploadImg: function(data) {
			var vm = this;
			var len = data.length;
			if(len==0) {
				return
			} else {
				var file = data[len - 1];
				var formData = new FormData();
				formData.append('file', file);
				rehaAPI.upload(formData).then(function(res) {
					if(res.status == 200) {
						vm.upImgs[len - 1].img = res.data;
						data.pop();
						vm.$forceUpdate()
						vm.uploadImg(data);
					} else {
						layer.msg(res.msg, {
							icon: 5
						});
					}
				})
			}
		},
		saveRehabilitationOperateRecord:function(planDetailId, type, relationCode){
			var vm=this
			var patientName = vm.patientname
			var patientCode = vm.patientcode
			var _image = [];
			for(var i in vm.upImgs) {
				_image.push(vm.upImgs[i].img);
			}
			var params={
				rehabilitationDetailId: planDetailId,
				node: vm.node||'',
				patientCode: patientCode,
				doctorCode: vm.docInfo.uid,
				relationRecordType: type,
				relationRecordCode: '',
				relationRecordImg: '',
				status: 0
			}
			rehaAPI.saveRehabilitationOperateRecord({dataJson:JSON.stringify(params)}).then(function(res){
				if(res.status==200){
					if(type==1){
						vm.updateNoteAndImageRehabilitationOperate(planDetailId)
					}else if(type==6){
						vm.updateRelationCodeByDetailId(planDetailId, relationCode)
					} else {
						vm.updateNoteAndImageRehabilitationOperate(planDetailId)
					}
				}else {
					showErrorMessage(res.msg)
				}
			})
		
		},
		updateNoteAndImageRehabilitationOperate: function(planDetailId, relationCode) {
			var vm = this;
			var _image = [];
			for(var i in vm.upImgs) {
				_image.push(vm.upImgs[i].img);
			}
			var params = {
				planDetailId: planDetailId,
				node: vm.node||'',
				image: JSON.stringify(_image)||''
			}
			if(relationCode){
				params['relationCode'] = relationCode
			}
			var loadding = top.layer.load(0, {
				shade: false
			}); //0代表加载的风格,支持0-2
			rehaAPI.updateNoteAndImageRehabilitationOperate(params).then(function(res) {
				top.layer.close(loadding);
				if(res.status == 200) {
					vm.initData()
				}else {
					showErrorMessage(res.msg)
				}
			})
		},
		onViewDetail: function(item, type){
			var planids, recordId;
			if(this.islimit){
				planids = item.id
			} else {
				planids = item.id
				recordId = item.recordId
			}
			this.viewDetail(planids,type, recordId)
		},
		viewDetail:function(planids,type, recordId){
			var vm=this;
			if(!planids){
				layer.msg('无服务项',{icon:5})
				return ;
			}
			if(type==1){ // 单个服务项
				top.layer.open({
					type: 2,
					area: ['800px', '700px'],
					shade: 0.5,
					title: '服务项目内容',
					fixed: true, //不固定
					maxmin: true,
					closeBtn:1,
					shift: 5,
					shadeClose: false, //点击遮罩关闭层
					content: '../../rehabilitation/html/guide_the_message.html?planid='+planids+'&oprateType=1'+'&pId='+vm.planid+'&patient='+vm.patientcode+'&patientName='+vm.patientname+'&recordId='+recordId,
				});
				return ;
			}
			layer.open({ // 康复计划的所有服务项
				type: 2,
				area: ['800px', '700px'],
				shade: 0.5,
				title: '服务项目内容',
				fixed: true, //不固定
				maxmin: true,
				closeBtn:1,
				shift: 5,
				shadeClose: false, //点击遮罩关闭层
				content: '../../rehabilitation/html/service_item_content.html?planids='+planids+'&planId='+vm.planid+'&patient='+vm.patientcode+'&patientName='+vm.patientname,
				end:function(){
				vm.goToLoadData(true);	
				}
				
			});
		},
		onClose: function(){
			this.$emit('onclose')
		},
		qwapp:function(){
			layer.msg('请前往app处理',{icon:5});    
		},
		getContent: function(value,type) {
			var res=value;
			if(type==2 || type==9){
				res = "<img src='"+httpRequest.getImgUrl(res)+"' width='100px'>";
			}else if(type==3){
				res = '【语音】';
			}else if(type==19){
				res = '【聊天记录】';
			}else if(type==12){
				res = '【视频】';
			}
			return res;
		},
		previewImg: function(url){
			imgShow("#outerdiv", "#innerdiv", "#bigimg", url);
		}
    }
})
function imgShow(outerdiv, innerdiv, bigimg, _this){  
	var src = _this.attr("src");//获取当前点击的pimg元素中的src属性  
	$(bigimg).attr("src", src);//设置#bigimg元素的src属性  
		/*获取当前点击图片的真实大小,并显示弹出层及大图*/  
	$("<img/>").attr("src", src).load(function(){  
		var windowW = $(window).width();//获取当前窗口宽度  
		var windowH = $(window).height();//获取当前窗口高度  
		var realWidth = this.width;//获取图片真实宽度  
		var realHeight = this.height;//获取图片真实高度  
		var imgWidth, imgHeight;  
		var scale = 0.8;//缩放尺寸,当图片真实宽度和高度大于窗口宽度和高度时进行缩放  
			
		if(realHeight>windowH*scale) {//判断图片高度  
			imgHeight = windowH*scale;//如大于窗口高度,图片高度进行缩放  
			imgWidth = imgHeight/realHeight*realWidth;//等比例缩放宽度  
			if(imgWidth>windowW*scale) {//如宽度扔大于窗口宽度  
				imgWidth = windowW*scale;//再对宽度进行缩放  
			}  
		} else if(realWidth>windowW*scale) {//如图片高度合适,判断图片宽度  
			imgWidth = windowW*scale;//如大于窗口宽度,图片宽度进行缩放  
						imgHeight = imgWidth/realWidth*realHeight;//等比例缩放高度  
		} else {//如果图片真实高度和宽度都符合要求,高宽不变  
			imgWidth = realWidth;  
			imgHeight = realHeight;  
		}  
				$(bigimg).css("width",imgWidth);//以最终的宽度对图片缩放  
			
		var w = (windowW-imgWidth)/2;//计算图片与窗口左边距  
		var h = (windowH-imgHeight)/2;//计算图片与窗口上边距  
		$(innerdiv).css({"top":h, "left":w});//设置#innerdiv的top和left属性  
		$(outerdiv).fadeIn("fast");//淡入显示#outerdiv及.pimg  
	});  
	$(outerdiv).click(function(){//再次点击淡出消失弹出层  
		$(this).fadeOut("fast");  
	});  
}