var template = ''
$.ajax('../html/mzfSfzmx.html',{
data: {},
dataType: 'html',
cache: false,
timeout: 60000,
async: false,
error: function(res) {
},
success: function(res) {
template = res
}
})
Vue.component('mzf-sfzmx', {
props: [],
template: template,
data: function() {
return {
mzfSfzmxData:[],
testArr1: [],
testArr2: [],
testArr3: [],
testArr4: [],
testPosition1: 0,
testPosition2: 0,
testPosition3: 0,
testPosition4: 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', 'hospitalName', 'groupName',],
}
},
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.getCopdFollowDetailData()
},
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: {
getCopdFollowDetailData:function() {
var vm = this
vm.loadingTwo = true
var data = {
startTime:this.startTime.format('yyyy-MM-dd'),
endTime:this.endTime.format('yyyy-MM-dd')
}
statisticAPI.getCopdFollowDetailData({
jsonStr:JSON.stringify(data)
}).then(function(res){
if(res.status == 200) {
console.log(res,'sfmx');
vm.loadingTwo = false
vm.mzfSfzmxData = res.data
vm.getSpanArr(vm.mzfSfzmxData)
}
}).catch(function(err){
vm.loadingTwo = false
})
},
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.getCopdFollowDetailData()
},
// 取消
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.exportCopdFollowDetailData({
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(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];
}
}
},
}
})