mirror of
http://git.mhez-qa.uplus.co.kr/hubez/hubez-admin.git
synced 2025-12-06 23:18:19 +09:00
발신번호 등록 수정
This commit is contained in:
@@ -67,7 +67,7 @@ header .user_wrap .user {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
width: 258px;
|
||||
width: 308px; /*20220811 퍼블리싱 수정*/
|
||||
height: 63px;
|
||||
background: url(../images/user-bg.png) no-repeat center/100% auto;
|
||||
}
|
||||
@@ -405,7 +405,7 @@ header .user_wrap .user_info .logout {
|
||||
-ms-flex-align: end;
|
||||
align-items: flex-end;
|
||||
border-radius: 4px;
|
||||
margin-bottom: 50px;
|
||||
margin: 0 40px 50px 40px; /*20220811 퍼블리싱 수정*/
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
@@ -844,7 +844,7 @@ header .user_wrap .user_info .logout {
|
||||
.pagination {
|
||||
display:flex;
|
||||
justify-content: center;
|
||||
margin-bottom: 50px;
|
||||
margin: 65px 0 50px 0; /*20220811 퍼블리싱 수정*/
|
||||
}
|
||||
|
||||
.pagination ul{
|
||||
@@ -1373,6 +1373,10 @@ header .user_wrap .user_info .logout {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.popup .button.Ty02 {
|
||||
margin-left: 0px; padding: 0 20px;
|
||||
}
|
||||
|
||||
/*customer popup*/
|
||||
|
||||
.popup.b-popup{
|
||||
@@ -1702,9 +1706,11 @@ header .user_wrap .user_info .logout {
|
||||
margin-bottom: 2%;
|
||||
}
|
||||
|
||||
/* --- 삭제
|
||||
.popup.popup_form table .registration ul li:nth-child(3n){
|
||||
margin-right: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
*/
|
||||
|
||||
.popup.popup_form table .registration ul li span{
|
||||
min-height: 30px;
|
||||
|
||||
@@ -226,7 +226,8 @@ export default {
|
||||
let colGroup = '';
|
||||
colGroup += '<colgroup>';
|
||||
if (this.isCheckbox == true) {
|
||||
colGroup += '<col style="width: 60px">';
|
||||
//colGroup += '<col style="width: 60px">';
|
||||
colGroup += '<col style="width: 4%">';
|
||||
this.colsLen++;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="select_box id">
|
||||
<div class="select_box">
|
||||
<label for="subsSttusCd" class="label">상태</label>
|
||||
<select name="subsSttusCd" id="subsSttusCd" v-model="grid.params.subsSttusCd" @keyup.enter="search">
|
||||
<option value="" selected>전체</option>
|
||||
@@ -253,7 +253,7 @@ export default {
|
||||
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
|
||||
let isKeep = false;
|
||||
if (getCondition) {
|
||||
console.log(getCondition.perPage);
|
||||
console.log(getCondition.perPage);
|
||||
this.grid.pagePerRows = getCondition.perPage;
|
||||
this.grid.params = getCondition.params;
|
||||
page = getCondition.page;
|
||||
@@ -266,6 +266,8 @@ export default {
|
||||
|
||||
console.log('this.perPageCnt' + this.perPageCnt);
|
||||
console.log(this.grid.params);
|
||||
this.grid.params.subsStDt = this.startDate;
|
||||
this.grid.params.subsEdDt = this.endDate;
|
||||
this.grid.params.searchType = this.searchType
|
||||
this.$refs.table.search(this.grid.params, isKeep);
|
||||
this.sendStoreData();
|
||||
@@ -321,7 +323,7 @@ export default {
|
||||
}
|
||||
|
||||
let today = moment().format('YYYYMMDDHHmmss');
|
||||
const saveFileName = `유치채널현황_${today}.xlsx`;
|
||||
const saveFileName = `유치채널현황_${today}.xls`;
|
||||
|
||||
const data = await this.getExcelDataDown();
|
||||
console.log('-------------------------');
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<option value="tmpltNm">템플릿명</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input_box id">
|
||||
<div class="input_box">
|
||||
<label for="search" class="label">검색어</label>
|
||||
<input type="text" id="id1" placeholder="검색어 입력" v-model.trim="grid.params.searchText1"
|
||||
@keyup.enter="search" maxlength="100"/>
|
||||
@@ -221,7 +221,7 @@ export default {
|
||||
}
|
||||
|
||||
let today = moment().format('YYYYMMDDHHmmss');
|
||||
const saveFileName = `알림톡템플릿목록_${today}.xlsx`;
|
||||
const saveFileName = `알림톡템플릿목록_${today}.xls`;
|
||||
|
||||
const data = await this.getExcelDataDown();
|
||||
let options = {
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<a href="javascript:void(0);" class="on">회원관리</a>
|
||||
</div>
|
||||
|
||||
<div class="search_form">
|
||||
<!-- <div class="search_form">-->
|
||||
<div class="search_wrap">
|
||||
<div class="group">
|
||||
<div class="input_box cal">
|
||||
@@ -75,7 +75,7 @@
|
||||
<button type="button" class="button grey" @click="search">조회</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- </div>-->
|
||||
|
||||
<div class="info">
|
||||
<div class="count">총 <span>{{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }}</span>건
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<a href="javascript:void(0);" @click="toMove('memberList')">회원관리</a>
|
||||
</div>
|
||||
|
||||
<div class="search_form">
|
||||
<!-- <div class="search_form">-->
|
||||
<div class="search_wrap">
|
||||
<div class="group">
|
||||
<div class="input_box cal">
|
||||
@@ -40,7 +40,7 @@
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="select_box id">
|
||||
<div class="select_box">
|
||||
<label for="right" class="label">상태</label>
|
||||
<select name="" id="" v-model="searchType1" @keyup.enter="search">
|
||||
<option value="" selected>전체</option>
|
||||
@@ -79,7 +79,7 @@
|
||||
<button type="button" class="button grey" @click="search">조회</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- </div>-->
|
||||
|
||||
<div class="info">
|
||||
<div class="count">총 <span>{{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }}</span>건
|
||||
@@ -353,7 +353,7 @@ export default {
|
||||
}
|
||||
|
||||
let today = moment().format('YYYYMMDDHHmmss');
|
||||
const saveFileName = `청약고객정보_${today}.xlsx`;
|
||||
const saveFileName = `청약고객정보_${today}.xls`;
|
||||
|
||||
const data = await this.getExcelDataDown();
|
||||
let options = {
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<div class="contents">
|
||||
<div class="contents_wrap">
|
||||
<div class="top_wrap">
|
||||
<h3 class="title">실시간발송현황</h3>
|
||||
<p class="breadcrumb">모니터링 > 실시간발송현황</p>
|
||||
<h3 class="title">실시간발송내역</h3>
|
||||
<p class="breadcrumb">모니터링 > 실시간발송내역</p>
|
||||
</div>
|
||||
<div class="title_wrap">
|
||||
<h3>발송집계</h3>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
></vuejs-datepicker>
|
||||
</span>
|
||||
</div>
|
||||
<div class="select_box id">
|
||||
<div class="select_box">
|
||||
<label for="right" class="label">요청채널</label>
|
||||
<select name="" id="" v-model="grid.params.searchType1" @keyup.enter="search">
|
||||
<option value="" selected>전체</option>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
></vuejs-datepicker>
|
||||
</div>
|
||||
<button type="button" class="button grey btn-a" @click="todayDate">오늘</button>
|
||||
<div class="select_box id">
|
||||
<div class="select_box">
|
||||
<label for="right" class="label">차단사유</label>
|
||||
<select name="" id="" v-model="blckRsnCd">
|
||||
<option value="" selected>전체</option>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<h3 class="title">메시지 차단</h3>
|
||||
<p class="breadcrumb">리스크관리 > 메시지 차단</p>
|
||||
</div>
|
||||
<form autocomplete="off" class="search_form">
|
||||
<!-- <form autocomplete="off" class="search_form">-->
|
||||
<div class="search_wrap">
|
||||
<div class="input_box">
|
||||
<label for="regId" class="label">등록자</label>
|
||||
@@ -32,7 +32,7 @@
|
||||
</div>
|
||||
<button type="button" class="button grey" @click="search">조회</button>
|
||||
</div>
|
||||
</form>
|
||||
<!-- </form>-->
|
||||
<div class="info">
|
||||
<div class="count">총 <span> {{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }} </span>건
|
||||
<div class="select_box NumberSe">
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<h3 class="title">080 수신번호 차단</h3>
|
||||
<p class="breadcrumb">리스크관리 > 080 수신번호 차단</p>
|
||||
</div>
|
||||
<div class="search_form">
|
||||
<!-- <div class="search_form">-->
|
||||
<div class="search_wrap">
|
||||
<div class="input_box">
|
||||
<label for="search" class="label">고객사</label>
|
||||
@@ -27,7 +27,7 @@
|
||||
</div>
|
||||
<button type="button" class="button grey" @click="search">조회</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- </div>-->
|
||||
<div class="info">
|
||||
<div class="count">총 <span> {{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }} </span>건
|
||||
<div class="select_box NumberSe">
|
||||
|
||||
@@ -65,13 +65,21 @@
|
||||
<tr>
|
||||
<th>제출서류</th>
|
||||
<td class="sender">
|
||||
<a v-for="(item, idx) in docList" v-if="item.docTpCd !== '06'">{{ item.docTitle }}</a>
|
||||
<a href="javascript:void(0);" @click="download(item.filePath, item.fileNm, item.docTitle)" v-for="(item, idx) in docList" v-if="item.docTpCd !== '06' && item.docTpCd !== '07' && item.docTpCd !== '13' && item.docTpCd !== '14'">{{ item.docTitle }} <br></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사업자등록증</th>
|
||||
<td class="sender">
|
||||
<p v-for="(item, idx) in docList" v-if="item.docTpCd === '06'">{{ item.docTitle }}</p>
|
||||
<a href="javascript:void(0);" @click="download(item.filePath, item.fileNm, item.docTitle)" v-for="(item, idx) in docList" v-if="item.docTpCd === '06'">{{ item.docTitle }}<br></a>
|
||||
<a href="javascript:void(0);" @click="download(item.filePath, item.fileNm, item.docTitle)" v-for="(item, idx) in docList" v-if="item.docTpCd === '07'">{{ item.docTitle }}<br></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>본인확인</th>
|
||||
<td class="sender">
|
||||
<a href="javascript:void(0);" @click="download(item.filePath, item.fileNm, item.docTitle)" v-for="(item, idx) in docList" v-if="item.docTpCd === '13'">{{ item.docTitle }}<br></a>
|
||||
<a href="javascript:void(0);" @click="download(item.filePath, item.fileNm, item.docTitle)" v-for="(item, idx) in docList" v-if="item.docTpCd === '14'">{{ item.docTitle }}<br></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -108,6 +116,7 @@ export default {
|
||||
return{
|
||||
row: {},
|
||||
regReqNo:'',
|
||||
docNo:'',
|
||||
reqNo:'',
|
||||
seqNo:'',
|
||||
cmpltDt:'',
|
||||
@@ -120,6 +129,7 @@ export default {
|
||||
memo:'',
|
||||
docList: [],
|
||||
numList: [],
|
||||
|
||||
}
|
||||
},
|
||||
components: {
|
||||
@@ -134,6 +144,14 @@ export default {
|
||||
this.formReset();
|
||||
},
|
||||
methods :{
|
||||
//파일 다운로드
|
||||
download(filePath, fileName, docTitle){
|
||||
this.row = {}
|
||||
this.row.docTitle = docTitle
|
||||
this.row.filePath = filePath
|
||||
this.row.fileNm = fileName
|
||||
sendNumMgtApi.fileDownload(this.row);
|
||||
},
|
||||
// 모달 띄우기
|
||||
apprDetailPopOpen(props){
|
||||
|
||||
@@ -148,20 +166,24 @@ export default {
|
||||
try {
|
||||
console.log(props)
|
||||
this.row.regReqNo = props.regReqNo
|
||||
this.row.docNo = props.docNo
|
||||
const response = await sendNumMgtApi.apprDetail(this.row);
|
||||
const result = response.data;
|
||||
console.log(result);
|
||||
if (result != null && result.retCode == "0000") {
|
||||
|
||||
this.regRegNo = result.data.regReqNo
|
||||
this.reqNo = result.data.regReqNo
|
||||
this.regReqNo = result.data.regReqNo
|
||||
this.docNo = result.data.docNo
|
||||
// this.reqNo = result.data.regNo
|
||||
// this.fileNm = result.data.fileNm
|
||||
// this.filePath = result.data.filePath
|
||||
this.docTitle = result.data.docTitle
|
||||
this.regDt = result.data.regDt
|
||||
this.custNm = result.data.custNm
|
||||
this.adminId = result.data.adminId
|
||||
this.chgDt = result.data.chgDt
|
||||
this.bizrno = result.data.bizrno.substring(0,3)+'-'+result.data.bizrno.substring(3,5)+'-'+result.data.bizrno.substring(5,10)
|
||||
this.nmineeDivCd = result.data.nmineeDivCd
|
||||
this.regRegNo = result.data.regRegNo
|
||||
this.slfAuthHp = result.data.slfAuthHp
|
||||
this.docList = result.data.docList
|
||||
this.numList = result.data.numList
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
<th>제출서류</th>
|
||||
<td>
|
||||
<div class="sender">
|
||||
<p v-for="(item, idx) in list" v-if="item.docTpcd !== '06'">{{ item.docTitle }} ({{ item.fileSize }}KB)</p>
|
||||
<p v-for="(item, idx) in docList" v-if="item.docTpCd !== '06' && item.docTpCd !== '07' && item.docTpCd !== '13' && item.docTpCd !== '14'">{{ item.docTitle }} ({{ formatFileSize(item.fileSize) }})</p>
|
||||
</div>
|
||||
<p class="file">파일형식 : jpg, png, pdf, tiff (최대 5MB)</p>
|
||||
</td>
|
||||
@@ -66,8 +66,18 @@
|
||||
<th>사업자등록증</th>
|
||||
<td>
|
||||
<div class="sender">
|
||||
<!-- <p>사업자등록증.jpg (00KB)</p>-->
|
||||
<p v-for="(item, idx) in list" v-if="item.docTpCd === '06'">{{ item.docTitle }} ({{ item.fileSize }}KB)</p>
|
||||
<p v-for="(item, idx) in docList" v-if="item.docTpCd === '06'">{{ item.docTitle }} ({{ formatFileSize(item.fileSize) }}) <br></p>
|
||||
<p v-for="(item, idx) in docList" v-if="item.docTpCd === '07'">{{ item.docTitle }} ({{ formatFileSize(item.fileSize) }})</p>
|
||||
</div>
|
||||
<p class="file">파일형식 : jpg, png, pdf, tiff (최대 5MB)</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>본인 확인</th>
|
||||
<td>
|
||||
<div class="sender">
|
||||
<p v-for="(item, idx) in docList" v-if="item.docTpCd === '13'">{{ item.docTitle }} ({{ formatFileSize(item.fileSize) }}) <br></p>
|
||||
<p v-for="(item, idx) in docList" v-if="item.docTpCd === '14'">{{ item.docTitle }} ({{ formatFileSize(item.fileSize) }})</p>
|
||||
</div>
|
||||
<p class="file">파일형식 : jpg, png, pdf, tiff (최대 5MB)</p>
|
||||
</td>
|
||||
@@ -107,8 +117,9 @@ export default {
|
||||
sndrno:'',
|
||||
sttusCd:'',
|
||||
regDt:'',
|
||||
list: [],
|
||||
docList: [],
|
||||
regRegNo:'',
|
||||
|
||||
}
|
||||
},
|
||||
components: {
|
||||
@@ -125,6 +136,15 @@ export default {
|
||||
|
||||
},
|
||||
methods :{
|
||||
formatFileSize(bytes,decimalPoint) {
|
||||
if(bytes == 0) return '0 Bytes';
|
||||
var k = 1000,
|
||||
dm = decimalPoint || 2,
|
||||
sizes = ['Bytes', 'KB', 'MB'],
|
||||
i = Math.floor(Math.log(bytes) / Math.log(k));
|
||||
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
|
||||
},
|
||||
|
||||
// 모달 띄우기
|
||||
numberDetailPopOpen(props){
|
||||
|
||||
@@ -162,7 +182,7 @@ export default {
|
||||
this.sttusCd = result.data.sttusCd
|
||||
this.regDt = result.data.regDt
|
||||
// result.data.list.forEach()
|
||||
this.list = result.data.list
|
||||
this.docList = result.data.list
|
||||
this.regRegNo = result.data.regRegNo
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
@@ -58,41 +58,94 @@
|
||||
<tr v-show="bizrAuthYn !== 'Y'">
|
||||
<th>제출서류</th>
|
||||
<td>
|
||||
<p class="file">파일형식 : jpg, png, pdf, tiff (최대 5MB)</p>
|
||||
<div class="attach" v-show="fileType === 2">
|
||||
<p class="essential list"><span>*</span>위임-수임관계 확인 서류</p>
|
||||
<input type="file" ref="trustFile" style="display: none" @change="readTrustFile"
|
||||
<p class="essential list"><span>*</span>위임-수임사간 관계 확인 문서</p>
|
||||
<input type="file" ref="delegationFile" style="display: none" @change="readDelegationFile"
|
||||
accept=".jpg,.png,.pdf,.tiff"/>
|
||||
<button class="button btn-p2color" @click="$refs.trustFile.click()">파일업로드</button>
|
||||
<p class="file" id="trustNm"></p>
|
||||
<button class="button btn-p2color" @click="$refs.delegationFile.click()">파일업로드</button>
|
||||
<p class="file" id="delegationNm"></p>
|
||||
</div>
|
||||
<div class="attach" v-show="fileType === 2">
|
||||
<p class="essential list"><span>*</span>위임장</p>
|
||||
<input type="file" ref="warrantFile" style="display: none" @change="readWarrantFile"
|
||||
<input type="file" ref="attorneyFile" style="display: none" @change="readAttorneyFile"
|
||||
accept=".jpg,.png,.pdf,.tiff"/>
|
||||
<button class="button btn-p2color" @click="$refs.warrantFile.click()">파일업로드</button>
|
||||
<p class="file" id="warrantNm"></p>
|
||||
<button class="button btn-p2color" @click="$refs.attorneyFile.click()">파일업로드</button>
|
||||
<p class="file" id="attorneyNm"></p>
|
||||
</div>
|
||||
|
||||
<div class="attach" v-show="fileType === 2">
|
||||
<p class="essential list"><span>*</span>대리인 신분증 사본 인증</p>
|
||||
<input type="file" ref="deputyFile" style="display: none" @change="readDeputyFile"
|
||||
<p class="essential list"><span>*</span>법인인감증명서</p>
|
||||
<input type="file" ref="corporateCertificateFile" style="display: none" @change="readCorporateCertificateFile"
|
||||
accept=".jpg,.png,.pdf,.tiff"/>
|
||||
<button class="button btn-p2color" @click="$refs.deputyFile.click()">파일업로드</button>
|
||||
<p class="file" id="deputyNm"></p>
|
||||
<button class="button btn-p2color" @click="$refs.corporateCertificateFile.click()">파일업로드</button>
|
||||
<p class="file" id="corporateCertificateNm"></p>
|
||||
</div>
|
||||
|
||||
<div class="attach" v-show="fileType === 2">
|
||||
<p class="essential list"><span>*</span>위임사 사업자등록증</p>
|
||||
<input type="file" ref="delegatedBusinessFile" style="display: none" @change="readDelegatedBusinessFile"
|
||||
accept=".jpg,.png,.pdf,.tiff"/>
|
||||
<button class="button btn-p2color" @click="$refs.delegatedBusinessFile.click()">파일업로드</button>
|
||||
<p class="file" id="delegatedBusinessNm"></p>
|
||||
</div>
|
||||
|
||||
<div class="attach" v-show="fileType === 2">
|
||||
<p class="essential list"><span>*</span>수임사 사업자등록증</p>
|
||||
<input type="file" ref="authorizedBusinessFile" style="display: none" @change="readAuthorizedBusinessFile"
|
||||
accept=".jpg,.png,.pdf,.tiff"/>
|
||||
<button class="button btn-p2color" @click="$refs.authorizedBusinessFile.click()">파일업로드</button>
|
||||
<p class="file" id="authorizedBusinessNm"></p>
|
||||
</div>
|
||||
|
||||
<div class="attach">
|
||||
<p class="essential list"><span>*</span>통신서비스 이용증명원</p>
|
||||
<p v-if="fileType === 1" class="essential list">통신서비스 이용증명원</p>
|
||||
<p v-if="fileType === 2" class="essential list">발신번호의 통신서비스 이용증명원</p>
|
||||
<input type="file" ref="communicationFile" style="display: none" @change="readCommunicationFile"
|
||||
accept=".jpg,.png,.pdf,.tiff"/>
|
||||
<button class="button btn-p2color" @click="$refs.communicationFile.click()">파일업로드</button>
|
||||
<p class="file" id="communicationNm"></p>
|
||||
</div>
|
||||
<div class="attach">
|
||||
<p class="essential list"><span>*</span>재직증명서</p>
|
||||
<input type="file" ref="tenureFile" style="display: none" @change="readTenureFile"
|
||||
|
||||
<div class="attach" v-show="fileType === 1">
|
||||
<p class="essential list"><span></span>재직증명서</p>
|
||||
<input type="file" ref="tenureFile" style="display: none" @change="readTenureFile"
|
||||
accept=".jpg,.png,.pdf,.tiff"/>
|
||||
<button class="button btn-p2color" @click="$refs.tenureFile.click()">파일업로드</button>
|
||||
<p class="file" id="tenureNm"></p>
|
||||
</div>
|
||||
|
||||
<div class="attach" v-show="fileType === 2">
|
||||
<p class="essential list"><span></span>위임사 재직증명서(임직원 신청시)</p>
|
||||
<input type="file" ref="delegateCertificateFile" style="display: none" @change="readDelegateCertificateFile"
|
||||
accept=".jpg,.png,.pdf,.tiff"/>
|
||||
<button class="button btn-p2color" @click="$refs.tenureFile.click()">파일업로드</button>
|
||||
<p class="file" id="tenureNm"></p>
|
||||
<button class="button btn-p2color" @click="$refs.delegateCertificateFile.click()">파일업로드</button>
|
||||
<p class="file" id="delegateCertificateNm"></p>
|
||||
</div>
|
||||
|
||||
<div class="attach" v-show="fileType === 2">
|
||||
<p class="essential list"><span></span>위임사 신분증(임직원 신청시)</p>
|
||||
<input type="file" ref="delegatedIdentificationFile" style="display: none" @change="readDelegatedIdentificationFile"
|
||||
accept=".jpg,.png,.pdf,.tiff"/>
|
||||
<button class="button btn-p2color" @click="$refs.delegatedIdentificationFile.click()">파일업로드</button>
|
||||
<p class="file" id="delegatedIdentificationNm"></p>
|
||||
</div>
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사업자 등록증</th>
|
||||
<td v-show="bizrAuthYn !== 'Y'">
|
||||
<p class="file">파일형식 : jpg, png, pdf, tiff (최대 5MB)</p>
|
||||
<div class="attach" v-show="fileType === 1">
|
||||
<p class="essential list"><span>*</span>사업자등록증</p>
|
||||
<input type="file" ref="businessFile" style="display: none" @change="readBusinessFile"
|
||||
accept=".jpg,.png,.pdf,.tiff"/>
|
||||
<button class="button btn-p2color" @click="$refs.businessFile.click()">파일업로드</button>
|
||||
<p class="file" id="businessNm"></p>
|
||||
</div>
|
||||
|
||||
<div class="attach" v-show="fileType === 2">
|
||||
<p class="essential list"><span>*</span>사업자등록증</p>
|
||||
<input type="file" ref="otherBusinessFile" style="display: none" @change="readOtherBusinessFile"
|
||||
@@ -100,23 +153,31 @@
|
||||
<button class="button btn-p2color" @click="$refs.otherBusinessFile.click()">파일업로드</button>
|
||||
<p class="file" id="otherBusinessNm"></p>
|
||||
</div>
|
||||
<p class="file">파일형식 : jpg, png, pdf, tiff (최대 5MB)</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사업자 등록증</th>
|
||||
<td v-show="bizrAuthYn !== 'Y'">
|
||||
<div class="attach">
|
||||
<p class="essential list"><span>*</span>사업자등록증</p>
|
||||
<input type="file" ref="businessFile" style="display: none" @change="readBusinessFile"
|
||||
accept=".jpg,.png,.pdf,.tiff"/>
|
||||
<button class="button btn-p2color" @click="$refs.businessFile.click()">파일업로드</button>
|
||||
<p class="file" id="businessNm"></p>
|
||||
</div>
|
||||
<p class="file">파일형식 : jpg, png, pdf, tiff (최대 5MB)</p>
|
||||
</td>
|
||||
|
||||
<td class="red" v-show="bizrAuthYn === 'Y'">인증 완료</td>
|
||||
</tr>
|
||||
<tr v-show="bizrAuthYn !== 'Y'">
|
||||
<th>본인확인</th>
|
||||
<td>
|
||||
<p class="file">파일형식 : jpg, png, pdf, tiff (최대 5MB)</p>
|
||||
<div class="attach">
|
||||
<p class="essential list"><span></span>신분증</p>
|
||||
<input type="file" ref="identificationCardFile" style="display: none" @change="readIdentificationCardFile"
|
||||
accept=".jpg,.png,.pdf,.tiff"/>
|
||||
<button class="button btn-p2color" @click="$refs.identificationCardFile.click()">파일업로드</button>
|
||||
<p class="file" id="identificationCardNm"></p>
|
||||
</div>
|
||||
|
||||
<div class="attach">
|
||||
<p class="essential list"><span></span>재직증명서</p>
|
||||
<input type="file" ref="identificationEvidenceFile" style="display: none" @change="readIdentificationEvidenceFile"
|
||||
accept=".jpg,.png,.pdf,.tiff"/>
|
||||
<button class="button btn-p2color" @click="$refs.identificationEvidenceFile.click()">파일업로드</button>
|
||||
<p class="file" id="identificationEvidenceNm"></p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="popup-btn2">
|
||||
@@ -156,13 +217,19 @@ export default {
|
||||
numberInputs: [],
|
||||
saveSendNums: [],
|
||||
fileType: 1,
|
||||
trustFile: null,
|
||||
warrantFile: null,
|
||||
deputyFile: null,
|
||||
tenureFile: null,
|
||||
businessFile: null,
|
||||
communicationFile: null,
|
||||
tenureFile: null,
|
||||
delegationFile: null,
|
||||
attorneyFile: null,
|
||||
businessFile: null,
|
||||
otherBusinessFile: null,
|
||||
delegatedIdentificationFile: null,
|
||||
delegateCertificateFile: null,
|
||||
delegatedBusinessFile: null,
|
||||
authorizedBusinessFile: null,
|
||||
corporateCertificateFile: null,
|
||||
identificationCardFile: null,
|
||||
identificationEvidenceFile: null,
|
||||
childData: 20,
|
||||
reqCnt: 0,
|
||||
}
|
||||
@@ -233,10 +300,14 @@ export default {
|
||||
let fileExt = file.name.substring(
|
||||
file.name.lastIndexOf(".") + 1
|
||||
)
|
||||
|
||||
|
||||
// 소문자로 변환
|
||||
fileExt = fileExt.toLowerCase()
|
||||
var fileSize = file.size
|
||||
var maxSize = 5 * 1024 * 1024;
|
||||
// 이미지 확장자 체크, jpg, png, pdf, tiff
|
||||
if (["jpg", "png", "pdf", "tiff"].includes(fileExt)) {
|
||||
if (["jpg", "png", "pdf", "tiff"].includes(fileExt) && fileSize <= maxSize) {
|
||||
return true;
|
||||
} else {
|
||||
this.row.title = '발신번호 파일 업로드';
|
||||
@@ -246,13 +317,13 @@ export default {
|
||||
return false
|
||||
}
|
||||
},
|
||||
// 위임-수임
|
||||
readTrustFile(event) {
|
||||
// 위임-수임사간 관계 확인 문서
|
||||
readDelegationFile(event) {
|
||||
const file = event.target.files[0];
|
||||
|
||||
if(this.fileExtCheck(file)) {
|
||||
if (file != null) {
|
||||
this.delTrustFile(event);
|
||||
this.delDelegationFile(event);
|
||||
}
|
||||
|
||||
// inner Html.
|
||||
@@ -260,30 +331,30 @@ export default {
|
||||
const text = document.createElement('p');
|
||||
text.innerText = file.name;
|
||||
button.addEventListener('click', () => {
|
||||
this.delTrustFile(event);
|
||||
this.delDelegationFile(event);
|
||||
})
|
||||
button.innerText = 'X'
|
||||
const root = document.getElementById('trustNm');
|
||||
const root = document.getElementById('delegationNm');
|
||||
root.appendChild(text);
|
||||
root.appendChild(button);
|
||||
this.trustFile = file;
|
||||
this.delegationFile = file;
|
||||
}
|
||||
},
|
||||
delTrustFile(event) {
|
||||
delDelegationFile(event) {
|
||||
const file = event.target.files[0];
|
||||
this.$refs.trustFile.value = null;
|
||||
let element = document.getElementById("trustNm");
|
||||
this.$refs.delegationFile.value = null;
|
||||
let element = document.getElementById("delegationNm");
|
||||
while (element.firstChild) {
|
||||
element.removeChild(element.firstChild);
|
||||
}
|
||||
this.trustFile = null;
|
||||
this.delegationFile = null;
|
||||
},
|
||||
// 위임장
|
||||
readWarrantFile(event) {
|
||||
readAttorneyFile(event) {
|
||||
const file = event.target.files[0];
|
||||
if(this.fileExtCheck(file)) {
|
||||
if (file != null) {
|
||||
this.delWarrantFile(event);
|
||||
this.delAttorneyFile(event);
|
||||
}
|
||||
|
||||
// inner Html.
|
||||
@@ -291,30 +362,31 @@ export default {
|
||||
const text = document.createElement('p');
|
||||
text.innerText = file.name;
|
||||
button.addEventListener('click', () => {
|
||||
this.delWarrantFile(event);
|
||||
this.delAttorneyFile(event);
|
||||
})
|
||||
button.innerText = 'X'
|
||||
const root = document.getElementById('warrantNm');
|
||||
const root = document.getElementById('attorneyNm');
|
||||
root.appendChild(text);
|
||||
root.appendChild(button);
|
||||
this.warrantFile = file;
|
||||
this.attorneyFile = file;
|
||||
}
|
||||
},
|
||||
delWarrantFile(event) {
|
||||
delAttorneyFile(event) {
|
||||
const file = event.target.files[0];
|
||||
this.$refs.warrantFile.value = null;
|
||||
let element = document.getElementById("warrantNm");
|
||||
this.$refs.attorneyFile.value = null;
|
||||
let element = document.getElementById("attorneyNm");
|
||||
while (element.firstChild) {
|
||||
element.removeChild(element.firstChild);
|
||||
}
|
||||
this.warrantFile = null;
|
||||
this.attorneyFile = null;
|
||||
},
|
||||
// 대리인
|
||||
readDeputyFile(event) {
|
||||
|
||||
// 법인인감증명서
|
||||
readCorporateCertificateFile(event) {
|
||||
const file = event.target.files[0];
|
||||
if(this.fileExtCheck(file)) {
|
||||
if (file != null) {
|
||||
this.delDeputyFile(event);
|
||||
this.delCorporateCertificateFile(event);
|
||||
}
|
||||
|
||||
// inner Html.
|
||||
@@ -322,25 +394,153 @@ export default {
|
||||
const text = document.createElement('p');
|
||||
text.innerText = file.name;
|
||||
button.addEventListener('click', () => {
|
||||
this.delDeputyFile(event);
|
||||
this.delCorporateCertificateFile(event);
|
||||
})
|
||||
button.innerText = 'X'
|
||||
const root = document.getElementById('deputyNm');
|
||||
const root = document.getElementById('corporateCertificateNm');
|
||||
root.appendChild(text);
|
||||
root.appendChild(button);
|
||||
|
||||
this.deputyFile = file
|
||||
this.corporateCertificateFile = file;
|
||||
}
|
||||
},
|
||||
delDeputyFile(event) {
|
||||
delCorporateCertificateFile(event) {
|
||||
const file = event.target.files[0];
|
||||
this.$refs.deputyFile.value = null;
|
||||
let element = document.getElementById("deputyNm");
|
||||
this.$refs.corporateCertificateFile.value = null;
|
||||
let element = document.getElementById("corporateCertificateNm");
|
||||
while (element.firstChild) {
|
||||
element.removeChild(element.firstChild);
|
||||
}
|
||||
this.deputyFile = null;
|
||||
this.corporateCertificateFile = null;
|
||||
},
|
||||
|
||||
// 위임사 사업자 등록증
|
||||
readDelegatedBusinessFile(event) {
|
||||
const file = event.target.files[0];
|
||||
if(this.fileExtCheck(file)) {
|
||||
if (file != null) {
|
||||
this.delDelegatedBusinessFile(event);
|
||||
}
|
||||
|
||||
// inner Html.
|
||||
const button = document.createElement('button');
|
||||
const text = document.createElement('p');
|
||||
text.innerText = file.name;
|
||||
button.addEventListener('click', () => {
|
||||
this.delDelegatedBusinessFile(event);
|
||||
})
|
||||
button.innerText = 'X'
|
||||
const root = document.getElementById('delegatedBusinessNm');
|
||||
root.appendChild(text);
|
||||
root.appendChild(button);
|
||||
this.delegatedBusinessFile = file;
|
||||
}
|
||||
},
|
||||
delDelegatedBusinessFile(event) {
|
||||
const file = event.target.files[0];
|
||||
this.$refs.delegatedBusinessFile.value = null;
|
||||
let element = document.getElementById("delegatedBusinessNm");
|
||||
while (element.firstChild) {
|
||||
element.removeChild(element.firstChild);
|
||||
}
|
||||
this.delegatedBusinessFile = null;
|
||||
},
|
||||
|
||||
// 수임사 사업자 등록증
|
||||
readAuthorizedBusinessFile(event) {
|
||||
const file = event.target.files[0];
|
||||
if(this.fileExtCheck(file)) {
|
||||
if (file != null) {
|
||||
this.delAuthorizedBusinessFile(event);
|
||||
}
|
||||
|
||||
// inner Html.
|
||||
const button = document.createElement('button');
|
||||
const text = document.createElement('p');
|
||||
text.innerText = file.name;
|
||||
button.addEventListener('click', () => {
|
||||
this.delAuthorizedBusinessFile(event);
|
||||
})
|
||||
button.innerText = 'X'
|
||||
const root = document.getElementById('authorizedBusinessNm');
|
||||
root.appendChild(text);
|
||||
root.appendChild(button);
|
||||
this.authorizedBusinessFile = file;
|
||||
}
|
||||
},
|
||||
delAuthorizedBusinessFile(event) {
|
||||
const file = event.target.files[0];
|
||||
this.$refs.authorizedBusinessFile.value = null;
|
||||
let element = document.getElementById("authorizedBusinessNm");
|
||||
while (element.firstChild) {
|
||||
element.removeChild(element.firstChild);
|
||||
}
|
||||
this.authorizedBusinessFile = null;
|
||||
},
|
||||
|
||||
// 위임사 재직증명서(임직원 신청시)
|
||||
readDelegateCertificateFile(event) {
|
||||
const file = event.target.files[0];
|
||||
if(this.fileExtCheck(file)) {
|
||||
if (file != null) {
|
||||
this.delDelegateCertificateFile(event);
|
||||
}
|
||||
|
||||
// inner Html.
|
||||
const button = document.createElement('button');
|
||||
const text = document.createElement('p');
|
||||
text.innerText = file.name;
|
||||
button.addEventListener('click', () => {
|
||||
this.delDelegateCertificateFile(event);
|
||||
})
|
||||
button.innerText = 'X'
|
||||
const root = document.getElementById('delegateCertificateNm');
|
||||
root.appendChild(text);
|
||||
root.appendChild(button);
|
||||
this.delegateCertificateFile = file;
|
||||
}
|
||||
},
|
||||
delDelegateCertificateFile(event) {
|
||||
const file = event.target.files[0];
|
||||
this.$refs.delegateCertificateFile.value = null;
|
||||
let element = document.getElementById("delegateCertificateNm");
|
||||
while (element.firstChild) {
|
||||
element.removeChild(element.firstChild);
|
||||
}
|
||||
this.delegateCertificateFile = null;
|
||||
},
|
||||
|
||||
// 위임사 신분증(임직원 신청시)
|
||||
readDelegatedIdentificationFile(event) {
|
||||
const file = event.target.files[0];
|
||||
if(this.fileExtCheck(file)) {
|
||||
if (file != null) {
|
||||
this.delDelegatedIdentificationFile(event);
|
||||
}
|
||||
|
||||
// inner Html.
|
||||
const button = document.createElement('button');
|
||||
const text = document.createElement('p');
|
||||
text.innerText = file.name;
|
||||
button.addEventListener('click', () => {
|
||||
this.delDelegatedIdentificationFile(event);
|
||||
})
|
||||
button.innerText = 'X'
|
||||
const root = document.getElementById('delegatedIdentificationNm');
|
||||
root.appendChild(text);
|
||||
root.appendChild(button);
|
||||
this.delegatedIdentificationFile = file;
|
||||
}
|
||||
},
|
||||
delDelegatedIdentificationFile(event) {
|
||||
const file = event.target.files[0];
|
||||
this.$refs.delegatedIdentificationFile.value = null;
|
||||
let element = document.getElementById("delegatedIdentificationNm");
|
||||
while (element.firstChild) {
|
||||
element.removeChild(element.firstChild);
|
||||
}
|
||||
this.delegatedIdentificationFile = null;
|
||||
},
|
||||
|
||||
// 재직
|
||||
readTenureFile(event) {
|
||||
const file = event.target.files[0];
|
||||
@@ -403,9 +603,73 @@ export default {
|
||||
}
|
||||
this.businessFile = null;
|
||||
},
|
||||
//신분증 (본인확인)
|
||||
readIdentificationCardFile(event) {
|
||||
const file = event.target.files[0];
|
||||
if(this.fileExtCheck(file)) {
|
||||
if (file != null) {
|
||||
this.delIdentificationCardFile(event);
|
||||
}
|
||||
|
||||
// inner Html.
|
||||
const button = document.createElement('button');
|
||||
const text = document.createElement('p');
|
||||
text.innerText = file.name;
|
||||
button.addEventListener('click', () => {
|
||||
this.delIdentificationCardFile(event);
|
||||
})
|
||||
button.innerText = 'X'
|
||||
const root = document.getElementById('identificationCardNm');
|
||||
root.appendChild(text);
|
||||
root.appendChild(button);
|
||||
this.identificationCardFile = file;
|
||||
}
|
||||
},
|
||||
delIdentificationCardFile(event) {
|
||||
const file = event.target.files[0];
|
||||
this.$refs.identificationCardFile.value = null;
|
||||
let element = document.getElementById("identificationCardNm");
|
||||
while (element.firstChild) {
|
||||
element.removeChild(element.firstChild);
|
||||
}
|
||||
this.identificationCardFile = null;
|
||||
},
|
||||
//재직증명서 (본인확인)
|
||||
readIdentificationEvidenceFile(event) {
|
||||
const file = event.target.files[0];
|
||||
if(this.fileExtCheck(file)) {
|
||||
if (file != null) {
|
||||
this.delIdentificationEvidenceFile(event);
|
||||
}
|
||||
|
||||
// inner Html.
|
||||
const button = document.createElement('button');
|
||||
const text = document.createElement('p');
|
||||
text.innerText = file.name;
|
||||
button.addEventListener('click', () => {
|
||||
this.delIdentificationEvidenceFile(event);
|
||||
})
|
||||
button.innerText = 'X'
|
||||
const root = document.getElementById('identificationEvidenceNm');
|
||||
root.appendChild(text);
|
||||
root.appendChild(button);
|
||||
this.identificationEvidenceFile = file;
|
||||
}
|
||||
},
|
||||
delIdentificationEvidenceFile(event) {
|
||||
const file = event.target.files[0];
|
||||
this.$refs.identificationEvidenceFile.value = null;
|
||||
let element = document.getElementById("identificationEvidenceNm");
|
||||
while (element.firstChild) {
|
||||
element.removeChild(element.firstChild);
|
||||
}
|
||||
this.identificationEvidenceFile = null;
|
||||
},
|
||||
//통신서비스 증명원
|
||||
readCommunicationFile(event) {
|
||||
const file = event.target.files[0];
|
||||
|
||||
|
||||
if(this.fileExtCheck(file)) {
|
||||
if (file != null) {
|
||||
this.delCommunicationFile(event);
|
||||
@@ -422,7 +686,7 @@ export default {
|
||||
const root = document.getElementById('communicationNm');
|
||||
root.appendChild(text);
|
||||
root.appendChild(button);
|
||||
this.communicationFile = file;
|
||||
this.communicationFile = file;
|
||||
}
|
||||
},
|
||||
delCommunicationFile(event) {
|
||||
@@ -488,8 +752,12 @@ export default {
|
||||
if (this.bizrAuthYn !== 'Y') {
|
||||
if (this.nmineeDivCd === '01') {
|
||||
// 사업자
|
||||
const response = await sendNumMgtApi.insertNumber1(this.tenureFile, this.businessFile, this.communicationFile, this.adminId, this.custNm, this.bRegNo, this.nmineeDivCd, this.saveSendNums, this.bizrAuthYn, this.custSeq, this.bRegNo)
|
||||
const response = await sendNumMgtApi.insertNumber1(this.communicationFile,this.tenureFile,this.businessFile, this.identificationCardFile, this.identificationEvidenceFile, this.adminId, this.custNm, this.bRegNo, this.nmineeDivCd, this.saveSendNums, this.bizrAuthYn, this.custSeq, this.bRegNo)
|
||||
const result = response.data;
|
||||
// if(this.communicationFile.size >= 1024){
|
||||
// alert('파일용량test')
|
||||
// return false;
|
||||
// }
|
||||
|
||||
if (result != null && result.retCode == "0000") {
|
||||
if(result.data.list != null && result.data.list.length > 0){
|
||||
@@ -516,12 +784,11 @@ export default {
|
||||
}
|
||||
|
||||
} else if (this.nmineeDivCd === '02') {
|
||||
const response = await sendNumMgtApi.insertNumber2(this.trustFile, this.communicationFile, this.warrantFile, this.deputyFile, this.tenureFile, this.otherBusinessFile, this.businessFile, this.adminId, this.custNm, this.bRegNo, this.nmineeDivCd, this.saveSendNums, this.bizrAuthYn, this.custSeq, this.bRegNo)
|
||||
const response = await sendNumMgtApi.insertNumber2(this.communicationFile, this.delegationFile, this.attorneyFile, this.otherBusinessFile ,this.delegatedIdentificationFile, this.delegateCertificateFile, this.delegatedBusinessFile, this.authorizedBusinessFile, this.corporateCertificateFile, this.identificationCardFile, this.identificationEvidenceFile, this.adminId, this.custNm, this.bRegNo, this.nmineeDivCd, this.saveSendNums, this.bizrAuthYn, this.custSeq, this.bRegNo)
|
||||
|
||||
const result = response.data;
|
||||
if (result != null && result.retCode == "0000") {
|
||||
if(result.data.list != null){
|
||||
if(result.data.list.length > 0){
|
||||
if(result.data.list != null && result.data.list.length > 0){
|
||||
this.row.title = '발신번호 등록';
|
||||
var failMsg = "";
|
||||
for(var i=0; i<result.data.list.length; i++){
|
||||
@@ -529,7 +796,6 @@ export default {
|
||||
}
|
||||
this.row.failMsg = failMsg
|
||||
this.$parent.$refs.commmonModal.sendNumFailMsgOpen(this.row);
|
||||
}
|
||||
}
|
||||
this.toComplete()
|
||||
}else if(result != null && result.retCode == "4021") {
|
||||
@@ -599,12 +865,7 @@ export default {
|
||||
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
|
||||
return false
|
||||
}
|
||||
if (this.tenureFile == null) {
|
||||
this.row.title = '발신번호 등록';
|
||||
this.row.msg1 = '재직증명서 파일을 업로드 하세요.';
|
||||
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
|
||||
return false
|
||||
}
|
||||
|
||||
if (this.businessFile == null) {
|
||||
this.row.title = '발신번호 등록';
|
||||
this.row.msg1 = '사업자등록증 파일을 업로드 하세요.';
|
||||
@@ -613,33 +874,33 @@ export default {
|
||||
}
|
||||
|
||||
} else {
|
||||
if (this.trustFile == null) {
|
||||
if (this.delegationFile == null) {
|
||||
this.row.title = '발신번호 등록';
|
||||
this.row.msg1 = '위임-수임관계 확인 서류 파일을 업로드 하세요.';
|
||||
this.row.msg1 = '위임-수임사간 관계 확인 문서 파일을 업로드 하세요.';
|
||||
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
|
||||
return false
|
||||
}
|
||||
if (this.warrantFile == null) {
|
||||
if (this.attorneyFile == null) {
|
||||
this.row.title = '발신번호 등록';
|
||||
this.row.msg1 = '위임장 파일을 업로드 하세요.';
|
||||
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
|
||||
return false
|
||||
}
|
||||
if (this.deputyFile == null) {
|
||||
if (this.corporateCertificateFile == null) {
|
||||
this.row.title = '발신번호 등록';
|
||||
this.row.msg1 = '대리인 신분증 사본 인증 파일을 업로드 하세요.';
|
||||
this.row.msg1 = '법인인감증명서 파일을 업로드 하세요.';
|
||||
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
|
||||
return false
|
||||
}
|
||||
if (this.communicationFile == null) {
|
||||
if (this.delegatedBusinessFile == null) {
|
||||
this.row.title = '발신번호 등록';
|
||||
this.row.msg1 = '통신서비스 이용증명원 파일을 업로드 하세요.';
|
||||
this.row.msg1 = '위임사 사업자등록증 파일을 업로드 하세요.';
|
||||
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
|
||||
return false
|
||||
}
|
||||
if (this.tenureFile == null) {
|
||||
if (this.authorizedBusinessFile == null) {
|
||||
this.row.title = '발신번호 등록';
|
||||
this.row.msg1 = '재직증명서 파일을 업로드 하세요.';
|
||||
this.row.msg1 = '수임사 사업자등록증 파일을 업로드 하세요.';
|
||||
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
|
||||
return false
|
||||
}
|
||||
@@ -649,12 +910,6 @@ export default {
|
||||
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
|
||||
return false
|
||||
}
|
||||
if (this.businessFile == null) {
|
||||
this.row.title = '발신번호 등록';
|
||||
this.row.msg1 = '사업자등록증 파일을 업로드 하세요.';
|
||||
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import httpClient from '@/common/http-client';
|
||||
import axios from 'axios';
|
||||
|
||||
// 공통 코드.
|
||||
const getCommCode = (params) => {
|
||||
@@ -46,11 +47,13 @@ const insertNumber = (adminId, custNm, bRegNo, nmineeDivCd, numberInputs, bizrAu
|
||||
};
|
||||
|
||||
// 사업자가 등록 요청.
|
||||
const insertNumber1 = (tenureFile, businessFile, communicationFile, 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();
|
||||
formData.append("communicationFile", communicationFile);
|
||||
formData.append("tenureFile", tenureFile);
|
||||
formData.append("businessFile", businessFile);
|
||||
formData.append("communicationFile", communicationFile);
|
||||
formData.append("identificationCardFile", identificationCardFile);
|
||||
formData.append("identificationEvidenceFile", identificationEvidenceFile);
|
||||
|
||||
const row = {}
|
||||
row.adminId = adminId
|
||||
@@ -74,16 +77,19 @@ const insertNumber1 = (tenureFile, businessFile, communicationFile, adminId, cus
|
||||
};
|
||||
|
||||
// 타사업자가 등록 요청.
|
||||
const insertNumber2 = (trustFile, warrantFile, communicationFile, deputyFile, tenureFile, otherBusinessFile, businessFile, adminId, custNm, bRegNo, nmineeDivCd, numberInputs, bizrAuthYn, custSeq) => {
|
||||
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("trustFile", trustFile);
|
||||
formData.append("warrantFile", warrantFile);
|
||||
formData.append("deputyFile", deputyFile);
|
||||
formData.append("tenureFile", tenureFile);
|
||||
formData.append("businessFile", businessFile);
|
||||
formData.append("otherBusinessFile", otherBusinessFile);
|
||||
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
|
||||
@@ -110,6 +116,39 @@ const updateAppr = (params) => {
|
||||
return httpClient.post('/api/v1/bo/sendNumMgt/updateAppr', params, {withCredentials: false});
|
||||
}
|
||||
|
||||
const fileDownload = (params) => {
|
||||
console.log(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
|
||||
}
|
||||
console.log(response)
|
||||
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)
|
||||
alert(error);
|
||||
})
|
||||
}
|
||||
|
||||
export default {
|
||||
getCommCode,
|
||||
numberDetail,
|
||||
@@ -120,4 +159,5 @@ export default {
|
||||
apprDetail,
|
||||
updateAppr,
|
||||
deleteNumber,
|
||||
fileDownload
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model.trim="grid.params.searchText1"
|
||||
@keypress="onlyNum" @input="onlyNum" maxlength="10" @keyup.enter="search"/>
|
||||
</div>
|
||||
<div class="select_box id">
|
||||
<div class="select_box">
|
||||
<label for="right" class="label">명의자 구분</label>
|
||||
<select name="" id="" v-model="searchType2" @keyup.enter="search">
|
||||
<option value="">전체</option>
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
<option value="02">어드민</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select_box id">
|
||||
<div class="select_box">
|
||||
<label for="right" class="label">상세검색</label>
|
||||
<select name="" id="category" v-model="searchType4" @keyup.enter="search">
|
||||
<option value="regNo">발신번호</option>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<option value="D">삭제</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="select_box id">
|
||||
<div class="select_box">
|
||||
<label for="searchType" class="label">상세검색</label>
|
||||
<select name="" id="searchType" v-model="searchType2" @keyup.enter="search">
|
||||
<option value="custNm">고객사명</option>
|
||||
@@ -25,7 +25,7 @@
|
||||
<option value="sendProfile">발신프로필</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input_box id">
|
||||
<div class="input_box">
|
||||
<label for="search" class="label">검색어</label>
|
||||
<input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model.trim="grid.params.searchText1"
|
||||
maxlength="100" @keyup.enter="search"/>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
</div>
|
||||
<div class="search_wrap">
|
||||
<div class="select_box">
|
||||
<label for="stat" class="label">사용상태</label>
|
||||
<label for="stat" class="label">상태</label>
|
||||
<select name="" id="stat" v-model="searchType1" @keyup.enter="search">
|
||||
<option value="">전체</option>
|
||||
<option value="Y">사용</option>
|
||||
@@ -22,7 +22,7 @@
|
||||
<option value="authCd">인증코드</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input_box id">
|
||||
<div class="input_box">
|
||||
<label for="search" class="label">검색어</label>
|
||||
<input type="text" id="id1" placeholder="검색어 입력" v-model.trim="grid.params.searchText1"
|
||||
@keyup.enter="search" maxlength="100"/>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
</div>
|
||||
<div class="search_wrap">
|
||||
<div class="input_box cal">
|
||||
<label for="right" class="label txt">날짜</label>
|
||||
<label for="right" class="label txt">조회기간</label>
|
||||
<p> 최대 1개월까지 조회 가능합니다.</p>
|
||||
<div class="term">
|
||||
<!--
|
||||
@@ -402,7 +402,7 @@ export default {
|
||||
}
|
||||
|
||||
let today = moment().format('YYYYMMDDHHmmss');
|
||||
const saveFileName = `사업자별 일별통계_${today}.xlsx`;
|
||||
const saveFileName = `사업자별 일별통계_${today}.xls`;
|
||||
|
||||
const data = await this.getExcelDataDown();
|
||||
let options = {
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
</div>
|
||||
<div class="search_wrap">
|
||||
<div class="input_box cal">
|
||||
<label for="right" class="label txt">날짜</label>
|
||||
<label for="right" class="label txt">조회기간</label>
|
||||
<p> 최대 3개월까지 조회 가능합니다.</p>
|
||||
<div class="term">
|
||||
<div class="group" style="width:500px;">
|
||||
@@ -414,7 +414,7 @@ export default {
|
||||
}
|
||||
|
||||
let today = moment().format('YYYYMMDDHHmmss');
|
||||
const saveFileName = `사업자별 월별통계_${today}.xlsx`;
|
||||
const saveFileName = `사업자별 월별통계_${today}.xls`;
|
||||
|
||||
const data = await this.getExcelDataDown();
|
||||
let options = {
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
</div>
|
||||
<div class="search_wrap">
|
||||
<div class="input_box cal">
|
||||
<label for="right" class="label txt">날짜</label>
|
||||
<label for="right" class="label txt">조회기간</label>
|
||||
<p> 최대 1개월까지 조회 가능합니다.</p>
|
||||
<div class="term">
|
||||
<span class="custom_input icon_date">
|
||||
@@ -281,7 +281,7 @@ export default {
|
||||
}
|
||||
|
||||
let today = moment().format('YYYYMMDDHHmmss');
|
||||
const saveFileName = `일별통계_${today}.xlsx`;
|
||||
const saveFileName = `일별통계_${today}.xls`;
|
||||
|
||||
let options = {
|
||||
header: this.excelHeader,
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
</div>
|
||||
<div class="search_wrap">
|
||||
<div class="input_box cal">
|
||||
<label for="right" class="label txt">날짜</label>
|
||||
<label for="right" class="label txt">조회기간</label>
|
||||
<p> 최대 3개월까지 조회 가능합니다.</p>
|
||||
<div class="term">
|
||||
<span class="custom_input icon_date">
|
||||
@@ -253,7 +253,37 @@ export default {
|
||||
}
|
||||
|
||||
let today = moment().format('YYYYMMDDHHmmss');
|
||||
const saveFileName = `월별통계_${today}.xlsx`;
|
||||
const saveFileName = `월별통계_${today}.xls`;
|
||||
|
||||
var styles = `<style>
|
||||
.table{width: 100%;}
|
||||
.head-title{border-top: 1px solid #dee2e6; border-bottom: 2px solid #dee2e6;}
|
||||
.first-td{background-color: #F2F2F2;}
|
||||
.last-td{background-color: #dee2e6;}
|
||||
body {
|
||||
font-size:12px;
|
||||
font-family: 맑은 고딕;
|
||||
}
|
||||
table {
|
||||
font-size:12px;
|
||||
text-align:center;
|
||||
}
|
||||
table th {
|
||||
text-align:center;
|
||||
height:28px;
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
table td {
|
||||
text-align:left;
|
||||
height:26px;
|
||||
mso-number-format:"\@";
|
||||
}
|
||||
.number {
|
||||
text-align:right !important;
|
||||
mso-number-format:General !important;
|
||||
white-space:nowrap !important;
|
||||
}
|
||||
</style>`;
|
||||
|
||||
let options = {
|
||||
header: this.excelHeader,
|
||||
|
||||
@@ -11,9 +11,13 @@ import io.swagger.annotations.ApiResponses;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.*;
|
||||
import kr.co.uplus.ez.common.components.ValidComponents;
|
||||
import kr.co.uplus.ez.common.data.ApiResponseCode;
|
||||
import kr.co.uplus.ez.common.utils.FileIoUtils;
|
||||
import kr.co.uplus.ez.common.utils.FileUtil;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
@@ -21,6 +25,9 @@ import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.Valid;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(value = "api/v1/bo/sendNumMgt")
|
||||
@@ -33,6 +40,12 @@ public class SendNumMgtController {
|
||||
|
||||
@Autowired
|
||||
ValidComponents validComponents;
|
||||
|
||||
private static int BUFFERSIZE = 1024;
|
||||
|
||||
@Value("${file-resource.info.sendNumber.path:/efs/admin/sendNumber/}")
|
||||
private String sendNumUploadPath;
|
||||
|
||||
/**
|
||||
* date : 2022. 4. 25.
|
||||
* auth : ckr
|
||||
@@ -197,8 +210,19 @@ public class SendNumMgtController {
|
||||
return sendNumService.updateAppr(updateApprReqDto);
|
||||
}
|
||||
|
||||
/** 제출 서류 다운로드 */
|
||||
public void downloadDoc(HttpServletRequest request, HttpServletResponse response, InsertNumberFile docFile) {
|
||||
sendNumService.downloadDoc(request, response, docFile);
|
||||
/**
|
||||
* 파일 다운로드
|
||||
* @throws IOException
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
@RequestMapping("/filedownload")
|
||||
public void filedownload(@RequestBody LinkedHashMap param, HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
logger.debug(param.toString());
|
||||
|
||||
File file = new File(param.get("filePath") + File.separator + param.get("fileNm"));
|
||||
if (file.exists()) {
|
||||
FileIoUtils.fileDownload(file, request, response );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -56,4 +56,6 @@ interface SendNumMgtMapper {
|
||||
int upddateSndrnoReg(UpdateApprReqDto updateApprReqDto);
|
||||
|
||||
int updateSvcUser(UpdateApprReqDto updateApprReqDto);
|
||||
|
||||
InsertNumberFile selectDownload(InsertNumberFile insertNumberFile);
|
||||
}
|
||||
|
||||
@@ -1,12 +1,19 @@
|
||||
package kr.co.uplus.ez.api.sendNumMgt;
|
||||
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.*;
|
||||
import kr.co.uplus.ez.common.data.ApiResponseCode;
|
||||
import kr.co.uplus.ez.common.data.Const;
|
||||
import kr.co.uplus.ez.common.data.Paging;
|
||||
import kr.co.uplus.ez.common.utils.DateUtils;
|
||||
import kr.co.uplus.ez.common.utils.FileIoUtils;
|
||||
import kr.co.uplus.ez.common.utils.FileUtil;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.mybatis.spring.SqlSessionTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -19,13 +26,46 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.DeleteNumberReqDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.DeleteNumberResDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.DetailNumber;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.DetailNumberReqDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.DetailNumberResDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumber;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumberFile;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumberReqDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumberRes;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumberResDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.ProfileInfo;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.ProfileListReqDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.ProfileListRes;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.ProfileListResDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendAdminInfo;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendAdminListReqDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendAdminListRes;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendAdminListResDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberApprDetailReqDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberApprDetailRes;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberApprDetailResDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberApprDoc;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberApprInfo;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberApprListReqDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberApprListRes;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberApprListResDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberApprNum;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberInfo;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberListReqDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberListRes;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.SendNumberListResDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.UpdateApprReqDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.UpdateApprResDto;
|
||||
import kr.co.uplus.ez.api.sendNumMgt.dto.UpdateApprSendNumber;
|
||||
import kr.co.uplus.ez.common.data.ApiResponseCode;
|
||||
import kr.co.uplus.ez.common.data.Const;
|
||||
import kr.co.uplus.ez.common.data.Paging;
|
||||
import kr.co.uplus.ez.common.utils.DateUtils;
|
||||
import kr.co.uplus.ez.common.utils.FileIoUtils;
|
||||
import kr.co.uplus.ez.common.utils.FileUtil;
|
||||
|
||||
@Service
|
||||
public class SendNumMgtService {
|
||||
@@ -40,6 +80,8 @@ public class SendNumMgtService {
|
||||
|
||||
@Value("${file-resource.info.sendNumber.path:/efs/admin/sendNumber/}")
|
||||
private String sendNumUploadPath;
|
||||
|
||||
private static int BUFFERSIZE = 1024;
|
||||
/**
|
||||
* date : 2022. 4. 25.
|
||||
* auth : ckr
|
||||
@@ -197,7 +239,7 @@ public class SendNumMgtService {
|
||||
String userSeq = sendNumMgtMapper.selectUserSeqByAdminId(adminId);
|
||||
try {
|
||||
Date now = new Date();
|
||||
String nowDate = DateUtils.dateToStr(now, "yyyyMMddHHmmss");
|
||||
String nowDate = DateUtils.dateToStr(now, "yyyyMMddHHmmss");
|
||||
insertNumberReqDto.setUserSeq(userSeq);
|
||||
insertNumberReqDto.setReqCnt(insertNumberReqDto.getList().size());
|
||||
insertNumberReqDto.setRegId(regId);
|
||||
@@ -206,7 +248,6 @@ public class SendNumMgtService {
|
||||
insertNumberReqDto.setRejtCnt(0); // 반려 건수
|
||||
insertNumberReqDto.setReqSttusCd(Const.SNDRNO_REQ_STTUS_CD_COMPLETED); // 요청 상태 코드(01:승인대기, 02:처리완료)
|
||||
insertNumberReqDto.setCmpltDt(nowDate); // 완료일시
|
||||
|
||||
|
||||
// 2. 발신번호등록 테이블 저장. (EZ_SNDRNO_REG)
|
||||
sendNumMgtMapper.insertNumber(insertNumberReqDto);
|
||||
@@ -234,14 +275,14 @@ public class SendNumMgtService {
|
||||
sendNumMgtMapper.insertNumberList(dbInsertNumber);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 사업자 인증 여부 Y
|
||||
if(allSendNumbers.size() > 0) {
|
||||
UpdateApprReqDto updateApprReqDto = new UpdateApprReqDto();
|
||||
updateApprReqDto.setAdminId(adminId);
|
||||
sendNumMgtMapper.updateSvcUser(updateApprReqDto);
|
||||
}
|
||||
|
||||
|
||||
// 사업자 인증이 안된 경우 파일업로드...
|
||||
if(!StringUtils.equals(Const.COMM_YES, insertNumberReqDto.getBizrAuthYn())){
|
||||
|
||||
@@ -250,39 +291,87 @@ public class SendNumMgtService {
|
||||
|
||||
List<MultipartFile> multipartFiles = new ArrayList<>();
|
||||
List<String> docTpCd = new ArrayList<>();
|
||||
|
||||
// 통신서비스이용 증명원 '01'
|
||||
MultipartFile communicationFile = multipartRequest.getFile("communicationFile");
|
||||
multipartFiles.add(communicationFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_01);
|
||||
|
||||
// 재직증명서 '02'
|
||||
MultipartFile tenureFile = multipartRequest.getFile("tenureFile");
|
||||
multipartFiles.add(tenureFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_02);
|
||||
|
||||
// 사업자등록증 '06'
|
||||
MultipartFile businessFile = multipartRequest.getFile("businessFile");
|
||||
multipartFiles.add(businessFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_06);
|
||||
|
||||
if(StringUtils.equals(Const.SNDRNO_TP_CD_OTHER, insertNumberReqDto.getNmineeDivCd())){
|
||||
// 위임-수임관계 확인 서류 '03'
|
||||
MultipartFile trustFile = multipartRequest.getFile("trustFile");
|
||||
multipartFiles.add(trustFile);
|
||||
if(StringUtils.equals(Const.SNDRNO_TP_CD_SELF, insertNumberReqDto.getNmineeDivCd())) {
|
||||
// 통신서비스이용 증명원 '01'
|
||||
MultipartFile communicationFile = multipartRequest.getFile("communicationFile");
|
||||
multipartFiles.add(communicationFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_01);
|
||||
|
||||
// 재직증명서 '02'
|
||||
MultipartFile tenureFile = multipartRequest.getFile("tenureFile");
|
||||
multipartFiles.add(tenureFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_02);
|
||||
|
||||
// 사업자등록증 '06'
|
||||
MultipartFile businessFile = multipartRequest.getFile("businessFile");
|
||||
multipartFiles.add(businessFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_06);
|
||||
|
||||
// 신분증(본인확인) '13'
|
||||
MultipartFile identificationCardFile = multipartRequest.getFile("identificationCardFile");
|
||||
multipartFiles.add(identificationCardFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_13);
|
||||
|
||||
// 재직증명서(본인확인) '14'
|
||||
MultipartFile identificationEvidenceFile = multipartRequest.getFile("identificationEvidenceFile");
|
||||
multipartFiles.add(identificationEvidenceFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_14);
|
||||
|
||||
} else if(StringUtils.equals(Const.SNDRNO_TP_CD_OTHER, insertNumberReqDto.getNmineeDivCd())){
|
||||
// 위임-수임사간 관계 확인 문서 '03'
|
||||
MultipartFile delegationFile = multipartRequest.getFile("delegationFile");
|
||||
multipartFiles.add(delegationFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_03);
|
||||
|
||||
// 위임장 '04'
|
||||
MultipartFile warrantFile = multipartRequest.getFile("warrantFile");
|
||||
multipartFiles.add(warrantFile);
|
||||
MultipartFile attorneyFile = multipartRequest.getFile("attorneyFile");
|
||||
multipartFiles.add(attorneyFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_04);
|
||||
// 대리인신분증 사본인증 '05'
|
||||
MultipartFile deputyFile = multipartRequest.getFile("deputyFile");
|
||||
multipartFiles.add(deputyFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_05);
|
||||
// 타사업자등록증 '07'
|
||||
|
||||
// 법인인감증명서 '12'
|
||||
MultipartFile corporateCertificateFile = multipartRequest.getFile("corporateCertificateFile");
|
||||
multipartFiles.add(corporateCertificateFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_12);
|
||||
|
||||
// 위임사 사업자등록증 '10'
|
||||
MultipartFile delegatedBusinessFile = multipartRequest.getFile("delegatedBusinessFile");
|
||||
multipartFiles.add(delegatedBusinessFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_10);
|
||||
|
||||
// 수임사 사업자등록증 '11'
|
||||
MultipartFile authorizedBusinessFile = multipartRequest.getFile("authorizedBusinessFile");
|
||||
multipartFiles.add(authorizedBusinessFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_11);
|
||||
|
||||
// 통신서비스이용 증명원 '01'
|
||||
MultipartFile communicationFile = multipartRequest.getFile("communicationFile");
|
||||
multipartFiles.add(communicationFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_01);
|
||||
|
||||
// 위임사 재직증명서(임직원 신청시) '09'
|
||||
MultipartFile delegateCertificateFile = multipartRequest.getFile("delegateCertificateFile");
|
||||
multipartFiles.add(delegateCertificateFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_09);
|
||||
|
||||
// 위임사 신분증(임직원 신청시) '08'
|
||||
MultipartFile delegatedIdentificationFile = multipartRequest.getFile("delegatedIdentificationFile");
|
||||
multipartFiles.add(delegatedIdentificationFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_08);
|
||||
|
||||
// 사업자등록증(타사) '07'
|
||||
MultipartFile otherBusinessFile = multipartRequest.getFile("otherBusinessFile");
|
||||
multipartFiles.add(otherBusinessFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_07);
|
||||
|
||||
// 신분증(본인확인) '13'
|
||||
MultipartFile identificationCardFile = multipartRequest.getFile("identificationCardFile");
|
||||
multipartFiles.add(identificationCardFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_13);
|
||||
|
||||
// 재직증명서(본인확인) '14'
|
||||
MultipartFile identificationEvidenceFile = multipartRequest.getFile("identificationEvidenceFile");
|
||||
multipartFiles.add(identificationEvidenceFile);
|
||||
docTpCd.add(Const.SNDRNO_DOC_TP_CD_14);
|
||||
}
|
||||
|
||||
// 파일 업로드 및 테이블 저장 (등록 서류 관련).
|
||||
@@ -293,14 +382,16 @@ public class SendNumMgtService {
|
||||
String fileNm = regReqNo + "_" + docTpCd.get(j).substring(1,2) + "_" + docTpCd.get(j) + "." + ext;
|
||||
String titleNm = multipartFiles.get(j).getOriginalFilename();
|
||||
long fileSize = multipartFiles.get(j).getSize();
|
||||
|
||||
|
||||
|
||||
// File Upload.
|
||||
FileUtil.upload(multipartFiles.get(j), fileNm, path);
|
||||
|
||||
// 발신번호 등록 서류 테이블 저장 (EZ_SNDRNO_DOC).
|
||||
InsertNumberFile insertFile = new InsertNumberFile();
|
||||
insertFile.setRegReqNo(regReqNo);
|
||||
insertFile.setDocNo(docTpCd.get(j).substring(1,2));
|
||||
insertFile.setDocNo("" + Integer.parseInt(docTpCd.get(j)));
|
||||
//insertFile.setDocNo(docTpCd.get(j).substring(1,2));
|
||||
insertFile.setDocTpCd(docTpCd.get(j));
|
||||
insertFile.setDocTitle(titleNm);
|
||||
insertFile.setFileNm(fileNm);
|
||||
@@ -323,14 +414,6 @@ public class SendNumMgtService {
|
||||
return new InsertNumberResDto(ApiResponseCode.SUCCESS, insertNumberRes);
|
||||
}
|
||||
|
||||
// 다운로트 제출서류
|
||||
public void downloadDoc(HttpServletRequest request, HttpServletResponse response, InsertNumberFile docFile) {
|
||||
|
||||
|
||||
String fileName = "";
|
||||
//FileUtil.download(request, response, sendNumUploadPath, fileName);
|
||||
}
|
||||
|
||||
/**
|
||||
* date : 2022. 4. 25.
|
||||
* auth : ckr
|
||||
@@ -449,9 +532,11 @@ public class SendNumMgtService {
|
||||
// 발신번호 문서 목록 조회
|
||||
List<SendNumberApprDoc> sendNumberApprDocs = sendNumMgtMapper.selectSndnoDocList(sendNumberApprDetailReqDto);
|
||||
|
||||
|
||||
sendNumberApprDetailRes.setNumList(sendNumberApprNums);
|
||||
sendNumberApprDetailRes.setDocList(sendNumberApprDocs);
|
||||
|
||||
|
||||
return new SendNumberApprDetailResDto(ApiResponseCode.SUCCESS, sendNumberApprDetailRes);
|
||||
}
|
||||
|
||||
@@ -489,14 +574,14 @@ public class SendNumMgtService {
|
||||
updateApprReqDto.setApvCnt(apvCnt);
|
||||
updateApprReqDto.setRejtCnt(rejtCnt);
|
||||
|
||||
// 발신 번호 등록 정보 가져오기
|
||||
SendNumberApprDetailReqDto sendNumberApprDetailReqDto = new SendNumberApprDetailReqDto();
|
||||
// 발신 번호 등록 정보 가져오기
|
||||
SendNumberApprDetailReqDto sendNumberApprDetailReqDto = new SendNumberApprDetailReqDto();
|
||||
sendNumberApprDetailReqDto.setRegReqNo(updateApprReqDto.getRegReqNo()); // 발신 번호 세팅
|
||||
SendNumberApprDetailRes sendNumberApprDetailRes = sendNumMgtMapper.selectSvcSndrnoReqDetail(sendNumberApprDetailReqDto);
|
||||
|
||||
|
||||
if(sendNumberApprDetailRes != null) {
|
||||
String cmpltDt = sendNumberApprDetailRes.getCmpltDt();
|
||||
// if(cmpltDt == null) { // 완료 일시가 없으면
|
||||
// if(cmpltDt == null) { // 완료 일시가 없으면
|
||||
// if(totalCnt == (apvCnt + rejtCnt)){ // (승인 | 반려) 처리가 다 되었는지 확인
|
||||
// updateApprReqDto.setReqSttusCd(Const.SNDRNO_REQ_STTUS_CD_COMPLETED);
|
||||
// updateApprReqDto.setCmpltYn(Const.COMM_YES);
|
||||
@@ -523,6 +608,110 @@ public class SendNumMgtService {
|
||||
return new UpdateApprResDto(ApiResponseCode.SUCCESS);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* InputStream을 종료한다.
|
||||
*/
|
||||
public static void close(InputStream stream) {
|
||||
if (stream != null) {
|
||||
try {
|
||||
stream.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* OutputStream을 종료한다.
|
||||
*/
|
||||
public static void close(OutputStream stream) {
|
||||
if (stream != null) {
|
||||
try {
|
||||
stream.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* FileOutputStream을 종료한다.
|
||||
*/
|
||||
public static void close(FileOutputStream stream) {
|
||||
if (stream != null) {
|
||||
try {
|
||||
stream.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
// 다운로드 제출서류
|
||||
public void downloadDoc(HttpServletRequest request, HttpServletResponse response, InsertNumberFile docFile) {
|
||||
|
||||
SendNumMgtMapper sendNumMgtMapper = sqlSessionSlave.getMapper(SendNumMgtMapper.class);
|
||||
|
||||
InsertNumberFile selectFile = sendNumMgtMapper.selectDownload(docFile);
|
||||
|
||||
String fileName = selectFile.getDocTitle();
|
||||
String oriFileName = selectFile.getFileNm();
|
||||
String filePath = selectFile.getFilePath();
|
||||
|
||||
|
||||
StringBuilder sb = new StringBuilder("D:" + filePath + "/");
|
||||
sb.append(oriFileName);
|
||||
String saveFileName = sb.toString();
|
||||
|
||||
String contentType = request.getContentType();
|
||||
File file = new File(saveFileName);
|
||||
long fileLength = file.length();
|
||||
|
||||
String extension = FilenameUtils.getExtension(saveFileName).toLowerCase();
|
||||
|
||||
// 형태에 따른 컨텐트 타입 분류
|
||||
if ("zip".equals(extension)) response.setContentType("application/zip");
|
||||
else if ("xls".equals(extension) || "xlsx".equals(extension)) response.setContentType("application/vnd.ms-excel;charset=UTF-8");
|
||||
else if ("ppt".equals(extension) || "pptx".equals(extension)) response.setContentType("application/x-mspowerpoint");
|
||||
else if ("doc".equals(extension) || "docx".equals(extension)) response.setContentType("application/msword");
|
||||
else if ("pdf".equals(extension)) response.setContentType("application/x-msdownload");
|
||||
else if ("jpg".equals(extension)) response.setContentType("image/jpg");
|
||||
else if ("gif".equals(extension)) response.setContentType("image/gif");
|
||||
else if ("png".equals(extension)) response.setContentType("image/png");
|
||||
|
||||
|
||||
response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ";");
|
||||
response.setHeader("Content-Transfer-Encoding", "binary");
|
||||
response.setHeader("Content-Type", contentType);
|
||||
response.setHeader("Content-Length", "" + fileLength);
|
||||
response.setHeader("Pragma", "no-cache;");
|
||||
response.setHeader("Expires", "-1;");
|
||||
|
||||
try {
|
||||
FileInputStream fis = new FileInputStream(saveFileName);
|
||||
OutputStream out = response.getOutputStream();
|
||||
|
||||
|
||||
int readCount = 0;
|
||||
byte[] buffer = new byte[BUFFERSIZE];
|
||||
|
||||
while ((readCount = fis.read(buffer)) != -1 ) {
|
||||
out.write(buffer, 0 , readCount);
|
||||
}
|
||||
out.flush();
|
||||
}catch(Exception e) {
|
||||
throw new RuntimeException("File load Error");
|
||||
}
|
||||
|
||||
//String fileStr ="C:/efs/admin/sendNumber/2022/07/2022071018012_2_02.PNG.png";
|
||||
//String fileStr = filePath + oriFileName;
|
||||
// String fileStr = filePath + oriFileName;
|
||||
// File file = new File(fileStr);
|
||||
// FileUtil.download(request, response, fileName, file);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -15,4 +15,7 @@ public class InsertNumberFile implements Serializable{
|
||||
private String filePath;
|
||||
private long fileSize;
|
||||
private String regId;
|
||||
private String regDt;
|
||||
private String chgId;
|
||||
private String chgDt;
|
||||
}
|
||||
|
||||
@@ -24,29 +24,48 @@ public class InsertNumberReqDto implements Serializable{
|
||||
@ApiModelProperty(example = "사업자인증여부", name = "사업자인증여부", dataType = "String")
|
||||
private String bizrAuthYn;
|
||||
|
||||
|
||||
private List<InsertNumber> list;
|
||||
|
||||
@ApiModelProperty(example = "file", name = "위임-수임관계 확인 서류", dataType = "String")
|
||||
private MultipartFile trustFile;
|
||||
|
||||
@ApiModelProperty(example = "file", name = "위임장", dataType = "String")
|
||||
private MultipartFile warrantFile;
|
||||
|
||||
@ApiModelProperty(example = "file", name = "대리인 신분증 사본 인증", dataType = "String")
|
||||
private MultipartFile deputyFile;
|
||||
|
||||
@ApiModelProperty(example = "file", name = "통신서비스 이용증명원", dataType = "String")
|
||||
private MultipartFile communicationFile;
|
||||
|
||||
@ApiModelProperty(example = "file", name = "재직증명서", dataType = "String")
|
||||
private MultipartFile tenureFile;
|
||||
|
||||
@ApiModelProperty(example = "file", name = "통신서비스 이용증명원", dataType = "String")
|
||||
private MultipartFile communicationFile;
|
||||
@ApiModelProperty(example = "file", name = "위임-수임사간 관계 확인 문서", dataType = "String")
|
||||
private MultipartFile delegationFile;
|
||||
|
||||
@ApiModelProperty(example = "file", name = "위임장", dataType = "String")
|
||||
private MultipartFile attorneyFile;
|
||||
|
||||
@ApiModelProperty(example = "file", name = "사업자등록증", dataType = "String")
|
||||
private MultipartFile businessFile;
|
||||
|
||||
@ApiModelProperty(example = "file", name = "타사업자등록증", dataType = "String")
|
||||
@ApiModelProperty(example = "file", name = "사업자등록증(타사)", dataType = "String")
|
||||
private MultipartFile otherBusinessFile;
|
||||
|
||||
@ApiModelProperty(example = "file", name = "위임사 신분증(임직원 신청시)", dataType = "String")
|
||||
private MultipartFile delegatedIdentificationFile;
|
||||
|
||||
@ApiModelProperty(example = "file", name = "위임사 재직증명서(임직원 신청시)", dataType = "String")
|
||||
private MultipartFile delegateCertificateFile;
|
||||
|
||||
@ApiModelProperty(example = "file", name = "위임사 사업자등록증", dataType = "String")
|
||||
private MultipartFile delegatedBusinessFile;
|
||||
|
||||
@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 identificationCardFile;
|
||||
|
||||
@ApiModelProperty(example = "file", name = "재직증명서(본인확인)", dataType = "String")
|
||||
private MultipartFile identificationEvidenceFile;
|
||||
|
||||
|
||||
// @ApiModelProperty(example = "발신번호 인증 파일", name = "발신번호 인증 파일", dataType = "String")
|
||||
// private List<MultipartFile> authSendNum;
|
||||
|
||||
|
||||
@@ -32,5 +32,15 @@ public class SendNumberApprDetailRes implements Serializable{
|
||||
private String slfAuthHp;
|
||||
@ApiModelProperty(example = "메모", name = "메모", dataType = "String")
|
||||
private String memo;
|
||||
@ApiModelProperty(example = "파일이름", name = "파일이름", dataType = "String", hidden = true)
|
||||
private String fileNm;
|
||||
@ApiModelProperty(example = "서류 넘버", name = "서류 넘버", dataType = "String", hidden = true)
|
||||
private String docNo;
|
||||
@ApiModelProperty(example = "서류 제목", name = "서류 제목", dataType = "String", hidden = true)
|
||||
private String docTitle;
|
||||
@ApiModelProperty(example = "서류 유형 코드", name = "서류 유형 코드", dataType = "String", hidden = true)
|
||||
private String docTpCd;
|
||||
@ApiModelProperty(example = "파일 경로", name = "파일 경로", dataType = "String", hidden = true)
|
||||
private String filePath;
|
||||
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@ public class SendNumberApprDoc implements Serializable{
|
||||
private String fileNm;
|
||||
@ApiModelProperty(example = "파일 구분", name = "파일 구분", dataType = "String")
|
||||
private String docTpCd;
|
||||
|
||||
|
||||
@ApiModelProperty(example = "등록 요청 번호", name = "등록 요청 번호", dataType = "String", hidden = true)
|
||||
private String regReqNo;
|
||||
@ApiModelProperty(example = "서류 번호", name = "서류 번호", dataType = "String", hidden = true)
|
||||
private String docNo;
|
||||
}
|
||||
|
||||
@@ -90,13 +90,34 @@ public class Const {
|
||||
/** 가입 상태 코드(99:해지) */
|
||||
public static final String SUBS_STTUS_CD_BREAK = "99";
|
||||
|
||||
/** 통신서비스 이용증명원 */
|
||||
public static final String SNDRNO_DOC_TP_CD_01 = "01";
|
||||
/** 재직증명서 */
|
||||
public static final String SNDRNO_DOC_TP_CD_02 = "02";
|
||||
/** 위임-수임사간 관계 확인 문서 */
|
||||
public static final String SNDRNO_DOC_TP_CD_03 = "03";
|
||||
/** 위임장 */
|
||||
public static final String SNDRNO_DOC_TP_CD_04 = "04";
|
||||
/** 삭제처리 */
|
||||
public static final String SNDRNO_DOC_TP_CD_05 = "05";
|
||||
/** 사업자등록증 */
|
||||
public static final String SNDRNO_DOC_TP_CD_06 = "06";
|
||||
/** 사업자등록증(타사) */
|
||||
public static final String SNDRNO_DOC_TP_CD_07 = "07";
|
||||
/** 위임사 신분증(임직원 신청시) */
|
||||
public static final String SNDRNO_DOC_TP_CD_08 = "08";
|
||||
/** 위임사 재직증명서(임직원 신청시) */
|
||||
public static final String SNDRNO_DOC_TP_CD_09 = "09";
|
||||
/** 위임사 사업자등록증 */
|
||||
public static final String SNDRNO_DOC_TP_CD_10 = "10";
|
||||
/** 수임사 사업자등록증 */
|
||||
public static final String SNDRNO_DOC_TP_CD_11 = "11";
|
||||
/** 법인인감증명서 */
|
||||
public static final String SNDRNO_DOC_TP_CD_12 = "12";
|
||||
/** 신분증 (본인확인) */
|
||||
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_TP_CD_SELF = "01";
|
||||
public static final String SNDRNO_TP_CD_OTHER = "02";
|
||||
|
||||
@@ -26,7 +26,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
public class FileUtil {
|
||||
|
||||
private static int BUFFERSIZE = 1024;
|
||||
|
||||
|
||||
/**
|
||||
* 폴더 생성
|
||||
*/
|
||||
@@ -52,17 +52,18 @@ public class FileUtil {
|
||||
*/
|
||||
public static boolean upload(MultipartFile file, String filename, String path) {
|
||||
boolean saved = true;
|
||||
|
||||
|
||||
String extension = FilenameUtils.getExtension(file.getOriginalFilename()).toLowerCase();
|
||||
String fos = path + File.separatorChar + filename + "." + extension;
|
||||
|
||||
// String fos = path + File.separatorChar + filename + "." + extension;
|
||||
String fos = path + File.separatorChar + filename;
|
||||
|
||||
InputStream inputStream = null;
|
||||
OutputStream outputStream = null;
|
||||
|
||||
|
||||
try {
|
||||
if (file != null && file.getSize() > 0) {
|
||||
if (!existsFile(path) ) FileUtil.makeDir(path);
|
||||
|
||||
|
||||
inputStream = file.getInputStream();
|
||||
outputStream = new FileOutputStream(fos);
|
||||
int readBytes = 0;
|
||||
@@ -90,7 +91,7 @@ public class FileUtil {
|
||||
public static Map<String, String> upload_newname(MultipartFile file, String path) {
|
||||
String extension = FilenameUtils.getExtension(file.getOriginalFilename()).toLowerCase();
|
||||
String newName = new SimpleDateFormat("yyyyMMddHHmmSSS").format(new Date()) + "." + extension;
|
||||
|
||||
|
||||
Date d = new Date(); // your date
|
||||
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Asia/Seoul"));
|
||||
cal.setTime(d);
|
||||
@@ -151,14 +152,14 @@ public class FileUtil {
|
||||
* 다운로드
|
||||
*/
|
||||
private static void download(HttpServletRequest request, HttpServletResponse response, String filename, File file, boolean isDeleteOnExit) {
|
||||
|
||||
|
||||
if (file.exists()) {
|
||||
FileInputStream fileInStream = null;
|
||||
OutputStream outStream = null;
|
||||
|
||||
|
||||
try {
|
||||
String extension = FilenameUtils.getExtension(filename).toLowerCase();
|
||||
|
||||
|
||||
// 형태에 따른 컨텐트 타입 분류
|
||||
if ("zip".equals(extension)) response.setContentType("application/zip");
|
||||
else if ("xls".equals(extension) || "xlsx".equals(extension)) response.setContentType("application/vnd.ms-excel;charset=UTF-8");
|
||||
@@ -168,23 +169,23 @@ public class FileUtil {
|
||||
else if ("jpg".equals(extension)) response.setContentType("image/jpg");
|
||||
else if ("gif".equals(extension)) response.setContentType("image/gif");
|
||||
else if ("png".equals(extension)) response.setContentType("image/png");
|
||||
|
||||
|
||||
response.setHeader("Buffer", "true");
|
||||
response.setHeader("Pragma", "no-cache;");
|
||||
response.setHeader("Expires", "-1;");
|
||||
response.setHeader("Content-Transfer-Encoding", "binary;");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20") + ";");
|
||||
|
||||
|
||||
fileInStream = new FileInputStream(file);
|
||||
outStream = response.getOutputStream();
|
||||
|
||||
|
||||
int readBytes = 0;
|
||||
byte[] buffer = new byte[BUFFERSIZE * 100];
|
||||
|
||||
|
||||
while ((readBytes = fileInStream.read(buffer)) != -1) {
|
||||
outStream.write(buffer, 0, readBytes);
|
||||
}
|
||||
|
||||
|
||||
outStream.flush();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@@ -206,7 +207,7 @@ public class FileUtil {
|
||||
try {
|
||||
ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
|
||||
workbook.write(outByteStream);
|
||||
|
||||
|
||||
if (workbook instanceof SXSSFWorkbook) {
|
||||
((SXSSFWorkbook) workbook).dispose();
|
||||
}
|
||||
|
||||
@@ -299,6 +299,7 @@
|
||||
,DOC_TITLE
|
||||
,FILE_NM
|
||||
,FILE_PATH
|
||||
,FILE_SIZE
|
||||
,REG_ID
|
||||
,REG_DT
|
||||
,CHG_ID
|
||||
@@ -311,6 +312,7 @@
|
||||
,#{docTitle}
|
||||
,#{fileNm}
|
||||
,#{filePath}
|
||||
,#{fileSize}
|
||||
,#{regId}
|
||||
,NOW()
|
||||
,#{regId}
|
||||
@@ -593,7 +595,9 @@
|
||||
esd.DOC_TITLE ,
|
||||
esd.FILE_PATH ,
|
||||
esd.FILE_NM ,
|
||||
esd.DOC_TP_CD
|
||||
esd.DOC_TP_CD,
|
||||
esd.REG_REQ_NO,
|
||||
esd.DOC_NO
|
||||
FROM
|
||||
hubez_common.EZ_SNDRNO_DOC esd
|
||||
WHERE
|
||||
@@ -643,5 +647,24 @@
|
||||
WHERE
|
||||
USER_ID = #{adminId}
|
||||
</update>
|
||||
|
||||
<select id="selectDownload" parameterType="kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumberFile" resultType="kr.co.uplus.ez.api.sendNumMgt.dto.InsertNumberFile">
|
||||
/* sendNumMgt-mapper.xml(selectDownload) */
|
||||
select
|
||||
REG_REQ_NO,
|
||||
DOC_NO ,
|
||||
DOC_TP_CD ,
|
||||
DOC_TITLE ,
|
||||
FILE_NM ,
|
||||
FILE_PATH ,
|
||||
FILE_SIZE ,
|
||||
REG_ID ,
|
||||
REG_DT ,
|
||||
CHG_ID ,
|
||||
CHG_DT
|
||||
from hubez_common.EZ_SNDRNO_DOC
|
||||
WHERE REG_REQ_NO = #{regReqNo}
|
||||
and DOC_NO = #{docNo}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -6,6 +6,7 @@ xssconfig :
|
||||
- "/multiSendTemplateApi/insertMultiSendTemplate"
|
||||
- "/projectApi/manage/saveProject"
|
||||
- "/api/v1/bo/sendNumMgt/insertNumber"
|
||||
- "/api/v1/bo/sendNumMgt/filedownload"
|
||||
#- "/uc/test/testUrl" #테스트 URL
|
||||
#xss 제외 방식(allow, except)
|
||||
#allow - escape-characters 를 모두 적용 후 allow-elements 만 <, > 치환
|
||||
|
||||
Reference in New Issue
Block a user