element-ui —— select组件多选全选功能


    
    

export default {
    data () {
        return {
          searchJobType: ['ALL_SELECT','TSINPUT', '01', '02', '03', '04', '05', '07', '08', '09', '11', '12'],
          oldSearchJobType: [],
          typeList: [
            {value: 'ALL_SELECT', label: '全部'},
            {value: 'TSINPUT', label: '时序数据采集任务'},
            {value: '01', label: 'RDBMS → HIVE全量'},
            {value: '02', label: 'RDBMS → HDFS全量'},
            {value: '03', label: 'RDBMS → HBASE全量'},
            {value: '04', label: 'HDFS → RDBMS'},
            {value: '05', label: 'HIVE  → RDBMS'},
            {value: '07', label: 'RDBMS → HIVE增量'},
            {value: '08', label: 'RDBMS → HBASE增量'},
            {value: '09', label: '文件 → RDBMS'},
            {value: '11', label: '数据对象 → 数据对象'},
            {value: '12', label: 'FTP服务器 → 文件系统'},
        ]
      }
    },
    methods:{
        changeSelect(val) {
        const allValues = [];
        // 保留所有值
        for (const item of this.typeList) {
          allValues.push(item.value)
        }
        // 用来储存上一次的值,可以进行对比
        const oldVal = this.oldSearchJobType.length === 1 ? this.oldSearchJobType[0] : [];
        // 若是全部选择
        if (val.includes('ALL_SELECT')) this.searchJobType = allValues;
        // 取消全部选中 上次有 当前没有 表示取消全选
        if (oldVal.includes('ALL_SELECT') && !val.includes('ALL_SELECT')) this.searchJobType = [];
        // 点击非全部选中 需要排除全部选中 以及 当前点击的选项
        // 新老数据都有全部选中
        if (oldVal.includes('ALL_SELECT') && val.includes('ALL_SELECT')) {
          const index = val.indexOf('ALL_SELECT');
          val.splice(index, 1); // 排除全选选项
          this.searchJobType = val
        }
        // 全选未选 但是其他选项全部选上 则全选选上 上次和当前 都没有全选
        if (!oldVal.includes('ALL_SELECT') && !val.includes('ALL_SELECT')) {
          if (val.length === allValues.length - 1) this.searchJobType = ['ALL_SELECT'].concat(val)
        }
        // 储存当前最后的结果 作为下次的老数据
        this.oldSearchJobType[0] = this.searchJobType;
      },
}

亲测好用,需要的朋友们直接拿去吧~ 点击查看原文
如果你也经常使用element-ui 可持续关注 Element UI 入坑小结
如果本文对你有所帮助,感谢点一颗小心心,您的支持是我继续创作的动力!

你可能感兴趣的:(element-ui —— select组件多选全选功能)