diff --git a/src/App.tsx b/src/App.tsx
index 7981b78..20b755c 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -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() {
- Shift/Ctrl+点击多选 · V 移动 · T 文本 · 图片工具栏
+ Shift/Ctrl+点击多选