perf(import): 优化账号导入弹窗为秒开体验并支持批量回查校验

This commit is contained in:
liumangmang
2026-07-01 10:00:40 +08:00
parent 88c783b922
commit efd0a88249
3 changed files with 103 additions and 46 deletions
+23 -10
View File
@@ -704,10 +704,13 @@ async function loadImportTargetGroups(websiteId: number) {
importTargetGroups.value = []
return
}
const frozenId = websiteId
try {
const res = await websitesApi.groups(websiteId)
const res = await websitesApi.groups(frozenId)
if (importAccountsForm.value.website_id !== frozenId) return
importTargetGroups.value = res.data
} catch {
if (importAccountsForm.value.website_id !== frozenId) return
importTargetGroups.value = []
}
}
@@ -1073,26 +1076,36 @@ async function openImportAccounts(site?: WebsiteData | null) {
}
importAccountResults.value = []
importSyncStatus.value = null
await loadImportTargetGroups(importAccountsForm.value.website_id)
// 打开弹窗后自动同步导入状态(校验远端账号是否仍存在)
const reloaded = await syncImportStatus()
if (!reloaded) await loadImportGeneratedKeys(importAccountsForm.value.upstream_id)
// 1. 立即打开弹窗,实现秒开体验
importAccountsDialog.value = true
// 2. 在后台并发加载分组、Keys,并在加载完成后自动执行同步
void Promise.all([
loadImportTargetGroups(importAccountsForm.value.website_id),
loadImportGeneratedKeys(importAccountsForm.value.upstream_id)
]).then(() => {
void syncImportStatus()
})
}
async function onImportAccountWebsiteChange(value: number) {
importAccountsForm.value.target_group_map = {}
await loadImportTargetGroups(value)
const reloaded = await syncImportStatus()
if (!reloaded) await loadImportGeneratedKeys(importAccountsForm.value.upstream_id)
void Promise.all([
loadImportTargetGroups(value),
loadImportGeneratedKeys(importAccountsForm.value.upstream_id)
]).then(() => {
void syncImportStatus()
})
}
async function onImportAccountUpstreamChange(value: number) {
importAccountsForm.value.upstream_key_ids = []
importAccountsForm.value.target_group_map = {}
importAccountResults.value = []
const reloaded = await syncImportStatus()
if (!reloaded) await loadImportGeneratedKeys(value)
void loadImportGeneratedKeys(value).then(() => {
void syncImportStatus()
})
}
function onPlatformModeChange(value: string) {