var template = '' $.ajax('../html/dejdsjyyRzjd.html',{ data: {}, dataType: 'html', cache: false, timeout: 60000, async: false, error: function(res) { }, success: function(res) { template = res } }) Vue.component('mzf-dejdsjyy-rzjd', { props: [], template: template, data: function() { return { dejdsjyyRzDate:[], testArr1: [], testArr2: [], testPosition1: 0, testPosition2: 0, list:[], startTime:new Date('2023','05','26'), endTime:new Date(), regionList:[], regionData:[ {label:'全市',id:'1',type:'1'} ], regionListList:[], tertiaryHospitalsData:[ {label:'全部',id:'1',type:'2'} ], communityHospitalsList:[], communityHospitalsData:[ {label:'全部',id:'1',type:'3'} ], groupingList:[], groupingData:[ {label:'全部',id:'1',type:'4'} ], administrationStatusList:[], administrationStatusData:[ {label:'全部',id:'1',type:'5'} ], show:false, showTwo:false, showThree:false, currentPage:1, currentSize:10, datatotal:0, //总数 loadingTwo:false, setDisabled:{ disabledDate:function(time) { return time.getTime() < new Date('2023','05','26') || time.getTime() > Date.now(); } }, s:'', e:'', mergeObj: {}, mergeArr: ['areaName', 'gradeHospitalName', 'value','communityHospitalName','targetEntryCont','v1AllCount','firstV1FinishDate','v1MonthCount','entryRate'], } }, created: function(){ this.s = this.startTime.format('yyyy-MM-dd') this.e = this.endTime.format('yyyy-MM-dd') this.list.unshift({type:'0',id:'time',label:this.s +"~"+ this.e}) this.getGradeHospitalEntryData() }, watch:{ 'startTime':{ handler:function(o) { if(!o) { this.list.splice(0,1) } }, deep: true, immediate: true }, 'endTime':{ handler:function(o) { if(!o) { this.list.splice(0,1) } }, deep: true, immediate: true }, }, methods: { getGradeHospitalEntryData:function() { var vm = this vm.loadingTwo = true var data = { startTime:this.startTime.format('yyyy-MM-dd'), endTime:this.endTime.format('yyyy-MM-dd') } statisticAPI.getGradeHospitalEntryData({ jsonStr:JSON.stringify(data) }).then(function(res){ if(res.status == 200) { console.log(res,'入组随访计划'); vm.loadingTwo = false // vm.dejdsjyyRzDate = res.data vm.dejdsjyyRzDate= vm.mergeArrays(res.data.data01,res.data.data02) console.log('我是第二阶段三级医院入组进度',vm.dejdsjyyRzDate) vm.getSpanArr(vm.dejdsjyyRzDate) } }).catch(function(err){ vm.loadingTwo = false }) }, //合并新数组 mergeArrays:function(array1, array2) { var mergedArray = []; array1.forEach(function(item1,index){ array2.slice(index*3,index*3+3).forEach(function(item2){ var mergedObj = Object.assign({}, item1, item2, { newDetail: 'Detail ' + i }); mergedArray.push(mergedObj); }) }) return mergedArray; }, startTimeChange:function(o) { if(!this.list[0] || this.list[0].type!=0) { this.list.unshift({type:'0',id:'time',label:o.format('yyyy-MM-dd') +"~"+ this.endTime.format('yyyy-MM-dd')}) }else{ this.list[0].label = o.format('yyyy-MM-dd') +"~"+ this.endTime.format('yyyy-MM-dd') } }, endTimeChange:function(o) { if(!this.list[0] || this.list[0].type!=0) { this.list.unshift({type:'0',id:'time',label:this.startTime.format('yyyy-MM-dd') +"~"+ o.format('yyyy-MM-dd')}) }else{ this.list[0].label = this.startTime.format('yyyy-MM-dd') +"~"+ o.format('yyyy-MM-dd') } }, deleteClick:function(item) { if(item.id == "time") { this.startTime = '' this.endTime = '' this.list.splice(0,1) } var index = this.list.findIndex(function(v){ return item.id == v.id }) this.list.splice(index,1) }, // 下一页 上一页 handleCurrentChange:function(val) { var vm = this vm.currentPage = val }, change:function(val) { this.list = this.list.concat(val) }, // 确定 confirm:function() { this.getGradeHospitalEntryData() }, // 取消 // cancel:function() { // this.startTime = new Date('2023','05','26') // this.endTime = new Date() // if(!this.list[0] || this.list[0].type!=0) { // this.list.unshift({type:'0',id:'time',label:this.startTime.format('yyyy-MM-dd') +"~"+ this.endTime.format('yyyy-MM-dd')}) // }else{ // this.list[0].label = this.startTime.format('yyyy-MM-dd') +"~"+ this.endTime.format('yyyy-MM-dd') // } // }, // 导出 exportHandle:function() { var vm = this vm.loadingTwo = true var data = { startTime:this.startTime.format('yyyy-MM-dd'), endTime:this.endTime.format('yyyy-MM-dd') } var jsonStr = JSON.stringify(data) statisticAPI.exportGradeHospitalEntryData({ jsonStr: encodeURIComponent(jsonStr) },'慢阻肺第二阶段三级医院入组进度.xls').then(function(res){ vm.loadingTwo = false }) }, getSpanArr(data) { this.mergeArr.forEach((key, index1) => { var count = 0; // 用来记录需要合并行的起始位置 this.mergeObj[key] = []; // 记录每一列的合并信息 data.forEach((item, index) => { // index == 0表示数据为第一行,直接 push 一个 1 if(index === 0) { this.mergeObj[key].push(1); } else { // 判断当前行是否与上一行其值相等 如果相等 在 count 记录的位置其值 +1 表示当前行需要合并 并push 一个 0 作为占位 if(key==='v1MonthCount'||key==='targetEntryCont'||key==='firstV1FinishDate'||key==='v1AllCount'||key==='entryRate'){ if(item[key] === data[index - 1][key] && this.mergeObj[key][count]%3!=0) { this.mergeObj[key][count] += 1; this.mergeObj[key].push(0); } else { // 如果当前行和上一行其值不相等 count = index; // 记录当前位置 this.mergeObj[key].push(1); // 重新push 一个 1 } }else{ if(item[key] === data[index - 1][key] ) { this.mergeObj[key][count] += 1; this.mergeObj[key].push(0); } else { // 如果当前行和上一行其值不相等 count = index; // 记录当前位置 this.mergeObj[key].push(1); // 重新push 一个 1 } } } }) }) }, //得到行、列的合并值 objectSpanMethod: function({row, column, rowIndex, columnIndex}) { if(this.mergeArr.indexOf(column.property) !== -1) { // 判断其值是不是为0 if(this.mergeObj[column.property][rowIndex]) { return [this.mergeObj[column.property][rowIndex], 1] } else { // 如果为0则为需要合并的行 return [0, 0]; } } }, renderHeadeRexpert: function(h, item) { var index = item.$index return [ index=='2'?'目标V2入组例数':index=='3'?'首例V1入筛时间(YYYY/MM/DD)':index=='7'?'首例V2入组时间(YYYY/MM/DD)':index=='10'?'入组完成率':'', h( 'el-tooltip', { props: { content: (function() { return index=='2'?'即目标入组例数(与管理目标数一致)':index=='3'?'完成V1的提交时间,即“第一例完成V1并成功纳入筛选期的访视日期':index=='7'?'查询第一个入组的时间(访视2触发入组,统计第一个做访视2的患者,且是完成访视2提交的时间。)':index=='10'?'入组完成率=已入组/目标V2入组例数':'' })(), placement: 'top' } }, [ h('span', { class: { 'el-icon-question': true } }) ] ) ] }, } })