u
This commit is contained in:
1 parent
f572dce2f6
commit
e99a9fb274
356 files changed
+28877
-1055
No files matched your search
@@ -0,0 +1,53 @@
|
||||
<script setup lang="ts">
|
||||
// fieldNames 适配后端结构;#title 插槽自定义节点渲染;节点字段可控制图标/禁用
|
||||
import { ref } from 'vue'
|
||||
import { G3Button, G3Tag, G3Tree, type TreeNodeData } from '@g3soft/ui'
|
||||
import { Folder, FileText } from '@lucide/vue'
|
||||
|
||||
// 后端字段:id / name / nodes
|
||||
const treeData = ref<TreeNodeData[]>([
|
||||
{
|
||||
id: 'f1',
|
||||
name: '设计稿',
|
||||
icon: Folder,
|
||||
nodes: [
|
||||
{ id: 'f1-1', name: '首页.sketch', icon: FileText },
|
||||
{ id: 'f1-2', name: '详情页.sketch', icon: FileText, disabled: true },
|
||||
],
|
||||
},
|
||||
{ id: 'f2', name: '需求文档.md', icon: FileText },
|
||||
])
|
||||
|
||||
const selectedKeys = ref<string[]>([])
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div style="max-width: 360px">
|
||||
<G3Tree
|
||||
v-model:selected-keys="selectedKeys"
|
||||
:tree-data="treeData"
|
||||
:field-names="{ key: 'id', title: 'name', children: 'nodes' }"
|
||||
default-expand-all
|
||||
block-node
|
||||
>
|
||||
<!-- #title 插槽:node 是原始数据,可自由渲染 -->
|
||||
<template #title="{ node, selected }">
|
||||
<span style="display: inline-flex; align-items: center; gap: 8px; width: 100%">
|
||||
<span>{{ node.name }}</span>
|
||||
<G3Tag v-if="selected" variant="secondary">当前</G3Tag>
|
||||
<G3Button
|
||||
v-if="!node.disabled"
|
||||
size="small"
|
||||
type="link"
|
||||
style="margin-left: auto"
|
||||
@click.stop="selectedKeys = [String(node.id)]"
|
||||
>
|
||||
选中
|
||||
</G3Button>
|
||||
</span>
|
||||
</template>
|
||||
</G3Tree>
|
||||
|
||||
<p style="margin: 8px 0 0; font-size: 12px; color: #6b7280">选中:{{ selectedKeys.join(', ') || '无' }}</p>
|
||||
</div>
|
||||
</template>
|
||||
Reference in new issue
Block a user