优化: 项目文件树/依赖图组件 + 灵感对抗校验 + 小程序脚本 + 模块管理
This commit is contained in:
@@ -13,8 +13,11 @@
|
||||
<!-- 错误 -->
|
||||
<div v-else-if="error" class="tree-error">⚠ {{ error }}</div>
|
||||
|
||||
<!-- 空目录 -->
|
||||
<div v-else-if="entries.length === 0" class="tree-empty">{{ $t('fileExplorer.emptyDir') }}</div>
|
||||
<!-- 空目录(展开后子条目为空) -->
|
||||
<div v-else-if="entries.length === 0" class="tree-empty">
|
||||
<span class="tree-empty-icon">📭</span>
|
||||
<span>{{ $t('fileExplorer.emptyDir') }}</span>
|
||||
</div>
|
||||
|
||||
<!-- 条目列表 -->
|
||||
<ul v-else class="tree-list">
|
||||
@@ -39,6 +42,13 @@
|
||||
<span class="expand-icon">{{ expandedPaths.has(entry.path) ? '▾' : '▸' }}</span>
|
||||
<span class="file-icon">📁</span>
|
||||
<span class="file-name">{{ entry.name }}</span>
|
||||
<!-- 空目录标:has_children 由后端列目录时即时统计,未展开即可见「空」,
|
||||
避免用户误以为目录没加载出来(展开后才显空态) -->
|
||||
<span
|
||||
v-if="entry.has_children === false"
|
||||
class="tree-empty-badge"
|
||||
:title="$t('fileExplorer.emptyDir')"
|
||||
>{{ $t('fileExplorer.emptyDirMark') }}</span>
|
||||
<!-- B3[PD-P1-6]:展开失败 → 行内 ⚠(title 显原因),点击重试;不设整树 error,不炸其他已展开节点 -->
|
||||
<span
|
||||
v-if="toggleErrors.has(entry.path)"
|
||||
@@ -356,6 +366,25 @@ watch(
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* 空目录小标(目录行右侧,未展开即可见;flex-shrink 防挤压) */
|
||||
.tree-empty-badge {
|
||||
flex-shrink: 0;
|
||||
/* 文件名后稍靠右一点(不贴名、也不推到最右):固定小间隔即可 */
|
||||
margin-left: 8px;
|
||||
font-size: 10px;
|
||||
line-height: 1.4;
|
||||
padding: 1px 5px;
|
||||
border-radius: 8px;
|
||||
background: rgba(150, 150, 150, 0.14);
|
||||
color: var(--df-text-dim);
|
||||
}
|
||||
|
||||
/* 展开后空态图标(📭,与文字同行) */
|
||||
.tree-empty-icon {
|
||||
font-size: 14px;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
/* Git 状态徽章 */
|
||||
.git-badge {
|
||||
flex-shrink: 0;
|
||||
|
||||
Reference in New Issue
Block a user