Commit 78d76529 authored by xieshoubao's avatar xieshoubao 💂

协同平台 展示的三个页面

parent 96eab0e6
......@@ -67,11 +67,26 @@ export function businessOperationStatistics(params){
data: params
})
}
export function queryHospitalList(params,str){
var name=str?str:'';
export function queryHospitalList(params,str,area){
return request({
url:`/api/team/hospital/queryHospitalList?name=${name}`,
url:`/api/team/hospital/queryHospitalList?name=${str?str:''}&area=${area?area:''}`,
method: 'GET',
data: params
})
}
export function getList(params){
return request({
url:`/api/team/importExcel/getList`,
method: 'POST',
data: params
})
}
export function uploadExcel(params){
return request({
url:`/api/team/importExcel/uploadExcel`,
method: 'POST',
data: params
})
}
\ No newline at end of file
......@@ -2,9 +2,9 @@
<div class="main-page">
<div class="main-page-header">
<p class="title">院内急救信息</p>
<el-form :inline="true" :model="searchForm" ref="searchForm" size="small">
<el-form :inline="true" :model="searchForm" ref="searchForm" size="small" class="InHosFirstAid_form">
<el-form-item prop="hospitalCode" label="选择医院">
<el-select v-model="searchForm.hospitalCode" placeholder="请选择医院名称">
<el-select v-model="searchForm.hospitalCode" placeholder="请选择医院名称" :disabled="roleId==2">
<el-option v-for="item in hospitalList" :key="item.code" :label="item.Name" :value="item.code"></el-option>
</el-select>
</el-form-item>
......@@ -12,12 +12,13 @@
<el-date-picker type="daterange" start-placeholder="开始日期" end-placeholder="结束日期" v-model="searchForm.rangeDate" prefix-icon="el-icon-date" format="yyyy-MM-dd" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<div class="btns">
<el-button type="primary" size="small" @click="search">查询</el-button>
<el-button size="small" @click="$refs.FileInputEl.click()">导入EXCEL</el-button>
<el-button type="primary" size="small" @click="BTNClickSearch">查询</el-button>
<el-button size="small" @click="resetForm('searchForm')">重置</el-button>
<el-button v-if="roleId==2" size="small" @click="$refs.FileInputEl.click()">导入EXCEL</el-button>
</div>
</el-form>
<div style="display:none;">
<input type="file" ref="FileInputEl" accept=".csv,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel">
<input type="file" ref="FileInputEl" @change="changeSelectFileFn" accept=".csv,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel">
</div>
</div>
<div class="main-page-body">
......@@ -28,7 +29,7 @@
</div>
<div class="table-cont">
<table-mixin :pageSize="pageSize" :pageNum="pageNum" :total="total" :pagination="pagination" :handleSizeChange="handleSizeChange" :handleCurrentChange="handleCurrentChange">
<el-table style="width:100%" border v-loading="tableData.loading" :data="tableData.body" @sort-change="handleSortChange">
<el-table style="width:100%" :fit="true" border v-loading="tableData.loading" :data="tableData.body" @sort-change="handleSortChange">
<div slot="empty" class="noData"></div>
<el-table-column v-for="(item,index) in tableData.head" :prop="item.key" :label="item.name" align="left" :formatter="item.formatter" :sortable="item.sortable" :fixed="item.fixed" :key="item.key+'_'+index" :min-width="item.width"></el-table-column>
</el-table>
......@@ -41,16 +42,16 @@
<script>
import { tableDataMixin } from '@/common/js/mixin';
import { queryIntegrationList,queryHospitalList } from '@/api/hospital';
import { getList,queryHospitalList,uploadExcel} from '@/api/hospital';
import { mapGetters } from 'vuex';
export default {
name: 'InHosFirstAid',
mixins: [tableDataMixin],
data() {
var d=new Date();var yar=d.getFullYear(),month=d.getMonth()+1,day=d.getDate();month=(month<10)?('0'+month):(month);day=(day<10)?('0'+day):(day);
let oDate=[`${yar}-01-01`,`${yar}-${month}-${day}`];
return {
activeTab:'2',
roleId:null,
activeTab:'1',
hospitalList:[],
searchForm: {
hospitalCode:'',
......@@ -67,21 +68,31 @@ export default {
}
},
computed:{
...mapGetters(['userInfo'])
...mapGetters(['userInfo']),
TableField:function(){ return((this.activeTab==1)?([{name:"门诊ID",key:"certificateNo"},{name:"姓名",key:"name"},{name:"性别",key:"gender"},{name:"年龄",key:"age"},{name:"电话",key:"phoneNo"},{name:"住院ID",key:"inPatientId"},{name:"发病时间",key:"attackTime"},{name:"初步诊断",key:"firstDiagnosis"},{name:"诊断时间",key:"diagnosisTime"},{name:"来院方式",key:"toHospitalWay"},{name:"到达医院大门时间",key:"toHospitalTime"},{name:"首次医疗接触时间",key:"firstContactTime"},{name:"首诊医师接诊时间",key:"firstDoctorContactTime"},{name:"转出医院名称",key:"transferOutHospitalName"},{name:"转出医院入门时间",key:"transOutIntoTime"},{name:"转出医院出门时间",key:"transOutLeaveTime"},{name:"心电图采集时间",key:"ecgCollectTime"},{name:"心电图诊断时间",key:"ecgDiagTime"},{name:"肌钙蛋白抽血时间",key:"bloodDrawingTime"},{name:"肌钙蛋白报告时间",key:"bloodReportTime"},{name:"肌钙蛋白检测值",key:"checkValue"},{name:"请会诊时间",key:"consulationTime"},{name:"会诊到达时间",key:"consulationArriveTime"},{name:"抗血小板治疗药物",key:"antiplateMedical"},{name:"抗血小板给药时间",key:"antiplateTime"},{name:"抗凝给药时间",key:"anticoaTime"},{name:"再灌注措施",key:"refersionMessure"},{name:"开始知情同意",key:"startInformedConsent"},{name:"签署知情同意",key:"signInformedConsent"},{name:"启动导管室时间",key:"startCatherRoomTime"},{name:"激活导管室时间",key:"activeCatherRoomTime"},{name:"导丝通过时间",key:"guideWirePassTime"},{name:"溶栓开始时间",key:"startThrombolysisTime"},{name:"溶栓结束时间",key:"endThrombolysisTime"},{name:"出院诊断",key:"dischargeDiagnosis"}]):([{name:"序号",key:"idx"},{name:"住院号",key:"hospitalId"},{name:"病患姓名",key:"name"},{name:"性别",key:"gender"},{name:"年龄",key:"age"},{name:"初步诊断",key:"firstDiagnosis"},{name:"诊断时间",key:"diagnosisTime"},{name:"治疗类型",key:"treatmentType"},{name:"住院时间",key:"inHospitalTime"},{name:"入院途径",key:"admissionRoute"},{name:"是否在院卒中",key:"isInHospitalStroke"},{name:"来院方式",key:"toHospitalWay"},{name:"发病时间",key:"attackTime"},{name:"患者到院时间",key:"toHospitalTime"},{name:"患者到达急诊科时间",key:"arrivedEmergencyTime"},{name:"申请会诊时间",key:"consulationTime"},{name:"卒中团队到达急诊科时间",key:"stokeArrivedEmergencyTime"},{name:"患者离开急诊科时间",key:"leaveEmergencyTime"},{name:"患者到达CT时间",key:"arriveCtTime"},{name:"患者到达MRI时间",key:"arriveMrTime"},{name:"获得CT结果时间",key:"getCtTime"},{name:"获得MRI结果时间",key:"getMriTime"},{name:"抽血开始时间(院内首次)",key:"firstBloodTime"},{name:"血液样本送达检验科时间",key:"sampleDeliverLabTime"},{name:"获得血常规时间",key:"bloodRoutineTime"},{name:"获取凝血常规时间",key:"coagulationRoutineTime"},{name:"获取肾功能结果时间",key:"renalFunctionTime"},{name:"获取电解质结果时间",key:"electrolyteTime"},{name:"开始溶栓知情同意",key:"startInformedConsent"},{name:"签署知情同意时间",key:"signInformedConsent"},{name:"首剂给药时间",key:"firstMedicalTime"},{name:"开始穿刺时间",key:"startPunctureTime"},{name:"穿刺成功时间",key:"successPunctureTime"},{name:"血管再通时间",key:"recanalizationTime"},{name:"出院时间",key:"dischargeTime"},{name:"急诊科耗时",key:"emergencyCostTime"},{name:"发病时长",key:"durationOfOnset"},{name:"患者入院-抽血开始时间耗时",key:"admissionDrawingTime"},{name:"抽血开始时间-血液送达检验科耗时",key:"drawingLabTime"},{name:"血液样本送达检验科-血常规结果时间(≤10分钟)",key:"labGetRoutineTime"},{name:"DNT时长",key:"dntOfTime"},{name:"DIT时长",key:"ditOfTime"},{name:"DTP时长",key:"dtpOfTime"},{name:"DRT时长",key:"drtOfTime"},{name:"急诊接诊医生",key:"emergencyDoctor"},{name:"急诊接诊护士",key:"emergencyNurse"},{name:"溶栓医生",key:"thrombolysisDoctor"},{name:"介入医生",key:"interventionalDoctor"}])) },
},
created(){
var that=this;
that.ChangeSetTableHead();
let code=that.userInfo.hospitalCode;
let Name=that.userInfo.hospitalName;
var HosLis=[{code:code,Name:Name}];
that.roleId=that.userInfo.roleId;
// that.roleId=2;
var HosLis=[];
var params={area:''};var code,Name;
if(that.roleId==2){
code=that.userInfo.hospitalCode;
Name=that.userInfo.hospitalName;
HosLis=[{code:code,Name:Name}];
that.searchForm.hospitalCode=code;
queryHospitalList({}).then((res)=>{
that.hospitalList=HosLis;
}else if(that.roleId==3){
params.area=that.userInfo.area;
}
queryHospitalList(params,'',params.area).then((res)=>{
if(res.msg==201){
var hospitalList=(Array.isArray(res.respData)?(res.respData):[]).map(function(item){
return Object.freeze({ code:item.hospitalCode, Name:item.hospitalName });
});
let flag=hospitalList.some(function(c){return c.code==code;});
let flag=(that.roleId==2)&&(!(hospitalList.some(function(c){return c.code==code;})));
if(!flag){
that.hospitalList=Object.freeze((HosLis).concat(hospitalList))
}else{
......@@ -94,37 +105,61 @@ export default {
})
},
mounted() {
this.search()
},
methods: {
BTNClickSearch(){
this.pageNum=1;
this.search();
},
changeSelectFileFn(e){
var that=this;
var File=e.target.files[0]
var formData=new FormData();
formData.append('file',File);
formData.append('productType',that.activeTab);
uploadExcel(formData).then(res=>{
that.$refs.FileInputEl.value="";
if (res.msg == 201) {
that.$message.success(res.content||'上传成功');
that.search();
} else {
that.$message.error(res.content||"上传失败");
}
})
},
ChangeSetTableHead(){
var that=this;
var kys1=[{name:"门诊ID",key:"certificateNo"},{name:"姓名",key:"name"},{name:"性别",key:"gender"},{name:"年龄",key:"age"},{name:"电话",key:"phoneNo"},{name:"住院ID",key:"inPatientId"},{name:"发病时间",key:"attackTime"},{name:"初步诊断",key:"firstDiagnosis"},{name:"诊断时间",key:"diagnosisTime"},{name:"来院方式",key:"toHospitalWay"},{name:"到达医院大门时间",key:"toHospitalTime"},{name:"首次医疗接触时间",key:"firstContactTime"},{name:"首诊医师接诊时间",key:"firstDoctorContactTime"},{name:"转出医院名称",key:"transferOutHospitalName"},{name:"转出医院入门时间",key:"transOutIntoTime"},{name:"转出医院出门时间",key:"transOutLeaveTime"},{name:"心电图采集时间",key:"ecgCollectTime"},{name:"心电图诊断时间",key:"ecgDiagTime"},{name:"肌钙蛋白抽血时间",key:"bloodDrawingTime"},{name:"肌钙蛋白报告时间",key:"bloodReportTime"},{name:"肌钙蛋白检测值",key:"checkValue"},{name:"请会诊时间",key:"consulationTime"},{name:"会诊到达时间",key:"consulationArriveTime"},{name:"抗血小板治疗药物",key:"antiplateMedical"},{name:"抗血小板给药时间",key:"antiplateTime"},{name:"抗凝给药时间",key:"anticoaTime"},{name:"再灌注措施",key:"refersionMessure"},{name:"开始知情同意",key:"startInformedConsent"},{name:"签署知情同意",key:"signInformedConsent"},{name:"启动导管室时间",key:"startCatherRoomTime"},{name:"激活导管室时间",key:"activeCatherRoomTime"},{name:"导丝通过时间",key:"guideWirePassTime"},{name:"溶栓开始时间",key:"startThrombolysisTime"},{name:"溶栓结束时间",key:"endThrombolysisTime"},{name:"出院诊断",key:"dischargeDiagnosis"}];
var kys2=[{name:"序号",key:"idx"},{name:"住院号",key:"hospitalId"},{name:"病患姓名",key:"name"},{name:"性别",key:"gender"},{name:"年龄",key:"age"},{name:"初步诊断",key:"firstDiagnosis"},{name:"诊断时间",key:"diagnosisTime"},{name:"治疗类型",key:"treatmentType"},{name:"住院时间",key:"inHospitalTime"},{name:"入院途径",key:"admissionRoute"},{name:"是否在院卒中",key:"isInHospitalStroke"},{name:"来院方式",key:"toHospitalWay"},{name:"发病时间",key:"attackTime"},{name:"患者到院时间",key:"toHospitalTime"},{name:"患者到达急诊科时间",key:"arrivedEmergencyTime"},{name:"申请会诊时间",key:"consulationTime"},{name:"卒中团队到达急诊科时间",key:"stokeArrivedEmergencyTime"},{name:"患者离开急诊科时间",key:"leaveEmergencyTime"},{name:"患者到达CT时间",key:"arriveCtTime"},{name:"患者到达MRI时间",key:"arriveMrTime"},{name:"获得CT结果时间",key:"getCtTime"},{name:"获得MRI结果时间",key:"getMriTime"},{name:"抽血开始时间(院内首次)",key:"firstBloodTime"},{name:"血液样本送达检验科时间",key:"sampleDeliverLabTime"},{name:"获得血常规时间",key:"bloodRoutineTime"},{name:"获取凝血常规时间",key:"coagulationRoutineTime"},{name:"获取肾功能结果时间",key:"renalFunctionTime"},{name:"获取电解质结果时间",key:"electrolyteTime"},{name:"开始溶栓知情同意",key:"startInformedConsent"},{name:"签署知情同意时间",key:"signInformedConsent"},{name:"首剂给药时间",key:"firstMedicalTime"},{name:"开始穿刺时间",key:"startPunctureTime"},{name:"穿刺成功时间",key:"successPunctureTime"},{name:"血管再通时间",key:"recanalizationTime"},{name:"出院时间",key:"dischargeTime"},{name:"急诊科耗时",key:"emergencyCostTime"},{name:"发病时长",key:"durationOfOnset"},{name:"患者入院-抽血开始时间耗时",key:"admissionDrawingTime"},{name:"抽血开始时间-血液送达检验科耗时",key:"drawingLabTime"},{name:"血液样本送达检验科-血常规结果时间(≤10分钟)",key:"labGetRoutineTime"},{name:"DNT时长",key:"dntOfTime"},{name:"DIT时长",key:"ditOfTime"},{name:"DTP时长",key:"dipOfTime"},{name:"DRT时长",key:"drtOfTime"},{name:"急诊接诊医生",key:"emergencyDoctor"},{name:"急诊接诊护士",key:"emergencyNurse"},{name:"溶栓医生",key:"thrombolysisDoctor"},{name:"介入医生",key:"interventionalDoctor"}];
var tableHead=that.activeTab==1?kys1:kys2;
var head=tableHead.map(function(oc,index){
var tableHead=that.TableField;
var head=tableHead.map(function(item,index){
var oc={name:item.name,key:item.key}
oc.fixed=!!(index<2);
oc.sortable=false;
oc.width=null;
if(oc.name.indexOf('姓名')!=-1){
oc.width='150';
};
if((oc.name.indexOf('时间')!=-1)&&(oc.name.indexOf('-')!=-1)){
oc.width='100';
}else if(oc.name.indexOf('时间')!=-1){
oc.width='165';
};
if(oc.name=='门诊ID'){
oc.width='100';
}
if(oc.name=='年龄'){
}else if(oc.name=='电话'){
oc.width='120';
}else if(oc.name=='年龄'){
oc.width='80';
}
if(oc.name=="性别"){
}else if(oc.name=="性别"){
oc.width='80';
oc.formatter=((row, column, cellValue, index)=>{ return cellValue === 1 ? '男' : cellValue === 2 ? '女' : '' });
oc.formatter=(function(row, column, cellValue, index){
if(cellValue =='1'){ return `男` }else if(cellValue =='2'){ return `女` }else{ return `未知` };
});
}else if(oc.name=='出院诊断'){
oc.width='850';
}
if(oc.name.indexOf('时间')!=-1){
oc.width='180';
};
return Object.freeze(oc);
});
// console.log(head)
that.tableData.head=Object.freeze(head);
},
changeTab(num){
......@@ -132,18 +167,41 @@ export default {
this.search();
},
getTableData() {
this.tableData.loading = true;
this.ChangeSetTableHead();
var that=this;
that.tableData.loading = true;
that.ChangeSetTableHead();
var Code=that.searchForm.hospitalCode;
var startDate="",endDate="";
if(that.searchForm.rangeDate&&Array.isArray(that.searchForm.rangeDate)){
startDate=(that.searchForm.rangeDate)[0];
endDate=(that.searchForm.rangeDate)[1];
}
var result=that.hospitalList.find(function(co){ return co.code==Code;});
var hName="";
if(result){ hName=result.Name; }
const params = {
patientType: this.searchForm.patientType,
pageNo: this.pageNum,
pageSize: this.pageSize
productType:that.activeTab,
startDate:startDate,
endDate:endDate,
hospitalCode:Code,
hospitalName:hName,
pageNo: that.pageNum,
pageSize: that.pageSize
};
if(that.roleId==3){
params.area=that.userInfo.area;
}
queryIntegrationList(params).then((res) => {
if (res.msg == 201) {
this.dealTableResponse(res)
} else {
this.$message.error(res.content)
getList(params).then((res)=>{
if(res.msg==201){
var tableField=that.TableField;
res.respData.list=(Array.isArray(res.respData.list)?(res.respData.list):[]).map(function(row){
var rowobj={};
tableField.forEach(function({key}){ rowobj[key]=(row[key])?(row[key]):``;(row[key]===undefined)?(console.log("列表数据缺少字段:"+key )):null })
return rowobj;
});
that.dealTableResponse(res)
}else{
that.$message.error(res.content)
}
})
},
......@@ -172,6 +230,9 @@ export default {
<style lang="scss" scoped>
.InHosFirstAid{
.el-input.is-disabled .el-input__inner{
color:#606266;
}
.tab-btn{
font-size:0;
button.el-button{
......@@ -199,5 +260,9 @@ export default {
padding:20px;
}
}
</style>
<style lang="scss">
.InHosFirstAid_form .el-input.is-disabled .el-input__inner{
color:#606266;
}
</style>
\ No newline at end of file
......@@ -118,9 +118,9 @@
<div class="p-title">
<span>区域院前急救统计</span>
<div class="right-Box">
<el-button type="text" @click="ChangeDateCharts(1)">近三个月</el-button>
<el-button type="text" @click="ChangeDateCharts(1)" :class="{sel:activePanel=='v1'}">近三个月</el-button>
<div class="vh">|</div>
<el-button type="text" @click="ChangeDateCharts(2)">近一年</el-button>
<el-button type="text" @click="ChangeDateCharts(2)" :class="{sel:activePanel=='v2'}">近一年</el-button>
</div>
</div>
<div>
......@@ -136,7 +136,7 @@
<div class="padding-right12">
<div class="panel">
<div class="p-title">
<span>院前急救转运平均时间</span>
<span>院前急救转运平均时间(分钟)</span>
</div>
<div>
<div class="c50_charts" ref="c50Bar"></div>
......@@ -204,12 +204,9 @@ export default{
}
},
mounted(){
this.$nextTick(()=>{
this.getv1Data();
this.getv2Data();
this.$nextTick(()=>{
// this.barChartsInit();
this.drawc50Bar();
this.drawc50Pie();
});
},
methods:{
......@@ -224,7 +221,6 @@ export default{
}
})
},
getv2Data(){
var that=this;
var d=new Date();var yar=d.getFullYear(),moth=d.getMonth()+1,dey=d.getDate();moth=(moth<10)?('0'+moth):moth;dey=(dey<10)?('0'+dey):dey;
......@@ -232,7 +228,7 @@ export default{
businessTeamStatistics(params).then((res)=>{
if (res.msg == 201) {
var areaPreTotal=that.gv(res.respData.areaPreTotal,[]);
var kys=['chestTotal','strokeTotal','traumaTotal','burnTotal'];
var kys=['chestCount','strokeCount','traumaCount','burnCount'];
var result=areaPreTotal.reduce(function(prv,cur,i,arr){
prv.Names.push(cur.areaStr);
kys.forEach((ky,j)=>{ prv.arr[j].push(cur[ky]||0) })
......@@ -261,7 +257,7 @@ export default{
traumaCount:that.gv(p2.traumaCount,'0'),
burnCount:that.gv(p2.burnCount,'0'),
};
var kys=['chestTotal','strokeTotal','traumaTotal','burnTotal'];
var kys=['chestCount','strokeCount','traumaCount','burnCount'];
var areaPreTotal=that.gv(respData.areaPreTotal,[]);
var result=areaPreTotal.reduce(function(prv,cur,i,arr){
prv.Names.push(cur.areaStr);
......@@ -283,7 +279,7 @@ export default{
var Oc={datakey:'BarData',dom:'BarEl',scBox:'BarScBox',scline:'BarScLine',vlen:'persw'};
var drData=that[(Oc.datakey+that.activePanel)];
var Namelis=drData.Namelis;
if(Namelis.length=='0'){ return; }
// if(Namelis.length=='0'){ return; }
var Arr=drData.Arr;
var Wh=(that.$refs[(Oc.scBox)]).offsetWidth;
var ViLen=Math.ceil((Wh-150)/200);
......@@ -316,8 +312,9 @@ export default{
},
drawBarEchart(dom,NameLis,arr){
var that=this;
let myChart = that.getCtx(dom)
var option ={
let myChart = that.getCtx(dom);
if(NameLis.length===0){ myChart.clear(); };
var opts ={
grid:{
left:40, // 默认10%,给24就挺合适的。
top:60, // 默认60
......@@ -443,8 +440,7 @@ export default{
}
]
};
//console.log(option)
myChart.setOption(option);
myChart.setOption(opts);
},
drawc50Bar(data){
var that=this;
......@@ -541,7 +537,7 @@ export default{
};
myChart.setOption(opts);
},
ChangeDateCharts(num){this.activePanel=(num==1)?'v1':'v2';this.barChartsInit();},
ChangeDateCharts(num){this.activePanel=`v${num}`;this.barChartsInit();},
getCtx(refName){ return echarts.init((this.$refs)[refName]); }
}
}
......@@ -577,6 +573,10 @@ export default{
button{
padding-top:1px;
padding-bottom:1px;
color:#444444;
&.sel{
color:#4294EA;
}
}
}
}
......
......@@ -18,7 +18,7 @@
<img src="@/assets/icon_img/v2.png" alt="" />
</div>
<div class="txt">
<div class="type-desc">胸痛中心</div>
<div class="type-desc">卒中中心</div>
<div class="num-desc"><span>{{strokeTotal}}</span></div>
</div>
</div>
......@@ -27,7 +27,7 @@
<img src="@/assets/icon_img/v3.png" alt="">
</div>
<div class="txt">
<div class="type-desc">胸痛中心</div>
<div class="type-desc">创伤中心</div>
<div class="num-desc"><span>{{traumaTotal}}</span></div>
</div>
</div>
......@@ -36,7 +36,7 @@
<img src="@/assets/icon_img/v4.png" alt="">
</div>
<div class="txt">
<div class="type-desc">胸痛中心</div>
<div class="type-desc">烧伤中心</div>
<div class="num-desc"><span>{{burnTotal}}</span></div>
</div>
</div>
......@@ -47,11 +47,11 @@
</div>
<div class="w50">
<div class="div-charts">
<div class="charts-title"> 2021年武汉市各中心授牌数量({{p1itemTotal}}) <span>{{descTxt}}<i :class="[addOrReduce==1?`el-icon-top`:`el-icon-bottom`,`bold`]"></i></span></div>
<div class="charts-title">{{newyear}}年武汉市各中心授牌数量({{p1itemTotal}}) <span :class="{down:addOrReduce!=1}">{{descTxt}}<i :class="[addOrReduce==1?`el-icon-top`:`el-icon-bottom`,`bold`]"></i></span></div>
<div class="charts-cont" ref="pie01"></div>
</div>
<div class="div-charts">
<div class="charts-title"> 2021年武汉市各中心授牌数量({{p2itemTotal}})</div>
<div class="charts-title">{{oldyear}}年武汉市各中心授牌数量({{p2itemTotal}})</div>
<div class="charts-cont" ref="pie02"></div>
</div>
</div>
......@@ -78,7 +78,10 @@ import {constructionStatistics} from '@/api/hospital';
export default{
name: 'overviewIndex',
data() {
var year=(new Date()).getFullYear(),oldYear=year-1;
return {
oldyear:oldYear,
newyear:year,
chestTotal:'',
strokeTotal:'',
traumaTotal:'',
......@@ -619,6 +622,9 @@ export default{
span{
font-size:16px;
color:#3CBF2D;
&.down{
color:red;
}
.bold{
font-weight:bold;
}
......
......@@ -7,7 +7,7 @@
<div class="page-runStatis">
<el-form :inline="true" :model="searchForm" ref="searchForm" size="small">
<el-form-item prop="searchDate" label="查询日期">
<el-date-picker v-model="searchForm.searchDate" type="year" placeholder="请选择日期"></el-date-picker>
<el-date-picker v-model="searchForm.searchDate" type="year" placeholder="请选择年份" value-format="yyyy" format="yyyy"></el-date-picker>
</el-form-item>
<el-form-item prop="hospitalCode" label="选择医院">
<el-select v-model="searchForm.hospitalCode" placeholder="请输入医院名称" filterable remote reserve-keyword :remote-method="debounceFn(getHospitalLis,200)" :loading="loading">
......@@ -21,12 +21,12 @@
</el-form>
<div class="panel-Box padding_bottom45">
<div class="charts-box">
<div class="charts" ref="lineBar"></div>
<div class="charts1" ref="lineBar"></div>
</div>
</div>
<div class="panel-Box">
<div class="charts-box">
<div class="charts" ref="vhBar"></div>
<div class="charts2" ref="vhBar"></div>
<div class="scroll_box" ref="BarScBox" @scroll="SCOllBoxFn(`BarData`,`vhBar`,`BarScBox`,`BarScLine`,`persw`)">
<div class="scroll_line" ref="BarScLine"></div>
</div>
......@@ -38,6 +38,7 @@
<script>
import * as echarts from 'echarts';
import {businessOperationStatistics,queryHospitalList} from '@/api/hospital.js';
import { mapGetters } from 'vuex';
export default{
name:"runStatis",
data(){
......@@ -52,7 +53,8 @@ export default{
hospitalList:[],
lineBar:{
nameLis:[],
Arr:[]
Arr:[],
TLis:[]
},
BarData:{
Namelis:[
......@@ -94,15 +96,27 @@ export default{
},
created(){
var that=this;
let code=that.userInfo.hospitalCode;
let Name=that.userInfo.hospitalName;
// that.hospitalList=[{Name:Name,code:code}];
// that.searchForm.hospitalCode=code;
that.getServeData();
that.getHospitalLis();
console.log("this.$el",this.$el)
},
computed:{
...mapGetters(['userInfo'])
},
beforeMount() {
console.log("this.$el",this.$el)
},
mounted(){
this.$nextTick(()=>{
this.ISmounted=true;
console.log("this.$el",this.$el)
if(this.ISDataComplate){
that.drawLineBar(this.lineBar.nameLis,this.lineBar.Arr);
that.drawBar();
try{ that.drawLineBar(this.lineBar.nameLis,this.lineBar.Arr,this.lineBar.TLis); }catch(e){console.log(e);}
try{ that.drawBar(); }catch(e){console.log(e);}
}else{
console.log("dom挂载完成,但数据没准备好");
}
......@@ -112,7 +126,7 @@ export default{
gv(value,dValue){ return (value)?value:dValue },
debounceFn(fn,delay){
let timer = null
return function(args) {
return function(args){
if(timer){
clearTimeout(timer)
}
......@@ -153,19 +167,22 @@ export default{
fillServeData(respData){
var that=this;
var result=that.gv(respData.hospitalVoList,[]).reduce(function(prv,cur,index,arr){
prv.nameLis.push(cue.hospitalName);
prv.dataLis.push(cue.systemCount);
prv.nameLis.push(cur.hospitalName);
prv.dataLis.push(cur.systemCount);
prv.totalLis.push(cur.totalCount);
return prv;
},{nameLis:[],dataLis:[]});
},{nameLis:[],dataLis:[],totalLis:[]});
that.lineBar.nameLis=Object.freeze(result.nameLis);
that.lineBar.Arr=Object.freeze(result.dataLis);
that.lineBar.TLis=Object.freeze(result.totalLis);
console.log("this.$el",this.$el)
if(that.ISmounted){
that.drawLineBar(result.nameLis,result.dataLis);
try{ that.drawLineBar(result.nameLis,result.dataLis,result.totalLis); }catch(e){ console.log(e); }
}else{
console.log("数据准备好了,但dom没挂在完成")
}
var VoLis=(that.activeTab==1)?(that.gv(respData.chestVoList,[])):(that.gv(respData.strokeVoList,[]))
var kys=(that.activeTab==1)?([`thrombolysisCount`,`operationCount`,`conservativeCount`,`monthTotal`]):([`diagnoseCount`,`sTEMICount`,`nSTEMICount`,`uACount`,`aorticCount`,`pulmonaryCount`,`unAcsCount`,`otherAcsCount`,`giveUpCount`,`otherCount`,`monthTotal`])
var kys=(that.activeTab==1)?([`diagnoseCount`,`sTEMICount`,`nSTEMICount`,`uACount`,`aorticCount`,`pulmonaryCount`,`unAcsCount`,`otherAcsCount`,`giveUpCount`,`otherCount`,`monthTotal`]):([`thrombolysisCount`,`operationCount`,`conservativeCount`,`monthTotal`]);
var oAr=kys.map(function(){return [];});
var result=VoLis.reduce(function(prv,cur,index,arr){
prv.NameLis.push(cur.month);
......@@ -173,11 +190,11 @@ export default{
(prv.arr)[j].push(cur[ky]);
})
return prv;
},{NameLis:[],arr:oAr})
},{NameLis:[],arr:oAr});
that.BarData.Namelis=Object.freeze(result.NameLis);
that.BarData.Arr=Object.freeze(result.arr.map(Object.freeze))
that.BarData.Arr=Object.freeze(result.arr.map(Object.freeze));
if(that.ISmounted){
that.drawBar();
try{ that.drawBar(); }catch(e){ console.log(e); }
}
that.ISDataComplate=true;
},
......@@ -186,9 +203,13 @@ export default{
this.getServeData();
},
resetForm(formName){ this.$refs[formName].resetFields(); },
drawLineBar(NameLis,dataLis){
drawLineBar(NameLis,dataLis,totalLis){
var that=this;
var charts=that.getCtx(`lineBar`);
if(NameLis.length==0){ charts.clear(); };
var maxLen=5;
if(NameLis.length!='0'){ maxLen=Math.max(...(NameLis.map(function(c){return c.length;}))); };
var Left=(maxLen<6)?80:(80+(13*(maxLen-6)));
var title=that.activeTab==1?'胸痛中心上报病历数':'卒中中心上报病历数';
var opts={
title:{
......@@ -201,13 +222,45 @@ export default{
}
},
grid:{
left:150,
left:Left,
top:64,
right:50,
bottom:20,
},
xAxis: {
max: 'dataMax'
max: 'dataMax',
minInterval:1,
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'none',
show: false
},
backgroundColor:'#FFF',
boxShadow:'0 2px 12px 0 rgba(0,0,0,0.1)',
textStyle:{
color:'#444'
},
formatter:function(params){
var st='';var sg=0;var reslt;
for(let s=0;s<params.length;s++){
let itm=params[s];
sg+=itm.value;
st+=`<div style='line-height:25px;'>
<div style='float:left;padding-right:15px;'>
<span style='display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;background-color:${itm.color};'></span>
<span>${itm.seriesName}</span>
</div>
<div style='float:right;color:#000;font-weight:bold;'>${itm.value}</div><br>
</div>`;
}
reslt=`<div style='line-height:30px;'>
<div>${((params[0])["axisValue"])}</div>
</div>`;
reslt+=st;
return `<div style="padding:0 10px 0 10px;">${reslt}</div>`;
}
},
yAxis: {
type: 'category',
......@@ -217,29 +270,46 @@ export default{
axisTick:{
show:false
},
animationDuration: 300,
animationDurationUpdate: 300,
// animationDuration: 300,
// animationDurationUpdate: 300,
max:9 // only the largest 3 bars will be displayed
},
series: [
{
realtimeSort: true,
name: 'X',
// realtimeSort: true,
name: '系统上报人数',
type: 'bar',
barWidth:20,
stack: 'V1',
color:'#4495E6',
// data: [100,200,190,210,250,500,100,200,190,210],
data:dataLis,
label: {
show:true,
position: 'right',
valueAnimation: true
}
// label: {
// show:true,
// position: 'right',
// valueAnimation: true
// }
},
{
// realtimeSort: true,
name: '系统新建人数',
type: 'bar',
barWidth:20,
stack: 'V1',
color:'#8DCA86',
// data: [100,200,190,210,250,500,100,200,190,210],
data:totalLis,
// label: {
// show:true,
// position: 'right',
// valueAnimation: true
// }
}
],
animationDuration: 0,
animationDurationUpdate: 3000,
animationEasing: 'linear',
animationEasingUpdate: 'linear'
// animationDuration: 0,
// animationDurationUpdate: 3000,
// animationEasing: 'linear',
// animationEasingUpdate: 'linear'
};
charts.setOption(opts);
},
......@@ -248,7 +318,7 @@ export default{
var Oc={datakey:'BarData',dom:'vhBar',scBox:'BarScBox',scline:'BarScLine',vlen:'persw'};
var drData=that[(Oc.datakey)];
var Namelis=drData.Namelis;
if(Namelis.length=='0'){ return; }
// if(Namelis.length=='0'){ return; }
var Arr=drData.Arr;
var Wh=(that.$refs[(Oc.scBox)]).offsetWidth;
var barW=(that.activeTab==1)?300:120;
......@@ -423,7 +493,7 @@ export default{
return{
grid:{
left:40, // 默认10%,给24就挺合适的。
top:60, // 默认60
top:90, // 默认60
right:50, // 默认10%
bottom:35, // 默认60
},
......@@ -436,7 +506,7 @@ export default{
},
legend:[
{
top:40,
top:43,
right:100,
itemWidth:12, // 设置宽度
itemHeight:12, // 设置高度
......@@ -448,7 +518,7 @@ export default{
},
data:result.leg1
},{
top:40,
top:43,
right:20,
data:result.leg2
}
......@@ -484,7 +554,7 @@ export default{
drawBarEchart(dom,NameLis,arr,isClear){
var that=this;
var charts=that.getCtx(dom);
if(isClear){ charts.clear(); }
if(isClear||(NameLis.length===0)){ charts.clear(); }
charts.setOption(that.getOpts(NameLis,arr));
},
getCtx(refName){ return echarts.init((this.$refs)[refName]); }
......@@ -540,9 +610,12 @@ export default{
color:rgba(0, 0, 0, 0.87);
}
.charts-box{
.charts{
.charts1{
height:358px;
}
.charts2{
height:428px;
}
.scroll_box{
width:100%;
overflow-x:auto;
......
......@@ -44,76 +44,6 @@ export const LoginByToken = function({
token,
userDto
} = res.respData;
// debugger;
// console.log(parentMenuList[4].secondMenuList[0]);
// parentMenuList[4].secondMenuList.splice(1,0,
// {
// isAvailable: null,
// isCheck: 1,
// isDelete: 0,
// keyName: "overview",
// menuId: 13,
// menuName: "建设概览",
// menuType: 2,
// parentMenuId: 18,
// roleId: 1,
// secondMenuList: null,
// sortId: 2,
// url: "/business/overview"
// },
// {
// isAvailable: null,
// isCheck: 1,
// isDelete: 0,
// keyName: "collStatis",
// menuId: 19,
// menuName: "业务协同统计",
// menuType: 2,
// parentMenuId: 18,
// roleId: 1,
// secondMenuList: null,
// sortId: 3,
// url: "/business/collStatis"
// },
// {
// isAvailable: null,
// isCheck: 1,
// isDelete: 0,
// keyName: "runStatis",
// menuId: 24,
// menuName: "业务运行统计",
// menuType: 2,
// parentMenuId: 18,
// roleId: 1,
// secondMenuList: null,
// sortId: 4,
// url: "/business/runStatis"
// }
// )
// debugger;
/*
parentMenuList[4].secondMenuList.splice(1,0,{
isAvailable: null,
isCheck: 1,
isDelete: 0,
keyName: "InHosFirstAid",
menuId:19,
menuName: "院内急救信息",
menuType: 2,
parentMenuId: 18,
roleId: 1,
secondMenuList: null,
sortId: 2,
url: "/business/inhosfirstaid"
})
parentMenuList.forEach(function(item,index){
console.log(index+" menuId:"+item.menuId+" menuType:"+item.menuType+" parentMenuId:"+item.parentMenuId+" sortId:"+item.sortId);
(Array.isArray(item.secondMenuList)?(item.secondMenuList):[]).forEach(function(lik,i){
console.log(" "+index+'-'+i+"menuId:"+lik.menuId+" menuType:"+lik.menuType+" parentMenuId:"+lik.parentMenuId+" sortId:"+lik.sortId)
})
})
*/
if (res.msg === 201 && parentMenuList && parentMenuList.length > 0) {
await commit(types.SET_MENUMAP, Cache.setMenuMap(parentMenuList))
await commit(types.SET_USERINFO, Cache.setUserInfo(userDto))
......
......@@ -28,7 +28,10 @@ service.interceptors.request.use(
config => {
if (Auth.getLoginInfo()) {
config.headers['token'] = Auth.getLoginInfo()
}
};
if(config.url==`/api/team/importExcel/uploadExcel`){ //上传文件接口
config.headers['productType']=config.data.get('productType');
};
return config
},
err => {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment