vue层级选择器多选

来了一个需求,需要层级多选器,二级需要多选,自己造的时候花了半天没造出来,给的时间有限呀,确实不好造,造了一半很多bug。结果google一把发现有一个开源的,写的挺不错的,所以将此番分享,真的节约了很多时间,毕竟公司就我一个人呀~

分享他人封装的插件如下~ 结合element一致

1.  层级选取器之多选,如图,基于element-ui的级联多选选择器,友好显示下拉箭头,样式与element一致,支持多选与级联选择器的大部分功能。

install 安装

npm i el-cascader-multi --save
或
cnpm i el-cascader-multi --save

在main.js中写入下面的代码

import elCascaderMulti from "el-cascader-multi";
Vue.use(elCascaderMulti);

接下来,你就可以在页面中使用cascader-multi了

<template>
    <el-cascader-multi v-model="checkList" :data="data"> </el-cascader-multi>
</template>
<script>
    export default {
        data () {
            return {
                data: [], // 与element级联选择器格式一致
                checkList: []
            }
        }
    }
</script>

 

推荐看这个gitHub有详细说明:https://github.com/Charming2015/el-cascader-multi

我的代码如下:

main中引入后,在组件中引入这个代码

 <el-cascader-multi
          v-model="checkList"
          :data="Adata"
          @change="change"
          value-key="id"
          label-key="label"
          :only-last="true"
          :children-key="children"
        ></el-cascader-multi>

在@change方法下再编译需要传的参数

    change() {
      this.objList = [];
      let obj = {
        code: "",
        id: "",
        label: ""
      };
      let that = this;
      this.checkList.forEach(itemA => {
        that.Adata.forEach(item => {
          if (itemA[0] == item.id) {
            obj.id = itemA[1];
            item.children.forEach(itemB => {
              if (obj.id == itemB.id) {
                obj.code = item.code;
                obj.label = itemB.label;
                that.objList.push(Object.assign({}, obj));
              }
            });

            console.log(that.objList);
          }
        });
      });
      // this.checkList = this.checkList;
      // console.log(this.checkList);
    },

对数据进行处理后,传参的数据如下

posted @ 2019-09-12 16:17  guanqinghua  阅读(416)  评论(0编辑  收藏  举报