diff --git a/egovframe-template-simple-react-contribution/src/css/page.css b/egovframe-template-simple-react-contribution/src/css/page.css index f6def02..29a13cb 100644 --- a/egovframe-template-simple-react-contribution/src/css/page.css +++ b/egovframe-template-simple-react-contribution/src/css/page.css @@ -182,14 +182,12 @@ .menuList .result .list_item > div:nth-child(5) {width: 100px;} /* 사이트관리 > 환경설정 > 메뉴권한관리 */ - .roleList .head > span:nth-child(1) {width: 120px;} - .roleList .head > span:nth-child(2) {width: 180px;} - .roleList .head > span:nth-child(3) {width: 120px;} + .roleList .head > span:nth-child(1) {width: 180px;} + .roleList .head > span:nth-child(2) {width: 120px;} .roleList .head .checkboxDiv {width: 60px;} .roleList .head .saveBtnDiv {width: 100px;} - .roleList .result .list_item > div:nth-child(1) {width: 120px;} - .roleList .result .list_item > div:nth-child(2) {width: 180px;} - .roleList .result .list_item > div:nth-child(3) {width: 120px;} + .roleList .result .list_item > div:nth-child(1) {width: 180px;} + .roleList .result .list_item > div:nth-child(2) {width: 120px;} .roleList .result .list_item .checkboxDiv {width: 60px;} .roleList .result .list_item .saveBtnDiv {width: 100px;} diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/config/MenuAuthMgt.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/config/MenuAuthMgt.jsx index 727c93d..4d498a1 100644 --- a/egovframe-template-simple-react-contribution/src/pages/admin/config/MenuAuthMgt.jsx +++ b/egovframe-template-simple-react-contribution/src/pages/admin/config/MenuAuthMgt.jsx @@ -29,6 +29,7 @@ function MenuAuthMgt(props) { // 리스트 항목 구성 menuList.forEach(function (item, index) { const checkboxs = []; + roleList.forEach(function (role) { checkboxs.push(
@@ -44,12 +45,19 @@ function MenuAuthMgt(props) { defaultChecked={item.menuAuth.includes(role.itemCd)}/>
) + /*if(item.menuGroup){ + + }else{ + checkboxs.push( +
+ ) + }*/ }); + mutListTag.push(
-
{item.menuId}
+
{item.menuGroup?'└ ':''}{item.menuId}
{item.menuTitle}
-
{item.menuGroup}
{checkboxs}
@@ -73,27 +81,25 @@ function MenuAuthMgt(props) { },[]); function editMenu(menu){ - if(window.confirm("수정하시겠습니까?")) { - EgovNet.requestFetch( - '/admin/config/menu-auth-mgt', - { - method: "PUT", - headers: { - 'Content-type': 'application/json' - }, - body: JSON.stringify(menu) + EgovNet.requestFetch( + '/admin/config/menu-auth-mgt', + { + method: "PUT", + headers: { + 'Content-type': 'application/json' }, - (resp) => { - if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) { - alert("수정되었습니다.") - } else if (Number(resp.resultCode) === Number(CODE.RCV_ERROR_AUTH)) { - console.log("토큰 갱신중.") - } else { - alert(resp.result.resultMessage) - } + body: JSON.stringify(menu) + }, + (resp) => { + if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) { + alert("수정되었습니다.") + } else if (Number(resp.resultCode) === Number(CODE.RCV_ERROR_AUTH)) { + console.log("토큰 갱신중.") + } else { + alert(resp.result.resultMessage) } - ) - } + } + ) } useEffect(()=>{ @@ -126,7 +132,6 @@ function MenuAuthMgt(props) {
메뉴 코드 메뉴 이름 - 부모 메뉴 {roleHeader}
diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/contents/survey/QuestionModal.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/contents/survey/QuestionModal.jsx index 3ef8bc8..e5af92b 100644 --- a/egovframe-template-simple-react-contribution/src/pages/admin/contents/survey/QuestionModal.jsx +++ b/egovframe-template-simple-react-contribution/src/pages/admin/contents/survey/QuestionModal.jsx @@ -5,6 +5,7 @@ import Col from "react-bootstrap/Col"; import Form from "react-bootstrap/Form"; import Table from "react-bootstrap/Table"; import * as EgovNet from "api/egovFetch"; +import CODE from "../../../../constants/code"; function QuestionModal({svySeq}){ @@ -44,12 +45,54 @@ function QuestionModal({svySeq}){ setTempSeq(tempSeq+1); } - function addItem(){ + function qtOptionChange(target, value){ + const temp = {...selectedQt} + temp[target] = value; + setSelectedQt(temp); + } + function addItem(){ + const temp = {...selectedQt} + temp.itemList.push({ + qtItemSeq: null, + qtSeq:null, + itemNm: null, + questionYn:'Y' + }) + setSelectedQt(temp); + } + + function removeQt(index){ + const temp = [...qtList] + temp.splice(index, 1); + setQtList(temp); + setSelectedQt(null) + } + + function removeItem(index){ + const temp = {...selectedQt} + temp.itemList.splice(index, 1) + setSelectedQt(temp) } function editSurveyQt(e){ - + EgovNet.requestFetch( + '/admin/survey/info-qt', + { + method: "PUT", + headers: { + 'Content-type': 'application/json' + }, + body: JSON.stringify(qtList) + }, + (resp) => { + if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) { + alert("저장되었습니다.") + }else{ + alert(resp.resultMessage) + } + } + ) } useEffect(() => { @@ -60,16 +103,20 @@ function QuestionModal({svySeq}){ const tempQt = [...qtList]; tempQt.forEach(function (qt, index){ if(qt.qtSeq === null){ - if(qt.tempSeq === selectedQt.tempSeq){ - qt = selectedQt; + if(qt.tempSeq === selectedQt?.tempSeq){ + tempQt[index] = selectedQt; } - }else if(qt.qtSeq === selectedQt.qtSeq){ - qt = selectedQt; + }else if(qt.qtSeq === selectedQt?.qtSeq){ + tempQt[index] = selectedQt; } }) setQtList(tempQt); }, [selectedQt]); + useEffect(() => { + + }, [qtList]); + return ( <> @@ -79,17 +126,29 @@ function QuestionModal({svySeq}){ + + + + + - {qtList.map(qt=>{ + {qtList.map((qt, index)=>{ return ( - + setSelectedQt({...qt})}> + ); @@ -97,7 +156,7 @@ function QuestionModal({svySeq}){ - @@ -110,10 +169,38 @@ function QuestionModal({svySeq}){ 질문유형 - {setSelectedQt({...selectedQt, qtType:1})}}/> - {setSelectedQt({...selectedQt, qtType:2})}}/> - {setSelectedQt({...selectedQt, qtType:3})}}/> - {setSelectedQt({...selectedQt, qtType:4})}}/> + { + qtOptionChange("qtType", Number(e.target.value)); + }}/> + { + qtOptionChange("qtType", Number(e.target.value)); + }}/> + { + qtOptionChange("qtType", Number(e.target.value)); + }}/> + { + qtOptionChange("qtType", Number(e.target.value)); + }}/> + + + + + 설명 + + + { + qtOptionChange("qtDesc", e.target.value); + }}/> @@ -121,19 +208,34 @@ function QuestionModal({svySeq}){ 최대 선택 개수 - {setSelectedQt({...selectedQt, maxNo:e.target.value})}}/> + { + qtOptionChange("maxNo", e.target.value); + }}/> 기타 여부 - {setSelectedQt({...selectedQt, etcYn:e.target.checked?'Y':'N'})}}/> + { + qtOptionChange("etcYn", e.target.checked?'Y':'N'); + }}/> -
질문삭제
- {setSelectedQt(qt)}}/> + { + qt.qtTitle = e.target.value + setSelectedQt({...qt}) + }} /> + +
+
+
+ + + + + + + @@ -148,13 +250,25 @@ function QuestionModal({svySeq}){ setSelectedQt(qt); }}/> + + ); })} - @@ -164,7 +278,7 @@ function QuestionModal({svySeq}){ - + ); diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/AdminSurveyController.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/AdminSurveyController.java index 091f153..280f10b 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/AdminSurveyController.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/AdminSurveyController.java @@ -1,6 +1,7 @@ package com.dbnt.kcscbackend.admin.contents.survey; import com.dbnt.kcscbackend.admin.contents.survey.entity.TnSurvey; +import com.dbnt.kcscbackend.admin.contents.survey.entity.TnSurveyQt; import com.dbnt.kcscbackend.admin.contents.survey.service.AdminSurveyService; import com.dbnt.kcscbackend.auth.entity.LoginVO; import com.dbnt.kcscbackend.config.common.ResponseCode; @@ -18,6 +19,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.HashMap; +import java.util.List; import java.util.Map; @RestController @@ -75,7 +77,7 @@ public class AdminSurveyController { } @RequestMapping(method = RequestMethod.GET, value = "/info-qt") - public ResultVO surveyEditQt(TnSurvey survey) throws Exception{ + public ResultVO surveyQt(TnSurvey survey) throws Exception{ ResultVO resultVO = new ResultVO(); Map resultMap = new HashMap<>(); @@ -83,4 +85,15 @@ public class AdminSurveyController { resultVO.setResult(resultMap); return resultVO; } + + @RequestMapping(method = RequestMethod.PUT, value = "/info-qt") + public ResultVO surveyQtEdit(@RequestBody List qtList, @AuthenticationPrincipal LoginVO user) throws Exception{ + ResultVO resultVO = new ResultVO(); + + adminSurveyService.insertSurveyQt(qtList, user.getId()); + resultVO.setResultCode(ResponseCode.SUCCESS.getCode()); + resultVO.setResultMessage("저장 되었습니다."); + + return resultVO; + } } diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/repository/TnSurveyQtItemRepository.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/repository/TnSurveyQtItemRepository.java index fb2c308..418e7a5 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/repository/TnSurveyQtItemRepository.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/repository/TnSurveyQtItemRepository.java @@ -7,4 +7,5 @@ import java.util.List; public interface TnSurveyQtItemRepository extends JpaRepository { List findByQtSeqInOrderByQtItemSeq(List qtSeqList); + } diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/repository/TnSurveyQtRepository.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/repository/TnSurveyQtRepository.java index 72d38f2..5350879 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/repository/TnSurveyQtRepository.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/repository/TnSurveyQtRepository.java @@ -7,4 +7,6 @@ import java.util.List; public interface TnSurveyQtRepository extends JpaRepository { List findBySvySeqOrderByQtSeq(Integer svySeq); + + void deleteBySvySeq(Integer svySeq); } diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/service/AdminSurveyService.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/service/AdminSurveyService.java index 657e8c2..9bde9f1 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/service/AdminSurveyService.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/admin/contents/survey/service/AdminSurveyService.java @@ -77,4 +77,20 @@ public class AdminSurveyService { public void deleteSurvey(Integer svySeq) { surveyRepository.deleteById(svySeq); } + + @Transactional + public void insertSurveyQt(List qtList, String id) { + qtRepository.deleteBySvySeq(qtList.get(0).getSvySeq()); + for(TnSurveyQt qt: qtList){ + qt.setQtSeq(null); + } + qtRepository.saveAll(qtList); + for(TnSurveyQt qt: qtList){ + for(TnSurveyQtItem item: qt.getItemList()){ + item.setQtSeq(qt.getQtSeq()); + } + itemRepository.saveAll(qt.getItemList()); + } + System.out.println(); + } } diff --git a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/CustomUrlAuthenticationSuccessHandler.java b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/CustomUrlAuthenticationSuccessHandler.java index bf45b84..c2fe3e8 100644 --- a/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/CustomUrlAuthenticationSuccessHandler.java +++ b/kcsc-back-end/src/main/java/com/dbnt/kcscbackend/config/security/CustomUrlAuthenticationSuccessHandler.java @@ -63,6 +63,8 @@ public class CustomUrlAuthenticationSuccessHandler extends SimpleUrlAuthenticati MediaType jsonMimeType = MediaType.APPLICATION_JSON; HashMap resultMap = new HashMap<>(); + /* + // 관리자 계정 로그인 제한 if문 if(securityUser.getUserId().equals("admin") && !adminIpList.contains(accessIp)){ resultMap.put("resultCode", ResponseCode.FAILED.getCode()); resultMap.put("resultMessage", "관리자 계정은 지정된 아이피에서만 접속할 수 있습니다.\n필요한 경우 관리자에게 요청하십시오.\n접속자 아이피: "+ClientUtils.getRemoteIP(request)); @@ -74,16 +76,16 @@ public class CustomUrlAuthenticationSuccessHandler extends SimpleUrlAuthenticati resultMap.put("refreshToken", refreshToken); //로그인 로그 기록 adminLogsService.insertLoginLog(securityUser.getUserId(), accessIp, accessToken, "Y", ClientUtils.getWebType(request)); - } -/* - // 로그인 제한 해제시 주석 해제 및 위 if문 주석처리 할 것. + }*/ + + // 관리자 로그인 제한 해제 위 if문 주석처리 할 것. String accessToken = jwtTokenUtil.generateAccessToken(securityUser, request.getRemoteAddr()); String refreshToken = jwtTokenUtil.generateRefreshTokenToken(securityUser, request.getRemoteAddr()); resultMap.put("resultCode", ResponseCode.SUCCESS.getCode()); resultMap.put("accessToken", accessToken); resultMap.put("refreshToken", refreshToken); adminLogsService.insertLoginLog(securityUser.getUserId(), accessIp, accessToken, "Y", ClientUtils.getWebType(request)); -*/ + if (jsonConverter.canWrite(resultMap.getClass(), jsonMimeType)) { jsonConverter.write(resultMap, jsonMimeType, new ServletServerHttpResponse(response));
보기응답삭제
+ { + const qt = {...selectedQt} + qt.itemList[index].questionYn = e.target.checked?'Y':'N' + setSelectedQt(qt); + }}/> + + +
+