강석 최 2022-10-05 17:00:06 +09:00
commit 6df5896463
22 changed files with 244 additions and 100 deletions

View File

@ -48,8 +48,13 @@ public class EquipController {
}
@GetMapping("/equipEditModal")
public ModelAndView equipEditModal() {
public ModelAndView equipEditModal(@AuthenticationPrincipal UserInfo loginUser) {
ModelAndView mav = new ModelAndView("equip/equipEditModal");
//메뉴권한 확인
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/equip/equipStatus").get(0).getAccessAuth();
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
mav.addObject("userOrgan", loginUser.getOgCd());
mav.addObject("accessAuth", accessAuth);
return mav;
}
@ -65,7 +70,6 @@ public class EquipController {
@PostMapping("/saveEquip")
public void saveEquip(@AuthenticationPrincipal UserInfo loginUser,Equip equip, MultipartHttpServletRequest request){
equip.setWrtNm(loginUser.getUserId());
equip.setMgtOrgan(loginUser.getOgCd());
equip.setWrtOrgan(loginUser.getOgCd());
equip.setWrtDt(LocalDateTime.now());
equipService.saveEquip(equip,request);
@ -107,7 +111,6 @@ public class EquipController {
@ResponseBody
public int updateEquip(@AuthenticationPrincipal UserInfo loginUser,Equip equip, MultipartHttpServletRequest request){
equip.setWrtNm(loginUser.getUserId());
equip.setMgtOrgan(loginUser.getOgCd());
equip.setWrtOrgan(loginUser.getOgCd());
equip.setWrtDt(LocalDateTime.now());
int result = equipService.updateEquip(equip,request);

View File

@ -3,24 +3,29 @@ package com.dbnt.faisp.fipTarget;
import com.dbnt.faisp.authMgt.service.AuthMgtService;
import com.dbnt.faisp.fipTarget.model.PartInfo;
import com.dbnt.faisp.fipTarget.model.PartInfoFile;
import com.dbnt.faisp.fipTarget.service.FipTargetService;
import com.dbnt.faisp.organMgt.service.OrganConfigService;
import com.dbnt.faisp.publicBoard.model.PublicBoard;
import com.dbnt.faisp.translator.model.Translator;
import com.dbnt.faisp.userInfo.model.UserInfo;
import com.dbnt.faisp.util.ParamMap;
import com.dbnt.faisp.util.Utils;
import lombok.RequiredArgsConstructor;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.ui.Model;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
@ -43,22 +48,22 @@ public class FipTargetController {
//엑셀다운
if(partInfo.getExcel() != null && partInfo.getExcel().equals("Y")){
ParamMap header = fipTargetService.selectWorkTypeTotal(partInfo);
String[] headers = { "mgt_organ", "land_police", "mp_work_type", "mp_people_cnt", "mp_description", "pl_work_type", "pl_people_cnt", "pl_description", "terminal_nm", "pi_manager_name", "rent_price", "utility_price", "wrt_dt"};
String[] headerNames = { "해경서", "육경서", "해경", "", "", "육경", "", "", "", "", "", "",""};
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[] headerNames2 = 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_closure")+"개소 "+header.getString("mp_closure_total")+"명"
,"상주 "+header.getString("pl_sangju")+"개소 "+header.getString("pl_sangju_total")+"명"
,"비상주 "+header.getString("pl_bsangju")+"개소 "+header.getString("pl_bsangju_total")+"명"
,"폐쇄 "+header.getString("pl_closure")+"개소 "+header.getString("pl_closure_total")+"명"
, "", "", "", "", "" };
, "", "", "", "" };
}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[] columnType = { "String", "String", "String", "int", "String", "String", "int", "String", "String", "String", "String","String", "String"};
String[] headerNames3 = { "", "","", "근무방법", "명", "비고", "근무방법", "명", "비고", "담당자", "임차료", "공공요금", "최종수정일" };
String[] columnType = { "String", "String","String", "String", "int", "String", "String", "int", "String", "String", "String","String", "String"};
String sheetName = "외사 분실 현황";
String excelFileName = "외사 분실 현황";
List<PartInfo> partInfoList= fipTargetService.selectPartInfoList(partInfo);
@ -71,7 +76,7 @@ public class FipTargetController {
return null;
}
//메뉴권한 확인
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/equip/equipStatus").get(0).getAccessAuth();
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partInfoList").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
partInfo.setDownOrganCdList(loginUser.getDownOrganCdList());
partInfo.setQueryInfo();
@ -122,6 +127,11 @@ public class FipTargetController {
mav.addObject("managerList", fipTargetService.selectPartInfoManagerList(param));
partInfoView.setFileList(fipTargetService.selectPartInfoFile(partInfo));
mav.addObject("partInfo", partInfoView);
//메뉴권한 확인
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partInfoList").get(0).getAccessAuth();
mav.addObject("accessAuth", accessAuth);
mav.addObject("userId", loginUser.getUserId());
mav.addObject("wrtId", fipTargetService.selectPartInfoFirstId(partInfo));
return mav;
}
@ -132,6 +142,7 @@ public class FipTargetController {
partInfo.setMultipartFileList(request.getMultiFileMap().get("uploadFiles"));
partInfo.setWrtUserSeq(loginUser.getUserSeq());
partInfo.setWrtNm(loginUser.getUserId());
partInfo.setWrtOrgan(loginUser.getOgCd());
partInfo.setWrtPart(loginUser.getOfcCd());
partInfo.setWrtDt(LocalDateTime.now());
fipTargetService.updatePartInfo(partInfo,deleteFileSeq);
@ -158,6 +169,84 @@ public class FipTargetController {
public void deletePartInfo(@RequestBody PartInfo partInfo) {
fipTargetService.deletePartInfo(partInfo);
}
@GetMapping("/partInfoFileDownload")
public void fileDownload(HttpServletRequest request,
HttpServletResponse response,
Integer fileSeq,
Integer piSeq,
Integer versionNo) {
PartInfoFile downloadFile = null;
downloadFile = fipTargetService.selectPartInfoFileDown(fileSeq, piSeq,versionNo);
BufferedInputStream in;
BufferedOutputStream out;
try {
File file = new File(downloadFile.getFilePath(), downloadFile.getConvNm());
setDisposition(downloadFile.getOrigNm()+'.'+downloadFile.getFileExtn(), request, response);
in = new BufferedInputStream(new FileInputStream(file));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
if(out!=null) out.close();
if(in!=null )in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws IOException {
String browser = getBrowser(request);
String dispositionPrefix = "attachment; filename=";
String encodedFilename = null;
if (browser.equals("MSIE")) {
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
} else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
} else if (browser.equals("Firefox")) {
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
} else if (browser.equals("Opera")) {
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
} else if (browser.equals("Chrome")) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < filename.length(); i++) {
char c = filename.charAt(i);
if (c > '~') {
sb.append(URLEncoder.encode("" + c, "UTF-8"));
} else {
sb.append(c);
}
}
encodedFilename = sb.toString();
} else {
throw new IOException("Not supported browser");
}
response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename);
if ("Opera".equals(browser)) {
response.setContentType("application/octet-stream;charset=UTF-8");
}
}
private String getBrowser(HttpServletRequest request) {
String header = request.getHeader("User-Agent");
if (header.indexOf("MSIE") > -1) {
return "MSIE";
} else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지
return "Trident";
} else if (header.indexOf("Chrome") > -1) {
return "Chrome";
} else if (header.indexOf("Opera") > -1) {
return "Opera";
}
return "Firefox";
}
//외사분실 운영현황 끝

View File

@ -29,6 +29,8 @@ public interface FipTargetMapper {
List<PartInfoFile> selectPartInfoFileHistoryView(PartInfo partInfo);
String selectPartInfoFirstId(Integer piSeq);

View File

@ -3,6 +3,7 @@ package com.dbnt.faisp.fipTarget.service;
import com.dbnt.faisp.config.BaseService;
import com.dbnt.faisp.config.FileInfo;
import com.dbnt.faisp.equip.model.Equip;
import com.dbnt.faisp.equip.model.Equip.EquipId;
import com.dbnt.faisp.fipTarget.mapper.FipTargetMapper;
@ -135,8 +136,7 @@ public class FipTargetService extends BaseService {
partTmp.setWrtUserSeq(partInfo.getWrtUserSeq());
partTmp.setWrtNm(partInfo.getWrtNm());
partTmp.setWrtPart(partInfo.getWrtPart());
//첫번째 작성자 관서그대로입력
partTmp.setWrtOrgan(dbPart.getWrtOrgan());
partTmp.setWrtOrgan(partInfo.getWrtOrgan());
partTmp.setWrtDt(partInfo.getWrtDt());
partInfoRepository.save(partTmp);
//업데이트하는 버전 파일조회
@ -198,6 +198,14 @@ public class FipTargetService extends BaseService {
partInfoRepository.deleteByPiSeq(partInfo.getPiSeq());
}
public PartInfoFile selectPartInfoFileDown(Integer fileSeq, Integer piSeq, Integer versionNo) {
return partInfoFileRepository.findById(new PartInfoFileId(fileSeq, piSeq,versionNo)).orElse(null);
}
public String selectPartInfoFirstId(PartInfo partInfo) {
return fipTargetMapper.selectPartInfoFirstId(partInfo.getPiSeq());
}

View File

@ -53,6 +53,7 @@ public class TranslatorController {
String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/translator/info").get(0).getAccessAuth();
mav.addObject("mgtOrganList", loginUser.getDownOrganCdList());
mav.addObject("userOrgan", loginUser.getOgCd());
mav.addObject("accessAuth", accessAuth);
translator.setQueryInfo();
mav.addObject("translatorList", translatorSevice.selectTranslatorList(translator));

View File

@ -422,13 +422,13 @@ public class Utils {
Row row = sheet.createRow(i+3);
rowData.set("mgt_organ", partInfoList.get(i).getMgtOrgan());
rowData.set("land_police", partInfoList.get(i).getLandPolice());
rowData.set("terminal_nm", partInfoList.get(i).getTerminalNm());
rowData.set("mp_work_type", partInfoList.get(i).getMpWorkType());
rowData.set("mp_people_cnt", partInfoList.get(i).getMpPeopleCnt());
rowData.set("mp_description", partInfoList.get(i).getMpDescription());
rowData.set("pl_work_type", partInfoList.get(i).getPlWorkType());
rowData.set("pl_people_cnt", partInfoList.get(i).getPlPeopleCnt());
rowData.set("pl_description", partInfoList.get(i).getPlDescription());
rowData.set("terminal_nm", partInfoList.get(i).getTerminalNm());
rowData.set("pi_manager_name", partInfoList.get(i).getPiManagerName());
if(partInfoList.get(i).getRentType().equals("Y")) {
rowData.set("rent_price", partInfoList.get(i).getRentPrice().toString()+"만");
@ -482,9 +482,10 @@ public class Utils {
}
sheet.addMergedRegion(new CellRangeAddress(0,2,0,0));
sheet.addMergedRegion(new CellRangeAddress(0,2,1,1));
sheet.addMergedRegion(new CellRangeAddress(0,0,2,4));
sheet.addMergedRegion(new CellRangeAddress(0,0,5,7));
sheet.addMergedRegion(new CellRangeAddress(0,1,8,12));
sheet.addMergedRegion(new CellRangeAddress(0,2,2,2));
sheet.addMergedRegion(new CellRangeAddress(0,0,3,5));
sheet.addMergedRegion(new CellRangeAddress(0,0,6,8));
sheet.addMergedRegion(new CellRangeAddress(0,1,9,12));
//엑셀이름 한글깨짐방지
String outputFileName = new String(excelFileName.getBytes("KSC5601"), "8859_1");

View File

@ -347,21 +347,14 @@
select (select item_value from code_mgt cm where cm.item_cd = el.equ_type) as equ_type,
(select item_value from code_mgt cm where cm.item_cd = el.detail_type) as detail_name,
detail_type,
case
when oc.organ_type = 'OGC001' then (select item_value from code_mgt cm where cm.item_cd = oc.organ_cd )
when oc.organ_type = 'OGC002' then (select item_value from code_mgt cm where cm.item_cd = oc.organ_cd )
else (select item_value from code_mgt cm where cm.item_cd = oc.parent_organ )
end as sosok,
case
when oc.organ_type = 'OGC003' then (select item_value from code_mgt cm where cm.item_cd = oc.organ_cd )
else null
end as detail_sosok,
(select item_value from code_mgt where item_cd = wrt_organ) as sosok,
(select item_value from code_mgt where item_cd = ofc_cd ) as detail_sosok,
el_contents,
wrt_nm,
wrt_dt
el.wrt_dt
from equ_log el,
organ_config oc
where el.wrt_organ = oc.organ_cd
user_info ui
where el.wrt_nm = ui.user_id
and wrt_organ in
<foreach collection="downOrganCdList" item="item" index="index" separator="," open="(" close=")">
#{item}
@ -376,21 +369,14 @@
select (select item_value from code_mgt cm where cm.item_cd = el.equ_type) as equ_type,
(select item_value from code_mgt cm where cm.item_cd = el.detail_type) as detail_name,
detail_type,
case
when oc.organ_type = 'OGC001' then (select item_value from code_mgt cm where cm.item_cd = oc.organ_cd )
when oc.organ_type = 'OGC002' then (select item_value from code_mgt cm where cm.item_cd = oc.organ_cd )
else (select item_value from code_mgt cm where cm.item_cd = oc.parent_organ )
end as sosok,
case
when oc.organ_type = 'OGC003' then (select item_value from code_mgt cm where cm.item_cd = oc.organ_cd )
else null
end as detail_sosok,
(select item_value from code_mgt where item_cd = wrt_organ) as sosok,
(select item_value from code_mgt where item_cd = ofc_cd ) as detail_sosok,
el_contents,
wrt_nm,
wrt_dt
el.wrt_dt
from equ_log el,
organ_config oc
where el.wrt_organ = oc.organ_cd
user_info ui
where el.wrt_nm = ui.user_id
and wrt_organ in
<foreach collection="downOrganCdList" item="item" index="index" separator="," open="(" close=")">
#{item}

View File

@ -40,7 +40,7 @@
from part_info group by pi_seq) b
where pi.pi_seq = b.pi_seq
and pi.version_no = b.lastVer
and wrt_organ in
and mgt_organ in
<foreach collection="downOrganCdList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
@ -93,7 +93,7 @@
from part_info group by pi_seq) b
where pi.pi_seq = b.pi_seq
and pi.version_no = b.lastVer
and wrt_organ in
and mgt_organ in
<foreach collection="downOrganCdList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
@ -186,7 +186,7 @@
from part_info group by pi_seq) b
where pi.pi_seq = b.pi_seq
and pi.version_no = b.lastVer
and wrt_organ in
and mgt_organ in
<foreach collection="downOrganCdList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
@ -311,5 +311,13 @@
where pi_seq = #{piSeq}
and version_no = #{versionNo}
</select>
<select id="selectPartInfoFirstId" resultType="String" parameterType="int">
select wrt_nm
from part_info
where pi_seq = #{piSeq}
order by version_no asc
limit 1
</select>
</mapper>

View File

@ -32,7 +32,7 @@
left outer join code_mgt f on a.tr_nny = f.item_cd
left outer join code_mgt g on a.tr_edu = g.item_cd
left outer join code_mgt h on a.tr_visa = h.item_cd
where wrt_organ in
where ogdp1 in
<foreach collection="downOrganCdList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
@ -90,7 +90,7 @@
left outer join code_mgt f on a.tr_nny = f.item_cd
left outer join code_mgt g on a.tr_edu = g.item_cd
left outer join code_mgt h on a.tr_visa = h.item_cd
where wrt_organ in
where ogdp1 in
<foreach collection="downOrganCdList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>

View File

@ -109,7 +109,9 @@ function setUploadDiv(){
}
}).on('click', function (e){
if(e.target.className.indexOf("ileDelete")<0){
$("#fileInputer").click();
if( e.target.className.indexOf("artInfo")<0){
$("#fileInputer").click();
}
}
});
}

View File

@ -54,6 +54,11 @@ $(document).on('change', '#equType', function (){
});
$(document).on('click', '#saveEquip', function (){
if($('#mgtOrgan').val() == ''){
alert("관리처를 선택해주세요.");
$('#mgtOrgan').focus();
return false;
}
if($('#equType').val() == ''){
alert("분류를 선택해주세요.");
$('#equType').focus();
@ -70,6 +75,7 @@ $(document).on('click', '#saveEquip', function (){
return false;
}
if(confirm("저장하시겠습니까?")){
document.getElementById("mgtOrgan").disabled = false;
let ajaxUrl = "/equip/saveEquip";
const formData = new FormData($("#equipEditForm")[0]);
contentFade("in");
@ -142,12 +148,18 @@ function deleteImg(equKey,versionNo){
}
$(document).on('click', '#updateEquip', function (){
if($('#mMgtOrgan').val() == ''){
alert("관리처를 선택해주세요.");
$('#mMgtOrgan').focus();
return false;
}
if($('#mItemQty').val() == ''){
alert("수량을 입력해주세요.");
$('#mItemQty').focus();
return false;
}
if(confirm("수정하시겠습니까?")){
document.getElementById("mMgtOrgan").disabled = false;
let ajaxUrl = "/equip/updateEquip";
const formData = new FormData($("#equipModifyForm")[0]);
contentFade("in");

View File

@ -93,6 +93,11 @@ $(document).on('click', '#savePartInfo', function (){
$('#piUserSeq').focus();
return false;
}
if($('#terminalNm').val() == ''){
alert('터미널명을 입력해주세요');
$('#terminalNm').focus();
return false;
}
if($('#mpWorkType').val() != ''){
if($('#mpPeopleCnt').val() == ''){
alert('해경 인원수를 입력해주세요');
@ -223,6 +228,11 @@ $(document).on('click', '#updatePartInfo', function (){
$('#mPiUserSeq').focus();
return false;
}
if($('#mTerminalNm').val() == ''){
alert('터미널명을 입력해주세요');
$('#mTerminalNm').focus();
return false;
}
if($('#mMpWorkType').val() != ''){
if($('#mMpPeopleCnt').val() == ''){
alert('해경 인원수를 입력해주세요');
@ -370,4 +380,22 @@ $(document).on('click', '#deletePartInfo', function (){
}
})
$(document).on('click', '.fileDownPartInfo', function (){
const target = $(this)
let url = "/target/partInfoFileDownload?"
url += "&fileSeq="+target.attr("data-fileSeq");
url += "&piSeq="+target.attr("data-piSeq");
url += "&versionNo="+target.attr("data-verNo");
window.open(encodeURI(url));
})
$(document).on('click', '#closeModal', function (){
location.reload();
})
$(document).on('click', '#btn-close', function (){
location.reload();
})

View File

@ -58,6 +58,7 @@ $(document).on('click', '#updateBtn', function (){
}
if(confirm("수정하시겠습니까?")){
document.getElementById("eOgdp1").disabled = false;
const url = '/translator/translatorEditModal';
contentFade("in");
const formData = new FormData($("#trInfoUpdate")[0]);
@ -106,6 +107,7 @@ $(document).on('click', '#saveBtn', function (){
}
if(confirm("저장하시겠습니까?")){
document.getElementById("ogdp1").disabled = false;
contentFade("in");
const formData = new FormData($("#translatorInsert")[0]);
$.ajax({

View File

@ -12,7 +12,14 @@
<div class="row mb-3">
<label for="cat1Cd" class="col-sm-4 col-form-label col-form-label-sm text-center">관리처</label>
<div class="col-sm-6">
<input type="text" class="form-control" value="사용자 소속처 자동입력" readonly>
<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 userOrgan}"></option>
</th:block>
</th:block>
</select>
</div>
</div>
<div class="row mb-3">

View File

@ -34,17 +34,6 @@
</div>
<div class="col-auto">
<div class="row justify-content-end">
<div class="col-auto">
<select class="form-select form-select-sm" name="ofcCd">
<option value="">부서 선택</option>
<th:block th:each="commonCode:${session.commonCode.get('OFC')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}"></option>
</th:block>
</select>
</div>
<div class="col-auto">
<input type="text" class="form-control form-control-sm" name="userId">
</div>
<input type="submit" class="btn btn-sm btn-primary col-auto" id="searchBtn" value="검색">
</div>
</div>
@ -58,21 +47,21 @@
<table class="table table-striped">
<thead>
<tr>
<th>소속</th>
<th>세부소속</th>
<th>분류</th>
<th>세부분류</th>
<th>관서</th>
<th>부서</th>
<th>수정자</th>
<th>수정내용</th>
<th>수정일시</th>
</tr>
</thead>
<tbody>
<tr th:each="log:${logList}">
<td th:text="${log.sosok}"></td>
<td th:text="${log.detailSosok}"></td>
<tr th:each="log:${logList}">
<td th:text="${log.equType}"></td>
<td th:text="${log.detailName}" style="color: blue; cursor:pointer;" th:onclick="|location.href='@{/equip/List(detailType=${log.detailType})}'|"></td>
<td th:text="${log.sosok}"></td>
<td th:text="${log.detailSosok}"></td>
<td th:text="${log.wrtNm}"></td>
<td th:text="${log.elContents}"></td>
<td th:text="${#temporals.format(log.wrtDt, 'yyyy-MM-dd')}"></td>

View File

@ -14,7 +14,12 @@
<div class="row mb-3">
<label for="cat1Cd" class="col-sm-4 col-form-label col-form-label-sm text-center">관리처</label>
<div class="col-sm-6">
<input type="text" class="form-control" value="사용자 소속처 자동입력" readonly>
<select class="form-select form-select-sm" id="mMgtOrgan" name="mgtOrgan" th:disabled="${accessAuth ne 'ACC003'}">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${equInfo.mgtOrgan}"></option>
</th:block>
</select>
</div>
</div>
<div class="row mb-3">

View File

@ -34,6 +34,12 @@
</select>
</div>
</div>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">터미널명</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="terminalNm" name="terminalNm" placeholder="직접입력">
</div>
</div>
<br><br>
<h6>해경</h6>
<div class="mb-3 row">
@ -75,13 +81,7 @@
<input type="text" class="form-control" id="plDescription" name="plDescription">
</div>
</div>
<br><br>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">터미널명</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="terminalNm" name="terminalNm" placeholder="직접입력">
</div>
</div>
<br><br>
<div class="mb-3 row">
<label for="ofcCd" class="col-sm-2 col-form-label text-center">임차료</label>
<div class="col-sm-2">
@ -122,7 +122,7 @@
</div>
<div class="modal-footer justify-content-between">
<div class="col-auto">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
<button type="button" id="btn-close" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
<button type="button" class="btn btn-primary" id="savePartInfo">저장</button>
</div>
</div>

View File

@ -68,6 +68,12 @@
<input type="text" class="form-control" id="hPiUserSeq" readonly>
</div>
</div>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">터미널명</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="hTerminalNm" readonly>
</div>
</div>
<br>
<h6>해경</h6>
<div class="mb-3 row">
@ -106,12 +112,6 @@
</div>
</div>
<br>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">터미널명</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="hTerminalNm" readonly>
</div>
</div>
<div class="mb-3 row">
<label for="ofcCd" class="col-sm-2 col-form-label text-center">임차료</label>
<div class="col-sm-3">
@ -140,7 +140,7 @@
</div>
<div class="modal-footer justify-content-between">
<div class="col-auto">
<button type="button" class="btn btn-secondary"
<button type="button" id="btn-close" class="btn btn-secondary"
data-bs-dismiss="modal">닫기</button>
</div>
</div>

View File

@ -90,9 +90,9 @@
<tr>
<th rowspan="3">해경서</th>
<th rowspan="3">육경서</th>
<th colspan="3">해경</th>
<th colspan="3">육경</th>
<th rowspan="3">터미널명</th>
<th colspan="3">해경</th>
<th colspan="3">육경</th>
<th rowspan="3">담당자</th>
<th rowspan="3">임차료</th>
<th rowspan="3">공공요금</th>
@ -132,13 +132,13 @@
</th:block>
<td th:text="${pi.mgtOrgan}"></td>
<td th:text="${pi.landPolice}"></td>
<td th:text="${pi.terminalNm}"></td>
<td th:text="${pi.mpWorkType}"></td>
<td th:text="${pi.mpPeopleCnt}"></td>
<td th:text="${pi.mpDescription}"></td>
<td th:text="${pi.plWorkType}"></td>
<td th:text="${pi.plPeopleCnt}"></td>
<td th:text="${pi.plDescription}"></td>
<td th:text="${pi.terminalNm}"></td>
<td th:text="${pi.plDescription}"></td>
<td th:text="${pi.piManagerName}"></td>
<td th:text="|${pi.rentPrice}만|" th:if="${pi.rentType eq 'Y'}"></td>
<td th:unless="${pi.rentType eq 'Y'}">무상</td>
@ -175,7 +175,7 @@
</ul>
</nav>
<div class="col-auto">
<input type="button" class="btn btn-success" value="등록" id="addPartInfo" >
<input type="button" class="btn btn-success" value="등록" id="addPartInfo" th:unless="${accessAuth eq 'ACC001'}">
<button id="goExcel">엑셀다운</button>
</div>
</div>

View File

@ -47,6 +47,12 @@
</select>
</div>
</div>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">터미널명</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="mTerminalNm" name="terminalNm" th:value="${partInfo.terminalNm}" placeholder="직접입력">
</div>
</div>
<br><br>
<h6>해경</h6>
<div class="mb-3 row">
@ -89,12 +95,6 @@
</div>
</div>
<br><br>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">터미널명</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="terminalNm" name="terminalNm" th:value="${partInfo.terminalNm}" placeholder="직접입력">
</div>
</div>
<div class="mb-3 row">
<label for="ofcCd" class="col-sm-2 col-form-label text-center">임차료</label>
<div class="col-sm-2">
@ -131,6 +131,7 @@
<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>
@ -143,9 +144,9 @@
</div>
<div class="modal-footer justify-content-between">
<div class="col-auto">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
<button type="button" class="btn btn-danger" id="deletePartInfo">삭제</button>
<button type="button" class="btn btn-primary" id="updatePartInfo">수정</button>
<button type="button" class="btn btn-secondary" id="btn-close" data-bs-dismiss="modal">닫기</button>
<button type="button" class="btn btn-danger" id="deletePartInfo" th:if="${accessAuth eq 'ACC003'} or ${wrtId eq userId}">삭제</button>
<button type="button" class="btn btn-primary" id="updatePartInfo" th:if="${accessAuth eq 'ACC003'} or ${wrtId eq userId}">수정</button>
</div>
</div>
</html>

View File

@ -194,11 +194,11 @@
<div class="mb-3 row">
<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="ogdp1" name="ogdp1">
<select class="form-select form-select-sm" id="ogdp1" name="ogdp1" 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}"></option>
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd eq userOrgan}"></option>
</th:block>
</th:block>
</select>

View File

@ -11,7 +11,7 @@
<div class="mb-3 row">
<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="eOgdp1" name="ogdp1">
<select class="form-select form-select-sm" id="eOgdp1" name="ogdp1" th:disabled="${accessAuth ne 'ACC003'}">
<option value="">선택</option>
<th:block th:each="commonCode:${session.commonCode.get('OG')}">
<option th:value="${commonCode.itemCd}" th:text="${commonCode.itemValue}" th:selected="${commonCode.itemCd} == ${trInfo.ogdp1}"></option>