외사분실 실적까지 모달 수정 완료.

외사장비 모달 수정 작업 시작.
강석 최 2022-12-12 14:12:37 +09:00
parent 94b5e61eb9
commit 3df21b009a
20 changed files with 1235 additions and 1309 deletions

View File

@ -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,6 +48,7 @@ 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")
@ -170,10 +173,22 @@ public class FipTargetController {
@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")
@ -261,10 +276,17 @@ public class FipTargetController {
@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();
headerSet.addAll(List.of(new String[]{"terminal_nm", "wrt_nm", "work_dt"}));
for(CodeMgt code: pwtList){
headerSet.add("work_type_"+code.getItemCd());
}
headerSet.addAll(List.of(new String[]{"description", "file_cnt","wrt_dt"}));
String[] headers = headerSet.toArray(new String[0]);
String[] headerNames = { "외사 터미널명", "작성자","일시", "종류", "", "", "", "", "", "비고", "첨부파일", "최근수정일"}; String[] headerNames = { "외사 터미널명", "작성자","일시", "종류", "", "", "", "", "", "비고", "첨부파일", "최근수정일"};
String[] headerNames2 = { "", "","", "사건처리", "범죄첩보제공", "SRI", "합동점검", "회의", "기타", "", "", ""}; String[] headerNames2 = { "", "","", "사건처리", "범죄첩보제공", "SRI", "합동점검", "회의", "기타", "", "", ""};
String[] columnType = { "String", "String","String", "String", "String", "String", "String", "String", "String", "String", "String","String"}; String[] columnType = { "String", "String","String", "String", "String", "String", "String", "String", "String", "String", "String","String"};
@ -273,7 +295,7 @@ public class FipTargetController {
List<PartWork> partWorkList= fipTargetService.selectPartWorkList(partWork); 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) {
} }
@ -282,6 +304,7 @@ public class FipTargetController {
//메뉴권한 확인 //메뉴권한 확인
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));
@ -299,6 +322,7 @@ public class FipTargetController {
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;
} }
@ -325,6 +349,8 @@ public class FipTargetController {
//메뉴권한 확인 //메뉴권한 확인
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;
} }
@ -336,7 +362,10 @@ public class FipTargetController {
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")

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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);
} }

View File

@ -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,7 +467,7 @@ 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개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다.
@ -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());
if(partWorkList.get(i).getFileCnt() > 0) {
rowData.set("file_cnt", "●");
}else {
rowData.set("file_cnt", "");
} }
rowData.set("description", partWorkList.get(i).getDescription());
rowData.set("file_cnt", partWorkList.get(i).getFileCnt()+"건");
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);

View File

@ -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

View File

