From c83300ecf2bf1b238f1e9898fe03851e15a79206 Mon Sep 17 00:00:00 2001 From: kimjhjjang Date: Thu, 17 Nov 2022 10:20:02 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B0=9C=EC=8B=A0=EB=B2=88=ED=98=B8=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=EC=8B=9C=20=EC=A0=9C=EC=B6=9C=20=EC=84=9C?= =?UTF-8?q?=EB=A5=98=20=EB=B3=80=EA=B2=BD=20=EA=B1=B4=20-=20=EB=B2=95?= =?UTF-8?q?=EC=9D=B8=EC=9D=B8=EA=B0=90=EC=A6=9D=EB=AA=85=EC=84=9C=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20-=20=EC=88=98=EC=9E=84=EC=82=AC=20?= =?UTF-8?q?=EB=8C=80=EB=A6=AC=EC=9D=B8=20=EC=9E=AC=EC=A7=81=EC=A6=9D?= =?UTF-8?q?=EB=AA=85=EC=84=9C=20=EC=B6=94=EA=B0=80=20-=20=EC=88=98?= =?UTF-8?q?=EC=9E=84=EC=82=AC=20=EB=8C=80=EB=A6=AC=EC=9D=B8=20=EC=8B=A0?= =?UTF-8?q?=EB=B6=84=EC=A6=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/modules/channelMgt/router/index.js | 21 +- .../views/ProfileList.vue | 385 ++++---- .../sendNumMgt/components/NumberRegPop.vue | 921 +++++++++++------- .../src/modules/sendNumMgt/router/index.js | 32 +- .../sendNumMgt/service/sendNumMgtApi.js | 276 +++--- .../ez/api/sendNumMgt/SendNumMgtService.java | 20 +- .../sendNumMgt/dto/InsertNumberReqDto.java | 9 +- .../kr/co/uplus/ez/common/data/Const.java | 4 + 8 files changed, 983 insertions(+), 685 deletions(-) rename frontend/src/modules/{sendNumMgt => channelMgt}/views/ProfileList.vue (59%) diff --git a/frontend/src/modules/channelMgt/router/index.js b/frontend/src/modules/channelMgt/router/index.js index d216955..0ab6e82 100644 --- a/frontend/src/modules/channelMgt/router/index.js +++ b/frontend/src/modules/channelMgt/router/index.js @@ -1,12 +1,17 @@ -import TmpltList from '../views/TmpltList' +import TmpltList from '../views/TmpltList'; +import ProfileList from '../views/ProfileList'; export default [ { - path: '/channelMgt/tmpltList', - component: TmpltList, - name: 'tmpltList', - meta: { public: false } + path: '/channelMgt/tmpltList', + component: TmpltList, + name: 'tmpltList', + meta: { public: false }, }, - -] - + { + path: '/channelMgt/profileList', + component: ProfileList, + name: 'profileList', + meta: { public: false }, + }, +]; diff --git a/frontend/src/modules/sendNumMgt/views/ProfileList.vue b/frontend/src/modules/channelMgt/views/ProfileList.vue similarity index 59% rename from frontend/src/modules/sendNumMgt/views/ProfileList.vue rename to frontend/src/modules/channelMgt/views/ProfileList.vue index cb80d72..cd5b070 100644 --- a/frontend/src/modules/sendNumMgt/views/ProfileList.vue +++ b/frontend/src/modules/channelMgt/views/ProfileList.vue @@ -1,190 +1,195 @@ - - - \ No newline at end of file + + + diff --git a/frontend/src/modules/sendNumMgt/components/NumberRegPop.vue b/frontend/src/modules/sendNumMgt/components/NumberRegPop.vue index cd3b629..cc4b15d 100644 --- a/frontend/src/modules/sendNumMgt/components/NumberRegPop.vue +++ b/frontend/src/modules/sendNumMgt/components/NumberRegPop.vue @@ -1,7 +1,7 @@ \ No newline at end of file + fromHtmlEntities(str) { + return (str + '').replace(/&#\d+;/gm, function (s) { + return String.fromCharCode(s.match(/\d+/gm)[0]); + }); + }, + }, +}; + diff --git a/frontend/src/modules/sendNumMgt/router/index.js b/frontend/src/modules/sendNumMgt/router/index.js index 4847e26..38c404a 100644 --- a/frontend/src/modules/sendNumMgt/router/index.js +++ b/frontend/src/modules/sendNumMgt/router/index.js @@ -1,26 +1,24 @@ -import ProfileList from '../views/ProfileList' -import NumberList from '../views/NumberList' -import ApprList from '../views/ApprList' +//import ProfileList from '../views/ProfileList' +import NumberList from '../views/NumberList'; +import ApprList from '../views/ApprList'; export default [ - { + /* { 카카오 채널관리로 이동 path: '/sendNumMgt/profileList', component: ProfileList, name: 'profileList', meta: { public: false } + }, */ + { + path: '/sendNumMgt/numberList', + component: NumberList, + name: 'numberList', + meta: { public: false }, }, { - path: '/sendNumMgt/numberList', - component: NumberList, - name: 'numberList', - meta: { public: false } + path: '/sendNumMgt/apprList', + component: ApprList, + name: 'apprList', + meta: { public: false }, }, - { - path: '/sendNumMgt/apprList', - component: ApprList, - name: 'apprList', - meta: { public: false } - }, - -] - +]; diff --git a/frontend/src/modules/sendNumMgt/service/sendNumMgtApi.js b/frontend/src/modules/sendNumMgt/service/sendNumMgtApi.js index 1901c0b..fc91dea 100644 --- a/frontend/src/modules/sendNumMgt/service/sendNumMgtApi.js +++ b/frontend/src/modules/sendNumMgt/service/sendNumMgtApi.js @@ -3,153 +3,191 @@ import axios from 'axios'; // 공통 코드. const getCommCode = (params) => { - return httpClient.post('/api/v1/bo/comm/getCode', params, { withCredentials: false }); -} + return httpClient.post('/api/v1/bo/comm/getCode', params, { withCredentials: false }); +}; const adminList = (params) => { - return httpClient.post('/api/v1/bo/sendNumMgt/adminList', params, {withCredentials: false}); -} + return httpClient.post('/api/v1/bo/sendNumMgt/adminList', params, { withCredentials: false }); +}; const numberDetail = (params) => { - return httpClient.post('/api/v1/bo/sendNumMgt/numberDetail', params, {withCredentials: false}); -} + return httpClient.post('/api/v1/bo/sendNumMgt/numberDetail', params, { withCredentials: false }); +}; const apprDetail = (params) => { - return httpClient.post('/api/v1/bo/sendNumMgt/apprDetail', params, {withCredentials: false}); -} + return httpClient.post('/api/v1/bo/sendNumMgt/apprDetail', params, { withCredentials: false }); +}; const deleteNumber = (params) => { - return httpClient.post('/api/v1/bo/sendNumMgt/deleteNumber', params, {withCredentials: false}); -} + return httpClient.post('/api/v1/bo/sendNumMgt/deleteNumber', params, { withCredentials: false }); +}; // 사업자가 등록 요청. const insertNumber = (adminId, custNm, bRegNo, nmineeDivCd, numberInputs, bizrAuthYn, custSeq) => { - let formData = new FormData(); - const row = {} - row.adminId = adminId - row.custNm = custNm - row.bregno = bRegNo - row.nmineeDivCd = nmineeDivCd - row.list = numberInputs - row.bizrAuthYn = bizrAuthYn - row.custSeq = custSeq + let formData = new FormData(); + const row = {}; + row.adminId = adminId; + row.custNm = custNm; + row.bregno = bRegNo; + row.nmineeDivCd = nmineeDivCd; + row.list = numberInputs; + row.bizrAuthYn = bizrAuthYn; + row.custSeq = custSeq; - formData.append('key', new Blob([ JSON.stringify(row) ], {type : "application/json"})); + formData.append('key', new Blob([JSON.stringify(row)], { type: 'application/json' })); - let url = "/api/v1/bo/sendNumMgt/insertNumber"; - return httpClient.post(url, formData, { - headers: { - "Content-Type": "multipart/form-data", - "Show-Layer": "Yes" - } - }); + let url = '/api/v1/bo/sendNumMgt/insertNumber'; + return httpClient.post(url, formData, { + headers: { + 'Content-Type': 'multipart/form-data', + 'Show-Layer': 'Yes', + }, + }); }; // 사업자가 등록 요청. -const insertNumber1 = (communicationFile, tenureFile ,businessFile, identificationCardFile, identificationEvidenceFile,adminId, custNm, bRegNo, nmineeDivCd, numberInputs, bizrAuthYn, custSeq) => { - let formData = new FormData(); - formData.append("communicationFile", communicationFile); - formData.append("tenureFile", tenureFile); - formData.append("businessFile", businessFile); - formData.append("identificationCardFile", identificationCardFile); - formData.append("identificationEvidenceFile", identificationEvidenceFile); +const insertNumber1 = ( + communicationFile, + tenureFile, + businessFile, + identificationCardFile, + identificationEvidenceFile, + adminId, + custNm, + bRegNo, + nmineeDivCd, + numberInputs, + bizrAuthYn, + custSeq +) => { + let formData = new FormData(); + formData.append('communicationFile', communicationFile); + formData.append('tenureFile', tenureFile); + formData.append('businessFile', businessFile); + formData.append('identificationCardFile', identificationCardFile); + formData.append('identificationEvidenceFile', identificationEvidenceFile); - const row = {} - row.adminId = adminId - row.custNm = custNm - row.bregno = bRegNo - row.nmineeDivCd = nmineeDivCd - row.list = numberInputs - row.bizrAuthYn = bizrAuthYn - row.custSeq = custSeq + const row = {}; + row.adminId = adminId; + row.custNm = custNm; + row.bregno = bRegNo; + row.nmineeDivCd = nmineeDivCd; + row.list = numberInputs; + row.bizrAuthYn = bizrAuthYn; + row.custSeq = custSeq; - formData.append('key', new Blob([ JSON.stringify(row) ], {type : "application/json"})); + formData.append('key', new Blob([JSON.stringify(row)], { type: 'application/json' })); - let url = "/api/v1/bo/sendNumMgt/insertNumber"; - return httpClient.post(url, formData, { - headers: { - "Content-Type": "multipart/form-data", - "Show-Layer": "Yes" - } - }); + let url = '/api/v1/bo/sendNumMgt/insertNumber'; + return httpClient.post(url, formData, { + headers: { + 'Content-Type': 'multipart/form-data', + 'Show-Layer': 'Yes', + }, + }); }; // 타사업자가 등록 요청. -const insertNumber2 = (communicationFile, delegationFile, attorneyFile, otherBusinessFile, delegatedIdentificationFile, delegateCertificateFile, delegatedBusinessFile, authorizedBusinessFile, corporateCertificateFile, identificationCardFile, identificationEvidenceFile, adminId, custNm, bRegNo, nmineeDivCd, numberInputs, bizrAuthYn, custSeq) => { - let formData = new FormData(); - formData.append("communicationFile", communicationFile); - formData.append("delegationFile", delegationFile); - formData.append("attorneyFile", attorneyFile); - formData.append("otherBusinessFile", otherBusinessFile); - formData.append("delegatedIdentificationFile", delegatedIdentificationFile); - formData.append("delegateCertificateFile", delegateCertificateFile); - formData.append("delegatedBusinessFile", delegatedBusinessFile); - formData.append("authorizedBusinessFile", authorizedBusinessFile); - formData.append("corporateCertificateFile", corporateCertificateFile); - formData.append("identificationCardFile", identificationCardFile); - formData.append("identificationEvidenceFile", identificationEvidenceFile); - const row = {} - row.adminId = adminId - row.custNm = custNm - row.bregno = bRegNo - row.nmineeDivCd = nmineeDivCd - row.list = numberInputs - row.bizrAuthYn = bizrAuthYn - row.custSeq = custSeq +const insertNumber2 = ( + communicationFile, + delegationFile, + attorneyFile, + otherBusinessFile, + delegatedIdentificationFile, + delegateCertificateFile, + delegatedBusinessFile, + authorizedBusinessFile, + //corporateCertificateFile, + identificationCardFile, + identificationEvidenceFile, + commDeputyCertificateFile, + commDeputyIdFile, + adminId, + custNm, + bRegNo, + nmineeDivCd, + numberInputs, + bizrAuthYn, + custSeq +) => { + let formData = new FormData(); + formData.append('communicationFile', communicationFile); + formData.append('delegationFile', delegationFile); + formData.append('attorneyFile', attorneyFile); + formData.append('otherBusinessFile', otherBusinessFile); + formData.append('delegatedIdentificationFile', delegatedIdentificationFile); + formData.append('delegateCertificateFile', delegateCertificateFile); + formData.append('delegatedBusinessFile', delegatedBusinessFile); + formData.append('authorizedBusinessFile', authorizedBusinessFile); + //formData.append('corporateCertificateFile', corporateCertificateFile); + formData.append('identificationCardFile', identificationCardFile); + formData.append('identificationEvidenceFile', identificationEvidenceFile); + formData.append('commDeputyCertificateFile', commDeputyCertificateFile); + formData.append('commDeputyIdFile', commDeputyIdFile); + const row = {}; + row.adminId = adminId; + row.custNm = custNm; + row.bregno = bRegNo; + row.nmineeDivCd = nmineeDivCd; + row.list = numberInputs; + row.bizrAuthYn = bizrAuthYn; + row.custSeq = custSeq; - formData.append('key', new Blob([ JSON.stringify(row) ], {type : "application/json"})); + formData.append('key', new Blob([JSON.stringify(row)], { type: 'application/json' })); - let url = "/api/v1/bo/sendNumMgt/insertNumber"; - return httpClient.post(url, formData, { - headers: { - "Content-Type": "multipart/form-data", - "Show-Layer": "Yes" - } - }); + let url = '/api/v1/bo/sendNumMgt/insertNumber'; + + return httpClient.post(url, formData, { + headers: { + 'Content-Type': 'multipart/form-data', + 'Show-Layer': 'Yes', + }, + }); }; const updateAppr = (params) => { - return httpClient.post('/api/v1/bo/sendNumMgt/updateAppr', params, {withCredentials: false}); -} + return httpClient.post('/api/v1/bo/sendNumMgt/updateAppr', params, { withCredentials: false }); +}; const fileDownload = (params) => { - axios({ - method: 'POST', - url: '/api/v1/bo/sendNumMgt/filedownload', - responseType: 'blob', - headers: '', - data: params, - params: params - }) - .then(response => { - const fileName = params.docTitle - const data = response.data - if (!data) { - return - } - const url = window.URL.createObjectURL(new Blob([data])) - const a = document.createElement('a') - a.style.display = 'none' - a.href = url - a.setAttribute('download', fileName) - document.body.appendChild(a) - a.click() - document.body.removeChild(a) - window.URL.revokeObjectURL(url) - }) - .catch(response => { - }) -} + axios({ + method: 'POST', + url: '/api/v1/bo/sendNumMgt/filedownload', + responseType: 'blob', + headers: '', + data: params, + params: params, + }) + .then((response) => { + const fileName = params.docTitle; + const data = response.data; + if (!data) { + return; + } + const url = window.URL.createObjectURL(new Blob([data])); + const a = document.createElement('a'); + a.style.display = 'none'; + a.href = url; + a.setAttribute('download', fileName); + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + window.URL.revokeObjectURL(url); + }) + .catch((response) => { + console.log(response); + }); +}; export default { - getCommCode, - numberDetail, - adminList, - insertNumber, - insertNumber1, - insertNumber2, - apprDetail, - updateAppr, - deleteNumber, - fileDownload -} + getCommCode, + numberDetail, + adminList, + insertNumber, + insertNumber1, + insertNumber2, + apprDetail, + updateAppr, + deleteNumber, + fileDownload, +}; diff --git a/src/main/java/kr/co/uplus/ez/api/sendNumMgt/SendNumMgtService.java b/src/main/java/kr/co/uplus/ez/api/sendNumMgt/SendNumMgtService.java index 1d484a4..0c2d358 100644 --- a/src/main/java/kr/co/uplus/ez/api/sendNumMgt/SendNumMgtService.java +++ b/src/main/java/kr/co/uplus/ez/api/sendNumMgt/SendNumMgtService.java @@ -348,9 +348,9 @@ public class SendNumMgtService { docTpCd.add(Const.SNDRNO_DOC_TP_CD_04); // 법인인감증명서 '12' - MultipartFile corporateCertificateFile = multipartRequest.getFile("corporateCertificateFile"); - multipartFiles.add(corporateCertificateFile); - docTpCd.add(Const.SNDRNO_DOC_TP_CD_12); +// MultipartFile corporateCertificateFile = multipartRequest.getFile("corporateCertificateFile"); +// multipartFiles.add(corporateCertificateFile); +// docTpCd.add(Const.SNDRNO_DOC_TP_CD_12); // 위임사 사업자등록증 '10' MultipartFile delegatedBusinessFile = multipartRequest.getFile("delegatedBusinessFile"); @@ -401,6 +401,20 @@ public class SendNumMgtService { multipartFiles.add(identificationEvidenceFile); docTpCd.add(Const.SNDRNO_DOC_TP_CD_14); } + + // 수임사 대리인 재직증명서(임직원 신청시) '15' + if(multipartRequest.getFile("commDeputyCertificateFile") != null) { + MultipartFile commDeputyCertificateFile = multipartRequest.getFile("commDeputyCertificateFile"); + multipartFiles.add(commDeputyCertificateFile); + docTpCd.add(Const.SNDRNO_DOC_TP_CD_15); + } + + // 수임사 대리인 신분증(임직원 신청시) '16' + if(multipartRequest.getFile("commDeputyIdFile") != null) { + MultipartFile commDeputyIdFile = multipartRequest.getFile("commDeputyIdFile"); + multipartFiles.add(commDeputyIdFile); + docTpCd.add(Const.SNDRNO_DOC_TP_CD_16); + } } // 파일 업로드 및 테이블 저장 (등록 서류 관련). diff --git a/src/main/java/kr/co/uplus/ez/api/sendNumMgt/dto/InsertNumberReqDto.java b/src/main/java/kr/co/uplus/ez/api/sendNumMgt/dto/InsertNumberReqDto.java index 301b8b0..a429c98 100644 --- a/src/main/java/kr/co/uplus/ez/api/sendNumMgt/dto/InsertNumberReqDto.java +++ b/src/main/java/kr/co/uplus/ez/api/sendNumMgt/dto/InsertNumberReqDto.java @@ -56,8 +56,8 @@ public class InsertNumberReqDto implements Serializable{ @ApiModelProperty(example = "file", name = "수임사 사업자등록증", dataType = "String") private MultipartFile authorizedBusinessFile; - @ApiModelProperty(example = "file", name = "법인인감증명서", dataType = "String") - private MultipartFile corporateCertificateFile; +// @ApiModelProperty(example = "file", name = "법인인감증명서", dataType = "String") +// private MultipartFile corporateCertificateFile; 2022.11.14 삭제 @ApiModelProperty(example = "file", name = "신분증(본인확인)", dataType = "String") private MultipartFile identificationCardFile; @@ -65,6 +65,11 @@ public class InsertNumberReqDto implements Serializable{ @ApiModelProperty(example = "file", name = "재직증명서(본인확인)", dataType = "String") private MultipartFile identificationEvidenceFile; + @ApiModelProperty(example = "file", name = "수임사 대리인 재직증명서(임직원 신청시)", dataType = "String") + private MultipartFile commDeputyCertificateFile; + + @ApiModelProperty(example = "file", name = "수임사 대리인 신분증(임직원 신청시)", dataType = "String") + private MultipartFile commDeputyIdFile; // @ApiModelProperty(example = "발신번호 인증 파일", name = "발신번호 인증 파일", dataType = "String") // private List authSendNum; diff --git a/src/main/java/kr/co/uplus/ez/common/data/Const.java b/src/main/java/kr/co/uplus/ez/common/data/Const.java index 917a0b2..e9e2ef6 100644 --- a/src/main/java/kr/co/uplus/ez/common/data/Const.java +++ b/src/main/java/kr/co/uplus/ez/common/data/Const.java @@ -118,6 +118,10 @@ public class Const { public static final String SNDRNO_DOC_TP_CD_13 = "13"; /** 재직증명서(본인확인) */ public static final String SNDRNO_DOC_TP_CD_14 = "14"; + /** 수임사 대리인 재직증명서(임직원 신청시) */ + public static final String SNDRNO_DOC_TP_CD_15 = "15"; + /** 수임사 대리인 신분증(임직원 신청시) */ + public static final String SNDRNO_DOC_TP_CD_16 = "16"; public static final String SNDRNO_TP_CD_SELF = "01"; public static final String SNDRNO_TP_CD_OTHER = "02";