diff --git a/src/views/pages/framework/extramenu/extramenu-manage.vue b/src/views/pages/framework/extramenu/extramenu-manage.vue index 7dca73edd627450e2d2d403a04fb050c7a6f4db0..f4c8bf17c2a87dc70f7f4fbec74bde085d0f8005 100644 --- a/src/views/pages/framework/extramenu/extramenu-manage.vue +++ b/src/views/pages/framework/extramenu/extramenu-manage.vue @@ -80,7 +80,6 @@ export default { } }, update(list, parentId) { - console.log('update', parentId); this.$api.framework.extramenu.moveExtramenu({ menuList: list }).then(res => { if (res.Status === 'OK') { this.$Message.success(this.$t('message.executesuccess')); @@ -92,11 +91,23 @@ export default { this.$api.framework.extramenu .getMenuTreeList() .then(res => { - this.menuList = res.Return; + this.menuList = this.normalizeMenuList(res.Return || []); }) .finally(() => { this.loadingShow = false; }); + }, + normalizeMenuList(list = []) { + // 修复空目录节点无法拖入菜单的问题 + list.forEach(item => { + if (item && item.type === 0 && item.childCount === 0) { + item.children = []; + } + if (item && Array.isArray(item.children) && item.children.length > 0) { + this.normalizeMenuList(item.children); + } + }); + return list; } }, filter: {}, diff --git a/src/views/pages/framework/extramenu/menu-treeview.vue b/src/views/pages/framework/extramenu/menu-treeview.vue index cb572c9fcea6e23f7a592a909384c93310b3d2eb..8e486267c99bc561ceb23dacdce033057838d79b 100644 --- a/src/views/pages/framework/extramenu/menu-treeview.vue +++ b/src/views/pages/framework/extramenu/menu-treeview.vue @@ -5,10 +5,10 @@ tag="div" class="dataSource-ul" :list="childrenList" - :group="{ name: 'item-sub' }" :move="checkMove" handle=".tsfont-drag" :forceFallback="false" + :data-parentid="parentId" @start="moveStart" @sort="moveEnd" @remove="moveRemove" @@ -48,10 +48,10 @@ d.id == targetParentId); + if (parentNode && parentNode.type === 0) { + // 只能拖到目录下面 + this.newParentId = parentNode.id; + return true; + } else { + // 链接节点不允许有子节点 + return false; + } + } return false; }, moveStart(e) { this.currentId = e.item.attributes.id.value; this.currentNode = this.childrenList.find(d => d.id == this.currentId); - console.log(this.currentId, this.currentNode); }, update() { - console.log('update', this.parentId); this.$emit('update', this.childrenList, this.parentId); }, moveEnd(evt) { - console.log('moveEnd'); if (this.needUpdate) { - console.log('update node'); if (this.currentNode && this.newParentId !== null) { this.$set(this.currentNode, 'parentId', this.newParentId); this.newParentId = null; @@ -213,20 +232,6 @@ export default { }, isOpen(cd) { this.$set(cd, '_isHidden', !cd._isHidden); - }, - setItem(item) { - this.$set(item, 'isShow', this.search); - this.$set(item, 'isRequest', !this.search); - if (item.children && item.children.length > 0) { - item.children.forEach(citem => { - this.$set(citem, 'isShow', true); - this.$set(citem, 'isRequest', true); - this.setItem(citem); - }); - } else { - this.$set(item, 'isShow', false); - this.$set(item, 'isRequest', false); - } } }, filter: {}, @@ -235,27 +240,16 @@ export default { return { animation: 150, scroll: true, - group: 'description', disabled: false, - ghostClass: 'ghost' - }; - }, - showOpen() { - return function(item) { - let KEY = false; - let cKEY = false; - if (item.childCount > 0) { - KEY = true; - } - - return KEY; + ghostClass: 'ghost', + group: { name: 'tree', pull: true, put: true } }; } }, watch: { children: { handler(newVal) { - this.childrenList = newVal; + this.childrenList = newVal || []; }, deep: true, immediate: true