첩보수집활동 계획수립 결재기능 작업중.
parent
7448c93356
commit
6be5f8d335
|
|
@ -6,9 +6,9 @@ import lombok.Getter;
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
public enum Role {
|
public enum Role {
|
||||||
ADMIN("ROLE_ADMIN"),
|
USER("ROLE_USER"),
|
||||||
SUB_ADMIN("ROLE_SUB_ADMIN"),
|
SUB_ADMIN("ROLE_SUB_ADMIN"),
|
||||||
USER("ROLE_USER");
|
ADMIN("ROLE_ADMIN");
|
||||||
|
|
||||||
private String value;
|
private String value;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -63,16 +63,16 @@ public class SecurityConfig{
|
||||||
"/dashboard",
|
"/dashboard",
|
||||||
"/refreshSession",
|
"/refreshSession",
|
||||||
"/fpiMgt/**"
|
"/fpiMgt/**"
|
||||||
).hasRole(Role.USER.name()) // USER, ADMIN 접근 허용
|
).hasRole(Role.USER.name()) // USER 접근 허용
|
||||||
.antMatchers(
|
|
||||||
"/codeMgt/**",
|
|
||||||
"/menuMgt/**"
|
|
||||||
).hasRole(Role.ADMIN.name()) // ADMIN만 접근 허용
|
|
||||||
.antMatchers(
|
.antMatchers(
|
||||||
"/authMgt/**",
|
"/authMgt/**",
|
||||||
"/userMgt/**",
|
"/userMgt/**",
|
||||||
"/organMgt/**"
|
"/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() // 로그인 페이지는 권한 없이 접근 허용
|
.antMatchers("/login").permitAll() // 로그인 페이지는 권한 없이 접근 허용
|
||||||
.and() // 로그인 설정
|
.and() // 로그인 설정
|
||||||
.formLogin().loginPage("/login") // Custom login form 사용
|
.formLogin().loginPage("/login") // Custom login form 사용
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
package com.dbnt.faisp.fpiMgt;
|
package com.dbnt.faisp.fpiMgt;
|
||||||
|
|
||||||
import com.dbnt.faisp.authMgt.service.AuthMgtService;
|
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.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 com.dbnt.faisp.userInfo.model.UserInfo;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||||
|
|
@ -23,7 +24,7 @@ public class FpiMgtController { // 외사경찰견문관리
|
||||||
private final AuthMgtService authMgtService;
|
private final AuthMgtService authMgtService;
|
||||||
|
|
||||||
@GetMapping("/monthPlanPage")
|
@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");
|
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/monthPlan");
|
||||||
Map<String, Object> params = new HashMap<>();
|
Map<String, Object> params = new HashMap<>();
|
||||||
params.put("userSeq", loginUser.getUserSeq());
|
params.put("userSeq", loginUser.getUserSeq());
|
||||||
|
|
@ -33,59 +34,60 @@ public class FpiMgtController { // 외사경찰견문관리
|
||||||
switch (accessAuth){
|
switch (accessAuth){
|
||||||
case "ACC001": // 조회
|
case "ACC001": // 조회
|
||||||
case "ACC002": // 작성 // 자신이 작성한 문서만 열람가능
|
case "ACC002": // 작성 // 자신이 작성한 문서만 열람가능
|
||||||
boardPlan.setWrtUserSeq(loginUser.getUserSeq());
|
planBoard.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
break;
|
break;
|
||||||
case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능
|
case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능
|
||||||
boardPlan.setOrganCdList(loginUser.getOrganCdList());
|
planBoard.setOrganCdList(loginUser.getOrganCdList());
|
||||||
mav.addObject("mgtOrganList", loginUser.getOrganCdList());
|
mav.addObject("mgtOrganList", loginUser.getOrganCdList());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
mav.addObject("accessAuth", accessAuth);
|
|
||||||
//결재권한 확인
|
//결재권한 확인
|
||||||
//authMgtService.selectApprovalConfigList(params);
|
String apprvAuth = authMgtService.selectApprovalConfigList(params).get(0).getApprovalAuth();
|
||||||
boardPlan.setQueryInfo();
|
mav.addObject("accessAuth", accessAuth);
|
||||||
mav.addObject("planList", monthPlanService.selectBoardPlanList(boardPlan));
|
mav.addObject("apprvAuth", apprvAuth);
|
||||||
boardPlan.setContentCnt(monthPlanService.selectBoardPlanListCnt(boardPlan));
|
planBoard.setQueryInfo();
|
||||||
boardPlan.setPaginationInfo();
|
mav.addObject("planList", monthPlanService.selectPlanBoardList(planBoard));
|
||||||
mav.addObject("searchParams", boardPlan);
|
planBoard.setContentCnt(monthPlanService.selectPlanBoardListCnt(planBoard));
|
||||||
|
planBoard.setPaginationInfo();
|
||||||
|
mav.addObject("searchParams", planBoard);
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/planEditModal")
|
@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");
|
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/planEditModal");
|
||||||
if(boardPlan.getPlanKey()!=null){
|
if(planBoard.getPlanKey()!=null){
|
||||||
boardPlan = monthPlanService.selectBoardPlan(boardPlan.getPlanKey());
|
planBoard = monthPlanService.selectPlanBoard(planBoard.getPlanKey());
|
||||||
}else{
|
}else{
|
||||||
boardPlan.setWrtOrgan(loginUser.getOgCd());
|
planBoard.setWrtOrgan(loginUser.getOgCd());
|
||||||
boardPlan.setWrtUserSeq(loginUser.getUserSeq());
|
planBoard.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
boardPlan.setWrtUserNm(loginUser.getUserNm());
|
planBoard.setWrtUserNm(loginUser.getUserNm());
|
||||||
boardPlan.setWrtDt(LocalDateTime.now());
|
planBoard.setWrtDt(LocalDateTime.now());
|
||||||
}
|
}
|
||||||
mav.addObject("plan", boardPlan);
|
mav.addObject("plan", planBoard);
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/planViewModal")
|
@GetMapping("/planViewModal")
|
||||||
public ModelAndView planViewModal(BoardPlan boardPlan){
|
public ModelAndView planViewModal(PlanBoard planBoard){
|
||||||
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/planViewModal");
|
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/planViewModal");
|
||||||
boardPlan = monthPlanService.selectBoardPlan(boardPlan.getPlanKey());
|
planBoard = monthPlanService.selectPlanBoard(planBoard.getPlanKey());
|
||||||
mav.addObject("plan", boardPlan);
|
mav.addObject("plan", planBoard);
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/savePlan")
|
@PostMapping("/savePlan")
|
||||||
public Integer savePlan(BoardPlan boardPlan,
|
public Integer savePlan(PlanBoard planBoard,
|
||||||
@RequestParam(value = "planInfos", required = false) List<String> planInfos,
|
@RequestParam(value = "planInfos", required = false) List<String> planInfos,
|
||||||
@RequestParam(value = "detailPlanInfos", required = false)List<String> detailPlanInfos,
|
@RequestParam(value = "detailPlanInfos", required = false)List<String> detailPlanInfos,
|
||||||
MultipartHttpServletRequest request,
|
MultipartHttpServletRequest request,
|
||||||
@RequestParam(value = "fileSeq", required = false) List<Integer> deleteFileSeq){
|
@RequestParam(value = "fileSeq", required = false) List<Integer> deleteFileSeq){
|
||||||
boardPlan.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
|
planBoard.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
|
||||||
return monthPlanService.saveBoardPlan(boardPlan, planInfos, detailPlanInfos, deleteFileSeq);
|
return monthPlanService.savePlanBoard(planBoard, planInfos, detailPlanInfos, deleteFileSeq);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/apprvStayPage")
|
@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");
|
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/stayPlan");
|
||||||
Map<String, Object> params = new HashMap<>();
|
Map<String, Object> params = new HashMap<>();
|
||||||
params.put("userSeq", loginUser.getUserSeq());
|
params.put("userSeq", loginUser.getUserSeq());
|
||||||
|
|
@ -94,38 +96,51 @@ public class FpiMgtController { // 외사경찰견문관리
|
||||||
String accessAuth = authMgtService.selectAccessConfigList(params).get(0).getAccessAuth();
|
String accessAuth = authMgtService.selectAccessConfigList(params).get(0).getAccessAuth();
|
||||||
switch (accessAuth){
|
switch (accessAuth){
|
||||||
case "ACC001": // 조회
|
case "ACC001": // 조회
|
||||||
case "ACC002": // 작성 // 자신이 작성한 문서만 열람가능
|
case "ACC002": // 작성 // 자신의 관서 내에서 작성한 문서만 열람가능
|
||||||
boardPlan.setWrtUserSeq(loginUser.getUserSeq());
|
planBoard.setWrtOrgan(loginUser.getOgCd());
|
||||||
break;
|
break;
|
||||||
case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능
|
case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능
|
||||||
boardPlan.setOrganCdList(loginUser.getOrganCdList());
|
planBoard.setOrganCdList(loginUser.getOrganCdList());
|
||||||
mav.addObject("mgtOrganList", loginUser.getOrganCdList());
|
mav.addObject("mgtOrganList", loginUser.getOrganCdList());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//결재권한 확인
|
//결재권한 확인
|
||||||
String apprvAuth = authMgtService.selectApprovalConfigList(params).get(0).getApprovalAuth();
|
String apprvAuth = authMgtService.selectApprovalConfigList(params).get(0).getApprovalAuth();
|
||||||
switch (apprvAuth){
|
if(apprvAuth==null) {
|
||||||
case "ACC004": // 계장대행
|
planBoard.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
case "ACC003": // 계장 // 결재대기 문서 조회
|
}else{
|
||||||
boardPlan.setPlanState("DST002");
|
mav.addObject("userNm", loginUser.getUserNm());
|
||||||
break;
|
switch (apprvAuth){
|
||||||
case "ACC002": // 부장대행
|
case "APC004": // 계장대행
|
||||||
case "ACC001": // 부장 // 계장승인 문서 조회
|
case "APC003": // 계장 // 결재대기 문서 조회
|
||||||
boardPlan.setPlanState("DST004");
|
planBoard.setPlanState("DST002");
|
||||||
break;
|
break;
|
||||||
|
case "APC002": // 부장대행
|
||||||
|
case "APC001": // 부장 // 계장승인 문서 조회
|
||||||
|
planBoard.setPlanState("DST004");
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
mav.addObject("apprvAuth", apprvAuth);
|
mav.addObject("apprvAuth", apprvAuth);
|
||||||
boardPlan.setQueryInfo();
|
planBoard.setQueryInfo();
|
||||||
mav.addObject("planList", monthPlanService.selectBoardPlanList(boardPlan));
|
mav.addObject("planList", monthPlanService.selectPlanBoardList(planBoard));
|
||||||
boardPlan.setContentCnt(monthPlanService.selectBoardPlanListCnt(boardPlan));
|
planBoard.setContentCnt(monthPlanService.selectPlanBoardListCnt(planBoard));
|
||||||
boardPlan.setPaginationInfo();
|
planBoard.setPaginationInfo();
|
||||||
mav.addObject("searchParams", boardPlan);
|
mav.addObject("searchParams", planBoard);
|
||||||
return mav;
|
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")
|
@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");
|
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/affairPlan/commitPlan");
|
||||||
Map<String, Object> params = new HashMap<>();
|
Map<String, Object> params = new HashMap<>();
|
||||||
params.put("userSeq", loginUser.getUserSeq());
|
params.put("userSeq", loginUser.getUserSeq());
|
||||||
|
|
@ -135,32 +150,37 @@ public class FpiMgtController { // 외사경찰견문관리
|
||||||
switch (accessAuth){
|
switch (accessAuth){
|
||||||
case "ACC001": // 조회
|
case "ACC001": // 조회
|
||||||
case "ACC002": // 작성 // 자신의 관서 내에서 작성한 문서만 열람가능
|
case "ACC002": // 작성 // 자신의 관서 내에서 작성한 문서만 열람가능
|
||||||
boardPlan.setWrtOrgan(loginUser.getOgCd());
|
planBoard.setWrtOrgan(loginUser.getOgCd());
|
||||||
break;
|
break;
|
||||||
case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능
|
case "ACC003": // 관리 // 자신 외 하위 기관에서 작성한 문서 열람가능
|
||||||
boardPlan.setOrganCdList(loginUser.getOrganCdList());
|
planBoard.setOrganCdList(loginUser.getOrganCdList());
|
||||||
mav.addObject("mgtOrganList", loginUser.getOrganCdList());
|
mav.addObject("mgtOrganList", loginUser.getOrganCdList());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//결재권한 확인
|
//결재권한 확인
|
||||||
String apprvAuth = authMgtService.selectApprovalConfigList(params).get(0).getApprovalAuth();
|
String apprvAuth = authMgtService.selectApprovalConfigList(params).get(0).getApprovalAuth();
|
||||||
switch (apprvAuth){
|
if(apprvAuth==null) {
|
||||||
case "ACC004": // 계장대행
|
planBoard.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
case "ACC003": // 계장 // 계장반려, 계장승인 문서 조회
|
planBoard.setUserType("normal");
|
||||||
boardPlan.setPlanState("DST002");
|
}else{
|
||||||
break;
|
switch (apprvAuth) {
|
||||||
case "ACC002": // 부장대행
|
case "APC004": // 계장대행
|
||||||
case "ACC001": // 부장 // 부장반려, 부장승인 문서 조회
|
case "APC003": // 계장 // 계장반려, 계장승인 문서 조회
|
||||||
boardPlan.setPlanState("DST004");
|
planBoard.setUserType("section");
|
||||||
break;
|
break;
|
||||||
|
case "APC002": // 부장대행
|
||||||
|
case "APC001": // 부장 // 부장반려, 부장승인 문서 조회
|
||||||
|
planBoard.setUserType("head");
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
mav.addObject("apprvAuth", apprvAuth);
|
mav.addObject("apprvAuth", apprvAuth);
|
||||||
boardPlan.setQueryInfo();
|
planBoard.setQueryInfo();
|
||||||
mav.addObject("planList", monthPlanService.selectBoardPlanList(boardPlan));
|
mav.addObject("planList", monthPlanService.selectPlanBoardList(planBoard));
|
||||||
boardPlan.setContentCnt(monthPlanService.selectBoardPlanListCnt(boardPlan));
|
planBoard.setContentCnt(monthPlanService.selectPlanBoardListCnt(planBoard));
|
||||||
boardPlan.setPaginationInfo();
|
planBoard.setPaginationInfo();
|
||||||
mav.addObject("searchParams", boardPlan);
|
mav.addObject("searchParams", planBoard);
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package com.dbnt.faisp.fpiMgt.monthPlan.mapper;
|
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 org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -8,7 +8,7 @@ import java.util.List;
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface MonthPlanMapper {
|
public interface MonthPlanMapper {
|
||||||
|
|
||||||
List<BoardPlan> selectBoardPlanList(BoardPlan boardPlan);
|
List<PlanBoard> selectPlanBoardList(PlanBoard planBoard);
|
||||||
|
|
||||||
Integer selectBoardPlanListCnt(BoardPlan boardPlan);
|
Integer selectPlanBoardListCnt(PlanBoard planBoard);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -20,8 +20,8 @@ import java.util.List;
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@DynamicInsert
|
@DynamicInsert
|
||||||
@DynamicUpdate
|
@DynamicUpdate
|
||||||
@Table(name = "board_plan")
|
@Table(name = "plan_board")
|
||||||
public class BoardPlan extends BaseModel {
|
public class PlanBoard extends BaseModel {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
@Column(name = "plan_key")
|
@Column(name = "plan_key")
|
||||||
|
|
@ -31,18 +31,6 @@ public class BoardPlan extends BaseModel {
|
||||||
@Column(name = "plan_dt")
|
@Column(name = "plan_dt")
|
||||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
private LocalDate planDt;
|
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")
|
@Column(name = "wrt_organ")
|
||||||
private String wrtOrgan;
|
private String wrtOrgan;
|
||||||
@Column(name = "wrt_user_nm")
|
@Column(name = "wrt_user_nm")
|
||||||
|
|
@ -55,6 +43,8 @@ public class BoardPlan extends BaseModel {
|
||||||
@Column(name = "wrt_user_seq")
|
@Column(name = "wrt_user_seq")
|
||||||
private Integer wrtUserSeq;
|
private Integer wrtUserSeq;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private String userType;
|
||||||
@Transient
|
@Transient
|
||||||
private Integer fileCnt;
|
private Integer fileCnt;
|
||||||
@Transient
|
@Transient
|
||||||
|
|
@ -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> {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
@ -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> {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -4,19 +4,19 @@ package com.dbnt.faisp.fpiMgt.monthPlan.service;
|
||||||
import com.dbnt.faisp.config.BaseService;
|
import com.dbnt.faisp.config.BaseService;
|
||||||
import com.dbnt.faisp.config.FileInfo;
|
import com.dbnt.faisp.config.FileInfo;
|
||||||
import com.dbnt.faisp.fpiMgt.monthPlan.mapper.MonthPlanMapper;
|
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.PlanFile;
|
||||||
import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanMainInfo;
|
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.PlanFileRepository;
|
||||||
import com.dbnt.faisp.fpiMgt.monthPlan.repository.PlanMainInfoRepository;
|
import com.dbnt.faisp.fpiMgt.monthPlan.repository.PlanMainInfoRepository;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.persistence.Transient;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -25,13 +25,14 @@ import java.util.UUID;
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class MonthPlanService extends BaseService {
|
public class MonthPlanService extends BaseService {
|
||||||
private final BoardPlanRepository boardPlanRepository;
|
private final PlanBoardRepository planBoardRepository;
|
||||||
private final PlanFileRepository planFileRepository;
|
private final PlanFileRepository planFileRepository;
|
||||||
private final PlanMainInfoRepository planMainInfoRepository;
|
private final PlanMainInfoRepository planMainInfoRepository;
|
||||||
|
private final PlanApprvRepository planApprvRepository;
|
||||||
private final MonthPlanMapper monthPlanMapper;
|
private final MonthPlanMapper monthPlanMapper;
|
||||||
|
|
||||||
public BoardPlan selectBoardPlan(Integer planKey) {
|
public PlanBoard selectPlanBoard(Integer planKey) {
|
||||||
BoardPlan savedPlan = boardPlanRepository.findById(planKey).orElse(null);
|
PlanBoard savedPlan = planBoardRepository.findById(planKey).orElse(null);
|
||||||
if (savedPlan != null) {
|
if (savedPlan != null) {
|
||||||
savedPlan.setFileList(planFileRepository.findByPlanKey(planKey));
|
savedPlan.setFileList(planFileRepository.findByPlanKey(planKey));
|
||||||
savedPlan.setMainInfoList(planMainInfoRepository.findByPlanKey(planKey));
|
savedPlan.setMainInfoList(planMainInfoRepository.findByPlanKey(planKey));
|
||||||
|
|
@ -40,15 +41,15 @@ public class MonthPlanService extends BaseService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public Integer saveBoardPlan(BoardPlan boardPlan, List<String> planInfos, List<String> detailPlanInfos, List<Integer> deleteFileSeq) {
|
public Integer savePlanBoard(PlanBoard planBoard, List<String> planInfos, List<String> detailPlanInfos, List<Integer> deleteFileSeq) {
|
||||||
Integer planKey = boardPlanRepository.save(boardPlan).getPlanKey();
|
Integer planKey = planBoardRepository.save(planBoard).getPlanKey();
|
||||||
Integer infoSeq = savePlanMainInfos(planKey,0, "S", planInfos);//요약 summery
|
Integer infoSeq = savePlanMainInfos(planKey,0, "S", planInfos);//요약 summery
|
||||||
savePlanMainInfos(planKey, infoSeq, "D", detailPlanInfos);//상세 detail
|
savePlanMainInfos(planKey, infoSeq, "D", detailPlanInfos);//상세 detail
|
||||||
if(deleteFileSeq != null && deleteFileSeq.size()>0){
|
if(deleteFileSeq != null && deleteFileSeq.size()>0){
|
||||||
deletePlanFile(planKey, deleteFileSeq);
|
deletePlanFile(planKey, deleteFileSeq);
|
||||||
}
|
}
|
||||||
if(boardPlan.getMultipartFileList()!=null){
|
if(planBoard.getMultipartFileList()!=null){
|
||||||
saveUploadFiles(planKey, boardPlan.getMultipartFileList());
|
saveUploadFiles(planKey, planBoard.getMultipartFileList());
|
||||||
}
|
}
|
||||||
return planKey;
|
return planKey;
|
||||||
}
|
}
|
||||||
|
|
@ -65,12 +66,12 @@ public class MonthPlanService extends BaseService {
|
||||||
return planSeq;
|
return planSeq;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<BoardPlan> selectBoardPlanList(BoardPlan boardPlan) {
|
public List<PlanBoard> selectPlanBoardList(PlanBoard planBoard) {
|
||||||
return monthPlanMapper.selectBoardPlanList(boardPlan);
|
return monthPlanMapper.selectPlanBoardList(planBoard);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer selectBoardPlanListCnt(BoardPlan boardPlan) {
|
public Integer selectPlanBoardListCnt(PlanBoard planBoard) {
|
||||||
return monthPlanMapper.selectBoardPlanListCnt(boardPlan);
|
return monthPlanMapper.selectPlanBoardListCnt(planBoard);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveUploadFiles(Integer planKey, List<MultipartFile> multipartFileList){
|
private void saveUploadFiles(Integer planKey, List<MultipartFile> multipartFileList){
|
||||||
|
|
@ -125,4 +126,14 @@ public class MonthPlanService extends BaseService {
|
||||||
public FileInfo selectPlanFile(Integer parentKey, Integer fileSeq) {
|
public FileInfo selectPlanFile(Integer parentKey, Integer fileSeq) {
|
||||||
return planFileRepository.findById(new PlanFile.PlanFileId(parentKey, fileSeq)).orElse(null);
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.fpiMgt.monthPlan.mapper.MonthPlanMapper">
|
<mapper namespace="com.dbnt.faisp.fpiMgt.monthPlan.mapper.MonthPlanMapper">
|
||||||
<sql id="selectBoardPlanListWhere">
|
<sql id="selectPlanBoardListWhere">
|
||||||
<where>
|
<where>
|
||||||
<if test='wrtUserSeq != null and wrtUserSeq != ""'>
|
<if test='wrtUserSeq != null and wrtUserSeq != ""'>
|
||||||
and a.wrt_user_seq = #{wrtUserSeq}
|
and a.wrt_user_seq = #{wrtUserSeq}
|
||||||
|
|
@ -43,32 +43,41 @@
|
||||||
#{organCd}
|
#{organCd}
|
||||||
</foreach>
|
</foreach>
|
||||||
</if>
|
</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>
|
</where>
|
||||||
</sql>
|
</sql>
|
||||||
<select id="selectBoardPlanList" resultType="BoardPlan" parameterType="BoardPlan">
|
<select id="selectPlanBoardList" resultType="PlanBoard" parameterType="PlanBoard">
|
||||||
select a.plan_key,
|
select a.plan_key,
|
||||||
a.content_title,
|
a.content_title,
|
||||||
a.plan_state,
|
a.plan_state,
|
||||||
a.plan_dt,
|
a.plan_dt,
|
||||||
a.section_apprv,
|
|
||||||
a.head_apprv,
|
|
||||||
a.wrt_organ,
|
a.wrt_organ,
|
||||||
a.wrt_user_nm,
|
a.wrt_user_nm,
|
||||||
a.wrt_dt,
|
a.wrt_dt,
|
||||||
b.fileCnt
|
b.fileCnt
|
||||||
from board_plan a
|
from plan_board a
|
||||||
left outer join (select plan_key,
|
left outer join (select plan_key,
|
||||||
count(file_seq) as fileCnt
|
count(file_seq) as fileCnt
|
||||||
from plan_file
|
from plan_file
|
||||||
group by plan_key) b
|
group by plan_key) b
|
||||||
on a.plan_key = b.plan_key
|
on a.plan_key = b.plan_key
|
||||||
<include refid="selectBoardPlanListWhere"></include>
|
<include refid="selectPlanBoardListWhere"></include>
|
||||||
order by plan_key desc
|
order by plan_key desc
|
||||||
limit #{rowCnt} offset #{firstIndex}
|
limit #{rowCnt} offset #{firstIndex}
|
||||||
</select>
|
</select>
|
||||||
<select id="selectBoardPlanListCnt" resultType="int" parameterType="BoardPlan">
|
<select id="selectPlanBoardListCnt" resultType="int" parameterType="PlanBoard">
|
||||||
select count(*)
|
select count(*)
|
||||||
from board_plan a
|
from plan_board a
|
||||||
<include refid="selectBoardPlanListWhere"></include>
|
<include refid="selectPlanBoardListWhere"></include>
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -47,7 +47,7 @@ $(document).on('click', '#saveAuthBtn', function (){
|
||||||
const authList = {};
|
const authList = {};
|
||||||
authList.accessConfigList = accessConfigList;
|
authList.accessConfigList = accessConfigList;
|
||||||
authList.approvalConfigList = approvalConfigList;
|
authList.approvalConfigList = approvalConfigList;
|
||||||
debugger
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'POST',
|
type : 'POST',
|
||||||
url : "/authMgt/saveAuth",
|
url : "/authMgt/saveAuth",
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ $(document).on('click', '#apprvStayTab', function (){
|
||||||
$(document).on('click', '#apprvCommitTab', function (){
|
$(document).on('click', '#apprvCommitTab', function (){
|
||||||
location.href = "/fpiMgt/apprvCommitPage";
|
location.href = "/fpiMgt/apprvCommitPage";
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
function getViewModal(planKey){
|
function getViewModal(planKey){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/fpiMgt/planViewModal',
|
url: '/fpiMgt/planViewModal',
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
@ -7,14 +7,14 @@ $(function(){
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#addPlanBtn', function (){
|
|
||||||
getEditModal(null)
|
|
||||||
})
|
|
||||||
$(document).on('click', '.planTr', function (){
|
$(document).on('click', '.planTr', function (){
|
||||||
$(".trChkBox").prop("checked", false);
|
$(".trChkBox").prop("checked", false);
|
||||||
$(this).find(".trChkBox").prop("checked", true);
|
$(this).find(".trChkBox").prop("checked", true);
|
||||||
getViewModal(Number($(this).find(".planKey").val()));
|
getViewModal(Number($(this).find(".planKey").val()));
|
||||||
})
|
})
|
||||||
|
$(document).on('click', '#addPlanBtn', function (){
|
||||||
|
getEditModal(null)
|
||||||
|
})
|
||||||
$(document).on('click', '#editPlanBtn', function (){
|
$(document).on('click', '#editPlanBtn', function (){
|
||||||
$("#planViewModal").modal('hide');
|
$("#planViewModal").modal('hide');
|
||||||
getEditModal(Number($("#planViewBody").find("[name='planKey']").val()));
|
getEditModal(Number($("#planViewBody").find("[name='planKey']").val()));
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
layout:decorate="~{layout/layout}">
|
layout:decorate="~{layout/layout}">
|
||||||
<th:block layout:fragment="script">
|
<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/affairPlan.js}"></script>
|
||||||
|
<script type="text/javascript" th:src="@{/js/igActivities/fpiMgt/commitPlan.js}"></script>
|
||||||
</th:block>
|
</th:block>
|
||||||
<div layout:fragment="content">
|
<div layout:fragment="content">
|
||||||
<main class="pt-3">
|
<main class="pt-3">
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
layout:decorate="~{layout/layout}">
|
layout:decorate="~{layout/layout}">
|
||||||
<th:block layout:fragment="script">
|
<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/affairPlan.js}"></script>
|
||||||
|
<script type="text/javascript" th:src="@{/js/igActivities/fpiMgt/stayPlan.js}"></script>
|
||||||
</th:block>
|
</th:block>
|
||||||
<div layout:fragment="content">
|
<div layout:fragment="content">
|
||||||
<main class="pt-3">
|
<main class="pt-3">
|
||||||
|
|
@ -169,11 +170,30 @@
|
||||||
<h5 class="modal-title" id="planViewModalLabel">월간 계획 열람</h5>
|
<h5 class="modal-title" id="planViewModalLabel">월간 계획 열람</h5>
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</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>
|
||||||
<div class="modal-footer">
|
<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>
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
<script type="text/javascript" th:src="@{/js/common.js}"></script>
|
<script type="text/javascript" th:src="@{/js/common.js}"></script>
|
||||||
<!-- 컨텐츠페이지의 스크립트 영역이 들어감 -->
|
<!-- 컨텐츠페이지의 스크립트 영역이 들어감 -->
|
||||||
<th:block layout:fragment="script"></th:block>
|
<th:block layout:fragment="script"></th:block>
|
||||||
<th:block sec:authorize="isAuthenticated()">
|
<!--<th:block sec:authorize="isAuthenticated()">
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(function (){
|
$(function (){
|
||||||
/*세션 체크*/
|
/*세션 체크*/
|
||||||
|
|
@ -43,7 +43,7 @@
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
</th:block>
|
</th:block>-->
|
||||||
</head>
|
</head>
|
||||||
<body class="d-flex flex-column h-100">
|
<body class="d-flex flex-column h-100">
|
||||||
<header th:replace="fragments/header :: headerFragment"></header>
|
<header th:replace="fragments/header :: headerFragment"></header>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue