|
@@ -316,20 +316,10 @@
|
|
|
<span class="tag-status" v-if="entity.confirmed">✓</span>
|
|
<span class="tag-status" v-if="entity.confirmed">✓</span>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <!-- 加载更多按钮 -->
|
|
|
|
|
- <div class="load-more-wrap" v-if="hasMoreEntities">
|
|
|
|
|
- <el-button
|
|
|
|
|
- size="small"
|
|
|
|
|
- text
|
|
|
|
|
- @click="loadMoreEntities"
|
|
|
|
|
- >
|
|
|
|
|
- 加载更多 (还有 {{ remainingEntitiesCount }} 个)
|
|
|
|
|
- </el-button>
|
|
|
|
|
- </div>
|
|
|
|
|
<div class="element-hint" v-if="!entities || entities.length === 0">
|
|
<div class="element-hint" v-if="!entities || entities.length === 0">
|
|
|
选中文本后右键标记为实体
|
|
选中文本后右键标记为实体
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="element-hint" v-else-if="(!filteredEntities || filteredEntities.length === 0) && !hasMoreEntities">
|
|
|
|
|
|
|
+ <div class="element-hint" v-else-if="!filteredEntities || filteredEntities.length === 0">
|
|
|
没有匹配的要素
|
|
没有匹配的要素
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -1139,8 +1129,6 @@ const entityTypeCounts = computed(() => {
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
// 实体显示数量限制(性能优化)
|
|
// 实体显示数量限制(性能优化)
|
|
|
-const entityDisplayLimit = ref(50)
|
|
|
|
|
-const ENTITY_PAGE_SIZE = 50
|
|
|
|
|
|
|
|
|
|
// 计算属性:筛选后的要素列表(全部)
|
|
// 计算属性:筛选后的要素列表(全部)
|
|
|
const allFilteredEntities = computed(() => {
|
|
const allFilteredEntities = computed(() => {
|
|
@@ -1165,32 +1153,9 @@ const allFilteredEntities = computed(() => {
|
|
|
return result
|
|
return result
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
-// 计算属性:限制显示数量的要素列表
|
|
|
|
|
|
|
+// 计算属性:过滤后的要素列表(直接显示所有)
|
|
|
const filteredEntities = computed(() => {
|
|
const filteredEntities = computed(() => {
|
|
|
- const all = allFilteredEntities.value || []
|
|
|
|
|
- return all.slice(0, entityDisplayLimit.value)
|
|
|
|
|
-})
|
|
|
|
|
-
|
|
|
|
|
-// 是否还有更多实体可显示
|
|
|
|
|
-const hasMoreEntities = computed(() => {
|
|
|
|
|
- const all = allFilteredEntities.value || []
|
|
|
|
|
- return all.length > entityDisplayLimit.value
|
|
|
|
|
-})
|
|
|
|
|
-
|
|
|
|
|
-// 剩余未显示的实体数量
|
|
|
|
|
-const remainingEntitiesCount = computed(() => {
|
|
|
|
|
- const all = allFilteredEntities.value || []
|
|
|
|
|
- return Math.max(0, all.length - entityDisplayLimit.value)
|
|
|
|
|
-})
|
|
|
|
|
-
|
|
|
|
|
-// 加载更多实体
|
|
|
|
|
-function loadMoreEntities() {
|
|
|
|
|
- entityDisplayLimit.value += ENTITY_PAGE_SIZE
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// 重置实体显示数量(筛选条件变化时)
|
|
|
|
|
-watch([entityTypeFilter, entitySearchKeyword], () => {
|
|
|
|
|
- entityDisplayLimit.value = ENTITY_PAGE_SIZE
|
|
|
|
|
|
|
+ return allFilteredEntities.value || []
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
// 切换类型筛选
|
|
// 切换类型筛选
|
|
@@ -3984,14 +3949,6 @@ onUnmounted(() => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- .load-more-wrap {
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- text-align: center;
|
|
|
|
|
- padding: 10px 0;
|
|
|
|
|
- margin-top: 8px;
|
|
|
|
|
- border-top: 1px dashed var(--border);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
// ==========================================
|
|
// ==========================================
|
|
|
// 要素标签样式 - V2 风格
|
|
// 要素标签样式 - V2 风格
|
|
|
// ==========================================
|
|
// ==========================================
|