메뉴 권한 및 ui 수정

This commit is contained in:
focp212@naver.com
2025-11-05 14:03:50 +09:00
parent 7d158c8a6e
commit a4807c4013
13 changed files with 53 additions and 489 deletions

View File

@@ -5,6 +5,7 @@ import { RefObject, useEffect, useState } from 'react';
import { MenuItem } from '../model/types';
import { useTranslation } from 'react-i18next';
import { MenuItems } from '@/entities/common/model/constant';
import { showAlert } from '@/widgets/show-alert';
export interface MenuCategoryProps {
menuId?: number;
@@ -33,15 +34,30 @@ export const MenuCategory = ({
}: MenuCategoryProps) => {
const { navigate } = useNavigate();
const { i18n } = useTranslation();
const menuGrantsByKey = useStore.getState().UserStore.menuGrantsByKey;
const [favoriteItems, setFavoriteItems] = useState<Array<UserFavorite>>([]);
const [menuIds, setMenuIds] = useState<Array<number | undefined>>([]);
const onClickToNavigate = (path?: string, menuId?: number) => {
if(!!path && !!setMenuOn && !editMode){
setMenuOn(false);
navigate(path);
const checkGrant = (menuId?: number) => {
const myGrants = menuGrantsByKey['' + menuId];
if(myGrants?.includes('R')){
return true
}
return false;
};
const onClickToNavigate = (menuId?: number, path?: string) => {
if(menuId && checkGrant(menuId)){
if(!!path && !!setMenuOn && !editMode){
setMenuOn(false);
navigate(path);
}
}
else{
showAlert('권한이 없습니다.');
}
};
const favoriteSetting = (
@@ -121,7 +137,7 @@ export const MenuCategory = ({
rs.push(
<li
key={ `menu-item-key-${menuId}-${i}` }
onClick={ () => onClickToNavigate(subMenu[i]?.programPath) }
onClick={ () => onClickToNavigate(subMenu[i]?.menuId, subMenu[i]?.programPath) }
>
<span>{ displayName }</span>
<div className="check_box_scrap">
@@ -151,7 +167,7 @@ export const MenuCategory = ({
rs.push(
<li
key={ `menu-item-key-${i}` }
onClick={ () => onClickToNavigate(subMenu[i]?.programPath) }
onClick={ () => onClickToNavigate(subMenu[i]?.menuId, subMenu[i]?.programPath) }
>{ displayName }</li>
);
}

View File

@@ -59,7 +59,10 @@ export const FaqDetail = ({
<div className="faq-detail">
<div className="faq-detail__title">{ title }</div>
<div className="faq-detail__divider"></div>
<div className="faq-detail__body" dangerouslySetInnerHTML={{ __html: contents || '' }}></div>
<div
className="faq-detail__body"
dangerouslySetInnerHTML={{ __html: contents || '' }}
></div>
</div>
</div>
}

View File

@@ -67,7 +67,10 @@ export const NoticeDetail = ({
<div className="notice-detail__title">{ result.title }</div>
<div className="notice-detail__meta">{ result.regDt? moment(result.regDt).format('YYYY.MM.DD'): '' } | { t(`support.notice.categories.${result.informCl}`) }</div>
<div className="notice-detail__divider"></div>
<div className="notice-detail__body" dangerouslySetInnerHTML={{ __html: result.contents || '' }}></div>
<div
className="notice-detail__body"
dangerouslySetInnerHTML={{ __html: result.contents || '' }}
></div>
</div>
</div>
</div>

View File

@@ -85,11 +85,17 @@ export const QnaDetail = ({
<div className="inq-detail__divider"></div>
<div className="inq-detail__section">
<div className="inq-detail__section-title">{t('support.qna.detailLabels.inquiryAnswer')}</div>
<div className="inq-detail__body" dangerouslySetInnerHTML={{ __html: result?.answer || '' }}></div>
<div
className="inq-detail__body"
dangerouslySetInnerHTML={{ __html: result?.answer || '' }}
></div>
</div>
<div className="inq-detail__section">
<div className="inq-detail__section-title">{t('support.qna.detailLabels.inquiryContents')}</div>
<div className="inq-detail__body" dangerouslySetInnerHTML={{ __html: result?.contents || '' }}></div>
<div
className="inq-detail__body"
dangerouslySetInnerHTML={{ __html: result?.contents || '' }}
></div>
</div>
</div>
</div>

View File

@@ -1,5 +1,3 @@
import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { FaqItemProps } from '../model/types';
import { useTranslation } from 'react-i18next';

View File

@@ -1,6 +1,4 @@
import moment from 'moment';
import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { NoticeItemProps } from '../model/types';
import { useTranslation } from 'react-i18next';
@@ -8,7 +6,6 @@ export const SupportNoticeItem = ({
noticeItem,
setDetailData,
}: NoticeItemProps) => {
const { navigate } = useNavigate();
const { t } = useTranslation();
const onClickToDetail = () => {