엔티티 타입 에러수정 및 배지 색상없음 오류 수정
This commit is contained in:
parent
857e46eab6
commit
ae38e0f249
|
|
@ -767,11 +767,12 @@ export async function getTableData(
|
||||||
|
|
||||||
const tableManagementService = new TableManagementService();
|
const tableManagementService = new TableManagementService();
|
||||||
|
|
||||||
// 🆕 현재 사용자 필터 적용
|
// 🆕 현재 사용자 필터 적용 (autoFilter가 없거나 enabled가 명시적으로 false가 아니면 기본 적용)
|
||||||
let enhancedSearch = { ...search };
|
let enhancedSearch = { ...search };
|
||||||
if (autoFilter?.enabled && req.user) {
|
const shouldApplyAutoFilter = autoFilter?.enabled !== false; // 기본값: true
|
||||||
const filterColumn = autoFilter.filterColumn || "company_code";
|
if (shouldApplyAutoFilter && req.user) {
|
||||||
const userField = autoFilter.userField || "companyCode";
|
const filterColumn = autoFilter?.filterColumn || "company_code";
|
||||||
|
const userField = autoFilter?.userField || "companyCode";
|
||||||
const userValue = (req.user as any)[userField];
|
const userValue = (req.user as any)[userField];
|
||||||
|
|
||||||
if (userValue) {
|
if (userValue) {
|
||||||
|
|
|
||||||
|
|
@ -2201,12 +2201,12 @@ export const InteractiveDataTable: React.FC<InteractiveDataTableProps> = ({
|
||||||
const mapping = categoryMappings[column.columnName];
|
const mapping = categoryMappings[column.columnName];
|
||||||
const categoryData = mapping?.[String(value)];
|
const categoryData = mapping?.[String(value)];
|
||||||
|
|
||||||
// 매핑 데이터가 있으면 라벨과 색상 사용, 없으면 코드값과 기본색상
|
// 매핑 데이터가 있으면 라벨과 색상 사용, 없으면 코드값만 텍스트로 표시
|
||||||
const displayLabel = categoryData?.label || String(value);
|
const displayLabel = categoryData?.label || String(value);
|
||||||
const displayColor = categoryData?.color || "#64748b"; // 기본 slate 색상
|
const displayColor = categoryData?.color;
|
||||||
|
|
||||||
// 배지 없음 옵션: color가 "none"이면 텍스트만 표시
|
// 배지 없음 옵션: color가 없거나, "none"이거나, 매핑 데이터가 없으면 텍스트만 표시
|
||||||
if (displayColor === "none") {
|
if (!displayColor || displayColor === "none" || !categoryData) {
|
||||||
return <span className="text-sm">{displayLabel}</span>;
|
return <span className="text-sm">{displayLabel}</span>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -418,7 +418,7 @@ export const RepeaterInput: React.FC<RepeaterInputProps> = ({
|
||||||
const valueStr = String(value); // 값을 문자열로 변환
|
const valueStr = String(value); // 값을 문자열로 변환
|
||||||
const categoryData = mapping?.[valueStr];
|
const categoryData = mapping?.[valueStr];
|
||||||
const displayLabel = categoryData?.label || valueStr;
|
const displayLabel = categoryData?.label || valueStr;
|
||||||
const displayColor = categoryData?.color || "#64748b"; // 기본 색상 (slate)
|
const displayColor = categoryData?.color;
|
||||||
|
|
||||||
console.log(`🏷️ [RepeaterInput] 카테고리 배지 렌더링:`, {
|
console.log(`🏷️ [RepeaterInput] 카테고리 배지 렌더링:`, {
|
||||||
fieldName: field.name,
|
fieldName: field.name,
|
||||||
|
|
@ -429,8 +429,8 @@ export const RepeaterInput: React.FC<RepeaterInputProps> = ({
|
||||||
displayColor,
|
displayColor,
|
||||||
});
|
});
|
||||||
|
|
||||||
// 색상이 "none"이면 일반 텍스트로 표시
|
// 배지 없음 옵션: color가 없거나, "none"이거나, 매핑 데이터가 없으면 텍스트만 표시
|
||||||
if (displayColor === "none") {
|
if (!displayColor || displayColor === "none" || !categoryData) {
|
||||||
return <span className="text-sm">{displayLabel}</span>;
|
return <span className="text-sm">{displayLabel}</span>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -426,12 +426,29 @@ export class DynamicFormApi {
|
||||||
sortBy?: string;
|
sortBy?: string;
|
||||||
sortOrder?: "asc" | "desc";
|
sortOrder?: "asc" | "desc";
|
||||||
filters?: Record<string, any>;
|
filters?: Record<string, any>;
|
||||||
|
autoFilter?: {
|
||||||
|
enabled: boolean;
|
||||||
|
filterColumn?: string;
|
||||||
|
userField?: string;
|
||||||
|
};
|
||||||
},
|
},
|
||||||
): Promise<ApiResponse<any[]>> {
|
): Promise<ApiResponse<any[]>> {
|
||||||
try {
|
try {
|
||||||
console.log("📊 테이블 데이터 조회 요청:", { tableName, params });
|
console.log("📊 테이블 데이터 조회 요청:", { tableName, params });
|
||||||
|
|
||||||
const response = await apiClient.post(`/table-management/tables/${tableName}/data`, params || {});
|
// autoFilter가 없으면 기본값으로 멀티테넌시 필터 적용
|
||||||
|
// pageSize를 size로 변환 (백엔드 파라미터명 호환)
|
||||||
|
const requestParams = {
|
||||||
|
...params,
|
||||||
|
size: params?.pageSize || params?.size || 100, // 기본값 100
|
||||||
|
autoFilter: params?.autoFilter ?? {
|
||||||
|
enabled: true,
|
||||||
|
filterColumn: "company_code",
|
||||||
|
userField: "companyCode",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const response = await apiClient.post(`/table-management/tables/${tableName}/data`, requestParams);
|
||||||
|
|
||||||
console.log("✅ 테이블 데이터 조회 성공 (원본):", response.data);
|
console.log("✅ 테이블 데이터 조회 성공 (원본):", response.data);
|
||||||
console.log("🔍 response.data 상세:", {
|
console.log("🔍 response.data 상세:", {
|
||||||
|
|
|
||||||
|
|
@ -4233,9 +4233,10 @@ export const TableListComponent: React.FC<TableListComponentProps> = ({
|
||||||
if (values.length === 1) {
|
if (values.length === 1) {
|
||||||
const categoryData = mapping?.[values[0]];
|
const categoryData = mapping?.[values[0]];
|
||||||
const displayLabel = categoryData?.label || values[0];
|
const displayLabel = categoryData?.label || values[0];
|
||||||
const displayColor = categoryData?.color || "#64748b";
|
const displayColor = categoryData?.color;
|
||||||
|
|
||||||
if (displayColor === "none") {
|
// 배지 없음 옵션: color가 없거나, "none"이거나, 매핑 데이터가 없으면 텍스트만 표시
|
||||||
|
if (!displayColor || displayColor === "none" || !categoryData) {
|
||||||
return <span className="text-sm">{displayLabel}</span>;
|
return <span className="text-sm">{displayLabel}</span>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4258,9 +4259,10 @@ export const TableListComponent: React.FC<TableListComponentProps> = ({
|
||||||
{values.map((val, idx) => {
|
{values.map((val, idx) => {
|
||||||
const categoryData = mapping?.[val];
|
const categoryData = mapping?.[val];
|
||||||
const displayLabel = categoryData?.label || val;
|
const displayLabel = categoryData?.label || val;
|
||||||
const displayColor = categoryData?.color || "#64748b";
|
const displayColor = categoryData?.color;
|
||||||
|
|
||||||
if (displayColor === "none") {
|
// 배지 없음 옵션: color가 없거나, "none"이거나, 매핑 데이터가 없으면 텍스트만 표시
|
||||||
|
if (!displayColor || displayColor === "none" || !categoryData) {
|
||||||
return (
|
return (
|
||||||
<span key={idx} className="text-sm">
|
<span key={idx} className="text-sm">
|
||||||
{displayLabel}
|
{displayLabel}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue