Support Didar activity Excel exports without header rows via positional columns.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-04 10:44:00 +03:30
co-authored by Cursor
parent cbfe470f33
commit 60c16053a4
6 changed files with 318 additions and 122 deletions
+19 -3
View File
@@ -8,7 +8,11 @@ import type {
ExcelPreviewResult,
ImportContactsResult,
} from '@mento/shared';
import { previewExcelClient, readMappedRowsClient } from '@/lib/excel-client';
import {
previewExcelClient,
readMappedRowsClient,
type ClientExcelReadOptions,
} from '@/lib/excel-client';
import { UiBusyOverlay, UiButton, UiModal, UiSelect } from '@/components/ui';
const props = defineProps<{
@@ -23,6 +27,8 @@ const props = defineProps<{
rowsImportPath?: string;
clientAliases?: Record<string, string>;
clientFields?: ExcelFieldOption[];
/** تشخیص خروجی بدون‌هدر (مثل فعالیت دیدار) */
clientReadOptions?: ClientExcelReadOptions;
disabled?: boolean;
}>();
@@ -208,7 +214,12 @@ async function runClientRowsImport(file: File, map?: Record<string, string>) {
progressLabel.value = 'در حال خواندن فایل در مرورگر…';
progressPct.value = 0;
const rows = await readMappedRowsClient(file, props.clientAliases, map);
const rows = await readMappedRowsClient(
file,
props.clientAliases,
map,
props.clientReadOptions,
);
const total = rows.length;
if (total > 100_000) {
return {
@@ -368,7 +379,12 @@ async function onFile(ev: Event) {
let data: ExcelPreviewResult;
if (useClientImport.value && props.clientAliases && props.clientFields) {
progressLabel.value = 'در حال خواندن فایل در مرورگر…';
data = await previewExcelClient(file, props.clientAliases, props.clientFields);
data = await previewExcelClient(
file,
props.clientAliases,
props.clientFields,
props.clientReadOptions,
);
} else {
const form = new FormData();
form.append('file', file);