Исправлены ячейки

This commit is contained in:
2025-07-18 15:10:20 +03:00
parent 7ba38b3284
commit a52d57fd46
2 changed files with 32 additions and 19 deletions

View File

@@ -116,7 +116,6 @@ interface CellProps {
isMainCell: boolean
rowSpan?: number
colSpan?: number
mergedValue?: any
}
}
@@ -191,11 +190,8 @@ const Cell = memo(
}
}
// Используем значение из объединенной ячейки, если доступно
const cellDisplayValue =
mergedCellInfo?.isMainCell && mergedCellInfo.mergedValue !== undefined
? String(mergedCellInfo.mergedValue)
: displayValue
// Используем обычное значение displayValue для всех ячеек, включая объединенные
const cellDisplayValue = displayValue
const handleClick = useCallback(() => {
setActiveSheet(sheetType)
@@ -413,7 +409,7 @@ const CellRenderer = ({
isMainCell: mergedCellInfo.isMainCell,
rowSpan: mergedCellInfo.spans?.rowSpan,
colSpan: mergedCellInfo.spans?.colSpan,
mergedValue: mergedCellInfo.mergedCell?.value,
// Убираем mergedValue - будем использовать актуальные данные из движка
}
: undefined
@@ -716,6 +712,9 @@ const DualSpreadsheet: FC<DualSpreadsheetProps> = ({
useEffect(() => {
const reportTemplate = templateData?.[SHEET_NAMES.report]
if (reportTemplate) {
// Очищаем старые значения
initialTemplateValues.current = {}
Object.entries(reportTemplate).forEach(([cellName, value]) => {
initialTemplateValues.current[cellName] = String(value)
})

View File

@@ -62,17 +62,31 @@ export function useMultiSheetEngine({
workbookRef.current!.addSheet(sheetConfig.name)
})
// Загружаем начальные данные
if (Object.keys(initialData).length > 0) {
workbookRef.current.fromJSON(initialData)
// Первый пересчет для инициализации всех значений
safeRecalc()
} else {
// Увеличиваем ревизию, чтобы вызвать начальную отрисовку
// Увеличиваем ревизию для начальной отрисовки
setRevision((r) => r + 1)
}
}, [sheets])
// Отдельный useEffect для перезагрузки данных при изменении initialData
useEffect(() => {
if (!workbookRef.current) return
if (Object.keys(initialData).length > 0) {
// Очищаем только те листы, для которых есть новые данные
for (const sheetName of Object.keys(initialData)) {
const sheet = workbookRef.current.getSheet(sheetName)
if (sheet) {
sheet.cells.clear()
}
}, [initialData, safeRecalc, sheets]) // Восстанавливаем зависимости
}
workbookRef.current.fromJSON(initialData)
safeRecalc()
} else {
// Если данных нет, просто обновляем ревизию
setRevision((r) => r + 1)
}
}, [initialData, safeRecalc])
// Синхронизация всех листов из движка
// const syncAllSheetsFromEngine = useCallback(() => {