封装组件,支持单选,多选,搜索,根据节点 id 默认选中对应的节点,勾选数据事件触发回调
效果图 (会不断更新 和修复一些 BUG 记得回来看看哦)
认真看组件配置属性,特别是传值的时候 defaultProps 配置的展示 key,因为最后有模拟 JSON 数据所以文章有点长
多选效果图: | 单选效果图: |
---|---|
![]() | ![]() |
# 一、子组件
<template> | |
<div> | |
<el-select | |
ref="searchSelect" | |
v-model="mineStatus" | |
:placeholder="placeholder" | |
:multiple="!single" | |
:size="size" | |
:disabled="disabled" | |
collapse-tags | |
:loading="loading" | |
@change="selectChange" | |
> | |
<div style="padding: 10px;"> | |
<el-input | |
v-if="filterable" | |
v-model="singleSearch" | |
placeholder="请输入搜索内容" | |
:size="size" | |
clearable | |
/> | |
</div> | |
<el-option | |
:value="mineStatusValue" | |
style="position: relative;width: 100%;" | |
:style="{ height: height + 'px', 'overflow-y': overflow }" | |
@click="doThis($event)" | |
> | |
<div style="height: 100%;" @click="doThis($event)"> | |
<div style="padding-right: 10px;" @click="doThis($event)"> | |
<el-tree | |
v-if="treeData.length" | |
ref="tree" | |
:data="treeData" | |
:show-checkbox="!single" | |
style="font-weight: 500;" | |
highlight-current | |
:props="defaultProps" | |
:default-expand-all="defaultExpandAll" | |
:default-checked-keys="defaultCheckedKeys" | |
:check-strictly="single" | |
:filter-node-method="filterNode" | |
node-key="id" | |
@check-change="handleCheckChange" | |
@node-click="clickNode" | |
/> | |
</div> | |
<div | |
v-if="!treeData.length" | |
style="width: 100%;height: 100%;background-color: #FFFFFF;text-align: center;" | |
> | |
暂无数据 | |
</div> | |
</div> | |
<div | |
v-show="load" | |
id="load" | |
style="position: absolute;left: 0;top: 0;height: 200px;width: 100%;" | |
/> | |
</el-option> | |
</el-select> | |
</div> | |
</template> | |
<!-- /** | |
* 组件说明 | |
* 属性: | |
* 参数 说明 类型 默认值 | |
* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
* placeholder 输入框占位文本 String ' 请选择 ' | |
* defaultProps 需要使用的展示字段值 Object {children: 'children',label: 'label'} | |
* data tree 的数据源 Array [] | |
* filterable 是否开启搜索功能 Boolean false | |
* single tree 下拉是否单选 Boolean false | |
* defaultExpandAll tree 是否展开全部节点 Boolean false | |
* defaultCheckedKeys 默认勾选节点 Array [] | |
* disabled 是否禁止操作 Boolean Array | |
* size el-option 大小尺寸选择 String medium | |
* | |
* 事件: | |
* selectTerrEvent 获取选中对象 返回数组 | |
*/ --> | |
<script> | |
const deepFind = (arr, condition, children) => { | |
const main = [] | |
try { | |
(function poll(arr, level) { | |
if (!Array.isArray(arr)) return | |
for (let i = 0; i < arr.length; i++) { | |
const item = arr[i] | |
main[level] = item | |
const isFind = (condition && condition(item, i, level)) || false | |
if (isFind) { | |
throw Error | |
} else if (children && item[children] && item[children].length) { | |
poll(item[children], level + 1) | |
} else if (i === arr.length - 1) { | |
main.length = main.length - 1 | |
} | |
} | |
})(arr, 0) | |
} catch (err) {} | |
return main | |
} | |
export default { | |
props: { | |
placeholder: { | |
type: String, | |
required: false, | |
default: '请选择' | |
}, | |
defaultProps: { | |
// 需要使用的展示字段值 | |
type: Object, | |
default: () => ({ | |
children: 'children', | |
label: 'label' | |
}) | |
}, | |
filterable: { | |
type: Boolean, // 是否开启搜索 | |
default: false | |
}, | |
single: { | |
type: Boolean, // 是否单选 | |
default: false | |
}, | |
data: { | |
type: Array, // 数据 | |
default: () => [] | |
}, | |
defaultExpandAll: { | |
type: Boolean, // 是否展开节点 | |
default: false | |
}, | |
defaultCheckedKeys: { | |
type: Array, | |
default: () => [] | |
}, | |
size: { | |
type: String, | |
default: 'medium' | |
}, | |
disabled: { | |
type: Boolean, | |
default: false | |
} | |
}, | |
data() { | |
return { | |
overflow: 'hidden', | |
height: 40, | |
load: false, | |
mineStatus: '', | |
mineStatusValue: [], | |
loading: false, | |
deferTimer: null, // 多选复选框高频查找的数据使用到的延时器变量 | |
loadingTips: null, | |
SearchData: [], // 搜索的数据 | |
treeData: [], // 渲染树的变量 | |
callbackDefault: null, // 更新数据 高频回调事件使用到的 延时器变量 | |
//timeID: null, // 搜索防抖 | |
singleSearch: '', // 单选搜索 | |
firstTime: false // 初次加载 状态 | |
} | |
}, | |
watch: { | |
singleSearch(newValue, oldValue) { | |
this.$refs.tree.filter(newValue) | |
}, | |
// 更新数据 / 清空输入框 | |
data(n) { | |
if (this.firstTime) { | |
if (Array.isArray(n)) { | |
if (n.length) { | |
this.height = 200 | |
this.overflow = 'auto' | |
} else { | |
this.height = 40 | |
this.overflow = 'hidden' | |
} | |
this.mineStatus = '' | |
this.mineStatusValue = [] | |
this.treeData = n | |
this.defaultCheckEvent(true) | |
} else { | |
console.error('data 属性必须是一个Array') | |
} | |
} | |
}, | |
// 更新勾选数据 | |
defaultCheckedKeys(newValue, oldValue) { | |
if (this.firstTime) { | |
clearTimeout(this.callbackDefault) | |
this.callbackDefault = setTimeout(() => { | |
this.defaultCheckEvent(true) | |
}, 300) | |
} | |
} | |
}, | |
created() { | |
const that = this | |
let dataType = true | |
// 等待 接口树 数据获取完成 | |
function dataTerr() { | |
if (!that.treeData.length && dataType) { | |
that.mineStatus = '获取数据中...' | |
setTimeout(() => { | |
that.treeData = that.data | |
dataTerr() | |
}, 400) | |
} else if (that.treeData.length) { | |
dataType = false | |
that.height = 200 | |
that.overflow = 'auto' | |
that.mineStatus = '' | |
// 是否开启默认勾选 | |
if (that.defaultCheckedKeys.length) { | |
that.defaultCheckEvent() | |
} | |
// 初次加载 完成 | |
that.firstTime = true | |
} | |
} | |
dataTerr() | |
// 2.5s 后不管有没要获取到数据 都停止 | |
setTimeout(() => { | |
dataType = false | |
that.firstTime = true | |
}, 2500) | |
}, | |
methods: { | |
// 过滤数据 返回搜索结果 | |
filterNode(value, data) { | |
if (!value) return true | |
return data[this.defaultProps.label].indexOf(value) !== -1 | |
}, | |
// 阻止事件冒泡 解决点击空白区域事件获取错误的数据 bug | |
doThis(event) { | |
this.$refs.searchSelect.blur() | |
event.stopPropagation() | |
}, | |
//select 框值改变时候触发的事件 | |
selectChange(e) { | |
if (this.single || !this.treeData.length) { | |
return false | |
} | |
const arrNew = [] | |
const dataLength = this.mineStatusValue.length | |
const eleng = e.length | |
for (let i = 0; i < dataLength; i++) { | |
for (let j = 0; j < eleng; j++) { | |
if (e[j] === this.mineStatusValue[i][this.defaultProps.label]) { | |
arrNew.push(this.mineStatusValue[i]) | |
break | |
} | |
} | |
} | |
this.$refs.tree.setCheckedNodes(arrNew) // 设置勾选的值 | |
}, | |
// 默认勾选 | |
defaultCheckEvent(lock) { | |
// 避免 多个监听数据更新时同时并发多次 | |
if (lock) { | |
this.firstTime = false | |
} | |
// 筛选出数据存放 | |
const defaultData = [] | |
// 根据树 id 递归树 筛选出对应的数据 | |
if (this.single) { | |
// 单选 | |
const myarr = deepFind( | |
this.treeData, | |
(item, index, level) => item.id === this.defaultCheckedKeys[0], | |
this.defaultProps.children | |
) | |
myarr.forEach((v, l) => { | |
if (v.id === this.defaultCheckedKeys[0]) { | |
defaultData.push(v) | |
} | |
}) | |
} else { | |
// 多选 | |
this.defaultCheckedKeys.forEach((id, k) => { | |
const myarr = deepFind( | |
this.treeData, | |
(item, index, level) => item.id === id, | |
this.defaultProps.children | |
) | |
myarr.forEach((v, l) => { | |
if (v.id === id) { | |
defaultData.push(v) | |
} | |
}) | |
}) | |
} | |
// 更新输入框内的默认勾选值 | |
const arrLabel = [] | |
const arr = [] | |
defaultData.forEach((item) => { | |
arrLabel.push(item[this.defaultProps.label]) | |
arr.push(item) | |
}) | |
this.mineStatusValue = arr | |
if (this.single) { | |
this.mineStatus = arrLabel[0] | |
} else { | |
this.mineStatus = arrLabel | |
} | |
// 解除 状态 | |
if (lock) { | |
this.firstTime = true | |
} | |
this.$emit('selectTerrEvent', defaultData) | |
if (!this.mineStatus.length) { | |
this.$refs.tree && this.$refs.tree.setCheckedNodes([]) | |
} | |
}, | |
// 搜索 监听 | |
search() { | |
this.loading = true | |
const val = this.$refs.searchSelect.$data.query | |
this.SearchData = [] | |
this.treeData = this.data | |
setTimeout(() => { | |
this.loading = false | |
this.$refs.tree.filter(val) | |
}, 500) | |
}, | |
// 单选点击 复选框事件 @check="handleCheck" | |
handleCheck(data) { | |
if (!this.single) { | |
return | |
} | |
this.$refs.tree.setCheckedKeys([]) // 删除所有选中节点 | |
this.$refs.tree.setCheckedNodes([data]) // 选中已选中节点 | |
}, | |
// 单选模式事件 | |
clickNode(data, node, obj) { | |
if (!this.single) { | |
// 多选不执行 | |
const index = this.mineStatusValue.findIndex((d) => d.id === data.id) | |
if (index > -1) { | |
this.$refs.tree.setChecked(data, false) | |
} else { | |
this.$refs.tree.setChecked(data, true) | |
} | |
return | |
} | |
const arrLabel = [] | |
const arr = []; | |
[data].forEach((item) => { | |
arrLabel.push(item[this.defaultProps.label]) | |
arr.push(item) | |
}) | |
this.mineStatusValue = arr | |
this.mineStatus = arrLabel[0] | |
this.$refs.searchSelect.blur() // 失去焦点 关闭下拉框 | |
// 传递数据给父 | |
this.$emit('selectTerrEvent', [data]) | |
}, | |
// 获取当前复选框 选中的值 赋值到输入框里 | |
handleCheckChange() { | |
if (this.deferTimer == null) { | |
this.load = true | |
this.loadingTips = this.$loading({ | |
lock: true, | |
text: 'Loading', | |
spinner: 'el-icon-loading', | |
background: 'rgba(255, 255, 255, 0.5)', | |
target: document.getElementById('load') | |
}) | |
} | |
const res = this.$refs.tree.getCheckedNodes(true, true) // 这里两个 true,1. 是否只是叶子节点 2. 是否包含半选节点(就是使得选择的时候不包含父节点) | |
const arrLabel = [] | |
const arr = [] | |
res.forEach((item) => { | |
arrLabel.push(item[this.defaultProps.label]) | |
arr.push(item) | |
}) | |
clearTimeout(this.deferTimer) | |
this.deferTimer = setTimeout(() => { | |
this.mineStatusValue = arr | |
this.mineStatus = arrLabel | |
this.load = false | |
this.loadingTips.close() | |
this.deferTimer = null | |
this.$emit('selectTerrEvent', res) | |
}, 200) | |
} | |
} | |
} | |
</script> | |
<style scoped> | |
.el-tooltip.item { | |
width: max-content; | |
display: inline-block; | |
border: none; | |
outline: none; | |
} | |
.el-select-dropdown__item.hover, | |
.el-select-dropdown__item:hover { | |
background-color: #ffffff; | |
} | |
.el-select-dropdown__item { | |
padding: 0; | |
} | |
.treedownwidth { | |
width: 13px !important; | |
} | |
.show { | |
display: block; | |
} | |
.comtreedown { | |
height: 100%; | |
} | |
.comtreedown .treedown { | |
width: 220px; | |
height: 100%; | |
display: flex; | |
flex-direction: column; | |
color: #ffffff; | |
position: relative; | |
} | |
.comtreedown .treedown .title { | |
height: 35px; | |
line-height: 35px; | |
font-size: 16px; | |
text-indent: 14px; | |
border-bottom: 1px solid #fff; | |
overflow: hidden; | |
text-overflow: ellipsis !important; | |
white-space: nowrap !important; | |
cursor: pointer; | |
} | |
.comtreedown .treedown .left { | |
position: absolute; | |
z-index: 8; | |
top: 50%; | |
right: 0px; | |
width: 13px; | |
height: 72px; | |
margin-top: -36px; | |
cursor: pointer; | |
} | |
.comtreedown .treedown .left img { | |
display: none; | |
} | |
/* 修改默认样式 */ | |
.el-tree-node__expand-icon { | |
color: #ffffff; | |
} | |
.comtreedown .el-tree { | |
width: 100%; | |
height: 100%; | |
padding: 10px; | |
color: #ffffff; | |
overflow: auto; | |
border-bottom-left-radius: 10px; | |
} | |
.el-tree-node__content { | |
width: max-content; | |
min-width: 100%; | |
color: #fff; | |
} | |
.el-tree-node, | |
.el-tree-node__children { | |
min-width: 100%; | |
width: max-content; | |
} | |
.el-tree-node__label { | |
width: auto; | |
overflow: hidden; | |
text-overflow: ellipsis !important; | |
white-space: nowrap !important; | |
} | |
.el-tree-node__children .el-tree-node__label { | |
width: auto; | |
overflow: hidden; | |
-webkit-overflow: hidden; | |
text-overflow: ellipsis !important; | |
white-space: nowrap !important; | |
} | |
span.el-icon-caret-right:before { | |
content: ""; | |
} | |
span.el-icon-caret-right:after { | |
content: "\E60E"; | |
} | |
</style> |
# 二、父页面
<template> | |
<div> | |
<el-form :inline="true" :model="pageParams.params" class="demo-form-inline"> | |
<el-form-item label="下拉树"> | |
<select-tree | |
size="mini" | |
:data="getData" | |
:filterable="true" | |
:default-expand-all="true" | |
:default-props="defaultProps" | |
@selectTerrEvent="selectTerrEvetn" | |
/> | |
</el-form-item> | |
</el-form> | |
</div> | |
</template> | |
<script> | |
import SelectTree from './select-tree.vue' | |
export default { | |
components: { | |
SelectTree | |
}, | |
data() { | |
const _this = this | |
return { | |
pageParams: {}, | |
defaultProps: { | |
children: 'children', | |
label: 'name' | |
}, | |
getData: [] | |
} | |
}, | |
computed: {}, | |
watch: {}, | |
created() { | |
this.getData = [ | |
{ | |
id: '-1', | |
name: '前置库系统', | |
pid: null, | |
children: [ | |
{ | |
id: '1', | |
name: 'Mysql', | |
pid: '-1', | |
children: [ | |
{ | |
id: '021d75b2eea64d579effd98fcf173c1c', | |
name: 'mysql连接19', | |
pid: '1', | |
children: null | |
}, | |
{ | |
id: 'dcde763b6fbf4c24af3eb8c419405c7f', | |
name: 'xp_制作映射表数据', | |
pid: '1', | |
children: null | |
}, | |
{ | |
id: 'c5868ea98e574c10a6396197d8ea0be8', | |
name: 'SOURCEMySql', | |
pid: '1', | |
children: null | |
}, | |
{ | |
id: 'c7778794bd1f4c24a87bd8384846945d', | |
name: 'fd', | |
pid: '1', | |
children: null | |
}, | |
{ | |
id: '5206c716b9e34ebcb6d18135a29012c7', | |
name: 'cx', | |
pid: '1', | |
children: null | |
}, | |
{ | |
id: 'ec358fba11d44d15a96276da2d8c92b6', | |
name: 'local12345', | |
pid: '1', | |
children: null | |
}, | |
{ | |
id: '08a1d89a54e64c98ba3dfc4c56de70d8', | |
name: 'fd2', | |
pid: '1', | |
children: null | |
}, | |
{ | |
id: '85a3bace64bf49c49997c89e976c1797', | |
name: 'fd1', | |
pid: '1', | |
children: null | |
}, | |
{ | |
id: '044bc4a61dc945079592ef6b119f5611', | |
name: 'xwscon', | |
pid: '1', | |
children: null | |
}, | |
{ | |
id: '2b2add5ab7624561a89e023f1526df4e', | |
name: 'order', | |
pid: '1', | |
children: null | |
}, | |
{ | |
id: 'cb200d034acf4ea6b729b0b17820b5ee', | |
name: '206fd', | |
pid: '1', | |
children: null | |
}, | |
{ | |
id: '98ecb1222d9e4c1f9a5db30c44875b8e', | |
name: 'CJY_CS', | |
pid: '1', | |
children: null | |
}, | |
{ | |
id: '5edfc7e8638845128e44f2a4da7de7eb', | |
name: '测试数值类型', | |
pid: '1', | |
children: null | |
} | |
] | |
}, | |
{ | |
id: '2', | |
name: 'Oracle', | |
pid: '-1', | |
children: [ | |
{ | |
id: 'a3b7f6eec7134de8b85bbd9dc57d07c5', | |
name: 'local', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '4b80404a54d54812bb3409ddf21442ac', | |
name: 'bzk', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '5610963be596416a9deb83ec32a16f19', | |
name: 'by', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: 'ead9bd5004b44e8ba791bcb2511d0b11', | |
name: 'gw测试', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '9d717d68fbe141baa8c8380fa52bc51d', | |
name: 'ORA123', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '739a330fdbba4d7ea9378ec169c30e91', | |
name: '206ORA', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: 'fb48a2e3177e4c4a910a7a0c81c3e9ac', | |
name: 'xp_采集流程', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '197030e0295c4546ad3087da9c312da2', | |
name: '测试大小写', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: 'a9fad7c393b74103ba3beea7719c90e2', | |
name: 'xp_数据源配置', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '34ed62284e624bb0a4ae756fef82c9de', | |
name: 'oracle连接', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '65f4ea98c9de4f6daa7693d2fd0ab43c', | |
name: '206123', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '7d72b8e291464d129c95592752f839ce', | |
name: 'MT18', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '0c6acdf12d554d6ea39d986c596bc4d2', | |
name: '监控测试', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '9724796eb3aa45baa225c936e549bd81', | |
name: 'SOURCE2', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '174987a5a60b45b5beedd088dd42a02a', | |
name: 'SunOrcl', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '9899e04067554df69c67cf5b196e98b7', | |
name: 'by1', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: 'd314fbad49d14e05a4279fc4ccb4ce66', | |
name: 'MT', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: 'c8cbeff921e547e483596074a9e324fb', | |
name: 'gw_bzk', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '45e29dc086b544678e9125a1c2f0e89b', | |
name: 'YGH', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '5f21d117c256418a801eae9ee27d8cc3', | |
name: 'CHATESTU', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: 'e29a448c8c4c4e37a75f64ad87479cfd', | |
name: 'MT041201', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '79802451f0bb4a0f9918d24cbb3df478', | |
name: 'MT0415', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '4066e261f0bd4aab94880080594f2f42', | |
name: 'LOCS', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '63c531c5ec30436bb83c3f153bf4ea04', | |
name: 'bzk2', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '5269f15244b84074b60789a54d839ebe', | |
name: 'GB', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: 'f76d9389e35d40e7ba4b9d5604f9821e', | |
name: 'GW测试', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '87c3ccb1d9224972901e1cea2fee88a8', | |
name: 'orcl202', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: 'a9cb35c1e9564ac88a88b2aef38aeafb', | |
name: '测试1', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '30b36c6022834b4c8fbba6b1400f7e85', | |
name: 'TEST_SUB', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '4f8f187bc8e046ccb9c0afaa2e30fa6b', | |
name: 'XP_DRI', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '47b79c6e096248e18a51568d763e9ac5', | |
name: 'ORCLCHA', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '27af4fdba1df477295f5978ca6f0704c', | |
name: 'XP_订阅分发1', | |
pid: '2', | |
children: null | |
}, | |
{ | |
id: '2224cfbd964e444d96acddc404622491', | |
name: 'XP_订阅分发2', | |
pid: '2', | |
children: null | |
} | |
] | |
}, | |
{ | |
id: '10', | |
name: 'DM', | |
pid: '-1', | |
children: [ | |
{ | |
id: '362eede69f654260b891d1a9ac61cc68', | |
name: '达梦连接', | |
pid: '10', | |
children: null | |
}, | |
{ | |
id: '8331b61efdca4c82a183c69da90d5099', | |
name: '达梦AAA', | |
pid: '10', | |
children: null | |
}, | |
{ | |
id: '65eb1c3012584d9e865d2f0447fd5eb0', | |
name: 'zb', | |
pid: '10', | |
children: null | |
}, | |
{ | |
id: '37562043808646709b003badbdeab8e5', | |
name: 'bzk1', | |
pid: '10', | |
children: null | |
}, | |
{ | |
id: 'b39484a1f6654c6ab5c2bac8763e652e', | |
name: '达梦GW', | |
pid: '10', | |
children: null | |
}, | |
{ | |
id: '0d905fdf73a94948a91406bc508b607d', | |
name: 'DM数值类型', | |
pid: '10', | |
children: null | |
}, | |
{ | |
id: '10132ff9686145929a24de9b5c9c6eb4', | |
name: '测试dm转Oracle', | |
pid: '10', | |
children: null | |
} | |
] | |
}, | |
{ | |
id: '12', | |
name: 'Kingbase8', | |
pid: '-1', | |
children: [ | |
{ | |
id: 'c933e63315ee4c64b70a5fa348c83059', | |
name: 'xp_1111_test1', | |
pid: '12', | |
children: null | |
}, | |
{ | |
id: 'a5b761ecb97a4930a8ecae16219c6fd9', | |
name: 'xp_add_1', | |
pid: '12', | |
children: null | |
}, | |
{ | |
id: '12c96463ed464a7da6c0696cf272b6e0', | |
name: 'xp_test_kingbase8_22', | |
pid: '12', | |
children: null | |
}, | |
{ | |
id: '14f306c4ccc94ddfb4b0cafcb79c3982', | |
name: 'XP_TEST_1', | |
pid: '12', | |
children: null | |
}, | |
{ | |
id: '9a68cbf199534e28a6c8779036977edb', | |
name: '金仓C', | |
pid: '12', | |
children: null | |
}, | |
{ | |
id: '6097a77761d64e83a3a481fa9b4e000f', | |
name: '金仓m', | |
pid: '12', | |
children: null | |
}, | |
{ | |
id: '6941881032414bd2858a64efcf36db5e', | |
name: 'sunKing', | |
pid: '12', | |
children: null | |
}, | |
{ | |
id: '91b67d1b3d9049c597544302f4e0053a', | |
name: 'qztable', | |
pid: '12', | |
children: null | |
}, | |
{ | |
id: '645aadeb3d5542dfb71801c5600ef857', | |
name: 'king8', | |
pid: '12', | |
children: null | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
beforeDestroy() {}, | |
methods: { | |
selectTerrEvetn(data) { | |
console.log(data, '勾选了') | |
} | |
} | |
} | |
</script> | |
<style scoped></style> |