当前位置: 首页 > news >正文

el-tree 使用笔记

1.官网

https://element.eleme.cn/#/zh-CN/component/tree

2.el-tree 封装成组件

(1)先看效果

在这里插入图片描述

(2)组件components=》DivisionTree=》index.vue

在这里插入图片描述
index.vue代码

<template><div><el-input v-model="filterText" placeholder="请输入区划名称" clearable size="small" prefix-icon="el-icon-search" style="margin-bottom: 20px"/><div class="flow-tree"><div style="width: 218px"><el-treeref="tree"node-key="divisionCode":highlight-current="true":expand-on-click-node="false":check-on-click-node="true":data="treeData":props="defaultProps":filter-node-method="filterNode"@node-click="handleNodeClick"/></div></div></div>
</template><script>import jsonData from '@/assets/json/division.json';export default {name: 'DivisionTree',watch: {filterText(val) {this.$refs.tree.filter(val);}},data() {return {filterText:null,treeData: jsonData,defaultProps: {children: 'children',label: 'name'}};},methods: {filterNode(value, data) {if (!value) return true;return data.name.indexOf(value) !== -1;},// 处理节点点击事件handleNodeClick(data, node, component) {this.$emit("listenToChildCode",data.code)}}
};
</script><style scoped lang="scss">
.flow-tree{overflow: auto;overflow-x: auto;width: 100%;max-height:750px;
}
</style>

(2)division.json

[{"code": "5201","name": "贵阳市","children": [{"code": "520102","name": "南明区","children": [{"code": "520102001","name": "五里冲街道"},{"code": "520102002","name": "小车河街道"},{"code": "520102203","name": "小碧布依族苗族乡"}]},{"code": "520103","name": "云岩区","children": [{"code": "520103019","name": "大营路街道"},{"code": "520103020","name": "黔灵东路街道"},{"code": "520103100","name": "黔灵镇"}]},{"code": "520111","name": "花溪区","children": [{"code": "520111001","name": "贵筑街道"},{"code": "520111002","name": "阳光街道"},{"code": "520111003","name": "清溪街道"},{"code": "520111209","name": "马铃布依族苗族乡"}]},{"code": "520112","name": "乌当区","children": [{"code": "520112001","name": "龙广路街道"},{"code": "520112002","name": "新创路街道"},{"code": "520112003","name": "观溪路街道"},{"code": "520112206","name": "偏坡布依族乡"}]},{"code": "520113","name": "白云区","children": [{"code": "520113001","name": "泉湖街道"},{"code": "520113010","name": "大山洞街道"},{"code": "520113204","name": "牛场布依族乡"}]},{"code": "520115","name": "观山湖区","children": [{"code": "520115001","name": "宾阳街道"},{"code": "520115002","name": "云潭街道"},{"code": "520115102","name": "百花湖镇"}]},{"code": "520121","name": "开阳县","children": [{"code": "520121001","name": "硒城街道"},{"code": "520121209","name": "毛云乡"}]},{"code": "520122","name": "息烽县","children": [{"code": "520122001","name": "永阳街道"},{"code": "520122108","name": "流长镇"},{"code": "520122200","name": "青山苗族乡"}]},{"code": "520123","name": "修文县","children": [{"code": "520123001","name": "龙场街道"},{"code": "520123002","name": "阳明洞街道"},{"code": "520123204","name": "大石布依族乡"}]},{"code": "520181","name": "清镇市","children": [{"code": "520181002","name": "滨湖街道"},{"code": "520181204","name": "流长苗族乡"}]}]}
]

(3)main.js 挂载组件

import DivisionTree from "@/components/DivisionTree"
Vue.component('DivisionTree', DivisionTree)

(4)使用

关键代码

<division-tree v-on:listenToChildCode="listenToChildCode"/>
<script>
export default {methods: {listenToChildCode(code){this.queryParams.divisionCode=code;this.getList();},/** 重置按钮操作 */resetQuery() {this.resetForm("queryForm");this.queryParams.divisionCode = undefined;this.handleQuery();},}
};
</script>

完整代码

<template><div class="app-container"><el-row :gutter="20"><!--区划tree数据--><el-col :span="3" :xs="24"><division-tree v-on:listenToChildCode="listenToChildCode"/></el-col><!--用户数据--><el-col :span="21" :xs="24"><el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"label-width="68px"><el-form-item label="用户名称" prop="userName"><el-inputv-model="queryParams.userName"placeholder="请输入用户名称"clearablestyle="width: 240px"@keyup.enter.native="handleQuery"/></el-form-item><el-form-item><el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button><el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button></el-form-item></el-form><el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"><el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible":show-overflow-tooltip="true"/><el-table-column label="区划编码" align="center" prop="divisionCode" /><el-table-column label="区划名称" align="center" prop="divisionName" width="200"/></el-table><paginationv-show="total>0":total="total":page.sync="queryParams.pageNum":limit.sync="queryParams.pageSize"@pagination="getList"/></el-col></el-row></div>
</template><script>
import { listUser } from "@/api/system/user";
export default {name: "User",data() {return {// 遮罩层loading: true,// 查询参数queryParams: {pageNum: 1,pageSize: 10,userName: undefined,divisionCode: undefined,},};},created() {this.getList();},methods: {/** 查询用户列表 */getList() {this.loading = true;listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => {this.userList = response.rows;this.total = response.total;this.loading = false;});},listenToChildCode(code){this.queryParams.divisionCode=code;this.getList();},/** 搜索按钮操作 */handleQuery() {this.queryParams.pageNum = 1;this.getList();},/** 重置按钮操作 */resetQuery() {this.dateRange = [];this.resetForm("queryForm");this.queryParams.divisionCode = undefined;this.handleQuery();},}
};
</script>

http://www.mrgr.cn/news/77781.html

相关文章:

  • vue3+face-api实现人脸核身
  • 十六.SpringCloudAlibaba极简入门-整合Grpc代替OpenFeign
  • Java LinkedList 详解
  • SemiDrive E3 硬件设计系列---唤醒电路设计
  • Web APP的几种类型
  • Python爬虫项目 | 一、网易云音乐热歌榜歌曲
  • 【强化学习+组合优化】SAC + PointerNetwork 解决TSP问题
  • 常用数据结构详解
  • 【操作系统笔记】习题
  • 密码学11
  • 推荐一个基于协程的C++(lua)游戏服务器
  • Kubernetes的pod控制器
  • 大语言模型---什么是注意力机制?LlaMA 中注意力机制的数学定义
  • 002 MATLAB语言基础
  • 【深度学习之一】2024最新pytorch+cuda+cudnn下载安装搭建开发环境
  • 华为OD机试真题---最短木板长度
  • 【AI日记】24.11.22 学习谷歌数据分析初级课程-第2/3课
  • 模型的评估与选择——交叉验证(基于Python实现)
  • PID运动控制
  • Next.js 独立开发教程(三):CSS 样式的完整指南
  • slab分配器
  • 游戏引擎学习第20天
  • RTPS通信使用的socket和端口
  • Linux各种并发服务器优缺点
  • 12 —— Webpack中向前端注入环境变量
  • 2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略(详细解题思路)