로그인 관련 / 메뉴 링크 추가 / 홈페이지 로그인 적용

This commit is contained in:
kimre
2022-07-08 14:07:33 +09:00
parent 3d05b45299
commit b2ff509948
73 changed files with 1251 additions and 668 deletions

View File

@@ -20,13 +20,18 @@
<th>발송타입</th>
<td v-if="code === null || code === ''">
<div v:class="select_box">
<select name="" id="right" v-model.trim="sndblckTpCd" ref="sndblckTpCd">
<option v-for="(option, i) in tpType"
:value="sndblckTpCd"
v-bind:key="i"
>
<select name="" id="right" v-model.trim="sndblckTpCd" ref="sndblckTpCd" @keyup.enter="search">
<option v-for="(option, i) in tpType" :value="option.code" v-bind:key="i">
{{ option.codeNm }}
</option>
<!--
<option v-for="(option, i) in tpType"
:v-bind:value="option.grpCd"
v-bind:key="i"
:selected="code === option.grpCd"
>
{{ option.codeNm }}
</option> -->
<!-- <option value="">문자</option>
<option value="">RCS</option> -->
</select>
@@ -36,9 +41,9 @@
<tr>
<th>차단사유</th>
<td>
<div>
<div>
<select name="" id="" v-model.trim="blckRsnCd" ref="blckRsnCd">
<option v-for="(option, i) in rsnType" :value="blckRsnCd" v-bind:key="i">
<option v-for="(option, i) in rsnType" :value="option.code" v-bind:key="i">
{{ option.codeNm }}
</option>
</select>
@@ -47,7 +52,7 @@
</tr>
<tr>
<th>메모</th>
<td class="sender"><textarea class="memo_text" v-model.trim="meno" ref="meno"></textarea></td>
<td class="sender"><textarea class="memo_text" v-model.trim="meno" ref="meno" @input="memoLimitByte()"></textarea></td>
</tr>
</tbody>
</table>
@@ -80,11 +85,12 @@ export default {
rsnType: [],
tpType: [],
blckSndrno: '',
sndblckTpCd: '',
blckRsnCd: '',
sndblckTpCd: '01',
blckRsnCd: '01',
meno: '',
code:"",
LINE_FEED : 10, // '\n',
maxByte: 2000,
// params: {
// 'blckSndrno' : ''
// ,'sndblckTpCd' : '01'
@@ -94,13 +100,16 @@ export default {
}
},
create(){
// this.setCodeDate();
this.setCodeDate();
this.formReset();
},
components: {
commonModal,
ValidationConfirmPopup
},
mounted(){
//this.sndblckTpCd = '01'
},
components: {
commonModal,
ValidationConfirmPopup
},
methods :{
//모달 띄우기
ModalOpen(){
@@ -124,12 +133,19 @@ export default {
},
// 저장 후 부모창 호출
toComplete(){z
toComplete(){
this.$parent.$refs.table.reloadData();
this.ModalClose();
},
async doInsert(){
// if(this.doValidate() && this.regisConfirm()){
this.row.blckSndrno = this.blckSndrno;
this.row.sndblckTpCd = this.sndblckTpCd;
this.row.blckRsnCd = this.blckRsnCd;
this.row.meno = this.meno;
this.regId = 'admin';
console.log(this.row);
try {
const response = await riskMgtApi.insertIntrcp(this.row);
const result = response.data;
@@ -137,8 +153,8 @@ export default {
this.row.title = '발신번호 차단';
this.row.msg1 = '성공 하였습니다.';
this.$parent.alertInsert(this.row);
this.toComplete();
}
this.toComplete();
} catch(err) {
console.log(err);
this.row.title = '발신번호 차단';
@@ -188,7 +204,45 @@ export default {
if(this.doValidate()){
this.$refs.ValidationConfirmPopup.confirmInsertOpen();
}
},
},
// 바이트길이 구하기
getByteLength: function (decimal) {
return (decimal >> 7) || (this.LINE_FEED === decimal) ? 2 : 1
},
getByte: function (str) {
return str
.split('')
.map((s) => s.charCodeAt(0))
.reduce((prev, unicodeDecimalValue) => prev + this.getByteLength(unicodeDecimalValue), 0)
},
getLimitedByteText: function (inputText, maxByte) {
const characters = inputText.split('')
let validText = ''
let totalByte = 0
for (let i = 0; i < characters.length; i += 1) {
const character = characters[i]
const decimal = character.charCodeAt(0)
const byte = this.getByteLength(decimal) // 글자 한 개가 몇 바이트 길이인지 구해주기
// 현재까지의 바이트 길이와 더해 최대 바이트 길이를 넘지 않으면
if (totalByte + byte <= maxByte) {
totalByte += byte // 바이트 길이 값을 더해 현재까지의 총 바이트 길이 값을 구함
validText += character // 글자를 더해 현재까지의 총 문자열 값을 구함
} else { // 최대 바이트 길이를 넘으면
break // for 루프 종료
}
}
return validText
},
memoLimitByte() {
this.meno = this.getLimitedByteText(this.meno, this.maxByte);
}, //END 바이트길이 구하기
},
}

View File

@@ -14,7 +14,7 @@
<tr>
<th>차단문구</th>
<td class="input_add">
<input v-model="word" ref="_word">
<input v-model="word" ref="_word" maxlength="50">
<button type="button" class="button white add" @click="doAdd"></button>
</td>
</tr>
@@ -43,9 +43,8 @@
<div>
<select name="" id="" v-model.trim="blckRsnCd" ref="blckRsnCd">
<option v-for="(option, i) in rsnType"
:value="blckRsnCd"
v-bind:key="i"
:selected="blckRsnCd === option.code">
:value="option.code"
v-bind:key="i">
{{ option.codeNm }}
</option>
</select>
@@ -54,7 +53,7 @@
</tr>
<tr>
<th>메모</th>
<td class="sender"><textarea class="memo_text" v-model.trim="memo" ref="memo"></textarea></td>
<td class="sender"><textarea class="memo_text" v-model.trim="memo" ref="memo" ></textarea></td>
</tr>
</tbody>
@@ -94,9 +93,9 @@ export default {
word: '', // 차단문구
blckSndrno:'',
sndblckTpCd:'',
blckRsnCd: '', // 차단사유
blckRsnCd: '01', // 차단사유
blckYn:'',
blckContCd:'', //차단 조건
blckContCd:'01', //차단 조건
chgDt:'',
regId: '',
regDt: '',
@@ -216,9 +215,10 @@ export default {
if(this.doValidate()){
this.$refs.ValidationConfirmPopup.msgConfirmInsertOpen();
}
},
}
}
},
}
</script>

