첩보수집활동 계획수립 결재기능 작업중.

강석 최 2022-09-15 18:20:30 +09:00
parent 7448c93356
commit 6be5f8d335
19 changed files with 302 additions and 127 deletions

View File

@ -6,9 +6,9 @@ import lombok.Getter;
@AllArgsConstructor
@Getter
public enum Role {
ADMIN("ROLE_ADMIN"),
USER("ROLE_USER"),
SUB_ADMIN("ROLE_SUB_ADMIN"),
USER("ROLE_USER");
ADMIN("ROLE_ADMIN");
private String value;
}

View File

@ -63,16 +63,16 @@ public class SecurityConfig{
"/dashboard",
"/refreshSession",
"/fpiMgt/**"
).hasRole(Role.USER.name()) // USER, ADMIN 접근 허용
.antMatchers(
"/codeMgt/**",
"/menuMgt/**"
).hasRole(Role.ADMIN.name()) // ADMIN만 접근 허용
).hasRole(Role.USER.name()) // USER 접근 허용
.antMatchers(
"/authMgt/**",
"/userMgt/**",
"/organMgt/**"
).hasRole(Role.SUB_ADMIN.name()) // SUB_ADMIN만 접근 허용
).hasRole(Role.SUB_ADMIN.name()) // SUB_ADMIN 접근 허용
.antMatchers(
"/codeMgt/**",
"/menuMgt/**"
).hasRole(Role.ADMIN.name()) // ADMIN 접근 허용
.antMatchers("/login").permitAll() // 로그인 페이지는 권한 없이 접근 허용
.and() // 로그인 설정
.formLogin().loginPage("/login") // Custom login form 사용

View File

