huiwon.seo %!s(int64=4) %!d(string=hai) anos
pai
achega
81492a564f

+ 42 - 15
src/main/java/com/lemon/lifecenter/controller/CenterController.java

@@ -4,6 +4,9 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -63,15 +66,17 @@ public class CenterController extends LifeCenterController {
         StaffDTO mDto = new StaffDTO();
         
         centerService.insertCenter(dto);
+        
         mDto.setCenterCode(dto.getCenterCode());
         mDto.setId(staffId);
         mDto.setPassword(LifeCenterFunction.aesEncrypt(config.aesKey, config.IV, staffPw));
         mDto.setName(staffName);
         mDto.setPhoneNumber(staffPhoneNumber);
-        mDto.setGroupIdx( 2 ); // 1: 시스템관리자 2:관리자 3:일반사용자,  센터신규등록시 아이디생성은 관리자 권한으로 생성
+        mDto.setGroupIdx( 2 ); // 1: 시스템관리자 2:관리자 3:일반사용자, 센터신규등록시 아이디생성은 관리자 권한으로 생성, 센터하나에 관리자 1명으로 개발진행
+        
         memberService.inserMember(mDto);
         
-        return "redirect:./info?centerCode=" + dto.getCenterCode();
+        return "redirect:/center/info?centerCode=" + dto.getCenterCode();
     }
     
     @RequestMapping("/info")
@@ -86,44 +91,60 @@ public class CenterController extends LifeCenterController {
         return mv;
     }
 
