element ui封装 tree下拉框

展示:

在这里插入图片描述

子组件封装

<!-- 树状选择器   科室树形  -->
<template><el-popoverref="popover"placement="bottom-start"trigger="click"@show="onShowPopover"@hide="onHidePopover"><el-treeref="tree"class="select-tree"highlight-current:style="`min-width: ${treeWidth}`":data="data":props="props":expand-on-click-node="false":filter-node-method="filterNode":default-expand-all="true"@node-click="onClickNode"></el-tree><el-inputslot="reference"ref="input"v-model="labelModel"clearable:style="`width: ${width}%`":class="{ 'rotate': showStatus }"suffix-icon="el-icon-arrow-down":placeholder="placeholder"></el-input></el-popover>
</template><script>
import { getTreeList } from '@/api/commonApi'
export default {name: 'Pagination',props: {// 接收绑定参数value: {type: String,default: '1'},// 输入框宽度width: String,// 输入框占位符placeholder: {type: String,required: false,default: '请选择'},// 树节点配置选项props: {type: Object,required: false,default: () => ({value: 'key',label: 'title',children: 'children'})}},// 设置绑定参数model: {prop: 'value',event: 'selected'},computed: {// 是否为树状结构数据dataType() {const jsonStr = JSON.stringify(this.options)return jsonStr.indexOf(this.props.children) !== -1},// 若非树状结构,则转化为树状结构数据data() {return this.dataType ? this.options : this.switchTree()}},watch: {labelModel(val) {if (!val) {this.valueModel = ''}this.$refs.tree.filter(val)},value(val) {this.value = val},valueModel(val){if(!val){return}this.timer = setTimeout(() => {this.labelModel = this.queryTree(this.options,val)})}},data() {return {// 树状菜单显示状态showStatus: false,// 菜单宽度treeWidth: 'auto',// 输入框显示值labelModel: '',// 实际请求传值valueModel: '0',// 数据列表options: [],timer:null}},created() {this.value&&this.getLabel(this.value)// 检测输入框原有值并显示对应 labelthis.gettreetable()// 获取输入框宽度同步至树状菜单宽度this.$nextTick(() => {this.treeWidth = `${(this.width || this.$refs.input.$refs.input.clientWidth) - 24}px`})},methods: {getLabel(val){this.labelModel = val},gettreetable() {getTreeList({menuName: 'ehis_dept',pageSearchType: 'all',searchConditions: '[]',sortType: 'asc',sortcol: ['id'],tableType: 'col'}).then((res) => {this.options = res.allData// if (this.value) {this.labelModel = this.queryTree(this.options, this.valueModel)// }}).catch((err) => {console.log(err)})},// 单击节点onClickNode(node) {this.labelModel = node[this.props.label]this.valueModel = node[this.props.value]this.$emit('getdocotorlist', this.valueModel)this.onCloseTree()},// 偏平数组转化为树状层级结构switchTree() {return this.cleanChildren(this.buildTree(this.options, '0'))},// 隐藏树状菜单onCloseTree() {this.$refs.popover.showPopper = false},// 显示时触发onShowPopover() {this.showStatus = truethis.$refs.tree.filter(false)},// 隐藏时触发onHidePopover() {this.showStatus = falsethis.$emit('selected', this.valueModel)},// 树节点过滤方法filterNode(query, data) {if (!query) {return true}return data[this.props.label].indexOf(query) !== -1},// 搜索树状数据中的 IDqueryTree(tree, id) {let stark = []stark = stark.concat(tree)while (stark.length) {const temp = stark.shift()if (temp[this.props.children]) {stark = stark.concat(temp[this.props.children])}if (temp[this.props.value] === id) {return temp[this.props.label]}}return ''},// 将一维的扁平数组转换为多层级对象buildTree(data, id = '0') {const fa = (parentId) => {const temp = []for (let i = 0; i < data.length; i++) {const n = data[i]if (n[this.props.parent] === parentId) {n.children = fa(n.rowGuid)temp.push(n)}}return temp}return fa(id)},// 清除空 children项cleanChildren(data) {const fa = (list) => {list.map((e) => {if (e.children.length) {fa(e.children)} else {delete e.children}return e})return list}return fa(data)}},beforeUpdate(){clearTimeout(this.timer)this.timer = null}
}
</script><style>
.el-input.el-input--suffix {cursor: pointer;overflow: hidden;
}
.el-input.el-input--suffix.rotate .el-input__suffix {transform: rotate(180deg);
}
.select-tree {max-height: 350px;overflow-y: scroll;
}
/* 菜单滚动条 */
.select-tree::-webkit-scrollbar {z-index: 11;width: 6px;
}
.select-tree::-webkit-scrollbar-track,
.select-tree::-webkit-scrollbar-corner {background: #fff;
}
.select-tree::-webkit-scrollbar-thumb {border-radius: 5px;width: 6px;background: #b4bccc;
}
.select-tree::-webkit-scrollbar-track-piece {background: #fff;width: 6px;
}
.el-tree-node.is-current > .el-tree-node__content {background-color: #86bfff !important;color: black;
}
</style>

父组件使用

<select-tree :value="ruleForm.deptId" v-model="ruleForm.deptId" style="width:93%;"/>import SelectTree from '@/components/common/tree/selecttreecopy'components: { SelectTree },

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247780.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sitecore A / B测试

测试您的Web内容非常重要。这是查看页面中的页面和组件是否达到预期效果的好方法。测试还可以让您放心&#xff0c;您的内容足够吸引人&#xff0c;以增加转化次数并最大限度地提高增长率。 测试如何运作&#xff1f; 测试通过向访问者随机显示不同版本的内容来工作。Sitecore …

jQuery on()方法绑定动态元素的点击事件无响应的解决办法

$(#check_all).on(click , function(){ alert(1); }); $("#yujinlist").append(html); count; } 以上代码执行时&#xff0c;点击#check_all时&#xff0c;alert一直没反应&#xff0c;后在网上查资料时&#xff0c;才知道on前面的元素也必须在页面加载的时候就存在…

让数字保持在整数范围内

让数字保存在整数范围内 如&#xff1a; (1~10)之间的数取 10 (10~20)之间的数取 20 (20~30)之间的数取 30 let max (Math.round(数字/10)1)*10

UVA572 Oil Deposits DFS求解

小白书上经典DFS题目。 1. 递归实现 // from: https://www.cnblogs.com/huaszjh/p/4686092.html#include <stdio.h> #include <string.h> #define maxn 105 unsigned char data[maxn][maxn]; int m, n, vis[maxn][maxn];void dfs(int x, int y, int ans) {if (x &l…

HTML 表格中的行合并与列合并

colspan是横向合并&#xff1b;rowspan是纵向合并。colspan是“column span&#xff08;跨列&#xff09;”的缩写。colspan属性用在td标签中&#xff0c;用来指定单元格横向跨越的列数&#xff1a;单元格1 单元格2 单元格3 单元格4 该例通过把colspan设为“3”, 令所在单元格横…

java快速排序

package com.atguigu.java;/*** 快速排序* 通过一趟排序将待排序记录分割成独立的两部分&#xff0c;其中一部分记录的关键字均比另一部分关键字小&#xff0c;* 则分别对这两部分继续进行排序&#xff0c;直到整个序列有序。*/ public class QuickSort {private static void s…

网址备份

1.jstl标签库http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/2.tomcat服务器http://tomcat.apache.org/3.mysql架包https://mvnrepository.com/4.jqueryhttps://github.com/jquery/jquery/releases5.图标http://icons8.com/preloaders6.jquery-formhttp://…

前端开发-热更新原理解读

- 一、websocket简介- 二、热跟新原理- 三、实例剖析- 四、总结websocket简介 在h5推出之前&#xff0c;浏览器应用跟服务器端通信的机制只有http协议&#xff0c;http是一种无状态的网络协议&#xff0c;前端向服务器发起一个请求&#xff0c;服务器给出一次应答&#xff…

java杨辉三角

package com.atguigu.exer; /** 使用二维数组打印一个 10 行杨辉三角。【提示】1. 第一行有 1 个元素, 第 n 行有 n 个元素2. 每一行的第一个元素和最后一个元素都是 13. 从第三行开始, 对于非第一个元素和最后一个元素的元素。即&#xff1a; yanghui[i][j] yanghui[i-1][j-1…

这65条工作和成长建议,你将受用终生!

这65条工作和成长建议&#xff0c;每一条都值得我们认真思考。希望对你有启发。 从1990年进入格力&#xff0c;董明珠已经工作了近30年。 她花了近30年的时间&#xff0c;一手把格力从一家亏损的中小企业变成全球500强&#xff0c;年销售额超过1400亿。 2004年&#xff0c;她被…

HTML5事件—visibilitychange 页面可见性改变事件

又看到一个很有意思的HTML5事件 visibilitychange事件是浏览器新添加的一个事件&#xff0c;当浏览器的某个标签页切换到后台&#xff0c;或从后台切换到前台时就会触发该消息&#xff0c;现在主流的浏览器都支持该消息了&#xff0c;例如Chrome, Firefox, IE10等。虽然这只是一…

java回型数

import java.util.Arrays;public class hello {public static void main(String[] args) {//输出5*5的int n 5;int [][] huizixingnew int[n][n];int minX0;//x轴最小下标int minY0;//y轴最小下标int maxXn-1;//x轴最大下标int maxYn-1;//y轴最大下标int counter0;//计数int xf…

用CSS3 vh 简单实现DIV全屏居中

vh、vw、vmin、vmax介绍 vw&#xff1a;视窗宽度的百分比&#xff08;1vw 代表视窗的宽度为 1%&#xff09;vh&#xff1a;视窗高度的百分比vmin&#xff1a;当前 vw 和 vh 中较小的一个值vmax&#xff1a;当前 vw 和 vh 中较大的一个值 浏览器兼容性 &#xff08;1&#xff09…

解决360等等浏览器兼容模式解析不兼容代码

之前写的代码不是很规范 , 在今天测试下发现360浏览器等等的浏览器使用兼容模式会有很多不兼容 , 网上了解过一下 , 说是很多浏览器的兼容模式可能就是为了兼容IE7之前的网站代码 , 而非我们字面理解的兼容二字 ... OK!跑题了 ... 我的解决方案是在页面head加<meta http…

java自定义异常报错

public class TeamException extends Exception{static final long serialVersionUID -3387516993124229948L;public TeamException() {super();}public TeamException(String message) {super(message);} }

P多行溢出省略号的处理

因为-webkit-line-clamp: 2不兼容火狐或IE&#xff0c;采用判断浏览器的方式来启用哪个方式先判断是什么浏览器 //判断是否是谷歌浏览器 if (!stripos($_SERVER["HTTP_USER_AGENT"], chrome)) {$this->registerCssFile(web/css/view.css); } 行内样式&#xff08;…

缩小窗口时CSS背景图出现右侧空白BUG的解决方法

页面容器&#xff08;#wrap&#xff09;与页面头部&#xff08;#header &#xff09;为100%宽度。而内容的容器&#xff08;#page&#xff09;为固定宽度960px。浏览窗口缩小而小于内容层宽度时会产生宽度理解上的差异。如下图所示窗口宽度大于内容层宽度&#xff1a; 改变浏览…

JAVA链接Mysql数据库(一)

第一步自定义 properties 文件 userroot password12345 urljdbc:mysql://localhost:3306/test?useUnicodetrue&characterEncodingutf8 driverClasscom.mysql.jdbc.Driver第二部 创建 java 文件运行 import java.io.InputStream; import java.sql.Connection; import java…

优化器,SGD+Momentum;Adagrad;RMSProp;Adam

Optimization 随机梯度下降&#xff08;SGD&#xff09;&#xff1a; 当损失函数在一个方向很敏感在另一个方向不敏感时&#xff0c;会产生上面的问题&#xff0c;红色的点以“Z”字形梯度下降&#xff0c;而不是以最短距离下降&#xff1b;这种情况在高维空间更加普遍。 SGD的…

iOS开发-平台使用TestFlight进行Beta测试

使用 TestFlight&#xff0c;你可以向测试人员发布你 App 的 prerelease 版本来收集反馈信息&#xff0c;为将来发布 App 的正式版做准备。现在 TestFlight 是一个可选功能&#xff0c;你也可以不使用它&#xff0c;而是像以往发布 App 那样直接提交到 appStore。 TestFlight 使…