UserMenuForm.html 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org">
  4. <!--
  5. *******************************************************************************
  6. * @source : UserMenuForm.html
  7. * @desc : 사용자메뉴 팝업 Page
  8. *============================================================================
  9. * Wivismall
  10. * Copyright(C) 2019 TSIT, All rights reserved.
  11. *============================================================================
  12. * VER DATE AUTHOR DESCRIPTION
  13. * === =========== ========== =============================================
  14. * 1.0 2019.12.06 gagamel 최초 작성
  15. *******************************************************************************
  16. -->
  17. <div class="modalPopup" data-width="600">
  18. <div class="panelStyle">
  19. <div class="panelTitle">
  20. <h2>사용자 메뉴</h2>
  21. <button type="button" class="close" onclick="uifnPopupClose('popupUserMenu');"><i class="fa fa-times"></i></button>
  22. </div>
  23. <div class="panelContent yScroll" style="height: 500px;">
  24. <form id="userMenuForm" name="userMenuForm" action="#" th:action="@{'/system/user/menu/list/save'}" th:method="post">
  25. <table class="frmStyle" aria-describedby="사용자 메뉴 목록">
  26. <colgroup>
  27. <col style="width: 10%"/>
  28. <col style="width: 20%"/>
  29. <col/>
  30. <col style="width: 20%"/>
  31. </colgroup>
  32. <thead>
  33. <tr>
  34. <th><input type="button" class="chkBox" name="allCheck" onclick="fnAllCheck(this);"/></th>
  35. <th>메뉴ID</th>
  36. <th>메뉴명</th>
  37. <th>메뉴구분</th>
  38. </tr>
  39. </thead>
  40. <tbody id="tbodyUserMenu">
  41. <tr th:unless="${userMenuList}">
  42. <td colspan="4">조회 결과가 없습니다.</td>
  43. </tr>
  44. <tr th:each="oneData : ${userMenuList}">
  45. <td class="aC"><label class="chkBox" th:classappend="${oneData.useYn == 'Y' ? 'checked' :''}"><input type="checkbox" name="chkUseYn" th:checked="${oneData.useYn == 'Y'}" th:readonly="${oneData.menuGb == 'M'}"/></label></td>
  46. <td style="text-align: left" th:text="${(oneData.menuLvl == 1 ? '&nbsp;&nbsp;&nbsp;' : oneData.menuLvl == 2 ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' : '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;') + oneData.menuLvl + '. ' + oneData.menuId}">A</td>
  47. <td style="text-align: left" th:text="${oneData.menuNm}">상품</td>
  48. <td th:text="${oneData.menuGb == 'M' ? '메뉴' : '프로그램'}">메뉴</td>
  49. <input type="hidden" name="userNo" th:value="${oneData.userNo}"/>
  50. <input type="hidden" name="menuId" th:value="${oneData.menuId}"/>
  51. </tr>
  52. </tbody>
  53. </table>
  54. </form>
  55. </div>
  56. <ul class="panelBar" style="padding-top:15px">
  57. <li class="center">
  58. <button type="button" class="btn btn-info btn-lg" onclick="fnSaveUserMenu();">저장</button>
  59. <button type="button" class="btn btn-gray btn-lg" onclick="fnInit();">초기화</button>
  60. </li>
  61. </ul>
  62. </div>
  63. </div>
  64. <script th:inline="javascript">
  65. /*<![CDATA[*/
  66. // 전체 체크
  67. var fnAllCheck = function(obj) {
  68. var $el = $("#userMenuForm input:checkbox[name=chkUseYn]");
  69. $.each($el, function(idx, item) {
  70. if (gagajf.isNull($(this).attr('readonly'))) {
  71. if ($(obj).hasClass('checked')) {
  72. $(this).prop('checked', false);
  73. $(this).parent('label').removeClass('checked');
  74. } else {
  75. $(this).prop('checked', true);
  76. $(this).parent('label').addClass('checked');
  77. }
  78. }
  79. });
  80. if ($(obj).hasClass('checked')) {
  81. $(obj).removeClass('checked');
  82. $(obj).parent('label').removeClass('checked');
  83. } else {
  84. $(obj).addClass('checked');
  85. $(obj).parent('label').addClass('checked');
  86. }
  87. }
  88. // 저장
  89. var fnSaveUserMenu = function() {
  90. var changedData = [];
  91. $('#tbodyUserMenu tr').each(function(idx) {
  92. if ($(this).find('input:checkbox[name=chkUseYn]').is(':checked')) {
  93. var params = new Object();
  94. params.userNo = $(this).find('input[name=userNo]').val();
  95. params.menuId = $(this).find('input[name=menuId]').val();
  96. params.useYn = 'Y';
  97. changedData.push(params);
  98. }
  99. });
  100. if (changedData.length == 0) {
  101. mcxDialog.alert('저장할 데이터가 없습니다.');
  102. return;
  103. }
  104. mcxDialog.confirm("저장하시겠습니까?", {
  105. cancelBtnText: "취소",
  106. sureBtnText: "확인",
  107. sureBtnClick: function() {
  108. var jsonData = JSON.stringify(changedData);
  109. gagajf.ajaxJsonSubmit($('#userMenuForm').prop('action'), jsonData, function() {
  110. uifnPopupClose('popupUserMenu');
  111. });
  112. }
  113. });
  114. }
  115. // 초기화
  116. var fnInit = function() {
  117. $('#userMenuForm')[0].reset();
  118. $("#userMenuForm input[type=checkbox]").removeClass("checked");
  119. $("#userMenuForm input[type=checkbox]").parent("label").removeClass("checked");
  120. }
  121. $(document).ready(function() {
  122. });
  123. /*]]>*/
  124. </script>
  125. </html>