Merge branch 'master' of http://118.219.150.34:50501/DBNT/kcscDev into thkim

thkim
thkim 2024-01-25 14:04:51 +09:00
commit 081f34f883
7 changed files with 21 additions and 81 deletions

View File

@ -11,13 +11,13 @@ function CheckBox({name, grpCd, selectedValue}){
}, []); }, []);
useEffect(() => { useEffect(() => {
if(selectedValue){ if(checkBox&&selectedValue){
const itemCdAry = selectedValue.split(','); const itemCdAry = selectedValue.split(',');
itemCdAry.forEach(function(itemCd){ itemCdAry.forEach(function(itemCd){
document.querySelector(`#chkBox_${itemCd}`).checked = true; document.querySelector(`#chkBox_${itemCd}`).checked = true;
}) })
} }
}, [selectedValue]); }, [checkBox]);
function getCodeItemList() { function getCodeItemList() {
EgovNet.requestFetch( EgovNet.requestFetch(

View File

@ -10,6 +10,7 @@ function SelectOption({name, grpCd, selectedValue}){
useEffect(() => { useEffect(() => {
getCodeItemList() getCodeItemList()
}, []); }, []);
useEffect(() => { useEffect(() => {
setValue(selectedValue) setValue(selectedValue)
}, [selectedValue]); }, [selectedValue]);

View File

@ -20,7 +20,6 @@ function List({}) {
}); });
const [listTag, setListTag] = useState([]); const [listTag, setListTag] = useState([]);
const [userSeOption, setUserSeOption] = useState([]);
const [paginationInfo, setPaginationInfo] = useState({}); const [paginationInfo, setPaginationInfo] = useState({});
@ -40,32 +39,24 @@ function List({}) {
(resp) => { (resp) => {
setPaginationInfo(resp.result.paginationInfo); setPaginationInfo(resp.result.paginationInfo);
let mutListTag = []; let mutListTag = [];
let userSeTag = [];
setListTag([]); setListTag([]);
setUserSeOption([]);
// //
resp.result.userList.forEach(function (item, index) { resp.result.userList.forEach(function (item, index) {
mutListTag.push( mutListTag.push(
<div className={"list_item"} key={"userListDiv_"+index}> <div className={"list_item"} key={"userListDiv_"+index}>
<div>{item.userSe}</div> <div><a href={"#"} onClick={()=>{userInfoModal(item)}}>{item.userId}</a></div>
<div><a href={"#"} onClick={()=>{userInfoModal(item.userSeq)}}>{item.userId}</a></div>
<div>{item.userNm}</div> <div>{item.userNm}</div>
<div>{item.email}</div> <div>{item.email}</div>
<div>{item.phoneNum}</div> <div>{item.phoneNum}</div>
<div>{item.status}</div> <div>{item.statusValue}</div>
<div><button className={"btn btn_red_h31 px-1"} onClick={()=>{removeUserInfo(item.userSeq)}}>삭제</button></div> <div><button className={"btn btn_red_h31 px-1"} onClick={()=>{removeUserInfo(item.userSeq)}}>삭제</button></div>
</div> </div>
); );
}); });
if(!mutListTag.length) mutListTag.push(<p className="no_data" key="0">검색된 결과가 없습니다.</p>); // if(!mutListTag.length) mutListTag.push(<p className="no_data" key="0">검색된 결과가 없습니다.</p>); //
resp.result.userSeOption.forEach(function (item, index){
userSeTag.push(<option value={item.itemCd}>{item.itemNm}</option>)
})
setListTag(mutListTag); setListTag(mutListTag);
setUserSeOption(userSeTag);
}, },
function (resp) { function (resp) {
console.log("err response : ", resp); console.log("err response : ", resp);
@ -85,9 +76,9 @@ function List({}) {
setSearchCondition({...searchCondition, pageIndex: passedPage}) setSearchCondition({...searchCondition, pageIndex: passedPage})
}); });
function userInfoModal(userSeq){ function userInfoModal(userInfo){
handleShow() handleShow()
setModalBody(<UserInfoModal userSeq={userSeq} reloadFunction={retrieveList}></UserInfoModal>) setModalBody(<UserInfoModal savedInfo={userInfo} reloadFunction={retrieveList}></UserInfoModal>)
} }
const removeUserInfo = useCallback((seq)=>{ const removeUserInfo = useCallback((seq)=>{
@ -137,16 +128,6 @@ function List({}) {
{/* <!-- 검색조건 --> */} {/* <!-- 검색조건 --> */}
<div className="condition"> <div className="condition">
<ul> <ul>
<li className="third_1 L">
<label className="f_select" htmlFor="sel1">
<select id="sel1" title="구분" defaultValue={searchCondition.userSe}
onChange={(e) => {setSearchCondition({...searchCondition, userSe: e.target.value})}}>
<option value="">전체</option>
{userSeOption}
</select>
</label>
</li>
<li className="third_1 L"> <li className="third_1 L">
<label className="f_select" htmlFor="sel1"> <label className="f_select" htmlFor="sel1">
<select id="sel1" title="조건" defaultValue={searchCondition.searchCondition} <select id="sel1" title="조건" defaultValue={searchCondition.searchCondition}
@ -170,7 +151,6 @@ function List({}) {
<div className="board_list userList"> <div className="board_list userList">
<div className="head"> <div className="head">
<span>구분</span>
<span>아이디</span> <span>아이디</span>
<span>이름</span> <span>이름</span>
<span>이메일</span> <span>이메일</span>

View File

@ -9,37 +9,7 @@ import SelectOption from "components/commonCode/SelectOption";
import CheckBox from "components/commonCode/CheckBox"; import CheckBox from "components/commonCode/CheckBox";
import CODE from "../../../constants/code"; import CODE from "../../../constants/code";
function UserInfoModal({userSeq, reloadFunction}){ function UserInfoModal({savedInfo, reloadFunction}){
const [userInfo, setUserInfo] = useState({ userSeq: '', userId: '', password: '', passwordChk: '', userNm: '', email: '', phoneNum: '', userSe:'', userRole:'', status:''});
function getModalContent(){
EgovNet.requestFetch(
'/admin/users/info?userSeq='+userSeq,
{
method: "GET"
},
(resp) => {
const respInfo = resp.result.userInfo;
const info = {
userSeq: respInfo.userSeq,
userId: respInfo.userId,
userNm: respInfo.userNm,
email: respInfo.email,
phoneNum: respInfo.phoneNum,
password: "",
passwordChk: "",
userSe: respInfo.userSe,
userRole: respInfo.userRole,
status: respInfo.status
}
setUserInfo(info);
},
(resp) => {
console.log("err response : ", resp);
}
);
}
function userInfoChange(e){ function userInfoChange(e){
e.preventDefault(); e.preventDefault();
@ -53,7 +23,6 @@ function UserInfoModal({userSeq, reloadFunction}){
userNm: form.userNm.value, userNm: form.userNm.value,
email: form.email.value, email: form.email.value,
phoneNum: form.phoneNum.value, phoneNum: form.phoneNum.value,
userSe: form.userSe.value,
userRole: '', userRole: '',
status: form.status.value, status: form.status.value,
} }
@ -88,26 +57,22 @@ function UserInfoModal({userSeq, reloadFunction}){
) )
} }
useEffect(() => {
getModalContent();
}, []);
return ( return (
<> <>
<Modal.Header closeButton> <Modal.Header closeButton>
<Modal.Title> <Modal.Title>
{userInfo.userNm} 상세정보 {savedInfo?.userNm} 상세정보
</Modal.Title> </Modal.Title>
</Modal.Header> </Modal.Header>
<Modal.Body> <Modal.Body>
<Form onSubmit={(e) =>{userInfoChange(e)}} noValidate> <Form onSubmit={(e) =>{userInfoChange(e)}} noValidate>
<input type={"hidden"} name={"userSeq"} defaultValue={userInfo.userSeq} /> <input type={"hidden"} name={"userSeq"} defaultValue={savedInfo?.userSeq} />
<Form.Group as={Row} className="mb-3"> <Form.Group as={Row} className="mb-3">
<Form.Label column sm={3}> <Form.Label column sm={3}>
아이디 아이디
</Form.Label> </Form.Label>
<Col sm={9}> <Col sm={9}>
<Form.Control type="text" name="userId" placeholder="아이디" required defaultValue={userInfo?.userId} readOnly/> <Form.Control type="text" name="userId" placeholder="아이디" required defaultValue={savedInfo?.userId} readOnly/>
</Col> </Col>
</Form.Group> </Form.Group>
<Form.Group as={Row} className="mb-3"> <Form.Group as={Row} className="mb-3">
@ -131,7 +96,7 @@ function UserInfoModal({userSeq, reloadFunction}){
이름 이름
</Form.Label> </Form.Label>
<Col sm={9}> <Col sm={9}>
<Form.Control type="text" name="userNm" placeholder="이름" required defaultValue={userInfo?.userNm} /> <Form.Control type="text" name="userNm" placeholder="이름" required defaultValue={savedInfo?.userNm} />
</Col> </Col>
</Form.Group> </Form.Group>
<Form.Group as={Row} className="mb-3"> <Form.Group as={Row} className="mb-3">
@ -139,7 +104,7 @@ function UserInfoModal({userSeq, reloadFunction}){
이메일 이메일
</Form.Label> </Form.Label>
<Col sm={9}> <Col sm={9}>
<Form.Control type="email" name="email" placeholder="email" required defaultValue={userInfo?.email} /> <Form.Control type="email" name="email" placeholder="email" required defaultValue={savedInfo?.email} />
</Col> </Col>
</Form.Group> </Form.Group>
<Form.Group as={Row} className="mb-3"> <Form.Group as={Row} className="mb-3">
@ -147,15 +112,7 @@ function UserInfoModal({userSeq, reloadFunction}){
연락처 연락처
</Form.Label> </Form.Label>
<Col sm={9}> <Col sm={9}>
<Form.Control type="text" name="phoneNum" placeholder="연락처" required defaultValue={userInfo?.phoneNum} /> <Form.Control type="text" name="phoneNum" placeholder="연락처" required defaultValue={savedInfo?.phoneNum} />
</Col>
</Form.Group>
<Form.Group as={Row} className="mb-3">
<Form.Label column sm={3}>
사용자 유형
</Form.Label>
<Col sm={9}>
<SelectOption name={"userSe"} grpCd={"ACC_TYPE"} selectedValue={userInfo?.userSe} />
</Col> </Col>
</Form.Group> </Form.Group>
<Form.Group as={Row} className="mb-3"> <Form.Group as={Row} className="mb-3">
@ -163,7 +120,7 @@ function UserInfoModal({userSeq, reloadFunction}){
사용자 권한 사용자 권한
</Form.Label> </Form.Label>
<Col sm={9}> <Col sm={9}>
<CheckBox name={"userRole"} grpCd={"ROLE"} selectedValue={userInfo?.userRole} /> <CheckBox name={"userRole"} grpCd={"ROLE"} selectedValue={savedInfo?.userRole} />
</Col> </Col>
</Form.Group> </Form.Group>
<Form.Group as={Row} className="mb-3"> <Form.Group as={Row} className="mb-3">
@ -171,7 +128,7 @@ function UserInfoModal({userSeq, reloadFunction}){
상태 상태
</Form.Label> </Form.Label>
<Col sm={9}> <Col sm={9}>
<SelectOption name={"status"} grpCd={"ACC_STUS"} selectedValue={userInfo?.status} /> <SelectOption name={"status"} grpCd={"ACC_STUS"} selectedValue={savedInfo?.status} />
</Col> </Col>
</Form.Group> </Form.Group>
<Row className="mb-3"> <Row className="mb-3">

View File

@ -50,7 +50,6 @@ public class AdminUsersService extends EgovAbstractServiceImpl {
} }
savedInfo.setEmail(info.getEmail()); savedInfo.setEmail(info.getEmail());
savedInfo.setPhoneNum(info.getPhoneNum()); savedInfo.setPhoneNum(info.getPhoneNum());
savedInfo.setUserSe(info.getUserSe());
savedInfo.setUserRole(info.getUserRole()); savedInfo.setUserRole(info.getUserRole());
savedInfo.setStatus(info.getStatus()); savedInfo.setStatus(info.getStatus());
savedInfo.setLastChgId(updateUser); savedInfo.setLastChgId(updateUser);

View File

@ -70,6 +70,8 @@ public class UserInfo extends BoardParams implements UserDetails{
@Transient @Transient
private String passwordChk; private String passwordChk;
@Transient
private String statusValue;
@Override @Override
@JsonIgnore @JsonIgnore

View File

@ -11,7 +11,8 @@
a.user_nm, a.user_nm,
a.phone_num, a.phone_num,
a.user_role, a.user_role,
c.item_nm as status a.status,
c.item_nm as status_value
from user_info a from user_info a
inner join tc_code_item b on a.user_se = b.item_cd inner join tc_code_item b on a.user_se = b.item_cd
inner join tc_code_item c on a.status = c.item_cd inner join tc_code_item c on a.status = c.item_cd