diff --git a/frontend/src/views/manager/growth-path-management.vue b/frontend/src/views/manager/growth-path-management.vue
index c7c1fee..675720d 100644
--- a/frontend/src/views/manager/growth-path-management.vue
+++ b/frontend/src/views/manager/growth-path-management.vue
@@ -150,22 +150,33 @@
-
-
-
+
+
+
+
+
+ {{ isAllPositionsSelected ? '取消全选' : '全选' }}
+
+
@@ -529,6 +540,11 @@ const totalDuration = computed(() => {
}, 0)
})
+const isAllPositionsSelected = computed(() => {
+ if (!editingPath.value?.position_ids || positions.value.length === 0) return false
+ return editingPath.value.position_ids.length === positions.value.length
+})
+
// ========== 方法 ==========
/**
@@ -820,6 +836,20 @@ const getStageNodes = (stageName: string) => {
return editingPath.value?.nodes?.filter(n => n.stage_name === stageName) || []
}
+/**
+ * 全选/取消全选岗位
+ */
+const handleSelectAllPositions = () => {
+ if (!editingPath.value) return
+ const allIds = positions.value.map(p => p.id)
+ // 如果当前已全选,则取消全选
+ if (editingPath.value.position_ids?.length === allIds.length) {
+ editingPath.value.position_ids = []
+ } else {
+ editingPath.value.position_ids = [...allIds]
+ }
+}
+
/**
* 添加课程
*/
@@ -1056,6 +1086,21 @@ onMounted(() => {
:deep(.el-form-item) {
margin-bottom: 0;
}
+
+ .position-select-wrapper {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+
+ .el-select {
+ flex: 1;
+ }
+
+ .select-all-btn {
+ white-space: nowrap;
+ flex-shrink: 0;
+ }
+ }
}
.stages-section {
@@ -1131,10 +1176,10 @@ onMounted(() => {
// 下方区域
.editor-bottom {
- flex: 1;
+ flex: 2;
display: flex;
gap: 16px;
- min-height: 0;
+ min-height: 400px;
// 左侧课程库 1/3
.course-library-panel {