list.jsp 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595
  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  2. <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
  3. <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
  4. <%@ page language="java" contentType="text/html; charset=UTF-8"
  5. pageEncoding="UTF-8"%>
  6. <jsp:include page="${data._INCLUDE}/header.jsp"></jsp:include>
  7. <script src="/resources/js/common/jquery.tablesorter.min.js"></script>
  8. <script>
  9. $( function(){
  10. $( "select[name='y'], select[name='m']" ).change( function(){
  11. var ym = $( "select[name='y']" ).val() + "-" + $( "select[name='m']" ).val();
  12. var sDate = moment( ym+"-01" ).startOf('month').format('YYYY-MM-DD');
  13. var eDate = moment( ym+"-01" ).endOf('month').format('YYYY-MM-DD');
  14. $( "input[name='startDate']" ).val( sDate );
  15. $( "input[name='endDate']" ).val( eDate );
  16. });
  17. $( "input.date-no-req" ).daterangepicker({
  18. singleDatePicker : true,
  19. showDropdowns : true,
  20. locale : {
  21. format : "YYYY-MM-DD"
  22. },
  23. autoUpdateInput: false,
  24. minDate: moment( $( "select[name='y']" ).val() + "-" + $( "select[name='m']" ).val() + "-01" ).startOf('month').format('YYYY-MM-DD'),
  25. maxDate: moment( $( "select[name='y']" ).val() + "-" + $( "select[name='m']" ).val() + "-01" ).endOf('month').format('YYYY-MM-DD')
  26. }).on('apply.daterangepicker', function(ev, picker) {
  27. $(this).val(picker.startDate.format('YYYY-MM-DD'));
  28. $(this).trigger( "change" );
  29. });
  30. $( "#searchForm" ).validate({
  31. rules: {
  32. startDate : {
  33. date : true
  34. },
  35. endDate : {
  36. date : true
  37. }
  38. },
  39. onkeyup: function( element, event ) {
  40. $( element ).valid();
  41. },
  42. onfocusout: function (element) {
  43. $( element ).val( $.trim( $( element ).val() ) );
  44. $( element ).valid();
  45. },
  46. submitHandler: function(form) {
  47. form.submit();
  48. }
  49. });
  50. $( document ).on( "click", "span.push-result", function(){
  51. var $this = $( this );
  52. var key = $this.attr( "data-access" );
  53. var title = $( "#sendResultList" ).find( ".modal-title" );
  54. var logIdx = $this.closest( "tr" ).find( "input.log-idx" ).val();
  55. var pushIdx = $this.closest( "tr" ).find( "input.push-idx" ).val();
  56. var yearMonth = $( "#ym" ).val();
  57. var resultAddClass = "";
  58. var resultMessage = "";
  59. console.log( key );
  60. if( key == "success" ) {
  61. title.text( "발송 성공 리스트" );
  62. resultAddClass = "text-success";
  63. resultMessage = "성공";
  64. } else if( key == "fail" ) {
  65. title.text( "발송 실패 리스트" );
  66. resultAddClass = "text-danger";
  67. resultMessage = "실패";
  68. } else if( key == "wait" ) {
  69. title.text( "발송 대기 리스트" );
  70. resultAddClass = "text-warning";
  71. resultMessage = "대기";
  72. }
  73. //ajax -> get patientList
  74. var loadingTr = $( "#loading-tr" ).clone().removeAttr( "id" );
  75. $( "#patientList" ).empty().append( loadingTr );
  76. var url = "./getPushResultList";
  77. var vv = "resultType=" + key + "&logIdx=" + logIdx + "&pushIdx=" + pushIdx + "&ym=" + yearMonth;
  78. // $( "#patientList" ).find( "tr" ).not( loadingTr ).remove();
  79. $( "#pushResultTable" ).trigger( "destroy" );
  80. getAjax( url, vv, function( data ){
  81. $( "#patientList" ).empty();
  82. if( data.total > 0 ) {
  83. for( var i = 1; i <= data.total; i ++ ) {
  84. var info = data.result[i - 1];
  85. var tr = $( "#patient-tr" ).clone().removeAttr( "id" );
  86. tr.find( "td.no" ).text( i );
  87. tr.find( "td.name" ).text( info.patientName );
  88. tr.find( "td.ward" ).text( info.wardNumber == "" ? info.roomNumber+"호" : info.wardNumber+"동 " + info.roomNumber+"호" );
  89. tr.find( "td.gender" ).text( info.gender );
  90. tr.find( "td.jumin" ).text( info.jumin );
  91. tr.find( "td.updateDate" ).text( info.updateDate );
  92. tr.find( "td.sendResult" ).text( resultMessage ).addClass( resultAddClass );
  93. tr.find( "td.failMsg" ).text( info.note ).attr( "data-content", "[" + info.failCode + "] " + info.note );
  94. if( key == "fail" ) {
  95. tr.find( "td.failMsg" ).popover({
  96. container: 'body'
  97. });
  98. }
  99. $( "#patientList" ).append( tr );
  100. if( i == ( data.total ) ) {
  101. $( "#pushResultTable" ).tablesorter();
  102. }
  103. }
  104. } else {
  105. $( "#patientList" ).append( "<tr><td colspan='8'>대상자가 존재하지않습니다</td></tr>" );
  106. }
  107. }, null, null );
  108. });
  109. // 즉시발송건 존재할경우 5초마다 새로고침
  110. setInterval(sendDirectCheck, 3000);
  111. // modal hide event
  112. $('#sendResultList').on('hide.bs.modal', function () {
  113. $( "div.popover" ).hide();
  114. });
  115. });
  116. function sendDirectCheck(){
  117. if( $( "div.send-loading" ).length > 0 ) {
  118. $.ajax({
  119. type: "GET",
  120. url : "./list",
  121. dataType : "text",
  122. error : function(){
  123. console.log( "error" );
  124. },
  125. success : function( data ){
  126. var domNodes = $( $.parseHTML( data ) );
  127. $( "#pushLogTable" ).html( domNodes.find( "#pushLogTable" ).html() );
  128. }
  129. })
  130. };
  131. return false;
  132. };
  133. function pushDetail( t ){
  134. var $this = $( t );
  135. var targetBox = $( "#defaultModalPrimary_1" );
  136. console.log( $this );
  137. console.log( $this.parent( "td" ).siblings( "td-target-type" ).text() );
  138. targetBox.find( "td.center-name" ).text( $this.siblings( "input.center-name" ).val() );
  139. targetBox.find( "td.sender" ).text( $this.siblings( "input.name" ).val() + " (" + $this.siblings( "input.sender" ).val() + ")" );
  140. targetBox.find( "td.target-type" ).text( $this.parent( "td" ).siblings( "td.td-target-type" ).text() );
  141. targetBox.find( "td.send-type" ).text( $this.parent( "td" ).siblings( "td.td-send-type" ).text() + " 발송" );
  142. targetBox.find( "td.start-date" ).text( $this.parent( "td" ).siblings( "td.td-start-date" ).text() );
  143. targetBox.find( "input.push-title" ).val( $this.text() );
  144. targetBox.find( "textarea.push-content" ).val( $this.siblings( "input.push-content" ).val() );
  145. }
  146. </script>
  147. <style>
  148. .pointer{cursor:pointer;}
  149. .pointer span:hover{text-decoration: underline;}
  150. </style>
  151. </head>
  152. <body>
  153. <div class="modal fade" id="defaultModalPrimary_1" tabindex="-1" role="dialog" aria-hidden="true">
  154. <div class="modal-dialog" role="document">
  155. <div class="modal-content">
  156. <div class="modal-header">
  157. <h5 class="modal-title">발송 정보</h5>
  158. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span> </button>
  159. </div>
  160. <div class="modal-body m-4">
  161. <table class="table mobile-table">
  162. <colgroup>
  163. <col style="width: 30%">
  164. <col style="width: 70%">
  165. </colgroup>
  166. <tr>
  167. <th>생활치료센터명</th>
  168. <td class="center-name"></td>
  169. </tr>
  170. <tr>
  171. <th>발송등록자</th>
  172. <td class="sender"></td>
  173. </tr>
  174. <tr>
  175. <th>발송 대상</th>
  176. <td class="target-type"></td>
  177. </tr>
  178. <tr>
  179. <th>발송 구분</th>
  180. <td class="send-type"></td>
  181. </tr>
  182. <tr>
  183. <th>발송일</th>
  184. <td class="start-date"></td>
  185. </tr>
  186. <tr>
  187. <th>푸시 제목</th>
  188. <td>
  189. <div class="form-group mb-xl-0">
  190. <input class="form-control push-title" type="text" value="" readonly>
  191. </div>
  192. </td>
  193. </tr>
  194. <tr>
  195. <th>푸시 내용</th>
  196. <td>
  197. <div class="form-group mb-xl-0">
  198. <textarea class="form-control push-content" rows="10" readonly></textarea>
  199. </div>
  200. </td>
  201. </tr>
  202. </table>
  203. </div>
  204. <div class="modal-footer">
  205. <button type="button" class="btn btn-primary" data-dismiss="modal">확인</button>
  206. </div>
  207. </div>
  208. </div>
  209. </div>
  210. <div class="modal fade" id="sendResultList" tabindex="-1" role="dialog" aria-hidden="true">
  211. <div class="modal-dialog modal-xl modal-dialog-scrollable" role="document">
  212. <div class="modal-content">
  213. <div class="modal-header">
  214. <h5 class="modal-title">발송 통계</h5>
  215. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span> </button>
  216. </div>
  217. <div class="modal-body m-4">
  218. <table class="table mobile-table table-striped text-center" id="pushResultTable">
  219. <colgroup>
  220. <col style="width: 8%">
  221. <col style="width: 12%">
  222. <col style="width: 15%">
  223. <col style="width: 10%">
  224. <col style="width: 16%">
  225. <col style="width: 16%">
  226. <col style="width: 10%">
  227. <col style="width: 19%">
  228. </colgroup>
  229. <thead>
  230. <tr>
  231. <th>번호 <i class="fa fa-fw fa-sort"></i></th>
  232. <th>환자명 <i class="fa fa-fw fa-sort"></i></th>
  233. <th>호실 <i class="fa fa-fw fa-sort"></i></th>
  234. <th>성별 <i class="fa fa-fw fa-sort"></i></th>
  235. <th>생년월일 <i class="fa fa-fw fa-sort"></i></th>
  236. <th>발송 완료시간 <i class="fa fa-fw fa-sort"></i></th>
  237. <th>발송 결과 <i class="fa fa-fw fa-sort"></i></th>
  238. <th style="max-width: 60px;">비고 <i class="fa fa-fw fa-sort"></i></th>
  239. </tr>
  240. </thead>
  241. <tbody id="patientList">
  242. <!-- 환자리스트 동적 생성 -->
  243. </tbody>
  244. </table>
  245. <table class="d-none" id="hide-table">
  246. <tr id="loading-tr">
  247. <td colspan="8">
  248. <div class="spinner-border text-primary" role="status">
  249. <span class="sr-only">Loading...</span>
  250. </div>
  251. </td>
  252. </tr>
  253. <tr id="patient-tr">
  254. <td class="no"></td>
  255. <td class="name"></td>
  256. <td class="ward"></td>
  257. <td class="gender"></td>
  258. <td class="jumin"></td>
  259. <td class="updateDate"></td>
  260. <td class="sendResult"></td>
  261. <td class="failMsg" style="max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;" data-toggle="popover" title="실패 사유" data-content=""></td>
  262. </tr>
  263. </table>
  264. </div>
  265. <div class="modal-footer">
  266. <button type="button" class="btn btn-primary" data-dismiss="modal">확인</button>
  267. </div>
  268. </div>
  269. </div>
  270. </div>
  271. <div class="wrapper">
  272. <jsp:include page="${data._INCLUDE}/sidebar.jsp"></jsp:include>
  273. <div class="main">
  274. <jsp:include page="${data._INCLUDE}/top.jsp"></jsp:include>
  275. <main class="content">
  276. <div class="container-fluid p-0">
  277. <!-- 의료진 관리 START -->
  278. <div class="row">
  279. <div class="col-12 col-lg-6">
  280. <h1 class="h3 mb-3">월별 푸시 발송 현황 (<c:out value="${y}"/>년 <c:out value="${m}"/>월)</h1>
  281. </div>
  282. <div class="col-12 col-lg-6 text-right">
  283. <nav aria-label="breadcrumb">
  284. <ol class="breadcrumb">
  285. <li class="breadcrumb-item"><a href="javscript:;">Home</a></li>
  286. <li class="breadcrumb-item">푸시서비스 관리</li>
  287. <li class="breadcrumb-item active">발송 현황 리스트</li>
  288. </ol>
  289. </nav>
  290. </div>
  291. </div>
  292. <div class="row">
  293. <div class="col-12">
  294. <div class="card">
  295. <form action="?" method="get" id="searchForm">
  296. <input type="hidden" id="ym" value='<c:out value="${ym}"/>' />
  297. <div class="card-body">
  298. <table class="table mobile-table">
  299. <colgroup>
  300. <col style="width:10%">
  301. <col style="width:40%">
  302. <col style="width:10%">
  303. <col style="width:40%">
  304. </colgroup>
  305. <tr>
  306. <th>발송(연도)</th>
  307. <td>
  308. <select class="custom-select form-control" name="y">
  309. <c:forEach var="i" begin="2020" end="${nowYear}">
  310. <option value="${i}" <c:if test="${i eq y}">selected="selected"</c:if>>${i} 년</option>
  311. </c:forEach>
  312. </select>
  313. </td>
  314. <th>발송(월)</th>
  315. <td>
  316. <select class="custom-select form-control" name="m">
  317. <c:forEach var="j" begin="1" end="12">
  318. <c:if test="${j < 10}">
  319. <c:set var="j" value="0${j}"/>
  320. </c:if>
  321. <option value="${j}" <c:if test="${j eq m}">selected="selected"</c:if>>${j} 월</option>
  322. </c:forEach>
  323. </select>
  324. </td>
  325. </tr>
  326. <tr>
  327. <th>발송(일)</th>
  328. <td>
  329. <div class="row">
  330. <div class="col-5">
  331. <div class="form-group mb-xl-0">
  332. <input class="form-control date-no-req" type="text" name="startDate" value='<c:out value="${startDate}"/>' onKeyup="inputYMDNumber(this);" autocomplete="off" placeholder="검색 시작일자">
  333. </div>
  334. </div>
  335. <div
  336. class="col-2 text-center">
  337. ~</div>
  338. <div class="col-5">
  339. <div class="form-group mb-xl-0">
  340. <input class="form-control date-no-req" type="text" name="endDate" value='<c:out value="${endDate}"/>' onKeyup="inputYMDNumber(this);" autocomplete="off" placeholder="검색 종료일자">
  341. </div>
  342. </div>
  343. </div>
  344. </td>
  345. <th>수신 대상</th>
  346. <td>
  347. <select class="custom-select form-control" name="targetType">
  348. <option value="">대상자 선택</option>
  349. <option value="A" <c:if test="${targetType eq 'A'}">selected="selected"</c:if>>전체 환자</option>
  350. <option value="N" <c:if test="${targetType eq 'N'}">selected="selected"</c:if>>건강정보 미입력자</option>
  351. <option value="M" <c:if test="${targetType eq 'M'}">selected="selected"</c:if>>본인 관리 환자</option>
  352. <option value="P" <c:if test="${targetType eq 'P'}">selected="selected"</c:if>>환자 개별선택</option>
  353. <option value="T" <c:if test="${targetType eq 'T'}">selected="selected"</c:if>>정신건강 자가진단 미입력 환자</option>
  354. </select>
  355. </td>
  356. </tr>
  357. <tr>
  358. <th>발송 구분</th>
  359. <td>
  360. <select class="custom-select form-control" name="sendType">
  361. <option value="">전체</option>
  362. <option value="D" <c:if test="${sendType eq 'D'}">selected="selected"</c:if>>즉시</option>
  363. <option value="R" <c:if test="${sendType eq 'R'}">selected="selected"</c:if>>예약</option>
  364. <option value="E" <c:if test="${sendType eq 'E'}">selected="selected"</c:if>>매일</option>
  365. </select>
  366. </td>
  367. <th>검색어 조건</th>
  368. <td>
  369. <div class="form-row">
  370. <div class="col-4">
  371. <select class="custom-select form-control" name="searchType">
  372. <option value="title" <c:if test="${searchType eq 'title'}">selected="selected"</c:if>>푸시 제목</option>
  373. <option value="name" <c:if test="${searchType eq 'name'}">selected="selected"</c:if>>발송자 이름</option>
  374. <option value="id" <c:if test="${searchType eq 'id'}">selected="selected"</c:if>>발송자 아이디</option>
  375. </select>
  376. </div>
  377. <div class="col-6">
  378. <input type="text" class="form-control" name="q" placeholder="" value="<c:out value='${q}'/>" autocomplete="off">
  379. </div>
  380. <div class="col-2">
  381. <button class="btn btn-primary">검색</button>
  382. </div>
  383. </div>
  384. </td>
  385. </tr>
  386. </table>
  387. </div>
  388. </form>
  389. </div>
  390. </div>
  391. </div>
  392. <div class="row">
  393. <div class="col-12">
  394. <div class="card">
  395. <div class="card-body">
  396. <div class="row mb-3">
  397. <div class="col-6">전체 :<fmt:formatNumber value="${total}" pattern="#,###" />
  398. </div>
  399. <div class="col-6 text-right">
  400. <button class="btn btn-secondary" onclick="location.href='./schedule/list';">예약 푸시 현황</button>
  401. <c:if test="${role._CREATE eq 'Y'}">
  402. <button class="btn btn-primary" onclick="location.href='./send';">신규 푸시 발송</button>
  403. </c:if>
  404. </div>
  405. </div>
  406. <div class="table-responsive">
  407. <table class="table table-striped text-center" id="pushLogTable">
  408. <colgroup>
  409. <col style=" width: 6%; ">
  410. <col style=" width: 7%; ">
  411. <col style=" width: 15%; ">
  412. <col style=" width: 8%; ">
  413. <col style=" width: 10%; ">
  414. <col style=" width: 10%; ">
  415. <col style=" width: 8%; ">
  416. <col style=" width: 5%; ">
  417. <col style=" width: 5%; ">
  418. <col style=" width: 5%; ">
  419. <col style=" width: 5%; ">
  420. <col style=" width: 12%; ">
  421. </colgroup>
  422. <thead>
  423. <tr>
  424. <th>번호</th>
  425. <th>발송 구분</th>
  426. <th>푸시제목</th>
  427. <th>수신 대상</th>
  428. <th>최초등록일</th>
  429. <th>발송시간</th>
  430. <th>발송상태</th>
  431. <th>Total</th>
  432. <th>성공</th>
  433. <th>실패</th>
  434. <th>대기</th>
  435. <th>발송등록자</th>
  436. </tr>
  437. </thead>
  438. <tbody>
  439. <c:if test="${total eq 0}">
  440. <tr>
  441. <td colspan="12">발송 이력이 없습니다</td>
  442. </tr>
  443. </c:if>
  444. <c:forEach var="pl" items="${pushList}" varStatus="lStatus">
  445. <tr>
  446. <td>
  447. <c:set var="pageNum" value="${total - lStatus.index}" />
  448. <fmt:formatNumber value="${pageNum}" pattern="#,###" />
  449. </td>
  450. <td class="td-send-type">
  451. <c:if test="${pl.sendType eq 'D'}">즉시</c:if>
  452. <c:if test="${pl.sendType eq 'R'}">예약</c:if>
  453. <c:if test="${pl.sendType eq 'E'}">매일</c:if>
  454. </td>
  455. <td class="td-push-title text-left">
  456. <a href="javascript:;" data-toggle="modal" data-target="#defaultModalPrimary_1" onclick="pushDetail( this );"><c:out value="${pl.pushTitle}"/></a>
  457. <input type="hidden" class="log-idx" value='<c:out value="${pl.idx}"/>' />
  458. <input type="hidden" class="push-idx" value='<c:out value="${pl.pushIdx}"/>' />
  459. <input type="hidden" class="center-name" value='<c:out value="${pl.centerName}"/>' />
  460. <input type="hidden" class="sender" value='<c:out value="${pl.sender}"/>' />
  461. <input type="hidden" class="name" value='<c:out value="${pl.name}"/>' />
  462. <input type="hidden" class="push-content" value='<c:out value="${pl.pushContent}"/>' />
  463. </td>
  464. <td class="td-target-type">
  465. <c:if test="${pl.targetType eq 'A'}">전체 환자</c:if>
  466. <c:if test="${pl.targetType eq 'N'}">건강정보 미입력자</c:if>
  467. <c:if test="${pl.targetType eq 'M'}">본인 관리 환자</c:if>
  468. <c:if test="${pl.targetType eq 'P'}">환자 개별선택</c:if>
  469. <c:if test="${pl.targetType eq 'T'}">정신건강 자가진단 미입력 환자</c:if>
  470. </td>
  471. <td class="td-create-date"><c:out value="${pl.createDate}"/></td>
  472. <c:if test="${pl.sendState eq 'W'}">
  473. <td colspan="6">
  474. <div class="send-loading align-bottom spinner-border text-primary" role="status">
  475. <span class="sr-only">Loading...</span>
  476. </div>
  477. </td>
  478. </c:if>
  479. <c:if test="${pl.sendState ne 'W'}">
  480. <td class="td-start-date"><c:out value="${pl.startDate}"/></td>
  481. <td>
  482. <c:if test="${pl.sendState eq 'W'}">발송 대기</c:if>
  483. <c:if test="${pl.sendState eq 'C'}">발송 완료</c:if>
  484. <c:if test="${pl.sendState eq 'I'}">발송중</c:if>
  485. </td>
  486. <td class="text-right">
  487. <fmt:formatNumber value="${pl.totalCount}" pattern="#,###" />
  488. </td>
  489. <td class="text-right text-success pointer">
  490. <span class="text-link push-result" data-access="success" data-toggle="modal" data-target="#sendResultList">
  491. <fmt:formatNumber value="${pl.successCount}" pattern="#,###" />
  492. </span>
  493. </td>
  494. <td class="text-right text-danger pointer">
  495. <span class="text-link push-result" data-access="fail" data-toggle="modal" data-target="#sendResultList">
  496. <fmt:formatNumber value="${pl.failCount}" pattern="#,###" />
  497. </span>
  498. </td>
  499. <td class="text-right text-warning pointer">
  500. <span class="text-link push-result" data-access="wait" data-toggle="modal" data-target="#sendResultList">
  501. <fmt:formatNumber value="${pl.waitCount}" pattern="#,###" />
  502. </span>
  503. </td>
  504. </c:if>
  505. <td>
  506. <span class="text-info">[<c:out value="${pl.centerName}"/>]</span>
  507. <br/>
  508. <c:out value="${pl.name}"/> (<c:out value="${pl.sender}"/>)
  509. </td>
  510. </tr>
  511. </c:forEach>
  512. </tbody>
  513. </table>
  514. </div>
  515. <div class="row mt-5">
  516. <div class="col-12 col-lg-6 mb-2">
  517. <!-- <select class="custom-select form-control col-md-2" id="inputState" name="inputState"> -->
  518. <!-- <option value="success" selected="">전체</option> -->
  519. <!-- <option value="info">입소</option> -->
  520. <!-- <option value="warning">퇴소</option> -->
  521. <!-- </select> -->
  522. </div>
  523. <div class="col-12 col-lg-6 mb-2">
  524. <jsp:include page="${data._INCLUDE}/paging.jsp" flush="true">
  525. <jsp:param name="firstPageNo" value="${paging.firstPageNo}" />
  526. <jsp:param name="prevPageNo" value="${paging.prevPageNo}" />
  527. <jsp:param name="startPageNo" value="${paging.startPageNo}" />
  528. <jsp:param name="pageNo" value="${paging.pageNo}" />
  529. <jsp:param name="endPageNo" value="${paging.endPageNo}" />
  530. <jsp:param name="nextPageNo" value="${paging.nextPageNo}" />
  531. <jsp:param name="finalPageNo" value="${paging.finalPageNo}" />
  532. <jsp:param name="preFix" value="${paging.preFix}" />
  533. <jsp:param name="url" value="${paging.url}" />
  534. <jsp:param name="total" value="${paging.totalCount}" />
  535. </jsp:include>
  536. </div>
  537. </div>
  538. </div>
  539. </div>
  540. </div>
  541. </div>
  542. <!-- 의료진 관리 END -->
  543. </div>
  544. </main>
  545. <jsp:include page="${data._INCLUDE}/footer.jsp"></jsp:include>
  546. </div>
  547. </div>
  548. </body>
  549. </html>