update 主节点允许配置

This commit is contained in:
2021-05-06 14:10:01 +08:00
parent b36f1e3f6d
commit cc3d201581

View File

@@ -1,5 +1,4 @@
import Swiper from 'swiper' import Swiper from 'swiper'
import { Empty } from 'ant-design-vue'
let timer, swiper let timer, swiper
@@ -14,6 +13,17 @@ export default {
default: false, default: false,
type: Boolean type: Boolean
}, },
replaceFields: {
default() {
return {
value: 'id',
title: 'title',
children: 'children'
}
},
type: Object
}
}, },
data() { data() {
@@ -68,15 +78,15 @@ export default {
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
const item = data[i] const item = data[i]
path[level] = item.title path[level] = item[this.replaceFields.title]
if (item.id === this.selectedKeys[0]) { if (item[this.replaceFields.value] === this.selectedKeys[0]) {
path.length = level + 1 path.length = level + 1
return true return true
} }
if (item.children && item.children.length) { if (item[this.replaceFields.children] && item[this.replaceFields.children].length) {
const found = findPath(item.children, level + 1) const found = findPath(item[this.replaceFields.children], level + 1)
if (found) { if (found) {
return true return true
} }
@@ -130,7 +140,7 @@ export default {
onSearch(value) { onSearch(value) {
const expandedKeys = this.list const expandedKeys = this.list
.map(p => { .map(p => {
if (p.title.indexOf(value) > -1) { if (p[this.replaceFields.title].indexOf(value) > -1) {
return this.getParentKey(p.key, this.data) return this.getParentKey(p.key, this.data)
} }
return null return null
@@ -151,7 +161,7 @@ export default {
const selectedIds = [] const selectedIds = []
selectedKeys.forEach(p => { selectedKeys.forEach(p => {
const data = this.list.find(m => m.key === p) const data = this.list.find(m => m.key === p)
selectedIds.push(data.id) selectedIds.push(data[this.replaceFields.value])
}) })
this.selectedKeys = selectedIds this.selectedKeys = selectedIds
this.$emit('select', selectedIds) this.$emit('select', selectedIds)
@@ -172,8 +182,8 @@ export default {
n[n.length - 1] = i n[n.length - 1] = i
p.key = n.join('-') p.key = n.join('-')
p.scopedSlots = { title: 'title' } p.scopedSlots = { title: 'title' }
if (p.children) { if (p[this.replaceFields.children]) {
this.generateKey(p.children, Object.assign([], n)) this.generateKey(p[this.replaceFields.children], Object.assign([], n))
} }
}) })
return data return data
@@ -182,10 +192,14 @@ export default {
generateList(data) { generateList(data) {
// 这里获取不到Key // 这里获取不到Key
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
const { key, id, title, children } = data[i] const { key } = data[i]
this.list.push({ key, id, title }) this.list.push({
if (children) { key,
this.generateList(children) id: data[i][this.replaceFields.value],
title: data[i][this.replaceFields.title]
})
if (data[i][this.replaceFields.children]) {
this.generateList(data[i][this.replaceFields.children])
} }
} }
}, },
@@ -194,11 +208,11 @@ export default {
let parentKey; let parentKey;
for (let i = 0; i < tree.length; i++) { for (let i = 0; i < tree.length; i++) {
const node = tree[i] const node = tree[i]
if (node.children) { if (node[this.replaceFields.children]) {
if (node.children.some(item => item.key === key)) { if (node[this.replaceFields.children].some(item => item.key === key)) {
parentKey = node.key parentKey = node.key
} else if (this.getParentKey(key, node.children)) { } else if (this.getParentKey(key, node[this.replaceFields.children])) {
parentKey = this.getParentKey(key, node.children) parentKey = this.getParentKey(key, node[this.replaceFields.children])
} }
} }
} }