diff --git a/src/views/setting/useSettingsForm.ts b/src/views/setting/useSettingsForm.ts index 76ea11c..6ff417d 100644 --- a/src/views/setting/useSettingsForm.ts +++ b/src/views/setting/useSettingsForm.ts @@ -341,7 +341,7 @@ export function useSettingsForm({ t, locale }: UseSettingsFormOptions) { username: draftData.value.username.trim(), email: securityDraft.value.newEmail.trim(), roles: draftData.value.roles as string[], - language: backendLanguage, // 发送后端格式:'en' 或 'zh-CN' + language: backendLanguage, region: draftData.value.region, newPassword: '', oldPassword: '', @@ -373,7 +373,7 @@ export function useSettingsForm({ t, locale }: UseSettingsFormOptions) { firstName: nextData.firstName, lastName: nextData.lastName, username: nextData.username, - email: nextData.email, + email: nextData.email || draftData.value.email, roles: nextData.roles as RoleValue[], language: frontendLanguage, region: nextData.region as any diff --git a/src/views/wardrobe/Assets.vue b/src/views/wardrobe/Assets.vue index 0bce7d6..73c1072 100644 --- a/src/views/wardrobe/Assets.vue +++ b/src/views/wardrobe/Assets.vue @@ -32,7 +32,7 @@ class="assets-toolbar__download flex flex-center" :class="{ disabled: selectedCount < 1 }" v-loading="downloadingSelected" - @click="handleDownloadSelected" + @click="handleDownloadSelected(null)" > {{ t('Wardrobe.assets.downloadSelected') }} @@ -67,7 +67,7 @@ download :url="item.thumbnailUrl" :name="item.listingName" - @download.stop="handleDownloadSelected(item)" + @download="handleDownloadSelected(item)" :showPrice="false" > @@ -323,7 +323,7 @@ } const downloadingSelected = ref(false) - const handleDownloadSelected = (assets) => { + const handleDownloadSelected = (assets = null) => { const items = assets ? [assets] : dataList.value.filter((item) => item.checked) downloadingSelected.value = true @@ -350,7 +350,8 @@ }) .catch((error) => { console.error('Download failed:', error) - }).finally(() => { + }) + .finally(() => { downloadingSelected.value = false }) } diff --git a/src/views/wardrobe/Orders.vue b/src/views/wardrobe/Orders.vue index a0dca3d..5408ec3 100644 --- a/src/views/wardrobe/Orders.vue +++ b/src/views/wardrobe/Orders.vue @@ -97,7 +97,7 @@ import { computed, onMounted, ref, shallowRef } from 'vue' import { useI18n } from 'vue-i18n' import { useRouter } from 'vue-router' - import { fetchMyOrders ,fetchDownloadItemsByGet} from '@/api/user' + import { fetchMyOrders, fetchDownloadItemsByGet } from '@/api/user' import ScItem from '@/views/shoppingCart/sc-item.vue' import Empty from './Empty.vue' @@ -257,7 +257,26 @@ } const handleDownload = (order) => { - console.log(order) + const ids = order.items.map((item) => item.id) + fetchDownloadItemsByGet({ ids }).then((res) => { + console.log(res) + const disposition = res.headers['content-disposition'] + const fileName = disposition?.split('filename=')[1]?.replace(/"/g, '') || 'download.zip' + const blob = res.data + const url = window.URL.createObjectURL(blob) + + const link = document.createElement('a') + link.href = url + + const timestamp = new Date().getTime() + link.download = fileName || `wardrobe_download_${timestamp}.zip` + + document.body.appendChild(link) + link.click() + + document.body.removeChild(link) + window.URL.revokeObjectURL(url) + }) } const handleRouteBrand = (order: OrderRecord) => {