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

黑龙江省建设厅网站高级网站开发工程师

黑龙江省建设厅网站,高级网站开发工程师,甘肃金顶建设公司网站,建立收费网站elementUI实现selecttree自定义下拉框树形组件支持多选和搜索 效果图定义子组件父组件应用 效果图 定义子组件 主要结合el-select和el-tree两个组件改造的。 <template><div class"selectTree"><el-select filterable :filter-method"filterMe…

elementUI实现selecttree自定义下拉框树形组件支持多选和搜索

    • 效果图
    • 定义子组件
    • 父组件应用

效果图

在这里插入图片描述

定义子组件

主要结合el-selectel-tree两个组件改造的。

<template><div class="selectTree"><el-select filterable :filter-method="filterMethod" class="main-select-tree" ref="selectTree" multiple v-model="transitValue" @remove-tag="removeTag" clearable @clear="clearInput" @focus="blurInput"><el-option v-for="item in selectOptions" :key="item.department_id" :label="item.name" :value="item.department_id" style="display: none;" /><el-tree class="main-select-el-tree" ref="selecteltree" :filter-node-method="filterNode" show-checkbox @check-change="handleCheckChange" :highlight-current="true" :data="dataArray" :props="defaultProps" :expand-on-click-node="false" node-key="department_id" @node-click="handleNodeClick" :current-node-key="currentKey"><span class="custom-tree-node" slot-scope="{ node, data }"><span :title="data.description">{{ node.label }}</span></span></el-tree></el-select></div>
</template><script>
export default {name: 'selectTree',props: {dataArray: Array},data () {return {transitValue: [],selectOptions: [],currentKey: null,defaultProps: {label: 'name',children: 'children'}}},computed: {formatData () {let result = []function getChild (item) {item.forEach((i, x) => {if (Array.isArray(i['children'])) {result.push(i)getChild(i['children'])} else {result.push(i)}})}getChild(this.dataArray)return result}},methods: {filterMethod (value) {this.$refs['selecteltree'].filter(value.trim())},blurInput () {console.log('1213')this.$refs['selecteltree'].filter('')},filterNode(value, data) {if (!value) return truereturn data.name.indexOf(value) !== -1},clearInput () {this.$refs['selecteltree'].setCheckedKeys([])},removeTag (e) {this.$refs['selecteltree'].setChecked(e, false)},handleCheckChange () {let check = this.$refs['selecteltree'].getCheckedNodes()console.log(check)let arr = check.filter((i) => !i.children)this.transitValue = arr.map((i) => {return i.department_id})this.$emit('treeChange', arr)}},watch: {formatData: {immediate: true,handler: function (n) {if (n.length > 0) {this.selectOptions = n} else {this.selectOptions = []}}}}
}
</script>
<style lang="less" scoped>
.main-select-el-tree {max-height: 300px;overflow-y: auto;
}
.el-select-dropdown.is-multiple .el-select-dropdown__item {display: none;
}
</style>

父组件应用

<div><template><p class="pTitle">{{ 选择团队 }}</p><select-tree ref="selectTree" @treeChange="treeChangeFun" :dataArray="orgList" /></template>
</div>import selectTree from '@/components/selectTreeMulti.vue'
data(){orgList: [],
},
mounted(){this.orgList = translateDataToTree(data).treeData // data数据格式参看备注1
},
components: {selectTree
},
methods: {treeChangeFun(val) {console.log(val)},translateDataToTree(data) {data = JSON.parse(JSON.stringify(data))// 删除所有 children,以防止多次调用let checkArr = []data.forEach(function (item) {delete item.children;if (item.is_bind) {checkArr.push(item.department_id)}});let map = {}; // 构建mapdata.forEach(i => {map[i.department_id] = i; // 构建以id为键 当前数据为值});let treeData = [];data.forEach(child => {const mapItem = map[child.parent_id]; // 判断当前数据的parentId是否存在map中if (mapItem) { // 存在则表示当前数据不是最顶层数据// 注意: 这里的map中的数据是引用了arr的它的指向还是arr,当mapItem改变时arr也会改变,踩坑点// 这里判断mapItem中是否存在children, 存在则插入当前数据, 不存在则赋值children为[]然后再插入当前数据(mapItem.children || ( mapItem.children = [] )).push(child)} else { // 不存在则是组顶层数据treeData.push(child);}});return {treeData: treeData,checkArr: checkArr};}
}

data格式:
在这里插入图片描述

http://www.yayakq.cn/news/634271/

相关文章:

  • 网站建设音乐插件怎么弄网站和discuz同步登录
  • 海南网站建设哪里好wordpress无法上传exe
  • 沧州网站建设cztj合肥网站建设方案案例
  • wordpress采集网站上海住房城乡建设网站
  • 郑州市多商家网站制作公司微网站设置
  • 网站开发数据库设计html5 jsp做网站可以么
  • 网站建设投资风险分析业务推广方式有哪些
  • 北京网站优化技术创意网站建设排行榜
  • wordpress可以建网站吗聊城有什么网站制作公司
  • 网站建设中出现的错误代码网站维护公司
  • 杭州品格网站设计wordpress主题php详解
  • 门户网站建设投入diy科技制作网站
  • 电子商务成功的网站上海市政建设有限公司网站
  • 网站模板安装出现预先建设数据库会议展厅设计装修公司
  • 河南省住房和城乡建设厅网站确认书深圳建网站 (报价)
  • php做网站视频播放下载功能社区网站设计
  • aspx网站架设教程贵阳哪家网站做优化排名最好
  • html5 微网站 源码二手建筑铝模板哪里有卖
  • 米课中有个内贸网站建设图像生成器在线制作
  • 王晴儿网站建设方案建筑业大数据服务平台官网
  • 建设网站需要想好的问题做外贸网站需要什么
  • 淘宝网站建设设计模板学网站开发需要会什么
  • 视频网站开发架构东莞倣网站
  • 微网站开发语言python不用框架做网站
  • 网站可以只做移动端吗广州百度seo排名
  • 网站多语言界面建设方案韩国u17出线
  • 做效果图有哪些网站好看的wordpress博客主题
  • 想建一个免费的网站宠物网站设计模板
  • 路由器设置用来做网站空间吗河南郑州解封最新消息
  • 山东网站推广营销设计杭州有奖举报