From b61798d143cc6d12b936cc7cc45482644af122d8 Mon Sep 17 00:00:00 2001 From: cuijiawang Date: Mon, 29 Sep 2025 15:42:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=A8=A1=E6=9D=BF=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/TemplateRepositoryDialog.vue | 279 +++++++++++++++++- 1 file changed, 268 insertions(+), 11 deletions(-) diff --git a/src/views/system/codegen/components/TemplateRepositoryDialog.vue b/src/views/system/codegen/components/TemplateRepositoryDialog.vue index fce3061..193373d 100644 --- a/src/views/system/codegen/components/TemplateRepositoryDialog.vue +++ b/src/views/system/codegen/components/TemplateRepositoryDialog.vue @@ -2,6 +2,7 @@ import { ref, watch, onMounted, computed } from "vue"; import { ElMessage } from "element-plus"; import { Search, ArrowRight } from "@element-plus/icons-vue"; +import { useRenderIcon } from "@/components/ReIcon/src/hooks"; import { getAvailableTemplatesApi, getUserRepositoryListApi, @@ -28,6 +29,7 @@ const loading = ref(false); const availableTemplates = ref([]); const userTemplates = ref([]); const searchKeyword = ref(""); +const activeTab = ref("all"); // 新增:当前选中的标签页 const collapsedGroups = ref>({}); const previewVisible = ref(false); const previewLoading = ref(false); @@ -43,18 +45,59 @@ const dialogVisible = computed({ set: val => emits("update:visible", val) }); +// 计算各类型模板的启用数量 +const templateCounts = computed(() => { + const allTemplates = availableTemplates.value; + const systemTemplates = allTemplates.filter( + t => t.templateSource === "system" + ); + const userTemplates = allTemplates.filter(t => t.templateSource === "user"); + + return { + all: { + enabled: allTemplates.filter(t => t.isEnabled === 1).length, + total: allTemplates.length + }, + system: { + enabled: systemTemplates.filter(t => t.isEnabled === 1).length, + total: systemTemplates.length + }, + user: { + enabled: userTemplates.filter(t => t.isEnabled === 1).length, + total: userTemplates.length + } + }; +}); + // 过滤后的可用模板 const filteredAvailableTemplates = computed(() => { - if (!searchKeyword.value) return availableTemplates.value; - return availableTemplates.value.filter( - template => - template.templateName - .toLowerCase() - .includes(searchKeyword.value.toLowerCase()) || - template.templateGroup - .toLowerCase() - .includes(searchKeyword.value.toLowerCase()) - ); + let templates = availableTemplates.value; + + // 按标签页过滤 + if (activeTab.value === "system") { + templates = templates.filter( + template => template.templateSource === "system" + ); + } else if (activeTab.value === "user") { + templates = templates.filter( + template => template.templateSource === "user" + ); + } + + // 按搜索关键词过滤 + if (searchKeyword.value) { + templates = templates.filter( + template => + template.templateName + .toLowerCase() + .includes(searchKeyword.value.toLowerCase()) || + template.templateGroup + .toLowerCase() + .includes(searchKeyword.value.toLowerCase()) + ); + } + + return templates; }); // 按分组组织模板 @@ -296,6 +339,89 @@ watch( destroy-on-close >
+ +
+ + + + + + + + + + + +
+