@@ -108,7 +116,15 @@
'stats-container-half': category.layout === 'half'
}">
-
+
+
+
+
@@ -274,13 +290,13 @@ export default {
label: '跟班学员数',
cardClass: 'student-card-3'
},
- // {
- // key: 'company_ganbu_total',
- // icon: 'el-icon-s-check',
- // value: '0',
- // label: '全市干部参与数',
- // cardClass: 'student-card-4'
- // },
+ {
+ key: 'company_ganbu_total',
+ icon: 'el-icon-s-check',
+ value: '0',
+ label: '全市干部参与企业',
+ cardClass: 'student-card-4'
+ },
{
key: 'company_join_total',
icon: 'el-icon-s-promotion',
@@ -408,7 +424,9 @@ export default {
uniquePeople: 0
},
// 三个全覆盖手动修改数据
- threeCoverageManualData: {}
+ threeCoverageManualData: {},
+ // 统计元数据
+ statistics_metadata: {}
}
},
watch: {
@@ -985,9 +1003,17 @@ export default {
this.regionSummary = { totalPeople: 0, uniquePeople: 0 }
}
+ // 保存统计元数据
+ if (data && data.statistics_metadata) {
+ this.statistics_metadata = data.statistics_metadata
+ } else {
+ this.statistics_metadata = {}
+ }
+
console.log('统计数据已更新:', this.statsCategories)
console.log('课程分类明细数据已更新:', this.courseDetailData)
console.log('区域明细数据已更新:', this.regionData)
+ console.log('统计元数据:', this.statistics_metadata)
},
// 获取课程体系列表
@@ -1163,6 +1189,40 @@ export default {
// 获取手动修改的值
getManualValue(key) {
return this.threeCoverageManualData[key] || '0'
+ },
+ // 检查是否有元数据
+ hasMetadata(key) {
+ return key && this.statistics_metadata && this.statistics_metadata[key]
+ },
+ // 显示统计规则信息
+ showMetadataInfo(key, label) {
+ if (!this.hasMetadata(key)) {
+ return
+ }
+
+ const metadata = this.statistics_metadata[key]
+ const from = metadata.from || '暂无统计规则说明'
+ const verify = metadata.verify || '暂无验证方式说明'
+ const title = label || '统计说明'
+
+ this.$alert(
+ `
+
+ 统计规则:
+ ${from}
+
+
+ 验证方式:
+ ${verify}
+
+
`,
+ title,
+ {
+ dangerouslyUseHTMLString: true,
+ confirmButtonText: '确定',
+ customClass: 'stats-metadata-dialog'
+ }
+ )
}
}
}
@@ -1375,19 +1435,28 @@ export default {
}
}
-.stats-download {
+.stats-actions {
position: absolute;
top: 8px;
right: 8px;
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ z-index: 3;
+}
+
+.stats-download,
+.stats-info {
font-size: 0.9rem;
color: rgba(255, 255, 255, 0.8);
cursor: pointer;
- transition: color 0.2s ease;
- z-index: 3;
+ transition: all 0.2s ease;
}
-.stats-download:hover {
+.stats-download:hover,
+.stats-info:hover {
color: #fff;
+ transform: scale(1.1);
}
.stats-icon {
@@ -1634,4 +1703,15 @@ export default {
}
}
}
+
+/* 统计元数据弹窗样式 */
+::v-deep .stats-metadata-dialog {
+ .el-message-box__message {
+ padding: 10px 0;
+ }
+
+ .el-message-box__content {
+ padding: 20px;
+ }
+}
diff --git a/src/views/stockCompany/components/addStockCompany.vue b/src/views/stockCompany/components/addStockCompany.vue
index 8cc3c15..4aaff02 100644
--- a/src/views/stockCompany/components/addStockCompany.vue
+++ b/src/views/stockCompany/components/addStockCompany.vue
@@ -85,6 +85,7 @@
id: '',
selectCompanyVisible: false,
form: {
+ company_id: '',
company_name: '',
stock_date: '',
enrollment_date: '',
@@ -128,6 +129,7 @@
this.selectCompanyVisible = true
},
handleCompanySelect(data) {
+ this.form.company_id = data.company_id
this.form.company_name = data.company_name
this.form.enrollment_date = data.enrollment_date
}
@@ -141,6 +143,7 @@
} else {
this.id = ''
this.form = {
+ company_id: '',
company_name: '',
stock_date: '',
enrollment_date: '',
diff --git a/src/views/stockCompany/components/selectCompany.vue b/src/views/stockCompany/components/selectCompany.vue
index 9656985..e7d5d8a 100644
--- a/src/views/stockCompany/components/selectCompany.vue
+++ b/src/views/stockCompany/components/selectCompany.vue
@@ -109,8 +109,8 @@
v-for="(courseSign, cIdx) in user.course_signs"
:key="cIdx"
class="course-item"
- :class="{ 'selected': selectedCourse && selectedCourse.company_name === scope.row.company_name && selectedCourse.userIndex === uIdx && selectedCourse.courseIndex === cIdx }"
- @click="handleSelectCourse(scope.row.company_name, user, courseSign, uIdx, cIdx)">
+ :class="{ 'selected': selectedCourse && selectedCourse.company_id === scope.row.id && selectedCourse.userIndex === uIdx && selectedCourse.courseIndex === cIdx }"
+ @click="handleSelectCourse(scope.row, user, courseSign, uIdx, cIdx)">
{{ courseSign.course && courseSign.course.name ? courseSign.course.name : '-' }}
- {{ courseSign.course && courseSign.course.start_date ? courseSign.course.start_date : '-' }}
@@ -313,19 +313,21 @@ export default {
this.page = val
this.getList()
},
- handleSelectCourse(companyName, user, courseSign, userIndex, courseIndex) {
+ handleSelectCourse(company, user, courseSign, userIndex, courseIndex) {
const enrollmentDate = courseSign.course && courseSign.course.start_date ? courseSign.course.start_date : ''
this.selectedCourse = {
- company_name: companyName,
+ company_id: company.id,
+ company_name: company.company_name,
enrollment_date: enrollmentDate,
userIndex,
courseIndex
}
- // 触发选择事件,传递企业名称和入学时间
+ // 触发选择事件,传递企业ID、企业名称和入学时间
this.$emit('select', {
- company_name: companyName,
+ company_id: company.id,
+ company_name: company.company_name,
enrollment_date: enrollmentDate
})
diff --git a/src/views/student/index.vue b/src/views/student/index.vue
index 1ab60e7..6e1c0d5 100644
--- a/src/views/student/index.vue
+++ b/src/views/student/index.vue
@@ -126,6 +126,12 @@