View File

@@ -43,14 +43,14 @@
</tr>
<tr>
<th>메모</th>
<td><input type="text" value="고객사요청" v-model.trim="meno" ref="meno"></td>
<td><input type="text" value="고객사요청" v-model.trim="meno" ref="meno" @input="memoLimitByte()"></td>
</tr>
<tr>
<th>차단여부</th>
<td>
<input type="radio" name="state" value="해제" id="popup_radio1" checked="">
<input type="radio" name="state" value="N" id="popup_radio1" v-model="blckYn">
<label for="popup_radio1">해제</label>
<input type="radio" name="state" value="차단" id="popup_radio2">
<input type="radio" name="state" value="Y" id="popup_radio2" v-model="blckYn">
<label for="popup_radio2">차단</label>
</td>
</tr>
@@ -87,11 +87,17 @@ export default {
blckRsnCd:'',
regId: '',
meno: '',
LINE_FEED : 10, // '\n',
maxByte: 2000,
}
},
components: {
ValidationConfirmPopup
},
created(){
this.setCodeDate();
// this.formReset();
},
methods :{
// 모달 띄우기
async IntrcpDetailModalOpen(props){
@@ -161,6 +167,7 @@ export default {
try {
const response = await riskMgtApi.updateIntrcp(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.row.title = '발신번호 차단';
this.row.msg1 = '수정 하였습니다.';
@@ -209,6 +216,48 @@ export default {
this.$refs.ValidationConfirmPopup.confirmDeleteOpen();
}
},
// formReset(){
// var type= this.insertType;
// Object.assign(this.$data, this.$options.data());
// this.insertType = type;
// },
// 바이트길이 구하기
getByteLength: function (decimal) {
return (decimal >> 7) || (this.LINE_FEED === decimal) ? 2 : 1
},
getByte: function (str) {
return str
.split('')
.map((s) => s.charCodeAt(0))
.reduce((prev, unicodeDecimalValue) => prev + this.getByteLength(unicodeDecimalValue), 0)
},
getLimitedByteText: function (inputText, maxByte) {
const characters = inputText.split('')
let validText = ''
let totalByte = 0
for (let i = 0; i < characters.length; i += 1) {
const character = characters[i]
const decimal = character.charCodeAt(0)
const byte = this.getByteLength(decimal) // 글자 한 개가 몇 바이트 길이인지 구해주기
// 현재까지의 바이트 길이와 더해 최대 바이트 길이를 넘지 않으면
if (totalByte + byte <= maxByte) {
totalByte += byte // 바이트 길이 값을 더해 현재까지의 총 바이트 길이 값을 구함
validText += character // 글자를 더해 현재까지의 총 문자열 값을 구함
} else { // 최대 바이트 길이를 넘으면
break // for 루프 종료
}
}
return validText
},
memoLimitByte() {
this.meno = this.getLimitedByteText(this.meno, this.maxByte);
}, //END 바이트길이 구하기

View File

@@ -14,7 +14,7 @@
<tr>
<th>차단문구</th>
<td class="input_add">
<input v-model="word">
<input v-model="word" ref="_word">
<button type="button" class="button white add" @click="doAdd"></button>
</td>
</tr>
@@ -31,10 +31,10 @@
<tr>
<th>조건</th>
<td>
<input type="radio" name="state" value="01" id="popup_radio3" v-model="blckContCd" >
<label for="popup_radio3">AND</label>
<input type="radio" name="state" value="02" id="popup_radio4" v-model="blckContCd">
<label for="popup_radio4">OR</label>
<input type="radio" name="state02" value="01" id="popup_radio5" v-model="blckContCd" >
<label for="popup_radio5">AND</label>
<input type="radio" name="state02" value="02" id="popup_radio6" v-model="blckContCd">
<label for="popup_radio6">OR</label>
</td>
</tr>
<tr>
@@ -59,9 +59,9 @@
<tr>
<th>차단여부</th>
<td>
<input type="radio" name="state01" value="AND" id="popup_radio7">
<input type="radio" name="state01" value="N" id="popup_radio7" v-model="blckYn">
<label for="popup_radio7">해제</label>
<input type="radio" name="state01" value="OR" id="popup_radio8">
<input type="radio" name="state01" value="Y" id="popup_radio8" v-model="blckYn">
<label for="popup_radio8">차단</label>
</td>
</tr>
@@ -83,7 +83,9 @@
import api from '@/service/api';
import riskMgtApi from '../service/riskMgtApi';
import ValidationConfirmPopup from './ValidationConfirmPopup.vue';
import { utils_mixin, chkPattern2 } from '../service/mixins';
export default {
mixins: [utils_mixin, chkPattern2],
data(){
return{
@@ -140,6 +142,7 @@ export default {
try {
const response = await riskMgtApi.msgIntrcpDetail(this.row);
const result = response.data;
console.log('----------------');
console.log(result);
if (result != null && result.retCode == "0000") {
this.blckContCd = result.data.blckContCd;
@@ -154,6 +157,7 @@ export default {
} catch(err) {
alert("실패 하였습니다.");
}
console.log(this.blckContCd);
console.log('-----------')
console.log(this.row)
var dimmed = document.getElementsByClassName('modal58');
@@ -191,12 +195,19 @@ export default {
},
//신규등록 팝업에서 문구 추가 버튼
doAdd: function() {
if(this.isNull(this.word)){
this.row.title = '메세지 차단';
this.row.msg1 = '문구를 입력해주세요.';
this.$parent.msgAlertModalOpen(this.row);
this.$refs._word.focus();
return false;
}
if(this.msgBlckwordList.length < 10){
this.msgBlckwordList.push({
//seqNo: '',
word: this.word
});
this.word = '';
}
},
//신규등록 팝업에서 문구 삭제 버튼
@@ -239,14 +250,14 @@ export default {
const result = response.data;
if (result != null && result.retCode == "0000") {
this.row.title = '메세지 차단';
this.row.msg1 = '수정 하였습니다.';
this.$parent.msgAlertModalOpen(this.row);
this.row.msg1 = '수정 하였습니다.';
this.$parent.msgAlertModalOpen(this.row);
}
this.toComplete();
} catch(err) {
this.row.title = '메세지 차단';
this.row.msg1 = '실패 하였습니다.';
this.$parent.msgAlertModalOpen(this.row);
this.row.title = '메세지 차단';
this.row.msg1 = '실패 하였습니다.';
this.$parent.msgAlertModalOpen(this.row);
}
// }
},

View File

@@ -52,11 +52,11 @@
<div class="group">
<div class="input_box">
<label for="right" class="label">발신번호</label>
<input class="search-box" type="number" id="search" placeholder="검색어 입력" v-model="grid.params.sndrno">
<input class="search-box" type="number" id="search" placeholder="검색어 입력" v-model="grid.params.sndrno" v-on:keyup="onlyNum" @input="onlyNum" maxlength="12">
</div>
<div class="input_box">
<label for="right" class="label">수신번호</label>
<input class="search-box" type="number" id="search" placeholder="검색어 입력" v-model="grid.params.rcvno">
<input class="search-box" type="number" id="search" placeholder="검색어 입력" v-model="grid.params.rcvno" v-on:keyup="onlyNum" @input="onlyNum" maxlength="12">
</div>
<div class="select_box">
<label for="right" class="label">상세검색</label>
@@ -74,12 +74,10 @@
</div>
</form>
<div class="info">
<div class="count"> <span> {{ totalItems }} </span>
<div class="count"> <span>{{ totalItems }}</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 name="" id="" v-model="perPageCnt" @change="changePerPage()">
<option v-for="option in options" v-bind:value="option.value" v-bind:key="option.value">{{ option.text }}</option>
</select>
</div>
</div>
@@ -108,6 +106,7 @@
import customGrid from '@/components/CustomGrid';
import moment from 'moment';
import commonModal from "@/components/modal/commonModal";
import { utils_mixin, chkPattern2 } from '../service/mixins';
//import api from '../service/api';
class CustomATagRenderer {
@@ -133,22 +132,29 @@ class CustomATagRenderer {
}
export default {
name: 'intrcpList',
mixins: [utils_mixin, chkPattern2],
data() {
return {
totalItems: 0,
perPageCnt: 50,
// 달력 데이터
ko: vdp_translation_ko.js,
periodDay: 7,
sDateDiv: 'day',
startDate: new Date(),
endDate: new Date(),
options: [
{ text: '20', value: 20},
{ text: '50', value: 50},
{ text: '100', value: 100}
],
statType: [],
userType: [],
row:{},
grid: {
url: '/api/v1/bo/riskMgt/web/intrcpList',
perPage: 20,
pagePerRows: 20,
pagination: true,
isCheckbox: false,
initialRequest: false,
@@ -168,20 +174,20 @@ export default {
],
columns: [
{ name: 'no', header: 'NO', align: 'center', width: 60 },
{ name: 'blckTpCd', header: '차단구분', align: 'center', width: 160 },
{ name: 'userId', header: '발송ID', align: 'center', width: 100},
{ name: 'sndrno', header: '발신번호', align: 'center', width: 130},
{ name: 'custNm', header: '고객사명', align: 'center', width: 130, renderer: {
{ name: 'no', header: 'NO', align: 'center', width: '5%' },
{ name: 'blckTpCd', header: '차단구분', align: 'center', width: '11%' },
{ name: 'userId', header: '발송ID', align: 'center', width: '11%'},
{ name: 'sndrno', header: '발신번호', align: 'center', width: '11%'},
{ name: 'custNm', header: '고객사명', align: 'center', width: '11%', renderer: {
type: CustomATagRenderer
, options: {
callback: this.custDetail,
}
}},
{ name: 'bizrno', header: '사업자번호', align: 'center', width: 90},
{ name: 'rcvno', header: '수신번호', align: 'center', width: 90 },
{ name: 'blckRsnCd', header: '차단사유', align: 'center', width: 90 },
{ name: 'blckDt', header: '발송일자', align: 'center', width: 90 },
{ name: 'bizrno', header: '사업자번호', align: 'center', width: '11%'},
{ name: 'rcvno', header: '수신번호', align: 'center', width: '11%' },
{ name: 'blckRsnCd', header: '차단사유', align: 'center', width: '7%' },
{ name: 'blckDt', header: '발송일자', align: 'center', width: '11%' },
],
noDataStr: '검색 결과가 없습니다.',
@@ -220,8 +226,6 @@ export default {
});
},
created(){
this.$store.commit("login/isLogin", true);
this.$store.commit("login/isAuthChk", true);
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
this.setPeriodDay(0);
},
@@ -241,6 +245,11 @@ export default {
methods: {
search: function(isKeep) {
console.log(this.grid.params);
this.grid.params.blckDt = moment(this.startDate).format('YYYYMMDD');
this.grid.params.blckRsnCd = this.grid.params.searchType1;
this.grid.params.blckTpCd = this.grid.params.searchText1;
this.grid.params.sndrno = this.grid.params.searchText2;
this.grid.params.custNm = this.grid.params.searchText3;
this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData();
},

View File

@@ -11,7 +11,7 @@
<div class="group">
<div class="input_box">
<label for="regId" class="label">등록자</label>
<input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.regId" v-on:keydown.enter.prevent="search"/>
<input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.regId" v-on:keydown.enter.prevent="search" v-on:keyup="onlyEng" @input="onlyEng" maxlength="20" />
</div>
<div class="select_box">
<label for="blckRsnCd" class="label">차단사유</label>
@@ -93,6 +93,7 @@ import api from '@/service/api.js';
import intrcpDetailPopup from '../components/IntrcpDetailPopup';
import insertIntrcpPop from '../components/InsertIntrcpPop';
import commonModal from "@/components/modal/commonModal";
import { utils_mixin, chkPattern2 } from '../service/mixins';
//import api from '../service/api';
class CustomATagRenderer {
@@ -112,6 +113,7 @@ class CustomATagRenderer {
addEvent(selEl) {
selEl.addEventListener("click", () => {
const { callback } = this.props["cgrido" + this.props.colName].options;
console.log(this.props);
callback(this.props);
});
}
@@ -119,6 +121,7 @@ class CustomATagRenderer {
export default {
name: 'intrcpList',
mixins: [utils_mixin, chkPattern2],
data() {
return {
totalItems: 0,
@@ -149,21 +152,25 @@ export default {
],
columns: [
{ name: 'no', header: 'NO', align: 'center', width: 50 },
{ name: 'blcksndrno', header: '발신번호', align: 'center', width: 160,
{ name: 'no', header: 'NO', align: 'center', width: '5%' },
{ name: 'blcksndrno', header: '발신번호', align: 'center', width: '25%',
renderer: { type: CustomATagRenderer, options: { callback: this.inDetailPop} } },
{ name: 'blckYn', header: '차단여부', align: 'center', width: 100},
{ name: 'sndblckTpCd', header: '발송타입', align: 'center', width: 100},
{ name: 'lastChgDt', header: '최근수정일', align: 'center', width: 100},
{ name: 'blckRsnCd', header: '차단사유', width: 100, cls: 'td_line' },
{ name: 'regId', header: '등록자', width: 150 }
{ name: 'blckYn', header: '차단여부', align: 'center', width: '15%'},
{ name: 'sndblckTpCd', header: '발송타입', align: 'center', width: '15%', hidden: true},
{ name: 'sndblckTpNm', header: '발송타입', align: 'center', width: '15%'},
{ name: 'lastChgDt', header: '최근수정일', align: 'center', width: '15%'},
{ name: 'blckRsnCd', header: '차단사유', width: '15%', cls: 'td_line', hidden: true },
{ name: 'blckRsnNm', header: '차단사유', width: '15%', cls: 'td_line' },
{ name: 'regId', header: '등록자', width: '15%' }
],
noDataStr: '검색 결과가 없습니다.',
params: {
regId: '',
blckRsnCd: '',
blckRsnNm: '',
blckYn: '',
sndblckTpCd: '',
sndblckTpNm: '',
blcksndrno: ''
},
excelHeader: []
@@ -180,8 +187,6 @@ export default {
},
created(){
this.$store.commit("login/isLogin", true);
this.$store.commit("login/isAuthChk", true);
this.setCodeData();
// this.formReset();
},
@@ -229,11 +234,17 @@ export default {
api.commCode({'grpCd' : 'SVCUSER_TP_CD'}).then(response => {
this.userType = response.data.data.list;
});
//발송타입
api.commCode({'grpCd' : 'SNDBLCK_TP_CD'}).then(response => {
this.tpType = response.data.data.list;
});
},
ModalOpen: function(){
this.$refs.insertIntrcpPop.ModalOpen();
},
inDetailPop(props) {
console.log('======');
console.log(props);
this.$refs.intrcpDetailPopup.IntrcpDetailModalOpen(props);
},
// formReset(){

View File

@@ -10,7 +10,7 @@
<div class="search_wrap">
<div class="input_box">
<label for="regId" class="label">등록자</label>
<input class="search-box" type="text" id="regId" placeholder="검색어 입력" v-model="grid.params.regId" v-on:keydown.enter.prevent="search"/>
<input class="search-box" type="text" id="regId" placeholder="검색어 입력" v-model="grid.params.regId" v-on:keydown.enter.prevent="search" v-on:keyup="onlyEng" @input="onlyEng" maxlength="20"/>
</div>
<div class="select_box">
<label for="blckRsnCd" class="label">차단사유</label>
@@ -70,7 +70,7 @@ import customGrid from '@/components/CustomGrid';
import InsertMsgPop from '../components/InsertMsgPop';
import IntrcpMsgDetail from '../components/IntrcpMsgDetail';
import commonModal from "@/components/modal/commonModal";
undefined
import { utils_mixin, chkPattern2 } from '../service/mixins';
//import api from '../service/api';
class CustomATagRenderer {
constructor(props) {
@@ -95,6 +95,7 @@ class CustomATagRenderer {
}
export default {
name: 'intrcpList',
mixins: [utils_mixin, chkPattern2],
data() {
return {
totalItems: 0,
@@ -127,21 +128,22 @@ export default {
],
columns: [
{ name: 'no', header: 'NO', align: 'center', width: 60 },
{ name: 'seqNo', header: '일련번호', align: 'center', width: 60, hidden: true},
{ name: 'word', header: '차단메시지', align: 'center', width: 160,
{ name: 'no', header: 'NO', align: 'center', width: '5%' },
{ name: 'seqNo', header: '일련번호', align: 'center', width: '19%', hidden: true},
{ name: 'word', header: '차단메시지', align: 'center', width: '19%',
renderer: {type: CustomATagRenderer, options: { callback: this.msgDetailPop}} },
{ name: 'blckYn', header: '차단여부', align: 'center', width: 130},
{ name: 'lastChgDt', header: '마지막 수정일', align: 'center', width: 130},
{ name: 'blckRsnCd', header: '차단사유', align: 'center', width: 130},
{ name: 'regId', header: '등록자', width: 90, cls: 'td_line' }
{ name: 'blckYn', header: '차단여부', align: 'center', width: '19%'},
{ name: 'lastChgDt', header: '마지막 수정일', align: 'center', width: '19%'},
{ name: 'blckRsnCd', header: '차단사유', align: 'center', width: '19%'},
{ name: 'regId', header: '등록자', width: '19%', cls: 'td_line' }
],
noDataStr: '검색 결과가 없습니다.',
params: {
regId: '',
blckRsnCd: '',
word: '',
seqNo: ''
seqNo: '',
blckYn: '',
},
excelHeader: []
}
@@ -157,8 +159,6 @@ export default {
},
created(){
this.$store.commit("login/isLogin", true);
this.$store.commit("login/isAuthChk", true);
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
},
mounted() {

View File

@@ -11,15 +11,15 @@
<div class="search_wrap">
<div class="input_box">
<label for="search" class="label">고객사</label>
<input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.custNm"/>
<input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model="grid.params.custNm" v-on:keyup="onlyName" @input="onlyName" maxlength="20"/>
</div>
<div class="input_box">
<label for="search" class="label">인증코드</label>
<input class="search-box" type="number" id="search" placeholder="검색어 입력" v-model="grid.params.authcd080"/>
<input class="search-box" type="number" id="search" placeholder="검색어 입력" v-model="grid.params.authcd080" v-on:keyup="onlyNum" @input="onlyNum" maxlength="6"/>
</div>
<div class="input_box">
<label for="right" class="label">수신번호</label>
<input class="search-box" type="number" id="search" placeholder="검색어 입력" v-model="grid.params.rcvblckno"/>
<label for="search" class="label">수신번호</label>
<input class="search-box" type="number" id="search" placeholder="검색어 입력" v-model="grid.params.rcvblckno" v-on:keyup="onlyNum" @input="onlyNum" maxlength="11"/>
</div>
<button type="button" class="button grey" @click="search">조회</button>
</div>
@@ -57,6 +57,7 @@
<script>
import customGrid from '@/components/CustomGrid';
import commonModal from "@/components/modal/commonModal";
import { utils_mixin, chkPattern2 } from '../service/mixins';
//import api from '../service/api';
class CustomATagRenderer {
constructor(props) {
@@ -79,8 +80,28 @@ class CustomATagRenderer {
});
}
}
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: 'intrcpList',
mixins: [utils_mixin, chkPattern2],
data() {
return {
totalItems: 0,
@@ -112,18 +133,18 @@ export default {
],
columns: [
{ name: 'no', header: 'NO', align: 'center', width: 60 },
{ name: 'custNm', header: '고객사', align: 'center', width: 160, renderer: {
{ name: 'no', header: 'NO', align: 'center', width: '5%' },
{ name: 'custNm', header: '고객사', align: 'center', width: '15%', renderer: {
type: CustomATagRenderer
, options: {
callback: this.memberDetail,
}
} },
{ name: 'bizrno', header: '사업자번호', align: 'center', width: 100},
{ name: 'authcd080', header: '인증코드', align: 'center', width: 130},
{ name: 'rcvblckno', header: '수신번호', align: 'center', width: 130},
{ name: 'regDt', header: '등록일', align: 'center', width: 130},
{ name: 'regTpCd', header: '등록구분', width: 90, cls: 'td_line' }
{ name: 'bizrno', header: '사업자번호', align: 'center', width: '15%', renderer: {type: customBRegNo}},
{ name: 'authcd080', header: '인증코드', align: 'center', width: '15%'},
{ name: 'rcvblckno', header: '수신번호', align: 'center', width: '15%'},
{ name: 'regDt', header: '등록일', align: 'center', width: '20%'},
{ name: 'regTpCd', header: '등록구분', width: '15%', cls: 'td_line' }
],
noDataStr: '검색 결과가 없습니다.',
params: {
@@ -143,8 +164,6 @@ export default {
},
created(){
this.$store.commit("login/isLogin", true);
this.$store.commit("login/isAuthChk", true);
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
},
mounted() {