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

- 법인인감증명서 삭제
- 수임사 대리인 재직증명서 추가
- 수임사 대리인 신분증 추가
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 [
{
path: '/channelMgt/tmpltList',
component: 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>
<div class="contents">
<div class="contents_wrap">
<div class="top_wrap">
<h3 class="title">발신프로필관리</h3>
<p class="breadcrumb">발신번호관리 &gt; 발신프로필관리</p>
<h3 class="title">채널관리</h3>
<p class="breadcrumb">카카오 채널관리 &gt; 채널관리</p>
</div>
<div class="search_wrap">
<div class="select_box">
@@ -26,18 +25,25 @@
</select>
</div>
<div class="input_box">
<input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model.trim="grid.params.searchText1"
maxlength="100" @keyup.enter="search"/>
<input
class="search-box"
type="text"
id="search"
placeholder="검색어 입력"
v-model.trim="grid.params.searchText1"
maxlength="100"
@keyup.enter="search"
/>
</div>
<button type="button" class="button grey" @click="search">조회</button>
</div>
<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">
<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.text
}}
<option v-for="option in options" v-bind:value="option.value" v-bind:key="option.value">
{{ option.text }}
</option>
</select>
</div>
@@ -45,17 +51,18 @@
</div>
<div class="table">
<custom-grid
ref="table"
:totalItems="'totalItems'"
:url="grid.url"
:pagePerRows="grid.pagePerRows"
:initialRequest="grid.pagination"
:pagination="grid.pagination"
:isCheckbox="grid.isCheckbox"
:columns="grid.columns"
:noDataStr="grid.noDataStr"
:addCls="grid.addCls"
:header="grid.headder">
ref="table"
:totalItems="'totalItems'"
:url="grid.url"
:pagePerRows="grid.pagePerRows"
:initialRequest="grid.pagination"
:pagination="grid.pagination"
:isCheckbox="grid.isCheckbox"
:columns="grid.columns"
:noDataStr="grid.noDataStr"
:addCls="grid.addCls"
:header="grid.headder"
>
</custom-grid>
</div>
</div>
@@ -65,7 +72,6 @@
<script>
import customGrid from '@/components/CustomGrid';
export default {
name: 'profileList',
data() {
@@ -73,16 +79,16 @@ export default {
row: {},
authType: [],
statType: [],
cate2Code: "",
cate2Code: '',
totalItems: 0,
searchType1: '',
searchType2: 'custNm',
//
perPageCnt: 50,
options: [
{text: '20', value: 20},
{text: '50', value: 50},
{text: '100', value: 100}
{ text: '20', value: 20 },
{ text: '50', value: 50 },
{ text: '100', value: 100 },
],
grid: {
url: '/api/v1/bo/sendNumMgt/profileList',
@@ -93,33 +99,33 @@ export default {
addCls: 'box_OFvis',
header: [
[
{header: 'NO', childNames: []},
{header: '고객사명', childNames: []},
{header: '사업자번호', childNames: []},
{header: '발신프로필', childNames: []},
{header: '발신프로필key', childNames: []},
{header: '상태', childNames: []},
{header: '등록일', childNames: []},
]
{ header: 'NO', childNames: [] },
{ header: '고객사명', childNames: [] },
{ header: '사업자번호', childNames: [] },
{ header: '발신프로필', childNames: [] },
{ header: '발신프로필key', childNames: [] },
{ header: '상태', childNames: [] },
{ header: '등록일', childNames: [] },
],
],
columns: [
{name: 'no', header: 'NO', align: 'center', width: '5%'},
{name: 'custNm', header: '고객사명', align: 'center', width: '15%'},
{name: 'bregNo', header: '사업자번호', align: 'center', width: '15%'},
{name: 'sendProfile', header: '발신프로필', align: 'center', width: '15%'},
{name: 'sendProfileKey', header: '발신프로필key', align: 'center', width: '20%'},
{name: 'stat', header: '상태', width: '15%', cls: 'td_line'},
{name: 'regDt', header: '등록일', align: 'center', width: '15%'},
{ name: 'no', header: 'NO', align: 'center', width: '5%' },
{ name: 'custNm', header: '고객사명', align: 'center', width: '15%' },
{ name: 'bregNo', header: '사업자번호', align: 'center', width: '15%' },
{ name: 'sendProfile', header: '발신프로필', align: 'center', width: '15%' },
{ name: 'sendProfileKey', header: '발신프로필key', align: 'center', width: '20%' },
{ name: 'stat', header: '상태', width: '15%', cls: 'td_line' },
{ name: 'regDt', header: '등록일', align: 'center', width: '15%' },
],
noDataStr: '검색 결과가 없습니다.',
params: {
searchType1: '',
searchType2: 'custNm',
searchText1: ''
searchText1: '',
},
excelHeader: []
}
excelHeader: [],
},
};
},
components: {
@@ -132,12 +138,11 @@ export default {
params: {
searchType1: '',
searchType2: '',
searchText1: ''
}
searchText1: '',
},
});
},
created() {
},
created() {},
mounted() {
let page = 1;
//
@@ -155,8 +160,8 @@ export default {
},
methods: {
search: function (isKeep) {
this.grid.params.searchType1 = this.searchType1
this.grid.params.searchType2 = this.searchType2
this.grid.params.searchType1 = this.searchType1;
this.grid.params.searchType2 = this.searchType2;
this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData();
},
@@ -165,26 +170,26 @@ export default {
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: this.grid.params
params: this.grid.params,
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
},
changePerPage: function () { //
changePerPage: function () {
//
this.grid.pagePerRows = this.perPageCnt;
},
},
beforeRouteLeave(to, from, next) {
const getP = this.$refs.table.getPagination();
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: this.grid.params
params: this.grid.params,
});
//
next();
}
},
};
</script>

File diff suppressed because it is too large Load Diff

View File

@@ -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 }
meta: { public: false },
},
{
path: '/sendNumMgt/apprList',
component: ApprList,
name: 'apprList',
meta: { public: false }
meta: { public: false },
},
]
];

View File

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

View File

@@ -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);
}
}
// 파일 업로드 및 테이블 저장 (등록 서류 관련).

View File

@@ -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<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_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";