[st] - fix: 하수관로 관종별 현황, 입력 가능 연도만 매설연장 컬럼 수정가능, 관리자 계정일 시 엑셀 업로드로 모든 cell 수정 가능

This commit is contained in:
2026-07-07 12:17:44 +09:00
parent 3c214f4725
commit e3a9851de6
7 changed files with 180 additions and 23 deletions
+18 -4
View File
@@ -25,6 +25,8 @@ import type {
import { getComputedValueCallback } from "@/components/util/grid/computedFieldCallbacks";
import {
getExcelImportColumnFieldNames,
getNonEditableColumnFieldNames,
mergeExcelImportWithExistingRows,
prepareGridColumnsForExcelExport,
restoreGridColumnsAfterExcelExport,
shouldPrepareColumnsForExcelExport,
@@ -727,6 +729,7 @@ const DataGrid = ({
rowStartNum,
excelExportFileSuffix,
isExcelImport = true,
excelImportSkipNonEditable = true,
isExcelExport = true,
fixedColumns,
showHeaderCheckbox = false,
@@ -1070,6 +1073,7 @@ useEffect(() => {
const excelColumnFieldNames = getExcelImportColumnFieldNames(
columns,
columnLayout,
{ skipNonEditable: excelImportSkipNonEditable },
);
// 데이터 행 읽기
@@ -1137,7 +1141,14 @@ useEffect(() => {
dataRows.push(rowData);
}
}
setRowData(dataRows);
const preserveFieldNames = excelImportSkipNonEditable
? getNonEditableColumnFieldNames(columns, columnLayout)
: [];
setRowData((prev) =>
mergeExcelImportWithExistingRows(prev, dataRows, {
preserveFieldNames,
}),
);
} catch (error) {
console.error("엑셀 파일 파싱 오류:", error);
alert("엑셀 파일 파싱 중 오류가 발생했습니다.");
@@ -1263,6 +1274,11 @@ useEffect(() => {
"editable",
column.editable !== false,
);
gv.setColumnProperty?.(
column.name,
"styleName",
column.styleName ?? "",
);
applyColumnListEditorProperties(gv, column);
});
if (columns.some((c) => isDropDownEditorColumn(c))) {
@@ -1481,12 +1497,10 @@ useEffect(() => {
fieldName: col.fieldName,
header: realGridHeaderWithTooltip(col.header),
editable: col.editable,
styleName: col.styleName ?? "",
valueType: col.valueType,
dataFormat: col.dataFormat,
...(col.width != null && { width: col.width }),
...(col.styleName != null && {
styleName: col.styleName,
}),
...(col.mergeCells && {
mergeRule: { criteria: "value" as const },
}),
+15 -1
View File
@@ -36,6 +36,8 @@ import SplitDataGrid from "./SplitDataGrid";
import { getComputedValueCallback } from "@/components/util/grid/computedFieldCallbacks"
import {
getExcelImportColumnFieldNames,
getNonEditableColumnFieldNames,
mergeExcelImportWithExistingRows,
prepareGridColumnsForExcelExport,
restoreGridColumnsAfterExcelExport,
shouldPrepareColumnsForExcelExport,
@@ -277,6 +279,7 @@ function createNumberComparer(dp: RealGridDataProviderComparer): (field: string
const TabDataGrid = ({
columnInfo,
isExcelImport = true,
excelImportSkipNonEditable = true,
isExcelExport = true,
rows = [],
showHeaderCheckbox = false,
@@ -552,6 +555,7 @@ const TabDataGrid = ({
const excelColumnFieldNames = getExcelImportColumnFieldNames(
columns,
columnLayout,
{ skipNonEditable: excelImportSkipNonEditable },
);
// 데이터 행 읽기
@@ -596,9 +600,19 @@ const TabDataGrid = ({
}
}
const preserveFieldNames = excelImportSkipNonEditable
? getNonEditableColumnFieldNames(columns, columnLayout)
: [];
setRowDataMap(prev => {
const newMap = new Map(prev);
newMap.set(tabKey, dataRows);
const existingRows = prev.get(tabKey) ?? [];
newMap.set(
tabKey,
mergeExcelImportWithExistingRows(existingRows, dataRows, {
preserveFieldNames,
}),
);
return newMap;
});
} catch (error) {