외사분실 실적까지 모달 수정 완료.
외사장비 모달 수정 작업 시작.
parent
94b5e61eb9
commit
3df21b009a
|
|
@ -1,6 +1,8 @@
|
||||||
package com.dbnt.faisp.main.fipTarget;
|
package com.dbnt.faisp.main.fipTarget;
|
||||||
|
|
||||||
|
|
||||||
|
import com.dbnt.faisp.main.codeMgt.model.CodeMgt;
|
||||||
|
import com.dbnt.faisp.main.codeMgt.service.CodeMgtService;
|
||||||
import com.dbnt.faisp.main.fipTarget.model.ShipInfo;
|
import com.dbnt.faisp.main.fipTarget.model.ShipInfo;
|
||||||
import com.dbnt.faisp.main.authMgt.service.AuthMgtService;
|
import com.dbnt.faisp.main.authMgt.service.AuthMgtService;
|
||||||
import com.dbnt.faisp.main.fipTarget.model.PartInfo;
|
import com.dbnt.faisp.main.fipTarget.model.PartInfo;
|
||||||
|
|
@ -25,7 +27,7 @@ import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
@ -46,43 +48,44 @@ public class FipTargetController {
|
||||||
private final AuthMgtService authMgtService;
|
private final AuthMgtService authMgtService;
|
||||||
private final FipTargetService fipTargetService;
|
private final FipTargetService fipTargetService;
|
||||||
private final UserInfoService userInfoService;
|
private final UserInfoService userInfoService;
|
||||||
|
private final CodeMgtService codeMgtService;
|
||||||
|
|
||||||
// 외사분실운영현황 시작
|
// 외사분실운영현황 시작
|
||||||
@GetMapping("/partInfoList")
|
@GetMapping("/partInfoList")
|
||||||
public ModelAndView partInfoList(@AuthenticationPrincipal UserInfo loginUser,PartInfo partInfo, HttpServletResponse response) {
|
public ModelAndView partInfoList(@AuthenticationPrincipal UserInfo loginUser,PartInfo partInfo, HttpServletResponse response) {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/partInfoList");
|
ModelAndView mav = new ModelAndView("fipTarget/partInfoList");
|
||||||
partInfo.setDownOrganCdList(loginUser.getDownOrganCdList());
|
partInfo.setDownOrganCdList(loginUser.getDownOrganCdList());
|
||||||
//엑셀다운
|
//엑셀다운
|
||||||
if(partInfo.getExcel() != null && partInfo.getExcel().equals("Y")){
|
if(partInfo.getExcel() != null && partInfo.getExcel().equals("Y")){
|
||||||
ParamMap header = fipTargetService.selectWorkTypeTotal(partInfo);
|
ParamMap header = fipTargetService.selectWorkTypeTotal(partInfo);
|
||||||
String[] headers = { "mgt_organ", "land_police", "terminal_nm", "mp_work_type", "mp_people_cnt", "mp_description", "pl_work_type", "pl_people_cnt", "pl_description", "pi_manager_name", "rent_price", "utility_price", "wrt_dt"};
|
String[] headers = { "mgt_organ", "land_police", "terminal_nm", "mp_work_type", "mp_people_cnt", "mp_description", "pl_work_type", "pl_people_cnt", "pl_description", "pi_manager_name", "rent_price", "utility_price", "wrt_dt"};
|
||||||
String[] headerNames = { "해경서", "육경서","터미넡명", "해경", "", "", "육경", "", "", "", "", "",""};
|
String[] headerNames = { "해경서", "육경서","터미넡명", "해경", "", "", "육경", "", "", "", "", "",""};
|
||||||
String[] headerNames2 = null;
|
String[] headerNames2 = null;
|
||||||
if(header != null) {
|
if(header != null) {
|
||||||
headerNames2 = new String[] { "", "", "", "상주 "+header.getString("mp_sangju")+"개소 "+header.getString("mp_sangju_total")+"명"
|
headerNames2 = new String[] { "", "", "", "상주 "+header.getString("mp_sangju")+"개소 "+header.getString("mp_sangju_total")+"명"
|
||||||
,"비상주 "+header.getString("mp_bsangju")+"개소 "+header.getString("mp_bsangju_total")+"명"
|
,"비상주 "+header.getString("mp_bsangju")+"개소 "+header.getString("mp_bsangju_total")+"명"
|
||||||
,"폐쇄 "+header.getString("mp_closure")+"개소 "+header.getString("mp_closure_total")+"명"
|
,"폐쇄 "+header.getString("mp_closure")+"개소 "+header.getString("mp_closure_total")+"명"
|
||||||
,"상주 "+header.getString("pl_sangju")+"개소 "+header.getString("pl_sangju_total")+"명"
|
,"상주 "+header.getString("pl_sangju")+"개소 "+header.getString("pl_sangju_total")+"명"
|
||||||
,"비상주 "+header.getString("pl_bsangju")+"개소 "+header.getString("pl_bsangju_total")+"명"
|
,"비상주 "+header.getString("pl_bsangju")+"개소 "+header.getString("pl_bsangju_total")+"명"
|
||||||
,"폐쇄 "+header.getString("pl_closure")+"개소 "+header.getString("pl_closure_total")+"명"
|
,"폐쇄 "+header.getString("pl_closure")+"개소 "+header.getString("pl_closure_total")+"명"
|
||||||
, "", "", "", "" };
|
, "", "", "", "" };
|
||||||
}else {
|
}else {
|
||||||
headerNames2 = new String[] { "", "","", "상주 0개소 0명","비상주 0개소 0명","폐쇄 0개소 0명","상주 0개소 0명","비상주 0개소 0명","폐쇄 0개소 0명", "", "", "", "" };
|
headerNames2 = new String[] { "", "","", "상주 0개소 0명","비상주 0개소 0명","폐쇄 0개소 0명","상주 0개소 0명","비상주 0개소 0명","폐쇄 0개소 0명", "", "", "", "" };
|
||||||
}
|
}
|
||||||
String[] headerNames3 = { "", "","", "근무방법", "명", "비고", "근무방법", "명", "비고", "담당자", "임차료", "공공요금", "최종수정일" };
|
String[] headerNames3 = { "", "","", "근무방법", "명", "비고", "근무방법", "명", "비고", "담당자", "임차료", "공공요금", "최종수정일" };
|
||||||
String[] columnType = { "String", "String","String", "String", "int", "String", "String", "int", "String", "String", "String","String", "String"};
|
String[] columnType = { "String", "String","String", "String", "int", "String", "String", "int", "String", "String", "String","String", "String"};
|
||||||
String sheetName = "외사 분실 현황";
|
String sheetName = "외사 분실 현황";
|
||||||
String excelFileName = "외사 분실 현황";
|
String excelFileName = "외사 분실 현황";
|
||||||
List<PartInfo> partInfoList= fipTargetService.selectPartInfoList(partInfo);
|
List<PartInfo> partInfoList= fipTargetService.selectPartInfoList(partInfo);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Utils.partInfolistToExcel(partInfoList, response, headers, headerNames,headerNames2,headerNames3, columnType, sheetName, excelFileName);
|
Utils.partInfolistToExcel(partInfoList, response, headers, headerNames,headerNames2,headerNames3, columnType, sheetName, excelFileName);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
//메뉴권한 확인
|
//메뉴권한 확인
|
||||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partInfoList").get(0).getAccessAuth();
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partInfoList").get(0).getAccessAuth();
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
partInfo.setQueryInfo();
|
partInfo.setQueryInfo();
|
||||||
|
|
@ -94,100 +97,112 @@ public class FipTargetController {
|
||||||
mav.addObject("searchParams", partInfo);
|
mav.addObject("searchParams", partInfo);
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/partInfoEditModal")
|
@GetMapping("/partInfoEditModal")
|
||||||
public ModelAndView partInfoEditModal(@AuthenticationPrincipal UserInfo loginUser,PartInfo partInfo) {
|
public ModelAndView partInfoEditModal(@AuthenticationPrincipal UserInfo loginUser,PartInfo partInfo) {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/partInfoEditModal");
|
ModelAndView mav = new ModelAndView("fipTarget/partInfoEditModal");
|
||||||
//메뉴권한 확인
|
//메뉴권한 확인
|
||||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partInfoList").get(0).getAccessAuth();
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partInfoList").get(0).getAccessAuth();
|
||||||
mav.addObject("userOrgan", loginUser.getOgCd());
|
mav.addObject("userOrgan", loginUser.getOgCd());
|
||||||
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
|
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
|
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/partInfoSelecBox")
|
@GetMapping("/partInfoSelecBox")
|
||||||
public ModelAndView equipTypeSelecBox(String ogCd) {
|
public ModelAndView equipTypeSelecBox(String ogCd) {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/partInfoSelecBox");
|
ModelAndView mav = new ModelAndView("fipTarget/partInfoSelecBox");
|
||||||
ParamMap param = new ParamMap();
|
ParamMap param = new ParamMap();
|
||||||
param.put("downOrganCdList", organConfigService.selectDownOrganListWhereUserOgCd(ogCd));
|
param.put("downOrganCdList", organConfigService.selectDownOrganListWhereUserOgCd(ogCd));
|
||||||
mav.addObject("managerList", userInfoService.selectManagerList(param));
|
mav.addObject("managerList", userInfoService.selectManagerList(param));
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/savePartInfo")
|
@PostMapping("/savePartInfo")
|
||||||
public void savePartInfo (@AuthenticationPrincipal UserInfo loginUser, PartInfo partInfo,MultipartHttpServletRequest request){
|
public void savePartInfo (@AuthenticationPrincipal UserInfo loginUser, PartInfo partInfo,MultipartHttpServletRequest request){
|
||||||
partInfo.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
|
partInfo.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
|
||||||
partInfo.setWrtNm(loginUser.getUserNm());
|
partInfo.setWrtNm(loginUser.getUserNm());
|
||||||
partInfo.setWrtTitle(loginUser.getTitleCd());
|
partInfo.setWrtTitle(loginUser.getTitleCd());
|
||||||
partInfo.setWrtPart(loginUser.getOfcCd());
|
partInfo.setWrtPart(loginUser.getOfcCd());
|
||||||
partInfo.setWrtUserSeq(loginUser.getUserSeq());
|
partInfo.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
partInfo.setWrtOrgan(loginUser.getOgCd());
|
partInfo.setWrtOrgan(loginUser.getOgCd());
|
||||||
partInfo.setWrtDt(LocalDateTime.now());
|
partInfo.setWrtDt(LocalDateTime.now());
|
||||||
fipTargetService.savePartInfo(partInfo);
|
fipTargetService.savePartInfo(partInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/updatePartInfoPage")
|
@GetMapping("/updatePartInfoPage")
|
||||||
public ModelAndView updatePartInfoPage(@AuthenticationPrincipal UserInfo loginUser,PartInfo partInfo) {
|
public ModelAndView updatePartInfoPage(@AuthenticationPrincipal UserInfo loginUser,PartInfo partInfo) {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/partInfoModifyModal");
|
ModelAndView mav = new ModelAndView("fipTarget/partInfoModifyModal");
|
||||||
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
|
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
|
||||||
PartInfo partInfoView = fipTargetService.selectPartInfo(partInfo);
|
PartInfo partInfoView = fipTargetService.selectPartInfo(partInfo);
|
||||||
ParamMap param = new ParamMap();
|
ParamMap param = new ParamMap();
|
||||||
param.put("downOrganCdList", organConfigService.selectDownOrganListWhereUserOgCd(partInfoView.getMgtOrgan()));
|
param.put("downOrganCdList", organConfigService.selectDownOrganListWhereUserOgCd(partInfoView.getMgtOrgan()));
|
||||||
mav.addObject("managerList", userInfoService.selectManagerList(param));
|
mav.addObject("managerList", userInfoService.selectManagerList(param));
|
||||||
partInfoView.setFileList(fipTargetService.selectPartInfoFile(partInfo));
|
partInfoView.setFileList(fipTargetService.selectPartInfoFile(partInfo));
|
||||||
mav.addObject("partInfo", partInfoView);
|
mav.addObject("partInfo", partInfoView);
|
||||||
//메뉴권한 확인
|
//메뉴권한 확인
|
||||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partInfoList").get(0).getAccessAuth();
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partInfoList").get(0).getAccessAuth();
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
mav.addObject("userSeq", loginUser.getUserSeq());
|
mav.addObject("userSeq", loginUser.getUserSeq());
|
||||||
mav.addObject("wrtUserSeq", fipTargetService.selectPartInfoFirstId(partInfo));
|
mav.addObject("wrtUserSeq", fipTargetService.selectPartInfoFirstId(partInfo));
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/updatePartInfo")
|
@PostMapping("/updatePartInfo")
|
||||||
public int updatePartInfo (@AuthenticationPrincipal UserInfo loginUser,PartInfo partInfo,
|
public int updatePartInfo (@AuthenticationPrincipal UserInfo loginUser,PartInfo partInfo,
|
||||||
MultipartHttpServletRequest request,
|
MultipartHttpServletRequest request,
|
||||||
@RequestParam(value = "fileSeq", required = false) List < Integer > deleteFileSeq){
|
@RequestParam(value = "fileSeq", required = false) List < Integer > deleteFileSeq){
|
||||||
partInfo.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
|
partInfo.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
|
||||||
partInfo.setWrtUserSeq(loginUser.getUserSeq());
|
partInfo.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
partInfo.setWrtNm(loginUser.getUserNm());
|
partInfo.setWrtNm(loginUser.getUserNm());
|
||||||
partInfo.setWrtOrgan(loginUser.getOgCd());
|
partInfo.setWrtOrgan(loginUser.getOgCd());
|
||||||
partInfo.setWrtPart(loginUser.getOfcCd());
|
partInfo.setWrtPart(loginUser.getOfcCd());
|
||||||
partInfo.setWrtTitle(loginUser.getTitleCd());
|
partInfo.setWrtTitle(loginUser.getTitleCd());
|
||||||
partInfo.setWrtDt(LocalDateTime.now());
|
partInfo.setWrtDt(LocalDateTime.now());
|
||||||
fipTargetService.updatePartInfo(partInfo,deleteFileSeq);
|
fipTargetService.updatePartInfo(partInfo,deleteFileSeq);
|
||||||
return partInfo.getPiSeq();
|
return partInfo.getPiSeq();
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/partInfoHistoryPage")
|
@GetMapping("/partInfoHistoryPage")
|
||||||
public ModelAndView PartInfoHistoryPage(PartInfo partInfo) {
|
public ModelAndView PartInfoHistoryPage(PartInfo partInfo) {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/partInfoHistory");
|
ModelAndView mav = new ModelAndView("fipTarget/partInfoHistory");
|
||||||
mav.addObject("partInfoList", fipTargetService.selectPartInfoSeq(partInfo));
|
mav.addObject("partInfoList", fipTargetService.selectPartInfoSeq(partInfo));
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/partInfoHistoryView")
|
@GetMapping("/partInfoHistoryView")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public PartInfo partInfoHistoryView(PartInfo partInfo){
|
public ModelAndView partInfoHistoryView(@AuthenticationPrincipal UserInfo loginUser, PartInfo partInfo){
|
||||||
PartInfo partInfoHistory = fipTargetService.selectPartInfoHistoryView(partInfo);
|
ModelAndView mav = new ModelAndView("fipTarget/partInfoHistoryDiv");
|
||||||
partInfoHistory.setFileList(fipTargetService.selectPartInfoFileHistoryView(partInfo));
|
|
||||||
return partInfoHistory;
|
PartInfo partInfoHistory = fipTargetService.selectPartInfoHistory(partInfo);
|
||||||
|
mav.addObject("partInfo", partInfoHistory);
|
||||||
|
|
||||||
|
ParamMap param = new ParamMap();
|
||||||
|
param.put("downOrganCdList", organConfigService.selectDownOrganListWhereUserOgCd(partInfoHistory.getMgtOrgan()));
|
||||||
|
mav.addObject("managerList", userInfoService.selectManagerList(param));
|
||||||
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partInfoList").get(0).getAccessAuth();
|
||||||
|
mav.addObject("accessAuth", accessAuth);
|
||||||
|
mav.addObject("userSeq", loginUser.getUserSeq());
|
||||||
|
mav.addObject("wrtUserSeq", fipTargetService.selectPartInfoFirstId(partInfo));
|
||||||
|
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
|
||||||
|
|
||||||
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/deletePartInfo")
|
@PostMapping("/deletePartInfo")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public void deletePartInfo(@RequestBody PartInfo partInfo) {
|
public void deletePartInfo(@RequestBody PartInfo partInfo) {
|
||||||
fipTargetService.deletePartInfo(partInfo);
|
fipTargetService.deletePartInfo(partInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/partInfoFileDownload")
|
@GetMapping("/partInfoFileDownload")
|
||||||
public void partInfoFileDownload(HttpServletRequest request,
|
public void partInfoFileDownload(HttpServletRequest request,
|
||||||
HttpServletResponse response,
|
HttpServletResponse response,
|
||||||
Integer fileSeq,
|
Integer fileSeq,
|
||||||
Integer piSeq,
|
Integer piSeq,
|
||||||
Integer versionNo) {
|
Integer versionNo) {
|
||||||
PartInfoFile downloadFile = fipTargetService.selectPartInfoFileDown(fileSeq, piSeq,versionNo);
|
PartInfoFile downloadFile = fipTargetService.selectPartInfoFileDown(fileSeq, piSeq,versionNo);
|
||||||
|
|
||||||
BufferedInputStream in;
|
BufferedInputStream in;
|
||||||
|
|
@ -206,115 +221,124 @@ public class FipTargetController {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws IOException {
|
private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||||
String browser = getBrowser(request);
|
String browser = getBrowser(request);
|
||||||
|
|
||||||
String dispositionPrefix = "attachment; filename=";
|
String dispositionPrefix = "attachment; filename=";
|
||||||
String encodedFilename = null;
|
String encodedFilename = null;
|
||||||
|
|
||||||
if (browser.equals("MSIE")) {
|
if (browser.equals("MSIE")) {
|
||||||
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
|
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
|
||||||
} else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지
|
} else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지
|
||||||
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
|
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
|
||||||
} else if (browser.equals("Firefox")) {
|
} else if (browser.equals("Firefox")) {
|
||||||
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
|
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
|
||||||
} else if (browser.equals("Opera")) {
|
} else if (browser.equals("Opera")) {
|
||||||
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
|
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
|
||||||
} else if (browser.equals("Chrome")) {
|
} else if (browser.equals("Chrome")) {
|
||||||
StringBuffer sb = new StringBuffer();
|
StringBuffer sb = new StringBuffer();
|
||||||
for (int i = 0; i < filename.length(); i++) {
|
for (int i = 0; i < filename.length(); i++) {
|
||||||
char c = filename.charAt(i);
|
char c = filename.charAt(i);
|
||||||
if (c > '~') {
|
if (c > '~') {
|
||||||
sb.append(URLEncoder.encode("" + c, "UTF-8"));
|
sb.append(URLEncoder.encode("" + c, "UTF-8"));
|
||||||
} else {
|
} else {
|
||||||
sb.append(c);
|
sb.append(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
encodedFilename = sb.toString();
|
encodedFilename = sb.toString();
|
||||||
} else {
|
} else {
|
||||||
throw new IOException("Not supported browser");
|
throw new IOException("Not supported browser");
|
||||||
}
|
}
|
||||||
|
|
||||||
response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename);
|
response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename);
|
||||||
|
|
||||||
|
if ("Opera".equals(browser)) {
|
||||||
|
response.setContentType("application/octet-stream;charset=UTF-8");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ("Opera".equals(browser)) {
|
|
||||||
response.setContentType("application/octet-stream;charset=UTF-8");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getBrowser(HttpServletRequest request) {
|
private String getBrowser(HttpServletRequest request) {
|
||||||
String header = request.getHeader("User-Agent");
|
String header = request.getHeader("User-Agent");
|
||||||
if (header.indexOf("MSIE") > -1) {
|
if (header.indexOf("MSIE") > -1) {
|
||||||
return "MSIE";
|
return "MSIE";
|
||||||
} else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지
|
} else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지
|
||||||
return "Trident";
|
return "Trident";
|
||||||
} else if (header.indexOf("Chrome") > -1) {
|
} else if (header.indexOf("Chrome") > -1) {
|
||||||
return "Chrome";
|
return "Chrome";
|
||||||
} else if (header.indexOf("Opera") > -1) {
|
} else if (header.indexOf("Opera") > -1) {
|
||||||
return "Opera";
|
return "Opera";
|
||||||
}
|
}
|
||||||
return "Firefox";
|
return "Firefox";
|
||||||
}
|
}
|
||||||
//외사분실 운영현황 끝
|
//외사분실 운영현황 끝
|
||||||
//외사분실실적 시작
|
//외사분실실적 시작
|
||||||
@GetMapping("/partWorkList")
|
@GetMapping("/partWorkList")
|
||||||
public ModelAndView partWorkList(@AuthenticationPrincipal UserInfo loginUser,PartWork partWork, HttpServletResponse response) {
|
public ModelAndView partWorkList(@AuthenticationPrincipal UserInfo loginUser,PartWork partWork, HttpServletResponse response) {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/partWorkList");
|
ModelAndView mav = new ModelAndView("fipTarget/partWorkList");
|
||||||
|
List<CodeMgt> pwtList = codeMgtService.selectCodeMgtList("PWT");
|
||||||
partWork.setDownOrganCdList(loginUser.getDownOrganCdList());
|
partWork.setDownOrganCdList(loginUser.getDownOrganCdList());
|
||||||
//엑셀다운
|
//엑셀다운
|
||||||
if(partWork.getExcel() != null && partWork.getExcel().equals("Y")){
|
if(partWork.getExcel() != null && partWork.getExcel().equals("Y")){
|
||||||
String[] headers = { "terminal_nm", "wrt_nm", "work_dt", "work_type_ch", "work_type_poci", "work_type_sri", "work_type_ji", "work_type_mt", "work_type_etc", "description", "file_cnt","wrt_dt"};
|
Set<String> headerSet = new LinkedHashSet();
|
||||||
String[] headerNames = { "외사 터미널명", "작성자","일시", "종류", "", "", "", "", "", "비고", "첨부파일", "최근수정일"};
|
headerSet.addAll(List.of(new String[]{"terminal_nm", "wrt_nm", "work_dt"}));
|
||||||
String[] headerNames2 = { "", "","", "사건처리", "범죄첩보제공", "SRI", "합동점검", "회의", "기타", "", "", ""};
|
for(CodeMgt code: pwtList){
|
||||||
String[] columnType = { "String", "String","String", "String", "String", "String", "String", "String", "String", "String", "String","String"};
|
headerSet.add("work_type_"+code.getItemCd());
|
||||||
String sheetName = "외사분실 실적";
|
}
|
||||||
String excelFileName = "외사분실 실적";
|
headerSet.addAll(List.of(new String[]{"description", "file_cnt","wrt_dt"}));
|
||||||
List<PartWork> partWorkList= fipTargetService.selectPartWorkList(partWork);
|
String[] headers = headerSet.toArray(new String[0]);
|
||||||
|
String[] headerNames = { "외사 터미널명", "작성자","일시", "종류", "", "", "", "", "", "비고", "첨부파일", "최근수정일"};
|
||||||
|
String[] headerNames2 = { "", "","", "사건처리", "범죄첩보제공", "SRI", "합동점검", "회의", "기타", "", "", ""};
|
||||||
|
String[] columnType = { "String", "String","String", "String", "String", "String", "String", "String", "String", "String", "String","String"};
|
||||||
|
String sheetName = "외사분실 실적";
|
||||||
|
String excelFileName = "외사분실 실적";
|
||||||
|
List<PartWork> partWorkList= fipTargetService.selectPartWorkList(partWork);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Utils.partWorkListToExcel(partWorkList, response, headers, headerNames,headerNames2, columnType, sheetName, excelFileName);
|
Utils.partWorkListToExcel(partWorkList, pwtList, response, headers, headerNames, headerNames2, columnType, sheetName, excelFileName);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
//메뉴권한 확인
|
//메뉴권한 확인
|
||||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partWorkList").get(0).getAccessAuth();
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partWorkList").get(0).getAccessAuth();
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
|
mav.addObject("pwtList", pwtList);
|
||||||
partWork.setQueryInfo();
|
partWork.setQueryInfo();
|
||||||
mav.addObject("partWorkList", fipTargetService.selectPartWorkList(partWork));
|
mav.addObject("partWorkList", fipTargetService.selectPartWorkList(partWork));
|
||||||
partWork.setContentCnt(fipTargetService.selectPartWorkListCnt(partWork));
|
partWork.setContentCnt(fipTargetService.selectPartWorkListCnt(partWork));
|
||||||
partWork.setPaginationInfo();
|
partWork.setPaginationInfo();
|
||||||
mav.addObject("uesrSeq", loginUser.getUserSeq());
|
mav.addObject("uesrSeq", loginUser.getUserSeq());
|
||||||
mav.addObject("searchParams", partWork);
|
mav.addObject("searchParams", partWork);
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/partWorkEditModal")
|
@GetMapping("/partWorkEditModal")
|
||||||
public ModelAndView partWorkEditModal(@AuthenticationPrincipal UserInfo loginUser,PartWork partWork) {
|
public ModelAndView partWorkEditModal(@AuthenticationPrincipal UserInfo loginUser,PartWork partWork) {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/partWorkEditModal");
|
ModelAndView mav = new ModelAndView("fipTarget/partWorkEditModal");
|
||||||
partWork.setDownOrganCdList(loginUser.getDownOrganCdList());
|
partWork.setDownOrganCdList(loginUser.getDownOrganCdList());
|
||||||
//메뉴권한 확인
|
//메뉴권한 확인
|
||||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partWorkList").get(0).getAccessAuth();
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partWorkList").get(0).getAccessAuth();
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
mav.addObject("tnList", fipTargetService.selectTerminalName(partWork));
|
mav.addObject("tnList", fipTargetService.selectTerminalName(partWork));
|
||||||
|
mav.addObject("pwtList", codeMgtService.selectCodeMgtList("PWT"));
|
||||||
|
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/savePartWork")
|
@PostMapping("/savePartWork")
|
||||||
public void savePartWork (@AuthenticationPrincipal UserInfo loginUser, PartWork partWork,MultipartHttpServletRequest request){
|
public void savePartWork (@AuthenticationPrincipal UserInfo loginUser, PartWork partWork,MultipartHttpServletRequest request){
|
||||||
partWork.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
|
partWork.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
|
||||||
partWork.setWrtNm(loginUser.getUserNm());
|
partWork.setWrtNm(loginUser.getUserNm());
|
||||||
partWork.setWrtPart(loginUser.getOfcCd());
|
partWork.setWrtPart(loginUser.getOfcCd());
|
||||||
partWork.setWrtUserSeq(loginUser.getUserSeq());
|
partWork.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
partWork.setWrtOrgan(loginUser.getOgCd());
|
partWork.setWrtOrgan(loginUser.getOgCd());
|
||||||
partWork.setWrtTitle(loginUser.getTitleCd());
|
partWork.setWrtTitle(loginUser.getTitleCd());
|
||||||
partWork.setWrtDt(LocalDateTime.now());
|
partWork.setWrtDt(LocalDateTime.now());
|
||||||
fipTargetService.savePartWork(partWork);
|
fipTargetService.savePartWork(partWork);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/partWorkView")
|
@GetMapping("/partWorkView")
|
||||||
public ModelAndView partWorkView(@AuthenticationPrincipal UserInfo loginUser,PartWork partWork) {
|
public ModelAndView partWorkView(@AuthenticationPrincipal UserInfo loginUser,PartWork partWork) {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/partWorkModifyModal");
|
ModelAndView mav = new ModelAndView("fipTarget/partWorkModifyModal");
|
||||||
|
|
@ -322,35 +346,40 @@ public class FipTargetController {
|
||||||
PartWork partWorkView = fipTargetService.selectPartWorkInfo(partWork);
|
PartWork partWorkView = fipTargetService.selectPartWorkInfo(partWork);
|
||||||
partWorkView.setFileList(fipTargetService.selectPartWorkFile(partWork));
|
partWorkView.setFileList(fipTargetService.selectPartWorkFile(partWork));
|
||||||
mav.addObject("pwInfo", partWorkView);
|
mav.addObject("pwInfo", partWorkView);
|
||||||
//메뉴권한 확인
|
//메뉴권한 확인
|
||||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partInfoList").get(0).getAccessAuth();
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partInfoList").get(0).getAccessAuth();
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
|
mav.addObject("pwtList", codeMgtService.selectCodeMgtList("PWT"));
|
||||||
|
mav.addObject("tnList", fipTargetService.selectTerminalName(partWork));
|
||||||
mav.addObject("userId", loginUser.getUserId());
|
mav.addObject("userId", loginUser.getUserId());
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/updatePartWork")
|
@PostMapping("/updatePartWork")
|
||||||
public PartWork updatePartWork (@AuthenticationPrincipal UserInfo loginUser, PartWork partWork,
|
public PartWork updatePartWork (@AuthenticationPrincipal UserInfo loginUser, PartWork partWork,
|
||||||
MultipartHttpServletRequest request,
|
MultipartHttpServletRequest request,
|
||||||
@RequestParam(value = "fileSeq", required = false) List < Integer > deleteFileSeq){
|
@RequestParam(value = "fileSeq", required = false) List < Integer > deleteFileSeq){
|
||||||
partWork.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
|
partWork.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
|
||||||
partWork.setWrtDt(LocalDateTime.now());
|
partWork.setWrtDt(LocalDateTime.now());
|
||||||
fipTargetService.updatePartWork(partWork,deleteFileSeq);
|
fipTargetService.updatePartWork(partWork,deleteFileSeq);
|
||||||
return partWork;
|
PartWork returnParams = new PartWork();
|
||||||
|
returnParams.setPwSeq(partWork.getPwSeq());
|
||||||
|
returnParams.setPiSeq(partWork.getPiSeq());
|
||||||
|
return returnParams;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/deletePartWork")
|
@PostMapping("/deletePartWork")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public void deletePartWork(@RequestBody PartWork partWork) {
|
public void deletePartWork(@RequestBody PartWork partWork) {
|
||||||
fipTargetService.deletePartWork(partWork);
|
fipTargetService.deletePartWork(partWork);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/partWorkFileDownload")
|
@GetMapping("/partWorkFileDownload")
|
||||||
public void partWorkFileDownload(HttpServletRequest request,
|
public void partWorkFileDownload(HttpServletRequest request,
|
||||||
HttpServletResponse response,
|
HttpServletResponse response,
|
||||||
Integer fileSeq,
|
Integer fileSeq,
|
||||||
Integer pwSeq,
|
Integer pwSeq,
|
||||||
Integer piSeq) {
|
Integer piSeq) {
|
||||||
PartWorkFile downloadFile = fipTargetService.selectPartWorkFileDown(fileSeq, pwSeq,piSeq);
|
PartWorkFile downloadFile = fipTargetService.selectPartWorkFileDown(fileSeq, pwSeq,piSeq);
|
||||||
|
|
||||||
BufferedInputStream in;
|
BufferedInputStream in;
|
||||||
|
|
@ -377,13 +406,13 @@ public class FipTargetController {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/vulnerableList");
|
ModelAndView mav = new ModelAndView("fipTarget/vulnerableList");
|
||||||
|
|
||||||
mav.addObject("vulnerableList", fipTargetService.selectVulnerableList(vulnerable));
|
mav.addObject("vulnerableList", fipTargetService.selectVulnerableList(vulnerable));
|
||||||
//메뉴권한 확인
|
//메뉴권한 확인
|
||||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/vulnerableList").get(0).getAccessAuth();
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/vulnerableList").get(0).getAccessAuth();
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
mav.addObject("searchParams", vulnerable);
|
mav.addObject("searchParams", vulnerable);
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/vulnEditModal")
|
@GetMapping("/vulnEditModal")
|
||||||
public ModelAndView vulnEditModal(@AuthenticationPrincipal UserInfo loginUser,Vulnerable vulnerable) {
|
public ModelAndView vulnEditModal(@AuthenticationPrincipal UserInfo loginUser,Vulnerable vulnerable) {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/vulnEditModal");
|
ModelAndView mav = new ModelAndView("fipTarget/vulnEditModal");
|
||||||
|
|
@ -392,63 +421,63 @@ public class FipTargetController {
|
||||||
mav.addObject("organList", fipTargetService.selecetVulnOrganList(vulnerable));
|
mav.addObject("organList", fipTargetService.selecetVulnOrganList(vulnerable));
|
||||||
mav.addObject("userOrgan", loginUser.getOgCd());
|
mav.addObject("userOrgan", loginUser.getOgCd());
|
||||||
if(vulnerable.getVulnKey() != null) {
|
if(vulnerable.getVulnKey() != null) {
|
||||||
vulnerable = fipTargetService.selectVulnInfo(vulnerable);
|
vulnerable = fipTargetService.selectVulnInfo(vulnerable);
|
||||||
vulnerable.setFileList(fipTargetService.selectVulnFile(vulnerable.getVulnKey()));
|
vulnerable.setFileList(fipTargetService.selectVulnFile(vulnerable.getVulnKey()));
|
||||||
mav.addObject("userSeq", loginUser.getUserSeq());
|
mav.addObject("userSeq", loginUser.getUserSeq());
|
||||||
}
|
}
|
||||||
//메뉴권한 확인
|
//메뉴권한 확인
|
||||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/vulnerableList").get(0).getAccessAuth();
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/vulnerableList").get(0).getAccessAuth();
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
vulnerable.setWrtNm(loginUser.getUserNm());
|
vulnerable.setWrtNm(loginUser.getUserNm());
|
||||||
vulnerable.setWrtPart(loginUser.getOfcCd());
|
vulnerable.setWrtPart(loginUser.getOfcCd());
|
||||||
vulnerable.setWrtUserSeq(loginUser.getUserSeq());
|
vulnerable.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
vulnerable.setWrtOrgan(loginUser.getOgCd());
|
vulnerable.setWrtOrgan(loginUser.getOgCd());
|
||||||
vulnerable.setWrtTitle(loginUser.getTitleCd());
|
vulnerable.setWrtTitle(loginUser.getTitleCd());
|
||||||
mav.addObject("info", vulnerable);
|
mav.addObject("info", vulnerable);
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/saveVulnerable")
|
@PostMapping("/saveVulnerable")
|
||||||
public Integer saveVulnerable (@AuthenticationPrincipal UserInfo loginUser, Vulnerable vulnerable,MultipartHttpServletRequest request,
|
public Integer saveVulnerable (@AuthenticationPrincipal UserInfo loginUser, Vulnerable vulnerable,MultipartHttpServletRequest request,
|
||||||
@RequestParam(value = "fileSeq", required = false) List < Integer > deleteFileSeq){
|
@RequestParam(value = "fileSeq", required = false) List < Integer > deleteFileSeq){
|
||||||
vulnerable.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
|
vulnerable.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
|
||||||
vulnerable.setWrtDt(LocalDateTime.now());
|
vulnerable.setWrtDt(LocalDateTime.now());
|
||||||
Integer result = fipTargetService.saveVulnerable(vulnerable,deleteFileSeq);
|
Integer result = fipTargetService.saveVulnerable(vulnerable,deleteFileSeq);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/vulnInfoModal")
|
@GetMapping("/vulnInfoModal")
|
||||||
public ModelAndView vulnInfoModal(@AuthenticationPrincipal UserInfo loginUser,Vulnerable vulnerable) {
|
public ModelAndView vulnInfoModal(@AuthenticationPrincipal UserInfo loginUser,Vulnerable vulnerable) {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/vulnInfoModal");
|
ModelAndView mav = new ModelAndView("fipTarget/vulnInfoModal");
|
||||||
vulnerable.setDownOrganCdList(loginUser.getDownOrganCdList());;
|
vulnerable.setDownOrganCdList(loginUser.getDownOrganCdList());;
|
||||||
mav.addObject("vulnInfoList", fipTargetService.selectVulnInfoList(vulnerable));
|
mav.addObject("vulnInfoList", fipTargetService.selectVulnInfoList(vulnerable));
|
||||||
mav.addObject("organNm", fipTargetService.selectOrganName(vulnerable.getMgtOrgan()));
|
mav.addObject("organNm", fipTargetService.selectOrganName(vulnerable.getMgtOrgan()));
|
||||||
//메뉴권한 확인
|
//메뉴권한 확인
|
||||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/vulnerableList").get(0).getAccessAuth();
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/vulnerableList").get(0).getAccessAuth();
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
|
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/vulnViewModal")
|
@GetMapping("/vulnViewModal")
|
||||||
public ModelAndView vulnViewModal(@AuthenticationPrincipal UserInfo loginUser,Vulnerable vulnerable) {
|
public ModelAndView vulnViewModal(@AuthenticationPrincipal UserInfo loginUser,Vulnerable vulnerable) {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/vulnViewModal");
|
ModelAndView mav = new ModelAndView("fipTarget/vulnViewModal");
|
||||||
Vulnerable vulnInfo = fipTargetService.selectVulnInfo(vulnerable);
|
Vulnerable vulnInfo = fipTargetService.selectVulnInfo(vulnerable);
|
||||||
vulnInfo.setFileList(fipTargetService.selectVulnFile(vulnInfo.getVulnKey()));
|
vulnInfo.setFileList(fipTargetService.selectVulnFile(vulnInfo.getVulnKey()));
|
||||||
mav.addObject("vulnInfo", vulnInfo);
|
mav.addObject("vulnInfo", vulnInfo);
|
||||||
//메뉴권한 확인
|
//메뉴권한 확인
|
||||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/vulnerableList").get(0).getAccessAuth();
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/vulnerableList").get(0).getAccessAuth();
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
|
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/vulnFileDownload")
|
@GetMapping("/vulnFileDownload")
|
||||||
public void vulnFileDownload(HttpServletRequest request,
|
public void vulnFileDownload(HttpServletRequest request,
|
||||||
HttpServletResponse response,
|
HttpServletResponse response,
|
||||||
Integer fileSeq,
|
Integer fileSeq,
|
||||||
Integer vulnKey) {
|
Integer vulnKey) {
|
||||||
VulnFile downloadFile = fipTargetService.selectVulnInfoFileDown(fileSeq, vulnKey);
|
VulnFile downloadFile = fipTargetService.selectVulnInfoFileDown(fileSeq, vulnKey);
|
||||||
|
|
||||||
BufferedInputStream in;
|
BufferedInputStream in;
|
||||||
BufferedOutputStream out;
|
BufferedOutputStream out;
|
||||||
|
|
@ -466,109 +495,109 @@ public class FipTargetController {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/deleteVulnerable")
|
@PostMapping("/deleteVulnerable")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public void deleteVulnerable(@RequestBody Vulnerable vulnerable) {
|
public void deleteVulnerable(@RequestBody Vulnerable vulnerable) {
|
||||||
fipTargetService.deleteVulnerable(vulnerable);
|
fipTargetService.deleteVulnerable(vulnerable);
|
||||||
}
|
}
|
||||||
//외사취약지 끝
|
//외사취약지 끝
|
||||||
//국제여객선 시작
|
//국제여객선 시작
|
||||||
@GetMapping("/ipShipList")
|
@GetMapping("/ipShipList")
|
||||||
public ModelAndView ipShipList(@AuthenticationPrincipal UserInfo loginUser, ShipInfo shipInfo, HttpServletResponse response) {
|
public ModelAndView ipShipList(@AuthenticationPrincipal UserInfo loginUser, ShipInfo shipInfo, HttpServletResponse response) {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/ipShipList");
|
ModelAndView mav = new ModelAndView("fipTarget/ipShipList");
|
||||||
shipInfo.setDownOrganCdList(loginUser.getDownOrganCdList());
|
shipInfo.setDownOrganCdList(loginUser.getDownOrganCdList());
|
||||||
|
|
||||||
//엑셀다운
|
//엑셀다운
|
||||||
if(shipInfo.getExcel() != null && shipInfo.getExcel().equals("Y")){
|
if(shipInfo.getExcel() != null && shipInfo.getExcel().equals("Y")){
|
||||||
String[] headers = {"hangro", "owner_nm", "ship_nm", "ship_weight", "susong", "operation_cnt", "close_yn", "wrt_dt"};
|
String[] headers = {"hangro", "owner_nm", "ship_nm", "ship_weight", "susong", "operation_cnt", "close_yn", "wrt_dt"};
|
||||||
String[] headerNames = { "항로", "사업자"+System.lineSeparator()+"(한국대리점)", "선명", "국제"+System.lineSeparator()+"총톤수", "수송능력", "운항횟수", "휴항", "최종수정일"};
|
String[] headerNames = { "항로", "사업자"+System.lineSeparator()+"(한국대리점)", "선명", "국제"+System.lineSeparator()+"총톤수", "수송능력", "운항횟수", "휴항", "최종수정일"};
|
||||||
String[] columnType = { "String", "String", "String", "String", "String", "String", "String","String"};
|
String[] columnType = { "String", "String", "String", "String", "String", "String", "String","String"};
|
||||||
String sheetName="";
|
String sheetName="";
|
||||||
String excelFileName="";
|
String excelFileName="";
|
||||||
if(shipInfo.getSiType().equals("KRCN")) {
|
if(shipInfo.getSiType().equals("KRCN")) {
|
||||||
sheetName = "한-중 국제여객선 현황";
|
sheetName = "한-중 국제여객선 현황";
|
||||||
excelFileName = "한-중 국제여객선 현황";
|
excelFileName = "한-중 국제여객선 현황";
|
||||||
}else if(shipInfo.getSiType().equals("KRJPRU")) {
|
}else if(shipInfo.getSiType().equals("KRJPRU")) {
|
||||||
sheetName = "한-일,러 국제여객선 현황";
|
sheetName = "한-일,러 국제여객선 현황";
|
||||||
excelFileName = "한-일,러 국제여객선 현황";
|
excelFileName = "한-일,러 국제여객선 현황";
|
||||||
}
|
}
|
||||||
|
|
||||||
List<ParamMap> ipShipList= fipTargetService.selectShipInfoListToExcle(shipInfo);
|
List<ParamMap> ipShipList= fipTargetService.selectShipInfoListToExcle(shipInfo);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Utils.ipShipDownExcel(ipShipList, response, headers, headerNames,columnType, sheetName, excelFileName);
|
Utils.ipShipDownExcel(ipShipList, response, headers, headerNames,columnType, sheetName, excelFileName);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
//메뉴권한 확인
|
//메뉴권한 확인
|
||||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/ipShipList?siType="+shipInfo.getSiType()).get(0).getAccessAuth();
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/ipShipList?siType="+shipInfo.getSiType()).get(0).getAccessAuth();
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
shipInfo.setQueryInfo();
|
shipInfo.setQueryInfo();
|
||||||
mav.addObject("shipInfoList", fipTargetService.selectShipInfoList(shipInfo));
|
mav.addObject("shipInfoList", fipTargetService.selectShipInfoList(shipInfo));
|
||||||
shipInfo.setContentCnt(fipTargetService.selectShipInfoListCnt(shipInfo));
|
shipInfo.setContentCnt(fipTargetService.selectShipInfoListCnt(shipInfo));
|
||||||
shipInfo.setPaginationInfo();
|
shipInfo.setPaginationInfo();
|
||||||
mav.addObject("uesrId", loginUser.getUserId());
|
mav.addObject("uesrId", loginUser.getUserId());
|
||||||
mav.addObject("searchParams", shipInfo);
|
mav.addObject("searchParams", shipInfo);
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/ipShipEditModal")
|
@GetMapping("/ipShipEditModal")
|
||||||
public ModelAndView ipShipEditModal(@AuthenticationPrincipal UserInfo loginUser,ShipInfo shipInfo) {
|
public ModelAndView ipShipEditModal(@AuthenticationPrincipal UserInfo loginUser,ShipInfo shipInfo) {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/ipShipEditModal");
|
ModelAndView mav = new ModelAndView("fipTarget/ipShipEditModal");
|
||||||
//메뉴권한 확인
|
//메뉴권한 확인
|
||||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/ipShipList?siType="+shipInfo.getSiType()).get(0).getAccessAuth();
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/ipShipList?siType="+shipInfo.getSiType()).get(0).getAccessAuth();
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
mav.addObject("siType", shipInfo.getSiType());
|
mav.addObject("siType", shipInfo.getSiType());
|
||||||
|
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/saveShipInfo")
|
@PostMapping("/saveShipInfo")
|
||||||
public void saveShipInfo (@AuthenticationPrincipal UserInfo loginUser, ShipInfo shipInfo){
|
public void saveShipInfo (@AuthenticationPrincipal UserInfo loginUser, ShipInfo shipInfo){
|
||||||
shipInfo.setWrtNm(loginUser.getUserNm());
|
shipInfo.setWrtNm(loginUser.getUserNm());
|
||||||
shipInfo.setWrtPart(loginUser.getOfcCd());
|
shipInfo.setWrtPart(loginUser.getOfcCd());
|
||||||
shipInfo.setWrtTitle(loginUser.getTitleCd());
|
shipInfo.setWrtTitle(loginUser.getTitleCd());
|
||||||
shipInfo.setWrtUserSeq(loginUser.getUserSeq());
|
shipInfo.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
shipInfo.setWrtOrgan(loginUser.getOgCd());
|
shipInfo.setWrtOrgan(loginUser.getOgCd());
|
||||||
shipInfo.setWrtDt(LocalDateTime.now());
|
shipInfo.setWrtDt(LocalDateTime.now());
|
||||||
fipTargetService.saveShipInfo(shipInfo);
|
fipTargetService.saveShipInfo(shipInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/shipInfoView")
|
@GetMapping("/shipInfoView")
|
||||||
public ModelAndView shipInfoView(@AuthenticationPrincipal UserInfo loginUser,ShipInfo shipInfo) {
|
public ModelAndView shipInfoView(@AuthenticationPrincipal UserInfo loginUser,ShipInfo shipInfo) {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/ipShipViewModal");
|
ModelAndView mav = new ModelAndView("fipTarget/ipShipViewModal");
|
||||||
mav.addObject("shipInfo", fipTargetService.selectShipInfo(shipInfo));
|
mav.addObject("shipInfo", fipTargetService.selectShipInfo(shipInfo));
|
||||||
//메뉴권한 확인
|
//메뉴권한 확인
|
||||||
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/ipShipList?siType="+shipInfo.getSiType()).get(0).getAccessAuth();
|
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/ipShipList?siType="+shipInfo.getSiType()).get(0).getAccessAuth();
|
||||||
mav.addObject("accessAuth", accessAuth);
|
mav.addObject("accessAuth", accessAuth);
|
||||||
//첫번째 작성 UserSeq
|
//첫번째 작성 UserSeq
|
||||||
mav.addObject("wrtUserSeq", fipTargetService.selectFirstWrtId(shipInfo));
|
mav.addObject("wrtUserSeq", fipTargetService.selectFirstWrtId(shipInfo));
|
||||||
|
|
||||||
mav.addObject("userSeq", loginUser.getUserSeq());
|
mav.addObject("userSeq", loginUser.getUserSeq());
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/updateShipInfo")
|
@PostMapping("/updateShipInfo")
|
||||||
public ShipInfo updateShipInfo (@AuthenticationPrincipal UserInfo loginUser,ShipInfo shipInfo){
|
public ShipInfo updateShipInfo (@AuthenticationPrincipal UserInfo loginUser,ShipInfo shipInfo){
|
||||||
shipInfo.setWrtNm(loginUser.getUserNm());
|
shipInfo.setWrtNm(loginUser.getUserNm());
|
||||||
shipInfo.setWrtPart(loginUser.getOfcCd());
|
shipInfo.setWrtPart(loginUser.getOfcCd());
|
||||||
shipInfo.setWrtTitle(loginUser.getTitleCd());
|
shipInfo.setWrtTitle(loginUser.getTitleCd());
|
||||||
shipInfo.setWrtUserSeq(loginUser.getUserSeq());
|
shipInfo.setWrtUserSeq(loginUser.getUserSeq());
|
||||||
shipInfo.setWrtOrgan(loginUser.getOgCd());
|
shipInfo.setWrtOrgan(loginUser.getOgCd());
|
||||||
shipInfo.setWrtDt(LocalDateTime.now());
|
shipInfo.setWrtDt(LocalDateTime.now());
|
||||||
return fipTargetService.updateShipInfo(shipInfo);
|
return fipTargetService.updateShipInfo(shipInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/ipShipHistory")
|
@GetMapping("/ipShipHistory")
|
||||||
public ModelAndView ipShipHistory(ShipInfo shipInfo) {
|
public ModelAndView ipShipHistory(ShipInfo shipInfo) {
|
||||||
ModelAndView mav = new ModelAndView("fipTarget/ipShipHistory");
|
ModelAndView mav = new ModelAndView("fipTarget/ipShipHistory");
|
||||||
mav.addObject("shipInfoList", fipTargetService.selectIpShiwHistoryList(shipInfo));
|
mav.addObject("shipInfoList", fipTargetService.selectIpShiwHistoryList(shipInfo));
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/ipShipHistoryView")
|
@GetMapping("/ipShipHistoryView")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public ModelAndView ipShipHistoryView(ShipInfo shipInfo){
|
public ModelAndView ipShipHistoryView(ShipInfo shipInfo){
|
||||||
|
|
@ -576,17 +605,17 @@ public class FipTargetController {
|
||||||
mav.addObject("shipInfo", fipTargetService.selectIpShipHistoryView(shipInfo));
|
mav.addObject("shipInfo", fipTargetService.selectIpShipHistoryView(shipInfo));
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/deleteShipInfo")
|
@PostMapping("/deleteShipInfo")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public void deleteShipInfo(@RequestBody ShipInfo shipInfo) {
|
public void deleteShipInfo(@RequestBody ShipInfo shipInfo) {
|
||||||
fipTargetService.deleteShipInfo(shipInfo);
|
fipTargetService.deleteShipInfo(shipInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
//국제여객선 끝
|
//국제여객선 끝
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,10 +29,6 @@ public interface FipTargetMapper {
|
||||||
|
|
||||||
List<PartInfo> selectPartInfoSeq(PartInfo partInfo);
|
List<PartInfo> selectPartInfoSeq(PartInfo partInfo);
|
||||||
|
|
||||||
PartInfo selectPartInfoHistoryView(PartInfo partInfo);
|
|
||||||
|
|
||||||
List<PartInfoFile> selectPartInfoFileHistoryView(PartInfo partInfo);
|
|
||||||
|
|
||||||
String selectPartInfoFirstId(Integer piSeq);
|
String selectPartInfoFirstId(Integer piSeq);
|
||||||
|
|
||||||
List<ParamMap> selectTerminalName(PartWork partWork);
|
List<ParamMap> selectTerminalName(PartWork partWork);
|
||||||
|
|
|
||||||
|
|
@ -68,18 +68,6 @@ public class PartWork extends BaseModel implements Serializable{
|
||||||
@Transient
|
@Transient
|
||||||
private String terminalNm;
|
private String terminalNm;
|
||||||
@Transient
|
@Transient
|
||||||
private String workTypeCh;
|
|
||||||
@Transient
|
|
||||||
private String workTypePoci;
|
|
||||||
@Transient
|
|
||||||
private String workTypeSri;
|
|
||||||
@Transient
|
|
||||||
private String workTypeJi;
|
|
||||||
@Transient
|
|
||||||
private String workTypeMt;
|
|
||||||
@Transient
|
|
||||||
private String workTypeEtc;
|
|
||||||
@Transient
|
|
||||||
private Integer fileCnt;
|
private Integer fileCnt;
|
||||||
|
|
||||||
@Transient
|
@Transient
|
||||||
|
|
|
||||||
|
|
@ -192,12 +192,10 @@ public class FipTargetService extends BaseService {
|
||||||
return fipTargetMapper.selectPartInfoSeq(partInfo);
|
return fipTargetMapper.selectPartInfoSeq(partInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PartInfo selectPartInfoHistoryView(PartInfo partInfo) {
|
public PartInfo selectPartInfoHistory(PartInfo partInfo) {
|
||||||
return fipTargetMapper.selectPartInfoHistoryView(partInfo);
|
partInfo = partInfoRepository.findById(new PartInfoId(partInfo.getPiSeq(), partInfo.getVersionNo())).orElse(partInfo);
|
||||||
}
|
partInfo.setFileList(partInfoFileRepository.findByPiSeqAndVersionNoOrderByFileSeqAsc(partInfo.getPiSeq(), partInfo.getVersionNo()));
|
||||||
|
return partInfo;
|
||||||
public List<PartInfoFile> selectPartInfoFileHistoryView(PartInfo partInfo) {
|
|
||||||
return fipTargetMapper.selectPartInfoFileHistoryView(partInfo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
|
|
|
||||||
|
|
@ -180,6 +180,7 @@ public class UserInfoService implements UserDetailsService {
|
||||||
public void userDelete(List<UserInfo> userInfo) {
|
public void userDelete(List<UserInfo> userInfo) {
|
||||||
userInfoRepository.deleteAll(userInfo);
|
userInfoRepository.deleteAll(userInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ParamMap> selectManagerList(ParamMap param) {
|
public List<ParamMap> selectManagerList(ParamMap param) {
|
||||||
return userInfoMapper.selectManagerList(param);
|
return userInfoMapper.selectManagerList(param);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
|
||||||
|
import com.dbnt.faisp.main.codeMgt.model.CodeMgt;
|
||||||
import org.apache.poi.ss.usermodel.BorderStyle;
|
import org.apache.poi.ss.usermodel.BorderStyle;
|
||||||
import org.apache.poi.ss.usermodel.Cell;
|
import org.apache.poi.ss.usermodel.Cell;
|
||||||
import org.apache.poi.ss.usermodel.CellStyle;
|
import org.apache.poi.ss.usermodel.CellStyle;
|
||||||
|
|
@ -466,8 +467,8 @@ public class Utils {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void partWorkListToExcel(List<PartWork> partWorkList, HttpServletResponse response, String[] headers,
|
public static void partWorkListToExcel(List<PartWork> partWorkList, List<CodeMgt> pwtList, HttpServletResponse response, String[] headers,
|
||||||
String[] headerNames, String[] headerNames2, String[] columnType, String sheetName, String excelFileName) throws IOException {
|
String[] headerNames, String[] headerNames2, String[] columnType, String sheetName, String excelFileName) throws IOException {
|
||||||
if(Utils.isNotEmpty(partWorkList)) {
|
if(Utils.isNotEmpty(partWorkList)) {
|
||||||
// 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다.
|
// 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다.
|
||||||
XSSFWorkbook wb = new XSSFWorkbook();
|
XSSFWorkbook wb = new XSSFWorkbook();
|
||||||
|
|
@ -515,18 +516,11 @@ public class Utils {
|
||||||
}else {
|
}else {
|
||||||
rowData.set("work_dt", "");
|
rowData.set("work_dt", "");
|
||||||
}
|
}
|
||||||
rowData.set("work_type_ch", partWorkList.get(i).getWorkTypeCh());
|
for(CodeMgt code: pwtList){
|
||||||
rowData.set("work_type_poci", partWorkList.get(i).getWorkTypePoci());
|
rowData.set("work_type_"+code.getItemCd(), partWorkList.get(i).getWorkType().equals(code.getItemCd())?"O":"");
|
||||||
rowData.set("work_type_sri", partWorkList.get(i).getWorkTypeSri());
|
}
|
||||||
rowData.set("work_type_ji", partWorkList.get(i).getWorkTypeJi());
|
|
||||||
rowData.set("work_type_mt", partWorkList.get(i).getWorkTypeMt());
|
|
||||||
rowData.set("work_type_etc", partWorkList.get(i).getWorkTypeEtc());
|
|
||||||
rowData.set("description", partWorkList.get(i).getDescription());
|
rowData.set("description", partWorkList.get(i).getDescription());
|
||||||
if(partWorkList.get(i).getFileCnt() > 0) {
|
rowData.set("file_cnt", partWorkList.get(i).getFileCnt()+"건");
|
||||||
rowData.set("file_cnt", "●");
|
|
||||||
}else {
|
|
||||||
rowData.set("file_cnt", "");
|
|
||||||
}
|
|
||||||
rowData.set("wrt_dt", partWorkList.get(i).getWrtDt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
|
rowData.set("wrt_dt", partWorkList.get(i).getWrtDt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
|
||||||
for(int j=0; j<headers.length; j++) {
|
for(int j=0; j<headers.length; j++) {
|
||||||
Cell cell = row.createCell(j);
|
Cell cell = row.createCell(j);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#tomcat.ajp.protocol=HTTP/1.1
|
#tomcat.ajp.protocol=HTTP/1.1
|
||||||
server.port=80
|
#server.port=80
|
||||||
|
|
||||||
#file upload
|
#file upload
|
||||||
spring.servlet.multipart.location=/home/jboss/faisp/uploadFiles
|
spring.servlet.multipart.location=/home/jboss/faisp/uploadFiles
|
||||||
spring.servlet.multipart.max-file-size=200MB
|
spring.servlet.multipart.max-file-size=200MB
|
||||||
|
|
|
||||||
|
|
@ -255,52 +255,6 @@
|
||||||
order by version_no desc
|
order by version_no desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectPartInfoHistoryView" resultType="PartInfo" parameterType="PartInfo">
|
|
||||||
select pi_seq,
|
|
||||||
version_no,
|
|
||||||
(select item_value from code_mgt where item_cd = mgt_organ) as mgt_organ,
|
|
||||||
land_police,
|
|
||||||
(select item_value from code_mgt where item_cd = mp_work_type) as mp_work_type,
|
|
||||||
mp_people_cnt,
|
|
||||||
mp_description,
|
|
||||||
(select item_value from code_mgt where item_cd = pl_work_type) as pl_work_type,
|
|
||||||
pl_people_cnt,
|
|
||||||
pl_description,
|
|
||||||
pi_user_seq,
|
|
||||||
(select user_nm from user_info where user_seq = pi_user_seq ) as pi_manager_name,
|
|
||||||
terminal_nm,
|
|
||||||
case
|
|
||||||
when rent_type = 'Y' then '유상'
|
|
||||||
when rent_type = 'N' then '무상'
|
|
||||||
else null
|
|
||||||
end as rent_type,
|
|
||||||
rent_price,
|
|
||||||
case
|
|
||||||
when utility_type = 'Y' then '유상'
|
|
||||||
when utility_type = 'N' then '무상'
|
|
||||||
else null
|
|
||||||
end as utility_type,
|
|
||||||
utility_price,
|
|
||||||
wrt_dt
|
|
||||||
from part_info
|
|
||||||
where pi_seq = #{piSeq}
|
|
||||||
and version_no = #{versionNo}
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<select id="selectPartInfoFileHistoryView" resultType="PartInfoFile" parameterType="PartInfo">
|
|
||||||
select file_seq,
|
|
||||||
pi_seq,
|
|
||||||
version_no,
|
|
||||||
orig_nm,
|
|
||||||
conv_nm,
|
|
||||||
file_extn,
|
|
||||||
file_size,
|
|
||||||
file_path
|
|
||||||
from part_info_file
|
|
||||||
where pi_seq = #{piSeq}
|
|
||||||
and version_no = #{versionNo}
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<select id="selectPartInfoFirstId" resultType="String" parameterType="int">
|
<select id="selectPartInfoFirstId" resultType="String" parameterType="int">
|
||||||
select wrt_user_seq
|
select wrt_user_seq
|
||||||
from part_info
|
from part_info
|
||||||
|
|
@ -325,51 +279,33 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectPartWorkList" resultType="PartWork" parameterType="PartWork">
|
<select id="selectPartWorkList" resultType="PartWork" parameterType="PartWork">
|
||||||
select pw.pw_seq,
|
select pw.pw_seq,
|
||||||
pw.pi_seq ,
|
pw.pi_seq ,
|
||||||
pi.terminal_nm,
|
pi.terminal_nm,
|
||||||
(select item_value from code_mgt where item_cd = pw.wrt_title) as wrt_title,
|
(select item_value from code_mgt where item_cd = pw.wrt_title) as wrt_title,
|
||||||
pw.wrt_nm,
|
pw.wrt_nm,
|
||||||
pw.wrt_user_seq,
|
pw.wrt_user_seq,
|
||||||
pw.work_dt,
|
pw.work_dt,
|
||||||
pw.save_yn,
|
pw.save_yn,
|
||||||
work_type,
|
work_type,
|
||||||
case
|
pw.description,
|
||||||
when pw.work_type = 'CH' then 'O'
|
(select count(*) from part_work_file pwf where pw.pw_seq = pwf.pw_seq and pw.pi_seq = pwf.pi_seq) as file_cnt,
|
||||||
end as work_type_ch,
|
pw.wrt_dt
|
||||||
case
|
from part_work pw,
|
||||||
when pw.work_type = 'POCI' then 'O'
|
part_info pi,
|
||||||
end as work_type_poci,
|
(select pi_seq,max(version_no) as lastVer
|
||||||
case
|
from part_info group by pi_seq) b
|
||||||
when pw.work_type = 'SRI' then 'O'
|
where pw.pi_seq = pi.pi_seq
|
||||||
end as work_type_sri,
|
and pi.pi_seq = b.pi_seq
|
||||||
case
|
and pi.version_no = b.lastVer
|
||||||
when pw.work_type = 'JI' then 'O'
|
and pi.mgt_organ in
|
||||||
end as work_type_ji,
|
<foreach collection="downOrganCdList" item="item" index="index" separator="," open="(" close=")">
|
||||||
case
|
#{item}
|
||||||
when pw.work_type = 'MT' then 'O'
|
</foreach>
|
||||||
end as work_type_mt,
|
order by wrt_dt desc
|
||||||
case
|
<if test='excel != "Y"'>
|
||||||
when pw.work_type = 'ETC' then 'O'
|
limit #{rowCnt} offset #{firstIndex}
|
||||||
end as work_type_etc,
|
</if>
|
||||||
pw.description,
|
|
||||||
(select count(*) from part_work_file pwf where pw.pw_seq = pwf.pw_seq and pw.pi_seq = pwf.pi_seq) as file_cnt,
|
|
||||||
pw.wrt_dt
|
|
||||||
from part_work pw,
|
|
||||||
part_info pi,
|
|
||||||
(select pi_seq,max(version_no) as lastVer
|
|
||||||
from part_info group by pi_seq) b
|
|
||||||
where pw.pi_seq = pi.pi_seq
|
|
||||||
and pi.pi_seq = b.pi_seq
|
|
||||||
and pi.version_no = b.lastVer
|
|
||||||
and pi.mgt_organ in
|
|
||||||
<foreach collection="downOrganCdList" item="item" index="index" separator="," open="(" close=")">
|
|
||||||
#{item}
|
|
||||||
</foreach>
|
|
||||||
order by wrt_dt desc
|
|
||||||
<if test='excel != "Y"'>
|
|
||||||
limit #{rowCnt} offset #{firstIndex}
|
|
||||||
</if>
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectPartWorkListCnt" resultType="int" parameterType="PartWork">
|
<select id="selectPartWorkListCnt" resultType="int" parameterType="PartWork">
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
|
|
||||||
$(document).on('click', '#addPartInfo', function (){
|
$(document).on('click', '#addPartInfo', function (){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/target/partInfoEditModal',
|
url: '/target/partInfoEditModal',
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
dataType:"html",
|
dataType:"html",
|
||||||
success: function(html){
|
success: function(html){
|
||||||
$("#partInfoEditModalEditModalContent").empty().append(html);
|
$("#partInfoEditModalEditModalContent").empty().append(html);
|
||||||
$("#partInfoEditModal").modal('show');
|
$("#partInfoEditModal").modal('show');
|
||||||
$("#rentPrice").hide();
|
$("#rentPrice").attr("disabled", "disabled");
|
||||||
$("#utilityPrice").hide();
|
$("#utilityPrice").attr("disabled", "disabled");
|
||||||
changeManager($("#mgtOrgan").val());
|
changeManager($("#mgtOrgan").val());
|
||||||
setUploadDiv();
|
setUploadDiv();
|
||||||
},
|
},
|
||||||
|
|
@ -19,167 +19,178 @@ $(document).on('click', '#addPartInfo', function (){
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('change', '#rentType', function (){
|
$(document).on('change', '#rentType', function (){
|
||||||
if($("#rentType").val() == 'Y'){
|
const rentPrice = $("#rentPrice");
|
||||||
$("#rentPrice").show();
|
if(this.value === 'Y'){
|
||||||
}else{
|
rentPrice.removeAttr("disabled");
|
||||||
$("#rentPrice").hide();
|
|
||||||
$("#rentPrice").val('');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).on('change', '#utilityType', function (){
|
|
||||||
if($("#utilityType").val() == 'Y'){
|
|
||||||
$("#utilityPrice").show();
|
|
||||||
}else{
|
|
||||||
$("#utilityPrice").hide();
|
|
||||||
$("#utilityPrice").val('');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).on('change', '#mgtOrgan', function (){
|
|
||||||
const ogCd = $(this).val();
|
|
||||||
if(ogCd != ''){
|
|
||||||
changeManager(ogCd);
|
|
||||||
}else{
|
}else{
|
||||||
$("#piUserSeq").prop('disabled',true);
|
rentPrice.val('');
|
||||||
$("#piUserSeq").val('');
|
rentPrice.attr("disabled", "disabled");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$(document).on('change', '#utilityType', function (){
|
||||||
|
const utilityPrice = $("#utilityPrice");
|
||||||
|
if(this.value === 'Y'){
|
||||||
|
utilityPrice.removeAttr("disabled");
|
||||||
|
}else{
|
||||||
|
utilityPrice.val('');
|
||||||
|
utilityPrice.attr("disabled", "disabled");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('change', '#mgtOrgan', function (){
|
||||||
|
const ogCd = $(this).val();
|
||||||
|
if(ogCd !== ''){
|
||||||
|
changeManager(ogCd);
|
||||||
|
}else{
|
||||||
|
$("#piUserSeq").prop('disabled',true);
|
||||||
|
$("#piUserSeq").val('');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('click', '#viewTab', function (){
|
||||||
|
$(this).parents(".modal-dialog")[0].className = "modal-dialog modal-lg modal-dialog-scrollable";
|
||||||
|
showModal($("#piSeq").val());
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '#historyTab', function (){
|
||||||
|
$(this).parents(".modal-dialog")[0].className = "modal-dialog modal-xl modal-dialog-scrollable";
|
||||||
|
showHistory($("#piSeq").val());
|
||||||
|
})
|
||||||
|
|
||||||
function changeManager(ogCd){
|
function changeManager(ogCd){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/target/partInfoSelecBox',
|
url: '/target/partInfoSelecBox',
|
||||||
data: {
|
data: {
|
||||||
ogCd,
|
ogCd,
|
||||||
},
|
},
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
dataType:"html",
|
dataType:"html",
|
||||||
success: function(html){
|
success: function(html){
|
||||||
$("#piUserSeq").empty().append(html);
|
$("#piUserSeq").empty().append(html);
|
||||||
$("#piUserSeq").prop('disabled',false);
|
$("#piUserSeq").prop('disabled',false);
|
||||||
},
|
},
|
||||||
error:function(){
|
error:function(){
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).on('change', '#mMgtOrgan', function (){
|
$(document).on('change', '#mMgtOrgan', function (){
|
||||||
const ogCd = $(this).val();
|
const ogCd = $(this).val();
|
||||||
if(ogCd != ''){
|
if(ogCd != ''){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/target/partInfoSelecBox',
|
url: '/target/partInfoSelecBox',
|
||||||
data: {
|
data: {
|
||||||
ogCd,
|
ogCd,
|
||||||
},
|
},
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
dataType:"html",
|
dataType:"html",
|
||||||
success: function(html){
|
success: function(html){
|
||||||
$("#mPiUserSeq").empty().append(html);
|
$("#mPiUserSeq").empty().append(html);
|
||||||
$("#mPiUserSeq").prop('disabled',false);
|
$("#mPiUserSeq").prop('disabled',false);
|
||||||
},
|
},
|
||||||
error:function(){
|
error:function(){
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}else{
|
}else{
|
||||||
$("#mPiUserSeq").prop('disabled',true);
|
$("#mPiUserSeq").prop('disabled',true);
|
||||||
$("#mPiUserSeq").val('');
|
$("#mPiUserSeq").val('');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('click', '#savePartInfo', function (){
|
$(document).on('click', '#savePartInfo', function (){
|
||||||
if($('#mgtOrgan').val() == ''){
|
if($('#mgtOrgan').val() == ''){
|
||||||
alert('해경서를 선택해주세요');
|
alert('해경서를 선택해주세요');
|
||||||
$('#mgtOrgan').focus();
|
$('#mgtOrgan').focus();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if($('#piUserSeq').val() == ''){
|
if($('#piUserSeq').val() == ''){
|
||||||
alert('담당자를 선택해주세요');
|
alert('담당자를 선택해주세요');
|
||||||
$('#piUserSeq').focus();
|
$('#piUserSeq').focus();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if($('#terminalNm').val() == ''){
|
if($('#terminalNm').val() == ''){
|
||||||
alert('터미널명을 입력해주세요');
|
alert('터미널명을 입력해주세요');
|
||||||
$('#terminalNm').focus();
|
$('#terminalNm').focus();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if($('#mpWorkType').val() != ''){
|
if($('#mpWorkType').val() != ''){
|
||||||
if($('#mpPeopleCnt').val() == ''){
|
if($('#mpPeopleCnt').val() == ''){
|
||||||
alert('해경 인원수를 입력해주세요');
|
alert('해경 인원수를 입력해주세요');
|
||||||
$('#mpPeopleCnt').focus();
|
$('#mpPeopleCnt').focus();
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
}
|
|
||||||
if($('#plWorkType').val() != ''){
|
|
||||||
if($('#plPeopleCnt').val() == ''){
|
|
||||||
alert('육경 인원수를 입력해주세요');
|
|
||||||
$('#plPeopleCnt').focus();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($("#rentType").val() == 'Y'){
|
|
||||||
if($("#rentPrice").val() == ''){
|
|
||||||
alert("임차료를 입력해주세요.");
|
|
||||||
$('#rentPrice').focus();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($("#utilityType").val() == 'Y'){
|
|
||||||
if($("#utilityPrice").val() == ''){
|
|
||||||
alert("공공요금을 입력해주세요.");
|
|
||||||
$('#utilityPrice').focus();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(confirm("저장하시겠습니까?")){
|
|
||||||
document.getElementById("mgtOrgan").disabled = false;
|
|
||||||
contentFade("in");
|
|
||||||
const formData = new FormData($("#partInfoSave")[0]);
|
|
||||||
for(const file of files) {
|
|
||||||
if(!file.isDelete)
|
|
||||||
formData.append('uploadFiles', file, file.name);
|
|
||||||
}
|
|
||||||
$.ajax({
|
|
||||||
type : 'POST',
|
|
||||||
data : formData,
|
|
||||||
url : "/target/savePartInfo",
|
|
||||||
processData: false,
|
|
||||||
contentType: false,
|
|
||||||
success : function(result) {
|
|
||||||
alert("저장되었습니다.");
|
|
||||||
contentFade("out");
|
|
||||||
location.reload();
|
|
||||||
},
|
|
||||||
error : function(xhr, status) {
|
|
||||||
alert("저장에 실패하였습니다.")
|
|
||||||
contentFade("out");
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if($('#plWorkType').val() != ''){
|
||||||
|
if($('#plPeopleCnt').val() == ''){
|
||||||
|
alert('육경 인원수를 입력해주세요');
|
||||||
|
$('#plPeopleCnt').focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($("#rentType").val() == 'Y'){
|
||||||
|
if($("#rentPrice").val() == ''){
|
||||||
|
alert("임차료를 입력해주세요.");
|
||||||
|
$('#rentPrice').focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($("#utilityType").val() == 'Y'){
|
||||||
|
if($("#utilityPrice").val() == ''){
|
||||||
|
alert("공공요금을 입력해주세요.");
|
||||||
|
$('#utilityPrice').focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(confirm("저장하시겠습니까?")){
|
||||||
|
document.getElementById("mgtOrgan").disabled = false;
|
||||||
|
contentFade("in");
|
||||||
|
const formData = new FormData($("#partInfoSave")[0]);
|
||||||
|
for(const file of files) {
|
||||||
|
if(!file.isDelete)
|
||||||
|
formData.append('uploadFiles', file, file.name);
|
||||||
|
}
|
||||||
|
$.ajax({
|
||||||
|
type : 'POST',
|
||||||
|
data : formData,
|
||||||
|
url : "/target/savePartInfo",
|
||||||
|
processData: false,
|
||||||
|
contentType: false,
|
||||||
|
success : function(result) {
|
||||||
|
alert("저장되었습니다.");
|
||||||
|
contentFade("out");
|
||||||
|
location.reload();
|
||||||
|
},
|
||||||
|
error : function(xhr, status) {
|
||||||
|
alert("저장에 실패하였습니다.")
|
||||||
|
contentFade("out");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '.partInfoTr', function (){
|
$(document).on('click', '.partInfoTr', function (){
|
||||||
const piSeq = (Number($(this).find(".piSeq").val()));
|
const piSeq = (Number($(this).find(".piSeq").val()));
|
||||||
showModal(piSeq);
|
showModal(piSeq);
|
||||||
})
|
})
|
||||||
|
|
||||||
function showModal(piSeq){
|
function showModal(piSeq){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/target/updatePartInfoPage',
|
url: '/target/updatePartInfoPage',
|
||||||
data: {
|
data: {
|
||||||
piSeq: piSeq
|
piSeq: piSeq
|
||||||
},
|
},
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
dataType:"html",
|
dataType:"html",
|
||||||
success: function(html){
|
success: function(html){
|
||||||
$("#partInfoEditModalEditModalContent").empty().append(html);
|
$("#partInfoEditModalEditModalContent").empty().append(html);
|
||||||
$("#partInfoEditModal").modal('show');
|
$("#partInfoEditModal").modal('show');
|
||||||
if($("#mRentType").val() != 'Y'){
|
if($("#mRentType").val() != 'Y'){
|
||||||
$("#mRentPrice").hide();
|
$("#mRentPrice").attr("disabled", "disabled");
|
||||||
}
|
}
|
||||||
if($("#mUtilityType").val() != 'Y'){
|
if($("#mUtilityType").val() != 'Y'){
|
||||||
$("#mUtilityPrice").hide();
|
$("#mUtilityPrice").attr("disabled", "disabled");
|
||||||
}
|
}
|
||||||
setUploadDiv();
|
setUploadDiv();
|
||||||
},
|
},
|
||||||
error:function(){
|
error:function(){
|
||||||
|
|
@ -189,7 +200,7 @@ function showModal(piSeq){
|
||||||
}
|
}
|
||||||
|
|
||||||
$(function(){
|
$(function(){
|
||||||
$("#startDate").datepicker({
|
$("#dateSelectorDiv").datepicker({
|
||||||
format: "yyyy-mm-dd",
|
format: "yyyy-mm-dd",
|
||||||
language: "ko",
|
language: "ko",
|
||||||
autoclose: true
|
autoclose: true
|
||||||
|
|
@ -197,113 +208,113 @@ $(function(){
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#goExcel', function (){
|
$(document).on('click', '#goExcel', function (){
|
||||||
if(confirm("엑셀로 다운로드 하시겠습니까?")){
|
if(confirm("엑셀로 다운로드 하시겠습니까?")){
|
||||||
$('input[name=excel]').val('Y');
|
$('input[name=excel]').val('Y');
|
||||||
$('#searchFm').submit();
|
$('#searchFm').submit();
|
||||||
$('input[name=excel]').val('');
|
$('input[name=excel]').val('');
|
||||||
}else{
|
}else{
|
||||||
false;
|
false;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('change', '#mRentType', function (){
|
$(document).on('change', '#mRentType', function (){
|
||||||
if($("#mRentType").val() == 'Y'){
|
if($("#mRentType").val() == 'Y'){
|
||||||
$("#mRentPrice").show();
|
$("#mRentPrice").removeAttr("disabled");
|
||||||
}else{
|
}else{
|
||||||
$("#mRentPrice").hide();
|
$("#mRentPrice").val('');
|
||||||
$("#mRentPrice").val('');
|
$("#mRentPrice").attr("disabled", "disabled");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('change', '#mUtilityType', function (){
|
$(document).on('change', '#mUtilityType', function (){
|
||||||
if($("#mUtilityType").val() == 'Y'){
|
if($("#mUtilityType").val() == 'Y'){
|
||||||
$("#mUtilityPrice").show();
|
$("#mUtilityPrice").removeAttr("disabled");
|
||||||
}else{
|
}else{
|
||||||
$("#mUtilityPrice").hide();
|
$("#mUtilityPrice").val('');
|
||||||
$("#mUtilityPrice").val('');
|
$("#mUtilityPrice").attr("disabled", "disabled");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('click', '#updatePartInfo', function (){
|
$(document).on('click', '#updatePartInfo', function (){
|
||||||
if($('#mMgtOrgan').val() == ''){
|
if($('#mMgtOrgan').val() == ''){
|
||||||
alert('해경서를 선택해주세요');
|
alert('해경서를 선택해주세요');
|
||||||
$('#mMgtOrgan').focus();
|
$('#mMgtOrgan').focus();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if($('#mPiUserSeq').val() == ''){
|
if($('#mPiUserSeq').val() == ''){
|
||||||
alert('담당자를 선택해주세요');
|
alert('담당자를 선택해주세요');
|
||||||
$('#mPiUserSeq').focus();
|
$('#mPiUserSeq').focus();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if($('#mTerminalNm').val() == ''){
|
if($('#mTerminalNm').val() == ''){
|
||||||
alert('터미널명을 입력해주세요');
|
alert('터미널명을 입력해주세요');
|
||||||
$('#mTerminalNm').focus();
|
$('#mTerminalNm').focus();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if($('#mMpWorkType').val() != ''){
|
if($('#mMpWorkType').val() != ''){
|
||||||
if($('#mMpPeopleCnt').val() == ''){
|
if($('#mMpPeopleCnt').val() == ''){
|
||||||
alert('해경 인원수를 입력해주세요');
|
alert('해경 인원수를 입력해주세요');
|
||||||
$('#mMpPeopleCnt').focus();
|
$('#mMpPeopleCnt').focus();
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
}
|
|
||||||
if($('#mPlWorkType').val() != ''){
|
|
||||||
if($('#mPlPeopleCnt').val() == ''){
|
|
||||||
alert('육경 인원수를 입력해주세요');
|
|
||||||
$('#mPlPeopleCnt').focus();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($("#mRentType").val() == 'Y'){
|
|
||||||
if($("#mRentPrice").val() == ''){
|
|
||||||
alert("임차료를 입력해주세요.");
|
|
||||||
$('#mRentPrice').focus();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($("#mUtilityType").val() == 'Y'){
|
|
||||||
if($("#mUtilityPrice").val() == ''){
|
|
||||||
alert("공공요금을 입력해주세요.");
|
|
||||||
$('#mUtilityPrice').focus();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(confirm("수정하시겠습니까?")){
|
|
||||||
document.getElementById("mMgtOrgan").disabled = false;
|
|
||||||
contentFade("in");
|
|
||||||
const formData = new FormData($("#partInfoUpdate")[0]);
|
|
||||||
for(const file of files) {
|
|
||||||
if(!file.isDelete)
|
|
||||||
formData.append('uploadFiles', file, file.name);
|
|
||||||
}
|
|
||||||
$(".text-decoration-line-through").each(function (idx, el){
|
|
||||||
formData.append('fileSeq', $(el).attr("data-fileseq"));
|
|
||||||
})
|
|
||||||
$.ajax({
|
|
||||||
type : 'POST',
|
|
||||||
data : formData,
|
|
||||||
url : "/target/updatePartInfo",
|
|
||||||
processData: false,
|
|
||||||
contentType: false,
|
|
||||||
success : function(result) {
|
|
||||||
alert("수정되었습니다.");
|
|
||||||
contentFade("out");
|
|
||||||
showModal(result);
|
|
||||||
},
|
|
||||||
error : function(xhr, status) {
|
|
||||||
alert("수정에 실패하였습니다.")
|
|
||||||
contentFade("out");
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if($('#mPlWorkType').val() != ''){
|
||||||
|
if($('#mPlPeopleCnt').val() == ''){
|
||||||
|
alert('육경 인원수를 입력해주세요');
|
||||||
|
$('#mPlPeopleCnt').focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($("#mRentType").val() == 'Y'){
|
||||||
|
if($("#mRentPrice").val() == ''){
|
||||||
|
alert("임차료를 입력해주세요.");
|
||||||
|
$('#mRentPrice').focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($("#mUtilityType").val() == 'Y'){
|
||||||
|
if($("#mUtilityPrice").val() == ''){
|
||||||
|
alert("공공요금을 입력해주세요.");
|
||||||
|
$('#mUtilityPrice').focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(confirm("수정하시겠습니까?")){
|
||||||
|
document.getElementById("mMgtOrgan").disabled = false;
|
||||||
|
contentFade("in");
|
||||||
|
const formData = new FormData($("#partInfoUpdate")[0]);
|
||||||
|
for(const file of files) {
|
||||||
|
if(!file.isDelete)
|
||||||
|
formData.append('uploadFiles', file, file.name);
|
||||||
|
}
|
||||||
|
$(".text-decoration-line-through").each(function (idx, el){
|
||||||
|
formData.append('fileSeq', $(el).attr("data-fileseq"));
|
||||||
|
})
|
||||||
|
$.ajax({
|
||||||
|
type : 'POST',
|
||||||
|
data : formData,
|
||||||
|
url : "/target/updatePartInfo",
|
||||||
|
processData: false,
|
||||||
|
contentType: false,
|
||||||
|
success : function(result) {
|
||||||
|
alert("수정되었습니다.");
|
||||||
|
contentFade("out");
|
||||||
|
showModal(result);
|
||||||
|
},
|
||||||
|
error : function(xhr, status) {
|
||||||
|
alert("수정에 실패하였습니다.")
|
||||||
|
contentFade("out");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
function showHistory(piSeq){
|
function showHistory(piSeq){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/target/partInfoHistoryPage',
|
url: '/target/partInfoHistoryPage',
|
||||||
data: {
|
data: {
|
||||||
piSeq: piSeq
|
piSeq: piSeq
|
||||||
},
|
},
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
dataType:"html",
|
dataType:"html",
|
||||||
success: function(html){
|
success: function(html){
|
||||||
|
|
@ -317,46 +328,21 @@ function showHistory(piSeq){
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).on('click', '.historyInfoTr', function (){
|
$(document).on('click', '.historyInfoTr', function (){
|
||||||
$(this).find('.hisChk').prop('checked',true)
|
$(this).find('.hisChk').prop('checked', true)
|
||||||
if($(this).find('.hisChk').prop('checked')){
|
if($(this).find('.hisChk').prop('checked')){
|
||||||
$('.hisChk').prop('checked',false);
|
$('.hisChk').prop('checked',false);
|
||||||
$(this).find('.hisChk').prop('checked',true)
|
$(this).find('.hisChk').prop('checked',true)
|
||||||
}
|
}
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/target/partInfoHistoryView',
|
url: '/target/partInfoHistoryView',
|
||||||
data: {
|
data: {
|
||||||
piSeq: Number($(this).find(".piSeq").val()),
|
piSeq: Number($(this).find(".piSeq").val()),
|
||||||
versionNo : Number($(this).find(".verNo").val())
|
versionNo : Number($(this).find(".verNo").val())
|
||||||
},
|
},
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
dataType:"json",
|
dataType:"html",
|
||||||
success: function(data){
|
success: function(html){
|
||||||
$('#hMgtOrgan').val(data.mgtOrgan);
|
$("#valueDiv").empty().append(html);
|
||||||
$('#hLandPolice').val(data.landPolice);
|
|
||||||
$('#hPiUserSeq').val(data.piManagerName);
|
|
||||||
$('#hMpWorkType').val(data.mpWorkType);
|
|
||||||
$('#hMpPeopleCnt').val(data.mpPeopleCnt);
|
|
||||||
$('#hMpDescription').val(data.mpDescription);
|
|
||||||
$('#hPlWorkType').val(data.plWorkType);
|
|
||||||
$('#hPlPeopleCnt').val(data.plPeopleCnt);
|
|
||||||
$('#hPlDescription').val(data.plDescription);
|
|
||||||
$('#hTerminalNm').val(data.terminalNm);
|
|
||||||
$('#hRentType').val(data.rentType);
|
|
||||||
$('#hRentPrice').val(data.rentPrice);
|
|
||||||
$('#hUtilityType').val(data.utilityType);
|
|
||||||
$('#hUtilityPrice').val(data.utilityPrice);
|
|
||||||
if(data.fileList[0].origNm != null){
|
|
||||||
$('#historyFile').empty();
|
|
||||||
for(var i=0;i<data.fileList.length;i++){
|
|
||||||
$('#historyFile').append(
|
|
||||||
'<input type="text" class="form-control" value="'+data.fileList[i].origNm+'.'+data.fileList[i].fileExtn+'" readonly>'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
$('#historyFile').empty().append(
|
|
||||||
'<input type="text" class="form-control" value="업로드 파일없음" readonly>'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
error:function(){
|
error:function(){
|
||||||
|
|
||||||
|
|
@ -365,27 +351,27 @@ $(document).on('click', '.historyInfoTr', function (){
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#deletePartInfo', function (){
|
$(document).on('click', '#deletePartInfo', function (){
|
||||||
const piSeq = $('input[name=piSeq]').val();
|
const piSeq = $('input[name=piSeq]').val();
|
||||||
if(confirm("삭제하시겠습니까?")){
|
if(confirm("삭제하시겠습니까?")){
|
||||||
contentFade("in");
|
contentFade("in");
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'POST',
|
type : 'POST',
|
||||||
url : "/target/deletePartInfo",
|
url : "/target/deletePartInfo",
|
||||||
data : JSON.stringify({piSeq:piSeq}),
|
data : JSON.stringify({piSeq:piSeq}),
|
||||||
contentType: 'application/json',
|
contentType: 'application/json',
|
||||||
beforeSend: function (xhr){
|
beforeSend: function (xhr){
|
||||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
||||||
},
|
},
|
||||||
success : function(data) {
|
success : function(data) {
|
||||||
alert("삭제 처리되었습니다.");
|
alert("삭제 처리되었습니다.");
|
||||||
location.reload();
|
location.reload();
|
||||||
},
|
},
|
||||||
error : function(xhr, status) {
|
error : function(xhr, status) {
|
||||||
alert("삭제 처리에 실패하였습니다");
|
alert("삭제 처리에 실패하였습니다");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '.fileDownPartInfo', function (){
|
$(document).on('click', '.fileDownPartInfo', function (){
|
||||||
|
|
@ -398,11 +384,11 @@ $(document).on('click', '.fileDownPartInfo', function (){
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '.btn-close', function (){
|
$(document).on('click', '.btn-close', function (){
|
||||||
location.reload();
|
location.reload();
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#btn-close', function (){
|
$(document).on('click', '#btn-close', function (){
|
||||||
location.reload();
|
location.reload();
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
$(document).on('click', '#addPartWork', function (){
|
$(document).on('click', '#addPartWork', function (){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/target/partWorkEditModal',
|
url: '/target/partWorkEditModal',
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
dataType:"html",
|
dataType:"html",
|
||||||
|
|
@ -13,18 +13,7 @@ $(document).on('click', '#addPartWork', function (){
|
||||||
language: "ko",
|
language: "ko",
|
||||||
autoclose: true
|
autoclose: true
|
||||||
});
|
});
|
||||||
$("#workInfo").summernote({
|
setEditor('editor', '400');
|
||||||
lang:'ko-KR',
|
|
||||||
height: 350,
|
|
||||||
disableDragAndDrop: true,
|
|
||||||
toolbar: [
|
|
||||||
['style', ['style']],
|
|
||||||
['font', ['bold', 'underline', 'clear']],
|
|
||||||
['color', ['color']],
|
|
||||||
['para', ['ul', 'ol', 'paragraph']],
|
|
||||||
['table', ['table']]
|
|
||||||
]
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
error:function(){
|
error:function(){
|
||||||
|
|
||||||
|
|
@ -33,99 +22,89 @@ $(document).on('click', '#addPartWork', function (){
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#saveBtn', function (){
|
$(document).on('click', '#saveBtn', function (){
|
||||||
if($('#piSeq').val() == ''){
|
if($('#piSeq').val() == ''){
|
||||||
alert('터미널명을 선택해주세요');
|
alert('터미널명을 선택해주세요');
|
||||||
$('#piSeq').focus();
|
$('#piSeq').focus();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if($('input:radio[name="workType"]:checked').length < 1){
|
if($('input:radio[name="workType"]:checked').length < 1){
|
||||||
alert('종류를 선택해주세요');
|
alert('종류를 선택해주세요');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if(confirm("저장하시겠습니까?")){
|
if(confirm("저장하시겠습니까?")){
|
||||||
$('#saveYn').val('Y');
|
$('#saveYn').val('Y');
|
||||||
contentFade("in");
|
contentFade("in");
|
||||||
savePartWork();
|
savePartWork();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#temporarySaveBtn', function (){
|
$(document).on('click', '#temporarySaveBtn', function (){
|
||||||
if($('#piSeq').val() == ''){
|
if($('#piSeq').val() == ''){
|
||||||
alert('터미널명을 선택해주세요');
|
alert('터미널명을 선택해주세요');
|
||||||
$('#piSeq').focus();
|
$('#piSeq').focus();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if($('input:radio[name="workType"]:checked').length < 1){
|
if($('input:radio[name="workType"]:checked').length < 1){
|
||||||
alert('종류를 선택해주세요');
|
alert('종류를 선택해주세요');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if(confirm("임시 저장하시겠습니까?")){
|
if(confirm("임시 저장하시겠습니까?")){
|
||||||
$('#saveYn').val('N');
|
$('#saveYn').val('N');
|
||||||
contentFade("in");
|
contentFade("in");
|
||||||
savePartWork();
|
savePartWork();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
function savePartWork(){
|
function savePartWork(){
|
||||||
const formData = new FormData($("#partWorkSaveFm")[0]);
|
const formData = new FormData($("#partWorkSaveFm")[0]);
|
||||||
for(const file of files) {
|
for(const file of files) {
|
||||||
if(!file.isDelete)
|
if(!file.isDelete)
|
||||||
formData.append('uploadFiles', file, file.name);
|
formData.append('uploadFiles', file, file.name);
|
||||||
}
|
}
|
||||||
$.ajax({
|
formData.append('workInfo', CrossEditor.GetBodyValue());
|
||||||
type : 'POST',
|
$.ajax({
|
||||||
data : formData,
|
type : 'POST',
|
||||||
url : "/target/savePartWork",
|
data : formData,
|
||||||
processData: false,
|
url : "/target/savePartWork",
|
||||||
contentType: false,
|
processData: false,
|
||||||
success : function(result) {
|
contentType: false,
|
||||||
alert("저장되었습니다.");
|
success : function(result) {
|
||||||
contentFade("out");
|
alert("저장되었습니다.");
|
||||||
location.reload();
|
contentFade("out");
|
||||||
},
|
location.reload();
|
||||||
error : function(xhr, status) {
|
},
|
||||||
alert("저장에 실패하였습니다.")
|
error : function(xhr, status) {
|
||||||
contentFade("out");
|
alert("저장에 실패하였습니다.")
|
||||||
}
|
contentFade("out");
|
||||||
})
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).on('click', '.partWorkTr', function (){
|
$(document).on('click', '.partWorkTr', function (){
|
||||||
const pwSeq = (Number($(this).find(".pwSeq").val()));
|
const pwSeq = (Number($(this).find(".pwSeq").val()));
|
||||||
const piSeq = (Number($(this).find(".piSeq").val()));
|
const piSeq = (Number($(this).find(".piSeq").val()));
|
||||||
showModal(pwSeq,piSeq);
|
showModal(pwSeq,piSeq);
|
||||||
})
|
})
|
||||||
|
|
||||||
function showModal(pwSeq,piSeq){
|
function showModal(pwSeq,piSeq){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/target/partWorkView',
|
url: '/target/partWorkView',
|
||||||
data: {
|
data: {
|
||||||
pwSeq: pwSeq,
|
pwSeq: pwSeq,
|
||||||
piSeq: piSeq
|
piSeq: piSeq
|
||||||
},
|
},
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
dataType:"html",
|
dataType:"html",
|
||||||
success: function(html){
|
success: function(html){
|
||||||
$("#partWorkEditModalEditModalContent").empty().append(html);
|
$("#partWorkEditModalEditModalContent").empty().append(html);
|
||||||
$("#partWorkEditModal").modal('show');
|
|
||||||
setUploadDiv();
|
setUploadDiv();
|
||||||
$("#mWorkDt").datepicker({
|
$("#workDt").datepicker({
|
||||||
format: "yyyy-mm-dd",
|
format: "yyyy-mm-dd",
|
||||||
language: "ko",
|
language: "ko",
|
||||||
autoclose: true
|
autoclose: true
|
||||||
});
|
});
|
||||||
$("#mWorkInfo").summernote({
|
setEditor('editor', '400');
|
||||||
lang:'ko-KR',
|
$("#partWorkEditModal").modal('show');
|
||||||
height: 350,
|
|
||||||
disableDragAndDrop: true,
|
|
||||||
toolbar: [
|
|
||||||
['style', ['style']],
|
|
||||||
['font', ['bold', 'underline', 'clear']],
|
|
||||||
['color', ['color']],
|
|
||||||
['para', ['ul', 'ol', 'paragraph']],
|
|
||||||
['table', ['table']]
|
|
||||||
]
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
error:function(){
|
error:function(){
|
||||||
|
|
||||||
|
|
@ -134,60 +113,60 @@ function showModal(pwSeq,piSeq){
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).on('click', '#updateBtn', function (){
|
$(document).on('click', '#updateBtn', function (){
|
||||||
if(confirm("수정하시겠습니까?")){
|
if(confirm("수정하시겠습니까?")){
|
||||||
contentFade("in");
|
contentFade("in");
|
||||||
const formData = new FormData($("#partWorkUpdateFm")[0]);
|
const formData = new FormData($("#partWorkUpdateFm")[0]);
|
||||||
formData.append('saveYn','Y');
|
formData.append('saveYn','Y');
|
||||||
for(const file of files) {
|
for(const file of files) {
|
||||||
if(!file.isDelete)
|
if(!file.isDelete)
|
||||||
formData.append('uploadFiles', file, file.name);
|
formData.append('uploadFiles', file, file.name);
|
||||||
}
|
|
||||||
$(".text-decoration-line-through").each(function (idx, el){
|
|
||||||
formData.append('fileSeq', $(el).attr("data-fileseq"));
|
|
||||||
})
|
|
||||||
$.ajax({
|
|
||||||
type : 'POST',
|
|
||||||
data : formData,
|
|
||||||
url : "/target/updatePartWork",
|
|
||||||
processData: false,
|
|
||||||
contentType: false,
|
|
||||||
success : function(data) {
|
|
||||||
alert("수정되었습니다.");
|
|
||||||
contentFade("out");
|
|
||||||
showModal(data.pwSeq,data.piSeq);
|
|
||||||
},
|
|
||||||
error : function(xhr, status) {
|
|
||||||
alert("수정에 실패하였습니다.")
|
|
||||||
contentFade("out");
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
$(".text-decoration-line-through").each(function (idx, el){
|
||||||
|
formData.append('fileSeq', $(el).attr("data-fileseq"));
|
||||||
|
})
|
||||||
|
formData.append('workInfo', CrossEditor.GetBodyValue());
|
||||||
|
$.ajax({
|
||||||
|
type : 'POST',
|
||||||
|
data : formData,
|
||||||
|
url : "/target/updatePartWork",
|
||||||
|
processData: false,
|
||||||
|
contentType: false,
|
||||||
|
success : function(data) {
|
||||||
|
alert("수정되었습니다.");
|
||||||
|
contentFade("out");
|
||||||
|
showModal(data.pwSeq,data.piSeq);
|
||||||
|
},
|
||||||
|
error : function(xhr, status) {
|
||||||
|
alert("수정에 실패하였습니다.")
|
||||||
|
contentFade("out");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#deletePartWork', function (){
|
$(document).on('click', '#deletePartWork', function (){
|
||||||
const pwSeq = $('input[name=pwSeq]').val();
|
const pwSeq = $('input[name=pwSeq]').val();
|
||||||
const piSeq = $('#mPiSeq').val();
|
const piSeq = $('#mPiSeq').val();
|
||||||
console.log(piSeq);
|
console.log(piSeq);
|
||||||
if(confirm("삭제하시겠습니까?")){
|
if(confirm("삭제하시겠습니까?")){
|
||||||
contentFade("in");
|
contentFade("in");
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'POST',
|
type : 'POST',
|
||||||
url : "/target/deletePartWork",
|
url : "/target/deletePartWork",
|
||||||
data : JSON.stringify({pwSeq:pwSeq,
|
data : JSON.stringify({pwSeq:pwSeq, piSeq:piSeq}),
|
||||||
piSeq:piSeq}),
|
contentType: 'application/json',
|
||||||
contentType: 'application/json',
|
beforeSend: function (xhr){
|
||||||
beforeSend: function (xhr){
|
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
||||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
},
|
||||||
},
|
success : function(data) {
|
||||||
success : function(data) {
|
alert("삭제 처리되었습니다.");
|
||||||
alert("삭제 처리되었습니다.");
|
location.reload();
|
||||||
location.reload();
|
},
|
||||||
},
|
error : function(xhr, status) {
|
||||||
error : function(xhr, status) {
|
alert("삭제 처리에 실패하였습니다");
|
||||||
alert("삭제 처리에 실패하였습니다");
|
}
|
||||||
}
|
})
|
||||||
})
|
}
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '.fileDownPartWork', function (){
|
$(document).on('click', '.fileDownPartWork', function (){
|
||||||
|
|
@ -200,19 +179,19 @@ $(document).on('click', '.fileDownPartWork', function (){
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#goExcel', function (){
|
$(document).on('click', '#goExcel', function (){
|
||||||
if(confirm("엑셀로 다운로드 하시겠습니까?")){
|
if(confirm("엑셀로 다운로드 하시겠습니까?")){
|
||||||
$('input[name=excel]').val('Y');
|
$('input[name=excel]').val('Y');
|
||||||
$('#searchFm').submit();
|
$('#searchFm').submit();
|
||||||
$('input[name=excel]').val('');
|
$('input[name=excel]').val('');
|
||||||
}else{
|
}else{
|
||||||
false;
|
false;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '.btn-close', function (){
|
$(document).on('click', '.btn-close', function (){
|
||||||
location.reload();
|
location.reload();
|
||||||
})
|
})
|
||||||
|
|
||||||
$(document).on('click', '#btn-close', function (){
|
$(document).on('click', '#btn-close', function (){
|
||||||
location.reload();
|
location.reload();
|
||||||
})
|
})
|
||||||
|
|
@ -100,6 +100,13 @@ $(document).on('click', '#viewTab', function (){
|
||||||
showViewModal(siSeq,siType);
|
showViewModal(siSeq,siType);
|
||||||
})
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '#historyTab', function (){
|
||||||
|
const siSeq = (Number($(this).data('siseq')));
|
||||||
|
const siType = $(this).data('sitype');
|
||||||
|
$(this).parents(".modal-dialog")[0].className = "modal-dialog modal-xl modal-dialog-scrollable";
|
||||||
|
showHistory(siSeq,siType);
|
||||||
|
})
|
||||||
|
|
||||||
function showViewModal(siSeq,siType){
|
function showViewModal(siSeq,siType){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/target/shipInfoView',
|
url: '/target/shipInfoView',
|
||||||
|
|
@ -119,13 +126,6 @@ function showViewModal(siSeq,siType){
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).on('click', '#historyTab', function (){
|
|
||||||
const siSeq = (Number($(this).data('siseq')));
|
|
||||||
const siType = $(this).data('sitype');
|
|
||||||
$(this).parents(".modal-dialog")[0].className = "modal-dialog modal-xl modal-dialog-scrollable";
|
|
||||||
showHistory(siSeq,siType);
|
|
||||||
})
|
|
||||||
|
|
||||||
function showHistory(siSeq,siType){
|
function showHistory(siSeq,siType){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/target/ipShipHistory',
|
url: '/target/ipShipHistory',
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-9 border" id="valueDiv">
|
<div class="col-9 border" id="valueDiv">
|
||||||
목록에서 선택해주세요.
|
<h5 class="text-center py-5">목록에서 선택해주세요.</h5>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -7,123 +7,132 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form id="partInfoSave" method="post">
|
<form id="partInfoSave" method="post">
|
||||||
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||||
<div class="mb-2 row">
|
<div class="row mb-1">
|
||||||
<label for="ogCd" class="col-sm-2 col-form-label text-center">해경서</label>
|
<label class="col-2 col-form-label col-form-label-sm text-center">터미널 정보</label>
|
||||||
<div class="col-sm-3">
|
<div class="col-10 border">
|
||||||
<select class="form-select form-select-sm" id="mgtOrgan" name="mgtOrgan" th:disabled="${accessAuth ne 'ACC003'}">
|
<div class="row my-1">
|
||||||
<option value="">선택</option>
|
<label for="terminalNm" class="col-sm-2 col-form-label col-form-label-sm text-center">터미널명</label>
|
||||||
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
<div class="col-sm-3">
|
||||||
<th:block th:if="${#lists.contains(mgtOrganList, commonCode.itemCd)}">
|
<input type="text" class="form-control form-control-sm" id="terminalNm" name="terminalNm" placeholder="직접입력">
|
||||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq userOrgan}"></option>
|
|
||||||
</th:block>
|
|
||||||
</th:block>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<label for="ofcCd" class="col-sm-2 col-form-label text-center">육경서</label>
|
|
||||||
<div class="col-sm-3">
|
|
||||||
<input type="text" class="form-control" id="landPolice" name="landPolice" placeholder="직접입력">
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-2 row">
|
</div>
|
||||||
<label for="ogCd" class="col-sm-2 col-form-label text-center">담당자</label>
|
<div class="row my-1">
|
||||||
<div class="col-sm-3">
|
<label for="rentType" class="col-sm-2 col-form-label col-form-label-sm text-center">임차료</label>
|
||||||
<select class="form-select form-select-sm" id="piUserSeq" name="piUserSeq" disabled>
|
<div class="col-sm-2">
|
||||||
<option value="">선택</option>
|
<select class="form-select form-select-sm" id="rentType" name="rentType">
|
||||||
</select>
|
<option value="">선택</option>
|
||||||
</div>
|
<option value="N">무상</option>
|
||||||
|
<option value="Y">유상</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-1">
|
<div class="col-sm-2">
|
||||||
<label for="ogCd" class="col-sm-2 col-form-label text-center">터미널명</label>
|
<input type="number" class="form-control form-control-sm" id="rentPrice" name="rentPrice" placeholder="단위: 만">
|
||||||
<div class="col-sm-3">
|
|
||||||
<input type="text" class="form-control" id="terminalNm" name="terminalNm" placeholder="직접입력">
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<br><br>
|
<label for="utilityType" class="col-sm-2 col-form-label col-form-label-sm text-center">공공요금</label>
|
||||||
<h6 class="text-center">해경</h6>
|
<div class="col-sm-2">
|
||||||
<div class="row mb-1">
|
<select class="form-select form-select-sm" id="utilityType" name="utilityType">
|
||||||
<label for="ogCd" class="col-sm-2 col-form-label text-center">근무방법</label>
|
<option value="">선택</option>
|
||||||
<div class="col-sm-2">
|
<option value="N">무상</option>
|
||||||
<select class="form-select form-select-sm" id="mpWorkType" name="mpWorkType">
|
<option value="Y">유상</option>
|
||||||
<option value="">선택</option>
|
</select>
|
||||||
<th:block th:each="commonCode:${session.commonCode.get('PIS')}">
|
|
||||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
|
||||||
</th:block>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<label for="ofcCd" class="col-sm-2 col-form-label text-center">인원수</label>
|
|
||||||
<div class="col-sm-2">
|
|
||||||
<input type="number" class="form-control" id="mpPeopleCnt" name="mpPeopleCnt">
|
|
||||||
</div>
|
|
||||||
<label for="ofcCd" class="col-sm-1 col-form-label text-center">비고</label>
|
|
||||||
<div class="col-sm-3">
|
|
||||||
<input type="text" class="form-control" id="mpDescription" name="mpDescription">
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<div class="col-sm-2">
|
||||||
<h6 class="text-center">육경</h6>
|
<input type="number" class="form-control form-control-sm" id="utilityPrice" name="utilityPrice" placeholder="단위: 만">
|
||||||
<div class="row mb-1">
|
|
||||||
<label for="ogCd" class="col-sm-2 col-form-label text-center">근무방법</label>
|
|
||||||
<div class="col-sm-2">
|
|
||||||
<select class="form-select form-select-sm" id="plWorkType" name="plWorkType">
|
|
||||||
<option value="">선택</option>
|
|
||||||
<th:block th:each="commonCode:${session.commonCode.get('PIS')}">
|
|
||||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
|
||||||
</th:block>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<label for="ofcCd" class="col-sm-2 col-form-label text-center">인원수</label>
|
|
||||||
<div class="col-sm-2">
|
|
||||||
<input type="number" class="form-control" id="plPeopleCnt" name="plPeopleCnt">
|
|
||||||
</div>
|
|
||||||
<label for="ofcCd" class="col-sm-1 col-form-label text-center">비고</label>
|
|
||||||
<div class="col-sm-3">
|
|
||||||
<input type="text" class="form-control" id="plDescription" name="plDescription">
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<br><br>
|
</div>
|
||||||
<div class="row mb-1">
|
</div>
|
||||||
<label for="ofcCd" class="col-sm-2 col-form-label text-center">임차료</label>
|
</div>
|
||||||
<div class="col-sm-2">
|
<div class="row mb-1">
|
||||||
<select class="form-select form-select-sm" id="rentType" name="rentType">
|
<label class="col-2 col-form-label col-form-label-sm text-center">해경 정보</label>
|
||||||
<option value="">선택</option>
|
<div class="col-10 border">
|
||||||
<option value="N">무상</option>
|
<div class="row my-1">
|
||||||
<option value="Y">유상</option>
|
<label for="mgtOrgan" class="col-sm-2 col-form-label col-form-label-sm text-center">해경서</label>
|
||||||
</select>
|
<div class="col-sm-2">
|
||||||
</div>
|
<select class="form-select form-select-sm" id="mgtOrgan" name="mgtOrgan" th:disabled="${accessAuth ne 'ACC003'}">
|
||||||
<div class="col-sm-3">
|
<option value="">선택</option>
|
||||||
<input type="number" class="form-control" id="rentPrice" name="rentPrice" placeholder="단위: 만">
|
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
||||||
</div>
|
<th:block th:if="${#lists.contains(mgtOrganList, commonCode.itemCd)}">
|
||||||
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq userOrgan}"></option>
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-1">
|
<label for="piUserSeq" class="col-sm-2 col-form-label col-form-label-sm text-center">담당자</label>
|
||||||
<label for="ofcCd" class="col-sm-2 col-form-label text-center">공공요금</label>
|
<div class="col-sm-2">
|
||||||
<div class="col-sm-2">
|
<select class="form-select form-select-sm" id="piUserSeq" name="piUserSeq" disabled>
|
||||||
<select class="form-select form-select-sm" id="utilityType" name="utilityType">
|
<option value="">선택</option>
|
||||||
<option value="">선택</option>
|
</select>
|
||||||
<option value="N">무상</option>
|
|
||||||
<option value="Y">유상</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-3">
|
|
||||||
<input type="number" class="form-control" id="utilityPrice" name="utilityPrice" placeholder="단위: 만">
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-3">
|
</div>
|
||||||
<label for="fileInputer" class="col-sm-2 col-form-label text-center">첨부파일</label>
|
<div class="row my-1">
|
||||||
<div class="col-sm-10" style="min-height: 70px;">
|
<label for="mpWorkType" class="col-sm-2 col-form-label col-form-label-sm text-center">근무방법</label>
|
||||||
<div class="w-100 h-100 border border-info rounded text-center" id="uploadDiv">
|
<div class="col-sm-2">
|
||||||
<br>파일을 업로드 해주세요.
|
<select class="form-select form-select-sm" id="mpWorkType" name="mpWorkType">
|
||||||
</div>
|
<option value="">선택</option>
|
||||||
</div>
|
<th:block th:each="commonCode:${session.commonCode.get('PIS')}">
|
||||||
<input type="file" class="d-none" id="fileInputer" multiple>
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
||||||
</div>
|
</th:block>
|
||||||
|
</select>
|
||||||
</form>
|
</div>
|
||||||
|
<label for="mpPeopleCnt" class="col-sm-2 col-form-label col-form-label-sm text-center">인원수</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="number" class="form-control form-control-sm" id="mpPeopleCnt" name="mpPeopleCnt">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row my-1">
|
||||||
|
<label for="mpDescription" class="col-sm-2 col-form-label col-form-label-sm text-center">비고</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="mpDescription" name="mpDescription">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-1">
|
||||||
|
<label class="col-2 col-form-label col-form-label-sm text-center">육경 정보</label>
|
||||||
|
<div class="col-10 border">
|
||||||
|
<div class="row my-1">
|
||||||
|
<label for="landPolice" class="col-sm-2 col-form-label col-form-label-sm text-center">육경서</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="landPolice" name="landPolice" placeholder="직접입력">
|
||||||
|
</div>
|
||||||
|
<label for="plWorkType" class="col-sm-2 col-form-label col-form-label-sm text-center">근무방법</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" id="plWorkType" name="plWorkType">
|
||||||
|
<option value="">선택</option>
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('PIS')}">
|
||||||
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<label for="plPeopleCnt" class="col-sm-2 col-form-label col-form-label-sm text-center">인원수</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="number" class="form-control form-control-sm" id="plPeopleCnt" name="plPeopleCnt">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row my-1">
|
||||||
|
<label for="plDescription" class="col-sm-2 col-form-label col-form-label-sm text-center">비고</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="plDescription" name="plDescription">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="fileInputer" class="col-sm-2 col-form-label col-form-label-sm text-center">첨부파일</label>
|
||||||
|
<div class="col-sm-10 px-0" style="min-height: 70px;">
|
||||||
|
<div class="w-100 h-100 border border-info rounded text-center" id="uploadDiv">
|
||||||
|
<br>파일을 업로드 해주세요.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="file" class="d-none" id="fileInputer" multiple>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer justify-content-between bg-light">
|
<div class="modal-footer justify-content-between bg-light">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<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 class="col-auto">
|
<div class="col-auto">
|
||||||
<button type="button" class="btn btn-primary" id="savePartInfo">저장</button>
|
<button type="button" class="btn btn-primary" id="savePartInfo">저장</button>
|
||||||
|
|
|
||||||
|
|
@ -2,151 +2,52 @@
|
||||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
|
||||||
<div class="modal-header bg-dark">
|
<div class="modal-header bg-dark">
|
||||||
<h5 class="modal-title text-white">외사분실운영 현황</h5>
|
<h5 class="modal-title text-white">외사분실운영 현황</h5>
|
||||||
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation">
|
||||||
<button class="nav-link" id="accessTab"
|
<button class="nav-link" id="viewTab" data-bs-toggle="tab" data-bs-target="#viewTabPanel" type="button" role="tab" aria-controls="viewTabPanel" aria-selected="false">현황상세</button>
|
||||||
th:onclick="|showModal(${partInfoList[0].piSeq})|"
|
</li>
|
||||||
data-bs-toggle="tab" data-bs-target="#accessTabPanel" type="button"
|
<li class="nav-item" role="presentation">
|
||||||
role="tab" aria-controls="accessTabPanel" aria-selected="true">현황상세</button>
|
<button class="nav-link active" id="historyTab" data-bs-toggle="tab" data-bs-target="#historyTabPanel" type="button" role="tab" aria-controls="historyTabPanel" aria-selected="true">수정이력</button>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" role="presentation">
|
</ul>
|
||||||
<button class="nav-link active" id="approvalTab"
|
<div class="tab-content bg-white border border-top-0 p-2">
|
||||||
th:onclick="|showHistory(${partInfoList[0].piSeq})|"
|
<input type="hidden" name="piSeq" id="piSeq" th:value="${partInfo.piSeq}">
|
||||||
data-bs-toggle="tab" data-bs-target="#approvalTabPanel"
|
<div class="row justify-content-start">
|
||||||
type="button" role="tab" aria-controls="approvalTabPanel"
|
<div class="col-3">
|
||||||
aria-selected="false">수정이력</button>
|
<table class="table table-sm table-hover table-bordered" id="categoryTable">
|
||||||
</li>
|
<thead>
|
||||||
</ul>
|
<tr>
|
||||||
<div class="row justify-content-start">
|
<th></th>
|
||||||
<div class="col-5">
|
<th>작성자</th>
|
||||||
<div class="card">
|
<th>등록일</th>
|
||||||
<div class="card-body">
|
</tr>
|
||||||
<div class="row">
|
</thead>
|
||||||
<table class="table table-sm table-hover table-bordered" id="categoryTable">
|
<tbody class="table-group-divider overflow-scroll">
|
||||||
<thead>
|
<tr class="historyInfoTr" th:each="partInfo:${partInfoList}">
|
||||||
<tr>
|
<td><input type="checkbox" class="hisChk"> <input
|
||||||
<th></th>
|
type="hidden" class="piSeq" th:value="${partInfo.piSeq}">
|
||||||
<th>작성자</th>
|
<input type="hidden" class="verNo"
|
||||||
<th>등록일</th>
|
th:value="${partInfo.versionNo}"></td>
|
||||||
</tr>
|
<td th:text="|${partInfo.wrtTitle} ${partInfo.wrtNm}|"></td>
|
||||||
</thead>
|
<td
|
||||||
<tbody class="table-group-divider overflow-scroll">
|
th:text="${#temporals.format(partInfo.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
||||||
<tr class="historyInfoTr" th:each="partInfo:${partInfoList}">
|
</tr>
|
||||||
<td><input type="checkbox" class="hisChk"> <input
|
</tbody>
|
||||||
type="hidden" class="piSeq" th:value="${partInfo.piSeq}">
|
</table>
|
||||||
<input type="hidden" class="verNo"
|
</div>
|
||||||
th:value="${partInfo.versionNo}"></td>
|
<div class="col-9" id="valueDiv">
|
||||||
<td th:text="|${partInfo.wrtTitle} ${partInfo.wrtNm}|"></td>
|
<h5 class="text-center py-5">목록에서 선택해주세요.</h5>
|
||||||
<td
|
</div>
|
||||||
th:text="${#temporals.format(partInfo.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
</div>
|
||||||
</tr>
|
</div>
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-7" id="valueDiv">
|
|
||||||
<br>
|
|
||||||
<div class="mb-2 row">
|
|
||||||
<label for="ogCd" class="col-sm-3 col-form-label text-center">해경서</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" class="form-control" id="hMgtOrgan" readonly>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-2 row">
|
|
||||||
<label for="ofcCd" class="col-sm-3 col-form-label text-center">육경서</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" class="form-control" id="hLandPolice" readonly>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-2 row">
|
|
||||||
<label for="ogCd" class="col-sm-3 col-form-label text-center">담당자</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" class="form-control" id="hPiUserSeq" readonly>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-1">
|
|
||||||
<label for="ogCd" class="col-sm-3 col-form-label text-center">터미널명</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" class="form-control" id="hTerminalNm" readonly>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<br>
|
|
||||||
<h6 class="text-center">해경</h6>
|
|
||||||
<div class="row mb-1">
|
|
||||||
<label for="ogCd" class="col-sm-3 col-form-label text-center">근무방법</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" class="form-control" id="hMpWorkType" readonly>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-1 row">
|
|
||||||
<label for="ofcCd" class="col-sm-3 col-form-label text-center">인원수</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" class="form-control" id="hMpPeopleCnt" readonly>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-1">
|
|
||||||
<label for="ofcCd" class="col-sm-3 col-form-label text-center">비고</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" class="form-control" id="hMpDescription"
|
|
||||||
readonly>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h6 class="text-center">육경</h6>
|
|
||||||
<div class="row mb-1">
|
|
||||||
<label for="ogCd" class="col-sm-3 col-form-label text-center">근무방법</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" class="form-control" id="hPlWorkType" readonly>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-1">
|
|
||||||
<label for="ofcCd" class="col-sm-3 col-form-label text-center">인원수</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" class="form-control" id="hPlPeopleCnt" readonly>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-1">
|
|
||||||
<label for="ofcCd" class="col-sm-3 col-form-label text-center">비고</label>
|
|
||||||
<div class="col-sm-6">
|
|
||||||
<input type="text" class="form-control" id="hPlDescription"
|
|
||||||
readonly>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<br>
|
|
||||||
<div class="row mb-1">
|
|
||||||
<label for="ofcCd" class="col-sm-3 col-form-label text-center">임차료</label>
|
|
||||||
<div class="col-sm-3">
|
|
||||||
<input type="text" class="form-control" id="hRentType" readonly>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-3">
|
|
||||||
<input type="number" class="form-control" id="hRentPrice" readonly>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-1">
|
|
||||||
<label for="ofcCd" class="col-sm-3 col-form-label text-center">공공요금</label>
|
|
||||||
<div class="col-sm-3">
|
|
||||||
<input type="text" class="form-control" id="hUtilityType" readonly>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-3">
|
|
||||||
<input type="number" class="form-control" id="hUtilityPrice"
|
|
||||||
readonly>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-1">
|
|
||||||
<label for="ofcCd" class="col-sm-2 col-form-label text-center">업로드파일</label>
|
|
||||||
<div class="col-sm-10" id="historyFile"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer justify-content-between bg-light">
|
<div class="modal-footer justify-content-between bg-light">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<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>
|
||||||
</html>
|
</html>
|
||||||
|
|
@ -0,0 +1,134 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<div class="row mb-1">
|
||||||
|
<label class="col-2 col-form-label col-form-label-sm text-center">터미널 정보</label>
|
||||||
|
<div class="col-10 border">
|
||||||
|
<div class="row my-1">
|
||||||
|
<label for="terminalNm" class="col-sm-2 col-form-label col-form-label-sm text-center">터미널명</label>
|
||||||
|
<div class="col-sm-3">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="terminalNm" name="terminalNm" placeholder="직접입력" th:value="${partInfo.terminalNm}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row my-1">
|
||||||
|
<label for="rentType" class="col-sm-2 col-form-label col-form-label-sm text-center">임차료</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" id="rentType" name="rentType">
|
||||||
|
<option value="">선택</option>
|
||||||
|
<option value="N" th:selected="${'N' eq partInfo.rentType}">무상</option>
|
||||||
|
<option value="Y" th:selected="${'Y' eq partInfo.rentType}">유상</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="number" class="form-control form-control-sm" id="rentPrice" name="rentPrice" placeholder="단위: 만" th:value="${partInfo.rentPrice}">
|
||||||
|
</div>
|
||||||
|
<label for="utilityType" class="col-sm-2 col-form-label col-form-label-sm text-center">공공요금</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" id="utilityType" name="utilityType">
|
||||||
|
<option value="">선택</option>
|
||||||
|
<option value="N" th:selected="${'N' eq partInfo.utilityType}">무상</option>
|
||||||
|
<option value="Y" th:selected="${'Y' eq partInfo.utilityType}">유상</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="number" class="form-control form-control-sm" id="utilityPrice" name="utilityPrice" placeholder="단위: 만" th:value="${partInfo.utilityPrice}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-1">
|
||||||
|
<label class="col-2 col-form-label col-form-label-sm text-center">해경 정보</label>
|
||||||
|
<div class="col-10 border">
|
||||||
|
<div class="row my-1">
|
||||||
|
<label for="mgtOrgan" class="col-sm-2 col-form-label col-form-label-sm text-center">해경서</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" id="mgtOrgan" name="mgtOrgan" th:disabled="${accessAuth ne 'ACC003'}">
|
||||||
|
<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 partInfo.mgtOrgan}"></option>
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<label for="piUserSeq" class="col-sm-2 col-form-label col-form-label-sm text-center">담당자</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" id="piUserSeq" name="piUserSeq" disabled>
|
||||||
|
<option value="">선택</option>
|
||||||
|
<th:block th:each="info:${managerList}">
|
||||||
|
<option th:value="${info.user_seq}" th:text="|${info.title_cd} ${info.user_nm}|" th:selected="${info.user_seq eq partInfo.piUserSeq}"></option>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row my-1">
|
||||||
|
<label for="mpWorkType" class="col-sm-2 col-form-label col-form-label-sm text-center">근무방법</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" id="mpWorkType" name="mpWorkType">
|
||||||
|
<option value="">선택</option>
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('PIS')}">
|
||||||
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq partInfo.mpWorkType}"></option>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<label for="mpPeopleCnt" class="col-sm-2 col-form-label col-form-label-sm text-center">인원수</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="number" class="form-control form-control-sm" id="mpPeopleCnt" name="mpPeopleCnt" th:value="${partInfo.mpPeopleCnt}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row my-1">
|
||||||
|
<label for="mpDescription" class="col-sm-2 col-form-label col-form-label-sm text-center">비고</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="mpDescription" name="mpDescription" th:value="${partInfo.mpDescription}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-1">
|
||||||
|
<label class="col-2 col-form-label col-form-label-sm text-center">육경 정보</label>
|
||||||
|
<div class="col-10 border">
|
||||||
|
<div class="row my-1">
|
||||||
|
<label for="landPolice" class="col-sm-2 col-form-label col-form-label-sm text-center">육경서</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="landPolice" name="landPolice" placeholder="직접입력" th:value="${partInfo.landPolice}">
|
||||||
|
</div>
|
||||||
|
<label for="plWorkType" class="col-sm-2 col-form-label col-form-label-sm text-center">근무방법</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" id="plWorkType" name="plWorkType">
|
||||||
|
<option value="">선택</option>
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('PIS')}">
|
||||||
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq partInfo.plWorkType}"></option>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<label for="plPeopleCnt" class="col-sm-2 col-form-label col-form-label-sm text-center">인원수</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="number" class="form-control form-control-sm" id="plPeopleCnt" name="plPeopleCnt" th:value="${partInfo.plPeopleCnt}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row my-1">
|
||||||
|
<label for="plDescription" class="col-sm-2 col-form-label col-form-label-sm text-center">비고</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="plDescription" name="plDescription" th:value="${partInfo.plDescription}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="fileInputer" class="col-sm-2 col-form-label text-center">첨부파일</label>
|
||||||
|
<div class="col-sm-10 px-0" style="min-height: 70px;">
|
||||||
|
<div class="w-100 h-100 border border-info rounded text-center" id="uploadDiv">
|
||||||
|
<th:block th:if="${#strings.isEmpty(partInfo.fileList[0].origNm)}">
|
||||||
|
<br>파일을 업로드 해주세요.
|
||||||
|
</th:block>
|
||||||
|
<th:block th:unless="${#strings.isEmpty(partInfo.fileList[0].origNm)}">
|
||||||
|
<div class='row-col-6' th:each="infoFile:${partInfo.fileList}">
|
||||||
|
<span th:data-fileseq="${infoFile.fileSeq}" th:text="|${infoFile.origNm}.${infoFile.fileExtn} ${infoFile.fileSize}|"></span>
|
||||||
|
<a href='#' class='fileDownPartInfo text-decoration-none' th:data-fileSeq="${infoFile.fileSeq}" th:data-piSeq="${infoFile.piSeq}" th:data-verNo="${infoFile.versionNo}">다운</a>
|
||||||
|
<a href='#' class='uploadedFileDelete text-danger text-decoration-none'>삭제</a>
|
||||||
|
</div>
|
||||||
|
</th:block>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="file" class="d-none" id="fileInputer" multiple>
|
||||||
|
</div>
|
||||||
|
</html>
|
||||||
|
|
@ -1,152 +1,161 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
|
||||||
<div class="modal-header bg-dark">
|
<div class="modal-header bg-dark">
|
||||||
<h5 class="modal-title text-white">외사분실운영 현황</h5>
|
<h5 class="modal-title text-white">외사분실운영 현황</h5>
|
||||||
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation">
|
||||||
<button class="nav-link active" id="accessTab" data-bs-toggle="tab" data-bs-target="#accessTabPanel" type="button" role="tab" aria-controls="accessTabPanel" aria-selected="true">현황상세</button>
|
<button class="nav-link active" id="viewTab" data-bs-toggle="tab" data-bs-target="#viewTabPanel" type="button" role="tab" aria-controls="viewTabPanel" aria-selected="true">현황상세</button>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation">
|
||||||
<button class="nav-link" id="approvalTab" th:onclick="|showHistory(${partInfo.piSeq})|" data-bs-toggle="tab" data-bs-target="#approvalTabPanel" type="button" role="tab" aria-controls="approvalTabPanel" aria-selected="false">수정이력</button>
|
<button class="nav-link" id="historyTab" data-bs-toggle="tab" data-bs-target="#historyTabPanel" type="button" role="tab" aria-controls="historyTabPanel" aria-selected="false">수정이력</button>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<form id="partInfoUpdate" method="post">
|
<div class="tab-content bg-white border border-top-0 p-2">
|
||||||
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
<form id="partInfoUpdate" method="post">
|
||||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||||
<input type="hidden" name="piSeq" th:value="${partInfo.piSeq}">
|
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||||
<input type="hidden" name="versionNo" th:value="${partInfo.versionNo}">
|
<input type="hidden" name="piSeq" id="piSeq" th:value="${partInfo.piSeq}">
|
||||||
<br>
|
<input type="hidden" name="versionNo" th:value="${partInfo.versionNo}">
|
||||||
<div class="mb-2 row">
|
<div class="row mb-1">
|
||||||
<label for="ogCd" class="col-sm-2 col-form-label text-center">해경서</label>
|
<label class="col-2 col-form-label col-form-label-sm text-center">터미널 정보</label>
|
||||||
|
<div class="col-10 border">
|
||||||
|
<div class="row my-1">
|
||||||
|
<label for="terminalNm" class="col-sm-2 col-form-label col-form-label-sm text-center">터미널명</label>
|
||||||
<div class="col-sm-3">
|
<div class="col-sm-3">
|
||||||
<select class="form-select form-select-sm" id="mMgtOrgan" name="mgtOrgan" th:disabled="${accessAuth ne 'ACC003'}">
|
<input type="text" class="form-control form-control-sm" id="terminalNm" name="terminalNm" placeholder="직접입력" th:value="${partInfo.terminalNm}">
|
||||||
<option value="">선택</option>
|
</div>
|
||||||
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
|
</div>
|
||||||
<th:block th:if="${#lists.contains(mgtOrganList, commonCode.itemCd)}">
|
<div class="row my-1">
|
||||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq partInfo.mgtOrgan}"></option>
|
<label for="rentType" class="col-sm-2 col-form-label col-form-label-sm text-center">임차료</label>
|
||||||
</th:block>
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" id="rentType" name="rentType">
|
||||||
|
<option value="">선택</option>
|
||||||
|
<option value="N" th:selected="${'N' eq partInfo.rentType}">무상</option>
|
||||||
|
<option value="Y" th:selected="${'Y' eq partInfo.rentType}">유상</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="number" class="form-control form-control-sm" id="rentPrice" name="rentPrice" placeholder="단위: 만" th:value="${partInfo.rentPrice}">
|
||||||
|
</div>
|
||||||
|
<label for="utilityType" class="col-sm-2 col-form-label col-form-label-sm text-center">공공요금</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" id="utilityType" name="utilityType">
|
||||||
|
<option value="">선택</option>
|
||||||
|
<option value="N" th:selected="${'N' eq partInfo.utilityType}">무상</option>
|
||||||
|
<option value="Y" th:selected="${'Y' eq partInfo.utilityType}">유상</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="number" class="form-control form-control-sm" id="utilityPrice" name="utilityPrice" placeholder="단위: 만" th:value="${partInfo.utilityPrice}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-1">
|
||||||
|
<label class="col-2 col-form-label col-form-label-sm text-center">해경 정보</label>
|
||||||
|
<div class="col-10 border">
|
||||||
|
<div class="row my-1">
|
||||||
|
<label for="mgtOrgan" class="col-sm-2 col-form-label col-form-label-sm text-center">해경서</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" id="mgtOrgan" name="mgtOrgan" th:disabled="${accessAuth ne 'ACC003'}">
|
||||||
|
<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 partInfo.mgtOrgan}"></option>
|
||||||
</th:block>
|
</th:block>
|
||||||
</select>
|
</th:block>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<label for="ofcCd" class="col-sm-2 col-form-label text-center">육경서</label>
|
<label for="piUserSeq" class="col-sm-2 col-form-label col-form-label-sm text-center">담당자</label>
|
||||||
<div class="col-sm-3">
|
|
||||||
<input type="text" class="form-control" id="landPolice" name="landPolice" th:value="${partInfo.landPolice}" placeholder="직접입력">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-2 row">
|
|
||||||
<label for="ogCd" class="col-sm-2 col-form-label text-center">담당자</label>
|
|
||||||
<div class="col-sm-3">
|
|
||||||
<select class="form-select form-select-sm" id="mPiUserSeq" name="piUserSeq">
|
|
||||||
<option value="">-선택-</option>
|
|
||||||
<th:block th:each="info:${managerList}">
|
|
||||||
<option th:value="${info.user_seq}" th:text="|${info.title_cd} ${info.user_nm}|" th:selected="${info.user_seq eq partInfo.piUserSeq}"></option>
|
|
||||||
</th:block>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-1">
|
|
||||||
<label for="ogCd" class="col-sm-2 col-form-label text-center">터미널명</label>
|
|
||||||
<div class="col-sm-3">
|
|
||||||
<input type="text" class="form-control" id="mTerminalNm" name="terminalNm" th:value="${partInfo.terminalNm}" placeholder="직접입력">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<br><br>
|
|
||||||
<h5 class="text-center">해경</h5>
|
|
||||||
<div class="row mb-1">
|
|
||||||
<label for="ogCd" class="col-sm-2 col-form-label text-center">근무방법</label>
|
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-2">
|
||||||
<select class="form-select form-select-sm" id="mMpWorkType" name="mpWorkType">
|
<select class="form-select form-select-sm" id="piUserSeq" name="piUserSeq" disabled>
|
||||||
<option value="">선택</option>
|
<option value="">선택</option>
|
||||||
<th:block th:each="commonCode:${session.commonCode.get('PIS')}">
|
<th:block th:each="info:${managerList}">
|
||||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq partInfo.mpWorkType}"></option>
|
<option th:value="${info.user_seq}" th:text="|${info.title_cd} ${info.user_nm}|" th:selected="${info.user_seq eq partInfo.piUserSeq}"></option>
|
||||||
</th:block>
|
</th:block>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
|
||||||
<label for="ofcCd" class="col-sm-2 col-form-label text-center">인원수</label>
|
|
||||||
<div class="col-sm-2">
|
|
||||||
<input type="number" class="form-control" id="mMpPeopleCnt" name="mpPeopleCnt" th:value="${partInfo.mpPeopleCnt}">
|
|
||||||
</div>
|
|
||||||
<label for="ofcCd" class="col-sm-1 col-form-label text-center">비고</label>
|
|
||||||
<div class="col-sm-3">
|
|
||||||
<input type="text" class="form-control" id="mpDescription" name="mpDescription" th:value="${partInfo.mpDescription}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<br>
|
|
||||||
<h5 class="text-center">육경</h5>
|
|
||||||
<div class="row mb-1">
|
|
||||||
<label for="ogCd" class="col-sm-2 col-form-label text-center">근무방법</label>
|
|
||||||
<div class="col-sm-2">
|
|
||||||
<select class="form-select form-select-sm" id="mPlWorkType" name="plWorkType">
|
|
||||||
<option value="">선택</option>
|
|
||||||
<th:block th:each="commonCode:${session.commonCode.get('PIS')}">
|
|
||||||
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq partInfo.plWorkType}"></option>
|
|
||||||
</th:block>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<label for="ofcCd" class="col-sm-2 col-form-label text-center">인원수</label>
|
|
||||||
<div class="col-sm-2">
|
|
||||||
<input type="number" class="form-control" id="mPlPeopleCnt" name="plPeopleCnt" th:value="${partInfo.plPeopleCnt}">
|
|
||||||
</div>
|
|
||||||
<label for="ofcCd" class="col-sm-1 col-form-label text-center">비고</label>
|
|
||||||
<div class="col-sm-3">
|
|
||||||
<input type="text" class="form-control" id="plDescription" name="plDescription" th:value="${partInfo.plDescription}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<br><br>
|
|
||||||
<div class="row mb-1">
|
|
||||||
<label for="ofcCd" class="col-sm-2 col-form-label text-center">임차료</label>
|
|
||||||
<div class="col-sm-2">
|
|
||||||
<select class="form-select form-select-sm" id="mRentType" name="rentType">
|
|
||||||
<option value="">선택</option>
|
|
||||||
<option value="N" th:selected="${'N' eq partInfo.rentType}">무상</option>
|
|
||||||
<option value="Y" th:selected="${'Y' eq partInfo.rentType}">유상</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-3">
|
|
||||||
<input type="number" class="form-control" id="mRentPrice" name="rentPrice" th:value="${partInfo.rentPrice}" placeholder="단위: 만">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-1">
|
<div class="row my-1">
|
||||||
<label for="ofcCd" class="col-sm-2 col-form-label text-center">공공요금</label>
|
<label for="mpWorkType" class="col-sm-2 col-form-label col-form-label-sm text-center">근무방법</label>
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-2">
|
||||||
<select class="form-select form-select-sm" id="mUtilityType" name="utilityType">
|
<select class="form-select form-select-sm" id="mpWorkType" name="mpWorkType">
|
||||||
<option value="">선택</option>
|
<option value="">선택</option>
|
||||||
<option value="N" th:selected="${'N' eq partInfo.utilityType}">무상</option>
|
<th:block th:each="commonCode:${session.commonCode.get('PIS')}">
|
||||||
<option value="Y" th:selected="${'Y' eq partInfo.utilityType}">유상</option>
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq partInfo.mpWorkType}"></option>
|
||||||
</select>
|
</th:block>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-3">
|
<label for="mpPeopleCnt" class="col-sm-2 col-form-label col-form-label-sm text-center">인원수</label>
|
||||||
<input type="number" class="form-control" id="mUtilityPrice" name="utilityPrice" th:value="${partInfo.utilityPrice}" placeholder="단위: 만">
|
<div class="col-sm-2">
|
||||||
|
<input type="number" class="form-control form-control-sm" id="mpPeopleCnt" name="mpPeopleCnt" th:value="${partInfo.mpPeopleCnt}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-3">
|
<div class="row my-1">
|
||||||
<label for="fileInputer" class="col-sm-2 col-form-label text-center">첨부파일</label>
|
<label for="mpDescription" class="col-sm-2 col-form-label col-form-label-sm text-center">비고</label>
|
||||||
<div class="col-sm-10" style="min-height: 70px;">
|
<div class="col-sm-10">
|
||||||
<div class="w-100 h-100 border border-info rounded text-center" id="uploadDiv">
|
<input type="text" class="form-control form-control-sm" id="mpDescription" name="mpDescription" th:value="${partInfo.mpDescription}">
|
||||||
<th:block th:if="${#strings.isEmpty(partInfo.fileList[0].origNm)}">
|
</div>
|
||||||
<br>파일을 업로드 해주세요.
|
</div>
|
||||||
</th:block>
|
</div>
|
||||||
<th:block th:unless="${#strings.isEmpty(partInfo.fileList[0].origNm)}">
|
</div>
|
||||||
<div class='row-col-6' th:each="infoFile:${partInfo.fileList}">
|
<div class="row mb-1">
|
||||||
<span th:data-fileseq="${infoFile.fileSeq}" th:text="|${infoFile.origNm}.${infoFile.fileExtn} ${infoFile.fileSize}|"></span>
|
<label class="col-2 col-form-label col-form-label-sm text-center">육경 정보</label>
|
||||||
<a href='#' class='fileDownPartInfo text-decoration-none' th:data-fileSeq="${infoFile.fileSeq}" th:data-piSeq="${infoFile.piSeq}" th:data-verNo="${infoFile.versionNo}">다운</a>
|
<div class="col-10 border">
|
||||||
<a href='#' class='uploadedFileDelete text-danger text-decoration-none'>삭제</a>
|
<div class="row my-1">
|
||||||
</div>
|
<label for="landPolice" class="col-sm-2 col-form-label col-form-label-sm text-center">육경서</label>
|
||||||
</th:block>
|
<div class="col-sm-2">
|
||||||
</div>
|
<input type="text" class="form-control form-control-sm" id="landPolice" name="landPolice" placeholder="직접입력" th:value="${partInfo.landPolice}">
|
||||||
</div>
|
</div>
|
||||||
<input type="file" class="d-none" id="fileInputer" multiple>
|
<label for="plWorkType" class="col-sm-2 col-form-label col-form-label-sm text-center">근무방법</label>
|
||||||
</div>
|
<div class="col-sm-2">
|
||||||
|
<select class="form-select form-select-sm" id="plWorkType" name="plWorkType">
|
||||||
</form>
|
<option value="">선택</option>
|
||||||
|
<th:block th:each="commonCode:${session.commonCode.get('PIS')}">
|
||||||
|
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq partInfo.plWorkType}"></option>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<label for="plPeopleCnt" class="col-sm-2 col-form-label col-form-label-sm text-center">인원수</label>
|
||||||
|
<div class="col-sm-2">
|
||||||
|
<input type="number" class="form-control form-control-sm" id="plPeopleCnt" name="plPeopleCnt" th:value="${partInfo.plPeopleCnt}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row my-1">
|
||||||
|
<label for="plDescription" class="col-sm-2 col-form-label col-form-label-sm text-center">비고</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="plDescription" name="plDescription" th:value="${partInfo.plDescription}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="fileInputer" class="col-sm-2 col-form-label text-center">첨부파일</label>
|
||||||
|
<div class="col-sm-10 px-0" style="min-height: 70px;">
|
||||||
|
<div class="w-100 h-100 border border-info rounded text-center" id="uploadDiv">
|
||||||
|
<th:block th:if="${#strings.isEmpty(partInfo.fileList[0].origNm)}">
|
||||||
|
<br>파일을 업로드 해주세요.
|
||||||
|
</th:block>
|
||||||
|
<th:block th:unless="${#strings.isEmpty(partInfo.fileList[0].origNm)}">
|
||||||
|
<div class='row-col-6' th:each="infoFile:${partInfo.fileList}">
|
||||||
|
<span th:data-fileseq="${infoFile.fileSeq}" th:text="|${infoFile.origNm}.${infoFile.fileExtn} ${infoFile.fileSize}|"></span>
|
||||||
|
<a href='#' class='fileDownPartInfo text-decoration-none' th:data-fileSeq="${infoFile.fileSeq}" th:data-piSeq="${infoFile.piSeq}" th:data-verNo="${infoFile.versionNo}">다운</a>
|
||||||
|
<a href='#' class='uploadedFileDelete text-danger text-decoration-none'>삭제</a>
|
||||||
|
</div>
|
||||||
|
</th:block>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="file" class="d-none" id="fileInputer" multiple>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer justify-content-between bg-light">
|
<div class="modal-footer justify-content-between bg-light">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
|
||||||
<button type="button" class="btn btn-danger" id="deletePartInfo" th:if="${accessAuth eq 'ACC003'} or ${wrtUserSeq eq userSeq}">삭제</button>
|
<button type="button" class="btn btn-danger" id="deletePartInfo" th:if="${accessAuth eq 'ACC003'} or ${wrtUserSeq eq userSeq}">삭제</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||||
<option value="">-선택-</option>
|
<option value="">-선택-</option>
|
||||||
<th:block th:each="info:${managerList}">
|
<th:block th:each="info:${managerList}">
|
||||||
<option th:value="${info.user_seq}" th:text="|${info.title_cd} ${info.user_nm}|"></option>
|
<option th:value="${info.user_seq}" th:text="|${info.title_cd} ${info.user_nm}|"></option>
|
||||||
</th:block>
|
</th:block>
|
||||||
</html>
|
</html>
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
|
||||||
<div class="modal-header bg-dark">
|
<div class="modal-header bg-dark">
|
||||||
<h5 class="modal-title text-white" id="menuEditModalLabel">외사분실 실적 등록</h5>
|
<h5 class="modal-title text-white" id="menuEditModalLabel">외사분실 실적 등록</h5>
|
||||||
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close f-invert" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
|
@ -11,65 +10,57 @@
|
||||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||||
<input type="hidden" id="saveYn" name="saveYn">
|
<input type="hidden" id="saveYn" name="saveYn">
|
||||||
<div class="row mb-1">
|
<div class="row mb-1">
|
||||||
<label for="wrtUserNm" class="col-sm-2 col-form-label text-center">터미널명</label>
|
<label for="wrtUserNm" class="col-sm-2 col-form-label col-form-label-sm text-center">작성자</label>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="wrtUserNm" placeholder="작성자 자동입력" readonly>
|
||||||
|
</div>
|
||||||
|
<label for="wrtDt" class="col-sm-2 col-form-label col-form-label-sm text-center">작성일</label>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<input type="text" class="form-control form-control-sm" id="wrtDt" placeholder="자동입력" readonly>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-1">
|
||||||
|
<label for="piSeq" class="col-sm-2 col-form-label col-form-label-sm text-center">터미널명</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<select class="form-select form-select-sm" id="piSeq" name="piSeq">
|
<select class="form-select form-select-sm" id="piSeq" name="piSeq">
|
||||||
<option value="">선택</option>
|
<option value="">선택</option>
|
||||||
<th:block th:each="terminal:${tnList}">
|
<th:block th:each="terminal:${tnList}">
|
||||||
<option th:value="${terminal.pi_seq}" th:text="${terminal.terminal_nm}"></option>
|
<option th:value="${terminal.pi_seq}" th:text="${terminal.terminal_nm}"></option>
|
||||||
</th:block>
|
</th:block>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<label for="wrtDt" class="col-sm-2 col-form-label text-center">일시</label>
|
<label for="workDt" class="col-sm-2 col-form-label col-form-label-sm text-center">일시</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<input type="text" class="form-control" id="workDt" name="workDt" readonly>
|
<input type="text" class="form-control form-control-sm" id="workDt" name="workDt" readonly>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-1 justify-content-center">
|
||||||
|
<label class="col-sm-2 col-form-label col-form-label-sm text-center">종류</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<th:block th:each="code:${pwtList}">
|
||||||
|
<input type="radio" th:id="|workType${code.itemCd}|" name="workType" th:value="${code.itemCd}">
|
||||||
|
<label th:for="|workType${code.itemCd}|" class="col-form-label col-form-label-sm text-center pe-3" th:text="${code.itemValue}"></label>
|
||||||
|
</th:block>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-1 justify-content-center">
|
||||||
|
<label for="editor" class="col-sm-2 col-form-label col-form-label-sm text-center">내용</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<div id="editor"></div>
|
||||||
|
<textarea id="content" class="d-none"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-1">
|
<div class="row mb-1">
|
||||||
<label for="title" class="col-sm-2 col-form-label text-center">작성자</label>
|
<label for="description" class="col-sm-2 col-form-label col-form-label-sm text-center">비고</label>
|
||||||
<div class="col-sm-4">
|
|
||||||
<input type="text" class="form-control" value="작성자 자동입력" readonly>
|
|
||||||
</div>
|
|
||||||
<label for="wrtDt" class="col-sm-2 col-form-label text-center">작성일</label>
|
|
||||||
<div class="col-sm-4">
|
|
||||||
<input type="text" class="form-control" value="자동입력" readonly>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<br>
|
|
||||||
<div class="row mb-1 justify-content-center">
|
|
||||||
<label class="col-sm-2 col-form-label text-center">종류</label>
|
|
||||||
<div class="col-sm-12">
|
|
||||||
<label for="workType" class="col-sm-2 col-form-label text-center">사건처리</label>
|
|
||||||
<input type="radio" name="workType" value="CH">
|
|
||||||
<label for="workType" class="col-sm-2 col-form-label text-center">범죄첩보제공</label>
|
|
||||||
<input type="radio" name="workType" value="POCI">
|
|
||||||
<label for="workType" class="col-sm-1 col-form-label text-center">SRI</label>
|
|
||||||
<input type="radio" name="workType" value="SRI">
|
|
||||||
<label for="workType" class="col-sm-2 col-form-label text-center">합동점검</label>
|
|
||||||
<input type="radio" name="workType" value="JI">
|
|
||||||
<label for="workType" class="col-sm-1 col-form-label text-center">회의</label>
|
|
||||||
<input type="radio" name="workType" value="MT">
|
|
||||||
<label for="workType" class="col-sm-1 col-form-label text-center">기타</label>
|
|
||||||
<input type="radio" name="workType" value="ETC">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-1 justify-content-center">
|
|
||||||
<label for="workInfo" class="col-sm-2 col-form-label text-center">내용</label>
|
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<textarea id="workInfo" name='workInfo' ></textarea>
|
<input type="text" class="form-control form-control-sm" id="description" name="description">
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-1">
|
|
||||||
<label for="title" class="col-sm-2 col-form-label text-center">비고</label>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<input type="text" class="form-control" id="description" name="description">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<label for="fileInputer" class="col-sm-2 col-form-label text-center">첨부파일</label>
|
<label for="fileInputer" class="col-sm-2 col-form-label col-form-label-sm text-center">첨부파일</label>
|
||||||
<div class="col-sm-10" style="min-height: 70px;">
|
<div class="col-sm-10" style="min-height: 70px;">
|
||||||
<div class="w-100 h-100 border border-info rounded text-center" id="uploadDiv">
|
<div class="w-100 h-100 border border-info rounded text-center" id="uploadDiv">
|
||||||
<br>파일을 업로드 해주세요.
|
<br>파일을 업로드 해주세요.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input type="file" class="d-none" id="fileInputer" multiple>
|
<input type="file" class="d-none" id="fileInputer" multiple>
|
||||||
|
|
@ -77,12 +68,12 @@
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer justify-content-between bg-light">
|
<div class="modal-footer justify-content-between bg-light">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<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 class="col-auto">
|
<div class="col-auto">
|
||||||
<button type="button" class="btn btn-primary" id="temporarySaveBtn">임시저장</button>
|
<button type="button" class="btn btn-primary" id="temporarySaveBtn">임시저장</button>
|
||||||
<button type="button" class="btn btn-primary" id="saveBtn">저장</button>
|
<button type="button" class="btn btn-primary" id="saveBtn">저장</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</html>
|
</html>
|
||||||
|
|
@ -60,46 +60,24 @@
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="table-group-divider">
|
<tbody class="table-group-divider">
|
||||||
<tr class="partWorkTr" th:each="pw:${partWorkList}">
|
<tr class="partWorkTr" th:each="pw:${partWorkList}">
|
||||||
|
<input type="hidden" class="pwSeq" th:value="${pw.pwSeq}">
|
||||||
|
<input type="hidden" class="piSeq" th:value="${pw.piSeq}">
|
||||||
<th:block th:if="${pw.saveYn eq 'N'} and ${pw.wrtUserSeq eq uesrSeq}">
|
<th:block th:if="${pw.saveYn eq 'N'} and ${pw.wrtUserSeq eq uesrSeq}">
|
||||||
<th:block>
|
<td th:text="${#strings.concat('[임시]', pw.terminalNm)}"></td>
|
||||||
<input type="hidden" class="pwSeq" th:value="${pw.pwSeq}">
|
</th:block>
|
||||||
<input type="hidden" class="piSeq" th:value="${pw.piSeq}">
|
<th:block th:unless="${pw.saveYn eq 'N'} and ${pw.wrtUserSeq eq uesrSeq}">
|
||||||
</th:block>
|
<td th:text="${pw.terminalNm}"></td>
|
||||||
<td th:text="|[임시]${pw.terminalNm}|"></td>
|
</th:block>
|
||||||
<td th:text="|${pw.wrtTitle} ${pw.wrtNm}|"></td>
|
<td th:text="|${pw.wrtTitle} ${pw.wrtNm}|"></td>
|
||||||
<td th:text="${pw.workDt}"></td>
|
<td th:text="${pw.workDt}"></td>
|
||||||
<td th:text="${pw.workTypeCh}"></td>
|
<th:block th:each="code:${pwtList}">
|
||||||
<td th:text="${pw.workTypePoci}"></td>
|
<td>
|
||||||
<td th:text="${pw.workTypeSri}"></td>
|
<th:block th:text="${pw.workType eq code.itemCd?'O':''}"></th:block>
|
||||||
<td th:text="${pw.workTypeJi}"></td>
|
</td>
|
||||||
<td th:text="${pw.workTypeMt}"></td>
|
|
||||||
<td th:text="${pw.workTypeEtc}"></td>
|
|
||||||
<td th:text="${pw.description}"></td>
|
|
||||||
<td th:if="${pw.fileCnt > 0}">●</td>
|
|
||||||
<td th:unless="${pw.fileCnt > 0}"></td>
|
|
||||||
<td th:text="${#temporals.format(pw.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
|
||||||
</th:block>
|
|
||||||
<th:block th:unless="${pw.saveYn eq 'N'} and ${pw.wrtNm eq uesrId}">
|
|
||||||
<th:block th:if="${pw.saveYn eq 'Y'}">
|
|
||||||
<th:block>
|
|
||||||
<input type="hidden" class="pwSeq" th:value="${pw.pwSeq}">
|
|
||||||
<input type="hidden" class="piSeq" th:value="${pw.piSeq}">
|
|
||||||
</th:block>
|
|
||||||
<td th:text="${pw.terminalNm}"></td>
|
|
||||||
<td th:text="|${pw.wrtTitle} ${pw.wrtNm}|"></td>
|
|
||||||
<td th:text="${pw.workDt}"></td>
|
|
||||||
<td th:text="${pw.workTypeCh}"></td>
|
|
||||||
<td th:text="${pw.workTypePoci}"></td>
|
|
||||||
<td th:text="${pw.workTypeSri}"></td>
|
|
||||||
<td th:text="${pw.workTypeJi}"></td>
|
|
||||||
<td th:text="${pw.workTypeMt}"></td>
|
|
||||||
<td th:text="${pw.workTypeEtc}"></td>
|
|
||||||
<td th:text="${pw.description}"></td>
|
|
||||||
<td th:if="${pw.fileCnt > 0}">●</td>
|
|
||||||
<td th:unless="${pw.fileCnt > 0}"></td>
|
|
||||||
<td th:text="${#temporals.format(pw.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
|
||||||
</th:block>
|
</th:block>
|
||||||
</th:block>
|
<td th:text="${pw.description}"></td>
|
||||||
|
<td th:text="${pw.fileCnt > 0?pw.fileCnt+'건':''}"></td>
|
||||||
|
<td th:text="${#temporals.format(pw.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
||||||
|
|
@ -12,54 +12,50 @@
|
||||||
<input type="hidden" name="pwSeq" th:value="${pwInfo.pwSeq}">
|
<input type="hidden" name="pwSeq" th:value="${pwInfo.pwSeq}">
|
||||||
<input type="hidden" id="mPiSeq" name="piSeq" th:value="${pwInfo.piSeq}">
|
<input type="hidden" id="mPiSeq" name="piSeq" th:value="${pwInfo.piSeq}">
|
||||||
<div class="row mb-1">
|
<div class="row mb-1">
|
||||||
<label for="wrtUserNm" class="col-sm-2 col-form-label text-center">터미널명</label>
|
<label for="wrtUserNm" class="col-sm-2 col-form-label col-form-label-sm text-center">작성자</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<input type="hidden" class="form-control" th:value="${pwInfo.piSeq}" name="piSeq" readonly>
|
<input type="text" class="form-control form-control-sm" id="wrtUserNm" th:value="|${pwInfo.wrtTitle} ${pwInfo.wrtNm}|" placeholder="작성자 자동입력" readonly>
|
||||||
<input type="text" class="form-control" th:value="${pwInfo.terminalNm}" readonly>
|
|
||||||
</div>
|
</div>
|
||||||
<label for="wrtDt" class="col-sm-2 col-form-label text-center">일시</label>
|
<label for="wrtDt" class="col-sm-2 col-form-label col-form-label-sm text-center">최종수정일</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<input type="text" class="form-control" id="mWorkDt" name="workDt" th:value="${pwInfo.workDt}" readonly>
|
<input type="text" class="form-control form-control-sm" id="wrtDt" th:value="${#temporals.format(pwInfo.wrtDt, 'yyyy-MM-dd HH:mm')}" placeholder="자동입력" readonly>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-1">
|
<div class="row mb-1">
|
||||||
<label for="title" class="col-sm-2 col-form-label text-center">작성자</label>
|
<label for="piSeq" class="col-sm-2 col-form-label col-form-label-sm text-center">터미널명</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<input type="text" class="form-control" th:value="|${pwInfo.wrtTitle} ${pwInfo.wrtNm}|" readonly>
|
<select class="form-select form-select-sm" id="piSeq" name="piSeq">
|
||||||
|
<option value="">선택</option>
|
||||||
|
<th:block th:each="terminal:${tnList}">
|
||||||
|
<option th:value="${terminal.pi_seq}" th:text="${terminal.terminal_nm}" th:selected="${pwInfo.piSeq eq terminal.pi_seq}"></option>
|
||||||
|
</th:block>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<label for="wrtDt" class="col-sm-2 col-form-label text-center">최종수정일</label>
|
<label for="workDt" class="col-sm-2 col-form-label col-form-label-sm text-center">일시</label>
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<input type="text" class="form-control" th:value="${#temporals.format(pwInfo.wrtDt, 'yyyy-MM-dd HH:mm')}" readonly>
|
<input type="text" class="form-control form-control-sm" id="workDt" name="workDt" th:value="${pwInfo.workDt}" readonly>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
|
||||||
<div class="row mb-1 justify-content-center">
|
<div class="row mb-1 justify-content-center">
|
||||||
<label class="col-sm-2 col-form-label text-center">종류</label>
|
<label class="col-sm-2 col-form-label col-form-label-sm text-center">종류</label>
|
||||||
<div class="col-sm-12">
|
|
||||||
<label for="workType" class="col-sm-2 col-form-label text-center">사건처리</label>
|
|
||||||
<input type="radio" name="workType" value="CH" th:checked="${pwInfo.workType eq 'CH'}">
|
|
||||||
<label for="workType" class="col-sm-2 col-form-label text-center">범죄첩보제공</label>
|
|
||||||
<input type="radio" name="workType" value="POCI" th:checked="${pwInfo.workType eq 'POCI'}">
|
|
||||||
<label for="workType" class="col-sm-1 col-form-label text-center">SRI</label>
|
|
||||||
<input type="radio" name="workType" value="SRI" th:checked="${pwInfo.workType eq 'SRI'}">
|
|
||||||
<label for="workType" class="col-sm-2 col-form-label text-center">합동점검</label>
|
|
||||||
<input type="radio" name="workType" value="JI" th:checked="${pwInfo.workType eq 'JI'}">
|
|
||||||
<label for="workType" class="col-sm-1 col-form-label text-center">회의</label>
|
|
||||||
<input type="radio" name="workType" value="MT" th:checked="${pwInfo.workType eq 'MT'}">
|
|
||||||
<label for="workType" class="col-sm-1 col-form-label text-center">기타</label>
|
|
||||||
<input type="radio" name="workType" value="ETC" th:checked="${pwInfo.workType eq 'ETC'}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb-1 justify-content-center">
|
|
||||||
<label for="workInfo" class="col-sm-2 col-form-label text-center">내용</label>
|
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<textarea id="mWorkInfo" name='workInfo' th:utext="${pwInfo.workInfo}"></textarea>
|
<th:block th:each="code:${pwtList}">
|
||||||
|
<input type="radio" th:id="|workType${code.itemCd}|" name="workType" th:value="${code.itemCd}" th:checked="${pwInfo.workType eq code.itemCd}">
|
||||||
|
<label th:for="|workType${code.itemCd}|" class="col-form-label col-form-label-sm text-center pe-3" th:text="${code.itemValue}"></label>
|
||||||
|
</th:block>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-1 justify-content-center">
|
||||||
|
<label for="editor" class="col-sm-2 col-form-label col-form-label-sm text-center">내용</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<div id="editor"></div>
|
||||||
|
<textarea class="d-none" id="content" th:text="${pwInfo.workInfo}"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-1">
|
<div class="row mb-1">
|
||||||
<label for="title" class="col-sm-2 col-form-label text-center">비고</label>
|
<label for="description" class="col-sm-2 col-form-label col-form-label-sm text-center">비고</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<input type="text" class="form-control" id="mDescription" name="description" th:value="${pwInfo.description}">
|
<input type="text" class="form-control form-control-sm" id="description" name="description" th:value="${pwInfo.description}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue