Browse Source

/厦门i健康/V1.7.4.7需求

chenyubai 1 year ago
parent
commit
6bdb74bf86

+ 17 - 2
api/statistics-api.js

@ -210,6 +210,14 @@
		hospitalsByType: function(data){
		    return httpRequest.get("hospitals/hospitalsByType", {data: data});
		},
		// 邀请专科医生回复明细列表
		consultHelpDetailPage: function(data){
		    return httpRequest.get("statisticsExport/consultHelpDetailPage", {data: data});
		},
		// 邀请专科医生回复统计列表
		consultHelpCountPage: function(data){
		    return httpRequest.get("statisticsExport/consultHelpCountPage", {data: data});
		},
		
		
		
@ -290,8 +298,15 @@
		exportRehabilitationPatientInfo: function(data, filename){
			return httpRequest.downLoadFileForAjax("doctor/specialist/rehabilitation/exportRehabilitationPatientInfo", filename, data);
		},
		
        
		// 邀请专科医生回复明细导出
		exportConsultHelpDetailPage: function(data, filename){
			return httpRequest.downLoadFileForAjax("statisticsExport/exportConsultHelpDetailPage", filename, data);
		},
		// 邀请专科医生回复统计导出
		exportConsultHelpCountPage: function(data, filename){
			return httpRequest.downLoadFileForAjax("statisticsExport/exportConsultHelpCountPage", filename, data);
		},
		 
    }
    exports.statisticAPI = statisticAPI;

+ 2 - 2
app/statistics/css/comprehensive-query.css

@ -36,7 +36,7 @@
	width:200px;
}
.tabs{
	width: 300px;
	/* width: 300px; */
	height: 35px;
	line-height: 35px;
	/* border: 1px solid red; */
@ -45,7 +45,7 @@
	display: flex;
}
.tabsBox{
	width: 32.55%;
	width:100px;
	text-align: center;
	border: 1px solid #F1F1F1;
	height: 100%;

+ 63 - 3
app/statistics/html/comprehensive-query.html

@ -47,17 +47,24 @@
							<el-tree class="bgc-f2f3f5" ref="collectTree"  :data="collect" show-checkbox node-key="id" :props="defaultProps"   @check-change="collectClick" @check='collCheck'>
							</el-tree>
						</template>
						<template v-if="tabsId == 4">
							<div class="particulars" v-for="(item,index) in treedataExpert" @click="handleNodeClick(item,'zhuanke')" :style="handleNodeId==item.id?'background-color: #409eff;color:#fff;':''">
								{{item.label}}
							</div>
							<!-- <el-tree class="bgc-f2f3f5" ref="collectTreeExpert"  :data="treedataExpert" show-checkbox node-key="id" :props="defaultProps"   @check-change="collectClick" @check='collCheck'>
							</el-tree> -->
						</template>
						<div class="resetSelected" v-if="tabsId != 2"> <div @click="reset">重置已选</div>  </div>
		        	</div>
		        	<div class="ui-col-1 bgc-fff p20" style="min-width: 900px;">
						<div class="searchDiv">
							<template v-if="handleNodeId!=44">
							<template v-if="handleNodeId!=44&&expertFamilyIdType != 'zhuanke1'&&handleNodeId!=45">
								<el-radio v-model="radio" label="1">按签约年度:</el-radio>
								<el-select v-model="chooseYear" class="pr20 formWidth">
									<el-option v-for="(item , index) in years" :key="index" :label="item" :value="item"></el-option>
								</el-select>
							</template>
							<el-radio v-model="radio" label="2">{{handleNodeId=='44'?'下转时间:':'创建时间:'}}</el-radio>
							<el-radio v-model="radio" label="2">{{handleNodeId=='44'?'下转时间:':expertFamilyIdType == 'zhuanke1'||handleNodeId==45?'邀请时间:':'创建时间:'}}</el-radio>
							<el-date-picker v-model="start" type="date" unlink-panels placeholder="开始日期" value-format="yyyy-MM-dd" style="width:140px;"  :clearable="false" :picker-options="pickerOptions">
							</el-date-picker>
							<span class="c-999">-</span>
@ -326,7 +333,7 @@
							</div>
							<div v-if="handleNodeId==44" class="searchDiv">
								<div   class="mt5">
									<el-form  :model="form7" class="flex handleNodeId-44">
									<el-form  :model="form11" class="flex handleNodeId-44">
										<el-form-item label="患者姓名:" class="flex">
											<el-input v-model="form11.patientName"  placeholder="请输入患者姓名查询"></el-input>
										</el-form-item>
@ -359,6 +366,32 @@
									</el-form>
								</div>
							</div>
							<div v-if="handleNodeId==45" class="searchDiv">
								<div   class="mt5">
									<el-form  :model="form12" class="flex handleNodeId-44">
										<el-form-item label="患者姓名:" class="flex">
											<el-input v-model="form12.patientName"  placeholder="请输入患者姓名查询"></el-input>
										</el-form-item>
										<el-form-item label="邀请状态:" class="flex formLeft">
											<el-select v-model="form12.status" class='' placeholder="请选择" filterable>
												<el-option  v-for="(item,index) in inviteStatus" :key="item.value"    :value="item.value" :label="item.label"></el-option>
											</el-select>
										</el-form-item>
										<el-form-item label="专科医生:" class="flex formLeft">
											<el-input v-model="form12.doctor"  placeholder="请输入专科医生查询"></el-input>
										</el-form-item>
										<el-form-item label="专科医院:" class="flex formLeft">
											<!-- <el-input v-model="form12.hospital"  placeholder="请输入专科医院查询"></el-input> -->
											<el-select v-model="form12.hospital" class='' placeholder="请选择" filterable>
												<el-option  v-for="(item,index) in specializedHospital" :key="item.value"    :value="item.value" :label="item.label"></el-option>
											</el-select>
										</el-form-item>
										<el-form-item label="专科科室:" class="flex formLeft">
											<el-input v-model="form12.archiveStatus"  placeholder="请输入专科科室查询"></el-input>
										</el-form-item>
									</el-form>
								</div>
							</div>
						</template>
						
						
@ -607,6 +640,22 @@
										</el-table-column>
									</template>
								</el-table>
								<el-table v-if="handleNodeId==45" border   :key="tableKey" :data="invitationList" style="width: 100%" v-loading="loadingTwo" class="mt20" >
									<template >
										<el-table-column  type="index" width='50' label="序号" align="center"></el-table-column>
										<el-table-column  prop="patientName" label="患者姓名" align="center"></el-table-column>
										<el-table-column  prop="age" width='50' label="年龄" align="center"></el-table-column>
										<el-table-column  prop="sex" width='50' label="性别" align="center"></el-table-column>
										<el-table-column  prop="mobile" label="患者手机号" align="center"></el-table-column>
										<el-table-column  prop="hospitalName" width='200' label="社区医院" align="center"></el-table-column>
										<el-table-column  prop="doctorName" label="社区医生" align="center"></el-table-column>
										<el-table-column  prop="createTime" label="邀请时间" align="center"></el-table-column>
										<el-table-column  prop="statusName" label="邀请状态" align="center"></el-table-column>
										<el-table-column  prop="specialistHospitalName" label="专科医院" align="center"></el-table-column>
										<el-table-column  prop="specialistDeptName" label="专科科室" align="center"></el-table-column>
										<el-table-column  prop="specialistName" label="专科医生" align="center"></el-table-column>
									</template>
								</el-table>
							</div>
							<div v-if="handleNodeShow == 3">
								<el-table v-if="collectCode == 1" border :data="diseaseReport" style="width: 100%" v-loading="loadingTwo" class="mt20" >
@ -622,6 +671,17 @@
									<el-table-column v-for='(item,index) in getDoorColumn'  :prop="item"  :label='getDoorHeader[index]' align="center"></el-table-column>
								</el-table>
							</div>
							<div v-if="handleNodeShow == 4">
								<el-table v-if="expertFamilyIdType == 'zhuanke1'" border :data="expertReplyData" style="width: 100%" v-loading="loadingTwo" class="mt20" >
									<el-table-column  type="index" width='50'  label="序号" align="center"></el-table-column>
									<el-table-column  prop="specialistName" label="专科医生" align="center"></el-table-column>
									<el-table-column  prop="specialistHospitalName" label="专科医院" align="center"></el-table-column>
									<el-table-column  prop="total" :render-header='renderHeadeRexpert'  align="center"></el-table-column>
									<el-table-column  prop="status0" :render-header='renderHeadeRexpert'  align="center"></el-table-column>
									<el-table-column  prop="status2" :render-header='renderHeadeRexpert'  align="center"></el-table-column>
									<el-table-column  prop="status3" :render-header='renderHeadeRexpert'  align="center"></el-table-column>
								</el-table>
							</div>
							<div class="c-t-right mt20">
								<el-pagination 
							      @current-change="handleCurrentChange"

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

@ -23,6 +23,9 @@ new Vue({
		chooseYear: '',
		userRole: '',
		treedata:  [],
		treedataExpert:[
		  {label: '邀请专科回复统计', id:'1'},
		],
		tableHeader:[],
		defaultProps: {
          children: 'children',
@ -62,6 +65,7 @@ new Vue({
			  {label: '居民积分明细', id:'42'},
			  {label: '入户访视明细', id:'43'},
			  {label: '康复下转明细', id:'44'},
			  {label: '邀请专科回复明细', id:'45'},
			]
		}],
		handleNodeShow:1,
@ -147,6 +151,7 @@ new Vue({
			{id:'1',text:'综合查询',show:true},
			{id:'2',text:'明细查询',show:false},
			{id:'3',text:'汇总数据',show:false},
			{id:'4',text:'专科综合查询',show:false},
		],
		tabsId:'1',
		facility:'',    //体征数据分析  - 设备类型
@ -179,6 +184,13 @@ new Vue({
			doctor:'',
			archiveStatus:'',
		},
		form12:{
			patientName:'',
			status:'',
			doctor:'',
			hospital:'',
			archiveStatus:'',
		},
		getHealthData:[],
		form8:{
			renew:'',
@ -239,12 +251,23 @@ new Vue({
		deorsumvergence:[{value:'',label:'全部'}],
		rehabilitationHospital:[{value:'',label:'全部'}],
		archiveList:[{value:'',label:'全部'}],
		inviteStatus:[
			{value:'',label:'全部'},
			{value:'0',label:'待回复'},
			{value:'1',label:'进行中'},
			{value:'2',label:'已完成'},
			{value:'3',label:'未回复'},
		],
		recoveryList:[],
		dialogVisible:false,
		signatoryList:[],
		tableKey:'',
		indicator:[],
		communityHospitals:[],
		invitationList:[],
		expertFamilyIdType:'',
		expertReplyData:[],
		specializedHospital:[{value:'',label:'全部'}],
	},
	components: {
		vuedals: Vuedals.Component
@ -307,6 +330,30 @@ new Vue({
					)
				  ])
		},
		renderHeadeRexpert(h, item) {
			var index = item.$index
		  return [
			index=='3'?'邀请次数':index=='4'?'进行中':index=='5'?'已回复':'未回复',
			h(
			  'el-tooltip',
			  {
				props: {
				  content: (function() {
					return index=='3'?`发起邀请总次数`:index==''?`其中咨询未完成,包含待回复和进行中`:index=='5'?`其中医生已回复且咨询已结束的`:`其中咨询已结束医生未回复的`
				  })(),
				  placement: 'top'
				}
			  },
			  [
				h('span', {
				  class: {
					'el-icon-question': true
				  }
				})
			  ]
			)
		  ]
		},
		// 获取康复下转明细 ---  下转状态
		deorsumvergenceStatusFunction:function(name) {
			var vm = this
@ -428,7 +475,7 @@ new Vue({
		},
		// 清除
		eliminateClick:function() {
			this.radio = this.handleNodeId==44?'2':'1'
			this.radio = this.handleNodeId==44||this.expertFamilyIdType == 'zhuanke1' || this.handleNodeId==45?'2':'1'
			this.radio1 = ''
			this.radio2 = ''
			this.radio3 = ''
@ -496,6 +543,13 @@ new Vue({
				doctor:'',
				archiveStatus:'',
			}
			this.form12 = {
				patientName:'',
				status:'',
				doctor:'',
				hospital:'',
				archiveStatus:'',
			},
			initData(this)
			// initTime(this)
			// initScope(this)
@ -504,6 +558,9 @@ new Vue({
		tabsClick:function(item) {
			var vm = this
			vm.tabsId = item.id
			if(item.id != 4) {
				vm.expertFamilyIdType = ''
			}
			vm.tabsList.forEach(function(res){
				if(res.id == item.id) {
					res.show = true
@ -602,7 +659,7 @@ new Vue({
			}
		},
		// 点击明细查询树形图
		handleNodeClick:function(item) {
		handleNodeClick:function(item,type) {
			var vm = this
			vm.handleNodeId = 0
			vm.derive = item.label
@ -685,10 +742,53 @@ new Vue({
			initTime(vm)      //时间初始化
			initScope(vm)    //数据范围初始化
			vm.currentPage = 1
			
			vm.analysFunction(vm.handleNodeId)    //明细查询列表查询 
			if(type == 'zhuanke') {
				vm.handleNodeShow = 4
				vm.radio = '2' 
				vm.expertFamilyIdType = 'zhuanke'+item.id
				vm.expertFamily(item.id)
			}else{
				vm.analysFunction(vm.handleNodeId)    //明细查询列表查询 
			}
		},
		expertFamily:function(id) {
			var vm = this
			if(id == '1') {
				vm.expertReplyList()
			}
		},
		// 邀请专科回复统计传参
		expertReply:function() {
			var vm = this
			vm.searchJsonTime = vm.beforeReq()
			return {
				// signYear :vm.radio=='1'?vm.chooseYear:'',     //签约年度
				team :vm.teamCode,     //团队
				area :vm.areaCode=='350205'?'':vm.areaCode,   //地区
				hospital :vm.communityCode, //社区
				range :vm.rangeCode,      //数据范围(town区传值area,hospital医院传值hospital,team团队传值team) 
				startDate :vm.radio=='2'?vm.searchJsonTime.start:'',   //开始时间
				endDate :vm.radio=='2'?vm.searchJsonTime.end:'',    //结束时间
				pageSize:vm.currentSize,
				page:vm.currentPage,
			}
		},
		// 邀请专科回复统计列表
		expertReplyList:function() {
			var vm = this
			vm.loadingTwo = true
			statisticAPI.consultHelpCountPage(vm.expertReply()).then(function(res){
				if(res.status == 200) {
					vm.expertReplyData = res.detailModelList
					vm.datatotal = res.totalCount
					vm.loadingTwo = false
				}
			})
		},
		
		
		
		analysFunction:function(id) {
			var vm = this
			// idcard =  idcard.replace(/^(.{6})(?:\d+)(.{4})$/,"$1****$2")    身份证 医保卡 脱敏显示
@ -1152,6 +1252,52 @@ new Vue({
				}
			})
		},
		//邀请专科回复明细传参
		invitationDetailsParameter:function() {
			var vm = this
			vm.searchJsonTime = vm.beforeReq()
			var parameter = {
				patientName:vm.form12.patientName,
				name:'',
				status:vm.form12.status,
				startTime:vm.radio=='2'?vm.searchJsonTime.start:'',   //开始时间
				endTime:vm.radio=='2'?vm.searchJsonTime.end:'',    //结束时间
				specialistName:vm.form12.doctor, //专科医生姓名
				specialistHospital:vm.form12.hospital, //专科医院code
				specialistDeptName:vm.form12.archiveStatus, //专科科室名称
				team:vm.teamCode, 
				area:vm.areaCode=='350200'?'':vm.areaCode,   //地区
				range:vm.rangeCode,      //数据范围(town区传值area,hospital医院传值hospital,team团队传值team) 
				hospital:'', //医院
				pageSize:vm.currentSize,
				page:vm.currentPage,
			}
			return parameter
		},
		//邀请专科回复明细列表
		invitationDetails:function() {
			var vm = this
			vm.loadingTwo = true
			statisticAPI.consultHelpDetailPage(vm.invitationDetailsParameter()).then(function(res){
				if(res.status == 200) {
					vm.loadingTwo = false
					res.detailModelList.forEach(function(v){
						v.sex = v.sex==1?'男':'女'
					})
					vm.invitationList = res.detailModelList
					vm.datatotal = res.totalCount
				}else{
					vm.loadingTwo = false
					vm.$message.error(res.msg)
				}
			})
		},
		
		
		
		
		
		
		// 康复下转明细传参
		recoveryParameter:function() {
			var vm = this
@ -1331,7 +1477,7 @@ new Vue({
			var vm=this
			statisticAPI.exportTreeList({rang:vm.rangeCode}).then(function(res){
				if(res.status == 200){
					// console.log(res,"Sddd")
					console.log(res,"Sddd")
					vm.treedata = [],jindex=0
					_.each(res.data,function(item,index){
						vm.treedata.push({
@ -1762,6 +1908,19 @@ new Vue({
					})
					 
				}else{vm.fullscreenLoading = false}
			}else if(vm.handleNodeId == 45) {
				// 邀请专科回复明细导出
				if(vm.invitationList.length!=0) {
					statisticAPI.exportConsultHelpDetailPage(vm.invitationDetailsParameter(),vm.derive+".xls").then(function(res){
						vm.fullscreenLoading = false
					})
					.catch(function(err){
						toastr.info(err)
						vm.fullscreenLoading = false
						console.error(err)
					})
				}else{vm.fullscreenLoading = false}
				
			}else if(vm.collectCode == 1) {
				// 专病汇总
				if(vm.diseaseReport.length!=0) {
@ -1801,6 +1960,18 @@ new Vue({
					})
					 
				}else{vm.fullscreenLoading = false}
			}else if(vm.expertFamilyIdType == 'zhuanke1') {
				// 邀请专科回复统计导出
				if(vm.expertReplyData.length!=0) {
					statisticAPI.exportConsultHelpCountPage(vm.expertReply(),vm.derive+".xls").then(function(res){
						vm.fullscreenLoading = false
					})
					.catch(function(err){
						toastr.info(err)
						vm.fullscreenLoading = false
						console.error(err)
					})
				}else{vm.fullscreenLoading = false}
			}
		},
		backClick:function(){
@ -1863,8 +2034,31 @@ new Vue({
				if(!status) {
					vm.pullDown()
				}
			}else if(id == 45) {
				vm.radio = '2'
				vm.invitationDetails()
				if(!status) {
					vm.getSpecialistHospital() //获取专科医院
				}
			}else if(vm.expertFamilyIdType == 'zhuanke1') {
				vm.expertReplyList()
			}
		},
		getSpecialistHospital:function() {
			var vm = this
			vm.specializedHospital = [{value:'',label:'全部'}]
			homeAPI.getSpecialistHospital().then(function(res){
				console.log(res,"Sdddddd")
				if(res.status == 200) {
					res.data.forEach(function(v){
						vm.specializedHospital.push({
							value:v.code,
							label:v.name,
						})
					})
				}
			})
		},
		pullDown:function() {
			this.deorsumvergenceStatusFunction('archive_status') //档案状态
			this.deorsumvergenceStatusFunction('rehabilitation_status') //下转状态