From 9ceccd9bed7afa177f1447fddcad55f196c5b721 Mon Sep 17 00:00:00 2001 From: ClasWen Date: Wed, 5 Jun 2024 22:46:02 +0800 Subject: [PATCH] organize files --- src/pages/graduation/GenerateQR.vue | 8 +++++--- .../graduation/GraduationDownloadView.vue} | 3 ++- src/pages/graduation/download.astro | 4 ++-- src/pages/graduation/graduation.ts | 20 +++++++++++++++++++ 4 files changed, 29 insertions(+), 6 deletions(-) rename src/{components/GraduationView.vue => pages/graduation/GraduationDownloadView.vue} (94%) create mode 100644 src/pages/graduation/graduation.ts diff --git a/src/pages/graduation/GenerateQR.vue b/src/pages/graduation/GenerateQR.vue index 761b713..b054f75 100644 --- a/src/pages/graduation/GenerateQR.vue +++ b/src/pages/graduation/GenerateQR.vue @@ -2,6 +2,7 @@ import QRCode from "qrcode" import { v4 as uuid } from "uuid" import { ref, onMounted, watch } from "vue" +import { useGraduationIdURL } from "./graduation" const id = ref() const idStoreKey = "graduationId" @@ -10,11 +11,12 @@ const setId = () => { localStorage.setItem(idStoreKey, id.value) } -const url = ref() const svg = ref() watch(id, async () => { - svg.value = await QRCode.toString(`https://nbtca.space/graduation/download/${id.value}`, { type: "svg" }) - url.value = await QRCode.toDataURL(`https://nbtca.space/graduation/download/${id.value}`) + if (!id.value) { + return + } + svg.value = await QRCode.toString(useGraduationIdURL().constructURL(id.value)) }) onMounted(() => { diff --git a/src/components/GraduationView.vue b/src/pages/graduation/GraduationDownloadView.vue similarity index 94% rename from src/components/GraduationView.vue rename to src/pages/graduation/GraduationDownloadView.vue index 39b8f77..54c3c23 100644 --- a/src/components/GraduationView.vue +++ b/src/pages/graduation/GraduationDownloadView.vue @@ -1,5 +1,6 @@ diff --git a/src/pages/graduation/download.astro b/src/pages/graduation/download.astro index fef607f..9a8efcf 100644 --- a/src/pages/graduation/download.astro +++ b/src/pages/graduation/download.astro @@ -1,8 +1,8 @@ --- import BaseLayout from "../../layouts/BaseLayout.astro" -import GraduationView from "../../components/GraduationView.vue" +import GraduationDownloadView from "./GraduationDownloadView.vue" --- - + diff --git a/src/pages/graduation/graduation.ts b/src/pages/graduation/graduation.ts new file mode 100644 index 0000000..3719385 --- /dev/null +++ b/src/pages/graduation/graduation.ts @@ -0,0 +1,20 @@ +import { SITE_URL } from "../../consts" + +export const useGraduationIdURL = () => { + const idKey = "id" + + const getId = () => { + return new URLSearchParams(window.location.search).get(idKey) as string | undefined + } + + const constructURL = (id: string) => { + const url = new URL(`/graduation/download`, SITE_URL) + url.searchParams.append(idKey, id) + return url.toString() + } + + return { + getId, + constructURL, + } +}