فهرست منبع

康复下转管理 功能

zhangyanfang 4 سال پیش
والد
کامیت
c5c7bc86ee

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

@ -167,6 +167,10 @@ ul {
.f-w500 {
	font-weight: 500;
}
.setInput .el-input__inner{
	font-size: 13px;
    height: 20.4px;
}
.el-date-editor .el-range-input {
	height: 24px;
	line-height: 24px;

+ 243 - 86
app/recover/html/new_recover.html

@ -109,7 +109,10 @@
		        				<em class="c-position-a set-blue-span"></em>
		        				配置康复计划
		        				<!-- <span v-for="(label, index) in spanLabel" :key="index" class="fr ml20 pl20 c-f14 c-999 cur-pit" :class="{'active': index == labelIndex}" @click="setLabelIndex(index, label)">{{label.labelName}}</span> -->
		        			</h4>
							</h4>
							<div class="ui-col-1 mt20 mr20 c-t-right">
								<img style="width: 24px;height: 24px;" @click="switchWay" src="../images/switch.png"></img><span  @click="switchWay" class="ml5 c-f14">{{selectWay=='during'?'切换为时间点':'切换为时间段'}}</span>
							</div>
		        			<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">
@ -118,7 +121,7 @@
												<p :class='detail.isTimeSame ? "m0 p0 mb10 txt-ells cur-pit c-red" : "m0 p0 mb10 txt-ells cur-pit"'>{{detail.name}}</p>
												<div class="clearfix">
													<p class="w400 m0 mb10 p0 fl"><span class="c-999">医&emsp;&emsp;院:</span>{{docInfo.hospitalName}}</p>
													<p class="m0 p0 mb10 fl"><span class="c-999">费&emsp;&emsp;用:</span>0.00</p>
													<p class="m0 p0 mb10 fl"><span class="c-999">费&emsp;&emsp;用:</span>{{detail.expense}}</p>
												</div>
												<div class="m0 p0 clearfix">
													<div class="w400 m0 mb10 p0 fl clearfix">
@ -144,9 +147,10 @@
												<p :class='detail.isTimeSame ? "m0 p0 mb10 txt-ells cur-pit c-red" : "m0 p0 mb10 txt-ells cur-pit"'>{{detail.name}}</p>
												<div class="clearfix">
													<p class="w400 m0 mb10 p0 fl"><span class="c-999">医&emsp;&emsp;院:</span>{{detail.executeHospitalName}}</p>
													<p class="m0 p0 mb10 fl"><span class="c-999">费&emsp;&emsp;用:</span>0.00</p>
													<p class="m0 p0 mb10 fl"><span class="c-999">费&emsp;&emsp;用:</span>{{detail.expense}}</p>
												</div>
												<div class="m0 p0 clearfix">
													<!-- 选择频次 时间点multiple/ 默认时间段during -->
													<div class="w400 m0 mb10 p0 fl clearfix">
														<span class="fl c-999">选择频次:</span>
														<div class="fl c-position-r custom-dropdown">
@ -166,33 +170,49 @@
														</div>
													</div>
												</div>
												<div v-if="detail.frequencyName!='不限频次'" 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">
															<el-date-picker v-model="detail.value14[0]" type="date" placeholder="开始日期" value-format="yyyy-MM-dd" :picker-options="pickerOptions1" @input="getRandgeDate(index, 0)">
															</el-date-picker>
															<span>—</span>
															<el-date-picker v-model="detail.value14[1]" type="date" placeholder="结束日期" value-format="yyyy-MM-dd" :picker-options="pickerOptions1" @input="getRandgeDate(index, 1)">
														<div v-if="detail.mode=='during'">
															<div class="fl maxw600 mb10">
																<el-date-picker v-model="detail.value14[0]" type="date" placeholder="开始日期" value-format="yyyy-MM-dd" :picker-options="pickerOptions1" @input="getRandgeDate(index, 0)">
																</el-date-picker>
																<span>—</span>
																<el-date-picker v-model="detail.value14[1]" type="date" placeholder="结束日期" value-format="yyyy-MM-dd" :picker-options="pickerOptions1" @input="getRandgeDate(index, 1)">
																</el-date-picker>
															</div>
															</el-date-picker>
															<span class="fl lh24 mlr10 c-999">或</span>
															<div class="fl maxw600 mb10">
																<el-date-picker type="dates" :picker-options="pickerOptions1" v-model="detail.value15" value-format="yyyy-MM-dd" @input="getSelectDate(index)" placeholder="选择一个或者多个日期"></el-date-picker>
															</div>	
														</div>
														</el-date-picker>
														<span class="fl lh24 mlr10 c-999">或</span>
														<div class="fl maxw600 mb10">
															<el-date-picker type="dates" :picker-options="pickerOptions1" v-model="detail.value15" value-format="yyyy-MM-dd" @input="getSelectDate(index)" placeholder="选择一个或者多个日期"></el-date-picker>
														<!-- 设置周几 根据所选择频率获取对应数组   -->
														<div v-if="detail.mode=='multiple'" class="fl maxw600 mb10 setInput">
															<el-select v-model="detail.dateCode" placeholder="请选择" @focus="selectTime(detail.frequencyName)" @change="setExecuteTime(detail)">
																<el-option
																  v-for="item in multipleTimeList[detail.timeMode]"
																  size="mini"
																  :key="item.code"
																  :label="item.name"
																  :value="item.code">
																</el-option>
															  </el-select>
														</div>
													</div>
												</div>
												<div class="clearfix">
													<span class="fl c-999">备&emsp;&emsp;注:</span>
													<div class="fl maxw600 plr15 ptb10 c-border set-textarea">
														<textarea placeholder="不补充说明特殊用法、方式" v-model="detail.remark" name="" rows="" cols=""></textarea>
													</div>
												<div class="ui-grid ui-grid-middle">
													<div class="clearfix ui-col-2">
														<span class="fl c-999">备&emsp;&emsp;注:</span>
														<div class="fl maxw600 plr15 ptb10 c-border set-textarea">
															<textarea placeholder="不补充说明特殊用法、方式" v-model="detail.remark" name="" rows="" cols=""></textarea>
														</div>
													</div>	
												</div>
											</div>
											<div class='fr w60 c-t-right clearfix'>
@ -276,7 +296,9 @@
        <script src="../../../plugins/toastr/toastr.min.js"></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>
		<script src="../../../js/underscore.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../js/moment.js"></script>
		<script src="../../../js/getPlanDate.js"></script>
        <script src="../../../js/util.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../js/element-ui.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../api/http-request.js" type="text/javascript"></script>
@ -333,7 +355,8 @@
					projectList: null,
					serviceItems: null, // 服务项列表
                	labelIndex: 2,
                	labelCode: 1,
					labelCode: 1,
					selectWay:'during',
                	spanLabel: [{
                		labelName: "(转)家庭病床",
                		code: 3
@ -345,7 +368,14 @@
                		code: 1
                	}],
                	jDlist: [], //家签医生
                	zDlist: [], //专科医生
					zDlist: [], //专科医生
					multipleTimeList:{},
					frequencysList1:[{'code':'','name':'不限频次'},{"code":"qd_10-week1","name":"1周/次","type":1,mode:"week",'count':1},
					{"code":"qd_10-week1","name":"2周/次","type":2,mode:"week",'count':1},
					{"code":"qd_10-month1","name":"1月/次","type":1,mode:"month",'count':1},
					{"code":"qd_10-month1","name":"2月/次","type":2,mode:"month",'count':1},
					{"code":"qd_10-month1","name":"3月/次","type":3,mode:"month",'count':1}],  //频次列表-multiple
					weekValue:'',
                	selectProjectDetail: null,
                	searchKey: null,
                	havePlan: false,
@ -381,8 +411,8 @@
					patient: httpData.patient || undefined
				},
                mounted: function() {
                	debugger
                	this.selectFrequencys()
					this.selectFrequencys()
					this.initTimeData()
                	if(this.patient) {
                		this.isPlan = false
                		this.allFee = 0
@ -396,7 +426,7 @@
					if(this.planId){
						this.planSchedule()
					}
                },
				},
				watch: {
					adviceContent: function(){
						var vm = this
@ -433,6 +463,7 @@
								o1.value14 = []
								o1.value15 = null
								o1.executeTime = []
								o1.mode='during'
								// 默认频次
								o1.selectFre = false
								if(vm.service.frequencyCode!=''){
@ -444,6 +475,7 @@
									o1.frequencyName = '不限频次'
									o1.frequency = vm.frequencyList[0]
								}
								o1.expense=vm.service.expense||0
								o1.frequencyList = vm.frequencyList
								o1.timeType = 0
								o1.remark = vm.service.remark
@ -460,6 +492,38 @@
							}
						})
					},
					initTimeData:function(){
						var vm=this
						vm.multipleTimeList ={"week":[],"month":[]}
						for(var i=1;i<=28;i++){
							switch(i){
								case 1:vm.multipleTimeList.week.push({name:"周一",code:String(i)});break;
								case 2:vm.multipleTimeList.week.push({name:"周二",code:String(i)});break;
								case 3:vm.multipleTimeList.week.push({name:"周三",code:String(i)});break;
								case 4:vm.multipleTimeList.week.push({name:"周四",code:String(i)});break;
								case 5:vm.multipleTimeList.week.push({name:"周五",code:String(i)});break;
								case 6:vm.multipleTimeList.week.push({name:"周六",code:String(i)});break;
								case 7:vm.multipleTimeList.week.push({name:"周日",code:String(i)});break;
								default:break;
							}
			//					if(i<=7){
								vm.multipleTimeList.month.push({name:i+"号",code:String(i)})
			//					}
						}
					},
					selectTime:function(item){
						if(!item){
							showErrorMessage('请先选择频次')
							return false
						}
					},
					setExecuteTime:function(item){
						if(item.dateCode){
							item.executeTime=getFreDateArr(item.timeMode+item.frequencysList1Type, Number(item.dateCode)).map(function(o) {return o.format("YYYY-MM-DD")})
							this.judgeHavePlan()
						}
						this.$forceUpdate()
					},
					//获取计划表
					planSchedule:function(){
						var vm = this;
@ -809,17 +873,20 @@
									vm.jDlist.push({
										name: vm.patiInfo.ssDoctorName || vm.patiInfo.jtDoctorName,
										code: vm.patiInfo.ssDoctor || vm.patiInfo.jtDoctor,
										hospitalName: vm.patiInfo.jtHospitalName
										hospitalName: vm.patiInfo.jtHospitalName,
										type: 1,   //1家医2专医
									})
									vm.jDlist.push({
										name: vm.patiInfo.ssDoctorHealthName || vm.patiInfo.jtDoctorHealthName,
										code: vm.patiInfo.ssDoctorHealth || vm.patiInfo.jtDoctorHealth,
										hospitalName: vm.patiInfo.jtHospitalName
										hospitalName: vm.patiInfo.jtHospitalName,
										type: 1,   //1家医2专医
									})
									vm.jDlist.push({
										name: docInfo.name,
										code: docInfo.uid,
										hospitalName: docInfo.hospitalName
										hospitalName: docInfo.hospitalName,
										type: 2,   //1家医2专医
									})
								}
								// 获取居民标签