@ -1,8 +1,9 @@
package com.dbnt.faisp.fpiMgt;
import com.dbnt.faisp.authMgt.service.AuthMgtService;
import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanApprv;
import com.dbnt.faisp.fpiMgt.monthPlan.service.MonthPlanService;
import com.dbnt.faisp.fpiMgt.monthPlan.model.BoardPlan;
import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanBoard;
import com.dbnt.faisp.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
@ -23,7 +24,7 @@ public class FpiMgtController { // 외사경찰견문관리
private final AuthMgtService authMgtService;
@GetMapping("/monthPlanPage")
public ModelAndView monthPlanPage(@AuthenticationPrincipal UserInfo loginUser, BoardPlan boardPlan){
public ModelAndView monthPlanPage(@AuthenticationPrincipal UserInfo loginUser, PlanBoard planBoard){
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/monthPlan");
Map<String, Object> params = new HashMap<>();
params.put("userSeq", loginUser.getUserSeq());
@ -33,59 +34,60 @@ public class FpiMgtController { // 외사경찰견문관리
switch (accessAuth){
case "ACC001": // 조회
case "ACC002": // 작성 // 자신이 작성한 문서만 열람가능
boardPlan.setWrtUserSeq(loginUser.getUserSeq());
planBoard.setWrtUserSeq(loginUser.getUserSeq());
break;
case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능
boardPlan.setOrganCdList(loginUser.getOrganCdList());
planBoard.setOrganCdList(loginUser.getOrganCdList());
mav.addObject("mgtOrganList", loginUser.getOrganCdList());
break;
}
mav.addObject("accessAuth", accessAuth);
//결재권한 확인
//authMgtService.selectApprovalConfigList(params);
boardPlan.setQueryInfo();
mav.addObject("planList", monthPlanService.selectBoardPlanList(boardPlan));
boardPlan.setContentCnt(monthPlanService.selectBoardPlanListCnt(boardPlan));
boardPlan.setPaginationInfo();
mav.addObject("searchParams", boardPlan);
String apprvAuth = authMgtService.selectApprovalConfigList(params).get(0).getApprovalAuth();
mav.addObject("accessAuth", accessAuth);
mav.addObject("apprvAuth", apprvAuth);
planBoard.setQueryInfo();
mav.addObject("planList", monthPlanService.selectPlanBoardList(planBoard));
planBoard.setContentCnt(monthPlanService.selectPlanBoardListCnt(planBoard));
planBoard.setPaginationInfo();
mav.addObject("searchParams", planBoard);
return mav;
}
@GetMapping("/planEditModal")
public ModelAndView planEditModal(@AuthenticationPrincipal UserInfo loginUser, BoardPlan boardPlan){
public ModelAndView planEditModal(@AuthenticationPrincipal UserInfo loginUser, PlanBoard planBoard){
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/planEditModal");
if(boardPlan.getPlanKey()!=null){
boardPlan = monthPlanService.selectBoardPlan(boardPlan.getPlanKey());
if(planBoard.getPlanKey()!=null){
planBoard = monthPlanService.selectPlanBoard(planBoard.getPlanKey());
}else{
boardPlan.setWrtOrgan(loginUser.getOgCd());
boardPlan.setWrtUserSeq(loginUser.getUserSeq());
boardPlan.setWrtUserNm(loginUser.getUserNm());
boardPlan.setWrtDt(LocalDateTime.now());
planBoard.setWrtOrgan(loginUser.getOgCd());
planBoard.setWrtUserSeq(loginUser.getUserSeq());
planBoard.setWrtUserNm(loginUser.getUserNm());
planBoard.setWrtDt(LocalDateTime.now());
}
mav.addObject("plan", boardPlan);
mav.addObject("plan", planBoard);
return mav;
}
@GetMapping("/planViewModal")
public ModelAndView planViewModal(BoardPlan boardPlan){
public ModelAndView planViewModal(PlanBoard planBoard){
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/planViewModal");
boardPlan = monthPlanService.selectBoardPlan(boardPlan.getPlanKey());
mav.addObject("plan", boardPlan);
planBoard = monthPlanService.selectPlanBoard(planBoard.getPlanKey());
mav.addObject("plan", planBoard);
return mav;
}
@PostMapping("/savePlan")
public Integer savePlan(BoardPlan boardPlan,
public Integer savePlan(PlanBoard planBoard,
@RequestParam(value = "planInfos", required = false) List<String> planInfos,
@RequestParam(value = "detailPlanInfos", required = false)List<String> detailPlanInfos,
MultipartHttpServletRequest request,
@RequestParam(value = "fileSeq", required = false) List<Integer> deleteFileSeq){
boardPlan.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
return monthPlanService.saveBoardPlan(boardPlan, planInfos, detailPlanInfos, deleteFileSeq);
planBoard.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
return monthPlanService.savePlanBoard(planBoard, planInfos, detailPlanInfos, deleteFileSeq);
}
@GetMapping("/apprvStayPage")
public ModelAndView apprvStayPage(@AuthenticationPrincipal UserInfo loginUser, BoardPlan boardPlan){
public ModelAndView apprvStayPage(@AuthenticationPrincipal UserInfo loginUser, PlanBoard planBoard){
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/stayPlan");
Map<String, Object> params = new HashMap<>();
params.put("userSeq", loginUser.getUserSeq());
@ -94,38 +96,51 @@ public class FpiMgtController { // 외사경찰견문관리
String accessAuth = authMgtService.selectAccessConfigList(params).get(0).getAccessAuth();
switch (accessAuth){
case "ACC001": // 조회
case "ACC002": // 작성 // 자신 작성한 문서만 열람가능
boardPlan.setWrtUserSeq(loginUser.getUserSeq());
case "ACC002": // 작성 // 자신의 관서 내에서 작성한 문서만 열람가능
planBoard.setWrtOrgan(loginUser.getOgCd());
break;
case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능
boardPlan.setOrganCdList(loginUser.getOrganCdList());
planBoard.setOrganCdList(loginUser.getOrganCdList());
mav.addObject("mgtOrganList", loginUser.getOrganCdList());
break;
}
//결재권한 확인
String apprvAuth = authMgtService.selectApprovalConfigList(params).get(0).getApprovalAuth();
switch (apprvAuth){
case "ACC004": // 계장대행
case "ACC003": // 계장 // 결재대기 문서 조회
boardPlan.setPlanState("DST002");
break;
case "ACC002": // 부장대행
case "ACC001": // 부장 // 계장승인 문서 조회
boardPlan.setPlanState("DST004");
break;
if(apprvAuth==null) {
planBoard.setWrtUserSeq(loginUser.getUserSeq());
}else{
mav.addObject("userNm", loginUser.getUserNm());
switch (apprvAuth){
case "APC004": // 계장대행
case "APC003": // 계장 // 결재대기 문서 조회
planBoard.setPlanState("DST002");
break;
case "APC002": // 부장대행
case "APC001": // 부장 // 계장승인 문서 조회
planBoard.setPlanState("DST004");
break;
}
}
mav.addObject("accessAuth", accessAuth);
mav.addObject("apprvAuth", apprvAuth);
boardPlan.setQueryInfo();
mav.addObject("planList", monthPlanService.selectBoardPlanList(boardPlan));
boardPlan.setContentCnt(monthPlanService.selectBoardPlanListCnt(boardPlan));
boardPlan.setPaginationInfo();
mav.addObject("searchParams", boardPlan);
planBoard.setQueryInfo();
mav.addObject("planList", monthPlanService.selectPlanBoardList(planBoard));
planBoard.setContentCnt(monthPlanService.selectPlanBoardListCnt(planBoard));
planBoard.setPaginationInfo();
mav.addObject("searchParams", planBoard);
return mav;
}
@PostMapping("/planStateChange")
public Integer planStateChange(@AuthenticationPrincipal UserInfo loginUser, PlanApprv apprv){
apprv.setUserSeq(loginUser.getUserSeq());
apprv.setUserNm(loginUser.getUserNm());
apprv.setSaveDt(LocalDateTime.now());
return monthPlanService.planStateChange(apprv);
}
@GetMapping("/apprvCommitPage")
public ModelAndView apprvCommitPage(@AuthenticationPrincipal UserInfo loginUser, BoardPlan boardPlan){
public ModelAndView apprvCommitPage(@AuthenticationPrincipal UserInfo loginUser, PlanBoard planBoard){
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/commitPlan");
Map<String, Object> params = new HashMap<>();
params.put("userSeq", loginUser.getUserSeq());
@ -135,32 +150,37 @@ public class FpiMgtController { // 외사경찰견문관리
switch (accessAuth){
case "ACC001": // 조회
case "ACC002": // 작성 // 자신의 관서 내에서 작성한 문서만 열람가능
boardPlan.setWrtOrgan(loginUser.getOgCd());
planBoard.setWrtOrgan(loginUser.getOgCd());
break;
case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능
boardPlan.setOrganCdList(loginUser.getOrganCdList());
planBoard.setOrganCdList(loginUser.getOrganCdList());
mav.addObject("mgtOrganList", loginUser.getOrganCdList());
break;
}
//결재권한 확인
String apprvAuth = authMgtService.selectApprovalConfigList(params).get(0).getApprovalAuth();
switch (apprvAuth){
case "ACC004": // 계장대행
case "ACC003": // 계장 // 계장반려, 계장승인 문서 조회
boardPlan.setPlanState("DST002");
break;
case "ACC002": // 부장대행
case "ACC001": // 부장 // 부장반려, 부장승인 문서 조회
boardPlan.setPlanState("DST004");
break;
if(apprvAuth==null) {
planBoard.setWrtUserSeq(loginUser.getUserSeq());
planBoard.setUserType("normal");
}else{
switch (apprvAuth) {
case "APC004": // 계장대행
case "APC003": // 계장 // 계장반려, 계장승인 문서 조회
planBoard.setUserType("section");
break;
case "APC002": // 부장대행
case "APC001": // 부장 // 부장반려, 부장승인 문서 조회
planBoard.setUserType("head");
break;
}
}
mav.addObject("accessAuth", accessAuth);
mav.addObject("apprvAuth", apprvAuth);
boardPlan.setQueryInfo();
mav.addObject("planList", monthPlanService.selectBoardPlanList(boardPlan));
boardPlan.setContentCnt(monthPlanService.selectBoardPlanListCnt(boardPlan));
boardPlan.setPaginationInfo();
mav.addObject("searchParams", boardPlan);
planBoard.setQueryInfo();
mav.addObject("planList", monthPlanService.selectPlanBoardList(planBoard));
planBoard.setContentCnt(monthPlanService.selectPlanBoardListCnt(planBoard));
planBoard.setPaginationInfo();
mav.addObject("searchParams", planBoard);
return mav;
}
}

View File

@ -1,6 +1,6 @@
package com.dbnt.faisp.fpiMgt.monthPlan.mapper;
import com.dbnt.faisp.fpiMgt.monthPlan.model.BoardPlan;
import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanBoard;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -8,7 +8,7 @@ import java.util.List;
@Mapper
public interface MonthPlanMapper {
List<BoardPlan> selectBoardPlanList(BoardPlan boardPlan);
List<PlanBoard> selectPlanBoardList(PlanBoard planBoard);
Integer selectBoardPlanListCnt(BoardPlan boardPlan);
Integer selectPlanBoardListCnt(PlanBoard planBoard);
}

View File

@ -0,0 +1,45 @@
package com.dbnt.faisp.fpiMgt.monthPlan.model;
import lombok.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDateTime;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "plan_apprv")
@IdClass(PlanApprv.PlanApprvId.class)
public class PlanApprv {
@Id
@Column(name = "plan_key")
private Integer planKey;
@Id
@Column(name = "apprv_seq")
private Integer apprvSeq;
@Column(name = "state")
private String state;
@Column(name = "user_seq")
private Integer userSeq;
@Column(name = "user_nm")
private String userNm;
@Column(name = "etc")
private String etc;
@Column(name = "save_dt")
private LocalDateTime saveDt;
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class PlanApprvId implements Serializable {
private Integer planKey;
private Integer apprvSeq;
}
}

View File

@ -20,8 +20,8 @@ import java.util.List;
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "board_plan")
public class BoardPlan extends BaseModel {
@Table(name = "plan_board")
public class PlanBoard extends BaseModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "plan_key")
@ -31,18 +31,6 @@ public class BoardPlan extends BaseModel {
@Column(name = "plan_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate planDt;
@Column(name = "section_nm")
private String sectionNm;
@Column(name = "section_apprv")
private String sectionApprv;
@Column(name = "section_etc")
private String sectionEtc;
@Column(name = "head_nm")
private String headNm;
@Column(name = "head_apprv")
private String headApprv;
@Column(name = "head_etc")
private String headEtc;
@Column(name = "wrt_organ")
private String wrtOrgan;
@Column(name = "wrt_user_nm")
@ -55,6 +43,8 @@ public class BoardPlan extends BaseModel {
@Column(name = "wrt_user_seq")
private Integer wrtUserSeq;
@Transient
private String userType;
@Transient
private Integer fileCnt;
@Transient

View File

@ -1,9 +0,0 @@
package com.dbnt.faisp.fpiMgt.monthPlan.repository;
import com.dbnt.faisp.fpiMgt.monthPlan.model.BoardPlan;
import org.springframework.data.jpa.repository.JpaRepository;
public interface BoardPlanRepository extends JpaRepository<BoardPlan, Integer> {
}

View File

@ -0,0 +1,11 @@
package com.dbnt.faisp.fpiMgt.monthPlan.repository;
import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanApprv;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface PlanApprvRepository extends JpaRepository<PlanApprv, PlanApprv.PlanApprvId> {
Optional<PlanApprv> findTopByPlanKeyOrderByApprvSeqDesc(Integer planKey);
}

View File

@ -0,0 +1,9 @@
package com.dbnt.faisp.fpiMgt.monthPlan.repository;
import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanBoard;
import org.springframework.data.jpa.repository.JpaRepository;
public interface PlanBoardRepository extends JpaRepository<PlanBoard, Integer> {
}

View File

@ -4,19 +4,19 @@ package com.dbnt.faisp.fpiMgt.monthPlan.service;
import com.dbnt.faisp.config.BaseService;
import com.dbnt.faisp.config.FileInfo;
import com.dbnt.faisp.fpiMgt.monthPlan.mapper.MonthPlanMapper;
import com.dbnt.faisp.fpiMgt.monthPlan.model.BoardPlan;
import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanApprv;
import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanBoard;
import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanFile;
import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanMainInfo;
import com.dbnt.faisp.fpiMgt.monthPlan.repository.BoardPlanRepository;
import com.dbnt.faisp.fpiMgt.monthPlan.repository.PlanApprvRepository;
import com.dbnt.faisp.fpiMgt.monthPlan.repository.PlanBoardRepository;
import com.dbnt.faisp.fpiMgt.monthPlan.repository.PlanFileRepository;
import com.dbnt.faisp.fpiMgt.monthPlan.repository.PlanMainInfoRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.persistence.Transient;
import java.io.File;
import java.io.IOException;
import java.util.List;
@ -25,13 +25,14 @@ import java.util.UUID;
@Service
@RequiredArgsConstructor
public class MonthPlanService extends BaseService {
private final BoardPlanRepository boardPlanRepository;
private final PlanBoardRepository planBoardRepository;
private final PlanFileRepository planFileRepository;
private final PlanMainInfoRepository planMainInfoRepository;
private final PlanApprvRepository planApprvRepository;
private final MonthPlanMapper monthPlanMapper;
public BoardPlan selectBoardPlan(Integer planKey) {
BoardPlan savedPlan = boardPlanRepository.findById(planKey).orElse(null);
public PlanBoard selectPlanBoard(Integer planKey) {
PlanBoard savedPlan = planBoardRepository.findById(planKey).orElse(null);
if (savedPlan != null) {
savedPlan.setFileList(planFileRepository.findByPlanKey(planKey));
savedPlan.setMainInfoList(planMainInfoRepository.findByPlanKey(planKey));
@ -40,15 +41,15 @@ public class MonthPlanService extends BaseService {
}
@Transactional
public Integer saveBoardPlan(BoardPlan boardPlan, List<String> planInfos, List<String> detailPlanInfos, List<Integer> deleteFileSeq) {
Integer planKey = boardPlanRepository.save(boardPlan).getPlanKey();
public Integer savePlanBoard(PlanBoard planBoard, List<String> planInfos, List<String> detailPlanInfos, List<Integer> deleteFileSeq) {
Integer planKey = planBoardRepository.save(planBoard).getPlanKey();
Integer infoSeq = savePlanMainInfos(planKey,0, "S", planInfos);//요약 summery
savePlanMainInfos(planKey, infoSeq, "D", detailPlanInfos);//상세 detail
if(deleteFileSeq != null && deleteFileSeq.size()>0){
deletePlanFile(planKey, deleteFileSeq);
}
if(boardPlan.getMultipartFileList()!=null){
saveUploadFiles(planKey, boardPlan.getMultipartFileList());
if(planBoard.getMultipartFileList()!=null){
saveUploadFiles(planKey, planBoard.getMultipartFileList());
}
return planKey;
}
@ -65,12 +66,12 @@ public class MonthPlanService extends BaseService {
return planSeq;
}
public List<BoardPlan> selectBoardPlanList(BoardPlan boardPlan) {
return monthPlanMapper.selectBoardPlanList(boardPlan);
public List<PlanBoard> selectPlanBoardList(PlanBoard planBoard) {
return monthPlanMapper.selectPlanBoardList(planBoard);
}
public Integer selectBoardPlanListCnt(BoardPlan boardPlan) {
return monthPlanMapper.selectBoardPlanListCnt(boardPlan);
public Integer selectPlanBoardListCnt(PlanBoard planBoard) {
return monthPlanMapper.selectPlanBoardListCnt(planBoard);
}
private void saveUploadFiles(Integer planKey, List<MultipartFile> multipartFileList){
@ -125,4 +126,14 @@ public class MonthPlanService extends BaseService {
public FileInfo selectPlanFile(Integer parentKey, Integer fileSeq) {
return planFileRepository.findById(new PlanFile.PlanFileId(parentKey, fileSeq)).orElse(null);
}
@Transactional
public Integer planStateChange(PlanApprv apprv) {
PlanBoard savedPlan = planBoardRepository.findById(apprv.getPlanKey()).orElse(null);
savedPlan.setPlanState(apprv.getState());
PlanApprv lastApprv = planApprvRepository.findTopByPlanKeyOrderByApprvSeqDesc(apprv.getPlanKey()).orElse(null);
apprv.setApprvSeq(lastApprv==null?1:lastApprv.getApprvSeq()+1);
planApprvRepository.save(apprv);
return apprv.getApprvSeq();
}
}

View File

@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dbnt.faisp.fpiMgt.monthPlan.mapper.MonthPlanMapper">
<sql id="selectBoardPlanListWhere">
<sql id="selectPlanBoardListWhere">
<where>
<if test='wrtUserSeq != null and wrtUserSeq != ""'>
and a.wrt_user_seq = #{wrtUserSeq}
@ -43,32 +43,41 @@
#{organCd}
</foreach>
</if>
<if test='userType != null and userType != ""'>
<if test='userType == "normal"'>
and a.plan_state in ('DST003', 'DST004', 'DST005', 'DST006')
</if>
<if test='userType == "section"'>
and a.plan_state in ('DST003', 'DST004', 'DST005', 'DST006')
</if>
<if test='userType == "head"'>
and a.plan_state in ('DST003', 'DST005', 'DST006')
</if>
</if>
</where>
</sql>
<select id="selectBoardPlanList" resultType="BoardPlan" parameterType="BoardPlan">
<select id="selectPlanBoardList" resultType="PlanBoard" parameterType="PlanBoard">
select a.plan_key,
a.content_title,
a.plan_state,
a.plan_dt,
a.section_apprv,
a.head_apprv,
a.wrt_organ,
a.wrt_user_nm,
a.wrt_dt,
b.fileCnt
from board_plan a
from plan_board a
left outer join (select plan_key,
count(file_seq) as fileCnt
from plan_file
group by plan_key) b
on a.plan_key = b.plan_key
<include refid="selectBoardPlanListWhere"></include>
<include refid="selectPlanBoardListWhere"></include>
order by plan_key desc
limit #{rowCnt} offset #{firstIndex}
</select>
<select id="selectBoardPlanListCnt" resultType="int" parameterType="BoardPlan">
<select id="selectPlanBoardListCnt" resultType="int" parameterType="PlanBoard">
select count(*)
from board_plan a
<include refid="selectBoardPlanListWhere"></include>
from plan_board a
<include refid="selectPlanBoardListWhere"></include>
</select>
</mapper>

View File

@ -47,7 +47,7 @@ $(document).on('click', '#saveAuthBtn', function (){
const authList = {};
authList.accessConfigList = accessConfigList;
authList.approvalConfigList = approvalConfigList;
debugger
$.ajax({
type : 'POST',
url : "/authMgt/saveAuth",

View File

@ -7,6 +7,8 @@ $(document).on('click', '#apprvStayTab', function (){
$(document).on('click', '#apprvCommitTab', function (){
location.href = "/fpiMgt/apprvCommitPage";
})
function getViewModal(planKey){
$.ajax({
url: '/fpiMgt/planViewModal',

View File

@ -0,0 +1,33 @@
$(document).on('click', '.planTr', function (){
$(".trChkBox").prop("checked", false);
$(this).find(".trChkBox").prop("checked", true);
getViewModal(Number($(this).find(".planKey").val()));
})
$(document).on('click', '.apprvBtn', function (){
$("#apprvFormPlanKey").val($("#viewModalPlanKey").val());
$("#viewModalApprvValue").val($(this).attr("data-planstate"));
if(confirm($(this).val()+"하시겠습니까?")){
const formData = new FormData($("#apprvForm")[0]);
contentFade("in")
$.ajax({
type : 'POST',
data : formData,
url : "/fpiMgt/planStateChange",
processData: false,
contentType: false,
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function(result) {
alert("저장되었습니다")
contentFade("out");
},
error : function(xhr, status) {
alert("저장에 실패하였습니다.");
contentFade("out");
}
})
}
})

View File

@ -7,14 +7,14 @@ $(function(){
});
})
$(document).on('click', '#addPlanBtn', function (){
getEditModal(null)
})
$(document).on('click', '.planTr', function (){
$(".trChkBox").prop("checked", false);
$(this).find(".trChkBox").prop("checked", true);
getViewModal(Number($(this).find(".planKey").val()));
})
$(document).on('click', '#addPlanBtn', function (){
getEditModal(null)
})
$(document).on('click', '#editPlanBtn', function (){
$("#planViewModal").modal('hide');
getEditModal(Number($("#planViewBody").find("[name='planKey']").val()));

View File

@ -0,0 +1,33 @@
$(document).on('click', '.planTr', function (){
$(".trChkBox").prop("checked", false);
$(this).find(".trChkBox").prop("checked", true);
getViewModal(Number($(this).find(".planKey").val()));
})
$(document).on('click', '.apprvBtn', function (){
$("#apprvFormPlanKey").val($("#viewModalPlanKey").val());
$("#viewModalApprvValue").val($(this).attr("data-planstate"));
if(confirm($(this).val()+"하시겠습니까?")){
const formData = new FormData($("#apprvForm")[0]);
contentFade("in")
$.ajax({
type : 'POST',
data : formData,
url : "/fpiMgt/planStateChange",
processData: false,
contentType: false,
beforeSend: function (xhr){
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
},
success : function(result) {
alert("저장되었습니다")
contentFade("out");
},
error : function(xhr, status) {
alert("저장에 실패하였습니다.");
contentFade("out");
}
})
}
})

View File

@ -4,6 +4,7 @@
layout:decorate="~{layout/layout}">
<th:block layout:fragment="script">
<script type="text/javascript" th:src="@{/js/igActivities/fpiMgt/affairPlan.js}"></script>
<script type="text/javascript" th:src="@{/js/igActivities/fpiMgt/commitPlan.js}"></script>
</th:block>
<div layout:fragment="content">
<main class="pt-3">

View File

@ -4,6 +4,7 @@
layout:decorate="~{layout/layout}">
<th:block layout:fragment="script">
<script type="text/javascript" th:src="@{/js/igActivities/fpiMgt/affairPlan.js}"></script>
<script type="text/javascript" th:src="@{/js/igActivities/fpiMgt/stayPlan.js}"></script>
</th:block>
<div layout:fragment="content">
<main class="pt-3">
@ -169,11 +170,30 @@
<h5 class="modal-title" id="planViewModalLabel">월간 계획 열람</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body" id="planViewBody">
<div class="modal-body">
<div class="row">
<div class="col-12" id="planViewBody"></div>
<div class="col-12" th:if="${apprvAuth ne null}">
<form action="#" method="post" id="apprvForm">
<div class="row">
<div class="col-10">
<input type="hidden" name="planKey" id="apprvFormPlanKey">
<input type="hidden" name="state" id="viewModalApprvValue">
<input type="text" class="form-control form-control-sm" name="etc" placeholder="추가의견, 반려사유 기입">
<input type="text" class="d-none" id="submitPrevention">
</div>
<div class="col-auto">
<input type="button" class="btn btn-sm btn-success apprvBtn" th:data-planstate="${apprvAuth eq 'APC004'||apprvAuth eq 'APC003'?'DST004':'DST006'}" value="승인">
</div>
<div class="col-auto">
<input type="button" class="btn btn-sm btn-danger apprvBtn" th:data-planstate="${apprvAuth eq 'APC004'||apprvAuth eq 'APC003'?'DST003':'DST005'}" value="반려">
</div>
</div>
</form>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-warning" id="editPlanBtn" th:unless="${accessAuth eq 'ACC001'}">수정</button>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
</div>
</div>

View File

@ -33,7 +33,7 @@
<script type="text/javascript" th:src="@{/js/common.js}"></script>
<!-- 컨텐츠페이지의 스크립트 영역이 들어감 -->
<th:block layout:fragment="script"></th:block>
<th:block sec:authorize="isAuthenticated()">
<!--<th:block sec:authorize="isAuthenticated()">
<script type="text/javascript">
$(function (){
/*세션 체크*/
@ -43,7 +43,7 @@
}
})
</script>
</th:block>
</th:block>-->
</head>
<body class="d-flex flex-column h-100">
<header th:replace="fragments/header :: headerFragment"></header>