背景:由于项目需求需要使用下拉选择框的组织架构树
实现代码如下:
-
-
"18"> -
"所属组织:" prop="groupName"> -
"dataForm.groupName" placeholder="请选择" > -
- "select-tree">
-
"dataForm.groupName" :value="dataForm.id" style="width: 100px;"> -
"groupList" :props="defaultProps" @node-click="handleNodeClick" :filter-node-method="filterNode" ref="tree"> -
-
-
-
-
-
-
-
-
-
-
- data() {
-
-
- return {
- defaultProps: {
- children: 'childList',
- label: 'groupName',
- id:'id'
- },
- filterText: '',
- // filters: {
- // deptName: '',
- // deptCode: ''
- // },
- dataForm:{
- groupName: '',
- id: ''
- },
- rules: {
-
- groupName: [{ required: true,message:'请选择组织', trigger: 'blur' }],
-
- },
- };
- },
- watch:{
- filterText(val) {
- this.$refs.tree.filter(val);
- }
- },
- methods: {
- //关键字过滤
- filterNode(value, data) {
- if (!value) return true;
- return data.label.indexOf(value) !== -1;
- },
- //点击选择
- handleNodeClick(data) {
- let self = this;
- self.dataForm.groupName = data.groupName
- self.dataForm.id = data.id
- },
- }
注意:groupList为组织结构的数据,具体情况结合自己的项目。
css:
-
- ::v-deep.select-tree{
- width: 240px;
- height: 100%;
- .el-tree {
- background: #FFFFFF;
- //el-tree组件中class名为el-tree-node的div是块级元素,需要把它变为inline-block才出现滚动条,同时注意每一个节点占一行,
- //由于选择框组织树需要添加el-tree-node__children 如下所示
- .el-tree>.el-tree-node {
- display: inline-block;
- min-width: 100%;
- }
- .el-tree-node__children{
- overflow: visible!important;
- }
- // 选择框改成灰色
- // .el-checkbox__inner {
- // background-color: #edf2fc;
- // }
- // 人员树高度
- .el-tree-node__content {
- height: 31px;
- display: block!important;
- }
- // 人员树内容鼠标悬浮颜色
- .el-tree-node__content:hover{
- // background-color: #FFEFED !important;
- background-color: #FFFFFF !important;
- width: 100% !important;
- }
- // 人员树内容鼠标点击背景颜色
- .el-tree-node:focus > .el-tree-node__content {
- // background-color: #FFEFED !important;
- background-color: #FFFFFF !important;
-
- }
- // 箭头颜色更改
- .el-tree-node__expand-icon {
- color:#A4AEBB;
- font-size: 19*0.87px;
- }
- //人员树字体大小
- .el-tree-node__label {
- font-size: 19*0.87px;
- }
- }
- }
其中,添加了
.el-tree-node__children{
overflow: visible!important;
}
才正常出现横向滚动条
效果图如下: