fix(提示语): 失败提示优先展示后端真实原因,修正 10+ 处误导文案
上架/删除品牌/去重/转换/拆分/撤回/查ASIN/产品风险/跟价/巡店/店铺匹配/视频工作台: - 解析失败不再只报通用文案,逐条展示后端文件级 errorMessage(上架新增「店铺未找到」专属弹窗) - 匹配失败不再一律「请检查店铺名」,按 matchStatus 区分 CONFLICT/PENDING - 去重/转换/拆分全失败弹窗优先列各文件真实原因,取不到才回退猜测文案 - dispatch-guard 新增 fileErrors 选项与 collectDistinctErrors 导出
This commit is contained in:
@@ -137,7 +137,7 @@ import { expandBrandFolderRecursive } from '@/shared/api/brand'
|
||||
import { deleteDedupeHistory, getDedupeHistory, getDedupeResultDownloadUrl, getDedupeRunProgress, getExcelInfo, runDedupe, type DedupeResultItem, type DedupeRunProgressVo, type DedupeRunVo } from '@/shared/api/java-modules'
|
||||
import { getPywebviewApi, type UploadedJavaFile } from '@/shared/bridges/pywebview'
|
||||
import { saveUrlWithProgress } from '@/shared/utils/download-progress'
|
||||
import { EXCEL_EXTENSIONS, checkSelectedFiles, guardBlocked } from '@/shared/dispatch-guard'
|
||||
import { EXCEL_EXTENSIONS, checkSelectedFiles, collectDistinctErrors, guardBlocked } from '@/shared/dispatch-guard'
|
||||
import { passGuard } from '@/shared/dispatch-guard-ui'
|
||||
import { formatDateTime } from '@/shared/utils/datetime'
|
||||
import { uploadPathsToJava } from '@/shared/utils/upload-to-java'
|
||||
@@ -237,7 +237,8 @@ function clearAllCleanColumns() {
|
||||
async function loadCleanHeaders(fileKey: string) {
|
||||
const result = await getExcelInfo(fileKey)
|
||||
if (!result.headers?.length) {
|
||||
ElMessage.error('读取 Excel 表头失败')
|
||||
// 接口本身成功、只是没解析出表头,说明文件内容有问题而非「读取失败」,别让用户反复重选文件
|
||||
ElMessage.error('未读到表头行:请确认文件不是空表、且首行是表头')
|
||||
cleanAvailableColumns.value = []
|
||||
cleanSelectedColumns.value = []
|
||||
return
|
||||
@@ -359,11 +360,15 @@ async function submitCleanRun() {
|
||||
await loadCleanHistory()
|
||||
// 全部文件都失败时不该报「完成」,让用户看清是哪一批没处理成功
|
||||
if (result.total > 0 && result.successCount === 0) {
|
||||
// 逐文件原因就在 items[].error 里,优先直接列出,不再让用户对着「常见原因」猜
|
||||
const details = collectDistinctErrors((result.items || []).map((item) => item.error)).slice(0, 5)
|
||||
await passGuard(
|
||||
guardBlocked(
|
||||
'去重未成功',
|
||||
`本次提交的 ${result.total} 个文件全部处理失败。\n` +
|
||||
'常见原因是表头列名与所选保留列对不上,或文件内没有数据行。\n' +
|
||||
(details.length
|
||||
? `失败原因:\n${details.map((message) => `· ${message}`).join('\n')}\n`
|
||||
: '常见原因是表头列名与所选保留列对不上,或文件内没有数据行。\n') +
|
||||
'请在右侧结果列表查看每个文件的失败原因后重试。',
|
||||
'dedupe.all-failed',
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user