728x90

adminPage : 회사에서 전체적으로 통계적 수치와 관리를 하기위해 만들어진 페이지

테스트 계정 검색을 위한 회원검색 메뉴에서 현재 라디오버튼 카테고리를 따로 설정하지 않고 검색 해도 검색이 된다.

이 부분은 따로 수정하지 않고 검색 후에 결과값에 따라서만 라디오 버튼을 체크해주라는 업무가 내려졌다.

 

-수정전

현재 돌아가는 방식이 스크립트에서 입력값 데이터를 비동기(axios)로 보내 java에서 데이터를 가져온다

가져오고 난 후에 데이터값을 활용해서 검증을 거쳐 체크 하는 방식을 하기로 방향성을 정했다.

 

-기존 코드

/* 프로필 검색 이벤트 세팅 */
    searchProfileEvent(){
        $(".tab-button__div").removeClass("bg-info font-weight-bold text-white");

        const headers = {headers: {'Content-Type': 'application/json;charset=UTF-8'}};
        const url = "/jsp/totalSearch/rest/members";
        const formDataObject = this.getFormData()


        axios.post(url,JSON.stringify(formDataObject),headers)
            .then((res)=>{

                $("#memberInfo").empty();
                $(this.replaceSelector).empty();
                this.memberDataObservable.resetData()
                this.searchDataObservable.resetData()
                this.tabDataObservable.resetData()

                if (res.data.cnt === 0) {
                    return Promise.reject(new Error("조회실패"));
                } else {
                    this.searchDataObservable.memSlct = formDataObject.memSlct
                    this.searchDataObservable.searchData = formDataObject.searchData
                    this.searchDataObservable.searchSlct = formDataObject.searchSlct
                    this.searchDataObservable.searchResult = res.data

                    this.searchDataObservable.updateData(this.searchDataObservable)

                    this.memberDataObservable.previousMemberData = this.memberDataObservable.memberData
                    this.memberDataObservable.memberData = res.data.list[res.data.list.length - 1]
                    this.memberDataObservable.selectPlatformElement = document.querySelector("[name=selectedMem]:checked").closest(".resultLineRow").querySelector(`[data-platform=${this.platform}]`)

                    this.memberDataObservable.updateData(this.memberDataObservable)

                }
            })
            .catch(()=>{
                alert("검색결과가 존재하지 않습니다.");
            })
    }

-수정 후 코드

/* 프로필 검색 이벤트 세팅 */
    searchProfileEvent(){
        $(".tab-button__div").removeClass("bg-info font-weight-bold text-white");

        const headers = {headers: {'Content-Type': 'application/json;charset=UTF-8'}};
        const url = "/jsp/totalSearch/rest/members";
        const formDataObject = this.getFormData()
        /*검색 카테 고리 유효성 체크*/
        
        //회원번호 조회 (숫자로시작하여 숫자 5~7자리)
        const memNo = /^[0-9]{5,7}/;
        //회원아이디(email) 조회(숫자,대문자,소문자로 시작해서 특수문자가 들어가거나, "@"와 "."을 중간에 넣어준다)
        const memId = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
        //회원 닉네임 조회(한글이나 숫자로 시작하는 2~8자리)
        const memNick = /^[가-힣,0-9]{2,8}$/;
        //회원 전화번호 조회(숫자로 시작해서 최소 11자리로 시작하는 숫자)
        const phoneNum = /^[0-9]{11,}$/;
		//비동기방식으로 데이터 전달
        axios.post(url,JSON.stringify(formDataObject),headers)
            .then((res)=>{
                $("#memberInfo").empty();
                $(this.replaceSelector).empty();
                this.memberDataObservable.resetData()
                this.searchDataObservable.resetData()
                this.tabDataObservable.resetData()
                if (res.data.cnt === 0) {
                    return Promise.reject(new Error("조회실패"));
                } else {
                    this.searchDataObservable.memSlct = formDataObject.memSlct
                    this.searchDataObservable.searchData = formDataObject.searchData
                    this.searchDataObservable.searchSlct = formDataObject.searchSlct
                    this.searchDataObservable.searchResult = res.data

                    this.searchDataObservable.updateData(this.searchDataObservable)

                    this.memberDataObservable.previousMemberData = this.memberDataObservable.memberData
                    this.memberDataObservable.memberData = res.data.list[res.data.list.length - 1]
                    this.memberDataObservable.selectPlatformElement = document.querySelector("[name=selectedMem]:checked").closest(".resultLineRow").querySelector(`[data-platform=${this.platform}]`)

                    this.memberDataObservable.updateData(this.memberDataObservable)

                }
                /*검색 조회 성공시 라디오 버튼 체크*/
                if(Number(formDataObject.searchData)){ //입력한 값이 숫자일 경우
                    if(phoneNum.test(formDataObject.searchData)){
                        $('#searchRadio4').prop('checked', true); //해당id의 버튼을 체크
                    } else if(memNo.test(formDataObject.searchData)){
                        $('#searchRadio1').prop('checked', true);
                    }
                }else{
                    if(memId.test(formDataObject.searchData)){
                        $('#searchRadio2').prop('checked', true);
                    }else if(memNick.test(formDataObject.searchData)){
                        $('#searchRadio3').prop('checked', true);
                    }
                }
                this.chkTestId(res)
            })
            .catch(()=>{
                alert("검색결과가 존재하지 않습니다.");
            })
    }

-정상작동 된 결과 화면

 

728x90

'Study > 인턴쉽' 카테고리의 다른 글

실서버 에러 로그 처리  (0) 2023.02.09
여보야 스플래시 화면 이미지 및 문구 변경  (0) 2023.01.20
정기 이벤트 진행작업  (0) 2023.01.20
알림설정(무음/진동/소리)  (0) 2023.01.18
[admin] error로그 분석  (0) 2023.01.18
복사했습니다!