|
|
|
@ -147,12 +147,14 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="detail-table">
|
|
|
|
<div class="detail-table">
|
|
|
|
<el-table
|
|
|
|
<el-table
|
|
|
|
|
|
|
|
ref="courseDetailTable"
|
|
|
|
|
|
|
|
:key="courseDetailTableKey"
|
|
|
|
:data="courseDetailData"
|
|
|
|
:data="courseDetailData"
|
|
|
|
:span-method="objectSpanMethod"
|
|
|
|
:span-method="objectSpanMethod"
|
|
|
|
:header-cell-style="headerCellStyle"
|
|
|
|
:header-cell-style="headerCellStyle"
|
|
|
|
show-summary
|
|
|
|
show-summary
|
|
|
|
:summary-method="getCourseDetailSummary"
|
|
|
|
:summary-method="getCourseDetailSummary"
|
|
|
|
height="600">
|
|
|
|
max-height="600">
|
|
|
|
<el-table-column prop="courseSystem" label="课程体系" width="200" align="center" fixed="left"></el-table-column>
|
|
|
|
<el-table-column prop="courseSystem" label="课程体系" width="200" align="center" fixed="left"></el-table-column>
|
|
|
|
<el-table-column prop="totalPeople" label="培养人数(未去重)" width="200" align="center"></el-table-column>
|
|
|
|
<el-table-column prop="totalPeople" label="培养人数(未去重)" width="200" align="center"></el-table-column>
|
|
|
|
<el-table-column prop="uniquePeople" label="培养人数(课程体系内已去重)" width="280" align="center"></el-table-column>
|
|
|
|
<el-table-column prop="uniquePeople" label="培养人数(课程体系内已去重)" width="280" align="center"></el-table-column>
|
|
|
|
@ -382,6 +384,7 @@ export default {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
],
|
|
|
|
courseDetailData: [],
|
|
|
|
courseDetailData: [],
|
|
|
|
|
|
|
|
courseDetailTableKey: 0,
|
|
|
|
courseDetailSummary: {
|
|
|
|
courseDetailSummary: {
|
|
|
|
totalPeople: 0,
|
|
|
|
totalPeople: 0,
|
|
|
|
uniquePeople: 0,
|
|
|
|
uniquePeople: 0,
|
|
|
|
@ -397,6 +400,24 @@ export default {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
watch: {
|
|
|
|
|
|
|
|
courseDetailData: {
|
|
|
|
|
|
|
|
handler() {
|
|
|
|
|
|
|
|
// 当数据更新时,强制表格重新计算合计行
|
|
|
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
|
|
if (this.$refs.courseDetailTable) {
|
|
|
|
|
|
|
|
this.courseDetailTableKey += 1
|
|
|
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
|
|
|
this.$refs.courseDetailTable.doLayout()
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, 100)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
deep: true
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
mounted() {
|
|
|
|
mounted() {
|
|
|
|
this.initDates()
|
|
|
|
this.initDates()
|
|
|
|
this.getCourseTypeList()
|
|
|
|
this.getCourseTypeList()
|
|
|
|
@ -423,6 +444,17 @@ export default {
|
|
|
|
this.$message.error('获取课程图表数据失败')
|
|
|
|
this.$message.error('获取课程图表数据失败')
|
|
|
|
} finally {
|
|
|
|
} finally {
|
|
|
|
this.chartLoading = false
|
|
|
|
this.chartLoading = false
|
|
|
|
|
|
|
|
// 数据加载完成后,确保合计行显示
|
|
|
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
|
|
if (this.$refs.courseDetailTable) {
|
|
|
|
|
|
|
|
this.courseDetailTableKey += 1
|
|
|
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
|
|
|
this.$refs.courseDetailTable.doLayout()
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, 200)
|
|
|
|
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
@ -909,9 +941,22 @@ export default {
|
|
|
|
}, { totalPeople: 0, uniquePeople: 0, coursePeople: 0, genban_total: 0, yh_invested_total: 0, company_join_total: 0 })
|
|
|
|
}, { totalPeople: 0, uniquePeople: 0, coursePeople: 0, genban_total: 0, yh_invested_total: 0, company_join_total: 0 })
|
|
|
|
this.courseDetailSummary = summary
|
|
|
|
this.courseDetailSummary = summary
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
|
|
|
|
this.courseDetailData = []
|
|
|
|
this.courseDetailSummary = { totalPeople: 0, uniquePeople: 0, coursePeople: 0, genban_total: 0, yh_invested_total: 0, company_join_total: 0 }
|
|
|
|
this.courseDetailSummary = { totalPeople: 0, uniquePeople: 0, coursePeople: 0, genban_total: 0, yh_invested_total: 0, company_join_total: 0 }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 强制表格重新渲染合计行(延迟执行,确保数据完全更新)
|
|
|
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
|
|
this.courseDetailTableKey += 1
|
|
|
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
|
|
|
if (this.$refs.courseDetailTable) {
|
|
|
|
|
|
|
|
this.$refs.courseDetailTable.doLayout()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}, 150)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
// 更新区域明细统计表格
|
|
|
|
// 更新区域明细统计表格
|
|
|
|
if (data && data.areas && Array.isArray(data.areas)) {
|
|
|
|
if (data && data.areas && Array.isArray(data.areas)) {
|
|
|
|
this.regionData = data.areas.map(item => ({
|
|
|
|
this.regionData = data.areas.map(item => ({
|
|
|
|
@ -1366,6 +1411,8 @@ export default {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.el-table__body-wrapper {
|
|
|
|
.el-table__body-wrapper {
|
|
|
|
|
|
|
|
max-height: calc(600px - 60px) !important;
|
|
|
|
|
|
|
|
overflow-y: auto !important;
|
|
|
|
.el-table__body {
|
|
|
|
.el-table__body {
|
|
|
|
td {
|
|
|
|
td {
|
|
|
|
vertical-align: middle !important;
|
|
|
|
vertical-align: middle !important;
|
|
|
|
@ -1412,7 +1459,12 @@ export default {
|
|
|
|
|
|
|
|
|
|
|
|
/* 合计行样式 */
|
|
|
|
/* 合计行样式 */
|
|
|
|
.detail-table .el-table .el-table__footer-wrapper {
|
|
|
|
.detail-table .el-table .el-table__footer-wrapper {
|
|
|
|
|
|
|
|
display: block !important;
|
|
|
|
|
|
|
|
position: relative !important;
|
|
|
|
|
|
|
|
z-index: 10 !important;
|
|
|
|
.el-table__footer {
|
|
|
|
.el-table__footer {
|
|
|
|
|
|
|
|
display: table !important;
|
|
|
|
|
|
|
|
width: 100% !important;
|
|
|
|
background: rgba(15, 76, 117, 0.05) !important;
|
|
|
|
background: rgba(15, 76, 117, 0.05) !important;
|
|
|
|
|
|
|
|
|
|
|
|
td {
|
|
|
|
td {
|
|
|
|
@ -1425,6 +1477,27 @@ export default {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 确保合计行在固定列时也能显示 */
|
|
|
|
|
|
|
|
.detail-table .el-table .el-table__fixed,
|
|
|
|
|
|
|
|
.detail-table .el-table .el-table__fixed-right {
|
|
|
|
|
|
|
|
.el-table__fixed-footer-wrapper {
|
|
|
|
|
|
|
|
display: block !important;
|
|
|
|
|
|
|
|
.el-table__footer {
|
|
|
|
|
|
|
|
display: table !important;
|
|
|
|
|
|
|
|
width: 100% !important;
|
|
|
|
|
|
|
|
background: rgba(15, 76, 117, 0.05) !important;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
td {
|
|
|
|
|
|
|
|
background: rgba(15, 76, 117, 0.05) !important;
|
|
|
|
|
|
|
|
color: #0f4c75 !important;
|
|
|
|
|
|
|
|
font-weight: 600 !important;
|
|
|
|
|
|
|
|
border-top: 1px solid rgba(15, 76, 117, 0.12) !important;
|
|
|
|
|
|
|
|
border-bottom: 1px solid rgba(15, 76, 117, 0.12) !important;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.table-summary {
|
|
|
|
.table-summary {
|
|
|
|
display: flex;
|
|
|
|
display: flex;
|
|
|
|
flex-wrap: wrap;
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|