feat(screen): PC/POP 화면관리 데이터 분리 (excludePop 필터)
PC 화면관리에서 POP 전용 화면과 그룹이 함께 표시되어 혼동을 주는 문제를 해결하기 위해 excludePop 필터를 도입한다. [백엔드] - getScreensByCompany: NOT EXISTS 서브쿼리로 screen_layouts_pop에 레이아웃이 있는 화면 제외, 테이블 별칭 sd로 통일 - getScreenGroups: hierarchy_path 기반으로 POP 그룹 제외 (hierarchy_path IS NULL OR NOT LIKE 'POP/%') - 두 API 모두 excludePop 미전달 시 기존 동작 100% 유지 [프론트엔드] - screenApi.getScreens, getScreenGroups에 excludePop 파라미터 추가 - PC 화면관리 페이지, ScreenGroupTreeView, ScreenList에서 excludePop: true 전달
This commit is contained in:
@@ -38,7 +38,7 @@ export default function ScreenManagementPage() {
|
||||
const loadScreens = useCallback(async () => {
|
||||
try {
|
||||
setLoading(true);
|
||||
const result = await screenApi.getScreens({ page: 1, size: 1000, searchTerm: "" });
|
||||
const result = await screenApi.getScreens({ page: 1, size: 1000, searchTerm: "", excludePop: true });
|
||||
// screenApi.getScreens는 { data: ScreenDefinition[], total, page, size, totalPages } 형태 반환
|
||||
if (result.data && result.data.length > 0) {
|
||||
setScreens(result.data);
|
||||
|
||||
@@ -1011,7 +1011,7 @@ export function ScreenGroupTreeView({
|
||||
const loadGroupsData = async () => {
|
||||
try {
|
||||
setLoading(true);
|
||||
const response = await getScreenGroups({ size: 1000 }); // 모든 그룹 가져오기
|
||||
const response = await getScreenGroups({ size: 1000, excludePop: true });
|
||||
if (response.success && response.data) {
|
||||
setGroups(response.data);
|
||||
|
||||
|
||||
@@ -223,7 +223,7 @@ export default function ScreenList({ onScreenSelect, selectedScreen, onDesignScr
|
||||
const loadGroups = async () => {
|
||||
try {
|
||||
setLoadingGroups(true);
|
||||
const response = await getScreenGroups();
|
||||
const response = await getScreenGroups({ excludePop: true });
|
||||
if (response.success && response.data) {
|
||||
setGroups(response.data);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ export const screenApi = {
|
||||
size?: number;
|
||||
companyCode?: string;
|
||||
searchTerm?: string;
|
||||
excludePop?: boolean;
|
||||
}): Promise<PaginatedResponse<ScreenDefinition>> => {
|
||||
const response = await apiClient.get("/screen-management/screens", { params });
|
||||
const raw = response.data || {};
|
||||
|
||||
@@ -115,12 +115,14 @@ export async function getScreenGroups(params?: {
|
||||
page?: number;
|
||||
size?: number;
|
||||
searchTerm?: string;
|
||||
excludePop?: boolean;
|
||||
}): Promise<ApiResponse<ScreenGroup[]>> {
|
||||
try {
|
||||
const queryParams = new URLSearchParams();
|
||||
if (params?.page) queryParams.append("page", params.page.toString());
|
||||
if (params?.size) queryParams.append("size", params.size.toString());
|
||||
if (params?.searchTerm) queryParams.append("searchTerm", params.searchTerm);
|
||||
if (params?.excludePop) queryParams.append("excludePop", "true");
|
||||
|
||||
const response = await apiClient.get(`/screen-groups/groups?${queryParams.toString()}`);
|
||||
return response.data;
|
||||
|
||||
Reference in New Issue
Block a user