diff --git a/src/styles/components/StylesList.vue b/src/styles/components/StylesList.vue index 37b3be6..9f76676 100644 --- a/src/styles/components/StylesList.vue +++ b/src/styles/components/StylesList.vue @@ -9,15 +9,29 @@ import StyleListItemPreview from "./StyleListItemPreview.vue"; import { data as styles } from "../data/styles.data"; -const allTags = [...new Set(styles.flatMap((style) => style.tags))].map((v) => { - return { - label: v, - value: v, - }; -}); +const allTags = [...new Set(styles.flatMap((style) => style.tags))] + .sort((a, b) => a.localeCompare(b, "zh")) + .map((v) => { + return { + label: v, + value: v, + }; + }); + +const allFields = [...new Set(styles.flatMap((style) => style.field!))] + .filter((v) => !!v) + .sort((a, b) => a.localeCompare(b, "en")) + .map((v) => { + return { + label: v, + value: v, + }; + }); const query = useUrlSearchParams("hash-params", { removeFalsyValues: true }); const format = toRef(query, "format", "") as Ref; +const field = toRef(query, "field", "") as Ref; +const filter = toRef(query, "filter", "") as Ref; const searchText = toRef(query, "search", "") as Ref; const showPreview = ref(false); const _selectedTags = toRef(query, "tags", []) as Ref; @@ -49,6 +63,24 @@ const filtered = computed(() => { }); } + // 筛选学科 + if (field.value !== "") { + filtered = filtered.filter((item) => { + return item.field === field.value; + }); + } + + // 筛选其他 + if (filter.value !== "") { + filtered = filtered.filter((item) => { + if (filter.value === "export") { + return item.title.includes("export") || item.title.includes("导出"); + } else if (filter.value === "thesis") { + return item.title.includes("学位论文") || item.title.includes("大学"); + } + }); + } + // 筛选标签 if (selectedTags.value.length !== 0) { filtered = filtered.filter((item) => { @@ -82,6 +114,44 @@ const filtered = computed(() => { + + + + + + + + + + + + + + +