el-tree 过滤查询&溢字提示


<div class="treeSearch">
	<el-input placeholder="请输入后回车搜查询" @change="searchAction" v-model="searchText">
		<template #prefix>
			<i class="el-icon-search"></i>
		</template>
	</el-input>
	<el-button type="primary" @click="searchAction">查询</el-button>
</div>
	
<el-tree class="filter-tree" :expand-on-click-node="false" :data="treeData" node-key="bussId" :props="defaultProps" default-expand-all :filter-node-method="filterAction" ref="contentTreeRef" :highlight-current="true">
	<template #default="{ node }">
		<el-tooltip effect="dark" :content="node.label"  :show-after="500" :popper-class="treeTooltip ? 'hide-tooltip' : ''">
			<p class="tree_title" :class="showTreeClass + '-' + node.data.treeValue">
				<span @mouseenter.stop.prevent="ellipsis(node.data.treeValue)" @mouseleave.stop.prevent="treeTooltip = true">
				{{ node.label }}
				</span>
			</p>
		</el-tooltip>
	</template>
</el-tree>

const state = reactive<any>({
	searchText: '',
	defaultProps: {
		label: 'treeLlabel',
		value: 'treeValue',
		children: 'treeChildren',
	},
	showTreeClass: 'ref_' + Math.random().toString(7).substr(2),
	treeTooltip: true,
	treeData: [],
});

const contentTreeRef: Ref = ref(null);

const keyPropsData: ComputedRef = computed(() => {
	return state.defaultProps;
});

function filterAction(value: string, data: any) {
	if (!value) return true;
	return data[keyPropsData.value.label] && data[keyPropsData.value.label].indexOf(value) !== -1;
}

function searchAction() {
	//查询方法
}

//显示超指定区域时 - 文字提示
let treeTimer: any = null;
function ellipsis(index: any) {
	let treeData: any = null;
	treeData = $(`.${state.showTreeClass + '-' + index}`)[0];
	let treeParentWidth = treeData.parentNode.offsetWidth;
	let treeContentWidth = treeData.offsetWidth + 34;
	let treeLeft = treeData.offsetLeft;
	clearTimeout(treeTimer);
	treeTimer = setTimeout(() => {
		if (treeContentWidth + treeLeft + 38 > treeParentWidth) {
			state.treeTooltip = false;
		}
	}, 500);
}


<style lang="scss" scoped>
.filter-tree {
	height: 100%;
	overflow: auto;
	.tree_title {
		text-overflow: ellipsis;
		overflow: hidden;
		white-space: nowrap;
		font-size: 12px;
	}
}
</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值