|
@@ -19,8 +19,9 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import {onMounted, ref, watch} from 'vue'
|
|
|
-import {getArrValue} from "js-fast-way";
|
|
|
+import {getCurrentInstance, nextTick, onMounted, ref, watch} from 'vue'
|
|
|
+import {getArrValue, isNullES} from "js-fast-way";
|
|
|
+const instance = getCurrentInstance().proxy
|
|
|
|
|
|
//参数
|
|
|
const props = defineProps({
|
|
@@ -155,6 +156,25 @@ const setLazyLoad = (data, arr) => {
|
|
|
if (data.level === 0) {
|
|
|
nodeData.value = newNodeData
|
|
|
}
|
|
|
+ //节点自动展开的处理
|
|
|
+ const keys = getArrValue(AutoExpandKeys.value)
|
|
|
+ if(keys.length > 0 && (keys.length - 1) === data.level) {
|
|
|
+ const item = newNodeData.find(item => item.key === keys[data.level])
|
|
|
+ if(!isNullES(item)) {
|
|
|
+ nextTick(() => {
|
|
|
+ instance.treeModule.treeNodeClick('tree-' + item.key)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //如果没有自动展开的,那么自动展开第一个节点
|
|
|
+ if (keys.length <= 0 && data.level === 0) {
|
|
|
+ const item = newNodeData.length > 0 ? newNodeData[0] : {}
|
|
|
+ if(!isNullES(item)) {
|
|
|
+ nextTick(() => {
|
|
|
+ instance.treeModule.treeNodeClick('tree-' + item.key)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -178,9 +198,20 @@ const ifCheckData = (data, item) => {
|
|
|
}
|
|
|
|
|
|
//树节点被点击
|
|
|
-const treeNodeTap = (item) => {
|
|
|
+const treeNodeTap = async (item) => {
|
|
|
currentNodeKey.value = item.key
|
|
|
- emit('nodeTap', item)
|
|
|
+ let autoKeysArr = []
|
|
|
+ await getNodeExpandKeys(item, autoKeysArr)
|
|
|
+ const autoKeys = autoKeysArr.reverse()
|
|
|
+ emit('nodeTap', item, autoKeys)
|
|
|
+}
|
|
|
+
|
|
|
+//处理自动展开的节点KEY
|
|
|
+const getNodeExpandKeys = async (item, newKeys) => {
|
|
|
+ if (item.key && item.level > 0) {
|
|
|
+ newKeys.push(item.key)
|
|
|
+ await getNodeExpandKeys(item.parentNodes, newKeys)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//获取选中的key
|
|
@@ -221,6 +252,16 @@ defineExpose({
|
|
|
})
|
|
|
</script>
|
|
|
|
|
|
+<script module="treeModule" lang="renderjs">
|
|
|
+export default {
|
|
|
+ methods: {
|
|
|
+ treeNodeClick(id) {
|
|
|
+ document.getElementById(id).click();
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
<style lang="scss">
|
|
|
@import "./style.scss";
|
|
|
</style>
|