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
}
})
]
)
]
},
}
})