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) => {