Compare commits
No commits in common. "6713bc933df4b52e605b6f1e66c23f48e0ed176c" and "0e16df04a472ec415b0f3dd7b8587babd4b26732" have entirely different histories.
6713bc933d
...
0e16df04a4
|
|
@ -1,4 +1,4 @@
|
|||
import React, {useRef} from 'react';
|
||||
import React from 'react';
|
||||
import CODE from "../../../constants/code";
|
||||
import { default as EgovLeftNav } from 'components/leftmenu/EgovLeftNavAdmin';
|
||||
import {Link} from "react-router-dom";
|
||||
|
|
@ -11,22 +11,14 @@ import ChildCodeDiv from "./baseCode/ChildCodeDiv";
|
|||
|
||||
function BaseCodeMgt(props) {
|
||||
|
||||
// ParentCodeDiv에서 ChildCodeDiv로 함수 호출 참고자료
|
||||
// https://velog.io/@hssarah/React%EC%97%90%EC%84%9C-%EB%8B%A4%EB%A5%B8-Function-Component%EC%97%90-%EC%9E%88%EB%8A%94-%ED%95%A8%EC%88%98-%ED%98%B8%EC%B6%9C-React-Calling-Function-From-Another-Function-Component
|
||||
|
||||
const childRef = useRef(null);
|
||||
function getCodeItem(grpCd){
|
||||
childRef.current.getCodeItemList(grpCd);
|
||||
}
|
||||
return (
|
||||
<div className="container">
|
||||
<div className="c_wrap">
|
||||
<div className="location">
|
||||
<ul>
|
||||
<li><Link to={URL.MAIN} className="home">Home</Link></li>
|
||||
<li>사이트관리</li>
|
||||
<li>환경설정</li>
|
||||
<li><Link to={URL.ADMIN_BASE_CODE}>기본 코드 관리</Link></li>
|
||||
<li><Link to={URL.ADMIN}>사이트관리</Link></li>
|
||||
<li>기본 코드 관리</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div className="layout">
|
||||
|
|
@ -41,10 +33,10 @@ function BaseCodeMgt(props) {
|
|||
|
||||
<Row>
|
||||
<Col xs={"6"}>
|
||||
<ParentCodeDiv getCodeItem={getCodeItem}/>
|
||||
<ParentCodeDiv/>
|
||||
</Col>
|
||||
<Col xs={"6"}>
|
||||
<ChildCodeDiv ref={childRef}/>
|
||||
<ChildCodeDiv/>
|
||||
</Col>
|
||||
</Row>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,74 +1,30 @@
|
|||
import React, {useState, useImperativeHandle, forwardRef} from "react";
|
||||
import * as EgovNet from "api/egovFetch";
|
||||
import {Container} from "react-bootstrap";
|
||||
import Row from "react-bootstrap/Row";
|
||||
import Col from "react-bootstrap/Col";
|
||||
import Form from 'react-bootstrap/Form'
|
||||
import Button from "react-bootstrap/Button";
|
||||
|
||||
function ChildCodeDiv({}, ref){
|
||||
|
||||
const [codeItemRow, setCodeItemRow] = useState();
|
||||
const [grpCd, setGrpCd] = useState();
|
||||
|
||||
useImperativeHandle(ref, ()=>({
|
||||
getCodeItemList
|
||||
}))
|
||||
async function getCodeItemList(parentCd){
|
||||
setCodeItemRow([]);
|
||||
setGrpCd(parentCd)
|
||||
EgovNet.requestFetch(
|
||||
'/admin/config/code-item?grpCd='+parentCd,
|
||||
{
|
||||
method: "GET"
|
||||
},
|
||||
(resp) => {
|
||||
const codeItemList = resp.result.codeItemList;
|
||||
const itemTag = [];
|
||||
codeItemList.forEach(function (item, index){
|
||||
itemTag.push(
|
||||
<Row className={"py-2 border-bottom"}>
|
||||
<Col xs={3}><Form.Control type={"text"} size={"sm"} defaultValue={item.itemCd}/></Col>
|
||||
<Col xs={5}><Form.Control type={"text"} size={"sm"} defaultValue={item.itemNm}/></Col>
|
||||
<Col xs={2}><Button variant={"danger"} size={"sm"}>삭제</Button></Col>
|
||||
<Col xs={2}><Button variant={"primary"} size={"sm"}>수정</Button></Col>
|
||||
</Row>
|
||||
)
|
||||
})
|
||||
setCodeItemRow(itemTag);
|
||||
},
|
||||
function (resp) {
|
||||
console.log("err response : ", resp);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function ChildCodeDiv(){
|
||||
return (
|
||||
<Container className={"pt-3"}>
|
||||
<Row className={"py-2 bg-light border-bottom"}>
|
||||
<Col xs={3}>코드</Col>
|
||||
<Col xs={5}>코드명</Col>
|
||||
<Col xs={4}>코드</Col>
|
||||
<Col xs={4}>코드명</Col>
|
||||
<Col xs={2}>삭제</Col>
|
||||
<Col xs={2}>수정</Col>
|
||||
</Row>
|
||||
{codeItemRow}
|
||||
{grpCd!=null?(
|
||||
<Row className={"py-1"}>
|
||||
<Col xs={3}>
|
||||
<Form.Control type={"text"} placeholder={"코드"} size={"sm"}/>
|
||||
</Col>
|
||||
<Col xs={5}>
|
||||
<Form.Control type={"text"} placeholder={"코드명"} size={"sm"}/>
|
||||
</Col>
|
||||
<Col xs={{span:2, offset:2}}><Button type={"button"} variant={"primary"} size={"sm"}>등록</Button></Col>
|
||||
</Row>
|
||||
):(
|
||||
<Row className={"py-1"}>
|
||||
<Col>코드 그룹을 선택해주세요.</Col>
|
||||
</Row>
|
||||
)}
|
||||
{}
|
||||
<Row className={"py-1"}>
|
||||
<Col xs={4}>
|
||||
<Form.Control type={"text"} placeholder={"코드"} size={"sm"}/>
|
||||
</Col>
|
||||
<Col xs={4}>
|
||||
<Form.Control type={"text"} placeholder={"코드명"} size={"sm"}/>
|
||||
</Col>
|
||||
<Col xs={{span:2, offset:2}}><Button type={"button"} variant={"primary"} size={"sm"}>등록</Button></Col>
|
||||
</Row>
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
|
||||
export default forwardRef(ChildCodeDiv);
|
||||
export default ChildCodeDiv;
|
||||
|
|
@ -1,102 +1,55 @@
|
|||
import React, { useState, useEffect, useCallback } from 'react';
|
||||
import * as EgovNet from "api/egovFetch";
|
||||
import {Container} from "react-bootstrap";
|
||||
import Row from "react-bootstrap/Row";
|
||||
import Col from "react-bootstrap/Col";
|
||||
import Form from 'react-bootstrap/Form'
|
||||
import Button from "react-bootstrap/Button";
|
||||
import { FaRegHandPointRight } from "react-icons/fa";
|
||||
import * as EgovNet from "api/egovFetch";
|
||||
|
||||
function ParentCodeDiv({getCodeItem}){
|
||||
function ParentCodeDiv(props){
|
||||
|
||||
const [codeGrpRow, setCodeGrpRow] = useState();
|
||||
|
||||
const getCodeGrp = useCallback(()=>{
|
||||
function getCodeGrp(){
|
||||
EgovNet.requestFetch(
|
||||
'/admin/config/code-grp',
|
||||
{
|
||||
method: "GET"
|
||||
method: "GET",
|
||||
headers: {
|
||||
'Content-type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({})
|
||||
},
|
||||
(resp) => {
|
||||
const codeGrpList = resp.result.codeGrpList;
|
||||
const grpTag = [];
|
||||
codeGrpList.forEach(function (item, index){
|
||||
grpTag.push(
|
||||
<Row className={"py-2 border-bottom"}>
|
||||
<Col xs={3}>
|
||||
<FaRegHandPointRight className={"selectIcon d-none"}/>
|
||||
<a href={"#"} onClick={(e)=>{codeGrpChoose(e, item.grpCd)}} data-grpcd={item.grpCd}>{item.grpCd}</a>
|
||||
</Col>
|
||||
<Col xs={5}><Form.Control type={"text"} size={"sm"} defaultValue={item.grpCdNm}/></Col>
|
||||
<Col xs={2}><Button variant={"danger"} size={"sm"}>삭제</Button></Col>
|
||||
<Col xs={2}><Button variant={"primary"} size={"sm"}>수정</Button></Col>
|
||||
</Row>
|
||||
)
|
||||
})
|
||||
setCodeGrpRow(grpTag);
|
||||
debugger
|
||||
},
|
||||
function (resp) {
|
||||
console.log("err response : ", resp);
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
getCodeGrp();
|
||||
}, []);
|
||||
|
||||
function codeGrpChoose(e, grpCd){
|
||||
document.querySelectorAll(".selectIcon").forEach(function (item){
|
||||
item.classList.value = 'selectIcon d-none'
|
||||
})
|
||||
e.target.parentElement.querySelector(".selectIcon").classList.value = "selectIcon"
|
||||
getCodeItem(grpCd)
|
||||
}
|
||||
|
||||
function addCodeGrp(){
|
||||
const grpCd = document.querySelector("#grpCd");
|
||||
const grpCdNm = document.querySelector("#grpCdNm");
|
||||
EgovNet.requestFetch(
|
||||
'/admin/config/code-grp',
|
||||
{
|
||||
method: "POST",
|
||||
headers: {
|
||||
'Content-type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
grpCd: grpCd.value,
|
||||
grpCdNm: grpCdNm.value
|
||||
})
|
||||
},
|
||||
(resp) => {
|
||||
grpCd.value = "";
|
||||
grpCdNm.value = "";
|
||||
getCodeGrp();
|
||||
},
|
||||
function (resp) {
|
||||
console.log("err response : ", resp);
|
||||
}
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
return (
|
||||
<Container className={"pt-3"} >
|
||||
<Container className={"pt-3"}>
|
||||
<Row className={"py-2 bg-light border-bottom"}>
|
||||
<Col xs={3}>코드그룹</Col>
|
||||
<Col xs={5}>코드그룹명</Col>
|
||||
<Col xs={4}>코드그룹</Col>
|
||||
<Col xs={4}>코드그룹명</Col>
|
||||
<Col xs={2}>삭제</Col>
|
||||
<Col xs={2}>수정</Col>
|
||||
</Row>
|
||||
{codeGrpRow}
|
||||
<Row className={"py-1"}>
|
||||
<Col xs={3}>
|
||||
<Form.Control type={"text"} id={"grpCd"} placeholder={"코드그룹"} size={"sm"}/>
|
||||
<Col xs={4}>
|
||||
<Form.Control type={"text"} placeholder={"코드그룹"} size={"sm"}/>
|
||||
</Col>
|
||||
<Col xs={5}>
|
||||
<Form.Control type={"text"} id={"grpCdNm"} placeholder={"코드그룹명"} size={"sm"}/>
|
||||
<Col xs={4}>
|
||||
<Form.Control type={"text"} placeholder={"코드그룹명"} size={"sm"}/>
|
||||
</Col>
|
||||
<Col xs={{span:2, offset:2}}><Button type={"button"} variant={"primary"} size={"sm"} onClick={addCodeGrp}>등록</Button></Col>
|
||||
<Col xs={{span:2, offset:2}}><Button type={"button"} variant={"primary"} size={"sm"}>등록</Button></Col>
|
||||
</Row>
|
||||
</Container>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.dbnt.kcscbackend.admin.config;
|
|||
|
||||
import com.dbnt.kcscbackend.admin.config.entity.TcCodeGrp;
|
||||
import com.dbnt.kcscbackend.admin.config.service.AdminConfigService;
|
||||
import com.dbnt.kcscbackend.auth.entity.LoginVO;
|
||||
import com.dbnt.kcscbackend.config.common.BaseController;
|
||||
import com.dbnt.kcscbackend.config.common.ResultVO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
|
@ -11,8 +10,6 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
|||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
|
@ -37,7 +34,7 @@ public class AdminConfigController extends BaseController {
|
|||
@ApiResponse(responseCode = "200", description = "조회 성공"),
|
||||
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
|
||||
})
|
||||
@RequestMapping(method = RequestMethod.GET, value = "/code-grp")
|
||||
@RequestMapping(method = RequestMethod.GET, value = "/code-grp", consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResultVO getCodeGrp() throws Exception{
|
||||
ResultVO resultVO = new ResultVO();
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
|
|
@ -55,41 +52,12 @@ public class AdminConfigController extends BaseController {
|
|||
@ApiResponse(responseCode = "200", description = "조회 성공"),
|
||||
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
|
||||
})
|
||||
@RequestMapping(method = RequestMethod.GET, value = "/code-item")
|
||||
public ResultVO getCodeItem(String grpCd) throws Exception{
|
||||
@RequestMapping(method = RequestMethod.GET, value = "/code-item", consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResultVO getCodeItem(TcCodeGrp param) throws Exception{
|
||||
ResultVO resultVO = new ResultVO();
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
resultMap.put("codeItemList", adminConfigService.selectCodeItemList(grpCd));
|
||||
resultMap.put("codeItemList", adminConfigService.selectCodeItemList(param.getGrpCd()));
|
||||
resultVO.setResult(resultMap);
|
||||
return resultVO;
|
||||
}
|
||||
|
||||
@Operation(
|
||||
summary = "기본코드 그룹 저장",
|
||||
description = "기본코드 그룹 저장",
|
||||
tags = {"AdminConfigController"}
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(responseCode = "200", description = "저장 성공"),
|
||||
@ApiResponse(responseCode = "303", description = "만료된 토큰"),
|
||||
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
|
||||
})
|
||||
@RequestMapping(method = RequestMethod.POST, value = "/code-grp", consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResultVO addCodeGrp(@RequestBody TcCodeGrp codeGrp, @AuthenticationPrincipal LoginVO user) throws Exception{
|
||||
ResultVO resultVO = new ResultVO();
|
||||
if(user == null){
|
||||
resultVO.setResultCode(303);
|
||||
}else{
|
||||
if(!user.getUserSe().equals("ADM")){
|
||||
resultVO.setResultCode(403);
|
||||
}else{
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
adminConfigService.addCodeGrp(codeGrp);
|
||||
//resultMap.put("codeGrpList", );
|
||||
resultVO.setResult(resultMap);
|
||||
resultVO.setResultCode(200);
|
||||
}
|
||||
}
|
||||
return resultVO;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import com.dbnt.kcscbackend.admin.config.repository.TcCodeItemRepository;
|
|||
import lombok.RequiredArgsConstructor;
|
||||
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -27,9 +26,4 @@ public class AdminConfigService extends EgovAbstractServiceImpl {
|
|||
public List<TcCodeItem> selectCodeItemList(String grpCd){
|
||||
return codeItemRepository.findByGrpCdOrderByGrpOrder(grpCd);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void addCodeGrp(TcCodeGrp codeGrp) {
|
||||
codeGrpRepository.save(codeGrp);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue