TC 기능 수정 / 디자인 수정 변경

This commit is contained in:
kimre
2022-07-15 14:21:03 +09:00
parent a4e5cde9f6
commit 34e7957081
91 changed files with 9087 additions and 8673 deletions

View File

@@ -8,7 +8,7 @@
<div class="pop-cont-detail input_box">
<label>ID</label>
<div class="input_search">
<input class="search-box" type="text" value="" v-model="searchText1">
<input class="search-box" type="text" value="" v-model="searchText1" maxlength="100">
<button type="button" class="button btn-p2color" @click="adminList">조회</button>
</div>
</div>

View File

@@ -1,8 +1,8 @@
<template>
<!-- <div class="wrap bg-wrap"> -->
<div>
<div class="dimmed" @click="apprDetailPopClose"></div>
<div class="popup-wrap">
<div class="dimmed modal55" @click="apprDetailPopClose"></div>
<div class="popup-wrap modal55">
<!-- 발신번호 상세 (타사업자)-->
<div class="popup modal55 popup_form">
<div class="pop-head">
@@ -137,14 +137,10 @@ export default {
// 모달 띄우기
apprDetailPopOpen(props){
// this.formReset();
var dimmed = document.getElementsByClassName('dimmed');
dimmed[0].style.display = 'block';
var wrap = document.getElementsByClassName('popup-wrap');
wrap[0].style.display = 'block';
var obj = document.getElementsByClassName('modal55');
obj[0].style.display = 'block';
var dimmed = document.getElementsByClassName('modal55');
for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'block';
}
this.apprDetail(props);
},
@@ -198,12 +194,10 @@ export default {
},
// 모달 끄기
apprDetailPopClose(){
var dimmed = document.getElementsByClassName('dimmed');
dimmed[0].style.display = 'none';
var wrap = document.getElementsByClassName('popup-wrap');
wrap[0].style.display = 'none';
var popup = document.getElementsByClassName('modal55');
popup[0].style.display = 'none';
var dimmed = document.getElementsByClassName('modal55');
for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'none';
}
},
allApprSttus(event) {
var data = event.target.value;

View File

@@ -1,113 +1,124 @@
<template>
<!-- <div class="wrap bg-wrap"> -->
<div>
<div class="dimmed" @click="numberRegPopClose();"></div>
<!-- <div class="wrap bg-wrap"> -->
<div>
<div class="dimmed" @click="numberRegPopClose();"></div>
<!-- 발신번호 등록 (타사업자)-->
<div class="popup modal52 popup_form register w700">
<div class="pop-head">
<h3 class="pop-tit">발신번호 등록</h3>
</div>
<table>
<tbody>
<tr>
<th>관리자 ID</th>
<td>
<div class="input_search">
<input class="search-box" type="text" placeholder="아이디 입력" disabled v-model="adminId">
<button type="button" class="button btn-p2color" @click="searchIdPop">조회</button>
<table>
<tbody>
<tr>
<th>관리자 ID</th>
<td>
<div class="input_search">
<input class="search-box" type="text" placeholder="아이디 입력" disabled v-model="adminId">
<button type="button" class="button btn-p2color" @click="searchIdPop">조회</button>
</div>
</td>
</tr>
<tr>
<th>고객사명</th>
<td><input type="text" disabled v-model="custNm"></td>
</tr>
<tr>
<th>사업자번호</th>
<td><input type="text" disabled v-model="bRegNo"></td>
</tr>
<tr v-show="bizrAuthYn !== 'Y'">
<th>명의자 구분</th>
<td>
<input type="radio" name="nmineeDivCd" value="01" id="popup_radio5" v-model="nmineeDivCd"
@change="changeNmineDiv($event)">
<label for="popup_radio5">사업자</label>
<input type="radio" name="nmineeDivCd" value="02" id="popup_radio6" v-model="nmineeDivCd"
@change="changeNmineDiv($event)">
<label for="popup_radio6">타사업자</label>
</td>
</tr>
<tr>
<th>발신번호</th>
<td>
<div class="input_add">
<div>
<input type="text" placeholder="발신번호명" v-model="sendNm" maxlength="20">
<input type="text" placeholder="발신번호(숫자만입력)" v-model="sendNum" @keypress="onlyNum" @input="onlyNum"
maxlength="11">
<button class="button white add" @click="addNumberInput"></button>
</div>
</td>
</tr>
<tr>
<th>고객사명</th>
<td><input type="text" disabled v-model="custNm"></td>
</tr>
<tr>
<th>사업자번호</th>
<td><input type="text" disabled v-model="bRegNo"></td>
</tr>
<tr v-show="bizrAuthYn !== 'Y'">
<th>명의자 구분</th>
<td>
<input type="radio" name="nmineeDivCd" value="01" id="popup_radio5" v-model="nmineeDivCd" @change="changeNmineDiv($event)">
<label for="popup_radio5">사업자</label>
<input type="radio" name="nmineeDivCd" value="02" id="popup_radio6" v-model="nmineeDivCd" @change="changeNmineDiv($event)">
<label for="popup_radio6">타사업자</label>
</td>
</tr>
<tr>
<th>발신번호</th>
<td>
<div class="input_add">
<div>
<input type="text" placeholder="발신번호명" v-model="sendNm" maxlength="20">
<input type="text" placeholder="발신번호(숫자만입력)" v-model="sendNum" v-on:keyup="onlyNum" @input="onlyNum" maxlength="16">
<button class="button white add" @click="addNumberInput"></button>
</div>
<div v-for="(numberInput, index) in numberInputs">
<input type="text" placeholder="발신번호명" v-model="numberInput.sendNm" maxlength="20">
<input type="text" placeholder="발신번호(숫자만입력)" v-model="numberInput.sendNum" v-on:keyup="onlyNum" @input="onlyNum" maxlength="16">
</div>
<div v-for="(numberInput, index) in numberInputs">
<input type="text" placeholder="발신번호명" v-model="numberInput.sendNm" maxlength="20">
<input type="text" placeholder="발신번호(숫자만입력)" v-model="numberInput.sendNum" @keypress="onlyNum"
@input="onlyNum" maxlength="11">
</div>
</td>
</tr>
<tr v-show="bizrAuthYn !== 'Y'">
<th>제출서류</th>
<td>
<div class="attach" v-show="fileType === 2">
<p class="essential list"><span>*</span>위임-수임관계 확인 서류</p>
<input type="file" ref="trustFile" style="display: none" @change="readTrustFile" accept=".jpg,.png,.pdf,.tiff"/>
<button class="button btn-p2color" @click="$refs.trustFile.click()">파일업로드</button>
<p class="file" id="trustNm"></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" accept=".jpg,.png,.pdf,.tiff"/>
<button class="button btn-p2color" @click="$refs.warrantFile.click()">파일업로드</button>
<p class="file" id="warrantNm"></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" accept=".jpg,.png,.pdf,.tiff"/>
<button class="button btn-p2color" @click="$refs.deputyFile.click()">파일업로드</button>
<p class="file" id="deputyNm"></p>
</div>
<div class="attach">
<p class="essential list"><span>*</span>통신서비스 이용증명원</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" 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="otherBusinessFile" style="display: none" @change="readOtherBusinessFile" accept=".jpg,.png,.pdf,.tiff"/>
<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>
</tbody>
</table>
</div>
</td>
</tr>
<tr v-show="bizrAuthYn !== 'Y'">
<th>제출서류</th>
<td>
<div class="attach" v-show="fileType === 2">
<p class="essential list"><span>*</span>위임-수임관계 확인 서류</p>
<input type="file" ref="trustFile" style="display: none" @change="readTrustFile"
accept=".jpg,.png,.pdf,.tiff"/>
<button class="button btn-p2color" @click="$refs.trustFile.click()">파일업로드</button>
<p class="file" id="trustNm"></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"
accept=".jpg,.png,.pdf,.tiff"/>
<button class="button btn-p2color" @click="$refs.warrantFile.click()">파일업로드</button>
<p class="file" id="warrantNm"></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"
accept=".jpg,.png,.pdf,.tiff"/>
<button class="button btn-p2color" @click="$refs.deputyFile.click()">파일업로드</button>
<p class="file" id="deputyNm"></p>
</div>
<div class="attach">
<p class="essential list"><span>*</span>통신서비스 이용증명원</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"
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="otherBusinessFile" style="display: none" @change="readOtherBusinessFile"
accept=".jpg,.png,.pdf,.tiff"/>
<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>
</tbody>
</table>
<div class="popup-btn2">
<button class="btn-pcolor" @click="saveSendNum">저장</button>
<button class="btn-default" @click="numberRegPopClose();">취소</button>
@@ -116,65 +127,65 @@
<admin-list-pop ref="admnListPop" :send-data="childData" @event-data="setChildData"/>
<common-modal ref="commmonModal2"></common-modal>
</div>
</div>
</div>
</template>
<script>
import AdminListPop from "@/modules/sendNumMgt/components/AdminListPop";
import { utils_mixin, chkPattern2 } from '../service/mixins';
import {utils_mixin, chkPattern2} from '../service/mixins';
import commonModal from "@/components/modal/commonModal";
import sendNumMgtApi from "@/modules/sendNumMgt/service/sendNumMgtApi";
export default {
name: "numberRegPop",
mixins: [utils_mixin, chkPattern2],
watch:{
nmineeDivCd(){
watch: {
nmineeDivCd() {
console.log('watch : ', this.nmineeDivCd)
}
},
data(){
return{
row: {},
adminId:'',
custNm:'',
bRegNo:'',
data() {
return {
row: {},
adminId: '',
custNm: '',
bRegNo: '',
bizrAuthYn: '',
custSeq: '',
nmineeDivCd:'01',
nmineeDivCd: '01',
sendNm: '',
sendNum: '',
numberInputs: [],
saveSendNums: [],
fileType:1,
fileType: 1,
trustFile: null,
warrantFile: null,
deputyFile: null,
tenureFile: null,
businessFile: null,
communicationFile: null,
otherBusinessFile:null,
otherBusinessFile: null,
childData: 20,
reqCnt:0,
reqCnt: 0,
}
},
components: {
components: {
AdminListPop,
commonModal,
},
model: {
prop: 'sendData',
event: 'event-data'
},
props: ['sendData'],
created(){
this.formReset();
model: {
prop: 'sendData',
event: 'event-data'
},
methods :{
searchIdPop(){
props: ['sendData'],
created() {
this.formReset();
},
methods: {
searchIdPop() {
this.$refs.admnListPop.adminNmPopOpen();
},
setChildData (data) {
},
setChildData(data) {
console.log(data)
this.adminId = data.adminId
this.custNm = data.custNm
@@ -182,50 +193,50 @@ export default {
this.bizrAuthYn = data.bizrAuthYn
this.custSeq = data.custSeq
},
addNumberInput(){
addNumberInput() {
this.numberInputs.push({
sendNm: '',
sendNum: ''
})
},
delNumberInput(index){
this.numberInputs.splice(index,1)
delNumberInput(index) {
this.numberInputs.splice(index, 1)
},
changeNmineDiv(event){
changeNmineDiv(event) {
var data = event.target.value;
console.log(data)
if(data === '01'){
if (data === '01') {
this.fileType = 1
}
if(data === '02'){
if (data === '02') {
this.fileType = 2
}
},
// 모달 띄우기
numberRegPopopen(){
this.formReset();
var dimmed = document.getElementsByClassName('dimmed');
dimmed[0].style.display = 'block';
var wrap = document.getElementsByClassName('popup-wrap');
wrap[0].style.display = 'block';
var obj = document.getElementsByClassName('modal52');
obj[0].style.display = 'block';
},
// 모달 끄기
numberRegPopClose(){
var dimmed = document.getElementsByClassName('dimmed');
dimmed[0].style.display = 'none';
var wrap = document.getElementsByClassName('popup-wrap');
wrap[0].style.display = 'none';
var popup = document.getElementsByClassName('modal52');
popup[0].style.display = 'none';
},
formReset(){
Object.assign(this.$data, this.$options.data());
},
// 모달 띄우기
numberRegPopopen() {
this.formReset();
var dimmed = document.getElementsByClassName('dimmed');
dimmed[0].style.display = 'block';
var wrap = document.getElementsByClassName('popup-wrap');
wrap[0].style.display = 'block';
var obj = document.getElementsByClassName('modal52');
obj[0].style.display = 'block';
},
// 모달 끄기
numberRegPopClose() {
var dimmed = document.getElementsByClassName('dimmed');
dimmed[0].style.display = 'none';
var wrap = document.getElementsByClassName('popup-wrap');
wrap[0].style.display = 'none';
var popup = document.getElementsByClassName('modal52');
popup[0].style.display = 'none';
},
formReset() {
Object.assign(this.$data, this.$options.data());
},
// 위임-수임
readTrustFile(event){
readTrustFile(event) {
const file = event.target.files[0];
console.log(file.name);
@@ -242,9 +253,9 @@ export default {
root.appendChild(button);
this.trustFile = file;
},
delTrustFile(event){
delTrustFile(event) {
const file = event.target.files[0];
this.$refs.trustFile.value=null;
this.$refs.trustFile.value = null;
let element = document.getElementById("trustNm");
while (element.firstChild) {
element.removeChild(element.firstChild);
@@ -252,7 +263,7 @@ export default {
this.trustFile = null;
},
// 위임장
readWarrantFile(event){
readWarrantFile(event) {
const file = event.target.files[0];
// inner Html.
@@ -268,9 +279,9 @@ export default {
root.appendChild(button);
this.warrantFile = file;
},
delWarrantFile(event){
delWarrantFile(event) {
const file = event.target.files[0];
this.$refs.warrantFile.value=null;
this.$refs.warrantFile.value = null;
let element = document.getElementById("warrantNm");
while (element.firstChild) {
element.removeChild(element.firstChild);
@@ -278,7 +289,7 @@ export default {
this.warrantFile = null;
},
// 대리인
readDeputyFile(event){
readDeputyFile(event) {
const file = event.target.files[0];
// inner Html.
@@ -296,9 +307,9 @@ export default {
this.deputyFile = file
},
delDeputyFile(event){
delDeputyFile(event) {
const file = event.target.files[0];
this.$refs.deputyFile.value=null;
this.$refs.deputyFile.value = null;
let element = document.getElementById("deputyNm");
while (element.firstChild) {
element.removeChild(element.firstChild);
@@ -306,7 +317,7 @@ export default {
this.deputyFile = null;
},
// 재직
readTenureFile(event){
readTenureFile(event) {
const file = event.target.files[0];
// inner Html.
@@ -322,9 +333,9 @@ export default {
root.appendChild(button);
this.tenureFile = file;
},
delTenureFile(event){
delTenureFile(event) {
const file = event.target.files[0];
this.$refs.tenureFile.value=null;
this.$refs.tenureFile.value = null;
let element = document.getElementById("tenureNm");
while (element.firstChild) {
element.removeChild(element.firstChild);
@@ -332,7 +343,7 @@ export default {
this.tenureFile = null;
},
//사업자 등록증.
readBusinessFile(event){
readBusinessFile(event) {
const file = event.target.files[0];
// inner Html.
@@ -348,9 +359,9 @@ export default {
root.appendChild(button);
this.businessFile = file;
},
delBusinessFile(event){
delBusinessFile(event) {
const file = event.target.files[0];
this.$refs.businessFile.value=null;
this.$refs.businessFile.value = null;
let element = document.getElementById("businessNm");
while (element.firstChild) {
element.removeChild(element.firstChild);
@@ -358,7 +369,7 @@ export default {
this.businessFile = null;
},
//통신서비스 증명원
readCommunicationFile(event){
readCommunicationFile(event) {
const file = event.target.files[0];
// inner Html.
@@ -374,9 +385,9 @@ export default {
root.appendChild(button);
this.communicationFile = file;
},
delCommunicationFile(event){
delCommunicationFile(event) {
const file = event.target.files[0];
this.$refs.communicationFile.value=null;
this.$refs.communicationFile.value = null;
let element = document.getElementById("communicationNm");
while (element.firstChild) {
element.removeChild(element.firstChild);
@@ -384,7 +395,7 @@ export default {
this.communicationFile = null;
},
// 타사업자 등록증
readOtherBusinessFile(event){
readOtherBusinessFile(event) {
const file = event.target.files[0];
// inner Html.
@@ -400,16 +411,16 @@ export default {
root.appendChild(button);
this.otherBusinessFile = file;
},
delOtherBusinessFile(event){
delOtherBusinessFile(event) {
const file = event.target.files[0];
this.$refs.otherBusinessFile.value=null;
this.$refs.otherBusinessFile.value = null;
let element = document.getElementById("otherBusinessNm");
while (element.firstChild) {
element.removeChild(element.firstChild);
}
this.otherBusinessFile = null;
},
async saveSendNum(){
async saveSendNum() {
this.saveSendNums = []
@@ -418,7 +429,7 @@ export default {
sendNum: this.sendNum
})
if(this.numberInputs.length > 0){
if (this.numberInputs.length > 0) {
this.numberInputs.forEach(element =>
this.saveSendNums.push({
sendNm: element.sendNm,
@@ -429,9 +440,9 @@ export default {
this.doValidate();
// console.log(this.custSeq)
console.log(this.$data)
if(this.bizrAuthYn !== 'Y'){
if(this.nmineeDivCd === '01'){
// 사업자
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)
const result = response.data;
console.log(result)
@@ -439,7 +450,7 @@ export default {
this.toComplete()
}
}else if(this.nmineeDivCd === '02'){
} else if (this.nmineeDivCd === '02') {
const response = await sendNumMgtApi.insertNumber2(this.trustFile, this.warrantFile, this.deputyFile, this.tenureFile, this.otherBusinessFile, this.businessFile, this.adminId, this.custNm, this.bRegNo, this.nmineeDivCd, this.saveSendNums, this.bizrAuthYn, this.custSeq)
const result = response.data;
console.log(result)
@@ -448,7 +459,7 @@ export default {
}
}
}else{
} else {
const response = await sendNumMgtApi.insertNumber(this.adminId, this.custNm, this.bRegNo, this.nmineeDivCd, this.saveSendNums, this.bizrAuthYn, this.custSeq)
const result = response.data;
console.log(result)
@@ -457,17 +468,17 @@ export default {
}
}
},
doValidate(){
doValidate() {
if(this.isNull(this.adminId) || this.isNull(this.custNm) || this.isNull(this.bRegNo)){
if (this.isNull(this.adminId) || this.isNull(this.custNm) || this.isNull(this.bRegNo)) {
this.row.title = '발신번호 등록';
this.row.msg1 = '관리자ID를 조회 해주세요.';
this.getParent('NumberList').commonModalOpen(this.row)
// this.$refs.commmonModal2.alertModalOpen(this.row);
return false;
}
if(this.isNull(this.sendNm) || this.isNull(this.sendNum)){
if (this.isNull(this.sendNm) || this.isNull(this.sendNum)) {
this.row.title = '발신번호 등록';
this.row.msg1 = '발신번호명/발신번호를 입력해 주세요.';
this.$refs.commmonModal2.alertModalOpen(this.row);
@@ -480,7 +491,7 @@ export default {
// return false;
// }
},
toComplete(){
toComplete() {
this.getParent('numberList').$refs.table.reloadData();
this.numberRegPopClose();
},

View File

@@ -0,0 +1,183 @@
<template>
<!-- <div class="wrap bg-wrap"> -->
<div>
<div class="dimmed alertCommon" @click="alertModalCancel();"></div>
<div class="popup-wrap alertCommon">
<!-- 로그인실패: 확인 -->
<div class="popup alertCommon">
<div class="pop-head">
<h3 class="pop-tit">{{title}}</h3>
</div>
<div class="pop-cont">
<p>{{ msg1 }}</p>
<p v-if="msg2 !== ''">{{ msg2 }}</p>
<p v-if="msg3 !== ''">{{ msg3 }}</p>
<p v-if="msg4 !== ''">{{ msg4 }}</p>
</div>
<div class="popup-btn1">
<button class="btn-pcolor" @click="alertModalClose();">확인</button>
</div>
</div>
</div>
<div class="dimmed confirm" @click="confirmModalCancel();"></div>
<div class="popup-wrap confirm">
<!-- 수정 확인 -->
<div class="popup confirm">
<div class="pop-head">
<h3 class="pop-tit">{{title}}</h3>
</div>
<div class="pop-cont">
<p>{{ msg1 }}</p>
<p v-if="msg2 !== ''">{{ msg2 }}</p>
<p v-if="msg3 !== ''">{{ msg3 }}</p>
<p v-if="msg4 !== ''">{{ msg4 }}</p>
</div>
<div class="popup-btn2">
<button class="btn-pcolor" @click="confirmModalClose();">확인</button>
<button class="btn-default" @click="confirmModalCancel();">취소</button>
</div>
</div>
</div>
<div class="dimmed confirm2" @click="confirmModalCancel2();"></div>
<div class="popup-wrap confirm2">
<!-- 수정 확인 -->
<div class="popup confirm2">
<div class="pop-head">
<h3 class="popup-tit">{{title}}</h3>
</div>
<div class="pop-cont">
<p>{{ msg1 }}</p>
<p v-if="msg2 !== ''">{{ msg2 }}</p>
<p v-if="msg3 !== ''">{{ msg3 }}</p>
<p v-if="msg4 !== ''">{{ msg4 }}</p>
</div>
<div class="popup-btn2">
<button class="btn-pcolor" @click="confirmModalClose2();">확인</button>
<button class="btn-default" @click="confirmModalCancel2();">취소</button>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "confirm",
data(){
return{
row:{},
title:'',
msg1: '',
msg2: '',
msg3: '',
msg4: '',
}
},
methods :{
alertModalOpen(props){
console.log("@@@@@@@@@@")
console.log(props)
var dimmed = document.getElementsByClassName('alertCommon');
for(var i = 0; i < dimmed.length; i++){
dimmed[i].style.display = 'block';
}
this.title = props.title;
this.msg1 = props.msg1;
this.msg2 = props.msg2;
this.msg3 = props.msg3;
this.msg4 = props.msg4;
},
alertModalClose(){
var dimmed = document.getElementsByClassName('alertCommon');
for(var i = 0; i < dimmed.length; i++){
dimmed[i].style.display = 'none';
}
},
alertModalCancel(){
var dimmed = document.getElementsByClassName('alertCommon');
for(var i = 0; i < dimmed.length; i++){
dimmed[i].style.display = 'none';
}
},
// 모달 오픈
confirmModalOpen(props){
var dimmed = document.getElementsByClassName('confirm');
for(var i = 0; i < dimmed.length; i++){
dimmed[i].style.display = 'block';
}
this.title = props.title;
this.msg1 = props.msg1;
this.msg2 = props.msg2;
this.msg3 = props.msg3;
this.msg4 = props.msg4;
},
confirmModalOpen2(props){
var dimmed = document.getElementsByClassName('confirm2');
for(var i = 0; i < dimmed.length; i++){
dimmed[i].style.display = 'block';
}
this.title = props.title;
this.msg1 = props.msg1;
this.msg2 = props.msg2;
this.msg3 = props.msg3;
this.msg4 = props.msg4;
},
// 모달 끄기(ok)
confirmModalClose(){
var dimmed = document.getElementsByClassName('confirm');
for(var i = 0; i < dimmed.length; i++){
dimmed[i].style.display = 'none';
}
this.row.result = true;
// 부모 함수 호출.
this.$parent.confirmCalbackFnc(this.row);
},
// 모달 끄기(ok)
confirmModalClose2(){
var dimmed = document.getElementsByClassName('confirm2');
for(var i = 0; i < dimmed.length; i++){
dimmed[i].style.display = 'none';
}
this.row.result = true;
// 부모 함수 호출.
this.$parent.confirmCalbackFnc(this.row);
},
// 모달 끄기(취소)
confirmModalCancel(){
var dimmed = document.getElementsByClassName('confirm');
for(var i = 0; i < dimmed.length; i++){
dimmed[i].style.display = 'none';
}
this.row.result = false;
// 부모 함수 호출.
this.$parent.confirmCalbackFnc(this.row);
},
// 모달 끄기(취소)
confirmModalCancel2(){
var dimmed = document.getElementsByClassName('confirm2');
for(var i = 0; i < dimmed.length; i++){
dimmed[i].style.display = 'none';
}
this.row.result = false;
// 부모 함수 호출.
this.$parent.confirmCalbackFnc(this.row);
},
}
}
</script>
<style>
.popup-btn-wrap {width: 500px; margin: auto; padding: 100px 0;}
.popup-btn-wrap button {width: 100%; margin-bottom: 10px; height: 50px; border-radius: 5px; box-shadow: none; border: 1px solid #000; }
.popup-btn-wrap button:hover {background: #000; color: #fff;}
</style>

View File

@@ -6,38 +6,38 @@
<h3 class="title">발신번호 승인</h3>
<p class="breadcrumb">발신번호관리 &gt; 발신번호 승인</p>
</div>
<form autocomplete="off" class="search_form">
<div class="search_wrap">
<div class="group">
<div class="select_box">
<label for="right" class="label">상태</label>
<select name="" id="" v-model="searchType1" @keyup.enter="search">
<option value="">전체</option>
<option value="01">승인대기</option>
<option value="02">처리완료</option>
</select>
</div>
<div class="input_box">
<label for="right" class="label">사업자번호</label>
<input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.searchText1" @keyup.enter="search"/>
</div>
<div class="select_box id">
<label for="right" class="label">명의자 구분</label>
<select name="" id="" v-model="searchType2" @keyup.enter="search">
<option value="">전체</option>
<option value="01">사업자</option>
<option value="02">타사업자</option>
</select>
</div>
<div class="input_box">
<label for="right" class="label">고객사명</label>
<input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.searchText2" @keyup.enter="search"/>
</div>
<button type="button" class="button grey" @click="search">조회</button>
<div class="search_wrap">
<div class="group">
<div class="select_box">
<label for="right" class="label">상태</label>
<select name="" id="" v-model="searchType1" @keyup.enter="search">
<option value="">전체</option>
<option value="01">승인대기</option>
<option value="02">처리완료</option>
</select>
</div>
<div class="input_box">
<label for="right" class="label">사업자번호</label>
<input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.searchText1"
@keypress="onlyNum" @input="onlyNum" maxlength="10" @keyup.enter="search"/>
</div>
<div class="select_box id">
<label for="right" class="label">명의자 구분</label>
<select name="" id="" v-model="searchType2" @keyup.enter="search">
<option value="">전체</option>
<option value="01">사업자</option>
<option value="02">타사업자</option>
</select>
</div>
<div class="input_box">
<label for="right" class="label">고객사명</label>
<input class="search-box" type="text" id="search" placeholder="검색어 입력"
v-model.trim="grid.params.searchText2"
@keyup.enter="search" maxlength="100"/>
</div>
<button type="button" class="button grey" @click="search">조회</button>
</div>
</form>
</div>
<div class="info">
<div class="count"> <span>{{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }}</span>
<div class="select_box NumberSe">
@@ -65,7 +65,7 @@
></custom-grid>
</div>
<appr-detail-pop ref="apprDetailPop" />
<appr-detail-pop ref="apprDetailPop"/>
</div>
</div>
@@ -74,26 +74,7 @@
<script>
import customGrid from '@/components/CustomGrid';
import ApprDetailPop from "@/modules/sendNumMgt/components/ApprDetailPop";
class customBRegNo {
constructor(props) {
this.props = props;
const el = document.createElement('td');
var bizrno = String(props.colValue);
el.innerText= bizrno;
if(bizrno.length == 10){
el.innerText= bizrno.substring(0,3)+'-'+bizrno.substring(3,5)+'-'+bizrno.substring(5,10)
}
this.el = el;
}
getElement() {
return this.el;
}
addEvent(selEl) {
}
}
import {utils_mixin, chkPattern2} from '../service/mixins';
class CustomATagRenderer {
constructor(props) {
@@ -101,7 +82,7 @@ class CustomATagRenderer {
const el = document.createElement('a');
el.href = 'javascript:void(0);';
el.className = 'btn_text';
el.innerText= String(props.colValue)
el.innerText = String(props.colValue)
this.el = el;
}
@@ -111,7 +92,7 @@ class CustomATagRenderer {
addEvent(selEl) {
selEl.addEventListener("click", () => {
const { callback } = this.props["cgrido" + this.props.colName].options;
const {callback} = this.props["cgrido" + this.props.colName].options;
callback(this.props);
});
}
@@ -119,6 +100,7 @@ class CustomATagRenderer {
export default {
name: 'apprList',
mixins: [utils_mixin, chkPattern2],
data() {
return {
row: {},
@@ -128,8 +110,8 @@ export default {
totalItems: 0,
// 테이블 리스트 데이터
perPageCnt: 50,
searchType1:'',
searchType2:'',
searchType1: '',
searchType2: '',
grid: {
url: '/api/v1/bo/sendNumMgt/apprList',
perPage: 50,
@@ -138,26 +120,27 @@ export default {
initialRequest: false,
addCls: 'box_OFvis',
columns: [
{ name: 'no', header: 'NO', align: 'center', width: '5%' },
{ name: 'regReqNo', hidden: true },
{ name: 'regDt', header: '요청일', align: 'center', width: '12%' },
{ name: 'adminId', header: '관리자ID', align: 'center', width: '10%'},
{ name: 'bizrno', header: '사업자번호', align: 'center', width: '13%', renderer: {type: customBRegNo}},
{ name: 'nmineeDivCd', header: '명의자 구분', align: 'center', width: '10%'},
{ name: 'custNm', header: '고객사명', align: 'center', width: '10%'},
{ name: 'reqCnt', header: '요청건수', align: 'center', width: '6%', renderer: {
{name: 'no', header: 'NO', align: 'center', width: '5%'},
{name: 'regReqNo', hidden: true},
{name: 'regDt', header: '요청일', align: 'center', width: '12%'},
{name: 'adminId', header: '관리자ID', align: 'center', width: '10%'},
{name: 'bizrno', header: '사업자번호', align: 'center', width: '13%'},
{name: 'nmineeDivCd', header: '명의자 구분', align: 'center', width: '10%'},
{name: 'custNm', header: '고객사명', align: 'center', width: '10%'},
{
name: 'reqCnt', header: '요청건수', align: 'center', width: '6%', renderer: {
type: CustomATagRenderer
,options: {
, options: {
callback: this.apprDetail,
}
}
},
{ name: 'apvCnt', header: '승인건수', align: 'center', width: '6%'},
{ name: 'rejtCnt', header: '반려건수', align: 'center', width: '6%'},
{ name: 'reqSttusCd', header: '상태', align: 'center', width: '10%'},
{ name: 'cmpltDt', header: '완료일', width: '12%' }
{name: 'apvCnt', header: '승인건수', align: 'center', width: '6%'},
{name: 'rejtCnt', header: '반려건수', align: 'center', width: '6%'},
{name: 'reqSttusCd', header: '상태', align: 'center', width: '10%'},
{name: 'cmpltDt', header: '완료일', width: '12%'}
],
noDataStr: '검색 결과가 없습니다.',
noDataStr: '검색 결과가 없습니다.',
params: {
searchType1: '',
searchType2: '',
@@ -165,14 +148,14 @@ export default {
searchText2: '',
},
excelHeader: []
}
}
};
},
},
components: {
customGrid: customGrid,
ApprDetailPop
},
created(){
created() {
},
destroyed() {
this.$store.commit('searchcondition/updateSearchCondition', {
@@ -191,7 +174,7 @@ export default {
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
let isKeep = false;
if(getCondition) {
if (getCondition) {
this.grid.pagePerRows = getCondition.perPage;
this.grid.params = getCondition.params;
page = getCondition.page;
@@ -200,7 +183,7 @@ export default {
this.search(isKeep);
},
methods: {
search: function(isKeep) {
search: function (isKeep) {
console.log(this.grid.params);
this.grid.params.searchType1 = this.searchType1
this.grid.params.searchType2 = this.searchType2
@@ -208,7 +191,7 @@ export default {
this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData();
},
sendStoreData: function() {
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP);
this.$store.commit('searchcondition/updateSearchCondition', {
@@ -224,7 +207,7 @@ export default {
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
//console.log("getCondition : "+ getCondition.perPage);
},
apprDetail(props){
apprDetail(props) {
console.log(props)
this.$refs.apprDetailPop.apprDetailPopOpen(props)
}

View File

@@ -1,99 +1,99 @@
<template>
<div class="contents">
<div class="contents_wrap">
<div class="top_wrap">
<h3 class="title">문자 발신 번호 목록 조회</h3>
<p class="breadcrumb">발신번호관리 &gt; 문자 발신 번호 목록 조회</p>
</div>
<form autocomplete="off" class="search_form">
<div class="search_wrap">
<div class="group">
<div class="select_box">
<label for="right" class="label">등록방법</label>
<select name="" id="sttusCd" v-model="searchType5" @keyup.enter="search">
<option value="">전체</option>
<option value="01">서류심사</option>
<option value="02">본인인증</option>
</select>
</div>
<div class="select_box">
<label for="right" class="label">승인상태</label>
<select name="" id="sttusCd" v-model="searchType1" @keyup.enter="search">
<option value="">전체</option>
<option value="01">승인대기</option>
<option value="02">승인완료</option>
<option value="03">반려</option>
</select>
</div>
<div class="select_box">
<label for="right" class="label">명의자 구분</label>
<select name="" id="nmineeDivCd" v-model="searchType2" @keyup.enter="search">
<option value="">전체</option>
<option value="01">사업자</option>
<option value="02">타사업자</option>
</select>
</div>
<div class="select_box">
<label for="right" class="label">인입채널</label>
<select name="" id="inchDivCd" v-model="searchType3" @keyup.enter="search">
<option value="">전체</option>
<option value="01">홈페이지</option>
<option value="02">어드민</option>
</select>
</div>
<div class="select_box id">
<label for="right" class="label">상세검색</label>
<select name="" id="category" v-model="searchType4" @keyup.enter="search">
<option value="regNo">발신번호</option>
<option value="bregNo">사업자번호</option>
<option value="custNm">고객사명</option>
</select>
</div>
<div class="input_box">
<input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.searchText1" v-on:keydown.enter.prevent="search"/>
</div>
<button type="button" class="button grey" @click="search">조회</button>
</div>
</div>
</form>
<div class="info">
<div class="count"> <span>{{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }}</span>
<div class="select_box NumberSe">
<select name="" id="perPage" v-model="perPageCnt" @keyup.enter="search">
<option value="20">20</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</div>
</div>
<div class="button_group">
<button type="button" class="button blue add" @click="numberRegPopOpen();">등록</button>
<button type="button" class="button white del" @click="deleteNumber()">삭제</button>
</div>
</div>
<div class="table">
<custom-grid
ref="table"
:totalItems="'totalItems'"
:url="grid.url"
:pagePerRows="grid.pagePerRows"
:initialRequest="grid.initialRequest"
:pagination="grid.pagination"
:isCheckbox="grid.isCheckbox"
:columns="grid.columns"
:noDataStr="grid.noDataStr"
:addCls="grid.addCls"
:header="grid.headder"
></custom-grid>
</div>
<number-reg-pop ref="numberRegPop"> </number-reg-pop>
<number-detail-pop ref="numberDetailPop"/>
<common-modal ref="commmonModal"></common-modal>
<div class="contents">
<div class="contents_wrap">
<div class="top_wrap">
<h3 class="title">문자 발신 번호 목록 조회</h3>
<p class="breadcrumb">발신번호관리 &gt; 문자 발신 번호 목록 조회</p>
</div>
</div>
<div class="search_wrap">
<div class="group">
<div class="select_box">
<label for="right" class="label">등록방법</label>
<select name="" id="sttusCd" v-model="searchType5" @keyup.enter="search">
<option value="">전체</option>
<option value="01">서류심사</option>
<option value="02">본인인증</option>
</select>
</div>
<div class="select_box">
<label for="right" class="label">승인상태</label>
<select name="" id="sttusCd" v-model="searchType1" @keyup.enter="search">
<option value="">전체</option>
<option value="01">승인대기</option>
<option value="02">승인완료</option>
<option value="03">반려</option>
</select>
</div>
<div class="select_box">
<label for="right" class="label">명의자 구분</label>
<select name="" id="nmineeDivCd" v-model="searchType2" @keyup.enter="search">
<option value="">전체</option>
<option value="01">사업자</option>
<option value="02">타사업자</option>
</select>
</div>
<div class="select_box">
<label for="right" class="label">인입채널</label>
<select name="" id="inchDivCd" v-model="searchType3" @keyup.enter="search">
<option value="">전체</option>
<option value="01">홈페이지</option>
<option value="02">어드민</option>
</select>
</div>
<div class="select_box id">
<label for="right" class="label">상세검색</label>
<select name="" id="category" v-model="searchType4" @keyup.enter="search">
<option value="regNo">발신번호</option>
<option value="bregNo">사업자번호</option>
<option value="custNm">고객사명</option>
</select>
</div>
<div class="input_box">
<input class="search-box" type="text" id="search" placeholder="검색어 입력"
v-model.trim="grid.params.searchText1"
maxlength="100" @keyup.enter="search"/>
</div>
<button type="button" class="button grey" @click="search">조회</button>
</div>
</div>
<div class="info">
<div class="count"> <span>{{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }}</span>
<div class="select_box NumberSe">
<select name="" id="perPage" v-model="perPageCnt" @keyup.enter="search">
<option value="20">20</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</div>
</div>
<div class="button_group">
<button type="button" class="button blue add" @click="numberRegPopOpen();">등록</button>
<button type="button" class="button white del" @click="deleteNumber()">삭제</button>
</div>
</div>
<div class="table">
<custom-grid
ref="table"
:totalItems="'totalItems'"
:url="grid.url"
:pagePerRows="grid.pagePerRows"
:initialRequest="grid.initialRequest"
:pagination="grid.pagination"
:isCheckbox="grid.isCheckbox"
:columns="grid.columns"
:noDataStr="grid.noDataStr"
:addCls="grid.addCls"
:header="grid.headder"
></custom-grid>
</div>
<number-reg-pop ref="numberRegPop"></number-reg-pop>
<number-detail-pop ref="numberDetailPop"/>
<common-modal ref="commmonModal"></common-modal>
</div>
</div>
</template>
<script>
@@ -111,7 +111,7 @@ class CustomATagRenderer {
const el = document.createElement('a');
el.href = 'javascript:void(0);';
el.className = 'btn_text';
el.innerText= String(props.colValue)
el.innerText = String(props.colValue)
this.el = el;
}
@@ -121,7 +121,7 @@ class CustomATagRenderer {
addEvent(selEl) {
selEl.addEventListener("click", () => {
const { callback } = this.props["cgrido" + this.props.colName].options;
const {callback} = this.props["cgrido" + this.props.colName].options;
callback(this.props);
});
}
@@ -131,16 +131,16 @@ export default {
name: 'numberList',
data() {
return {
row: {},
row: {},
authType: [],
statType: [],
statType: [],
cate2Code: "",
totalItems: 0,
searchType5:'',
searchType4:'regNo',
searchType3:'',
searchType2:'',
searchType1:'',
searchType5: '',
searchType4: 'regNo',
searchType3: '',
searchType2: '',
searchType1: '',
// 테이블 리스트 데이터
perPageCnt: 50,
@@ -153,94 +153,96 @@ export default {
addCls: 'box_OFvis',
header: [
[
{ header: 'NO', childNames: [] },
{ header: '고객사명', childNames: [] },
{ header: '관리자ID', childNames: [] },
{ header: '등록자ID', childNames: [] },
{ header: '사업자번호', childNames: [] },
{ header: '명의자 구분', childNames: [] },
{ header: '인입채널', childNames: [] },
{ header: '발신번호', childNames: [] },
{ header: '승인상태', childNames: [] },
{ header: '등록일자', childNames: [] }
{header: 'NO', childNames: []},
{header: '고객사명', childNames: []},
{header: '관리자ID', childNames: []},
{header: '등록자ID', childNames: []},
{header: '사업자번호', childNames: []},
{header: '명의자 구분', childNames: []},
{header: '인입채널', childNames: []},
{header: '발신번호', childNames: []},
{header: '승인상태', childNames: []},
{header: '등록일자', childNames: []}
]
],
columns: [
{ name: 'no', header: 'NO', align: 'center', width: '5%' },
{ name: 'regReqNo', hidden: true},
{ name: 'bizrAuthYn', hidden: true},
{ name: 'custNm', header: '고객사명', align: 'center', width: '5%' },
{ name: 'adminId', header: '관리자ID', align: 'center', width: '10%' },
{ name: 'register', header: '등록자ID', align: 'center', width: '10%' },
{ name: 'bregNo', header: '사업자번호', align: 'center', width: '10%'},
{ name: 'nmineeDivCd', header: '명의자 구분', align: 'center', width: '10%'},
{ name: 'inchDivCd', header: '인입채널', align: 'center', width: '10%'},
{ name: 'sndrno', header: '발신번호', align: 'center', width: '10%', renderer: {
columns: [
{name: 'no', header: 'NO', align: 'center', width: '5%'},
{name: 'regReqNo', hidden: true},
{name: 'bizrAuthYn', hidden: true},
{name: 'custNm', header: '고객사명', align: 'center', width: '5%'},
{name: 'adminId', header: '관리자ID', align: 'center', width: '10%'},
{name: 'register', header: '등록자ID', align: 'center', width: '10%'},
{name: 'bregNo', header: '사업자번호', align: 'center', width: '10%'},
{name: 'nmineeDivCd', header: '명의자 구분', align: 'center', width: '10%'},
{name: 'inchDivCd', header: '인입채널', align: 'center', width: '10%'},
{
name: 'sndrno', header: '발신번호', align: 'center', width: '10%', renderer: {
type: CustomATagRenderer
,options: {
, options: {
callback: this.numberDetail,
}
}
},
{ name: 'sttusCd', header: '승인상태', align: 'center', width: '10%'},
{ name: 'regDt', header: '등록일자', width: '10%', cls: 'td_line' }
{name: 'sttusCd', header: '승인상태', align: 'center', width: '10%'},
{name: 'regDt', header: '등록일자', width: '10%', cls: 'td_line'}
],
noDataStr: '검색 결과가 없습니다.',
params: {
searchType1: '',
searchType2: '',
searchType3: '',
searchType4: '',
searchType5: '',
searchText1: '',
pagePerRows: '',
page: ''
noDataStr: '검색 결과가 없습니다.',
params: {
searchType1: '',
searchType2: '',
searchType3: '',
searchType4: '',
searchType5: '',
searchText1: '',
pagePerRows: '',
page: ''
},
excelHeader: []
}
}
};
},
},
components: {
customGrid: customGrid,
NumberRegPop,
NumberDetailPop,
commonModal,
},
created(){
created() {
// const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
},
destroyed() {
this.$store.commit('searchcondition/updateSearchCondition', {
page: 1,
perPage: 50,
params: {
searchType1: '',
searchType2: '',
searchType3: '',
searchType4: '',
searchText1: '',
pagePerRows: '',
page: ''}
});
this.$store.commit('searchcondition/updateSearchCondition', {
page: 1,
perPage: 50,
params: {
searchType1: '',
searchType2: '',
searchType3: '',
searchType4: '',
searchText1: '',
pagePerRows: '',
page: ''
}
});
},
mounted() {
let page = 1;
// 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false;
if (getCondition) {
this.grid.pagePerRows = getCondition.perPage;
this.grid.params = getCondition.params;
this.grid.params = getCondition.params;
page = getCondition.page;
isKeep = true;
}
this.search(isKeep);
this.search(isKeep);
},
methods: {
search: function(isKeep) {
search: function (isKeep) {
console.log(this.grid.params);
this.grid.params.searchType1 = this.searchType1
this.grid.params.searchType2 = this.searchType2
@@ -251,94 +253,94 @@ export default {
this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData();
},
sendStoreData: function() {
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
page: getP._currentPage,
perPage: this.perPageCnt,
params: this.grid.params
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
},
numberRegPopOpen: function(){
numberRegPopOpen: function () {
this.$refs.numberRegPop.numberRegPopopen();
},
numberDetail(props){
numberDetail(props) {
console.log(props)
this.$refs.numberDetailPop.numberDetailPopOpen(props);
},
commonModalOpen(row){
commonModalOpen(row) {
this.$refs.commmonModal.alertModalOpen(row);
},
deleteNumber(){
if(this.doValidate()){
this.row.title ='문자발신번호 관리';
this.row.msg1 ='삭제 하시겠습니까?'
this.$refs.commmonModal.confirmModalOpen2(this.row);
deleteNumber() {
if (this.doValidate()) {
this.row.title = '문자발신번호 관리';
this.row.msg1 = '삭제 하시겠습니까?'
this.$refs.commmonModal.confirmModalOpen2(this.row);
}
},
async numberDelete(){
try {
let response = await sendNumMgtApi.deleteNumber(this.row);
const result = response.data;
if (result != null && result.retCode == "0000") {
this.$refs.table.reloadData();
return;
} else {
this.row.title = '문자발신번호 관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
}
} catch(err) {
async numberDelete() {
try {
let response = await sendNumMgtApi.deleteNumber(this.row);
const result = response.data;
if (result != null && result.retCode == "0000") {
this.$refs.table.reloadData();
return;
} else {
this.row.title = '문자발신번호 관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
}
}
} catch (err) {
this.row.title = '문자발신번호 관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
}
},
doValidate(){ //로우데이터 삭제하도록 수정
doValidate() { //로우데이터 삭제하도록 수정
console.log("totalItems >> " + this.totalItems);
if(this.totalItems == 0){
if (this.totalItems == 0) {
this.row.title = '문자발신번호 관리';
this.row.msg1 = '검색 결과가 없습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
return false;
}
var chkList = this.$refs.table.checkedElementDatas();
if(chkList.length == 0){
if (chkList.length == 0) {
this.row.title = '문자발신번호 관리';
this.row.msg1 = '삭제대상을 체크를 해주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
return false;
}
//const param = chkList.map((row)=>({regReqNo:row.regReqNo} ));
const param = chkList.map((row)=>({seqNo:row.seqNo} ));
const param = chkList.map((row) => ({seqNo: row.seqNo}));
console.log(param)
this.row.list = param;
console.log(this.row);
return true;
},
confirmCalbackFnc(props){
confirmCalbackFnc(props) {
console.log(props)
if(props.result){
if (props.result) {
this.numberDelete();
}
}
},
},
// beforeRouteLeave(to, from, next) {
//
// const getP = this.$refs.table.getPagination();
// console.log("==========getP : " + getP._currentPage);
// this.$store.commit('searchcondition/updateSearchCondition', {
// page: getP._currentPage,
// perPage: this.perPageCnt,
// params: this.grid.params
// });
// // 라우트 하기전 실행
// next();
// const getP = this.$refs.table.getPagination();
// console.log("==========getP : " + getP._currentPage);
// this.$store.commit('searchcondition/updateSearchCondition', {
// page: getP._currentPage,
// perPage: this.perPageCnt,
// params: this.grid.params
// });
// // 라우트 하기전 실행
// next();
// }
};
</script>

View File

@@ -1,101 +1,83 @@
<template>
<div class="contents">
<div class="contents_wrap">
<div class="top_wrap">
<h3 class="title">발신프로필관리</h3>
<p class="breadcrumb">발신번호관리 &gt; 발신프로필관리</p>
</div>
<form autocomplete="off" class="search_form">
<div class="search_wrap">
<div class="select_box">
<label for="stat" class="label">상태</label>
<select name="" id="stat" v-model="searchType1" @keyup="search">
<option value="">전체</option>
<option value="A">사용</option>
<option value="N">미사용</option>
<option value="H">휴면</option>
<option value="D">삭제</option>
</select>
</div>
<div class="select_box id">
<label for="searchType" class="label">상세검색</label>
<select name="" id="searchType" v-model="searchType2" @keyup="search">
<option value="custNm">고객사명</option>
<option value="bregNo">사업자번호</option>
<option value="sendProfile">발신프로필</option>
</select>
</div>
<div class="input_box id">
<label for="search" class="label">검색어</label>
<input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.searchText1" v-on:keydown.enter.prevent="search" />
</div>
<button type="button" class="button grey" @click="search">조회</button>
</div>
</form>
<div class="info">
<div class="count"> <span> {{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')}} </span>
<div class="select_box NumberSe">
<select name="" id="perpage" v-model="grid.pagePerRows" @keyup.enter="search">
<option value="20">20</option>
<option value="50" selected>50</option>
<option value="100">100</option>
</select>
</div>
</div>
</div>
<div class="table">
<custom-grid
ref="table"
:totalItems="'totalItems'"
:url="grid.url"
:pagePerRows="grid.pagePerRows"
:initialRequest="grid.pagination"
:pagination="grid.pagination"
:isCheckbox="grid.isCheckbox"
:columns="grid.columns"
:noDataStr="grid.noDataStr"
:addCls="grid.addCls"
:header="grid.headder">
</custom-grid>
</div>
<div class="contents">
<div class="contents_wrap">
<div class="top_wrap">
<h3 class="title">발신프로필관리</h3>
<p class="breadcrumb">발신번호관리 &gt; 발신프로필관리</p>
</div>
<div class="search_wrap">
<div class="select_box">
<label for="stat" class="label">상태</label>
<select name="" id="stat" v-model="searchType1" @keyup="search">
<option value="">전체</option>
<option value="A">사용</option>
<option value="N">사용</option>
<option value="H">휴면</option>
<option value="D">삭제</option>
</select>
</div>
</div>
<div class="select_box id">
<label for="searchType" class="label">상세검색</label>
<select name="" id="searchType" v-model="searchType2" @keyup="search">
<option value="custNm">고객사명</option>
<option value="bregNo">사업자번호</option>
<option value="sendProfile">발신프로필</option>
</select>
</div>
<div class="input_box id">
<label for="search" class="label">검색어</label>
<input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model.trim="grid.params.searchText1"
maxlength="100" @keyup="search"/>
</div>
<button type="button" class="button grey" @click="search">조회</button>
</div>
<div class="info">
<div class="count"> <span> {{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }} </span>
<div class="select_box NumberSe">
<select name="" id="perpage" v-model="grid.pagePerRows" @keyup.enter="search">
<option value="20">20</option>
<option value="50" selected>50</option>
<option value="100">100</option>
</select>
</div>
</div>
</div>
<div class="table">
<custom-grid
ref="table"
:totalItems="'totalItems'"
:url="grid.url"
:pagePerRows="grid.pagePerRows"
:initialRequest="grid.pagination"
:pagination="grid.pagination"
:isCheckbox="grid.isCheckbox"
:columns="grid.columns"
:noDataStr="grid.noDataStr"
:addCls="grid.addCls"
:header="grid.headder">
</custom-grid>
</div>
</div>
</div>
</template>
<script>
import customGrid from '@/components/CustomGrid';
//import api from '../service/api';
class customBRegNo {
constructor(props) {
this.props = props;
const el = document.createElement('td');
var bregNo = String(props.colValue);
el.innerText= bregNo;
if(bregNo.length == 10){
el.innerText= bregNo.substring(0,3)+'-'+bregNo.substring(3,5)+'-'+bregNo.substring(5,10)
}
this.el = el;
}
getElement() {
return this.el;
}
addEvent(selEl) {
}
}
export default {
name: 'profileList',
data() {
return {
row: {},
row: {},
authType: [],
statType: [],
statType: [],
cate2Code: "",
totalItems: 0,
searchType1:'',
searchType2:'custNm',
searchType1: '',
searchType2: 'custNm',
// 테이블 리스트 데이터
perPageCnt: 20,
grid: {
@@ -107,50 +89,50 @@ export default {
addCls: 'box_OFvis',
header: [
[
{ header: 'NO', childNames: [] },
{ header: '고객사명', childNames: [] },
{ header: '사업자번호', childNames: [] },
{ header: '발신프로필', childNames: [] },
{ header: '발신프로필key', childNames: [] },
{ header: '상태', childNames: [] },
{ header: '등록일', childNames: [] },
{header: 'NO', childNames: []},
{header: '고객사명', childNames: []},
{header: '사업자번호', childNames: []},
{header: '발신프로필', childNames: []},
{header: '발신프로필key', childNames: []},
{header: '상태', childNames: []},
{header: '등록일', childNames: []},
]
],
columns: [
{ name: 'no', header: 'NO', align: 'center', width: 50 },
{ name: 'custNm', header: '고객사명', align: 'center', width: 200 },
{ name: 'bregNo', header: '사업자번호', align: 'center', width: 100, renderer: {type: customBRegNo}},
{ name: 'sendProfile', header: '발신프로필', align: 'center', width: 100},
{ name: 'sendProfileKey', header: '발신프로필key', align: 'center', width: 100},
{ name: 'stat', header: '상태', width: 100, cls: 'td_line' },
{ name: 'regDt', header: '등록일', align: 'center', width: 150},
columns: [
{name: 'no', header: 'NO', align: 'center', width: 50},
{name: 'custNm', header: '고객사명', align: 'center', width: 200},
{name: 'bregNo', header: '사업자번호', align: 'center', width: 100},
{name: 'sendProfile', header: '발신프로필', align: 'center', width: 100},
{name: 'sendProfileKey', header: '발신프로필key', align: 'center', width: 100},
{name: 'stat', header: '상태', width: 100, cls: 'td_line'},
{name: 'regDt', header: '등록일', align: 'center', width: 150},
],
noDataStr: '검색 결과가 없습니다.',
params: {
noDataStr: '검색 결과가 없습니다.',
params: {
searchType1: '',
searchType2: 'custNm',
searchText1: ''
},
},
excelHeader: []
}
}
};
},
},
components: {
customGrid: customGrid,
},
destroyed() {
this.$store.commit('searchcondition/updateSearchCondition', {
page: 1,
perPage: 50,
params: {
searchType1: '',
searchType2: '',
searchText1: ''
}
});
},
created(){
destroyed() {
this.$store.commit('searchcondition/updateSearchCondition', {
page: 1,
perPage: 50,
params: {
searchType1: '',
searchType2: '',
searchText1: ''
}
});
},
created() {
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
},
@@ -159,7 +141,7 @@ export default {
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
let isKeep = false;
if(getCondition) {
if (getCondition) {
this.grid.pagePerRows = getCondition.perPage;
this.grid.params = getCondition.params;
page = getCondition.page;
@@ -168,42 +150,42 @@ export default {
this.search(isKeep);
},
methods: {
search: function(isKeep) {
search: function (isKeep) {
console.log(this.grid.params);
this.grid.params.searchType1 = this.searchType1
this.grid.params.searchType2 = this.searchType2
this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData();
},
sendStoreData: function() {
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
page: getP._currentPage,
perPage: this.perPageCnt,
params: {
searchType1: '',
searchType2: '',
searchText1: ''
}
}
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
//console.log("getCondition : "+ getCondition.perPage);
}
},
beforeRouteLeave(to, from, next) {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: this.grid.params
});
// 라우트 하기전 실행
next();
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: this.grid.params
});
// 라우트 하기전 실행
next();
}
};
</script>