발신번호 등록시 제출 서류 변경 건

- 법인인감증명서 삭제
- 수임사 대리인 재직증명서 추가
- 수임사 대리인 신분증 추가
This commit is contained in:
kimjhjjang
2022-11-17 10:20:02 +09:00
parent 69aec986af
commit c83300ecf2
8 changed files with 983 additions and 685 deletions

View File

@@ -1,12 +1,17 @@
import TmpltList from '../views/TmpltList' import TmpltList from '../views/TmpltList';
import ProfileList from '../views/ProfileList';
export default [ export default [
{ {
path: '/channelMgt/tmpltList', path: '/channelMgt/tmpltList',
component: TmpltList, component: TmpltList,
name: 'tmpltList', name: 'tmpltList',
meta: { public: false } meta: { public: false },
}, },
{
] path: '/channelMgt/profileList',
component: ProfileList,
name: 'profileList',
meta: { public: false },
},
];

View File

@@ -1,10 +1,9 @@
<template> <template>
<div class="contents"> <div class="contents">
<div class="contents_wrap"> <div class="contents_wrap">
<div class="top_wrap"> <div class="top_wrap">
<h3 class="title">발신프로필관리</h3> <h3 class="title">채널관리</h3>
<p class="breadcrumb">발신번호관리 &gt; 발신프로필관리</p> <p class="breadcrumb">카카오 채널관리 &gt; 채널관리</p>
</div> </div>
<div class="search_wrap"> <div class="search_wrap">
<div class="select_box"> <div class="select_box">
@@ -26,18 +25,25 @@
</select> </select>
</div> </div>
<div class="input_box"> <div class="input_box">
<input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model.trim="grid.params.searchText1" <input
maxlength="100" @keyup.enter="search"/> class="search-box"
type="text"
id="search"
placeholder="검색어 입력"
v-model.trim="grid.params.searchText1"
maxlength="100"
@keyup.enter="search"
/>
</div> </div>
<button type="button" class="button grey" @click="search">조회</button> <button type="button" class="button grey" @click="search">조회</button>
</div> </div>
<div class="info"> <div class="info">
<div class="count"> <span> {{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }} </span> <div class="count">
<span> {{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }} </span>
<div class="select_box NumberSe"> <div class="select_box NumberSe">
<select name="" id="perpage" v-model="perPageCnt" @change="changePerPage()"> <select name="" id="perpage" v-model="perPageCnt" @change="changePerPage()">
<option v-for="option in options" v-bind:value="option.value" v-bind:key="option.value">{{ <option v-for="option in options" v-bind:value="option.value" v-bind:key="option.value">
option.text {{ option.text }}
}}
</option> </option>
</select> </select>
</div> </div>
@@ -55,7 +61,8 @@
:columns="grid.columns" :columns="grid.columns"
:noDataStr="grid.noDataStr" :noDataStr="grid.noDataStr"
:addCls="grid.addCls" :addCls="grid.addCls"
:header="grid.headder"> :header="grid.headder"
>
</custom-grid> </custom-grid>
</div> </div>
</div> </div>
@@ -65,7 +72,6 @@
<script> <script>
import customGrid from '@/components/CustomGrid'; import customGrid from '@/components/CustomGrid';
export default { export default {
name: 'profileList', name: 'profileList',
data() { data() {
@@ -73,7 +79,7 @@ export default {
row: {}, row: {},
authType: [], authType: [],
statType: [], statType: [],
cate2Code: "", cate2Code: '',
totalItems: 0, totalItems: 0,
searchType1: '', searchType1: '',
searchType2: 'custNm', searchType2: 'custNm',
@@ -82,7 +88,7 @@ export default {
options: [ options: [
{ text: '20', value: 20 }, { text: '20', value: 20 },
{ text: '50', value: 50 }, { text: '50', value: 50 },
{text: '100', value: 100} { text: '100', value: 100 },
], ],
grid: { grid: {
url: '/api/v1/bo/sendNumMgt/profileList', url: '/api/v1/bo/sendNumMgt/profileList',
@@ -100,7 +106,7 @@ export default {
{ header: '발신프로필key', childNames: [] }, { header: '발신프로필key', childNames: [] },
{ header: '상태', childNames: [] }, { header: '상태', childNames: [] },
{ header: '등록일', childNames: [] }, { header: '등록일', childNames: [] },
] ],
], ],
columns: [ columns: [
@@ -116,10 +122,10 @@ export default {
params: { params: {
searchType1: '', searchType1: '',
searchType2: 'custNm', searchType2: 'custNm',
searchText1: '' searchText1: '',
},
excelHeader: [],
}, },
excelHeader: []
}
}; };
}, },
components: { components: {
@@ -132,12 +138,11 @@ export default {
params: { params: {
searchType1: '', searchType1: '',
searchType2: '', searchType2: '',
searchText1: '' searchText1: '',
} },
}); });
}, },
created() { created() {},
},
mounted() { mounted() {
let page = 1; let page = 1;
// //
@@ -155,8 +160,8 @@ export default {
}, },
methods: { methods: {
search: function (isKeep) { search: function (isKeep) {
this.grid.params.searchType1 = this.searchType1 this.grid.params.searchType1 = this.searchType1;
this.grid.params.searchType2 = this.searchType2 this.grid.params.searchType2 = this.searchType2;
this.$refs.table.search(this.grid.params, isKeep); this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData(); this.sendStoreData();
}, },
@@ -165,26 +170,26 @@ export default {
this.$store.commit('searchcondition/updateSearchCondition', { this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage, page: getP._currentPage,
perPage: this.perPageCnt, perPage: this.perPageCnt,
params: this.grid.params params: this.grid.params,
}); });
const getCondition = this.$store.getters['searchcondition/getSearchCondition']; const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
}, },
changePerPage: function () { // changePerPage: function () {
//
this.grid.pagePerRows = this.perPageCnt; this.grid.pagePerRows = this.perPageCnt;
}, },
}, },
beforeRouteLeave(to, from, next) { beforeRouteLeave(to, from, next) {
const getP = this.$refs.table.getPagination(); const getP = this.$refs.table.getPagination();
this.$store.commit('searchcondition/updateSearchCondition', { this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage, page: getP._currentPage,
perPage: this.perPageCnt, perPage: this.perPageCnt,
params: this.grid.params params: this.grid.params,
}); });
// //
next(); next();
} },
}; };
</script> </script>

