diff --git a/src/components/base/Slider.vue b/src/components/base/Slider.vue index 6b2bd6b8..ef34e46a 100644 --- a/src/components/base/Slider.vue +++ b/src/components/base/Slider.vue @@ -9,6 +9,7 @@ const props = defineProps<{ disabled?: boolean; showText?: boolean; showValue?: boolean; // 是否显示当前值 + unit?: string }>(); const emit = defineEmits(['update:modelValue']); @@ -134,20 +135,21 @@ onMounted(() => { @@ -222,15 +225,5 @@ onMounted(() => { box-shadow: 0 0 5px #409eff; cursor: grabbing; } - - &__value { - position: absolute; - top: 100%; - left: 50%; - transform: translate(-50%, 4px); - font-size: 0.75rem; - color: #666; - user-select: none; - } } diff --git a/src/hooks/export.ts b/src/hooks/export.ts index 3a2fc2fe..7ecc7d48 100644 --- a/src/hooks/export.ts +++ b/src/hooks/export.ts @@ -27,59 +27,64 @@ export function useExport() { async function exportData(notice = '导出成功!') { if (loading.value) return loading.value = true - const JSZip = await loadJsLib('JSZip', `${Origin}/libs/jszip.min.js`); - let data = { - version: EXPORT_DATA_KEY.version, - val: { - setting: { - version: SAVE_SETTING_KEY.version, - val: settingStore.$state - }, - dict: { - version: SAVE_DICT_KEY.version, - val: shakeCommonDict(store.$state) - }, - [PracticeSaveWordKey.key]: { - version: PracticeSaveWordKey.version, - val: {} - }, - [PracticeSaveArticleKey.key]: { - version: PracticeSaveArticleKey.version, - val: {} - }, - [APP_VERSION.key]: -1 + try { + const JSZip = await loadJsLib('JSZip', `${Origin}/libs/jszip.min.js`); + let data = { + version: EXPORT_DATA_KEY.version, + val: { + setting: { + version: SAVE_SETTING_KEY.version, + val: settingStore.$state + }, + dict: { + version: SAVE_DICT_KEY.version, + val: shakeCommonDict(store.$state) + }, + [PracticeSaveWordKey.key]: { + version: PracticeSaveWordKey.version, + val: {} + }, + [PracticeSaveArticleKey.key]: { + version: PracticeSaveArticleKey.version, + val: {} + }, + [APP_VERSION.key]: -1 + } } - } - let d = localStorage.getItem(PracticeSaveWordKey.key) - if (d) { - try { - data.val[PracticeSaveWordKey.key] = JSON.parse(d) - } catch (e) { + let d = localStorage.getItem(PracticeSaveWordKey.key) + if (d) { + try { + data.val[PracticeSaveWordKey.key] = JSON.parse(d) + } catch (e) { + } } - } - let d1 = localStorage.getItem(PracticeSaveArticleKey.key) - if (d1) { - try { - data.val[PracticeSaveArticleKey.key] = JSON.parse(d1) - } catch (e) { + let d1 = localStorage.getItem(PracticeSaveArticleKey.key) + if (d1) { + try { + data.val[PracticeSaveArticleKey.key] = JSON.parse(d1) + } catch (e) { + } } - } - let r = await get(APP_VERSION.key) - data.val[APP_VERSION.key] = r + let r = await get(APP_VERSION.key) + data.val[APP_VERSION.key] = r - const zip = new JSZip(); - zip.file("data.json", JSON.stringify(data)); + const zip = new JSZip(); + zip.file("data.json", JSON.stringify(data)); - const mp3 = zip.folder("mp3"); - const allRecords = await get(LOCAL_FILE_KEY); - for (const rec of allRecords ?? []) { - mp3.file(rec.id + ".mp3", rec.file); + const mp3 = zip.folder("mp3"); + const allRecords = await get(LOCAL_FILE_KEY); + for (const rec of allRecords ?? []) { + mp3.file(rec.id + ".mp3", rec.file); + } + let content = await zip.generateAsync({type: "blob"}) + saveAs(content, `${APP_NAME}-User-Data-${dayjs().format('YYYY-MM-DD HH-mm-ss')}.zip`); + notice && Toast.success(notice) + return content + } catch (e) { + Toast.error(e?.message || e || '导出失败') + } finally { + loading.value = false } - let content = await zip.generateAsync({type: "blob"}) - saveAs(content, `${APP_NAME}-User-Data-${dayjs().format('YYYY-MM-DD HH-mm-ss')}.zip`); - notice && Toast.success(notice) - loading.value = false - return content } return { diff --git a/src/pages/article/ArticlesPage.vue b/src/pages/article/ArticlesPage.vue index 7aa77d7d..830142b2 100644 --- a/src/pages/article/ArticlesPage.vue +++ b/src/pages/article/ArticlesPage.vue @@ -1,27 +1,27 @@