견문관리 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){
loginUser.setDownOrganCdList(organConfigService.selectDownOrganListWhereUserOgCd(loginUser.getOgCd()));
loginUser.setUpOrganCdList(organConfigService.selectUpOrganListWhereUserOgCd(loginUser.getOgCd()));
loginUser.setDownOrganCdList(organConfigService.selectDownOrganList(loginUser.getOgCd()));
loginUser.setUpOrganCdList(organConfigService.selectUpOrganList(loginUser.getOgCd()));
session.setAttribute("menuList", menuMgtService.selectAccessMenuListWhereUserSeq(loginUser.getUserSeq()));
Map<String, List<CodeMgt>> codeMap = codeMgtService.getCommonCode();
session.setAttribute("commonCode", codeMap);

View File

@ -14,6 +14,8 @@ public class BaseModel {
@Transient
private List<String> upOrganCdList;
@Transient
private List<String> groupOrganCdList;
@Transient
private List<String> downOrganCdList;
@Transient
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.TypeStatistics;
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.util.Utils;
import lombok.RequiredArgsConstructor;
@ -31,72 +32,30 @@ import java.util.zip.ZipOutputStream;
public class AffairController { // 첩보수집활동 > 외사경찰 견문관리 > 견문관리
private final AffairService affairService;
private final AuthMgtService authMgtService;
private final CodeMgtService codeMgtService;
private final OrganConfigService organConfigService;
@GetMapping("/affairMgt")
public ModelAndView affairMgtPage(@AuthenticationPrincipal UserInfo loginUser, AffairBoard affairBoard){
@GetMapping("/affairMgt/{tab}")
public ModelAndView affairMgtPage(@AuthenticationPrincipal UserInfo loginUser,
@PathVariable("tab") String tab, AffairBoard affairBoard){
ModelAndView mav;
mav = new ModelAndView("igActivities/fpiMgt/affair/affairMgt");
mav.addObject("page", "main");
mav.addObject("searchUrl", "/affair/affairMgt");
//메뉴권한 확인
String accessAuth = authMgtService.selectAccessConfigList
(loginUser.getUserSeq(), "/affair/affairMgt?affairCategory="+affairBoard.getAffairCategory()).get(0).getAccessAuth();
switch (accessAuth){
case "ACC001": // 조회
case "ACC002": // 작성
(loginUser.getUserSeq(), "/affair/affairMgt/myReport?affairCategory="+affairBoard.getAffairCategory()).get(0).getAccessAuth();
//결재권한 확인
String apprvAuth = authMgtService.selectApprovalConfigList
(loginUser.getUserSeq(), "/affair/affairMgt/myReport?affairCategory="+affairBoard.getAffairCategory()).get(0).getApprovalAuth();
switch (tab){
case "myReport":
affairBoard.setWrtUserSeq(loginUser.getUserSeq());
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();
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();
case "stayReport":
if(apprvAuth==null) {
if(!accessAuth.equals("ACC003")){
affairBoard.setWrtUserSeq(loginUser.getUserSeq());
affairBoard.setUserType("normalStayList");
affairBoard.setQueryType("normalStayList");
}else {
affairBoard.setUserType("managerStayList");
}
}else{
mav.addObject("userNm", loginUser.getUserNm());
affairBoard.setRatingOrgan(loginUser.getOgCd());
switch (apprvAuth) {
case "APC004": // 계장대행
case "APC003": // 계장 // 결재대기 문서 조회
@ -108,58 +67,44 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
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;
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();
case "commitReport":
if(apprvAuth==null) {
if(!accessAuth.equals("ACC003")){
affairBoard.setWrtUserSeq(loginUser.getUserSeq());
affairBoard.setUserType("normalCommitList");
}else{
affairBoard.setUserType("managerCommitList");
}
affairBoard.setQueryType("normalCommitList");
}else{
affairBoard.setRatingOrgan(loginUser.getOgCd());
switch (apprvAuth) {
case "APC004": // 계장대행
case "APC003": // 계장 // 계장반려, 계장승인 문서 조회
affairBoard.setUserType("sectionCommitList");
affairBoard.setQueryType("sectionCommitList");
break;
case "APC002": // 부장대행
case "APC001": // 부장 // 부장반려, 부장승인 문서 조회
affairBoard.setUserType("headCommitList");
affairBoard.setQueryType("headCommitList");
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("apprvAuth", apprvAuth);
affairBoard.setQueryInfo();
@ -193,9 +138,9 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
//메뉴권한 확인
mav.addObject("userOrgan", loginUser.getOgCd());
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
(loginUser.getUserSeq(), "/affair/affairMgt?affairCategory="+affairBoard.getAffairCategory()).get(0).getApprovalAuth());
(loginUser.getUserSeq(), "/affair/affairMgt/myReport?affairCategory="+affairBoard.getAffairCategory()).get(0).getApprovalAuth());
return mav;
}
@ -221,9 +166,9 @@ public class AffairController { // 첩보수집활동 > 외사경찰 견문관
mav.addObject("userOrgan", loginUser.getOgCd());
//메뉴권한 확인
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
(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);
return mav;
}

View File

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

View File

@ -6,6 +6,6 @@ import java.util.List;
@Mapper
public interface OrganConfigMapper {
List<String> selectDownOrganListWhereUserOgCd(String ogCd);
List<String> selectUpOrganListWhereUserOgCd(String ogCd);
List<String> selectDownOrganList(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.transaction.annotation.Transactional;
import java.util.List;
public interface OrganConfigRepository extends JpaRepository<OrganConfig, String> {
@Transactional
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 org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
@ -29,17 +30,26 @@ public class OrganConfigService {
return organConfigRepository.saveAll(organConfigList).size();
}
public List<String> selectDownOrganListWhereUserOgCd(String ogCd) {
return organConfigMapper.selectDownOrganListWhereUserOgCd(ogCd);
public List<String> selectDownOrganList(String ogCd) {
return organConfigMapper.selectDownOrganList(ogCd);
}
public List<String> selectUpOrganListWhereUserOgCd(String ogCd) {
List<String> upOrganList = organConfigMapper.selectUpOrganListWhereUserOgCd(ogCd);
public List<String> selectUpOrganList(String ogCd) {
List<String> upOrganList = organConfigMapper.selectUpOrganList(ogCd);
upOrganList.add(ogCd);
return upOrganList;
}
public String selectParentOrgan(String ogCd){
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() {
List<CodeMgt> codeList = codeMgtService.selectCodeMgtList("OG");

View File

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

View File

@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<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 (
organ_cd
) as(
@ -20,7 +20,7 @@
)
select * from organ_list
</select>
<select id="selectUpOrganListWhereUserOgCd" resultType="string" parameterType="string">
<select id="selectUpOrganList" resultType="string" parameterType="string">
with recursive organ_list (
parent_organ
) as(

View File

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

View File

@ -24,13 +24,19 @@
<div class="card-body">
<ul class="nav nav-tabs" id="userTab" role="tablist">
<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 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 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>
</ul>
<div class="tab-content bg-white border border-top-0 p-2">
@ -50,13 +56,13 @@
<div class="col-11">
<div class="row justify-content-end">
<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">
<select class="form-select form-select-sm" name="wrtOrgan">
<option value="">관서 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<th:block th:if="${#lists.contains(mgtOrganList, commonCode.itemCd)}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.wrtOrgan}"></option>
<th:block th:each="code:${session.commonCode.get('OG')}">
<th:block th:if="${#lists.contains(mgtOrganList, code.itemCd)}">
<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>
</select>
@ -69,32 +75,32 @@
<div class="col-2">
<select class="form-select form-select-sm" name="affairType1">
<option value="">분야1 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('DC01')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.affairType1}"></option>
<th:block th:each="code:${session.commonCode.get('DC01')}">
<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>
</select>
</div>
<div class="col-2">
<select class="form-select form-select-sm" name="affairType2">
<option value="">분야2 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('DC02')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.affairType2}"></option>
<th:block th:each="code:${session.commonCode.get('DC02')}">
<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>
</select>
</div>
<div class="col-2">
<select class="form-select form-select-sm" name="affairType3">
<option value="">분야3 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('DC03')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.affairType3}"></option>
<th:block th:each="code:${session.commonCode.get('DC03')}">
<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>
</select>
</div>
<div class="col-2">
<select class="form-select form-select-sm" name="affairType4">
<option value="">분야4 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('DC04')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.affairType4}"></option>
<th:block th:each="code:${session.commonCode.get('DC04')}">
<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>
</select>
</div>
@ -106,8 +112,8 @@
<div class="col-2">
<select class="form-select form-select-sm" name="affairStatus">
<option value="">상태 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('DST')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq searchParams.affairStatus}"></option>
<th:block th:each="code:${session.commonCode.get('DST')}">
<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>
</select>
</div>
@ -146,13 +152,8 @@
<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:block>
</tr>
</thead>
<tbody class="table-group-divider">
@ -161,47 +162,55 @@
<td><input type="checkbox" class="trChkBox"></td>
<td th:text="|해양경찰청외사-${affair.affairKey}|"></td>
<td>
<th:block th:each="commonCode:${session.commonCode.get('DC01')}">
<th:block th:if="${affair.affairType1 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
<th:block th:each="code:${session.commonCode.get('DC01')}">
<th:block th:if="${affair.affairType1 eq code.itemCd}" th:text="${code.itemValue}"></th:block>
</th:block>
</td>
<td>
<th:block th:each="commonCode:${session.commonCode.get('DC02')}">
<th:block th:if="${affair.affairType2 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
<th:block th:each="code:${session.commonCode.get('DC02')}">
<th:block th:if="${affair.affairType2 eq code.itemCd}" th:text="${code.itemValue}"></th:block>
</th:block>
</td>
<td>
<th:block th:each="commonCode:${session.commonCode.get('DC03')}">
<th:block th:if="${affair.affairType3 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
<th:block th:each="code:${session.commonCode.get('DC03')}">
<th:block th:if="${affair.affairType3 eq code.itemCd}" th:text="${code.itemValue}"></th:block>
</th:block>
</td>
<td>
<th:block th:each="commonCode:${session.commonCode.get('DC04')}">
<th:block th:if="${affair.affairType4 eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
<th:block th:each="code:${session.commonCode.get('DC04')}">
<th:block th:if="${affair.affairType4 eq code.itemCd}" th:text="${code.itemValue}"></th:block>
</th:block>
</td>
<td th:text="${affair.title}"></td>
<td>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<th:block th:if="${affair.wrtOrgan eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
<th:block th:each="code:${session.commonCode.get('OG')}">
<th:block th:if="${affair.wrtOrgan eq code.itemCd}" th:text="${code.itemValue}"></th:block>
</th:block>
</td>
<td>
<th:block th:each="commonCode:${session.commonCode.get('OFC')}">
<th:block th:if="${affair.wrtPart eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
<th:block th:each="code:${session.commonCode.get('OFC')}">
<th:block th:if="${affair.wrtPart eq code.itemCd}" th:text="${code.itemValue}"></th:block>
</th:block>
</td>
<td th:text="${affair.wrtUserNm}"></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:block th:each="commonCode:${session.commonCode.get('DST')}">
<th:block th:if="${affair.affairStatus eq commonCode.itemCd}" th:text="${commonCode.itemValue}"></th:block>
<th:block th:each="code:${session.commonCode.get('DST')}">
<th:block th:if="${affair.affairStatus eq code.itemCd}" th:text="${code.itemValue}"></th:block>
</th:block>
</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'}">
<td class="apprvTd">
<td colspan="2" class="apprvTd">
<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">
<label th:for="|apprvChkbox${affair.affairKey}DST004|">결재</label>
@ -212,7 +221,7 @@
</td>
</th:block>
<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}">
<div class="row justify-content-center">
<div class="col-auto">
@ -226,8 +235,8 @@
<div class="col-auto">
<select class="form-select form-select-sm ratingSelector" disabled>
<option value="">선택</option>
<th:block th:each="ratingCode:${ratingCodeList}">
<option th:value="${ratingCode.itemCd}" th:text="${ratingCode.itemValue}"></option>
<th:block th:each="code:${session.commonCode.get('AAR')}">
<option th:if="${code.useChk eq 'T'}" th:value="${code.itemCd}" th:text="${code.itemValue}"></option>
</th:block>
</select>
</div>
@ -239,18 +248,6 @@
</td>
</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>
</tbody>
</table>
@ -287,7 +284,7 @@
</div>
<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-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>

View File

@ -311,7 +311,7 @@
</div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">기타의견</label>
<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 class="row">
@ -333,7 +333,7 @@
<option value="DST005" th:selected="${rate.headApprv eq 'DST005'}">반려</option>
<option value="DST006" th:selected="${rate.headApprv eq 'DST006'}">승인</option>
</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>
<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>
@ -342,14 +342,14 @@
<div class="w-40">
<th:block th:unless="${rate.ratingOrgan eq 'OG001'}">
<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>
</div>
</div>
</div>
<label class="col-sm-1 col-form-label col-form-label-sm text-center">기타의견</label>
<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>