발신번호 등록 수정

This commit is contained in:
USER
2022-08-17 12:03:45 +09:00
parent 26756f3e8e
commit 89c8d1eb68
34 changed files with 918 additions and 247 deletions

View File

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

View File

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

View File

@@ -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('-------------------------');

View File

@@ -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 = {

View File

@@ -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>

View File

@@ -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 = {

View File

@@ -3,8 +3,8 @@
<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="title_wrap">
<h3>발송집계</h3>

View File

@@ -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>

View File

@@ -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>

View File

@@ -6,7 +6,7 @@
<h3 class="title">메시지 차단</h3>
<p class="breadcrumb">리스크관리 &gt; 메시지 차단</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">

View File

@@ -7,7 +7,7 @@
<h3 class="title">080 수신번호 차단</h3>
<p class="breadcrumb">리스크관리 &gt; 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">

View File

@@ -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

View File

@@ -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) {

View File

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

View File

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

View File

@@ -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>

View File

@@ -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>

View File

@@ -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"/>

View File

@@ -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"/>

View File

@@ -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 = {

View File

@@ -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 = {

View File

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

View File

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