@ -925,38 +992,84 @@
							layer.close(loadding)
							if(res.status == 200) {
								vm.templateDetail = []
								vm.templateResult = res.data
								res.data.planArr=[]
								vm.templateResult = $.map(res.data,function(item){
									$.map(item.list,function(it){
										it.code=item.code
										it.name=item.name
										res.data.planArr.push(it)
									})
									return res.data.planArr
								})
								vm.templateResult=_.uniq(vm.templateResult,function(item){
									return item.id
								})
								vm.getServiceItemList().then(function(){
									var arr = []
									$.each(vm.serviceItems, function(index,o) {
										$.each(vm.templateResult, function(index1, o1) {
											if(o1.code == o.code) {
												o.isSelect = true
												o1.selectFre = true
												o1.isSelect = true
												o1.selectDoc = false
												o1.selectDate = 1
												o1.value14 = []
												o1.value15 = null
												o1.executeTime = []
												// 默认频次
												o1.selectFre = false
												o1.frequencyCode = ''
												o1.frequencyName = '不限频次'
												o1.frequency = vm.frequencyList[0]
												o1.frequencyList = vm.frequencyList
												o1.timeType = 0
												o1.remark = null
												o1.executeDoctor = vm.jDlist[0].code
												o1.executeDoctorName = vm.jDlist[0].name
												o1.executeHospitalName = vm.jDlist[0].hospitalName
												o1.docList = vm.jDlist
												if(o1.executeTimes){
													o.isSelect = true
													o1.selectFre = true
													o1.isSelect = true
													o1.selectDoc = false
													o1.selectDate = 1
													o1.value14 = []
													o1.value15 = null
													o1.executeTimes?o1.executeTime = o1.executeTimes.split(','):o1.executeTime=[]
													o1.executeTime=_.map(o1.executeTime,function(item){
														return item.substring(0,item.length-6)
													})
													// 默认频次
													o1.selectFre = false
													o1.mode='multiple'
													o1.timeMode=_.find(vm.frequencysList1,{'name':o1.frequencyName}).mode
													o1.frequencysList1Type=_.find(vm.frequencysList1,{'name':o1.frequencyName}).type
													o1.frequency = vm.frequencysList1[1]
													o1.frequencyList = vm.frequencysList1
													o1.timeType = 0
													o1.docList = vm.jDlist
													if(o1.type==1){
														o1.executeDoctorName=vm.jDlist[0].name
														o1.executeDoctor=vm.jDlist[0].code
														o1.executeHospitalName = vm.jDlist[0].hospitalName
													}else{
														o1.executeDoctorName=docInfo.name
														o1.executeDoctor=docInfo.uid
														o1.executeHospitalName = docInfo.hospitalName
													}
												}else{
													o.isSelect = true
													o1.selectFre = true
													o1.isSelect = true
													o1.selectDoc = false
													o1.selectDate = 1
													o1.value14 = []
													o1.value15 = null
													o1.executeTime = []
													// 默认频次
													o1.selectFre = false
													o1.frequencyCode = ''
													o1.frequencyName = '不限频次'
													o1.mode='during'
													o1.frequency = vm.frequencyList[0]
													o1.frequencyList = vm.frequencyList
													o1.timeType = 0
													o1.remark = null
													o1.executeDoctor = vm.jDlist[0].code
													o1.executeDoctorName = vm.jDlist[0].name
													o1.executeHospitalName = vm.jDlist[0].hospitalName
													o1.docList = vm.jDlist
												}
												arr.push(o1)
											}
										})
									})
									vm.templateDetail = arr
									vm.checkAllMoney()
									console.log('======',arr)
									vm.$forceUpdate()
								})
								// vm.findServiceItemsByHospital()
@ -1009,7 +1122,10 @@
			    		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].timeMode=list.mode
						this.templateDetail[index].frequencysList1Type=list.type
						this.templateDetail[index].dateCode=''
						this.templateDetail[index].frequency = list
			    		this.templateDetail[index] = this.templateDetail[index]
			    		this.isTest = !this.isTest
						// if(this.templateDetail[index].frequencyCode==''&&this.isEditConfig){
@ -1026,7 +1142,8 @@
//			    	选择执行医生
			    	selectLi: function(index, list) {
			    		this.templateDetail[index].selectDoc = false
			    		this.templateDetail[index].executeDoctor = list.code
						this.templateDetail[index].executeDoctor = list.code
			    		this.templateDetail[index].type = list.type
						this.templateDetail[index].executeDoctorName = list.name
						this.templateDetail[index].executeHospitalName = list.hospitalName
			    		this.templateDetail[index] = this.templateDetail[index]
@ -1059,15 +1176,24 @@
			    	copyTemplate: function(index, detail) {
			    		var vm = this,
			    			obj = JSON.parse(JSON.stringify(detail));
			    		this.isTest = !this.isTest
			    		obj.executeTime = []
						this.isTest = !this.isTest
						obj.executeTime = []
						obj.mode=this.selectWay
						obj.mode=='during'?obj.frequencyList=vm.frequencyList:obj.frequencyList=vm.frequencysList1
						obj.frequencyCode=''
						obj.frequencyName=''
						obj.dateCode=''
			    		obj.value14 = []
			    		obj.value15 = null
						this.templateDetail.push(obj)
						if(obj.code!='2'&&obj.code!='3'){
							this.havePlan = false
						}
			    	},
						this.checkAllMoney()
					},
					switchWay:function(){
						this.selectWay=='during'?this.selectWay='multiple':this.selectWay='during'
					},
			    	// 选择项目
			    	selectProject: function(index, index2, index3, o) {
			    		this.selectProjectDetail = o
@ -1093,7 +1219,8 @@
                		}
                		this.selectProjectDetail.isSelect = true
                		this.selectProjectDetail.selectDoc = false
                		this.selectProjectDetail.selectDate = 1
						this.selectProjectDetail.selectDate = 1
						this.selectProjectDetail.expense=0
						this.selectProjectDetail.value14 = []
						this.selectProjectDetail.value15 = null
                		this.selectProjectDetail.executeTime = []
