From dcb3f8cc4199e6491b7942f4035555df7c4f7ef4 Mon Sep 17 00:00:00 2001 From: ty200947752 Date: Mon, 15 Dec 2025 11:43:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=A8=E5=85=B6=E4=BB=96=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/register/register.vue | 323 ++++++++++++++++++++++++++++++++++++ pages/shop/detail.vue | 170 +++++++++++++++++++ utils/assets.js | 35 ++++ 3 files changed, 528 insertions(+) create mode 100644 pages/register/register.vue create mode 100644 pages/shop/detail.vue create mode 100644 utils/assets.js diff --git a/pages/register/register.vue b/pages/register/register.vue new file mode 100644 index 0000000..94fcc9f --- /dev/null +++ b/pages/register/register.vue @@ -0,0 +1,323 @@ + + + + + \ No newline at end of file diff --git a/pages/shop/detail.vue b/pages/shop/detail.vue new file mode 100644 index 0000000..5074844 --- /dev/null +++ b/pages/shop/detail.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/utils/assets.js b/utils/assets.js new file mode 100644 index 0000000..7235baa --- /dev/null +++ b/utils/assets.js @@ -0,0 +1,35 @@ +export async function ensureLocal(url) { + return new Promise((resolve) => { + try { + const cache = uni.getStorageSync('asset_cache_v1') || {} + const hit = cache[url] + if (hit && typeof hit === 'string' && hit) { resolve(hit); return } + uni.downloadFile({ + url, + success: (res) => { + const tmp = res.tempFilePath || '' + if (!tmp) { resolve(url); return } + uni.saveFile({ + tempFilePath: tmp, + success: (s) => { + const saved = s.savedFilePath || tmp + cache[url] = saved + uni.setStorageSync('asset_cache_v1', cache) + resolve(saved) + }, + fail: () => { resolve(tmp) } + }) + }, + fail: () => { resolve(url) } + }) + } catch (_) { resolve(url) } + }) +} + +export async function preloadAssets(urls) { + const tasks = urls.map(u => ensureLocal(u)) + const results = await Promise.allSettled(tasks) + const map = {} + results.forEach((r, i) => { map[urls[i]] = r.status === 'fulfilled' ? r.value : urls[i] }) + return map +}