File diff suppressed because it is too large Load Diff

View File

@@ -1,26 +1,24 @@
import ProfileList from '../views/ProfileList' //import ProfileList from '../views/ProfileList'
import NumberList from '../views/NumberList' import NumberList from '../views/NumberList';
import ApprList from '../views/ApprList' import ApprList from '../views/ApprList';
export default [ export default [
{ /* { 카카오 채널관리로 이동
path: '/sendNumMgt/profileList', path: '/sendNumMgt/profileList',
component: ProfileList, component: ProfileList,
name: 'profileList', name: 'profileList',
meta: { public: false } meta: { public: false }
}, }, */
{ {
path: '/sendNumMgt/numberList', path: '/sendNumMgt/numberList',
component: NumberList, component: NumberList,
name: 'numberList', name: 'numberList',
meta: { public: false } meta: { public: false },
}, },
{ {
path: '/sendNumMgt/apprList', path: '/sendNumMgt/apprList',
component: ApprList, component: ApprList,
name: 'apprList', name: 'apprList',
meta: { public: false } meta: { public: false },
}, },
];
]

View File

@@ -4,113 +4,150 @@ import axios from 'axios';
// 공통 코드. // 공통 코드.
const getCommCode = (params) => { 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) => { 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) => { 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) => { 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) => { 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) => { const insertNumber = (adminId, custNm, bRegNo, nmineeDivCd, numberInputs, bizrAuthYn, custSeq) => {
let formData = new FormData(); let formData = new FormData();
const row = {} const row = {};
row.adminId = adminId row.adminId = adminId;
row.custNm = custNm row.custNm = custNm;
row.bregno = bRegNo row.bregno = bRegNo;
row.nmineeDivCd = nmineeDivCd row.nmineeDivCd = nmineeDivCd;
row.list = numberInputs row.list = numberInputs;
row.bizrAuthYn = bizrAuthYn row.bizrAuthYn = bizrAuthYn;
row.custSeq = custSeq 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"; let url = '/api/v1/bo/sendNumMgt/insertNumber';
return httpClient.post(url, formData, { return httpClient.post(url, formData, {
headers: { headers: {
"Content-Type": "multipart/form-data", 'Content-Type': 'multipart/form-data',
"Show-Layer": "Yes" 'Show-Layer': 'Yes',
} },
}); });
}; };
// 사업자가 등록 요청. // 사업자가 등록 요청.
const insertNumber1 = (communicationFile, tenureFile ,businessFile, identificationCardFile, identificationEvidenceFile,adminId, custNm, bRegNo, nmineeDivCd, numberInputs, bizrAuthYn, custSeq) => { const insertNumber1 = (
communicationFile,
tenureFile,
businessFile,
identificationCardFile,
identificationEvidenceFile,
adminId,
custNm,
bRegNo,
nmineeDivCd,
numberInputs,
bizrAuthYn,
custSeq
) => {
let formData = new FormData(); let formData = new FormData();
formData.append("communicationFile", communicationFile); formData.append('communicationFile', communicationFile);
formData.append("tenureFile", tenureFile); formData.append('tenureFile', tenureFile);
formData.append("businessFile", businessFile); formData.append('businessFile', businessFile);
formData.append("identificationCardFile", identificationCardFile); formData.append('identificationCardFile', identificationCardFile);
formData.append("identificationEvidenceFile", identificationEvidenceFile); formData.append('identificationEvidenceFile', identificationEvidenceFile);
const row = {} const row = {};
row.adminId = adminId row.adminId = adminId;
row.custNm = custNm row.custNm = custNm;
row.bregno = bRegNo row.bregno = bRegNo;
row.nmineeDivCd = nmineeDivCd row.nmineeDivCd = nmineeDivCd;
row.list = numberInputs row.list = numberInputs;
row.bizrAuthYn = bizrAuthYn row.bizrAuthYn = bizrAuthYn;
row.custSeq = custSeq 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"; let url = '/api/v1/bo/sendNumMgt/insertNumber';
return httpClient.post(url, formData, { return httpClient.post(url, formData, {
headers: { headers: {
"Content-Type": "multipart/form-data", 'Content-Type': 'multipart/form-data',
"Show-Layer": "Yes" 'Show-Layer': 'Yes',
} },
}); });
}; };
// 타사업자가 등록 요청. // 타사업자가 등록 요청.
const insertNumber2 = (communicationFile, delegationFile, attorneyFile, otherBusinessFile, delegatedIdentificationFile, delegateCertificateFile, delegatedBusinessFile, authorizedBusinessFile, corporateCertificateFile, identificationCardFile, identificationEvidenceFile, adminId, custNm, bRegNo, nmineeDivCd, numberInputs, bizrAuthYn, 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(); let formData = new FormData();
formData.append("communicationFile", communicationFile); formData.append('communicationFile', communicationFile);
formData.append("delegationFile", delegationFile); formData.append('delegationFile', delegationFile);
formData.append("attorneyFile", attorneyFile); formData.append('attorneyFile', attorneyFile);
formData.append("otherBusinessFile", otherBusinessFile); formData.append('otherBusinessFile', otherBusinessFile);
formData.append("delegatedIdentificationFile", delegatedIdentificationFile); formData.append('delegatedIdentificationFile', delegatedIdentificationFile);
formData.append("delegateCertificateFile", delegateCertificateFile); formData.append('delegateCertificateFile', delegateCertificateFile);
formData.append("delegatedBusinessFile", delegatedBusinessFile); formData.append('delegatedBusinessFile', delegatedBusinessFile);
formData.append("authorizedBusinessFile", authorizedBusinessFile); formData.append('authorizedBusinessFile', authorizedBusinessFile);
formData.append("corporateCertificateFile", corporateCertificateFile); //formData.append('corporateCertificateFile', corporateCertificateFile);
formData.append("identificationCardFile", identificationCardFile); formData.append('identificationCardFile', identificationCardFile);
formData.append("identificationEvidenceFile", identificationEvidenceFile); formData.append('identificationEvidenceFile', identificationEvidenceFile);
const row = {} formData.append('commDeputyCertificateFile', commDeputyCertificateFile);
row.adminId = adminId formData.append('commDeputyIdFile', commDeputyIdFile);
row.custNm = custNm const row = {};
row.bregno = bRegNo row.adminId = adminId;
row.nmineeDivCd = nmineeDivCd row.custNm = custNm;
row.list = numberInputs row.bregno = bRegNo;
row.bizrAuthYn = bizrAuthYn row.nmineeDivCd = nmineeDivCd;
row.custSeq = custSeq 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';
let url = "/api/v1/bo/sendNumMgt/insertNumber";
return httpClient.post(url, formData, { return httpClient.post(url, formData, {
headers: { headers: {
"Content-Type": "multipart/form-data", 'Content-Type': 'multipart/form-data',
"Show-Layer": "Yes" 'Show-Layer': 'Yes',
} },
}); });
}; };
const updateAppr = (params) => { 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) => { const fileDownload = (params) => {
axios({ axios({
@@ -119,27 +156,28 @@ const fileDownload = (params) => {
responseType: 'blob', responseType: 'blob',
headers: '', headers: '',
data: params, data: params,
params: params params: params,
}) })
.then(response => { .then((response) => {
const fileName = params.docTitle const fileName = params.docTitle;
const data = response.data const data = response.data;
if (!data) { if (!data) {
return return;
} }
const url = window.URL.createObjectURL(new Blob([data])) const url = window.URL.createObjectURL(new Blob([data]));
const a = document.createElement('a') const a = document.createElement('a');
a.style.display = 'none' a.style.display = 'none';
a.href = url a.href = url;
a.setAttribute('download', fileName) a.setAttribute('download', fileName);
document.body.appendChild(a) document.body.appendChild(a);
a.click() a.click();
document.body.removeChild(a) document.body.removeChild(a);
window.URL.revokeObjectURL(url) window.URL.revokeObjectURL(url);
}) })
.catch(response => { .catch((response) => {
}) console.log(response);
} });
};
export default { export default {
getCommCode, getCommCode,
@@ -151,5 +189,5 @@ export default {
apprDetail, apprDetail,
updateAppr, updateAppr,
deleteNumber, deleteNumber,
fileDownload fileDownload,
} };

View File

@@ -348,9 +348,9 @@ public class SendNumMgtService {
docTpCd.add(Const.SNDRNO_DOC_TP_CD_04); docTpCd.add(Const.SNDRNO_DOC_TP_CD_04);
// 법인인감증명서 '12' // 법인인감증명서 '12'
MultipartFile corporateCertificateFile = multipartRequest.getFile("corporateCertificateFile"); // MultipartFile corporateCertificateFile = multipartRequest.getFile("corporateCertificateFile");
multipartFiles.add(corporateCertificateFile); // multipartFiles.add(corporateCertificateFile);
docTpCd.add(Const.SNDRNO_DOC_TP_CD_12); // docTpCd.add(Const.SNDRNO_DOC_TP_CD_12);
// 위임사 사업자등록증 '10' // 위임사 사업자등록증 '10'
MultipartFile delegatedBusinessFile = multipartRequest.getFile("delegatedBusinessFile"); MultipartFile delegatedBusinessFile = multipartRequest.getFile("delegatedBusinessFile");
@@ -401,6 +401,20 @@ public class SendNumMgtService {
multipartFiles.add(identificationEvidenceFile); multipartFiles.add(identificationEvidenceFile);
docTpCd.add(Const.SNDRNO_DOC_TP_CD_14); 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);
}
} }
// 파일 업로드 및 테이블 저장 (등록 서류 관련). // 파일 업로드 및 테이블 저장 (등록 서류 관련).