-    @RequestMapping("/editProc")
-    @Transactional(propagation=Propagation.REQUIRED)
-    public String centerEditProc(
+    @RequestMapping("/edit/update")
+    @Transactional(propagation=Propagation.REQUIRED, rollbackFor = { RuntimeException.class, Error.class })
+    public String centerEditUpdate(
             @ModelAttribute("dto") final CenterInfoDTO dto,
             @RequestParam(value="detailAddr", required=true) String detailAddr,
             @RequestParam(value="staffId", required=true) String staffId,
             @RequestParam(value="staffPw", required=true) String staffPw,
             @RequestParam(value="staffNewPw", required=false, defaultValue="") String staffNewPw,
+            @RequestParam(value="staffNewPwConfirm", required=false, defaultValue="") String staffNewPwConfirm,
             @RequestParam(value="staffName", required=true) String staffName,
-            @RequestParam(value="staffPhoneNumber", required=true) String staffPhoneNumber) throws Exception {
+            @RequestParam(value="staffPhoneNumber", required=true) String staffPhoneNumber,
+            HttpServletRequest request, HttpServletResponse response ) throws Exception {
+        
+        System.out.println( "staff Id : " + staffId );
         
         StaffDTO mDto = new StaffDTO();
+        
         mDto.setId(staffId);
         mDto.setPassword(LifeCenterFunction.aesEncrypt(config.aesKey, config.IV, staffPw));
         int mCnt = memberService.selectMemberCount(mDto);
         
-        if (mCnt > 0) {
+        if( mCnt == 1 ) {
             String address = dto.getCenterAddress() + "|" + detailAddr;
             dto.setCenterAddress(address);
             int result = centerService.updateCenterInfo(dto);
             
+            System.out.println( "result cnt : " + result  );
+            
             if (result > 0) {
                 mDto.setName(staffName);
                 mDto.setPhoneNumber(staffPhoneNumber);
                 mDto.setPassword("");
-                if (!staffNewPw.equals("")) {
-                    mDto.setPassword(LifeCenterFunction.aesEncrypt(config.aesKey, config.IV, staffNewPw));
-                }
                 
-                int mUpCnt = memberService.updateMember(mDto);
-                if (mUpCnt < 0) {
-                    
+                try {
+                    if (!staffNewPw.equals("")) {
+                        if( staffNewPw.equals( staffNewPwConfirm ) ) {
+                            mDto.setPassword(LifeCenterFunction.aesEncrypt(config.aesKey, config.IV, staffNewPw));
+                        } else {
+                            // not match password.
+                            throw new Exception();
+                        }
+                    }
+                } catch( Exception e ) {
+                    throw new RuntimeException(e);
                 }
-                return "redirect:./info?centerCode=" + dto.getCenterCode();
+                
+                memberService.updateMember(mDto);
             }
+        } else {
+            LifeCenterFunction.scriptMessage( response, "alert( '비밀번호가 일치하지않습니다.' );location.href='../edit?centerCode="+dto.getCenterCode()+"';" );
+            return "/common/blank";
         }
         
-        return "redirect:./edit?centerCode=" + dto.getCenterCode();
+        return "redirect:/center/info?centerCode=" + dto.getCenterCode();
     }
     
     @RequestMapping("/edit")
@@ -181,6 +202,10 @@ public class CenterController extends LifeCenterController {
         paging.paging(config, total, page, param);
         
         ModelAndView mv = setMV("center/list");
+        
+        startDate = startDate.equals( "" ) ? LifeCenterFunction.getNow( "yyyy-MM-dd" ) : startDate;
+        endDate   = endDate.equals( "" )   ? LifeCenterFunction.getNow( "yyyy-MM-dd" ) : endDate;
+        
         mv.addObject("locationList", list);
         mv.addObject("locationCode", locationCode);
         mv.addObject("startDate", startDate);
@@ -189,6 +214,8 @@ public class CenterController extends LifeCenterController {
         mv.addObject("total", total);
         mv.addObject("item", result);
         mv.addObject("paging", paging);
+        mv.addObject("page", page);
+        mv.addObject("pageSize", dto.getLimitMax());
         
         return mv;
     }

+ 1 - 1
src/main/resources/mybatis/mapper/center/center.xml

@@ -121,7 +121,7 @@
             ]]>
         </if>
         <![CDATA[
-             ORDER BY num DESC
+             ORDER BY CI.CREATE_DATE DESC
              LIMIT ${limit}, ${limitMax}
         ]]>
     </select>

+ 48 - 73
src/main/webapp/WEB-INF/jsp/center/edit.jsp

@@ -6,65 +6,40 @@
 <jsp:include page="${data._INCLUDE}/header.jsp"></jsp:include>
 <script src="https://t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
 <script>
-
-function juso() {
-    new daum.Postcode({
-        oncomplete: function(data) {
-            // 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.
-
-            // 각 주소의 노출 규칙에 따라 주소를 조합한다.
-            // 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
-            var addr = ''; // 주소 변수
-            var extraAddr = ''; // 참고항목 변수
-
-            //사용자가 선택한 주소 타입에 따라 해당 주소 값을 가져온다.
-            if (data.userSelectedType === 'R') { // 사용자가 도로명 주소를 선택했을 경우
-                addr = data.roadAddress;
-            } else { // 사용자가 지번 주소를 선택했을 경우(J)
-                addr = data.jibunAddress;
-            }
-
-            // 사용자가 선택한 주소가 도로명 타입일때 참고항목을 조합한다.
-            if(data.userSelectedType === 'R'){
-                // 법정동명이 있을 경우 추가한다. (법정리는 제외)
-                // 법정동의 경우 마지막 문자가 "동/로/가"로 끝난다.
-                if(data.bname !== '' && /[동|로|가]$/g.test(data.bname)){
-                    extraAddr += data.bname;
-                }
-                // 건물명이 있고, 공동주택일 경우 추가한다.
-                if(data.buildingName !== '' && data.apartment === 'Y'){
-                    extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName);
-                }
-                // 표시할 참고항목이 있을 경우, 괄호까지 추가한 최종 문자열을 만든다.
-                if(extraAddr !== ''){
-                    extraAddr = ' (' + extraAddr + ')';
-                }
-                // 조합된 참고항목을 해당 필드에 넣는다.
-                //document.getElementById("detailAddr").value = extraAddr;
-            
-            } else {
-                //document.getElementById("detailAddr").value = '';
-            }
-
-            // 우편번호와 주소 정보를 해당 필드에 넣는다.
-            /* document.getElementById('sample6_postcode').value = data.zonecode; */
-            
-            document.getElementById("mainAddr").value = addr + " " + extraAddr;
-            // 커서를 상세주소 필드로 이동한다.
-            document.getElementById("detailAddr").focus();
-            
-        }
-    }).open();
-}
-
-function onlyNumber(){
-    if((event.keyCode<48)||(event.keyCode>57)) {
-        event.returnValue=false;
-    }
-}
-
 $( function(){
     $( "#newForm" ).validate({
+        rules: {
+            centerNumber : {
+                phoneValid : true
+            },
+            staffPhoneNumber : {
+                phoneValid : true
+            },
+            staffNewPwConfirm : {
+//                 equalTo: "#staffNewPw"
+            },
+            totalCapacity :{
+                number:true
+            },
+            totalStaff :{
+                number:true
+            },
+            staffNewPw :{
+                passwordValid : true
+            }
+        },
+        messages : {
+            staffNewPwConfirm : {
+                equalTo: "신규 비밀번호가 일치하지 않습니다."
+            }
+        },
+        onkeyup: function( element, event ) {
+            $( element ).valid();
+        },
+        onfocusout: function (element) {
+            $( element ).val( $.trim( $( element ).val() ) );
+            $( element ).valid();
+        },
         submitHandler: function(form) {
             $("#mainAddr").removeAttr("disabled");
             form.submit();
@@ -72,7 +47,6 @@ $( function(){
     });
 })
 </script>
-
 </head>
 <body>
     <div class="wrapper">
@@ -103,7 +77,7 @@ $( function(){
                     <div class="row">
                         <div class="col-12">
                             <div class="card">
-                                <form action="./editProc" method="post" id="newForm">
+                                <form action="./edit/update" method="post" id="newForm">
                                     <div class="card-body">
                                         <table class="table mobile-table">
                                             <colgroup>
@@ -157,38 +131,39 @@ $( function(){
                                                 </td>
                                             </tr>
                                             <tr>
-                                                <th>아이디</th>
+                                                <th>담당자 아이디</th>
                                                 <td>
                                                     <c:out value="${centerInfo.staffId}" />
                                                     <input type="hidden" name="staffId" value="${centerInfo.staffId}">
                                                 </td>
+                                                <th><span class="fix">*</span>담당자 이름</th>
+                                                <td>
+                                                    <input type="text" class="form-control" name="staffName" value="${centerInfo.staffName}" required>
+                                                </td>
                                             </tr>
                                             <tr>
-                                               <th><span class="fix">*</span>현재 비밀번호</th>
+                                                
+                                                <th><span class="fix">*</span>담당자 전화번호</th>
                                                 <td colspan="3">
-                                                    <input type="password" class="form-control" name="staffPw" required>
+                                                    <input type="text" class="form-control" name="staffPhoneNumber" value="${centerInfo.staffPhoneNumber}" placeholder="010-1234-1234" required onkeypress="onlyNumber();">
                                                 </td>
                                             </tr>
                                             <tr>
-                                               <th>신규 비밀번호</th>
+                                               <th><span class="fix">*</span>현재 비밀번호</th>
                                                 <td colspan="3">
-                                                    <input type="password" class="form-control" name="staffNewPw" placeholder="비밀번호 변경시에만 입력해주세요. (숫자, 영문, 특수문자 조합 8자리 이상)">
+                                                    <input type="password" class="form-control" name="staffPw" placeholder="정보수정을 위해 비밀번호를 입력해주세요." required>
                                                 </td>
                                             </tr>
                                             <tr>
-                                               <th>비밀번호 확인</th>
+                                               <th>신규 비밀번호</th>
                                                 <td colspan="3">
-                                                    <input type="password" class="form-control" name="staffNewPwCofirm" placeholder="신규 비밀번호 확인">
+                                                    <input type="password" class="form-control" id="staffNewPw" name="staffNewPw" placeholder="비밀번호 변경시에만 입력해주세요.(영문, 숫자, 특수문자를 혼합하여 8 ~ 15자 이내)">
                                                 </td>
                                             </tr>
                                             <tr>
-                                                <th><span class="fix">*</span>담당자</th>
-                                                <td>
-                                                    <input type="text" class="form-control" name="staffName" value="${centerInfo.staffName}" required>
-                                                </td>
-                                                <th><span class="fix">*</span>담당자 휴대전화번호</th>
-                                                <td>
-                                                    <input type="text" class="form-control" name="staffPhoneNumber" value="${centerInfo.staffPhoneNumber}" placeholder="010-1234-1234" required onkeypress="onlyNumber();">
+                                               <th>신규 비밀번호 확인</th>
+                                                <td colspan="3">
+                                                    <input type="password" class="form-control" id="staffNewPwConfirm" name="staffNewPwConfirm" placeholder="신규 비밀번호 확인을 위해 비밀번호를 한번 더 입력하세요.">
                                                 </td>
                                             </tr>
                                         </table>

+ 17 - 86
src/main/webapp/WEB-INF/jsp/center/list.jsp

@@ -6,96 +6,24 @@
 <jsp:include page="${data._INCLUDE}/header.jsp"></jsp:include>
 <script>
     $(function() {
-        // Select2
-        $(".select2").each(function() {
-            $(this)
-                .wrap("<div class=\"position-relative\"></div>")
-                .select2({
-                    placeholder: "Select value",
-                    dropdownParent: $(this).parent()
-                });
-        })
-        // Daterangepicker
-        $("input[name=\"daterange\"]").daterangepicker({
-            opens: "left"
-        });
-        $("input[name=\"datetimes\"]").daterangepicker({
-            timePicker: true,
-            opens: "left",
-            startDate: moment().startOf("hour"),
-            endDate: moment().startOf("hour").add(32, "hour"),
-            locale: {
-                format: "M/DD hh:mm A"
-            }
-        });
         $("input[name=\"startDate\"]").daterangepicker({
-            singleDatePicker: true,
-            showDropdowns: true,
+            singleDatePicker : true,
+            showDropdowns : true,
+            startDate : "<c:out value='${startDate}'/>",
             locale : {
                 //format : "M/DD hh:mm A"
                 format : "YYYY-MM-DD"
             }
         });
         $("input[name=\"endDate\"]").daterangepicker({
-            singleDatePicker: true,
-            showDropdowns: true,
+            singleDatePicker : true,
+            showDropdowns : true,
+            startDate : "<c:out value='${endDate}'/>",
             locale : {
                 //format : "M/DD hh:mm A"
                 format : "YYYY-MM-DD"
             }
         });
-        // Datetimepicker
-        $('#datetimepicker-minimum').datetimepicker();
-        $('#datetimepicker-view-mode').datetimepicker({
-            viewMode: 'years'
-        });
-        $('#datetimepicker-time').datetimepicker({
-            format: 'LT'
-        });
-        $('#datetimepicker-date').datetimepicker({
-            format: 'L'
-        });
-        var start = moment().subtract(29, "days");
-        var end = moment();
-
-        function cb(start, end) {
-            $("#reportrange span").html(start.format("MMMM D, YYYY") + " - " + end.format("MMMM D, YYYY"));
-        }
-        $("#reportrange").daterangepicker({
-            startDate: start,
-            endDate: end,
-            ranges: {
-                "Today": [moment(), moment()],
-                "Yesterday": [moment().subtract(1, "days"), moment().subtract(1, "days")],
-                "Last 7 Days": [moment().subtract(6, "days"), moment()],
-                "Last 30 Days": [moment().subtract(29, "days"), moment()],
-                "This Month": [moment().startOf("month"), moment().endOf("month")],
-                "Last Month": [moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month")]
-            }
-        }, cb);
-        cb(start, end);
-    });
-</script>
-<script>
-    $(function() {
-        // Datatables basic
-        $("#datatables-basic").DataTable({
-            responsive: true
-        });
-        // Datatables with Buttons
-        var datatablesButtons = $("#datatables-buttons").DataTable({
-            responsive: true,
-            lengthChange: !1,
-            buttons: ["copy", "print"]
-        });
-        datatablesButtons.buttons().container().appendTo("#datatables-buttons_wrapper .col-md-6:eq(0)");
-        // Datatables with Multiselect
-        var datatablesMulti = $("#datatables-multi").DataTable({
-            responsive: true,
-            select: {
-                style: "multi"
-            }
-        });
     });
 </script>
 </head>
@@ -201,13 +129,13 @@
                                         <table class="table table-striped text-center">
                                             <colgroup>
                                                 <col style=" width: 11.1%; ">
+                                                <col style=" width: 20%; ">
                                                 <col style=" width: 11.1%; ">
                                                 <col style=" width: 11.1%; ">
                                                 <col style=" width: 11.1%; ">
-                                                <col style=" width: 11.1%; ">
-                                                <col style=" width: 11.1%; ">
-                                                <col style=" width: 11.1%; ">
-                                                <col style=" width: 11.1%; ">
+                                                <col style=" width: 7%; ">
+                                                <col style=" width: 7%; ">
+                                                <col style=" width: 7%; ">
                                                 <col style=" width: 11.1%; ">
                                             </colgroup>
                                             <thead>
@@ -215,7 +143,7 @@
                                                     <th>번호</th>
                                                     <th>치료센터명</th>
                                                     <th>지역</th>
-                                                    <th>담당자</th>
+                                                    <th>담당자(ID)</th>
                                                     <th>전화번호</th>
                                                     <th>입소자 수(명)</th>
                                                     <th>소용인원(명)</th>
@@ -226,11 +154,14 @@
                                             <tbody>
                                                 <c:choose>
                                                     <c:when test="${total > 0}">
-                                                        <c:forEach var="l" items="${item}">
+                                                        <c:forEach var="l" items="${item}" varStatus="lStatus">
+                                                            <c:set var="viewLink" value="./info?centerCode=${l.centerCode}" />
+                                                            <c:set var="pageNum" value="${ ( total - lStatus.index ) - ( (page - 1) * pageSize ) }" />
+                                                            
                                                             <tr>
-                                                                <td><c:out value="${l.num}" /></td>
+                                                                <td><fmt:formatNumber value="${pageNum}" pattern="#,###" /></td>
                                                                 <td>
-                                                                    <a href="./info?centerCode=${l.centerCode}"><c:out value="${l.centerName}" /></a>
+                                                                    <a href="${viewLink}"><c:out value="${l.centerName}" /></a>
                                                                 </td>
                                                                 <td><c:out value="${l.locationName}" /></td>
                                                                 <td><c:out value="${l.staffName}(${l.staffId})" /></td>

+ 0 - 1
src/main/webapp/WEB-INF/jsp/center/new.jsp

@@ -73,7 +73,6 @@ $( function(){
         }
     });
 })
-
 </script>
 </head>
 <body>

+ 2 - 0
src/main/webapp/WEB-INF/jsp/common/blank.jsp

@@ -0,0 +1,2 @@
+<%@ page session="false" %>
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

+ 0 - 23
src/main/webapp/WEB-INF/jsp/patient/list.jsp

@@ -26,29 +26,6 @@
         });
     });
 </script>
-<script>
-    $(function() {
-        // Datatables basic
-        $("#datatables-basic").DataTable({
-            responsive : true
-        });
-        // Datatables with Buttons
-        var datatablesButtons = $("#datatables-buttons").DataTable({
-            responsive : true,
-            lengthChange : !1,
-            buttons : [ "copy", "print" ]
-        });
-        datatablesButtons.buttons().container().appendTo(
-                "#datatables-buttons_wrapper .col-md-6:eq(0)");
-        // Datatables with Multiselect
-        var datatablesMulti = $("#datatables-multi").DataTable({
-            responsive : true,
-            select : {
-                style : "multi"
-            }
-        });
-    });
-</script>
 </head>
 <body>
     <div class="wrapper">