From 9c699d57751aaf14f08ee3ef0693c6d4a19ffea2 Mon Sep 17 00:00:00 2001 From: TaehunPark Date: Thu, 6 Oct 2022 17:51:54 +0900 Subject: [PATCH] =?UTF-8?q?feat:=EC=99=B8=EC=82=AC=EB=B6=84=EC=8B=A4?= =?UTF-8?q?=EC=8B=A4=EC=A0=81=20=EC=83=9D=EC=84=B1(=EC=9E=91=EC=97=85?= =?UTF-8?q?=EC=A4=91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../faisp/fipTarget/FipTargetController.java | 71 +++++++- .../fipTarget/mapper/FipTargetMapper.java | 9 + .../dbnt/faisp/fipTarget/model/PartWork.java | 132 ++++++++++++++ .../faisp/fipTarget/model/PartWorkFile.java | 95 ++++++++++ .../repository/PartWorkFileRepository.java | 34 ++++ .../repository/PartWorkRepository.java | 23 +++ .../fipTarget/service/FipTargetService.java | 90 +++++++++ .../resources/mybatisMapper/FipTarget.xml | 127 +++++++++++++ .../resources/static/js/fipTarget/partWork.js | 172 ++++++++++++++++++ .../static/js/translator/translator.js | 2 +- .../templates/fipTarget/partInfoList.html | 1 + .../fipTarget/partWorkEditModal.html | 84 +++++++++ .../templates/fipTarget/partWorkList.html | 159 ++++++++++++++++ .../fipTarget/partWorkModifyModal.html | 89 +++++++++ 14 files changed, 1086 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/dbnt/faisp/fipTarget/model/PartWork.java create mode 100644 src/main/java/com/dbnt/faisp/fipTarget/model/PartWorkFile.java create mode 100644 src/main/java/com/dbnt/faisp/fipTarget/repository/PartWorkFileRepository.java create mode 100644 src/main/java/com/dbnt/faisp/fipTarget/repository/PartWorkRepository.java create mode 100644 src/main/resources/static/js/fipTarget/partWork.js create mode 100644 src/main/resources/templates/fipTarget/partWorkEditModal.html create mode 100644 src/main/resources/templates/fipTarget/partWorkList.html create mode 100644 src/main/resources/templates/fipTarget/partWorkModifyModal.html diff --git a/src/main/java/com/dbnt/faisp/fipTarget/FipTargetController.java b/src/main/java/com/dbnt/faisp/fipTarget/FipTargetController.java index a5d896d4..63715cdf 100644 --- a/src/main/java/com/dbnt/faisp/fipTarget/FipTargetController.java +++ b/src/main/java/com/dbnt/faisp/fipTarget/FipTargetController.java @@ -4,6 +4,7 @@ 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.model.PartWork; import com.dbnt.faisp.fipTarget.service.FipTargetService; import com.dbnt.faisp.organMgt.service.OrganConfigService; import com.dbnt.faisp.userInfo.model.UserInfo; @@ -78,7 +79,6 @@ public class FipTargetController { //메뉴권한 확인 String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partInfoList").get(0).getAccessAuth(); mav.addObject("accessAuth", accessAuth); - partInfo.setDownOrganCdList(loginUser.getDownOrganCdList()); partInfo.setQueryInfo(); mav.addObject("total", fipTargetService.selectWorkTypeTotal(partInfo)); mav.addObject("partInfoList", fipTargetService.selectPartInfoList(partInfo)); @@ -252,7 +252,76 @@ public class FipTargetController { return "Firefox"; } //외사분실 운영현황 끝 + //외사분실실적 시작 + @GetMapping("/partWorkList") + public ModelAndView partWorkList(@AuthenticationPrincipal UserInfo loginUser,PartWork partWork, HttpServletResponse response) { + ModelAndView mav = new ModelAndView("fipTarget/partWorkList"); + partWork.setDownOrganCdList(loginUser.getDownOrganCdList()); + + //메뉴권한 확인 + String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partWorkList").get(0).getAccessAuth(); + mav.addObject("accessAuth", accessAuth); + partWork.setQueryInfo(); + mav.addObject("partWorkList", fipTargetService.selectPartWorkList(partWork)); + partWork.setContentCnt(fipTargetService.selectPartWorkListCnt(partWork)); + partWork.setPaginationInfo(); + mav.addObject("uesrId", loginUser.getUserId()); + mav.addObject("searchParams", partWork); + return mav; + } + + @GetMapping("/partWorkEditModal") + public ModelAndView partWorkEditModal(@AuthenticationPrincipal UserInfo loginUser,PartWork partWork) { + ModelAndView mav = new ModelAndView("fipTarget/partWorkEditModal"); + partWork.setDownOrganCdList(loginUser.getDownOrganCdList()); + //메뉴권한 확인 + String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partWorkList").get(0).getAccessAuth(); + mav.addObject("accessAuth", accessAuth); + mav.addObject("tnList", fipTargetService.selectTerminalName(partWork)); + + return mav; + } + + @PostMapping("/savePartWork") + public void savePartWork (@AuthenticationPrincipal UserInfo loginUser, PartWork partWork,MultipartHttpServletRequest request){ + partWork.setMultipartFileList(request.getMultiFileMap().get("uploadFiles")); + partWork.setWrtNm(loginUser.getUserId()); + partWork.setWrtPart(loginUser.getOfcCd()); + partWork.setWrtUserSeq(loginUser.getUserSeq()); + partWork.setWrtOrgan(loginUser.getOgCd()); + partWork.setWrtDt(LocalDateTime.now()); + fipTargetService.savePartWork(partWork); + } + + @GetMapping("/partWorkView") + public ModelAndView partWorkView(@AuthenticationPrincipal UserInfo loginUser,PartWork partWork) { + ModelAndView mav = new ModelAndView("fipTarget/partWorkModifyModal"); + partWork.setDownOrganCdList(loginUser.getDownOrganCdList()); + PartWork partWorkView = fipTargetService.selectPartWorkInfo(partWork); + partWorkView.setFileList(fipTargetService.selectPartWorkFile(partWork)); + mav.addObject("pwInfo", partWorkView); + //메뉴권한 확인 + String accessAuth = authMgtService.selectAccessConfigList(loginUser.getUserSeq(), "/target/partInfoList").get(0).getAccessAuth(); + mav.addObject("accessAuth", accessAuth); + mav.addObject("userId", loginUser.getUserId()); + return mav; + } + + @PostMapping("/updatePartWork") + public PartWork updatePartWork (@AuthenticationPrincipal UserInfo loginUser, PartWork partWork, + MultipartHttpServletRequest request, + @RequestParam(value = "fileSeq", required = false) List < Integer > deleteFileSeq){ + partWork.setMultipartFileList(request.getMultiFileMap().get("uploadFiles")); + partWork.setWrtNm(loginUser.getUserId()); + partWork.setWrtPart(loginUser.getOfcCd()); + partWork.setWrtUserSeq(loginUser.getUserSeq()); + partWork.setWrtOrgan(loginUser.getOgCd()); + partWork.setWrtDt(LocalDateTime.now()); + fipTargetService.updatePartWork(partWork,deleteFileSeq); + return partWork; + } + diff --git a/src/main/java/com/dbnt/faisp/fipTarget/mapper/FipTargetMapper.java b/src/main/java/com/dbnt/faisp/fipTarget/mapper/FipTargetMapper.java index c1fca3e9..532bf506 100644 --- a/src/main/java/com/dbnt/faisp/fipTarget/mapper/FipTargetMapper.java +++ b/src/main/java/com/dbnt/faisp/fipTarget/mapper/FipTargetMapper.java @@ -2,6 +2,7 @@ package com.dbnt.faisp.fipTarget.mapper; import com.dbnt.faisp.fipTarget.model.PartInfo; import com.dbnt.faisp.fipTarget.model.PartInfoFile; +import com.dbnt.faisp.fipTarget.model.PartWork; import com.dbnt.faisp.util.ParamMap; import org.apache.ibatis.annotations.Mapper; @@ -31,6 +32,14 @@ public interface FipTargetMapper { String selectPartInfoFirstId(Integer piSeq); + List selectTerminalName(PartWork partWork); + + List selectPartWorkList(PartWork partWork); + + Integer selectPartWorkListCnt(PartWork partWork); + + PartWork selectPartWorkInfo(PartWork partWork); + diff --git a/src/main/java/com/dbnt/faisp/fipTarget/model/PartWork.java b/src/main/java/com/dbnt/faisp/fipTarget/model/PartWork.java new file mode 100644 index 00000000..342be806 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/fipTarget/model/PartWork.java @@ -0,0 +1,132 @@ +package com.dbnt.faisp.fipTarget.model; + +import com.dbnt.faisp.config.BaseModel; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.web.multipart.MultipartFile; + +import javax.persistence.*; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + + +@Getter +@Setter +@Entity +@NoArgsConstructor +@DynamicInsert +@DynamicUpdate +@IdClass(PartWork.PartWorkId.class) +@Table(name = "part_work") +public class PartWork extends BaseModel implements Serializable{ + @Id + @Column(name = "pw_seq") + private Integer pwSeq; + @Id + @Column(name = "pi_seq") + private Integer piSeq; + @Column(name = "work_dt") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate workDt; + @Column(name = "work_type") + private String workType; + @Column(name = "work_info") + private String workInfo; + @Column(name = "description") + private String description; + @Column(name = "save_yn") + private String saveYn; + @Column(name = "wrt_organ") + private String wrtOrgan; + @Column(name = "wrt_part") + private String wrtPart; + @Column(name = "wrt_user_seq") + private Integer wrtUserSeq; + @Column(name = "wrt_nm") + private String wrtNm; + @Column(name = "wrt_dt") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") + private LocalDateTime wrtDt; + + @Transient + private List multipartFileList; + + @Transient + private String excel; + @Transient + private String terminalNm; + @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; + + @Transient + private List fileList; + + + + +@Override +public String toString() { + return "PartWork [pwSeq=" + pwSeq + ", piSeq=" + piSeq + ", workDt=" + workDt + ", workType=" + workType + + ", workInfo=" + workInfo + ", description=" + description + ", saveYn=" + saveYn + ", wrtOrgan=" + + wrtOrgan + ", wrtPart=" + wrtPart + ", wrtUserSeq=" + wrtUserSeq + ", wrtNm=" + wrtNm + ", wrtDt=" + wrtDt + + ", multipartFileList=" + multipartFileList + ", excel=" + excel + ", fileList=" + fileList + "]"; +} + + + + +@Embeddable +@Data +@NoArgsConstructor +@AllArgsConstructor +public static class PartWorkId implements Serializable { + private Integer pwSeq; + private Integer piSeq; +} + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/src/main/java/com/dbnt/faisp/fipTarget/model/PartWorkFile.java b/src/main/java/com/dbnt/faisp/fipTarget/model/PartWorkFile.java new file mode 100644 index 00000000..7e254157 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/fipTarget/model/PartWorkFile.java @@ -0,0 +1,95 @@ +package com.dbnt.faisp.fipTarget.model; + +import com.dbnt.faisp.config.BaseModel; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.persistence.*; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Date; + + +@Getter +@Setter +@Entity +@NoArgsConstructor +@DynamicInsert +@DynamicUpdate +@IdClass(PartWorkFile.PartWorkFileId.class) +@Table(name = "part_work_file") +public class PartWorkFile extends BaseModel implements Serializable{ + @Id + @Column(name = "file_seq") + private Integer fileSeq; + @Id + @Column(name = "pw_seq") + private Integer pwSeq; + @Id + @Column(name = "pi_seq") + private Integer piSeq; + @Column(name = "orig_nm") + private String origNm; + @Column(name = "conv_nm") + private String convNm; + @Column(name = "file_extn") + private String fileExtn; + @Column(name = "file_size") + private String fileSize; + @Column(name = "file_path") + private String filePath; + + + + + + + +@Override +public String toString() { + return "PartWorkFile [fileSeq=" + fileSeq + ", pwSeq=" + pwSeq + ", piSeq=" + piSeq + ", origNm=" + origNm + + ", convNm=" + convNm + ", fileExtn=" + fileExtn + ", fileSize=" + fileSize + ", filePath=" + filePath + + "]"; +} + + + + + + + +@Embeddable +@Data +@NoArgsConstructor +@AllArgsConstructor +public static class PartWorkFileId implements Serializable { + private Integer fileSeq; + private Integer pwSeq; + private Integer piSeq; +} + + + + + + + + + + + + + + + + +} diff --git a/src/main/java/com/dbnt/faisp/fipTarget/repository/PartWorkFileRepository.java b/src/main/java/com/dbnt/faisp/fipTarget/repository/PartWorkFileRepository.java new file mode 100644 index 00000000..811c1db5 --- /dev/null +++ b/src/main/java/com/dbnt/faisp/fipTarget/repository/PartWorkFileRepository.java @@ -0,0 +1,34 @@ +package com.dbnt.faisp.fipTarget.repository; + + +import com.dbnt.faisp.fipTarget.model.PartInfoFile; +import com.dbnt.faisp.fipTarget.model.PartWorkFile; +import com.dbnt.faisp.publicBoard.model.PublicFile; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; + + + +public interface PartWorkFileRepository extends JpaRepository { + + PartWorkFile findTopByPwSeqAndPiSeqOrderByFileSeqDesc(Integer piSeq, Integer piSeq2); + + List findByPwSeqAndPiSeqOrderByFileSeqAsc(Integer pwSeq, Integer piSeq); + + List findByPwSeqAndPiSeq(Integer pwSeq, Integer piSeq); + + + + + + + + + + + + + +} diff --git a/src/main/java/com/dbnt/faisp/fipTarget/repository/PartWorkRepository.java b/src/main/java/com/dbnt/faisp/fipTarget/repository/PartWorkRepository.java new file mode 100644 index 00000000..8a5363ad --- /dev/null +++ b/src/main/java/com/dbnt/faisp/fipTarget/repository/PartWorkRepository.java @@ -0,0 +1,23 @@ +package com.dbnt.faisp.fipTarget.repository; + + +import com.dbnt.faisp.fipTarget.model.PartWork; + +import org.springframework.data.jpa.repository.JpaRepository; + + + +public interface PartWorkRepository extends JpaRepository { + + PartWork findTopByPiSeqOrderByPwSeqDesc(Integer piSeq); + + + + + + + + + + +} diff --git a/src/main/java/com/dbnt/faisp/fipTarget/service/FipTargetService.java b/src/main/java/com/dbnt/faisp/fipTarget/service/FipTargetService.java index 5920e9fe..9dfa4422 100644 --- a/src/main/java/com/dbnt/faisp/fipTarget/service/FipTargetService.java +++ b/src/main/java/com/dbnt/faisp/fipTarget/service/FipTargetService.java @@ -11,8 +11,14 @@ import com.dbnt.faisp.fipTarget.model.PartInfo; import com.dbnt.faisp.fipTarget.model.PartInfo.PartInfoId; import com.dbnt.faisp.fipTarget.model.PartInfoFile; import com.dbnt.faisp.fipTarget.model.PartInfoFile.PartInfoFileId; +import com.dbnt.faisp.fipTarget.model.PartWork; +import com.dbnt.faisp.fipTarget.model.PartWork.PartWorkId; +import com.dbnt.faisp.fipTarget.model.PartWorkFile; +import com.dbnt.faisp.fipTarget.model.PartWorkFile.PartWorkFileId; import com.dbnt.faisp.fipTarget.repository.PartInfoFileRepository; import com.dbnt.faisp.fipTarget.repository.PartInfoRepository; +import com.dbnt.faisp.fipTarget.repository.PartWorkFileRepository; +import com.dbnt.faisp.fipTarget.repository.PartWorkRepository; import com.dbnt.faisp.publicBoard.model.PublicFile; import com.dbnt.faisp.util.ParamMap; @@ -37,6 +43,8 @@ public class FipTargetService extends BaseService { private final PartInfoRepository partInfoRepository; private final PartInfoFileRepository partInfoFileRepository; + private final PartWorkRepository partWorkRepository; + private final PartWorkFileRepository partWorkFileRepository; private final FipTargetMapper fipTargetMapper; public List selectPartInfoManagerList(ParamMap param) { @@ -206,6 +214,88 @@ public class FipTargetService extends BaseService { public String selectPartInfoFirstId(PartInfo partInfo) { return fipTargetMapper.selectPartInfoFirstId(partInfo.getPiSeq()); } + + public List selectTerminalName(PartWork partWork) { + return fipTargetMapper.selectTerminalName(partWork); + } + + @Transactional + public void savePartWork(PartWork partWork) { + PartWork dbPart = partWorkRepository.findTopByPiSeqOrderByPwSeqDesc(partWork.getPiSeq()); + if(dbPart == null) { + partWork.setPwSeq(1); + partWorkRepository.save(partWork); + } else { + partWork.setPwSeq(dbPart.getPwSeq()+1); + partWorkRepository.save(partWork); + } + if(partWork.getMultipartFileList()!= null){ + saveFilesUpload(partWork.getPwSeq(),partWork.getPiSeq(), partWork.getMultipartFileList()); + } + } + + private void saveFilesUpload(Integer pwSeq,Integer piSeq, List multipartFileList) { + PartWorkFile lastFileInfo = partWorkFileRepository.findTopByPwSeqAndPiSeqOrderByFileSeqDesc(pwSeq,piSeq); + int fileSeq = lastFileInfo==null?1:(lastFileInfo.getFileSeq()+1); + for(MultipartFile file : multipartFileList){ + String saveName = UUID.randomUUID().toString(); + String path = locationPath+File.separator+"publicFile"+File.separator; + saveFile(file, new File(path+File.separator+saveName)); + + String originalFilename = file.getOriginalFilename(); + int extnIdx = originalFilename.lastIndexOf("."); + PartWorkFile fileInfo = new PartWorkFile(); + fileInfo.setFileSeq(fileSeq++); + fileInfo.setPwSeq(pwSeq); + fileInfo.setPiSeq(piSeq); + fileInfo.setOrigNm(originalFilename.substring(0, extnIdx)); + fileInfo.setFileExtn(originalFilename.substring(extnIdx+1)); + fileInfo.setConvNm(saveName); + fileInfo.setFileSize(calculationSize(file.getSize())); + fileInfo.setFilePath(path); + partWorkFileRepository.save(fileInfo); + } + + } + + public List selectPartWorkList(PartWork partWork) { + return fipTargetMapper.selectPartWorkList(partWork); + } + + public Integer selectPartWorkListCnt(PartWork partWork) { + return fipTargetMapper.selectPartWorkListCnt(partWork); + } + + public PartWork selectPartWorkInfo(PartWork partWork) { + return fipTargetMapper.selectPartWorkInfo(partWork); + } + + public List selectPartWorkFile(PartWork partWork) { + return partWorkFileRepository.findByPwSeqAndPiSeqOrderByFileSeqAsc(partWork.getPwSeq(),partWork.getPiSeq()); + } + + @Transactional + public void updatePartWork(PartWork partWork, List deleteFileSeq) { + partWorkRepository.save(partWork); + if(deleteFileSeq!=null && deleteFileSeq.size()>0){ + deletePartWorkFile(partWork, deleteFileSeq); + } + if(partWork.getMultipartFileList()!= null){ + saveFilesUpload(partWork.getPwSeq(),partWork.getPiSeq(), partWork.getMultipartFileList()); + } + } + + private void deletePartWorkFile(PartWork partWork, List deleteFileSeq) { + List partWorkFileList = partWorkFileRepository.findByPwSeqAndPiSeq(partWork.getPwSeq(),partWork.getPiSeq()); + for(PartWorkFile file: partWorkFileList ){ + if(deleteFileSeq.contains(file.getFileSeq())){ + deleteStoredFile(new File(file.getFilePath(), file.getConvNm())); + partWorkFileRepository.delete(file); + } + } + } + + diff --git a/src/main/resources/mybatisMapper/FipTarget.xml b/src/main/resources/mybatisMapper/FipTarget.xml index edecec2c..9ae3dac0 100644 --- a/src/main/resources/mybatisMapper/FipTarget.xml +++ b/src/main/resources/mybatisMapper/FipTarget.xml @@ -319,5 +319,132 @@ order by version_no asc limit 1 + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/js/fipTarget/partWork.js b/src/main/resources/static/js/fipTarget/partWork.js new file mode 100644 index 00000000..3a73dff6 --- /dev/null +++ b/src/main/resources/static/js/fipTarget/partWork.js @@ -0,0 +1,172 @@ +let files = []; + +$(document).on('click', '#addPartWork', function (){ + $.ajax({ + url: '/target/partWorkEditModal', + type: 'GET', + dataType:"html", + success: function(html){ + $("#partWorkEditModalEditModalContent").empty().append(html); + $("#partWorkEditModal").modal('show'); + setUploadDiv(); + $("#workDt").datepicker({ + format: "yyyy-mm-dd", + language: "ko" + }); + $("#workInfo").summernote({ + lang:'ko-KR', + height: 350, + disableDragAndDrop: true, + toolbar: [ + ['style', ['style']], + ['font', ['bold', 'underline', 'clear']], + ['color', ['color']], + ['para', ['ul', 'ol', 'paragraph']], + ['table', ['table']] + ] + }); + }, + error:function(){ + + } + }); +}) + +$(document).on('click', '#saveBtn', function (){ + if($('#piSeq').val() == ''){ + alert('터미널명을 선택해주세요'); + $('#piSeq').focus(); + return false; + } + if($('input:radio[name="workType"]:checked').length < 1){ + alert('종류를 선택해주세요'); + return false; + } + if(confirm("저장하시겠습니까?")){ + $('#saveYn').val('Y'); + contentFade("in"); + savePartWork(); + } +}) + +$(document).on('click', '#temporarySaveBtn', function (){ + if($('#piSeq').val() == ''){ + alert('터미널명을 선택해주세요'); + $('#piSeq').focus(); + return false; + } + if($('input:radio[name="workType"]:checked').length < 1){ + alert('종류를 선택해주세요'); + return false; + } + if(confirm("임시 저장하시겠습니까?")){ + $('#saveYn').val('N'); + contentFade("in"); + savePartWork(); + } +}) + +function savePartWork(){ + const formData = new FormData($("#partWorkSaveFm")[0]); + for(const file of files) { + if(!file.isDelete) + formData.append('uploadFiles', file, file.name); + } + $.ajax({ + type : 'POST', + data : formData, + url : "/target/savePartWork", + processData: false, + contentType: false, + success : function(result) { + alert("저장되었습니다."); + contentFade("out"); + location.reload(); + }, + error : function(xhr, status) { + alert("저장에 실패하였습니다.") + contentFade("out"); + } + }) +} + +$(document).on('click', '.partWorkTr', function (){ + const pwSeq = (Number($(this).find(".pwSeq").val())); + const piSeq = (Number($(this).find(".piSeq").val())); + showModal(pwSeq,piSeq); +}) + +function showModal(pwSeq,piSeq){ + $.ajax({ + url: '/target/partWorkView', + data: { + pwSeq: pwSeq, + piSeq: piSeq + }, + type: 'GET', + dataType:"html", + success: function(html){ + $("#partWorkEditModalEditModalContent").empty().append(html); + $("#partWorkEditModal").modal('show'); + setUploadDiv(); + $("#mWorkDt").datepicker({ + format: "yyyy-mm-dd", + language: "ko" + }); + $("#mWorkInfo").summernote({ + lang:'ko-KR', + height: 350, + disableDragAndDrop: true, + toolbar: [ + ['style', ['style']], + ['font', ['bold', 'underline', 'clear']], + ['color', ['color']], + ['para', ['ul', 'ol', 'paragraph']], + ['table', ['table']] + ] + }); + }, + error:function(){ + + } + }); +} + +$(document).on('click', '#updateBtn', function (){ + if(confirm("수정하시겠습니까?")){ + contentFade("in"); + const formData = new FormData($("#partWorkUpdateFm")[0]); + formData.append('saveYn','Y'); + for(const file of files) { + if(!file.isDelete) + formData.append('uploadFiles', file, file.name); + } + $(".text-decoration-line-through").each(function (idx, el){ + formData.append('fileSeq', $(el).attr("data-fileseq")); + }) + $.ajax({ + type : 'POST', + data : formData, + url : "/target/updatePartWork", + processData: false, + contentType: false, + success : function(data) { + alert("수정되었습니다."); + contentFade("out"); + showModal(data.pwSeq,data.piSeq); + }, + error : function(xhr, status) { + alert("수정에 실패하였습니다.") + contentFade("out"); + } + }) + } +}) + +$(document).on('click', '.btn-close', function (){ + location.reload(); +}) + +$(document).on('click', '#btn-close', function (){ + location.reload(); +}) \ No newline at end of file diff --git a/src/main/resources/static/js/translator/translator.js b/src/main/resources/static/js/translator/translator.js index 1d5744c3..29880898 100644 --- a/src/main/resources/static/js/translator/translator.js +++ b/src/main/resources/static/js/translator/translator.js @@ -208,7 +208,7 @@ function revisionHistory(trKey,verNo,url){ $("#viewAptDt").datepicker({ format: "yyyy-mm-dd", language: "ko" - }); + }); }, error:function(){ diff --git a/src/main/resources/templates/fipTarget/partInfoList.html b/src/main/resources/templates/fipTarget/partInfoList.html index c165479d..c59f0afa 100644 --- a/src/main/resources/templates/fipTarget/partInfoList.html +++ b/src/main/resources/templates/fipTarget/partInfoList.html @@ -123,6 +123,7 @@ 근무방법 명 비고 + diff --git a/src/main/resources/templates/fipTarget/partWorkEditModal.html b/src/main/resources/templates/fipTarget/partWorkEditModal.html new file mode 100644 index 00000000..6e877a1e --- /dev/null +++ b/src/main/resources/templates/fipTarget/partWorkEditModal.html @@ -0,0 +1,84 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/fipTarget/partWorkList.html b/src/main/resources/templates/fipTarget/partWorkList.html new file mode 100644 index 00000000..f84881c0 --- /dev/null +++ b/src/main/resources/templates/fipTarget/partWorkList.html @@ -0,0 +1,159 @@ + + + + + +
+
+

외사 분실 현황

+ + +
+
+
+
+ + +
+
+ +
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
외사
터미널명
작성자일시종류비고첨부파일최근수정일
사건처리범죄첩보제공SRI합동점검회의기타
+
+
+
+ +
+ + +
+
+
+
+
+
+
+
+
+
+
+ + + + + + +
+ \ No newline at end of file diff --git a/src/main/resources/templates/fipTarget/partWorkModifyModal.html b/src/main/resources/templates/fipTarget/partWorkModifyModal.html new file mode 100644 index 00000000..de742434 --- /dev/null +++ b/src/main/resources/templates/fipTarget/partWorkModifyModal.html @@ -0,0 +1,89 @@ + + + + + + + \ No newline at end of file