diff --git a/pages/learnPath/allPath.vue b/pages/learnPath/allPath.vue index 7b41b7a..1377212 100644 --- a/pages/learnPath/allPath.vue +++ b/pages/learnPath/allPath.vue @@ -12,7 +12,7 @@ 当前路径 - + 其他路径 @@ -23,7 +23,7 @@ - +
-
@@ -34,7 +34,7 @@
{{ item.isOtherPosition == 1 ? item.positionName + '(' + item.organizationName + ')' : item.positionName }} + - + 职级 @@ -35,7 +35,7 @@ - + {{item.bandCode}} @@ -137,17 +137,69 @@ downList(){ this.bandShow = !this.bandShow }, + isDisabled(index) { + if (this.bandIndexs.length >= 1) { + const firstClickIndex = Math.min(...this.bandIndexs); + const allowedRangeEnd = firstClickIndex + 2; + return index < firstClickIndex || index > allowedRangeEnd; + } + return false; + }, isBand(item,index){ - const indexToRemove = this.bandIndexs.indexOf(index); + if (this.bandIndexs.length >= 1) { + const firstClickIndex = Math.min(...this.bandIndexs); + const allowedRangeEnd = firstClickIndex + 2; + if (index < firstClickIndex || index > allowedRangeEnd) { + return; + } + } + if (this.bandIndexs.length === 3 && this.bandIndexs.includes(index) && this.bandIndexs.indexOf(index) === 1) { + // 删除最后一个元素 + this.bandIndexs.pop(); + this.bandItem = this.bandIndexs.map(index => this.bandLists[index]) + this.bandItem = this.bandItem.sort((a, b) => parseInt(a.bandId, 10) - parseInt(b.bandId, 10)); + this.bandFirst = this.bandItem[0].bandCode + if(this.bandItem && this.bandItem.length > 1){ + this.bandEnd = this.bandItem[this.bandItem.length - 1].bandCode + } + return; + } + let currentIndex = index; + let firstClickIndex = this.bandIndexs[0]; + + if (this.bandIndexs.length === 0) { + this.bandIndexs.push(currentIndex); + return; + } + + // 确保currentIndex和firstClickIndex按顺序排列 + if (currentIndex < firstClickIndex) { + [currentIndex, firstClickIndex] = [firstClickIndex, currentIndex]; + } + + // 检查是否有连续的未选择项,并自动填充 + for (let i = firstClickIndex + 1; i < currentIndex; i++) { + if (!this.bandIndexs.includes(i)) { + this.bandIndexs.splice(this.bandIndexs.indexOf(i - 1) + 1, 0, i); + } + } + + // 添加或移除当前点击的index + const indexToRemove = this.bandIndexs.indexOf(currentIndex); if (indexToRemove !== -1) { - this.bandIndexs.splice(indexToRemove, 1); + this.bandIndexs.splice(indexToRemove, 1); } else { - this.bandIndexs.push(index); + this.bandIndexs.push(currentIndex); } if(this.bandIndexs.length == 0){ + this.bandFirst = '' + this.bandItem = [] return } - console.log(this.bandIndexs,'this.bandIndexs') + if(this.bandIndexs.length == 1){ + this.bandEnd = '' + } + this.bandItem = this.bandIndexs.map(index => this.bandLists[index]) this.bandItem = this.bandItem.sort((a, b) => parseInt(a.bandId, 10) - parseInt(b.bandId, 10)); this.bandFirst = this.bandItem[0].bandCode @@ -162,9 +214,11 @@