123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- <template>
- <ElTree ref="treeRef" :class="ui" :data="treeData" :default-expanded-keys="['1570335808521502732']" :indent="0"
- :props="treeProps" accordion
- auto-expand-parent class="hc-tree-node tree-line el-radio-group" current-node-key="1570335808521502732" highlight-current
- node-key="primaryKeyId" @node-click="treeClick">
- <template #default="{ node, data }">
- <div :id="`${idPrefix}${data['primaryKeyId']}`" class="data-custom-tree-node">
- <div class="label">{{ node.label }}</div>
- </div>
- </template>
- </ElTree>
- </template>
- <script setup>
- import {ref, nextTick, watch} from "vue";
- import {getArrValue} from "js-fast-way"
- import {getProjectTree} from "~api/tentative";
- //参数
- const props = defineProps({
- projectId: {
- type: [String, Number],
- default: ''
- },
- contractId: {
- type: [String, Number],
- default: ''
- },
- wbsId: {
- type: [String, Number],
- default: ''
- },
- wbsType: {
- type: [String, Number],
- default: ''
- },
- idPrefix: {
- type: String,
- default: 'test-tree1-'
- },
- ui: {
- type: String,
- default: ''
- },
- })
- //变量
- const treeRef = ref(null)
- const treeProps = ref({
- label: 'title',
- children: 'children',
- isLeaf: 'hasChildren'
- })
- const treeData = ref([])
- const projectId = ref(props.projectId);
- const contractId = ref(props.contractId);
- const wbsId = ref(props.wbsId);
- //const tenantId = ref(props.tenantId);
- //监听
- watch(() => [
- props.projectId,
- props.contractId,
- props.wbsId,
- ], ([pid, cid, wbs_id]) => {
- projectId.value = pid
- contractId.value = cid
- wbsId.value = wbs_id
- })
- //加载中
- nextTick(() => {
- getTreeData()
- })
- //获取数据
- const isLoading = ref(false)
- const getTreeData = async () => {
- isLoading.value = true
- const {data} = await getProjectTree({
- projectId: projectId.value,
- // contractId: contractId.value,
- wbsId: wbsId.value,
- })
- //处理数据
- isLoading.value = false
- treeData.value = getArrValue(data)
- //最后一个,执行点击
- /*if (clickKey) {
- await nextTick(() => {
- document.getElementById(`${idPrefix.value}${clickKey}`)?.click()
- })
- }*/
- }
- //事件
- const emit = defineEmits(['nodeTap'])
- //节点被点击
- const treeClick = async (data) => {
- emit('nodeTap', data)
- }
- </script>
- <style lang="scss" scoped>
- @import "../../../../styles/app/tree.scss";
- </style>
|