diff --git a/src/main/java/com/dbnt/faisp/config/BaseModel.java b/src/main/java/com/dbnt/faisp/config/BaseModel.java index 5a52a6e9..93054111 100644 --- a/src/main/java/com/dbnt/faisp/config/BaseModel.java +++ b/src/main/java/com/dbnt/faisp/config/BaseModel.java @@ -35,6 +35,8 @@ public class BaseModel { private String startDate; @Transient private String endDate; + @Transient + private Boolean dashboardFlag = false; public void setQueryInfo(){ setFirstIndex((getPageIndex()-1)*getRowCnt()); diff --git a/src/main/java/com/dbnt/faisp/config/ModalController.java b/src/main/java/com/dbnt/faisp/config/ModalController.java index a7ebcf5f..f8568d0c 100644 --- a/src/main/java/com/dbnt/faisp/config/ModalController.java +++ b/src/main/java/com/dbnt/faisp/config/ModalController.java @@ -2,7 +2,9 @@ package com.dbnt.faisp.config; import com.dbnt.faisp.menuMgt.model.MenuMgt; import com.dbnt.faisp.menuMgt.service.MenuMgtService; +import com.dbnt.faisp.userInfo.model.UserInfo; import lombok.RequiredArgsConstructor; +import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -17,11 +19,12 @@ public class ModalController { private final MenuMgtService menuMgtService; @GetMapping("/menuModal") - public ModelAndView menuModalPage(MenuMgt menuMgt){ + public ModelAndView menuModalPage(@AuthenticationPrincipal UserInfo loginUser, MenuMgt menuMgt){ ModelAndView mav = new ModelAndView("commonModal/menuModal"); + menuMgt.setUserSeq(loginUser.getUserSeq()); menuMgt.setQueryInfo(); - mav.addObject("menuMgtList", menuMgtService.selectMenuMgtList(menuMgt)); - menuMgt.setContentCnt(menuMgtService.selectMenuMgtListCnt(menuMgt)); + mav.addObject("menuMgtList", menuMgtService.selectMenuMgtListToAccessAuth(menuMgt)); + menuMgt.setContentCnt(menuMgtService.selectMenuMgtListToAccessAuthCnt(menuMgt)); menuMgt.setPaginationInfo(); mav.addObject("searchParams", menuMgt); return mav; diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/affair/AffairController.java b/src/main/java/com/dbnt/faisp/fpiMgt/affair/AffairController.java index 218a4ca6..ddecef47 100644 --- a/src/main/java/com/dbnt/faisp/fpiMgt/affair/AffairController.java +++ b/src/main/java/com/dbnt/faisp/fpiMgt/affair/AffairController.java @@ -29,7 +29,13 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관 @GetMapping("/affairMgt") public ModelAndView affairMgtPage(@AuthenticationPrincipal UserInfo loginUser, AffairBoard affairBoard){ - ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affair/affairMgt"); + ModelAndView mav; + if(affairBoard.getDashboardFlag()){ + mav = new ModelAndView("igActivities/fpiMgt/affair/affairMgtDashboard"); + affairBoard.setRowCnt(5); + }else{ + mav = new ModelAndView("igActivities/fpiMgt/affair/affairMgt"); + } mav.addObject("page", "main"); mav.addObject("searchUrl", "/affair/affairMgt"); //메뉴권한 확인 diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/affairPlan/PlanController.java b/src/main/java/com/dbnt/faisp/fpiMgt/affairPlan/PlanController.java index 559e9806..a11d0ab2 100644 --- a/src/main/java/com/dbnt/faisp/fpiMgt/affairPlan/PlanController.java +++ b/src/main/java/com/dbnt/faisp/fpiMgt/affairPlan/PlanController.java @@ -25,7 +25,13 @@ public class PlanController { // 첩보수집활동 > 외사경찰 견문관리 @GetMapping("/planMgt") public ModelAndView monthPlanPage(@AuthenticationPrincipal UserInfo loginUser, PlanBoard planBoard){ - ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/planMgt"); + ModelAndView mav = null; + if(planBoard.getDashboardFlag()){ + mav = new ModelAndView("igActivities/fpiMgt/affairPlan/planMgtDashboard"); + planBoard.setRowCnt(5); + }else{ + mav = new ModelAndView("igActivities/fpiMgt/affairPlan/planMgt"); + } mav.addObject("page", "main"); mav.addObject("searchUrl", "/affairPlan/planMgt"); //메뉴권한 확인 diff --git a/src/main/java/com/dbnt/faisp/fpiMgt/affairResult/ResultController.java b/src/main/java/com/dbnt/faisp/fpiMgt/affairResult/ResultController.java index 00f4753f..b152f617 100644 --- a/src/main/java/com/dbnt/faisp/fpiMgt/affairResult/ResultController.java +++ b/src/main/java/com/dbnt/faisp/fpiMgt/affairResult/ResultController.java @@ -30,7 +30,13 @@ public class ResultController { // 첩보수집활동 > 외사경찰 견문관 @GetMapping("/resultMgt") public ModelAndView resultMgtPage(@AuthenticationPrincipal UserInfo loginUser, ResultBoard resultBoard){ - ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairResult/resultMgt"); + ModelAndView mav = null; + if(resultBoard.getDashboardFlag()){ + mav = new ModelAndView("igActivities/fpiMgt/affairResult/resultMgtDashboard"); + resultBoard.setRowCnt(5); + }else{ + mav = new ModelAndView("igActivities/fpiMgt/affairResult/resultMgt"); + } mav.addObject("page", "main"); mav.addObject("searchUrl", "/affairResult/resultMgt"); //메뉴권한 확인 diff --git a/src/main/java/com/dbnt/faisp/menuMgt/mapper/MenuMgtMapper.java b/src/main/java/com/dbnt/faisp/menuMgt/mapper/MenuMgtMapper.java index faa0309e..5478d9da 100644 --- a/src/main/java/com/dbnt/faisp/menuMgt/mapper/MenuMgtMapper.java +++ b/src/main/java/com/dbnt/faisp/menuMgt/mapper/MenuMgtMapper.java @@ -13,4 +13,7 @@ public interface MenuMgtMapper { Integer selectMenuMgtListCnt(MenuMgt menuMgt); List selectAccessMenuListWhereUserSeq(Integer userSeq); + + List selectMenuMgtListToAccessAuth(MenuMgt menuMgt); + Integer selectMenuMgtListToAccessAuthCnt(MenuMgt menuMgt); } diff --git a/src/main/java/com/dbnt/faisp/menuMgt/model/MenuMgt.java b/src/main/java/com/dbnt/faisp/menuMgt/model/MenuMgt.java index 58bb8420..27c08ae5 100644 --- a/src/main/java/com/dbnt/faisp/menuMgt/model/MenuMgt.java +++ b/src/main/java/com/dbnt/faisp/menuMgt/model/MenuMgt.java @@ -35,6 +35,8 @@ public class MenuMgt extends BaseModel { @Transient private List childList; + @Transient + private Integer userSeq; @Transient private Integer cat1RowspanCnt; diff --git a/src/main/java/com/dbnt/faisp/menuMgt/service/MenuMgtService.java b/src/main/java/com/dbnt/faisp/menuMgt/service/MenuMgtService.java index 3a6ee419..2ff0b94d 100644 --- a/src/main/java/com/dbnt/faisp/menuMgt/service/MenuMgtService.java +++ b/src/main/java/com/dbnt/faisp/menuMgt/service/MenuMgtService.java @@ -25,6 +25,13 @@ public class MenuMgtService { return menuMgtMapper.selectMenuMgtListCnt(menuMgt); } + public List selectMenuMgtListToAccessAuth(MenuMgt menuMgt){ + List menuList = menuMgtMapper.selectMenuMgtListToAccessAuth(menuMgt); + return menuListRowspanSet(menuList); + } + public Integer selectMenuMgtListToAccessAuthCnt(MenuMgt menuMgt){ + return menuMgtMapper.selectMenuMgtListToAccessAuthCnt(menuMgt); + } @Transient public String saveMenuMgt(MenuMgt menuMgt) { if(menuMgt.getMenuKey()==null){ diff --git a/src/main/java/com/dbnt/faisp/publicBoard/PublicBoardController.java b/src/main/java/com/dbnt/faisp/publicBoard/PublicBoardController.java index 26bf4a38..3f7395d8 100644 --- a/src/main/java/com/dbnt/faisp/publicBoard/PublicBoardController.java +++ b/src/main/java/com/dbnt/faisp/publicBoard/PublicBoardController.java @@ -23,7 +23,13 @@ public class PublicBoardController { @GetMapping("/noticePage") public ModelAndView organMgtPage(@AuthenticationPrincipal UserInfo loginUser, PublicBoard publicBoard) { - ModelAndView mav = new ModelAndView("publicBoard/notice/noticePage"); + ModelAndView mav; + if(publicBoard.getDashboardFlag()){ + mav = new ModelAndView("publicBoard/notice/noticePageDashBoard"); + publicBoard.setRowCnt(5); + }else{ + mav = new ModelAndView("publicBoard/notice/noticePage"); + } publicBoard.setQueryInfo(); publicBoard.setPublicType("PLB001"); if (loginUser.getUserRole().contains(Role.SUB_ADMIN.getValue())) { diff --git a/src/main/java/com/dbnt/faisp/translator/TranslatorController.java b/src/main/java/com/dbnt/faisp/translator/TranslatorController.java index 468b4b0c..7e4dd3b0 100644 --- a/src/main/java/com/dbnt/faisp/translator/TranslatorController.java +++ b/src/main/java/com/dbnt/faisp/translator/TranslatorController.java @@ -31,7 +31,13 @@ public class TranslatorController { @GetMapping("/info") public ModelAndView translatorInfo(@AuthenticationPrincipal UserInfo loginUser,Translator translator,HttpServletResponse response) { - ModelAndView mav = new ModelAndView("translator/translator"); + ModelAndView mav; + if (translator.getDashboardFlag()){ + mav = new ModelAndView("translator/translatorDashboard"); + translator.setRowCnt(5); + }else{ + mav = new ModelAndView("translator/translator"); + } translator.setDownOrganCdList(loginUser.getDownOrganCdList()); //엑셀다운 if(translator.getExcel() != null && translator.getExcel().equals("Y")){ diff --git a/src/main/java/com/dbnt/faisp/userInfo/MyInfoController.java b/src/main/java/com/dbnt/faisp/userInfo/MyInfoController.java index 04937a2f..ca5514e4 100644 --- a/src/main/java/com/dbnt/faisp/userInfo/MyInfoController.java +++ b/src/main/java/com/dbnt/faisp/userInfo/MyInfoController.java @@ -39,4 +39,10 @@ public class MyInfoController { return mav; } + @PostMapping("saveDashboardConfig") + @ResponseBody + public void saveDashboardConfig(@AuthenticationPrincipal UserInfo loginUser, @RequestBody List configList){ + userInfoService.saveDashboardConfigList(loginUser.getUserSeq(), configList); + } + } diff --git a/src/main/java/com/dbnt/faisp/userInfo/repository/DashboardConfigRepository.java b/src/main/java/com/dbnt/faisp/userInfo/repository/DashboardConfigRepository.java index 14bca9cf..31a3e3b2 100644 --- a/src/main/java/com/dbnt/faisp/userInfo/repository/DashboardConfigRepository.java +++ b/src/main/java/com/dbnt/faisp/userInfo/repository/DashboardConfigRepository.java @@ -3,9 +3,7 @@ package com.dbnt.faisp.userInfo.repository; import com.dbnt.faisp.userInfo.model.DashboardConfig; import org.springframework.data.jpa.repository.JpaRepository; -import java.util.List; - - public interface DashboardConfigRepository extends JpaRepository { + void deleteByUserSeq(Integer userSeq); } diff --git a/src/main/java/com/dbnt/faisp/userInfo/service/UserInfoService.java b/src/main/java/com/dbnt/faisp/userInfo/service/UserInfoService.java index b36781c8..6ddaa22f 100644 --- a/src/main/java/com/dbnt/faisp/userInfo/service/UserInfoService.java +++ b/src/main/java/com/dbnt/faisp/userInfo/service/UserInfoService.java @@ -119,4 +119,14 @@ public class UserInfoService implements UserDetailsService { public List getDashboardConfigList(Integer userSeq) { return userInfoMapper.selectDashboardConfigList(userSeq); } + + + @Transactional + public void saveDashboardConfigList(Integer userSeq, List configList) { + dashboardConfigRepository.deleteByUserSeq(userSeq); + for(DashboardConfig config: configList){ + config.setUserSeq(userSeq); + } + dashboardConfigRepository.saveAll(configList); + } } diff --git a/src/main/resources/mybatisMapper/menuMgtMapper.xml b/src/main/resources/mybatisMapper/menuMgtMapper.xml index f7ce4719..134f67b2 100644 --- a/src/main/resources/mybatisMapper/menuMgtMapper.xml +++ b/src/main/resources/mybatisMapper/menuMgtMapper.xml @@ -4,6 +4,20 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + and cat1_cd = #{cat1Cd} + + + and cat2_cd = #{cat2Cd} + + + and cat3_cd = #{cat3Cd} + + + and menu_url like '%'||#{menuUrl}||'%' + + @@ -59,4 +51,30 @@ and aa.access_auth is not null order by cat1_cd, cat2_cd, cat3_cd + + + + \ No newline at end of file diff --git a/src/main/resources/static/js/dashboard.js b/src/main/resources/static/js/dashboard.js new file mode 100644 index 00000000..70d87c9b --- /dev/null +++ b/src/main/resources/static/js/dashboard.js @@ -0,0 +1,32 @@ +$(function (){ + $.ajax({ + type : 'GET', + url : "/myInfo/getDashBoardConfig", + dataType:"json", + success : function(data) { + data = [{menuUrl:"/publicBoard/noticePage"}].concat(data) + getSubPage(data) + }, + error : function(xhr, status) { + + } + }) +}) + +function getSubPage(menuList){ + $.each(menuList, function(idx, menu){ + if(idx<6){ + $.ajax({ + type : 'GET', + url : menu.menuUrl+"?dashboardFlag=true", + dataType:"html", + success : function(html) { + $("#subPage"+idx).append(html); + }, + error : function(xhr, status) { + + } + }) + } + }) +} \ No newline at end of file diff --git a/src/main/resources/static/js/user/info.js b/src/main/resources/static/js/user/info.js index dbdb9e22..b9b02010 100644 --- a/src/main/resources/static/js/user/info.js +++ b/src/main/resources/static/js/user/info.js @@ -5,17 +5,40 @@ $(function (){ url : "/myInfo/getDashBoardConfig", dataType:"json", success : function(data) { - + selectedList = data; }, error : function(xhr, status) { } }) }) + +$(document).on('click', '.configTr', function (event){ + const target = event.target; + if(!(target.className === "moveTd" || $(target).parents(".moveTd").length>0)){ + const chkBox = $(this).find(".configChkBox")[0]; + chkBox.checked = !chkBox.checked; + } +}) $(document).on('click', '#configAddBtn', function (){ searchModalSubmit(1); $("#menuModal").modal('show'); }) +$(document).on('click', '#configDeleteBtn', function (){ + $.each($(".configChkBox:checked"), function (idx, chkBox){ + $(chkBox).parents(".configTr").remove(); + }) + const tempList = []; + $.each($(".configChkBox"), function (idx, chkBox){ + $.each(selectedList, function (idx, menu){ + if(menu.menuKey === Number($(chkBox).attr('data-menukey'))){ + tempList.push(menu); + } + }) + }) + selectedList = tempList; + orderNumSort(); +}) $(document).on('click', '.menuTr', function (){ const checkBox = $(this).find(".menuCheckBox")[0] @@ -23,6 +46,7 @@ $(document).on('click', '.menuTr', function (){ if(checkBox.checked){ selectedList.push({ menuKey: Number(checkBox.value), + orderNum: selectedList.length+1, cat1Cd: $(this).find(".cat1Cd").val(), cat2Cd: $(this).find(".cat2Cd").val(), cat3Cd: $(this).find(".cat3Cd").val(), @@ -32,6 +56,7 @@ $(document).on('click', '.menuTr', function (){ const tempList = []; $.each(selectedList, function (idx, menu){ if(menu.menuKey !== Number(checkBox.value)){ + menu.orderNum = idx+1; tempList.push(menu); } }) @@ -50,7 +75,6 @@ $(document).on('click', '#getMenuBtn', function (){ xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val()); }, success : function(html) { - debugger $("#dashboardConfigTbody").empty().append($(html)[1].children[0].children); $("#menuModal").modal("hide"); }, @@ -86,6 +110,16 @@ $(document).on('click', '#savePasswordBtn', function (){ }) } }) +$(document).on('click', '.upBtn', function (){ + const targetTr = $(this).parents('tr'); + targetTr.prev().before(targetTr); + orderNumSort(); +}) +$(document).on('click', '.downBtn', function (){ + const targetTr = $(this).parents('tr'); + targetTr.next().after(targetTr); + orderNumSort(); +}) $(document).on('click', '#configSaveBtn', function (){ contentFade("in"); @@ -100,7 +134,6 @@ $(document).on('click', '#configSaveBtn', function (){ success : function(data) { alert("저장되었습니다."); contentFade("out"); - location.reload(); }, error : function(xhr, status) { alert("저장에 실패하였습니다.") @@ -109,6 +142,25 @@ $(document).on('click', '#configSaveBtn', function (){ }) }) +function orderNumSort(){ + $.each($(".configTr"), function(idx, tr){ + $(tr).find(".orderNumInput").val(idx+1); + for(const menu of selectedList){ + if(Number($(tr).find(".configChkBox").attr("data-menukey"))===menu.menuKey){ + menu.orderNum = Number($(tr).find(".orderNumInput").val()); + } + } + }) + selectedList.sort(function(a,b){ + if (a.orderNum > b.orderNum) { + return 1; + } + if (a.orderNum < b.orderNum) { + return -1; + } + return 0; + }) +} function setSelectedChkBox(){ $.each(selectedList, function (idx, item){ $("[value="+item.menuKey+"]").prop("checked", true); diff --git a/src/main/resources/templates/igActivities/fpiMgt/affair/affairMgtDashboard.html b/src/main/resources/templates/igActivities/fpiMgt/affair/affairMgtDashboard.html new file mode 100644 index 00000000..f6ab4056 --- /dev/null +++ b/src/main/resources/templates/igActivities/fpiMgt/affair/affairMgtDashboard.html @@ -0,0 +1,25 @@ + + +
+
+
외사경찰 견문관리
+
+
+
+
+ + + + + + + + + + + + + +
제목작성일시
+
+ \ No newline at end of file diff --git a/src/main/resources/templates/igActivities/fpiMgt/affairPlan/planMgtDashboard.html b/src/main/resources/templates/igActivities/fpiMgt/affairPlan/planMgtDashboard.html new file mode 100644 index 00000000..aaff4bc4 --- /dev/null +++ b/src/main/resources/templates/igActivities/fpiMgt/affairPlan/planMgtDashboard.html @@ -0,0 +1,25 @@ + + +
+
+
월간계획
+
+
+
+
+ + + + + + + + + + + + + +
제목작성일시
+
+ \ No newline at end of file diff --git a/src/main/resources/templates/igActivities/fpiMgt/affairResult/resultMgtDashboard.html b/src/main/resources/templates/igActivities/fpiMgt/affairResult/resultMgtDashboard.html new file mode 100644 index 00000000..9ff49f15 --- /dev/null +++ b/src/main/resources/templates/igActivities/fpiMgt/affairResult/resultMgtDashboard.html @@ -0,0 +1,25 @@ + + +
+
+
청산보고서
+
+
+
+
+ + + + + + + + + + + + + +
제목작성일시
+
+ \ No newline at end of file diff --git a/src/main/resources/templates/login/dashboard.html b/src/main/resources/templates/login/dashboard.html index d6b42f46..6bff798f 100644 --- a/src/main/resources/templates/login/dashboard.html +++ b/src/main/resources/templates/login/dashboard.html @@ -3,7 +3,7 @@ xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout/layout}"> - +
@@ -13,219 +13,27 @@
-
-
-
-
목록1
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
제목12022-08-19
제목22022-08-19
제목32022-08-19
제목42022-08-19
제목52022-08-19
-
+
-
-
-
-
목록2
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
제목12022-08-19
제목22022-08-19
제목32022-08-19
제목42022-08-19
제목52022-08-19
-
+
-
-
-
-
목록3
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
제목12022-08-19
제목22022-08-19
제목32022-08-19
제목42022-08-19
제목52022-08-19
-
+
-
-
-
-
목록4
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
제목12022-08-19
제목22022-08-19
제목32022-08-19
제목42022-08-19
제목52022-08-19
-
+
-
-
-
-
목록5
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
제목12022-08-19
제목22022-08-19
제목32022-08-19
제목42022-08-19
제목52022-08-19
-
+
-
-
-
-
목록6
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
제목12022-08-19
제목22022-08-19
제목32022-08-19
제목42022-08-19
제목52022-08-19
-
+
diff --git a/src/main/resources/templates/publicBoard/notice/noticePageDashboard.html b/src/main/resources/templates/publicBoard/notice/noticePageDashboard.html new file mode 100644 index 00000000..ce38df36 --- /dev/null +++ b/src/main/resources/templates/publicBoard/notice/noticePageDashboard.html @@ -0,0 +1,27 @@ + + +
+
+
공지사항
+
+
+
+
+ + + + + + + + + + + + + + + +
제목작성자작성일시
+
+ \ No newline at end of file diff --git a/src/main/resources/templates/translator/translatorDashBoard.html b/src/main/resources/templates/translator/translatorDashBoard.html new file mode 100644 index 00000000..e6ba0c27 --- /dev/null +++ b/src/main/resources/templates/translator/translatorDashBoard.html @@ -0,0 +1,31 @@ + + +
+
+
민간통역인현황
+
+
+
+
+ + + + + + + + + + + + + + + + + + + +
관서명언어성명위촉일연락처
+
+ \ No newline at end of file diff --git a/src/main/resources/templates/user/dashboardConfigTable.html b/src/main/resources/templates/user/dashboardConfigTable.html index a9970a8f..89fc9f3a 100644 --- a/src/main/resources/templates/user/dashboardConfigTable.html +++ b/src/main/resources/templates/user/dashboardConfigTable.html @@ -1,9 +1,11 @@ - + - + @@ -16,6 +18,9 @@ - +
+ + + + +
\ No newline at end of file diff --git a/src/main/resources/templates/user/myInfo.html b/src/main/resources/templates/user/myInfo.html index 25eb1259..2a431e89 100644 --- a/src/main/resources/templates/user/myInfo.html +++ b/src/main/resources/templates/user/myInfo.html @@ -2,6 +2,14 @@ + + + @@ -26,40 +34,50 @@
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
순번대분류중분류소분류url위치변경
-
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
순번대분류중분류소분류url위치변경
+ + + + +
@@ -140,5 +158,22 @@
+
\ No newline at end of file