当前位置: 首页 > 工具软件 > jSelect > 使用案例 >

iview Select自定义设置全选

夏建木
2023-12-01

select设置全选

<Select v-model="specialModel" multiple @on-change='specialChange'>
    <Option v-for="item in List" :value="item.id" :key="item.id" >{{ item.specialName }}</Option>
</Select>

 

specialChange(val){
	let columnSpecialList=this.columnSpecialList				
	if(val[val.length-1]==0){//点击全选或只剩全选
		if(val.length==1){//只剩全选
			this.specialModel=[]
		}else{//点击全选
			this.specialModel=columnSpecialList.map(i=>{
				return i.id
			})
		}
		this.specialModelTmp=this.specialModel
		this.specialNum=1
	}else if(this.specialNum==0){//specialNum 点击时进入
		let tmp=true
		val.map((item,j)=>{
			if(item==0){//含有全选
				tmp=false
				this.specialModel.splice(j,1)
				this.specialNum=1
			} 
		})
		//选择数==总长度-1  且没有全选
		if(val.length==columnSpecialList.length-1&&tmp&&this.specialModelTmp.indexOf(0)==-1){
			this.specialModel=columnSpecialList.map(i=>{
				return i.id
			})
			this.specialNum=1
			//选择数==总长度-1  且有全选
		}else if(val.length==columnSpecialList.length-1&&tmp&&this.specialModelTmp.indexOf(0)>=0){
			let list=[]
			// specialModelTmp 临存列表像
			this.specialModelTmp.map(i=>{
				let tmp=true
				val.map(j=>{//过滤相同项
					if(i==j){
						tmp=false
					}
				})
				if(tmp){
					list.push(i)
				}
			})
			//仅一个且全选
			if(list.length==1&&list[0]==0){
				this.specialModel=[]
				this.specialNum=1
			}else{
				this.specialNum=0
			}
		}else{
			this.specialNum=0
		}
		this.specialModelTmp=this.specialModel
	}else{
		this.specialNum=0
	}
	this.saveConfigIndex()//选择后请求方法
}

 

 类似资料: