|
@@ -23,6 +23,7 @@
|
|
is-load-menu
|
|
is-load-menu
|
|
:h-props="treeProps"
|
|
:h-props="treeProps"
|
|
tree-key="id"
|
|
tree-key="id"
|
|
|
|
+ :auto-expand-keys="autoExpandKeys"
|
|
@load-menu="treeMenu"
|
|
@load-menu="treeMenu"
|
|
@load="treeLoadNode"
|
|
@load="treeLoadNode"
|
|
@node-tap="treeNodeTap"
|
|
@node-tap="treeNodeTap"
|
|
@@ -36,22 +37,25 @@
|
|
</hc-lazy-tree>
|
|
</hc-lazy-tree>
|
|
</template>
|
|
</template>
|
|
<template v-if="isTreeMode === 2">
|
|
<template v-if="isTreeMode === 2">
|
|
- <hc-data-tree
|
|
|
|
- ref="treeRef2"
|
|
|
|
- is-load-menu
|
|
|
|
- :h-props="treeProps"
|
|
|
|
- tree-key="id"
|
|
|
|
- :datas="treeData"
|
|
|
|
- @load-menu="treeMenu"
|
|
|
|
- @node-tap="treeNodeTap"
|
|
|
|
- @menu-tap="treeMenuClick"
|
|
|
|
- >
|
|
|
|
- <template #name="{ data }">
|
|
|
|
- <span class="text-16px font-400">{{
|
|
|
|
- data.title
|
|
|
|
- }}</span>
|
|
|
|
- </template>
|
|
|
|
- </hc-data-tree>
|
|
|
|
|
|
+ <div v-loading="treeLoading">
|
|
|
|
+ <hc-data-tree
|
|
|
|
+ ref="treeRef2"
|
|
|
|
+ is-load-menu
|
|
|
|
+ :h-props="treeProps"
|
|
|
|
+ tree-key="id"
|
|
|
|
+ :datas="treeData"
|
|
|
|
+
|
|
|
|
+ @load-menu="treeMenu"
|
|
|
|
+ @node-tap="treeNodeTap"
|
|
|
|
+ @menu-tap="treeMenuClick"
|
|
|
|
+ >
|
|
|
|
+ <template #name="{ data }">
|
|
|
|
+ <span class="text-16px font-400">{{
|
|
|
|
+ data.title
|
|
|
|
+ }}</span>
|
|
|
|
+ </template>
|
|
|
|
+ </hc-data-tree>
|
|
|
|
+ </div>
|
|
</template>
|
|
</template>
|
|
</hc-card>
|
|
</hc-card>
|
|
</hc-tab-card>
|
|
</hc-tab-card>
|
|
@@ -219,7 +223,7 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
-import { ref, watch } from 'vue'
|
|
|
|
|
|
+import { onMounted, ref, watch } from 'vue'
|
|
import { HcDelMsg, HcFirmMsg } from 'hc-vue3-ui'
|
|
import { HcDelMsg, HcFirmMsg } from 'hc-vue3-ui'
|
|
import { getArrValue, isNullES } from 'js-fast-way'
|
|
import { getArrValue, isNullES } from 'js-fast-way'
|
|
import HcTreeNodeForm from './tree-form.vue'
|
|
import HcTreeNodeForm from './tree-form.vue'
|
|
@@ -227,6 +231,7 @@ import HcTreeNodeSort from './tree-sort.vue'
|
|
import mainApi from '~api/project/tree'
|
|
import mainApi from '~api/project/tree'
|
|
import archiveApi from '~api/desk/archive-tree'
|
|
import archiveApi from '~api/desk/archive-tree'
|
|
import entryConfig from '../../desk/wbs/entry-config.vue'
|
|
import entryConfig from '../../desk/wbs/entry-config.vue'
|
|
|
|
+import { getStoreValue, setStoreValue } from '~uti/storage'
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
data: {
|
|
data: {
|
|
type: Object,
|
|
type: Object,
|
|
@@ -241,6 +246,11 @@ const emit = defineEmits(['close'])
|
|
const isShow = defineModel('modelValue', {
|
|
const isShow = defineModel('modelValue', {
|
|
default: false,
|
|
default: false,
|
|
})
|
|
})
|
|
|
|
+const autoExpandKeys = ref([])
|
|
|
|
+//渲染完成
|
|
|
|
+onMounted(() => {
|
|
|
|
+ autoExpandKeys.value = getStoreValue('autoExpandKeys') || []
|
|
|
|
+})
|
|
|
|
|
|
//监听数据
|
|
//监听数据
|
|
const dataInfo = ref(props.data)
|
|
const dataInfo = ref(props.data)
|
|
@@ -299,7 +309,8 @@ const treeMenu = ({ level }, resolve) => {
|
|
}
|
|
}
|
|
|
|
|
|
//菜单被点击
|
|
//菜单被点击
|
|
-const treeMenuClick = ({ key, data, node }) => {
|
|
|
|
|
|
+const treeMenuClick = ({ key, data, node, keys }) => {
|
|
|
|
+ setStoreValue('autoExpandKeys', keys)
|
|
if (key === 'add') {
|
|
if (key === 'add') {
|
|
if (Number(data.isStorageNode) !== 1) {
|
|
if (Number(data.isStorageNode) !== 1) {
|
|
treeFormType.value = '新增'
|
|
treeFormType.value = '新增'
|
|
@@ -371,10 +382,13 @@ const pseudoRefresh = () => {
|
|
|
|
|
|
//全加载树
|
|
//全加载树
|
|
const treeData = ref([])
|
|
const treeData = ref([])
|
|
|
|
+const treeLoading = ref(false)
|
|
const getTreeAllData = async () => {
|
|
const getTreeAllData = async () => {
|
|
|
|
+ treeLoading.value = true
|
|
const { data } = await mainApi.allTree({
|
|
const { data } = await mainApi.allTree({
|
|
projectId: dataInfo.value.id,
|
|
projectId: dataInfo.value.id,
|
|
})
|
|
})
|
|
|
|
+ treeLoading.value = false
|
|
treeData.value = getArrValue(data)
|
|
treeData.value = getArrValue(data)
|
|
}
|
|
}
|
|
|
|
|
|
@@ -430,8 +444,9 @@ const archiveTreeInit = async () => {
|
|
|
|
|
|
//树节点被点击
|
|
//树节点被点击
|
|
const nodeInfo = ref({})
|
|
const nodeInfo = ref({})
|
|
-const treeNodeTap = ({ data }) => {
|
|
|
|
|
|
+const treeNodeTap = ({ data, keys }) => {
|
|
nodeInfo.value = data
|
|
nodeInfo.value = data
|
|
|
|
+ setStoreValue('autoExpandKeys', keys)
|
|
}
|
|
}
|
|
//页面分割
|
|
//页面分割
|
|
const splitOptions = { sizes: [50, 50], snapOffset: 0, minSize: [300, 300] }
|
|
const splitOptions = { sizes: [50, 50], snapOffset: 0, minSize: [300, 300] }
|