This commit is contained in:
iqudoo
2026-06-12 21:39:00 +08:00
parent 220841444a
commit e71452ae78
7 changed files with 296 additions and 322 deletions

View File

@@ -1,4 +1,4 @@
import React, { useState, useMemo, useEffect } from 'react';
import React, { useState, useMemo, useEffect, useLayoutEffect } from 'react';
import { LabelTemplate, PaperConfig, ImportData, RecordRow, ExportRangeConfig, CutLineConfig } from './types';
import {
stripTemplateForStorage,
@@ -442,6 +442,40 @@ export default function App() {
return !exportRangeEquals(draftExportRange, appliedExportData.exportRange);
}, [importData, variableColumnMapping, appliedExportData, draftExportRange]);
// 移动端导出页实时同步数据,无需手动「应用数据」
useLayoutEffect(() => {
if (!isMobile || workflowStep !== 'print-view') return;
if (!importData || activeRows.length === 0) return;
const nextExportRange = { ...draftExportRange };
setAppliedExportData({
fileName: importData.fileName,
currentSheet: importData.currentSheet,
rows: importData.rows,
mapping: { ...variableColumnMapping },
exportRange: nextExportRange,
});
setPreviewSnapshot({
pages: layoutResult.pages,
gridCols: layoutResult.gridCols,
labelsPerPage: layoutResult.labelsPerPage,
totalPages: layoutResult.totalPages,
selectedCount: layoutResult.selectedCount,
paper,
exportRange: nextExportRange,
});
setPreviewLayoutStale(false);
}, [
isMobile,
workflowStep,
importData,
activeRows,
variableColumnMapping,
draftExportRange,
layoutResult,
paper,
]);
const handleApplyData = async () => {
if (!importData || activeRows.length === 0) {
await showAlert('请先上传 Excel 或 CSV 数据。', { variant: 'warning' });
@@ -884,7 +918,7 @@ export default function App() {
</span>
<div className="flex-1" />
<span className="hidden md:inline text-[10px] text-[#666]">
Shift/Ctrl+ · V · T ·
Shift/Ctrl+
</span>
<button
onClick={() => openPrintView()}
@@ -937,14 +971,8 @@ export default function App() {
onChangeDraftExportRange={setDraftExportRange}
cutLine={cutLine}
onChangeCutLine={handleCutLineChange}
dataStale={dataStale}
dataApplied={appliedExportData !== null}
onApplyData={handleApplyData}
appliedSelectedCount={appliedLayoutResult.selectedCount}
appliedTotalPages={appliedLayoutResult.totalPages}
appliedGridCols={appliedLayoutResult.gridCols}
appliedGridRows={appliedLayoutResult.gridRows}
draftSelectedCount={selectedCount}
selectedCount={selectedCount}
totalPages={totalPages}
pdfGenerating={pdfGenerating}
onBack={() => setWorkflowStep('template-select')}
onExportPdf={exportPdf}