View File

@@ -56,8 +56,8 @@ public class InsertNumberReqDto implements Serializable{
@ApiModelProperty(example = "file", name = "수임사 사업자등록증", dataType = "String") @ApiModelProperty(example = "file", name = "수임사 사업자등록증", dataType = "String")
private MultipartFile authorizedBusinessFile; private MultipartFile authorizedBusinessFile;
@ApiModelProperty(example = "file", name = "법인인감증명서", dataType = "String") // @ApiModelProperty(example = "file", name = "법인인감증명서", dataType = "String")
private MultipartFile corporateCertificateFile; // private MultipartFile corporateCertificateFile; 2022.11.14 삭제
@ApiModelProperty(example = "file", name = "신분증(본인확인)", dataType = "String") @ApiModelProperty(example = "file", name = "신분증(본인확인)", dataType = "String")
private MultipartFile identificationCardFile; private MultipartFile identificationCardFile;
@@ -65,6 +65,11 @@ public class InsertNumberReqDto implements Serializable{
@ApiModelProperty(example = "file", name = "재직증명서(본인확인)", dataType = "String") @ApiModelProperty(example = "file", name = "재직증명서(본인확인)", dataType = "String")
private MultipartFile identificationEvidenceFile; 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") // @ApiModelProperty(example = "발신번호 인증 파일", name = "발신번호 인증 파일", dataType = "String")
// private List<MultipartFile> authSendNum; // private List<MultipartFile> authSendNum;

View File

@@ -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_13 = "13";
/** 재직증명서(본인확인) */ /** 재직증명서(본인확인) */
public static final String SNDRNO_DOC_TP_CD_14 = "14"; 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_SELF = "01";
public static final String SNDRNO_TP_CD_OTHER = "02"; public static final String SNDRNO_TP_CD_OTHER = "02";