vue获取Elementui Tree 树形控件当前选中的节点

快来打我* 2022-09-05 04:09 448阅读 0赞

vue-element-admin一个基于 vue2.0 和 Eelement 的控制面板 UI 框架,这是使用vue技术栈开发的前端程序员的首选管理系统模板,模板以及非常的成熟了,并且有相关的社区和维护人员,开发时候遇到问题也不要慌。

推荐指数:
Github 地址:https://github.com/PanJiaChen/vue-element-admin
Demo体验:https://panjiachen.github.io/vue-element-admin/#/dashboard
官方文档:https://panjiachen.github.io/vue-element-admin-site/zh/

b6345aacebb7bafb30ea20bb68ccd962.png

今天就来说一下,vue如何获取Elementui Tree 树形控件当前选中的节点。废话不多说,首先看一下官方文档吧,看看官方文档是怎么给到的例子吧:

Tree 树形控件文档:https://element.eleme.cn/\#/zh-CN/component/tree

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

1e20943742fb7842dc9120b9bacc002f.png

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

29d5af62db06a6cce788f958b4777100.png

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

  1. //获取树权限节点接口定义
  2. getZtreeList() {
  3. this.dataLoading = true;
  4. import("./mock").then((res) => {
  5. this.setTree = res.data;
  6. this.organList = res.data.map((a) => ({
  7. label: a.description,
  8. value: a.id,
  9. }));
  10. this.getListData();
  11. this.dataLoading = false;
  12. });
  13. },

改成这样即可

  1. //调用接口
  2. import {getZtreeList} from "@/api/permission/role";
  3. //获取树权限节点接口定义
  4. getZtreeList() {
  5. this.dataLoading = true;
  6. getZtreeList(params).then((res) => {
  7. this.setTree = res.data;
  8. this.organList = res.data.map((a) => ({
  9. label: a.description,
  10. value: a.id,
  11. }));
  12. this.getListData();
  13. this.dataLoading = false;
  14. });
  15. },

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

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

aacad81c70d73252657e7f276a0501ca.png

2:使用
mock.json

  1. {
  2. "msg": "success",
  3. "code": 1,
  4. "data": [
  5. {
  6. "id": 2,
  7. "permissionToken": "data_spectaculars_token1",
  8. "description": "数据看板",
  9. "parentId": 1,
  10. "checked": true
  11. },
  12. {
  13. "id": 3,
  14. "permissionToken": "data_spectaculars_stat_token2",
  15. "description": "统计看板",
  16. "parentId": 2,
  17. "checked": true
  18. },
  19. {
  20. "id": 4,
  21. "permissionToken": "data_spectaculars_health_token2",
  22. "description": "健康看板",
  23. "parentId": 2,
  24. "checked": true
  25. },
  26. {
  27. "id": 1,
  28. "permissionToken": "system_token0",
  29. "description": "系统权限",
  30. "parentId": 0,
  31. "checked": false
  32. },
  33. {
  34. "id": 5,
  35. "permissionToken": "account_management_token1",
  36. "description": "账户管理",
  37. "parentId": 1,
  38. "checked": false
  39. },
  40. {
  41. "id": 6,
  42. "permissionToken": "account_management_user_token2",
  43. "description": "用户管理",
  44. "parentId": 5,
  45. "checked": false
  46. },
  47. {
  48. "id": 7,
  49. "permissionToken": "account_management_permission_token2",
  50. "description": "权限管理",
  51. "parentId": 5,
  52. "checked": false
  53. },
  54. {
  55. "id": 8,
  56. "permissionToken": "data_management_token1",
  57. "description": "数据管理",
  58. "parentId": 1,
  59. "checked": false
  60. },
  61. {
  62. "id": 9,
  63. "permissionToken": "data_management_organ_token2",
  64. "description": "部门管理",
  65. "parentId": 8,
  66. "checked": false
  67. },
  68. {
  69. "id": 10,
  70. "permissionToken": "data_management_config_token2",
  71. "description": "数据配置",
  72. "parentId": 8,
  73. "checked": false
  74. },
  75. {
  76. "id": 11,
  77. "permissionToken": "data_management_staff_token2",
  78. "description": "人员管理",
  79. "parentId": 8,
  80. "checked": false
  81. },
  82. {
  83. "id": 12,
  84. "permissionToken": "data_management_asset_token2",
  85. "description": "资产管理",
  86. "parentId": 8,
  87. "checked": false
  88. },
  89. {
  90. "id": 13,
  91. "permissionToken": "device_management_token1",
  92. "description": "设备管理",
  93. "parentId": 1,
  94. "checked": false
  95. }
  96. ]
  97. }

