import React from 'react'; import { ChevronLeft, Printer, Loader2, Database, Link2, Download, } from 'lucide-react'; import { ImportData, LabelTemplate, RecordRow, ExportRangeConfig, PaperConfig, CutLineConfig, } from '../types'; import { isVariableMappingConfigured } from '../utils'; import { DataImporter, downloadDataTemplate } from './DataImporter'; import { VariableMappingPanel } from './VariableMappingPanel'; import { MobileExportPropsPanel } from './MobileExportPropsPanel'; import { DataRangeFields } from './DataRangeFields'; interface MobileExportViewProps { template: LabelTemplate; templateName: string; templateVariables: string[]; importData: ImportData | null; onDataLoaded: (data: ImportData) => void; onClear: () => void; dataColumns: string[]; variableColumnMapping: Record; onChangeMapping: (mapping: Record) => void; paper: PaperConfig; onChangePaper: (paper: PaperConfig) => void; rows: RecordRow[]; draftExportRange: ExportRangeConfig; onChangeDraftExportRange: (range: ExportRangeConfig) => void; cutLine: CutLineConfig; onChangeCutLine: (cutLine: CutLineConfig) => void; selectedCount: number; totalPages: number; pdfGenerating: boolean; onBack: () => void; onExportPdf: () => void; } export const MobileExportView: React.FC = ({ template, templateName, templateVariables, importData, onDataLoaded, onClear, dataColumns, variableColumnMapping, onChangeMapping, paper, onChangePaper, rows, draftExportRange, onChangeDraftExportRange, cutLine, onChangeCutLine, selectedCount, totalPages, pdfGenerating, onBack, onExportPdf, }) => { const hasData = rows.length > 0; const mappedCount = templateVariables.filter((v) => isVariableMappingConfigured(variableColumnMapping, v, dataColumns) ).length; const needsMapping = templateVariables.length > 0; const mappingComplete = !needsMapping || (hasData && mappedCount === templateVariables.length); const exportBlockedReason = !hasData ? '请先上传 Excel 数据' : !mappingComplete ? `还有 ${templateVariables.length - mappedCount} 个变量未关联` : selectedCount === 0 ? '当前数据范围内无标签' : null; return (
{/*

批量标签排版印刷生成器

*/}

{templateName}

数据源

{hasData ? '已上传,可设置数据范围' : '上传 Excel 或 CSV 文件'}

{hasData && ( )}
{hasData && (

关联变量

{needsMapping ? `已关联 ${mappedCount}/${templateVariables.length}` : '此模板无需变量映射'}

)}
); };