优化
This commit is contained in:
48
src/App.tsx
48
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() {
|
||||
</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}
|
||||
|
||||
Reference in New Issue
Block a user