diff --git a/src/components/PresetDropdown.vue b/src/components/PresetDropdown.vue
index 51dd98d..4364265 100644
--- a/src/components/PresetDropdown.vue
+++ b/src/components/PresetDropdown.vue
@@ -60,13 +60,40 @@ const filteredPresets = computed(() => {
return true;
});
- // 搜索过滤
+ // 搜索过滤 - 支持名称、内容、描述、标签、文件夹搜索
if (q) {
- list = list.filter((p) =>
- p.name.toLowerCase().includes(q) ||
- p.text.toLowerCase().includes(q) ||
- p.description?.toLowerCase().includes(q)
- );
+ list = list.filter((p) => {
+ // 基本搜索:名称、内容、描述
+ const basicMatch = p.name.toLowerCase().includes(q) ||
+ p.text.toLowerCase().includes(q) ||
+ p.description?.toLowerCase().includes(q);
+
+ // 标签搜索(如果是扩展预设)
+ let tagMatch = false;
+ if (p.isExtended) {
+ const extendedPreset = store.extendedPresets.find(ep => ep.name === p.name && ep.type === p.type);
+ if (extendedPreset?.tags) {
+ tagMatch = extendedPreset.tags.some(tag => tag.toLowerCase().includes(q));
+ }
+ }
+
+ // 文件夹搜索(如果是扩展预设)
+ let folderMatch = false;
+ if (p.isExtended) {
+ const extendedPreset = store.extendedPresets.find(ep => ep.name === p.name && ep.type === p.type);
+ if (extendedPreset?.folderId) {
+ const folder = store.presetFolders.find(f => f.id === extendedPreset.folderId);
+ if (folder) {
+ folderMatch = folder.name.toLowerCase().includes(q);
+ }
+ }
+ }
+
+ // 类型搜索
+ const typeMatch = getTypeLabel(p.type).toLowerCase().includes(q);
+
+ return basicMatch || tagMatch || folderMatch || typeMatch;
+ });
}
// 排序
@@ -372,7 +399,7 @@ onUnmounted(() => {