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 {