3:test.vue实例代码

  1. <template>
  2. <div class="ztree">
  3. <el-tree
  4. :data="treeData"
  5. show-checkbox
  6. default-expand-all
  7. node-key="id"
  8. ref="tree"
  9. highlight-current
  10. :props="defaultProps"
  11. @check="checkHandler"
  12. >
  13. </el-tree>
  14. <el-button type="primary" @click="createData()">确定</el-button>
  15. </div>
  16. </template>
  17. <script>
  18. export default {
  19. data() {
  20. return {
  21. setTree: [],
  22. defaultProps: {
  23. children: "children",
  24. label: "description",
  25. },
  26. treeData: [],
  27. organList: [],
  28. questionForm: {
  29. //permissionTokens: [],
  30. },
  31. };
  32. },
  33. watch: {},
  34. created() {
  35. //加载树节点
  36. this.getZtreeList();
  37. },
  38. methods: {
  39. //树文件勾选事件
  40. checkHandler(...value) {
  41. let a = value[1].checkedNodes.map((a) => a.description);
  42. let b = value[1].checkedNodes.map((a) => a.permissionToken);
  43. console.log(a);
  44. this.questionForm.description = a;
  45. this.questionForm.permissionToken = b;
  46. },
  47. //获取树权限节点接口定义
  48. getZtreeList() {
  49. this.dataLoading = true;
  50. import("./mock").then((res) => {
  51. this.setTree = res.data;
  52. this.organList = res.data.map((a) => ({
  53. label: a.description,
  54. value: a.id,
  55. }));
  56. this.getListData();
  57. this.dataLoading = false;
  58. });
  59. },
  60. //对json的格式的转化
  61. getListData() {
  62. let dataArray = [];
  63. this.setTree.forEach(function (data) {
  64. let parentId = data.parentId;
  65. if (parentId === 0) {
  66. let objTemp = {
  67. id: data.id,
  68. description: data.description,
  69. permissionToken: data.permissionToken,
  70. parentId: parentId,
  71. };
  72. dataArray.push(objTemp);
  73. }
  74. });
  75. this.treeData = this.data2treeDG(this.setTree, dataArray);
  76. },
  77. data2treeDG(datas, dataArray) {
  78. for (let j = 0; j < dataArray.length; j++) {
  79. let dataArrayIndex = dataArray[j];
  80. let childrenArray = [];
  81. let Id = dataArrayIndex.id;
  82. for (let i = 0; i < datas.length; i++) {
  83. let data = datas[i];
  84. let parentId = data.parentId;
  85. if (parentId == Id) {
  86. //判断是否为儿子节点
  87. let objTemp = {
  88. id: data.id,
  89. description: data.description,
  90. permissionToken: data.permissionToken,
  91. parentId: parentId,
  92. };
  93. childrenArray.push(objTemp);
  94. }
  95. }
  96. dataArrayIndex.children = childrenArray;
  97. //console.log("打印childrenArray", dataArrayIndex.children);
  98. if (childrenArray.length > 0) {
  99. //有儿子节点则递归
  100. this.data2treeDG(datas, childrenArray);
  101. }
  102. }
  103. // console.log("打印处理过的json", dataArray);
  104. return dataArray;
  105. },
  106. //添加角色
  107. async createData() {
  108. const params = this.questionForm;
  109. alert(JSON.stringify(params));
  110. },
  111. },
  112. };
  113. </script>

效果:
566ad429974848e7ec59d9d021a7a235.png
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,448人围观)

还没有评论,来说两句吧...

相关阅读