견문관리 tab 요청사항 반영.

master
강석 최 2023-02-08 18:19:52 +09:00
parent b01b021370
commit 32e0d1890a
12 changed files with 196 additions and 218 deletions

View File

@ -114,8 +114,8 @@ public class BaseController {
} }
public void setSession(@AuthenticationPrincipal UserInfo loginUser, HttpSession session){ public void setSession(@AuthenticationPrincipal UserInfo loginUser, HttpSession session){
loginUser.setDownOrganCdList(organConfigService.selectDownOrganListWhereUserOgCd(loginUser.getOgCd())); loginUser.setDownOrganCdList(organConfigService.selectDownOrganList(loginUser.getOgCd()));
loginUser.setUpOrganCdList(organConfigService.selectUpOrganListWhereUserOgCd(loginUser.getOgCd())); loginUser.setUpOrganCdList(organConfigService.selectUpOrganList(loginUser.getOgCd()));
session.setAttribute("menuList", menuMgtService.selectAccessMenuListWhereUserSeq(loginUser.getUserSeq())); session.setAttribute("menuList", menuMgtService.selectAccessMenuListWhereUserSeq(loginUser.getUserSeq()));
Map<String, List<CodeMgt>> codeMap = codeMgtService.getCommonCode(); Map<String, List<CodeMgt>> codeMap = codeMgtService.getCommonCode();
session.setAttribute("commonCode", codeMap); session.setAttribute("commonCode", codeMap);

View File

@ -14,6 +14,8 @@ public class BaseModel {
@Transient @Transient
private List<String> upOrganCdList; private List<String> upOrganCdList;
@Transient @Transient
private List<String> groupOrganCdList;
@Transient
private List<String> downOrganCdList; private List<String> downOrganCdList;
@Transient @Transient
private Integer pageIndex=1; //요청페이지 private Integer pageIndex=1; //요청페이지

View File

@ -7,6 +7,7 @@ import com.dbnt.faisp.main.fpiMgt.affair.model.AffairBoard;
import com.dbnt.faisp.main.fpiMgt.affair.model.AffairRating; import com.dbnt.faisp.main.fpiMgt.affair.model.AffairRating;
import com.dbnt.faisp.main.fpiMgt.affair.model.TypeStatistics; import com.dbnt.faisp.main.fpiMgt.affair.model.TypeStatistics;
import com.dbnt.faisp.main.fpiMgt.affair.service.AffairService; import com.dbnt.faisp.main.fpiMgt.affair.service.AffairService;
import com.dbnt.faisp.main.organMgt.service.OrganConfigService;
import com.dbnt.faisp.main.userInfo.model.UserInfo; import com.dbnt.faisp.main.userInfo.model.UserInfo;
import com.dbnt.faisp.util.Utils; import com.dbnt.faisp.util.Utils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -31,72 +32,30 @@ import java.util.zip.ZipOutputStream;
public class AffairController { // 첩보수집활동 > 외사경찰 견문관리 > 견문관리 public class AffairController { // 첩보수집활동 > 외사경찰 견문관리 > 견문관리
private final AffairService affairService; private final AffairService affairService;
private final AuthMgtService authMgtService; private final AuthMgtService authMgtService;
private final CodeMgtService codeMgtService; private final OrganConfigService organConfigService;
@GetMapping("/affairMgt") @GetMapping("/affairMgt/{tab}")
public ModelAndView affairMgtPage(@AuthenticationPrincipal UserInfo loginUser, AffairBoard affairBoard){ public ModelAndView affairMgtPage(@AuthenticationPrincipal UserInfo loginUser,
@PathVariable("tab") String tab, AffairBoard affairBoard){
ModelAndView mav; ModelAndView mav;
mav = new ModelAndView("igActivities/fpiMgt/affair/affairMgt"); mav = new ModelAndView("igActivities/fpiMgt/affair/affairMgt");
mav.addObject("page", "main");
mav.addObject("searchUrl", "/affair/affairMgt");
//메뉴권한 확인 //메뉴권한 확인
String accessAuth = authMgtService.selectAccessConfigList String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/affair/affairMgt?affairCategory="+affairBoard.getAffairCategory()).get(0).getAccessAuth(); (loginUser.getUserSeq(), "/affair/affairMgt/myReport?affairCategory="+affairBoard.getAffairCategory()).get(0).getAccessAuth();
switch (accessAuth){ //결재권한 확인
case "ACC001": // 조회 String apprvAuth = authMgtService.selectApprovalConfigList
case "ACC002": // 작성 (loginUser.getUserSeq(), "/affair/affairMgt/myReport?affairCategory="+affairBoard.getAffairCategory()).get(0).getApprovalAuth();
switch (tab){
case "myReport":
affairBoard.setWrtUserSeq(loginUser.getUserSeq()); affairBoard.setWrtUserSeq(loginUser.getUserSeq());
affairBoard.setRatingOrgan(loginUser.getOgCd()); affairBoard.setRatingOrgan(loginUser.getOgCd());
break; break;
case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능 case "stayReport":
affairBoard.setDownOrganCdList(loginUser.getDownOrganCdList());
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
break;
}
//결재권한 확인
String apprvAuth = authMgtService.selectApprovalConfigList
(loginUser.getUserSeq(), "/affair/affairMgt?affairCategory="+affairBoard.getAffairCategory()).get(0).getApprovalAuth();
mav.addObject("accessAuth", accessAuth);
mav.addObject("apprvAuth", apprvAuth);
affairBoard.setQueryInfo();
mav.addObject("affairList", affairService.selectAffairBoardList(affairBoard));
affairBoard.setContentCnt(affairService.selectAffairBoardListCnt(affairBoard));
affairBoard.setPaginationInfo();
mav.addObject("searchParams", affairBoard);
return mav;
}
@GetMapping("/stayPage")
public ModelAndView apprvStayPage(@AuthenticationPrincipal UserInfo loginUser, AffairBoard affairBoard){
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affair/affairMgt");
mav.addObject("page", "stay");
mav.addObject("searchUrl", "/affair/stayPage");
//메뉴권한 확인
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/affair/affairMgt?affairCategory="+affairBoard.getAffairCategory()).get(0).getAccessAuth();
switch (accessAuth){
case "ACC001": // 조회
case "ACC002": // 작성
affairBoard.setRatingOrgan(loginUser.getOgCd());
break;
case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능
affairBoard.setDownOrganCdList(loginUser.getDownOrganCdList());
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
break;
}
//결재권한 확인
String apprvAuth = authMgtService.selectApprovalConfigList
(loginUser.getUserSeq(), "/affair/affairMgt?affairCategory="+affairBoard.getAffairCategory()).get(0).getApprovalAuth();
if(apprvAuth==null) { if(apprvAuth==null) {
if(!accessAuth.equals("ACC003")){
affairBoard.setWrtUserSeq(loginUser.getUserSeq()); affairBoard.setWrtUserSeq(loginUser.getUserSeq());
affairBoard.setUserType("normalStayList"); affairBoard.setQueryType("normalStayList");
}else { }else {
affairBoard.setUserType("managerStayList"); affairBoard.setRatingOrgan(loginUser.getOgCd());
}
}else{
mav.addObject("userNm", loginUser.getUserNm());
switch (apprvAuth) { switch (apprvAuth) {
case "APC004": // 계장대행 case "APC004": // 계장대행
case "APC003": // 계장 // 결재대기 문서 조회 case "APC003": // 계장 // 결재대기 문서 조회
@ -108,58 +67,44 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
break; break;
} }
} }
mav.addObject("userOrgan", loginUser.getOgCd());
mav.addObject("accessAuth", accessAuth);
mav.addObject("apprvAuth", apprvAuth);
affairBoard.setQueryInfo();
mav.addObject("affairList", affairService.selectAffairBoardList(affairBoard));
affairBoard.setContentCnt(affairService.selectAffairBoardListCnt(affairBoard));
affairBoard.setPaginationInfo();
mav.addObject("searchParams", affairBoard);
mav.addObject("ratingCodeList", codeMgtService.selectCodeMgtList("AAR"));
return mav;
}
@GetMapping("/commitPage")
public ModelAndView apprvCommitPage(@AuthenticationPrincipal UserInfo loginUser, AffairBoard affairBoard){
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affair/affairMgt");
mav.addObject("page", "commit");
mav.addObject("searchUrl", "/affair/commitPage");
//메뉴권한 확인
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/affair/affairMgt?affairCategory="+affairBoard.getAffairCategory()).get(0).getAccessAuth();
switch (accessAuth){
case "ACC001": // 조회
case "ACC002": // 작성
affairBoard.setRatingOrgan(loginUser.getOgCd());
break; break;
case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능 case "commitReport":
affairBoard.setDownOrganCdList(loginUser.getDownOrganCdList());
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
break;
}
//결재권한 확인
String apprvAuth = authMgtService.selectApprovalConfigList
(loginUser.getUserSeq(), "/affair/affairMgt?affairCategory="+affairBoard.getAffairCategory()).get(0).getApprovalAuth();
if(apprvAuth==null) { if(apprvAuth==null) {
if(!accessAuth.equals("ACC003")){
affairBoard.setWrtUserSeq(loginUser.getUserSeq()); affairBoard.setWrtUserSeq(loginUser.getUserSeq());
affairBoard.setUserType("normalCommitList"); affairBoard.setQueryType("normalCommitList");
}else{
affairBoard.setUserType("managerCommitList");
}
}else{ }else{
affairBoard.setRatingOrgan(loginUser.getOgCd());
switch (apprvAuth) { switch (apprvAuth) {
case "APC004": // 계장대행 case "APC004": // 계장대행
case "APC003": // 계장 // 계장반려, 계장승인 문서 조회 case "APC003": // 계장 // 계장반려, 계장승인 문서 조회
affairBoard.setUserType("sectionCommitList"); affairBoard.setQueryType("sectionCommitList");
break; break;
case "APC002": // 부장대행 case "APC002": // 부장대행
case "APC001": // 부장 // 부장반려, 부장승인 문서 조회 case "APC001": // 부장 // 부장반려, 부장승인 문서 조회
affairBoard.setUserType("headCommitList"); affairBoard.setQueryType("headCommitList");
break; break;
} }
} }
break;
case "openReport":
affairBoard.setWrtOrgan(loginUser.getOgCd());
affairBoard.setDownOrganCdList(loginUser.getDownOrganCdList());
String parentOrgan = organConfigService.selectParentOrgan(loginUser.getOgCd());
if(!parentOrgan.equals("OG001")){
affairBoard.setGroupOrganCdList(organConfigService.selectChildOrgan(parentOrgan));
}
affairBoard.setQueryType("openReportList");
break;
case "allReport":
if(accessAuth.equals("ACC003")){
affairBoard.setDownOrganCdList(loginUser.getDownOrganCdList());
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
}
break;
}
mav.addObject("page", tab);
mav.addObject("searchUrl", "/affair/affairMgt/"+tab);
mav.addObject("accessAuth", accessAuth); mav.addObject("accessAuth", accessAuth);
mav.addObject("apprvAuth", apprvAuth); mav.addObject("apprvAuth", apprvAuth);
affairBoard.setQueryInfo(); affairBoard.setQueryInfo();
@ -193,9 +138,9 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
//메뉴권한 확인 //메뉴권한 확인
mav.addObject("userOrgan", loginUser.getOgCd()); mav.addObject("userOrgan", loginUser.getOgCd());
mav.addObject("accessAuth", authMgtService.selectAccessConfigList mav.addObject("accessAuth", authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/affair/affairMgt?affairCategory="+affairBoard.getAffairCategory()).get(0).getAccessAuth()); (loginUser.getUserSeq(), "/affair/affairMgt/myReport?affairCategory="+affairBoard.getAffairCategory()).get(0).getAccessAuth());
mav.addObject("apprvAuth", authMgtService.selectApprovalConfigList mav.addObject("apprvAuth", authMgtService.selectApprovalConfigList
(loginUser.getUserSeq(), "/affair/affairMgt?affairCategory="+affairBoard.getAffairCategory()).get(0).getApprovalAuth()); (loginUser.getUserSeq(), "/affair/affairMgt/myReport?affairCategory="+affairBoard.getAffairCategory()).get(0).getApprovalAuth());
return mav; return mav;
} }
@ -221,9 +166,9 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
mav.addObject("userOrgan", loginUser.getOgCd()); mav.addObject("userOrgan", loginUser.getOgCd());
//메뉴권한 확인 //메뉴권한 확인
mav.addObject("accessAuth", authMgtService.selectAccessConfigList mav.addObject("accessAuth", authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/affair/affairMgt?affairCategory="+affairBoard.getAffairCategory()).get(0).getAccessAuth()); (loginUser.getUserSeq(), "/affair/affairMgt/myReport?affairCategory="+affairBoard.getAffairCategory()).get(0).getAccessAuth());
String apprvAuth = authMgtService.selectApprovalConfigList String apprvAuth = authMgtService.selectApprovalConfigList
(loginUser.getUserSeq(), "/affair/affairMgt?affairCategory="+affairBoard.getAffairCategory()).get(0).getApprovalAuth(); (loginUser.getUserSeq(), "/affair/affairMgt/myReport?affairCategory="+affairBoard.getAffairCategory()).get(0).getApprovalAuth();
mav.addObject("apprvAuth", apprvAuth); mav.addObject("apprvAuth", apprvAuth);
return mav; return mav;
} }

View File

@ -78,7 +78,7 @@ public class AffairBoard extends BaseModel {
@Transient @Transient
private Integer fileCnt; private Integer fileCnt;
@Transient @Transient
private String userType; private String queryType;
@Transient @Transient
private List<AffairFile> fileList; private List<AffairFile> fileList;
@Transient @Transient

View File

@ -6,6 +6,6 @@ import java.util.List;
@Mapper @Mapper
public interface OrganConfigMapper { public interface OrganConfigMapper {
List<String> selectDownOrganListWhereUserOgCd(String ogCd); List<String> selectDownOrganList(String ogCd);
List<String> selectUpOrganListWhereUserOgCd(String ogCd); List<String> selectUpOrganList(String ogCd);
} }

View File

@ -4,8 +4,12 @@ import com.dbnt.faisp.main.organMgt.model.OrganConfig;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
public interface OrganConfigRepository extends JpaRepository<OrganConfig, String> { public interface OrganConfigRepository extends JpaRepository<OrganConfig, String> {
@Transactional @Transactional
void deleteByOrganType(String organType); void deleteByOrganType(String organType);
List<OrganConfig> findByParentOrgan(String ogCd);
} }

View File

@ -8,6 +8,7 @@ import com.dbnt.faisp.main.organMgt.repository.OrganConfigRepository;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -29,17 +30,26 @@ public class OrganConfigService {
return organConfigRepository.saveAll(organConfigList).size(); return organConfigRepository.saveAll(organConfigList).size();
} }
public List<String> selectDownOrganListWhereUserOgCd(String ogCd) { public List<String> selectDownOrganList(String ogCd) {
return organConfigMapper.selectDownOrganListWhereUserOgCd(ogCd); return organConfigMapper.selectDownOrganList(ogCd);
} }
public List<String> selectUpOrganListWhereUserOgCd(String ogCd) { public List<String> selectUpOrganList(String ogCd) {
List<String> upOrganList = organConfigMapper.selectUpOrganListWhereUserOgCd(ogCd); List<String> upOrganList = organConfigMapper.selectUpOrganList(ogCd);
upOrganList.add(ogCd); upOrganList.add(ogCd);
return upOrganList; return upOrganList;
} }
public String selectParentOrgan(String ogCd){ public String selectParentOrgan(String ogCd){
return organConfigRepository.findById(ogCd).orElse(new OrganConfig()).getParentOrgan(); return organConfigRepository.findById(ogCd).orElse(new OrganConfig()).getParentOrgan();
} }
public List<String> selectChildOrgan(String ogCd){
List<OrganConfig> organConfigList = organConfigRepository.findByParentOrgan(ogCd);
List<String> organList = new ArrayList<>();
organList.add(ogCd);
for(OrganConfig organ: organConfigList){
organList.add(organ.getOrganCd());
}
return organList;
}
public List<OrganConfig> selectOrganList() { public List<OrganConfig> selectOrganList() {
List<CodeMgt> codeList = codeMgtService.selectCodeMgtList("OG"); List<CodeMgt> codeList = codeMgtService.selectCodeMgtList("OG");

View File

@ -15,9 +15,11 @@
<if test='wrtUserNm != null and wrtUserNm != ""'> <if test='wrtUserNm != null and wrtUserNm != ""'>
and a.wrt_user_nm like '%'||#{wrtUserNm}||'%' and a.wrt_user_nm like '%'||#{wrtUserNm}||'%'
</if> </if>
<if test='queryType != "openReportList"'>
<if test='wrtOrgan != null and wrtOrgan != ""'> <if test='wrtOrgan != null and wrtOrgan != ""'>
and a.wrt_organ = #{wrtOrgan} and a.wrt_organ = #{wrtOrgan}
</if> </if>
</if>
<if test='affairType1 != null and affairType1 != ""'> <if test='affairType1 != null and affairType1 != ""'>
and a.affair_type1 = #{affairType1} and a.affair_type1 = #{affairType1}
</if> </if>
@ -50,30 +52,45 @@
and (c.organ_up != 'T' or c.organ_up is null) and (c.organ_up != 'T' or c.organ_up is null)
</otherwise> </otherwise>
</choose> </choose>
<if test='queryType != "openReportList"'>
<if test="downOrganCdList != null"> <if test="downOrganCdList != null">
and a.wrt_organ in and a.wrt_organ in
<foreach collection="downOrganCdList" item="organCd" separator="," open="(" close=")"> <foreach collection="downOrganCdList" item="organCd" separator="," open="(" close=")">
#{organCd} #{organCd}
</foreach> </foreach>
</if> </if>
<if test='userType != null and userType != ""'> </if>
<if test='userType == "normalStayList"'> <if test='queryType != null and queryType != ""'>
<if test='queryType == "normalStayList"'>
and c.affair_status in ('DST002', 'DST004') and c.affair_status in ('DST002', 'DST004')
</if> </if>
<if test='userType == "normalCommitList"'> <if test='queryType == "normalCommitList"'>
and c.affair_status in ('DST003', 'DST005', 'DST006') and c.affair_status in ('DST003', 'DST005', 'DST006')
</if> </if>
<if test='userType == "sectionCommitList"'> <if test='queryType == "sectionCommitList"'>
and c.affair_status in ('DST003', 'DST004', 'DST005', 'DST006') and c.affair_status in ('DST003', 'DST004', 'DST005', 'DST006')
</if> </if>
<if test='userType == "headCommitList"'> <if test='queryType == "headCommitList"'>
and c.affair_status in ('DST003', 'DST005', 'DST006') and c.affair_status in ('DST003', 'DST005', 'DST006')
</if> </if>
<if test='userType == "managerStayList"'> <if test='queryType == "openReportList"'>
and c.affair_status in ('DST002', 'DST004') and view_status &lt;> 'AVS001'
and (
(view_status = 'AVS002' and a.wrt_organ = #{wrtOrgan}) or
(view_status = 'AVS003' and a.wrt_organ in
<foreach collection="downOrganCdList" item="organCd" separator="," open="(" close=")">
#{organCd}
</foreach>
) or
<if test='groupOrganCdList!=null'>
(view_status = 'AVS005' and a.wrt_organ in
<foreach collection="groupOrganCdList" item="organCd" separator="," open="(" close=")">
#{organCd}
</foreach>
) or
</if> </if>
<if test='userType == "managerCommitList"'> (view_status = 'AVS004')
and c.affair_status in ('DST003', 'DST005', 'DST006') )
</if> </if>
</if> </if>
</where> </where>

View File

@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dbnt.faisp.main.organMgt.mapper.OrganConfigMapper"> <mapper namespace="com.dbnt.faisp.main.organMgt.mapper.OrganConfigMapper">
<select id="selectDownOrganListWhereUserOgCd" resultType="string" parameterType="string"> <select id="selectDownOrganList" resultType="string" parameterType="string">
with recursive organ_list ( with recursive organ_list (
organ_cd organ_cd
) as( ) as(
@ -20,7 +20,7 @@
) )
select * from organ_list select * from organ_list
</select> </select>
<select id="selectUpOrganListWhereUserOgCd" resultType="string" parameterType="string"> <select id="selectUpOrganList" resultType="string" parameterType="string">
with recursive organ_list ( with recursive organ_list (
parent_organ parent_organ
) as( ) as(

View File

@ -1,4 +1,3 @@
$(function(){ $(function(){
if(location.search.includes("refDocKey")){ if(location.search.includes("refDocKey")){
const params = location.search.split('&'); const params = location.search.split('&');
@ -15,15 +14,10 @@ $(function(){
autoclose: true autoclose: true
}); });
}) })
$(document).on('click', '#affairTab', function (){ $(document).on('click', '.reportTypeTab', function (){
location.href = "/affair/affairMgt?affairCategory="+$("#affairCategory").val(); location.href = "/affair/affairMgt/"+$(this).attr("data-reporttype")+"?affairCategory="+$("#affairCategory").val();
})
$(document).on('click', '#stayTab', function (){
location.href = "/affair/stayPage?affairCategory="+$("#affairCategory").val();
})
$(document).on('click', '#commitTab', function (){
location.href = "/affair/commitPage?affairCategory="+$("#affairCategory").val();
}) })
$(document).on('click', '.affairTr', function (event){ $(document).on('click', '.affairTr', function (event){
const target = event.target; const target = event.target;
if(!(target.className === "apprvTd" || $(target).parents(".apprvTd").length>0)){ if(!(target.className === "apprvTd" || $(target).parents(".apprvTd").length>0)){
@ -35,13 +29,16 @@ $(document).on('click', '.affairTr', function (event){
getAffairViewModal(Number($(this).find(".affairKey").val())); getAffairViewModal(Number($(this).find(".affairKey").val()));
} }
}) })
$(document).on('click', '#addAffairBtn', function (){ $(document).on('click', '#addAffairBtn', function (){
getAffairEditModal(null) getAffairEditModal(null)
}) })
$(document).on('click', '#editAffairBtn', function (){ $(document).on('click', '#editAffairBtn', function (){
$("#affairViewModal").modal('hide'); $("#affairViewModal").modal('hide');
getAffairEditModal(Number($("#affairViewBody").find("[name='affairKey']").val())); getAffairEditModal(Number($("#affairViewBody").find("[name='affairKey']").val()));
}) })
$(document).on('click', '#modifyRatingViewBtn', function (){ $(document).on('click', '#modifyRatingViewBtn', function (){
const modifyRatingDiv = $("#modifyRatingDiv") const modifyRatingDiv = $("#modifyRatingDiv")
const ratingViewDiv = $("#ratingViewDiv") const ratingViewDiv = $("#ratingViewDiv")
@ -55,6 +52,7 @@ $(document).on('click', '#modifyRatingViewBtn', function (){
ratingViewDiv.show(); ratingViewDiv.show();
} }
}) })
$(document).on('change', '.sectionApprv', function (){ $(document).on('change', '.sectionApprv', function (){
if(this.value === "" || this.value==="DST003"){ if(this.value === "" || this.value==="DST003"){
$(this).parents(".affairRatingRow").find("input, select").attr("disabled", "disabled") $(this).parents(".affairRatingRow").find("input, select").attr("disabled", "disabled")
@ -63,6 +61,7 @@ $(document).on('change', '.sectionApprv', function (){
$(this).parents(".affairRatingRow").find("input, select").removeAttr("disabled") $(this).parents(".affairRatingRow").find("input, select").removeAttr("disabled")
} }
}) })
$(document).on('change', '.headApprv', function (){ $(document).on('change', '.headApprv', function (){
if(this.value === "" || this.value==="DST005"){ if(this.value === "" || this.value==="DST005"){
$(this).parents(".row").find("input, select").attr("disabled", "disabled") $(this).parents(".row").find("input, select").attr("disabled", "disabled")
@ -71,6 +70,7 @@ $(document).on('change', '.headApprv', function (){
$(this).parents(".row").find("input, select").removeAttr("disabled") $(this).parents(".row").find("input, select").removeAttr("disabled")
} }
}) })
$(document).on('change', '.organUp', function (){ $(document).on('change', '.organUp', function (){
if(!this.checked){ if(!this.checked){
if(confirm("상위관서 결재정보가 삭제됩니다. 계속하시겠습니까?")){ if(confirm("상위관서 결재정보가 삭제됩니다. 계속하시겠습니까?")){
@ -99,6 +99,7 @@ $(document).on('change', '.organUp', function (){
} }
} }
}) })
$(document).on('click', '#modifyRatingBtn', function (){ $(document).on('click', '#modifyRatingBtn', function (){
modifyAffairRating(); modifyAffairRating();
}) })
@ -118,9 +119,11 @@ $(document).on('change', '#autoDeleteSelector', function (){
$(document).on('click', '#saveAffairBtn', function (){ $(document).on('click', '#saveAffairBtn', function (){
saveAffair($(this).attr("data-status")) saveAffair($(this).attr("data-status"))
}) })
$(document).on('click', '#saveTempBtn', function (){ $(document).on('click', '#saveTempBtn', function (){
saveAffair('DST001') saveAffair('DST001')
}) })
$(document).on('click', '.apprvBtn', function (){ $(document).on('click', '.apprvBtn', function (){
const affairState = $(this).attr("data-affairstate"); const affairState = $(this).attr("data-affairstate");
let flag = true; let flag = true;

View File

@ -24,13 +24,19 @@
<div class="card-body"> <div class="card-body">
<ul class="nav nav-tabs" id="userTab" role="tablist"> <ul class="nav nav-tabs" id="userTab" role="tablist">
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link" th:classappend="${page eq 'main'?' active':''}" id="affairTab" data-bs-toggle="tab" type="button" role="tab">전체 목록</button> <button class="nav-link reportTypeTab" th:classappend="${page eq 'myReport'?' active':''}" data-reporttype="myReport" id="myTab" data-bs-toggle="tab" type="button" role="tab">내 보고서</button>
</li>
<li class="nav-item" role="presentation" th:if="${apprvAuth ne null or accessAuth eq 'ACC003'}">
<button class="nav-link reportTypeTab" th:classappend="${page eq 'stayReport'?' active':''}" data-reporttype="stayReport" id="stayTab" data-bs-toggle="tab" type="button" role="tab">결재대기목록</button>
</li> </li>
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link" th:classappend="${page eq 'stay'?' active':''}" id="stayTab" data-bs-toggle="tab" type="button" role="tab">결재대기목록</button> <button class="nav-link reportTypeTab" th:classappend="${page eq 'commitReport'?' active':''}" data-reporttype="commitReport" id="commitTab" data-bs-toggle="tab" type="button" role="tab">결재처리목록</button>
</li> </li>
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link" th:classappend="${page eq 'commit'?' active':''}" id="commitTab" data-bs-toggle="tab" type="button" role="tab">결재처리목록</button> <button class="nav-link reportTypeTab" th:classappend="${page eq 'openReport'?' active':''}" data-reporttype="openReport" id="openTab" data-bs-toggle="tab" type="button" role="tab">공개 보고서</button>
</li>
<li class="nav-item" role="presentation" th:if="${accessAuth eq 'ACC003'}">
<button class="nav-link reportTypeTab" th:classappend="${page eq 'allReport'?' active':''}" data-reporttype="allReport" id="allTab" data-bs-toggle="tab" type="button" role="tab">전체(관리자)</button>
</li> </li>
</ul> </ul>
<div class="tab-content bg-white border border-top-0 p-2"> <div class="tab-content bg-white border border-top-0 p-2">
@ -50,13 +56,13 @@
<div class="col-11"> <div class="col-11">
<div class="row justify-content-end"> <div class="row justify-content-end">
<div class="col-11"> <div class="col-11">
<div class="row justify-content-end pb-1" th:if="${accessAuth eq 'ACC003'}"> <div class="row justify-content-end pb-1" th:if="${accessAuth eq 'ACC003' and page eq 'allReport'}">
<div class="col-2"> <div class="col-2">
<select class="form-select form-select-sm" name="wrtOrgan"> <select class="form-select form-select-sm" name="wrtOrgan">
<option value="">관서 선택</option> <option value="">관서 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('OG')}"> <th:block th:each="code:${session.commonCode.get('OG')}">
<th:block th:if="${#lists.contains(mgtOrganList, commonCode.itemCd)}"> <th:block th:if="${#lists.contains(mgtOrganList, code.itemCd)}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.wrtOrgan}"></option> <option th:if="${code.useChk eq 'T'}" th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq searchParams.wrtOrgan}"></option>
</th:block> </th:block>
</th:block> </th:block>
</select> </select>
@ -69,32 +75,32 @@
<div class="col-2"> <div class="col-2">
<select class="form-select form-select-sm" name="affairType1"> <select class="form-select form-select-sm" name="affairType1">
<option value="">분야1 선택</option> <option value="">분야1 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('DC01')}"> <th:block th:each="code:${session.commonCode.get('DC01')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.affairType1}"></option> <option th:if="${code.useChk eq 'T'}" th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq searchParams.affairType1}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
<div class="col-2"> <div class="col-2">
<select class="form-select form-select-sm" name="affairType2"> <select class="form-select form-select-sm" name="affairType2">
<option value="">분야2 선택</option> <option value="">분야2 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('DC02')}"> <th:block th:each="code:${session.commonCode.get('DC02')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.affairType2}"></option> <option th:if="${code.useChk eq 'T'}" th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq searchParams.affairType2}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
<div class="col-2"> <div class="col-2">
<select class="form-select form-select-sm" name="affairType3"> <select class="form-select form-select-sm" name="affairType3">
<option value="">분야3 선택</option> <option value="">분야3 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('DC03')}"> <th:block th:each="code:${session.commonCode.get('DC03')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.affairType3}"></option> <option th:if="${code.useChk eq 'T'}" th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq searchParams.affairType3}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
<div class="col-2"> <div class="col-2">
<select class="form-select form-select-sm" name="affairType4"> <select class="form-select form-select-sm" name="affairType4">
<option value="">분야4 선택</option> <option value="">분야4 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('DC04')}"> <th:block th:each="code:${session.commonCode.get('DC04')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.affairType4}"></option> <option th:if="${code.useChk eq 'T'}" th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq searchParams.affairType4}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
@ -106,8 +112,8 @@
<div class="col-2"> <div class="col-2">
<select class="form-select form-select-sm" name="affairStatus"> <select class="form-select form-select-sm" name="affairStatus">
<option value="">상태 선택</option> <option value="">상태 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('DST')}"> <th:block th:each="code:${session.commonCode.get('DST')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.affairStatus}"></option> <option th:if="${code.useChk eq 'T'}" th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq searchParams.affairStatus}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
@ -146,13 +152,8 @@
<th>작성일시</th> <th>작성일시</th>
<th>첨부파일</th> <th>첨부파일</th>
<th>상태</th> <th>상태</th>
<th:block th:if="${page eq 'stay' and apprvAuth ne null}">
<th>평가</th>
</th:block>
<th:block th:if="${page eq 'commit'}">
<th>평가</th> <th>평가</th>
<th>상보</th> <th>상보</th>
</th:block>
</tr> </tr>
</thead> </thead>
<tbody class="table-group-divider"> <tbody class="table-group-divider">
@ -161,47 +162,55 @@
<td><input type="checkbox" class="trChkBox"></td> <td><input type="checkbox" class="trChkBox"></td>
<td th:text="|해양경찰청외사-${affair.affairKey}|"></td> <td th:text="|해양경찰청외사-${affair.affairKey}|"></td>
<td> <td>
<th:block th:each="commonCode:${session.commonCode.get('DC01')}"> <th:block th:each="code:${session.commonCode.get('DC01')}">
<th:block th:if="${affair.affairType1 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block> <th:block th:if="${affair.affairType1 eq code.itemCd}" th:text="${code.itemValue}"></th:block>
</th:block> </th:block>
</td> </td>
<td> <td>
<th:block th:each="commonCode:${session.commonCode.get('DC02')}"> <th:block th:each="code:${session.commonCode.get('DC02')}">
<th:block th:if="${affair.affairType2 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block> <th:block th:if="${affair.affairType2 eq code.itemCd}" th:text="${code.itemValue}"></th:block>
</th:block> </th:block>
</td> </td>
<td> <td>
<th:block th:each="commonCode:${session.commonCode.get('DC03')}"> <th:block th:each="code:${session.commonCode.get('DC03')}">
<th:block th:if="${affair.affairType3 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block> <th:block th:if="${affair.affairType3 eq code.itemCd}" th:text="${code.itemValue}"></th:block>
</th:block> </th:block>
</td> </td>
<td> <td>
<th:block th:each="commonCode:${session.commonCode.get('DC04')}"> <th:block th:each="code:${session.commonCode.get('DC04')}">
<th:block th:if="${affair.affairType4 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block> <th:block th:if="${affair.affairType4 eq code.itemCd}" th:text="${code.itemValue}"></th:block>
</th:block> </th:block>
</td> </td>
<td th:text="${affair.title}"></td> <td th:text="${affair.title}"></td>
<td> <td>
<th:block th:each="commonCode:${session.commonCode.get('OG')}"> <th:block th:each="code:${session.commonCode.get('OG')}">
<th:block th:if="${affair.wrtOrgan eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block> <th:block th:if="${affair.wrtOrgan eq code.itemCd}" th:text="${code.itemValue}"></th:block>
</th:block> </th:block>
</td> </td>
<td> <td>
<th:block th:each="commonCode:${session.commonCode.get('OFC')}"> <th:block th:each="code:${session.commonCode.get('OFC')}">
<th:block th:if="${affair.wrtPart eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block> <th:block th:if="${affair.wrtPart eq code.itemCd}" th:text="${code.itemValue}"></th:block>
</th:block> </th:block>
</td> </td>
<td th:text="${affair.wrtUserNm}"></td> <td th:text="${affair.wrtUserNm}"></td>
<td th:text="${#temporals.format(affair.wrtDt, 'yyyy-MM-dd HH:mm')}"></td> <td th:text="${#temporals.format(affair.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
<td th:text="${affair.fileCnt eq null?'파일 없음':#strings.concat(affair.fileCnt,' 건')}"></td> <td th:text="${affair.fileCnt eq null?'파일 없음':#strings.concat(affair.fileCnt,' 건')}"></td>
<td> <td>
<th:block th:each="commonCode:${session.commonCode.get('DST')}"> <th:block th:each="code:${session.commonCode.get('DST')}">
<th:block th:if="${affair.affairStatus eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block> <th:block th:if="${affair.affairStatus eq code.itemCd}" th:text="${code.itemValue}"></th:block>
</th:block> </th:block>
</td> </td>
<th:block th:if="${page eq 'stay'}"> <th:block th:unless="${page eq 'stayReport'}">
<td>
<th:block th:each="code:${session.commonCode.get('AAR')}">
<th:block th:if="${code.itemCd eq affair.affairRate}" th:text="${code.itemValue}"></th:block>
</th:block>
</td>
<td th:text="${affair.organUp eq 'T'?'O':'X'}"></td>
</th:block>
<th:block th:if="${page eq 'stayReport'}">
<th:block th:if="${apprvAuth eq 'APC004' or apprvAuth eq 'APC003'}"> <th:block th:if="${apprvAuth eq 'APC004' or apprvAuth eq 'APC003'}">
<td class="apprvTd"> <td colspan="2" class="apprvTd">
<input type="hidden" class="affairKey" th:value="${affair.affairKey}"> <input type="hidden" class="affairKey" th:value="${affair.affairKey}">
<input type="radio" class="apprvChkbox" th:id="|apprvChkbox${affair.affairKey}DST004|" th:name="|apprvChkbox${affair.affairKey}|" value="DST004"> <input type="radio" class="apprvChkbox" th:id="|apprvChkbox${affair.affairKey}DST004|" th:name="|apprvChkbox${affair.affairKey}|" value="DST004">
<label th:for="|apprvChkbox${affair.affairKey}DST004|">결재</label> <label th:for="|apprvChkbox${affair.affairKey}DST004|">결재</label>
@ -212,7 +221,7 @@
</td> </td>
</th:block> </th:block>
<th:block th:if="${apprvAuth eq 'APC002' or apprvAuth eq 'APC001'}"> <th:block th:if="${apprvAuth eq 'APC002' or apprvAuth eq 'APC001'}">
<td class="apprvTd"> <td colspan="2" class="apprvTd">
<input type="hidden" class="affairKey" th:value="${affair.affairKey}"> <input type="hidden" class="affairKey" th:value="${affair.affairKey}">
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-auto"> <div class="col-auto">
@ -226,8 +235,8 @@
<div class="col-auto"> <div class="col-auto">
<select class="form-select form-select-sm ratingSelector" disabled> <select class="form-select form-select-sm ratingSelector" disabled>
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="ratingCode:${ratingCodeList}"> <th:block th:each="code:${session.commonCode.get('AAR')}">
<option th:value="${ratingCode.itemCd}" th:text="${ratingCode.itemValue}"></option> <option th:if="${code.useChk eq 'T'}" th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
@ -239,18 +248,6 @@
</td> </td>
</th:block> </th:block>
</th:block> </th:block>
<th:block th:if="${page eq 'commit'}">
<th:block th:if="${affair.affairStatus eq 'DST006'}">
<th:block th:each="ratingCode:${session.commonCode.get('AAR')}">
<td th:if="${ratingCode.itemCd eq affair.affairRate}" th:text="${ratingCode.itemValue}"></td>
</th:block>
<td th:text="${affair.organUp eq 'T'?'O':'X'}"></td>
</th:block>
<th:block th:unless="${affair.affairStatus eq 'DST006'}">
<td></td>
<td></td>
</th:block>
</th:block>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -287,7 +284,7 @@
</div> </div>
<div class="col-auto"> <div class="col-auto">
<input type="button" class="btn btn-success" value="등록" id="addAffairBtn" th:unless="${accessAuth eq 'ACC001'}"> <input type="button" class="btn btn-success" value="등록" id="addAffairBtn" th:unless="${accessAuth eq 'ACC001'}">
<input type="button" class="btn btn-warning" value="결재" id="tableApprvBtn" th:if="${page eq 'stay' and apprvAuth ne null}" th:data-apprvauth="${apprvAuth}"> <input type="button" class="btn btn-warning" value="결재" id="tableApprvBtn" th:if="${page eq 'stayReport' and apprvAuth ne null}" th:data-apprvauth="${apprvAuth}">
</div> </div>
</div> </div>
</div> </div>

View File

@ -311,7 +311,7 @@
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">기타의견</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">기타의견</label>
<div class="col-6"> <div class="col-6">
<input type="text" class="form-control form-control-sm sectionEtc" th:value="${rate.sectionEtc}"> <input type="text" class="form-control form-control-sm sectionEtc" th:value="${rate.sectionEtc}" th:disabled="${#strings.isEmpty(rate.sectionApprv)}">
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -333,7 +333,7 @@
<option value="DST005" th:selected="${rate.headApprv eq 'DST005'}">반려</option> <option value="DST005" th:selected="${rate.headApprv eq 'DST005'}">반려</option>
<option value="DST006" th:selected="${rate.headApprv eq 'DST006'}">승인</option> <option value="DST006" th:selected="${rate.headApprv eq 'DST006'}">승인</option>
</select> </select>
<select class="form-select form-select-sm affairRate w-30"> <select class="form-select form-select-sm affairRate w-30" th:disabled="${#strings.isEmpty(rate.headApprv)}">
<option value="">평가</option> <option value="">평가</option>
<th:block th:each="code:${session.commonCode.get('AAR')}"> <th:block th:each="code:${session.commonCode.get('AAR')}">
<option th:if="${code.useChk eq 'T'}" th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq rate.affairRate}"></option> <option th:if="${code.useChk eq 'T'}" th:value="${code.itemCd}" th:text="${code.itemValue}" th:selected="${code.itemCd eq rate.affairRate}"></option>
@ -342,14 +342,14 @@
<div class="w-40"> <div class="w-40">
<th:block th:unless="${rate.ratingOrgan eq 'OG001'}"> <th:block th:unless="${rate.ratingOrgan eq 'OG001'}">
<label for="organUp" class="form-check-label px-1 pt-1">상보여부</label> <label for="organUp" class="form-check-label px-1 pt-1">상보여부</label>
<input type="checkbox" class="organUp" value="T" th:checked="${rate.organUp eq 'T'}"> <input type="checkbox" class="organUp" value="T" th:checked="${rate.organUp eq 'T'}" th:disabled="${#strings.isEmpty(rate.headApprv)}">
</th:block> </th:block>
</div> </div>
</div> </div>
</div> </div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">기타의견</label> <label class="col-sm-1 col-form-label col-form-label-sm text-center">기타의견</label>
<div class="col-6"> <div class="col-6">
<input type="text" class="form-control form-control-sm headEtc" th:value="${rate.headEtc}"> <input type="text" class="form-control form-control-sm headEtc" th:value="${rate.headEtc}" th:disabled="${#strings.isEmpty(rate.headApprv)}">
</div> </div>
</div> </div>
</div> </div>