|
@ -0,0 +1,262 @@
|
|
|
|
var template = ''
|
|
|
|
$.ajax('../html/dejdsjyysfjdjczqk.html',{
|
|
|
|
data: {},
|
|
|
|
dataType: 'html',
|
|
|
|
cache: false,
|
|
|
|
timeout: 60000,
|
|
|
|
async: false,
|
|
|
|
error: function(res) {
|
|
|
|
},
|
|
|
|
success: function(res) {
|
|
|
|
template = res
|
|
|
|
}
|
|
|
|
})
|
|
|
|
Vue.component('mzf-dejdsjyy-sfjdjczqk', {
|
|
|
|
props: ['type'],
|
|
|
|
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.getFollowAndOutData()
|
|
|
|
},
|
|
|
|
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: {
|
|
|
|
getFollowAndOutData:function() {
|
|
|
|
var vm = this
|
|
|
|
vm.loadingTwo = true
|
|
|
|
var data = {
|
|
|
|
startTime:this.startTime.format('yyyy-MM-dd'),
|
|
|
|
endTime:this.endTime.format('yyyy-MM-dd')
|
|
|
|
}
|
|
|
|
statisticAPI.getFollowAndOutData({
|
|
|
|
jsonStr:JSON.stringify(data)
|
|
|
|
}).then(function(res){
|
|
|
|
if(res.status == 200) {
|
|
|
|
console.log(res,'随访进度及出组情况');
|
|
|
|
vm.loadingTwo = false
|
|
|
|
vm.dejdsjyyRzDate = res.data.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.getFollowAndOutData()
|
|
|
|
},
|
|
|
|
// 取消
|
|
|
|
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.exportFollowAndOutData({
|
|
|
|
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
|
|
|
|
}
|
|
|
|
})
|
|
|
|
]
|
|
|
|
)
|
|
|
|
]
|
|
|
|
},
|
|
|
|
|
|
|
|
}
|
|
|
|
})
|