美文网首页
Elementui Tree 树形控件,将勾选选中的值放在lis

Elementui Tree 树形控件,将勾选选中的值放在lis

作者: 祈澈菇凉 | 来源:发表于2021-07-29 00:25 被阅读0次

    要求:
    Elementui Tree 树形控件,将勾选选中的值放在list集合里面提交

    提交格式是这样的,也就是将勾选项放在一个数组里面,作为参数提交给后端即可。

    步骤:
    这里我用到了json本地的数据,因为掉接口数据,不太方便写demo,后面统一都用到mock,json数据了,如果需要用到项目里面,后面直接修改一下

       //获取树权限节点接口定义
        getZtreeList() {
          this.dataLoading = true;
          import("./mock").then((res) => {
            this.setTree = res.data;
            this.organList = res.data.map((a) => ({
              label: a.description,
              value: a.id,
            }));
            this.getListData();
            this.dataLoading = false;
          });
        },
    

    改成这样即可

    //调用接口
    import {getZtreeList} from "@/api/permission/role";
    
     //获取树权限节点接口定义
        getZtreeList() {
          this.dataLoading = true;
          getZtreeList(params).then((res) => {
            this.setTree = res.data; 
             this.organList = res.data.map((a) => ({
              label: a.description,
              value: a.id,
            }));
            this.getListData();
            this.dataLoading = false;
          });
        },
    

    话不多说了,来看具体的操作吧

    1:在views底下新建一个test文件夹
    里面新建一个vue文件和一个json文件

    2:使用
    mock.json

    {
        "msg": "success",
        "code": 1,
        "data": [
            {
                "id": 2,
                "permissionToken": "data_spectaculars_token1",
                "description": "数据看板",
                "parentId": 1,
                "checked": true
            },
            {
                "id": 3,
                "permissionToken": "data_spectaculars_stat_token2",
                "description": "统计看板",
                "parentId": 2,
                "checked": true
            },
            {
                "id": 4,
                "permissionToken": "data_spectaculars_health_token2",
                "description": "健康看板",
                "parentId": 2,
                "checked": true
            },
            {
                "id": 1,
                "permissionToken": "system_token0",
                "description": "系统权限",
                "parentId": 0,
                "checked": false
            },
            {
                "id": 5,
                "permissionToken": "account_management_token1",
                "description": "账户管理",
                "parentId": 1,
                "checked": false
            },
            {
                "id": 6,
                "permissionToken": "account_management_user_token2",
                "description": "用户管理",
                "parentId": 5,
                "checked": false
            },
            {
                "id": 7,
                "permissionToken": "account_management_permission_token2",
                "description": "权限管理",
                "parentId": 5,
                "checked": false
            },
            {
                "id": 8,
                "permissionToken": "data_management_token1",
                "description": "数据管理",
                "parentId": 1,
                "checked": false
            },
            {
                "id": 9,
                "permissionToken": "data_management_organ_token2",
                "description": "部门管理",
                "parentId": 8,
                "checked": false
            },
            {
                "id": 10,
                "permissionToken": "data_management_config_token2",
                "description": "数据配置",
                "parentId": 8,
                "checked": false
            },
            {
                "id": 11,
                "permissionToken": "data_management_staff_token2",
                "description": "人员管理",
                "parentId": 8,
                "checked": false
            },
            {
                "id": 12,
                "permissionToken": "data_management_asset_token2",
                "description": "资产管理",
                "parentId": 8,
                "checked": false
            },
            {
                "id": 13,
                "permissionToken": "device_management_token1",
                "description": "设备管理",
                "parentId": 1,
                "checked": false
            }
        ]
    }
    

    3:test.vue实例代码

    <template>
      <div class="ztree">
        <el-tree
          :data="treeData"
          show-checkbox
          default-expand-all
          node-key="id"
          ref="tree"
          highlight-current
          :props="defaultProps"
          @check="checkHandler"
        >
        </el-tree>
        <el-button type="primary" @click="createData()">确定</el-button>
      </div>
    </template>
    <script>
    export default {
      data() {
        return {
          setTree: [],
          defaultProps: {
            children: "children",
            label: "description",
          },
          treeData: [],
          organList: [],
          questionForm: {
            //permissionTokens: [],
          },
        };
      },
      watch: {},
      created() {
        //加载树节点
        this.getZtreeList();
      },
      methods: {
        //树文件勾选事件
        checkHandler(...value) {
          let a = value[1].checkedNodes.map((a) => a.description);
          let b = value[1].checkedNodes.map((a) => a.permissionToken);
          console.log(a);
          this.questionForm.description = a;
          this.questionForm.permissionToken = b;
        },
    
        //获取树权限节点接口定义
        getZtreeList() {
          this.dataLoading = true;
          import("./mock").then((res) => {
            this.setTree = res.data;
            this.organList = res.data.map((a) => ({
              label: a.description,
              value: a.id,
            }));
    
            this.getListData();
            this.dataLoading = false;
          });
        },
    
        //对json的格式的转化
        getListData() {
          let dataArray = [];
          this.setTree.forEach(function (data) {
            let parentId = data.parentId;
            if (parentId === 0) {
              let objTemp = {
                id: data.id,
                description: data.description,
                permissionToken: data.permissionToken,
                parentId: parentId,
              };
    
              dataArray.push(objTemp);
            }
          });
          this.treeData = this.data2treeDG(this.setTree, dataArray);
        },
        data2treeDG(datas, dataArray) {
          for (let j = 0; j < dataArray.length; j++) {
            let dataArrayIndex = dataArray[j];
            let childrenArray = [];
            let Id = dataArrayIndex.id;
            for (let i = 0; i < datas.length; i++) {
              let data = datas[i];
    
              let parentId = data.parentId;
              if (parentId == Id) {
                //判断是否为儿子节点
                let objTemp = {
                  id: data.id,
                  description: data.description,
                  permissionToken: data.permissionToken,
                  parentId: parentId,
                };
                childrenArray.push(objTemp);
              }
            }
            dataArrayIndex.children = childrenArray;
    
            //console.log("打印childrenArray", dataArrayIndex.children);
            if (childrenArray.length > 0) {
              //有儿子节点则递归
              this.data2treeDG(datas, childrenArray);
            }
          }
          // console.log("打印处理过的json", dataArray);
          return dataArray;
        },
    
        //添加角色
        async createData() {
          const params = this.questionForm;
          alert(JSON.stringify(params));
        },
      },
    };
    </script>
    
    

    效果:


    相关文章

      网友评论

          本文标题:Elementui Tree 树形控件,将勾选选中的值放在lis

          本文链接:https://www.haomeiwen.com/subject/gwwzmltx.html