@ -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
@ -334,24 +288,6 @@
pw.work_dt, pw.work_dt,
pw.save_yn, pw.save_yn,
work_type, work_type,
case
when pw.work_type = 'CH' then 'O'
end as work_type_ch,
case
when pw.work_type = 'POCI' then 'O'
end as work_type_poci,
case
when pw.work_type = 'SRI' then 'O'
end as work_type_sri,
case
when pw.work_type = 'JI' then 'O'
end as work_type_ji,
case
when pw.work_type = 'MT' then 'O'
end as work_type_mt,
case
when pw.work_type = 'ETC' then 'O'
end as work_type_etc,
pw.description, 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, (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 pw.wrt_dt

View File

@ -7,8 +7,8 @@ $(document).on('click', '#addPartInfo', function (){
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,26 +19,28 @@ $(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'){
rentPrice.removeAttr("disabled");
}else{ }else{
$("#rentPrice").hide(); rentPrice.val('');
$("#rentPrice").val(''); rentPrice.attr("disabled", "disabled");
} }
}); });
$(document).on('change', '#utilityType', function (){ $(document).on('change', '#utilityType', function (){
if($("#utilityType").val() == 'Y'){ const utilityPrice = $("#utilityPrice");
$("#utilityPrice").show(); if(this.value === 'Y'){
utilityPrice.removeAttr("disabled");
}else{ }else{
$("#utilityPrice").hide(); utilityPrice.val('');
$("#utilityPrice").val(''); utilityPrice.attr("disabled", "disabled");
} }
}); });
$(document).on('change', '#mgtOrgan', function (){ $(document).on('change', '#mgtOrgan', function (){
const ogCd = $(this).val(); const ogCd = $(this).val();
if(ogCd != ''){ if(ogCd !== ''){
changeManager(ogCd); changeManager(ogCd);
}else{ }else{
$("#piUserSeq").prop('disabled',true); $("#piUserSeq").prop('disabled',true);
@ -46,6 +48,15 @@ $(document).on('change', '#mgtOrgan', function (){
} }
}); });
$(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({
@ -175,10 +186,10 @@ function showModal(piSeq){
$("#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();
}, },
@ -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
@ -208,19 +219,19 @@ $(document).on('click', '#goExcel', function (){
$(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");
} }
}); });
@ -329,34 +340,9 @@ $(document).on('click', '.historyInfoTr', function (){
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(){

View File

@ -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(){
@ -72,6 +61,7 @@ function savePartWork(){
if(!file.isDelete) if(!file.isDelete)
formData.append('uploadFiles', file, file.name); formData.append('uploadFiles', file, file.name);
} }
formData.append('workInfo', CrossEditor.GetBodyValue());
$.ajax({ $.ajax({
type : 'POST', type : 'POST',
data : formData, data : formData,
@ -107,25 +97,14 @@ function showModal(pwSeq,piSeq){
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(){
@ -145,6 +124,7 @@ $(document).on('click', '#updateBtn', function (){
$(".text-decoration-line-through").each(function (idx, el){ $(".text-decoration-line-through").each(function (idx, el){
formData.append('fileSeq', $(el).attr("data-fileseq")); formData.append('fileSeq', $(el).attr("data-fileseq"));
}) })
formData.append('workInfo', CrossEditor.GetBodyValue());
$.ajax({ $.ajax({
type : 'POST', type : 'POST',
data : formData, data : formData,
@ -173,8 +153,7 @@ $(document).on('click', '#deletePartWork', function (){
$.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());

View File

@ -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',

View File

@ -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>

View File

@ -9,9 +9,47 @@
<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-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">
<input type="text" class="form-control form-control-sm" id="terminalNm" name="terminalNm" placeholder="직접입력">
</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">무상</option>
<option value="Y">유상</option>
</select>
</div>
<div class="col-sm-2">
<input type="number" class="form-control form-control-sm" id="rentPrice" name="rentPrice" placeholder="단위: 만">
</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">무상</option>
<option value="Y">유상</option>
</select>
</div>
<div class="col-sm-2">
<input type="number" class="form-control form-control-sm" id="utilityPrice" name="utilityPrice" placeholder="단위: 만">
</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'}"> <select class="form-select form-select-sm" id="mgtOrgan" name="mgtOrgan" th:disabled="${accessAuth ne 'ACC003'}">
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('OG')}"> <th:block th:each="commonCode:${session.commonCode.get('OG')}">
@ -21,29 +59,15 @@
</th:block> </th:block>
</select> </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"> <div class="col-sm-2">
<input type="text" class="form-control" id="landPolice" name="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="piUserSeq" name="piUserSeq" disabled> <select class="form-select form-select-sm" id="piUserSeq" name="piUserSeq" disabled>
<option value="">선택</option> <option value="">선택</option>
</select> </select>
</div> </div>
</div> </div>
<div class="row mb-1"> <div class="row my-1">
<label for="ogCd" 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-3">
<input type="text" class="form-control" id="terminalNm" name="terminalNm" placeholder="직접입력">
</div>
</div>
<br><br>
<h6 class="text-center">해경</h6>
<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="mpWorkType" name="mpWorkType"> <select class="form-select form-select-sm" id="mpWorkType" name="mpWorkType">
<option value="">선택</option> <option value="">선택</option>
@ -52,19 +76,28 @@
</th:block> </th:block>
</select> </select>
</div> </div>
<label for="ofcCd" class="col-sm-2 col-form-label text-center">인원수</label> <label for="mpPeopleCnt" class="col-sm-2 col-form-label col-form-label-sm text-center">인원수</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input type="number" class="form-control" id="mpPeopleCnt" name="mpPeopleCnt"> <input type="number" class="form-control form-control-sm" id="mpPeopleCnt" name="mpPeopleCnt">
</div> </div>
<label for="ofcCd" class="col-sm-1 col-form-label text-center">비고</label> </div>
<div class="col-sm-3"> <div class="row my-1">
<input type="text" class="form-control" id="mpDescription" name="mpDescription"> <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> </div>
<br>
<h6 class="text-center">육경</h6>
<div class="row mb-1"> <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="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"> <div class="col-sm-2">
<select class="form-select form-select-sm" id="plWorkType" name="plWorkType"> <select class="form-select form-select-sm" id="plWorkType" name="plWorkType">
<option value="">선택</option> <option value="">선택</option>
@ -73,52 +106,28 @@
</th:block> </th:block>
</select> </select>
</div> </div>
<label for="ofcCd" class="col-sm-2 col-form-label text-center">인원수</label> <label for="plPeopleCnt" class="col-sm-2 col-form-label col-form-label-sm text-center">인원수</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input type="number" class="form-control" id="plPeopleCnt" name="plPeopleCnt"> <input type="number" class="form-control form-control-sm" 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> </div>
<br><br> <div class="row my-1">
<div class="row mb-1"> <label for="plDescription" 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-10">
<div class="col-sm-2"> <input type="text" class="form-control form-control-sm" id="plDescription" name="plDescription">
<select class="form-select form-select-sm" id="rentType" name="rentType">
<option value="">선택</option>
<option value="N">무상</option>
<option value="Y">유상</option>
</select>
</div>
<div class="col-sm-3">
<input type="number" class="form-control" id="rentPrice" name="rentPrice" placeholder="단위: 만">
</div> </div>
</div> </div>
<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="utilityType" name="utilityType">
<option value="">선택</option>
<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>
<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 px-0" 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>
</div> </div>
</form> </form>
</div> </div>
<div class="modal-footer justify-content-between bg-light"> <div class="modal-footer justify-content-between bg-light">

View File

@ -8,24 +8,16 @@
<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})|"
data-bs-toggle="tab" data-bs-target="#accessTabPanel" type="button"
role="tab" aria-controls="accessTabPanel" aria-selected="true">현황상세</button>
</li> </li>
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link active" id="approvalTab" <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>
th:onclick="|showHistory(${partInfoList[0].piSeq})|"
data-bs-toggle="tab" data-bs-target="#approvalTabPanel"
type="button" role="tab" aria-controls="approvalTabPanel"
aria-selected="false">수정이력</button>
</li> </li>
</ul> </ul>
<div class="tab-content bg-white border border-top-0 p-2">
<input type="hidden" name="piSeq" id="piSeq" th:value="${partInfo.piSeq}">
<div class="row justify-content-start"> <div class="row justify-content-start">
<div class="col-5"> <div class="col-3">
<div class="card">
<div class="card-body">
<div class="row">
<table class="table table-sm table-hover table-bordered" id="categoryTable"> <table class="table table-sm table-hover table-bordered" id="categoryTable">
<thead> <thead>
<tr> <tr>
@ -47,99 +39,8 @@
</tbody> </tbody>
</table> </table>
</div> </div>
</div> <div class="col-9" id="valueDiv">
</div> <h5 class="text-center py-5">목록에서 선택해주세요.</h5>
</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>

View File

@ -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>

View File

@ -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">외사분실운영 현황</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>
@ -8,22 +7,60 @@
<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>
<div class="tab-content bg-white border border-top-0 p-2">
<form id="partInfoUpdate" method="post"> <form id="partInfoUpdate" 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}"/>
<input type="hidden" name="piSeq" th:value="${partInfo.piSeq}"> <input type="hidden" name="piSeq" id="piSeq" th:value="${partInfo.piSeq}">
<input type="hidden" name="versionNo" th:value="${partInfo.versionNo}"> <input type="hidden" name="versionNo" th:value="${partInfo.versionNo}">
<br> <div class="row mb-1">
<div class="mb-2 row"> <label class="col-2 col-form-label col-form-label-sm text-center">터미널 정보</label>
<label for="ogCd" class="col-sm-2 col-form-label 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}">
</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> <option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('OG')}"> <th:block th:each="commonCode:${session.commonCode.get('OG')}">
<th:block th:if="${#lists.contains(mgtOrganList, commonCode.itemCd)}"> <th:block th:if="${#lists.contains(mgtOrganList, commonCode.itemCd)}">
@ -32,100 +69,72 @@
</th:block> </th:block>
</select> </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"> <div class="col-sm-2">
<input type="text" class="form-control" id="landPolice" name="landPolice" th:value="${partInfo.landPolice}" placeholder="직접입력"> <select class="form-select form-select-sm" id="piUserSeq" name="piUserSeq" disabled>
</div> <option value="">선택</option>
</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}"> <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> <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> </div>
</div> </div>
<div class="row mb-1"> <div class="row my-1">
<label for="ogCd" 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-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="mpWorkType" name="mpWorkType">
<option value="">선택</option> <option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('PIS')}"> <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> <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq partInfo.mpWorkType}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
<label for="ofcCd" class="col-sm-2 col-form-label text-center">인원수</label> <label for="mpPeopleCnt" class="col-sm-2 col-form-label col-form-label-sm text-center">인원수</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input type="number" class="form-control" id="mMpPeopleCnt" name="mpPeopleCnt" th:value="${partInfo.mpPeopleCnt}"> <input type="number" class="form-control form-control-sm" id="mpPeopleCnt" name="mpPeopleCnt" th:value="${partInfo.mpPeopleCnt}">
</div> </div>
<label for="ofcCd" class="col-sm-1 col-form-label text-center">비고</label> </div>
<div class="col-sm-3"> <div class="row my-1">
<input type="text" class="form-control" id="mpDescription" name="mpDescription" th:value="${partInfo.mpDescription}"> <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> </div>
<br>
<h5 class="text-center">육경</h5>
<div class="row mb-1"> <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="landPolice" 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="mPlWorkType" name="plWorkType"> <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> <option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('PIS')}"> <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> <option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq partInfo.plWorkType}"></option>
</th:block> </th:block>
</select> </select>
</div> </div>
<label for="ofcCd" class="col-sm-2 col-form-label text-center">인원수</label> <label for="plPeopleCnt" class="col-sm-2 col-form-label col-form-label-sm text-center">인원수</label>
<div class="col-sm-2"> <div class="col-sm-2">
<input type="number" class="form-control" id="mPlPeopleCnt" name="plPeopleCnt" th:value="${partInfo.plPeopleCnt}"> <input type="number" class="form-control form-control-sm" id="plPeopleCnt" 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>
</div> </div>
<br><br> <div class="row my-1">
<div class="row mb-1"> <label for="plDescription" 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-10">
<div class="col-sm-2"> <input type="text" class="form-control form-control-sm" id="plDescription" name="plDescription" th:value="${partInfo.plDescription}">
<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">
<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="mUtilityType" 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-3">
<input type="number" class="form-control" id="mUtilityPrice" name="utilityPrice" th:value="${partInfo.utilityPrice}" placeholder="단위: 만">
</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 text-center">첨부파일</label>
<div class="col-sm-10" style="min-height: 70px;"> <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"> <div class="w-100 h-100 border border-info rounded text-center" id="uploadDiv">
<th:block th:if="${#strings.isEmpty(partInfo.fileList[0].origNm)}"> <th:block th:if="${#strings.isEmpty(partInfo.fileList[0].origNm)}">
<br>파일을 업로드 해주세요. <br>파일을 업로드 해주세요.
@ -141,9 +150,9 @@
</div> </div>
<input type="file" class="d-none" id="fileInputer" multiple> <input type="file" class="d-none" id="fileInputer" multiple>
</div> </div>
</form> </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>

View File

@ -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,7 +10,17 @@
<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>
@ -20,53 +29,35 @@
</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">
<label for="title" class="col-sm-2 col-form-label 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> </div>
<div class="row mb-1 justify-content-center"> <div class="row mb-1 justify-content-center">
<label for="workInfo" 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-10"> <div class="col-sm-10">
<textarea id="workInfo" name='workInfo' ></textarea> <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-10"> <div class="col-sm-10">
<input type="text" class="form-control" id="description" name="description"> <input type="text" class="form-control form-control-sm" 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>파일을 업로드 해주세요.

View File

@ -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}">
<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: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> </th:block>
<th:block th:unless="${pw.saveYn eq 'N'} and ${pw.wrtUserSeq eq uesrSeq}">
<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> </th:block>
<td th:text="${pw.workTypeEtc}"></td>
<td th:text="${pw.description}"></td> <td th:text="${pw.description}"></td>
<td th:if="${pw.fileCnt > 0}"></td> <td th:text="${pw.fileCnt > 0?pw.fileCnt+'건':''}"></td>
<td th:unless="${pw.fileCnt > 0}"></td>
<td th:text="${#temporals.format(pw.wrtDt, 'yyyy-MM-dd HH:mm')}"></td> <td th:text="${#temporals.format(pw.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
</th:block>
</th:block>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@ -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>
<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" 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> </div>
<div class="row mb-1 justify-content-center"> <div class="row mb-1 justify-content-center">
<label for="workInfo" 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-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">