@ -1101,15 +1228,17 @@
                		this.selectProjectDetail.selectFre = true
                		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.frequency = this.frequencyList[0]
						this.selectProjectDetail.mode = this.selectWay
						this.selectWay=='during'?this.selectProjectDetail.frequencyList=this.frequencyList:this.selectProjectDetail.frequencyList=this.frequencysList1
						this.selectProjectDetail.dateCode=''
                		this.selectProjectDetail.timeType = 0
						this.selectProjectDetail.remark = null
						this.selectProjectDetail.executeDoctor = this.jDlist[0].code
						this.selectProjectDetail.executeDoctorName = this.jDlist[0].name
						this.selectProjectDetail.executeHospitalName = this.jDlist[0].hospitalName
						this.selectProjectDetail.docList = this.jDlist
                		this.templateDetail.push(this.selectProjectDetail)
						this.templateDetail.push(this.selectProjectDetail)
						this.serviceItems[index] = this.selectProjectDetail
						if(this.selectProjectDetail.code!='2'&&this.selectProjectDetail.code!='3'){
							this.havePlan = false
@ -1282,11 +1411,11 @@
                	// 计算总费用
                	checkAllMoney: function() {
                		var vm = this
                		this.allFee = 0
						this.allFee = 0
                		$.each(vm.templateDetail, function(index, o) {
                			var fee = vm.mul(vm.mul(o.expense, o.frequency.count), o.executeTime.length)
                			vm.allFee = vm.add(vm.allFee, fee)
                		});
							// var fee = vm.mul(vm.mul(o.expense, o.frequency.count), o.executeTime.length)
							vm.allFee = vm.add(vm.allFee, o.expense)
						});
                	},
                	judgeHavePlan: function() {
						var arr = []
@ -1313,6 +1442,30 @@
					// 编辑居民康复计划详情
					updateRehabilitationPlan: function(){
						var vm = this
						var ispass1=_.every(vm.templateDetail,function(item){
							if(item.code!='2'&&item.code!='3'){
								return _.every(vm.templateDetail,function(it,index){
									return	_.every(vm.templateDetail,function(i,ind){
										if(index!=ind){
											var same=_.intersection(it.executeTime,i.executeTime)
											if(same.length>0){
												return false
											}else{
												return true
											}
										}else{
											return true
										}
									})
								})
							}else{
								return true
							}
						})
						if(!ispass1){   //时间重复
							showErrorMessage('存在重复时间')
							return false
						}
						var loadding = layer.load(0, {shade: false}),
						data = {
							planId: vm.planId,
@ -1330,7 +1483,8 @@
									executeTimes: '',
									frequencyCode: '',
									timeType: 0,
									remark: o.remark || ''
									remark: o.remark || '',
									expense:o.expense
								}
							}else{
								if(o.executeTime.length) {
@ -1341,13 +1495,14 @@
									});
									obj = {
										hospitalServiceItemId: o.code, // 服务项code
										type: 2,
										type: o.type,
										doctor: o.executeDoctor,
										doctorName: o.executeDoctorName,
										executeTimes: executeTime.length>0?executeTime.join(","):'',
										frequencyCode: o.frequencyCode,
										timeType: o.timeType,
										remark: o.remark || ''
										frequencyCode: o.frequencyCode.split("-")[0],
										timeType: 0,	//1白天2晚上0全天
										remark: o.remark || '',
										expense:o.expense
									}
								}
							}
@ -1413,7 +1568,8 @@
									executeTimes: '',
									frequencyCode: '',
									timeType: 0,
									remark: o.remark || ''
									remark: o.remark || '',
									expense:o.expense,
								}
							}else{
								if(o.executeTime.length) {
@ -1424,13 +1580,14 @@
									});
									obj = {
										hospitalServiceItemId: o.code,
										type: 2,
										type: o.type,
										doctor: o.executeDoctor,
										doctorName: o.executeDoctorName,
										executeTimes: executeTime.join(","),
										frequencyCode: o.frequencyCode,
										timeType: o.timeType,
										remark: o.remark || ''
										frequencyCode: o.frequencyCode.split("-")[0],
										timeType: 0,
										remark: o.remark || '',
										expense:o.expense,
									}
								}
							}
@ -1473,26 +1630,26 @@
			            return ((num1*m + num2*m)/m).toFixed(n);
			        },
			        sub: function(num1,num2){
			            var r1,r2,m,n;
			            try{r1=num1.toString().split(".")[1].length}catch(e){r1=0}
			            try{r2=num2.toString().split(".")[1].length}catch(e){r2=0}
			            n = (r1>=r2)?r1:r2;
			            m = Math.pow(10,Math.max(r1,r2));
			            return ((num1*m - num2*m)/m).toFixed(n);
			            // var r1,r2,m,n;
			            // try{r1=num1.toString().split(".")[1].length}catch(e){r1=0}
			            // try{r2=num2.toString().split(".")[1].length}catch(e){r2=0}
			            // n = (r1>=r2)?r1:r2;
			            // m = Math.pow(10,Math.max(r1,r2));
			            // return ((num1*m - num2*m)/m).toFixed(n);
			        },
			        mul: function(num1,num2){
			            var m = 0;
						var m = 0;
			            try{m+=num1.toString().split(".")[1].length}catch(e){}
			            try{m+=num2.toString().split(".")[1].length}catch(e){}
			            return (Number(num1.toString().replace(".",""))*Number(num2.toString().replace(".","")))/Math.pow(10,m)
			        },
			        div: function(arg1,arg2){
			            var t1=0,t2=0,r1,r2;
			            try{t1=arg1.toString().split(".")[1].length}catch(e){}
			            try{t2=arg2.toString().split(".")[1].length}catch(e){}
			            r1=Number(arg1.toString().replace(".",""));
			            r2=Number(arg2.toString().replace(".",""));
			            return (r1/r2)*Math.pow(10,t2-t1);
			            // var t1=0,t2=0,r1,r2;
			            // try{t1=arg1.toString().split(".")[1].length}catch(e){}
			            // try{t2=arg2.toString().split(".")[1].length}catch(e){}
			            // r1=Number(arg1.toString().replace(".",""));
			            // r2=Number(arg2.toString().replace(".",""));
			            // return (r1/r2)*Math.pow(10,t2-t1);
			        }
                }
            })

BIN
app/recover/images/switch.png


+ 2 - 0
app/rehabilitation/html/management.html

@ -38,6 +38,8 @@
		<script src="../../../js/es6-promise.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../api/http-request.js"></script>
		<script src="../../../api/home-api.js"></script>
		<script src="../../../js/moment.js"></script>
		<script src="../../../js/getPlanDate.js"></script>
		<script src="../../../js/underscore.js"></script>
		<script type="text/javascript" src="../../../api/rehabilitation-api.js"></script>
		<script src="../../../js/vue-router.js"></script>

+ 24 - 10
component/rehabilitation/template-items-select2.js

@ -9,7 +9,7 @@ var TemplateItemsSelect2 = {
	    			<div class="mt10 pt10 pl10 ul-wrap">\
						<ul class="level-third">\
							<li v-for="(o, k) in serviceItems" class="ptb5">\
								<div class="list-item-name c-nowrap mr5" :class="{\'is-active\': !o.enable}">{{o.name}}</div>\
								<div class="list-item-name c-nowrap mr5" :class="{\'is-active\': o.isBlueBgc}">{{o.name}}</div>\
								<a href="javascript:void(0);" @click="addItem(o,k)" class="add-item-btn" :class="{\'disabled\': !o.enable}">\
									添加\
								</a>\
@ -47,6 +47,7 @@ var TemplateItemsSelect2 = {
						vm.templateDetail = res.data
						vm.getServiceItemList().then(function(){
							_.each(vm.templateDetail, function(o) {
								o.isInit=true
								EventBus.$emit("add-template-item", o)
							})
						})
@ -65,12 +66,23 @@ var TemplateItemsSelect2 = {
	},
    mounted: function() {
		var vm = this
		EventBus.$on("delete-template-item", function(obj, i){
		EventBus.$on("delete-template-item", function(obj, i,arr){
			console.log('dd',vm.serviceItems)
			_.each(vm.serviceItems, function(item, index) {
				if(item.code==obj.code){
					item.enable = true
					if(item.code=='2'||item.code=='3'){
						item.enable = true
					}
					vm.$set(vm.serviceItems, index, item)
					vm.templateDetail.splice(i, 1)
					// 判断左边服务项背景色是否显示蓝色 
					if(item.code==obj.code){
						var isEast=_.some(arr,function(itemb){
								if(itemb.code==obj.code){
									return true
							}						
						})
						item.isBlueBgc=isEast
					}
				}
			})
		})
@ -79,15 +91,16 @@ var TemplateItemsSelect2 = {
    	goBack: function() {
			EventBus.$emit("refresh-index")
    		this.$router.replace('/');
    	},
		},
    	addItem: function(o, k) {
			if(!o.enable){
				return
			o.isInit=false
			if(o.code=='2'||o.code=='3'){
				o.enable=false
			}
			o.enable = false
			o.isBlueBgc=true
			EventBus.$emit("add-template-item", o)
			this.$set(this.serviceItems, k, o)
			this.templateDetail.push(o)
			// this.templateDetail.push(o)
    	},
    	debounceSearch: _.debounce(function() {
			var vm = this
@ -102,11 +115,12 @@ var TemplateItemsSelect2 = {
				var selected = vm.templateDetail
				var selectedIds = _.pluck(selected, "code")
				_.each(vm.serviceItems, function(o) {
					if(_.contains(selectedIds, o.code)) {
					if(_.contains(selectedIds, o.code) && (o.code=='2' || o.code=='3')) {
						o.enable = false
					} else {
						o.enable = true
					}
					_.contains(selectedIds, o.code)?o.isBlueBgc=true:o.isBlueBgc=false
				})
			})
		},

+ 286 - 98
component/rehabilitation/template-items.js

@ -24,60 +24,86 @@ function showInfoMessage(msg) {
}
var TemplateItems = {
	template: '<div style="height: 100%;">\
					<el-dialog\
						title="计划时间"\
						:visible.sync="dialogVisible"\
						width="30%"\
						:before-close="handleClose">\
						<div>\
							<div>任务项目:电话/短信关怀</div>\
							<div>\
								<el-select v-model="seletc" placeholder="请选择">\
									<el-option\
										v-for="item in options"\
										:key="item.value"\
										:label="item.label"\
										:value="item.value">\
									</el-option>\
								</el-select>\
							</div>\
						</div>\
						<span slot="footer" class="dialog-footer">\
							<el-button @click="dialogVisible = false">取 消</el-button>\
							<el-button type="primary" @click="dialogVisible = false">确 定</el-button>\
						</span>\
					</el-dialog>\
    				<div class="title-name c-f16">\
	    				<span class="c-vam">{{name}}</span>\
	    			</div>\
	    			<div v-show="!items.length" class="c-t-center" style="margin-top: 200px;">\
	    				<img src="../../../images/fanhui_icon.png" class="c-vam"/>请在左侧“服务项”列表中选择\
	    			</div>\
	    			<div class="template-items" v-show="items.length">\
	    				<div class="item-card ptb10 plr15 mt10" v-for="(o, i) in items">\
		    				<div class="c-nowrap">{{o.name}}</div>\
			    			<div class="c-row c-f14 mt5">\
						        <div class="c-50">\
						        	<span class="c-909090">医&emsp;&emsp;院:</span>\
						        	<span class="c-909090">待选择</span>\
						        </div>\
						        <div class="c-50">\
						        	<span class="c-909090">执行人员:</span>\
						        	<span class="c-909090">待选择</span>\
						        </div>\
						    </div>\
						    <div class="c-row c-f14 mt5">\
						        <div class="c-50">\
						        	<span class="c-909090">计划时间:</span>\
						        	<span class="c-909090">待选择</span><img class="ml15" @click="dialogVisible = true" style="width:16px;height: 16px;vertical-align: middle;display:none;" src="../../../images/bianji_icon.png"></img>\
						        </div>\
						        <div class="c-50 setSelect">\
									<span class="c-909090">费&emsp;&emsp;用:</span>\
									<el-input-number v-model="o.expense" :step="1" :min="0" size="mini"></el-input-number>&emsp;元\
						        </div>\
						    </div>\
						    <img v-if="name!=\'系统模板\'" src="../../../images/qingchu_icon.png" class="item-delete-btn" @click.stop="deleteItem(o, i)"/>\
	    				</div>\
					<div class="template-items" v-show="items.length">\
						<div v-for="(item, index) in items">\
							<div class="item-card ptb10 plr15 mt10" v-for="(o, i) in item.list">\
								<div class="c-nowrap">{{o.name}}</div>\
								<div class="c-row c-f14 mt5">\
									<div class="c-50">\
										<span class="c-909090">执行人员:</span>\
										<span v-if="!o.type" class="c-909090">家庭医生</span>\
										<span v-else class="c-909090">{{o.type==1?\'家庭医生\':\'专科医生\'}}</span>\
									</div>\
									<div class="c-50 c-hide">\
										<span class="c-909090">医&emsp;&emsp;院:</span>\
										<span class="c-909090">待选择</span>\
									</div>\
								</div>\
								<div class="c-row c-f14 mt5">\
									<div class="c-50">\
										<span class="c-909090">计划时间:</span>\
										<span class="c-909090" v-if="item.list.length==1 && !o.executeTimes">不限频次</span>\
										<span class="c-909090" v-else>{{o.frequencyName||\'待选择\'}}</span><img v-if="o.code!=2 && o.code!=3" class="ml15" @click="showDialog(o,index,i)" style="width:16px;height: 16px;vertical-align: middle;" src="../../../images/bianji_icon.png"></img>\
									</div>\
									<el-dialog\
										title="计划时间"\
										:visible.sync="dialogVisible"\
										width="34%"\
										:before-close="handleClose">\
										<div class="c-t-center">\
											<div class="c-t-left mb20">任务项目:{{seletc[\'name\']}}</div>\
											<div class="mb10 ui-grid ui-grid-middle">\
												<div class="ui-col-0">频&emsp;&emsp;次:</div>\
												<el-select class="ui-col-1" v-model="seletc[\'frequency\']" placeholder="请选择" @change="selectFrequency">\
													<el-option\
														v-for="item in frequencysList1"\
														:key="item.name"\
														:label="item.name"\
														:value="item.name">\
													</el-option>\
												</el-select>\
											</div>\
											<div v-show="seletc[\'frequency\']!=\'不限频次\'" class="mb10 ui-grid ui-grid-middle">\
												<div class="ui-col-0">执行时间:</div>\
												<el-select class="ui-col-1" v-model="seletc[\'time\']" placeholder="请选择"  @focus="selectTime">\
													<el-option\
														v-for="item in multipleTimeArr"\
														:key="item.code"\
														:label="item.name"\
														:value="item.code">\
													</el-option>\
												</el-select>\
											</div>\
											<div v-show="seletc[\'frequency\']!=\'不限频次\'" class="mb10 ui-grid ui-grid-middle">\
												<div class="ui-col-0">执行人员:</div>\
												<el-select class="ui-col-1" v-model="seletc[\'doctor\']" placeholder="请选择">\
													<el-option\
														v-for="item in doctorList"\
														:key="item.name"\
														:label="item.name"\
														:value="item.code">\
													</el-option>\
												</el-select>\
											</div>\
									</div>\
									<span slot="footer" class="dialog-footer">\
										<el-button @click="dialogVisible = false">取 消</el-button>\
										<el-button type="primary" @click="confirmTaskItem(items[index].list[i])">确 定</el-button>\
									</span></el-dialog>\
									<div class="c-50 setSelect" v-if="i==0">\
										<span class="c-909090">费&emsp;&emsp;用:</span>\
										<el-input-number v-model="item.expense" :step="1" :min="0" size="mini"></el-input-number>&emsp;元\
									</div>\
								</div>\
								<img v-if="name!=\'系统模板\'" src="../../../images/qingchu_icon.png" class="item-delete-btn" @click.stop="deleteItem(o, i)"/>\
							</div>\
						</div>\
	    			</div>\
	    			<div class="foot-btns">\
			    		<a class="delete-btn c-t-center mr50" @click="deleteTemplate">\
@ -97,12 +123,16 @@ var TemplateItems = {
			templateId: "",
			dialogVisible:false,
			item: null,
			seletc:'',
			frequencysList1:[{"code":"qd_10-week1","name":"1周/次","type":1,mode:"week"},
			{"code":"qd_10-week1","name":"2周/次","type":2,mode:"week"},
			{"code":"qd_10-month1","name":"1月/次","type":1,mode:"month"},
			{"code":"qd_10-month1","name":"2月/次","type":2,mode:"month"},
			{"code":"qd_10-month1","name":"3月/次","type":3,mode:"month"}],  //频次列表-multiple	
			seletc:{'frequency':'','time':'','doctor':'','name':'','index':'','i':''},
			selectFrequencyItem:null,
			multipleTimeList:{},
			multipleTimeArr:[],
			doctorList:[{name:'家庭医生',code:1},{name:'专科医生',code:2}],    //执行人员列表
		    frequencysList1:[{'code':'','name':'不限频次'},{"code":"qd_10-week1","name":"1周/次","type":1,mode:"week"},
		    {"code":"qd_10-week1","name":"2周/次","type":2,mode:"week"},
		    {"code":"qd_10-month1","name":"1月/次","type":1,mode:"month"},
		    {"code":"qd_10-month1","name":"2月/次","type":2,mode:"month"},
		    {"code":"qd_10-month1","name":"3月/次","type":3,mode:"month"}],  //频次列表-multiple
			options:[{label:'0',value:'0'}]
        }
    },
@ -124,61 +154,223 @@ var TemplateItems = {
	},
	created: function() {
		var vm = this
		// 点击添加  初始化数据 
		EventBus.$on("add-template-item", function(o) {
			vm.items.push(o)
			if(o.isInit){
				vm.items.push(o)	
			}else{
				var isEast=_.findIndex(vm.items,{code:o.code})
				if(isEast==-1){
					o.list=[{}]
					o.expense=0
					vm.items.push(o)
				}else{
					_.map(vm.items,function(item){
						if(item.code==o.code){
							item.list.push({})
							return item
						}
					})	
				}
			}
			_.map(vm.items, function (item) {
				item.plan=[]
				// 过滤有执行时间的数组
				var arr=[]
				arr=_.filter(item.list,function(ee){
					return ee.executeTimes
				})    
				item.num=arr.length
				if(item.num){
					item.plan =item.list||[]
					item.remark=item.list[0].remark
					_.map(item.plan,function(item2){
						item2.executeTimes?item2.executeTimesArr=item2.executeTimes.split(','):''
						item2.mode='multiple'    //模板
						item2.show=false
						item2.doctorName=item2.type==1?'家庭医生':'专科医生'
						item2.doctor=item2.type
						_.map(vm.frequencysList1,function(it){
							if(it.name==item2.frequencyName){
								item2.frequencyName?item2.frequencyCode=it.code:''
							}
						})
						item2.date=_.map(item2.executeTimesArr,function(item3){
							return item3.substring(0,item3.length-6)
							 
						})
						return item2
					})  
				if(item.list.length>=1){
					_.map(item.list,function(it){
						!it.executeTimes?it.frequencyName='待选择':''
						return it
					})	
				}
				return item
			})
			_.map(vm.items, function (item) {
				_.map(item.list,function(it){
					it.name=item.name
					it.code=item.code
					return it
				})
				return item
			})
			vm.$forceUpdate()
		})
	},
    mounted: function() {
    	var vm = this
		var vm = this
		vm.initTimeData()
		
    },
    methods: {
    	deleteItem: function(o, i) {
    		var vm = this
    		o.enable = true
			vm.items.splice(i, 1)
			EventBus.$emit("delete-template-item", o, i)
			o.enable = true
			_.some(vm.items,function(item,index){
				if(item.code==o.code){
					item.list.splice(i, 1)
					if(item.list.length==0){
						vm.items.splice(index,1)
					}
					return true
				}
			})
			vm.$forceUpdate()
			EventBus.$emit("delete-template-item", o,i,vm.items)
		},
		initTimeData:function(){
			var vm=this
			vm.multipleTimeList ={"week":[],"month":[]}
			for(var i=1;i<=28;i++){
				switch(i){
					case 1:vm.multipleTimeList.week.push({name:"周一",code:String(i)});break;
					case 2:vm.multipleTimeList.week.push({name:"周二",code:String(i)});break;
					case 3:vm.multipleTimeList.week.push({name:"周三",code:String(i)});break;
					case 4:vm.multipleTimeList.week.push({name:"周四",code:String(i)});break;
					case 5:vm.multipleTimeList.week.push({name:"周五",code:String(i)});break;
					case 6:vm.multipleTimeList.week.push({name:"周六",code:String(i)});break;
					case 7:vm.multipleTimeList.week.push({name:"周日",code:String(i)});break;
					default:break;
				}
//					if(i<=7){
					vm.multipleTimeList.month.push({name:i+"号",code:String(i)})
//					}
			}
		},
		// 编辑按钮 
		showDialog:function(item,index,i){
			this.seletc['frequency']=item.frequencyName
			if(this.seletc['frequency']=='待选择'){
				this.seletc['frequency']='不限频次'
			}
			// 根据频率获取执行时间选择返回
			if(this.seletc['frequency']){
				this.selectFrequencyItem=_.find(this.frequencysList1,{'name':this.seletc['frequency']})
				this.multipleTimeArr=this.multipleTimeList[this.selectFrequencyItem.mode]	
			}		
			this.seletc['doctor']=item.type
			this.seletc['time']=item.dateCode
			this.seletc['name']=item.name
			this.seletc['index']=index
			this.seletc['i']=i
			this.dialogVisible = true
		},
		// 点击同意按钮
		confirmTaskItem:function(){
			var index=this.seletc['index'],
				i=this.seletc['i'],
				item=this.items[index].list[i];	
				if(this.seletc['frequency']=='不限频次'){
					var list=[{'name':item.name,'code':item.code,'frequencyName':'不限频次'}]
					this.items.splice(index,1,{'code':item.code,'name':item.name,'expense':0,list})
					this.dialogVisible = false
					return
				}	
				item.type=this.seletc['doctor']
				item.dateCode=this.seletc['time']
				item.dateCode?item.dateName=_.find(this.multipleTimeArr,{'code':this.seletc['time']}).name:''
				item.frequencyName=this.selectFrequencyItem.name
				item.frequencyCode=this.selectFrequencyItem.code
				if(item.dateCode){
					item.date=getFreDateArr(this.selectFrequencyItem.mode+this.selectFrequencyItem.type, Number(item.dateCode)).map(function(o) {return o.format("YYYY-MM-DD")})
					item.executeTimesArr = _.map(item.date,function(citem){
						return citem+" 00:00"
					})
					item.executeTimes=item.executeTimesArr.join(",")	
				}
				this.dialogVisible = false
		},
		selectFrequency:function(){
			this.selectFrequencyItem=_.find(this.frequencysList1,{'name':this.seletc['frequency']})
			this.multipleTimeArr=this.multipleTimeList[this.selectFrequencyItem.mode]
		},
		selectTime:function(item){
			if(!this.seletc['frequency']){
				showErrorMessage('请先选择频次')
				return false
			}
		},
		handleClose:function(){
			this.dialogVisible = false
		},
    	saveTemplate: function() {
			var vm = this
			if(this.name=='系统模板'){
				showErrorMessage('不能编辑系统模板!')
				return false
			}
				//检查有频次时(同一个服务项超过1个)计划时间是否填写完整
				var ispass=_.every(vm.items,function(item){
					if(item.list.length>1){
						return _.every(item.list,function(it){
							return it.dateCode && it.type && it.frequencyCode
						})
					}else{
						return true
					}
				})
				if(!ispass){
					showErrorMessage('请完善计划时间')
					return false
				}
				var ispass1=_.every(vm.items,function(item){
					if(item.code!='2'&&item.code!='3'){
						return _.every(item.list,function(it,index){
							return	_.every(item.list,function(i,ind){
								if(index!=ind){
									var same=_.intersection(it.executeTimesArr,i.executeTimesArr)
									if(same.length>0){
										return false
									}else{
										return true
									}
								}else{
									return true
								}
							})
						})
					}else{
						return true
					}
				})
				if(!ispass1){   //时间重复
					showErrorMessage('存在重复时间')
					return false
				}
				_.map(vm.items, function (item) {
					item.plan=[]
					// 过滤有执行时间的数组
					var arr=[]
					arr=_.filter(item.list,function(ee){
						return ee.executeTimes
					})    
					item.num=arr.length
					_.map(item.list,function(it){
						it.name=item.name
						it.code=item.code
						return it
					})
					// 存在执行时间
					if(item.num){
						item.plan =item.list||[]
						item.remark=item.list[0].remark
						_.map(item.plan,function(item2){
							item2.executeTimes?item2.executeTimesArr=item2.executeTimes.split(','):''
							item2.mode='multiple'    //模板
							item2.show=false
							if(item2.type){
								item2.doctorName=item2.type==1?'家庭医生':'专科医生'
							}else{
								item2.doctorName=''
							}
							item2.doctor=item2.type	
							_.map(vm.frequencysList1,function(it){
								if(it.name==item2.frequencyName){
									item2.frequencyName?item2.frequencyCode=it.code:''
								}
							})
							item2.date=_.map(item2.executeTimesArr,function(item3){
								return item3.substring(0,item3.length-6)
								 
							})
							return item2
						})  
					}
					return item
				})
	
			var params = []
            _.each(vm.items, function (item, index) {
                if (item.plan && item.plan.length) {
@ -193,7 +385,7 @@ var TemplateItems = {
                            'dateName':citem.dateName,
                            'dateCode':citem.dateCode,
							"timeType": 0,   //1白天2晚上0全天
							'expense':item.expense,
							'expense':item.expense||0,
							"remark": item.remark,
                        }
                        params.push(param)
@ -206,16 +398,12 @@ var TemplateItems = {
                        "executeTimes": "",
                        "frequencyCode": "",
						"timeType": 0,   //1白天2晚上0全天
						'expense':item.expense,
						'expense':item.expense||0,
                        "remark": ""
                    }
                    params.push(param)
                }
            })
            if (params.length == 0) {
                mui.toast("请选择配置康复服务项");
                return false
            }
			})
    		vm.loading.showModal()
    		rehaAPI.createTemplateDetail({
    			doctor: docInfo.uid,

+ 86 - 0
js/getPlanDate.js

@ -0,0 +1,86 @@
	/* 类型:week(按周),month(按月);
		num: 一次几周,一次几个月
		day指定时间:1~7(按周) 或 1~12(按月)
	*/
	function getStartDate(type, day) {
		if(type === "week") {
			// 当前周
			var curDay = moment().isoWeekday();
			if(curDay >= day) {
				return moment().isoWeekday(day+7);
			} else {
				return moment().isoWeekday(day);
			}
		} else if(type === "month"){
			// 当前年份
			var curYear = moment().year();
			// 当前月份
			var curMonth = moment().month() + 1;
			// 当前日期
			var curDate = moment().date();
			if(curDate >= day) {
				return moment({year: curYear, month: curMonth, date : day}); // 注:month是从0开始算,范围:0~11
			} else {
				return moment({year: curYear, month: curMonth - 1, date : day});
			}
		}
	}
	
	/* 按周获取日期(最近3个月内)
		num: 一次几周
		day指定时间:1~7
	*/
	function getFreDateArrByWeek(num, day) {
		// 开始时间
		var startDate = getStartDate("week",day);
		// 3个月后的截止时间
		var maxDate = startDate.clone().month(startDate.month() + 3);
		// 符合条件的3个月内的日期数组
		var result = [];
		var buff = startDate.clone();
		while(buff.isSameOrBefore(maxDate)) {
			result.push(buff.clone());
			buff.isoWeekday(buff.isoWeekday()+7*num);
		}
		
		return result;
	}
	
	/* 按周获取日期(最近12个月内)
		num: 一次几个月
		day指定时间:1~28
	*/
	function getFreDateArrByMonth(num, day) {
		// 开始时间
		var startDate = getStartDate("month",day);
		// 12个月后的截止时间
		var maxDate = startDate.clone().month(startDate.month() + 12);
		// 符合条件的12个月内的日期数组
		var result = [];
		var buff = startDate.clone();
		while(buff.isSameOrBefore(maxDate)) {
			result.push(buff.clone());
			buff.month(buff.month()+num);
		}
		
		return result;
	}
	
	/* fre频率:weekN(N周/次),monthN(N月/次);
		day指定时间:1~7(按周) 或 1~12(按月)
	*/
	function getFreDateArr(fre, day) {
		var reg = /^(week|month)(\d+)$/,
			types = reg.exec(fre),
			type = types[1],
			num = +types[2];
			
		if(type === "week") {
			return getFreDateArrByWeek(num, day);
		} else if(type === "month" && day <= 28) {
			return getFreDateArrByMonth(num, day);
		}
		
		throw new Error("参数有误!")
	}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 7 - 0
js/moment.js