웹취약점, 모의해킹 조치

This commit is contained in:
USER
2022-08-24 14:04:30 +09:00
parent d0e0ef7020
commit a2273154d1
92 changed files with 1193 additions and 1246 deletions

View File

@@ -1806,4 +1806,85 @@ textarea:focus{
.datepicker .datepicker-calender .click a, .datepicker .datepicker-calender .today a{color: #fff;}
.datepicker .datepicker-calender .disabled a{color:#c9c9c9 !important;}
/*# sourceMappingURL=style.css.map */
/*# sourceMappingURL=style.css.map */
/* loadingPage */
.loadingDimmed {
width: 100vw;
height: 100vh;
position: fixed;
top: 0;
left: 0;
background: rgba(0, 0, 0, 0.2);
z-index: 400;
}
.sp-3balls,
.sp-3balls:before,
.sp-3balls:after {
display: inline-block;
width: 18px;
height: 18px;
background: #946dc2;
border-radius: 100%;
}
.sp-3balls {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 1000;
opacity: 1;
animation: spScaleAlpha 2s infinite linear;
}
.sp-3balls:before,
.sp-3balls:after {
content: "";
position: absolute;
opacity: 0.25;
}
.sp-3balls:before {
right: 30px;
animation: spScaleAlphaBefore 2s infinite linear;
}
.sp-3balls:after {
left: 30px;
animation: spScaleAlphaAfter 2s infinite linear;
}
@keyframes spScaleAlpha {
0% {
opacity: 1;
}
33% {
opacity: 0.25;
}
66% {
opacity: 0.25;
}
100% {
opacity: 1;
}
}
@keyframes spScaleAlphaBefore {
33% {
opacity: 0.25;
}
66% {
opacity: 1;
}
100% {
opacity: 0.25;
}
}
@keyframes spScaleAlphaAfter {
0% {
opacity: 0.25;
}
33% {
opacity: 1;
}
66% {
opacity: 0.25;
}
}

View File

@@ -7,7 +7,8 @@ const consts = {
tokenPart1: 'JwtPart1',
tokenPart2: 'JwtPart2',
tokenPart3: 'JwtPart3',
tokenPart4: 'JwtPart4'
tokenPart4: 'JwtPart4',
authToken: null
}
export { environment, testProp, consts };

View File

@@ -20,7 +20,8 @@ const authInterceptor = config => {
// cookie, header 등에 자격정보 설정이 필요한 api는 true 설정으로 호출해야 하고
// 자격정보 설정이 필요없는 api는 withCredentials=false 설정으로 호출해야 한다.
// config.withCredentials = !config.url.startsWith('/api/public/');
console.log("Test Url : "+ config.url);
// console.log("Test Url : "+ config.url);
/*if(config.url == '/api/auth/login'){
config.baseURL = "http://localhost:3000";
}*/
@@ -28,17 +29,27 @@ const authInterceptor = config => {
};
const tokenInterceptor = config => {
if(tokenSvc.getAuthorization(consts.tokenPart1) != null){
config.headers.Authorization = tokenSvc.getAuthorization(consts.tokenPart1);
//console.log("getToken : "+config.headers.Authorization);
//config.headers.Authorization = tokenSvc.getToken();
// var authToken = tokenSvc.getAuthToken();
// console.log(this.$store);
// alert('tokenInterceptor'+authToken);
// if(tokenSvc.getAuthorization(consts.tokenPart1) != null){
// //config.headers.Authorization = tokenSvc.getAuthorization(consts.tokenPart1);
// //console.log("getToken : "+config.headers.Authorization);
// //config.headers.Authorization = tokenSvc.getToken();
// }
console.log('http : ',sessionStorage.authToken);
if(sessionStorage.authToken != null) {
config.headers.Authorization = 'Bearer '+ sessionStorage.authToken;
}
return config;
}
const loggerInterceptor = config => {
//console.log('testProp:', testProp);
//console.log('request url:', config.url, 'params:', config.data);
console.log('request url:', config.url, 'params:', config.data, 'config: ', config);
return config;
};
@@ -48,46 +59,65 @@ const loadingLayer = (type, config) => {
get: httpClient.get(url, { params: { ... }, headers: {"show-layer": "Yes"} }) // in 2nd property
post: httpClient.post(url, params, { headers: {"show-layer": "Yes"} }) // 3rd property
*/
if (config.headers['Show-Layer'] == 'Yes') {
if (type) {
loadOverlap.push('add');
} else {
loadOverlap.pop();
}
// if (config.headers['Show-Layer'] == 'Yes') {
// if (type) {
// loadOverlap.push('add');
// } else {
// loadOverlap.pop();
// }
if (loadOverlap.length > 0) {
document.querySelector('html > body').style.overflow = 'hidden'; // 스크롤 block
document.getElementsByClassName('loading_layer')[0].style.display = 'block';
} else {
document.querySelector('html > body').style.removeProperty('overflow'); // 스크롤 allow
document.getElementsByClassName('loading_layer')[0].style.display = 'none';
}
// if (loadOverlap.length > 0) {
// document.querySelector('html > body').style.overflow = 'hidden'; // 스크롤 block
// document.getElementsByClassName('loading_layer')[0].style.display = 'block';
// } else {
// document.querySelector('html > body').style.removeProperty('overflow'); // 스크롤 allow
// document.getElementsByClassName('loading_layer')[0].style.display = 'none';
// }
// }
if(type){
document.querySelector('html > body').style.overflow = 'hidden'; // 스크롤 block
document.getElementsByClassName('loadingDimmed')[0].style.display = 'block';
document.getElementsByClassName('sp-3balls')[0].style.display = 'block';
}else{
document.querySelector('html > body').style.removeProperty('overflow'); // 스크롤 allow
document.getElementsByClassName('loadingDimmed')[0].style.display = 'none';
document.getElementsByClassName('sp-3balls')[0].style.display = 'none';
}
};
/*const loadingLayerInterceptor = config => {
const urlInterceptor = config => {
if(sessionStorage.fromUrl != null){
config.params.fromUrl = sessionStorage.fromUrl;
}
return config;
}
const loadingLayerInterceptor = config => {
loadingLayer(true, config);
return config;
};*/
};
/** Adding the request interceptors */
httpClient.interceptors.request.use(authInterceptor);
httpClient.interceptors.request.use(tokenInterceptor);
httpClient.interceptors.request.use(urlInterceptor);
httpClient.interceptors.request.use(loggerInterceptor);
//httpClient.interceptors.request.use(loadingLayerInterceptor);
httpClient.interceptors.request.use(loadingLayerInterceptor);
/** Adding the response interceptors */
httpClient.interceptors.response.use(
response => {
//loadingLayer(false, response.config);
loadingLayer(false, response.config);
console.log('response status:', response.status, 'data:', response.data);
return response;
},
error => {
console.log(error);
//alert(error);
delete sessionStorage.authToken;
if(error.message === 'Network Error'){
alert('네트워크 오류가 발생했습니다. 잠시 후 다시 시도해주세요.');
tokenSvc.removeToken();
// tokenSvc.removeToken();
window.top.location.href = '/login';
}
if (error.response != undefined && error.response != null) loadingLayer(false, error.response.config);
@@ -98,17 +128,18 @@ httpClient.interceptors.response.use(
return Promise.reject(error);
}else if(error.response.status == 401){
alert('세션이 만료되었습니다.');
tokenSvc.removeToken();
// tokenSvc.removeToken();
window.top.location.href = '/login';
} else if (error.response.status == 418) {
tokenSvc.removeToken();
// tokenSvc.removeToken();
alert('세션이 만료되었습니다.');
window.top.location.href = '/login';
}else if (error.response.status == 500) {
if (error.response.data != null && error.response.data.message == '511 NETWORK_AUTHENTICATION_REQUIRED') {
alert('웹템플릿 IP가 브랜드포털에 등록이 필요합니다. 기술지원에 문의해주세요.');
return Promise.reject(error);
} else {
tokenSvc.removeToken();
// tokenSvc.removeToken();
window.top.location.href = '/login';
}
} else if (error.response.status == 511) {
@@ -120,7 +151,7 @@ httpClient.interceptors.response.use(
// return Promise.reject(error);
// }
else {
alert("else");
// alert("else");
console.log('response error:', error);
return Promise.reject(error);
}

View File

@@ -1,53 +1,28 @@
import * as utils from './utils';
import { consts } from './config';
// const KEY_TOKEN = 'access_token';
const tokenSvc = {
getToken() {
// return store.getters['login/getToken'];
// var payload = sessionStorage.getItem(KEY_TOKEN);
var jwtPart1 = utils.getCookie(consts.tokenPart1);
if (!jwtPart1)
return null;
var payload = utils.base64decode(jwtPart1.split('.').pop());
return JSON.parse(payload);
},
removeToken() {
var tokenNm1 = consts.tokenPart1;
var tokenNm2 = consts.tokenPart2;
var tokenNm3 = consts.tokenPart3;
var tokenNm4 = consts.tokenPart4;
document.cookie = tokenNm1+'=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
document.cookie = tokenNm2+'=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
document.cookie = tokenNm3+'=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
document.cookie = tokenNm4+'=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
},
getAuthorization(tokenKey){
var jwtPart = utils.getCookie(tokenKey);
if(!jwtPart){
var authToken = sessionStorage.getItem('authToken');
if(authToken == null){
return null;
}
return jwtPart;
var tokenArr = authToken.split('.');
var jwtToken = utils.base64decode(tokenArr[1]);
return JSON.parse(jwtToken);
},
// saveToken(jwtPart1) {
// if (!jwtPart1)
// return;
// var payload = utils.base64decode(jwtPart1.split('.').pop());
// console.log('save token:', payload);
// // store.commit('login/saveToken', token);
// sessionStorage.setItem(KEY_TOKEN, payload);
// },
// removeToken() {
// // store.commit('login/removeToken');
// sessionStorage.removeItem(KEY_TOKEN);
// }
removeToken() {
delete sessionStorage.authToken;
},
setAuthToken(token){
sessionStorage.authToken = token;
},
getAuthToken(){
var authToken = sessionStorage.authToken;
return authToken;
}
};
export default tokenSvc;

View File

@@ -46,7 +46,7 @@ const coreUiMixin = {
*/
openLayer: function(layerId) {
if (layerId == undefined || layerId == null || layerId == '') {
alert('layerId를 설정해 주세요.');
// alert('layerId를 설정해 주세요.');
} else {
this.$emit('changeLayerId', layerId);
}

View File

@@ -33,7 +33,8 @@ export default {
'addTableStyle', // 추가되는 그리드 style
'addTbCls', // 추가되는 테이블 클래스
'addCls', // 추가되는 클래스
'totalItems' // 부모창에 표시할 총 컨텐츠 개수 변수 명 (더 좋은 방법 있으면 알려주세요.)
'totalItems', // 부모창에 표시할 총 컨텐츠 개수 변수 명 (더 좋은 방법 있으면 알려주세요.)
'pageRange', // next or pre 이동할 페이지 단위
],
components: {
VRuntimeTemplate
@@ -57,11 +58,13 @@ export default {
colsData: '',
headerData: '',
bodyData: '',
pagingData: ''
pagingData: '',
nextPageRange: 1
};
},
created() {
this.cleanData();
this.cleanData();
if (this.initialRequest == true) {
this.readData();
}
@@ -105,6 +108,7 @@ export default {
this.headerData = '';
this.bodyData = '';
this.pagingData = '';
this.nextPageRange = 1;
},
readData(isKeep) {
if (typeof this.url != undefined && this.url != null && this.url != '') {
@@ -126,13 +130,11 @@ export default {
let pageStr = '';
var vm = this;
console.log("grid url >> " + this.url);
httpClient
//.get(this.url, { params: this.getParams, headers: { 'Show-Layer': 'Yes' }})
.post(this.url, this.getParams, {headers: { 'Show-Layer': 'Yes' }})
.then(response => {
let resp = response.data;
console.log(resp);
//if (resp != null && resp.result == true) {
if (resp != null && resp.retCode == '0000') {
let data = resp.data;
@@ -149,10 +151,13 @@ export default {
vm.totalCount = data.pagination.totalCount;
pageStr = vm.makePagingView();
}*/
if (vm.pagination == true) {
if (vm.pagination == true) {
vm.currentIndex = data.paging.page == 0 ? 1 : data.paging.page;
vm.totalCount = data.paging.totalCnt;
pageStr = vm.makePagingView();
if(typeof this.pageRange != 'undefined'){
vm.nextPageRange = this.pageRange;
}
}
// 조회결과 없음.
}else if(resp != null && resp.retCode == '1004'){
@@ -536,55 +541,9 @@ export default {
str = '';
}
return str;
},
/*
},
makePagingView() {
let pData = '<div class="paging">';
let totalPage = Math.ceil(this.totalCount / this.curPerPage);
if (totalPage < 1) {
totalPage = 1;
}
let pageGroup = Math.ceil(this.currentIndex / this.pageCount);
let last = pageGroup * this.pageCount;
if (last > totalPage) {
last = totalPage;
}
let first = last - (this.pageCount - 1);
if (first < 1) {
first = 1;
}
let prev = first - 1;
if (prev < 1) {
prev = 1;
}
let next = last + 1;
if (next > totalPage) {
next = totalPage;
}
pData += '<a href="javascript:void(0);" @click="movePage(1)" class="btn_arrow first">처음으로</a>';
pData += '<a href="javascript:void(0);" @click="movePage(' + prev + ')" class="btn_arrow prev">이전으로</a>';
for (var i = first; i <= last; i++) {
let actCls = '';
if (i == this.currentIndex) {
actCls = "class='active'";
}
pData += '<a href="javascript:void(0);" @click="movePage(' + i + ')" ' + actCls + '>' + i + '</a>';
}
pData += '<a href="javascript:void(0);" @click="movePage(' + next + ')" class="btn_arrow next">다음으로</a>';
pData +=
'<a href="javascript:void(0);" @click="movePage(' + totalPage + ')" class="btn_arrow last">마지막으로</a>';
pData += '</div>';
return pData;
},
*/
makePagingView() {
let pData = '<div class="pagination">';
let totalPage = Math.ceil(this.totalCount / this.curPerPage);
@@ -592,21 +551,25 @@ export default {
totalPage = 1;
}
let pageGroup = Math.ceil(this.currentIndex / this.pageCount);
let last = pageGroup * this.pageCount;
// let last = 1;
if (last > totalPage) {
last = totalPage;
}
let first = last - (this.pageCount - 1);
if (first < 1) {
first = 1;
}
let prev = first - 1;
// let prev = first - 1;
let prev = parseInt(this.currentIndex) - this.nextPageRange;
if (prev < 1) {
prev = 1;
}
let next = last + 1;
// let next = last + 1;
let next = parseInt(this.currentIndex) + this.nextPageRange;
if (next > totalPage) {
next = totalPage;
}

View File

@@ -36,8 +36,6 @@ export default {
}
},
created() {
// console.log(this.$store["login/isLogin"])
// this.$store.getters.getCounter
const loggedIn = !!tokenSvc.getToken();
if(!loggedIn){
window.top.location.href = '/login';

View File

@@ -48,9 +48,7 @@
}
},
created() {
console.log('created Lnb');
console.log('node[0]:', this.tree.nodes[0].label);
console.log('role:', tokenSvc.getToken().principal.authorities[0].authority);
}
};
</script>

View File

@@ -252,7 +252,6 @@ export default {
methods: {
//모달 켜기
ModalOpen(target){
console.log("ModalOpen");
var dimmed = document.getElementsByClassName('dimmed');
var wrap = document.getElementsByClassName('popup-wrap');
var obj = document.getElementsByClassName(target);

View File

@@ -82,16 +82,13 @@ export default {
setMenuData() {
api.menus().then(response => {
const rootMenu = response.data.data;
// console.log(rootMenu);
if (rootMenu != null && rootMenu.children != null && rootMenu.children.length > 0) {
this.tempList = rootMenu.children;
var nowUrl = this.$route.fullPath;
// console.log('path : '+nowUrl);
for(var i=0; i<this.tempList.length; i++){
var menuNo = this.tempList[i].menuNo;
// console.log('menuNo : '+menuNo);
var classNm = '';
switch(menuNo){
case 1001 : classNm = 'customer';
@@ -148,19 +145,15 @@ export default {
classNm += ' is-current';
}
// console.log('classNm : '+classNm);
this.tempList[i].classNm = classNm;
//console.log(classNm);
}
this.menuList = rootMenu.children;
} else {
window.top.location.href = '/';
// this.isLogin = false;
this.menuList = null;
}
}).catch(rsponse => {
// this.isLogin = false;
this.menuList = null;
})
@@ -175,7 +168,6 @@ export default {
},
reload(){
var location = this.$route.fullPath;
// console.log('reload() >> ' + location)
if (location == "/" || location == "") {
// nothing
} else {
@@ -186,7 +178,6 @@ export default {
actionMenu(e){
const menuList = document.querySelectorAll('.main_menu .is-current');
console.log(menuList);
if(e.target.classList.contains('menu_target') || e.target.classList.contains('menu_btn')){
const menuListCheck = e.target.parentNode;
if(menuListCheck.classList.contains('is-current')){

View File

@@ -180,7 +180,7 @@ export default {
}
}
} else if (statusCode == 401 || statusCode == 418) {
alert('세션이 만료되었습니다.');
// alert('세션이 만료되었습니다.');
window.top.location.href = '/login';
} else {
window.top.location.href = '/view/error/' + statusCode;

View File

@@ -105,7 +105,7 @@
},
clicked: function(v) {
var data = this.$refs.tuiGrid.invoke("getRow", v.rowKey);
alert("브랜드 아이디(" + data.brId + ") 클릭");
//alert("브랜드 아이디(" + data.brId + ") 클릭");
}
}
}

View File

@@ -46,8 +46,11 @@ export default {
}
loginApi.logout().then(response => {
if(response.data.retCode == '0000'){
this.$store.commit("login/isLogin", false);
this.$store.commit("login/isAuthChk", false);
this.$store.commit("login/isLogin", false);
this.$store.commit("login/isAuthChk", false);
//loginApi.setToken(null);
this.$store.commit("login/getMenuUrls",[]);
delete sessionStorage.authToken;
this.$router.push({
path: "/login"
});

View File

@@ -0,0 +1,140 @@
<template>
<!-- <div class="dimmed" @click="calendarCancel();"></div>-->
<div class="datepicker">
<div class="datepicker-head">
<div class="datepicker-btn">
<a href="#" class="datepicker-prev" @click="calendarData(-1)"><span></span></a>
<a href="#" class="datepicker-next" @click="calendarData(1)"><span></span></a></div>
<div class="datepicker-title">
<span>{{ year }}.</span>
<span>{{ month }}</span>
</div>
</div>
<table class="datepicker-calender">
<tbody>
<tr v-for="(date, idx) in dates" :key="idx">
<td v-for="(day, secondIdx) in date"
:key="secondIdx"
:class="{
'disabled': idx === 0 && day >= lastMonthStart || dates.length - 1 === idx && nextMonthStart > day,
'today': day === today && month === currentMonth && year === currentYear
}"
>
<a href="#" @click="selectDay(day)">{{ day }}</a>
</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
export default {
data() {
return {
dates: [],
currentYear: 0,
currentMonth: 0,
year: 0,
month: 0,
lastMonthStart: 0,
nextMonthStart: 0,
today: 0,
};
},
created() { // 데이터에 접근이 가능한 첫 번째 라이프 사이클
const date = new Date();
this.currentYear = date.getFullYear(); // 이하 현재 년, 월 가지고 있기
this.currentMonth = date.getMonth() + 1;
this.year = this.currentYear;
this.month = this.currentMonth;
this.today = date.getDate(); // 오늘 날짜
this.calendarData();
},
methods: {
calendarData(arg) { // 인자를 추가
if (arg < 0) { // -1이 들어오면 지난 달 달력으로 이동
this.month -= 1;
} else if (arg === 1) { // 1이 들어오면 다음 달 달력으로 이동
this.month += 1;
}
if (this.month === 0) { // 작년 12월
this.year -= 1;
this.month = 12;
} else if (this.month > 12) { // 내년 1월
this.year += 1;
this.month = 1;
}
const [
monthFirstDay,
monthLastDate,
lastMonthLastDate,
] = this.getFirstDayLastDate(this.year, this.month);
this.dates = this.getMonthOfDays(
monthFirstDay,
monthLastDate,
lastMonthLastDate,
);
},
getFirstDayLastDate(year, month) {
const firstDay = new Date(year, month - 1, 1).getDay(); // 이번 달 시작 요일
const lastDate = new Date(year, month, 0).getDate(); // 이번 달 마지막 날짜
let lastYear = year;
let lastMonth = month - 1;
if (month === 1) {
lastMonth = 12;
lastYear -= 1;
}
const prevLastDate = new Date(lastYear, lastMonth, 0).getDate(); // 지난 달 마지막 날짜
return [firstDay, lastDate, prevLastDate];
},
getMonthOfDays(
monthFirstDay,
monthLastDate,
prevMonthLastDate,
) {
let day = 1;
let prevDay = (prevMonthLastDate - monthFirstDay) + 1;
const dates = [];
let weekOfDays = [];
while (day <= monthLastDate) {
if (day === 1) {
// 1일이 어느 요일인지에 따라 테이블에 그리기 위한 지난 셀의 날짜들을 구할 필요가 있다.
for (let j = 0; j < monthFirstDay; j += 1) {
if (j === 0) this.lastMonthStart = prevDay; // 지난 달에서 제일 작은 날짜
weekOfDays.push(prevDay);
prevDay += 1;
}
}
weekOfDays.push(day);
if (weekOfDays.length === 7) {
// 일주일 채우면
dates.push(weekOfDays);
weekOfDays = []; // 초기화
}
day += 1;
}
const len = weekOfDays.length;
if (len > 0 && len < 7) {
for (let k = 1; k <= 7 - len; k += 1) {
weekOfDays.push(k);
}
}
if (weekOfDays.length > 0) dates.push(weekOfDays); // 남은 날짜 추가
this.nextMonthStart = weekOfDays[0]; // 이번 달 마지막 주에서 제일 작은 날짜
return dates;
},
selectDay(day){
const year = this.year
const month = this.month.toString().length < 2 ? '0'+ this.month : this.month
const dd = day.toString().length < 2 ? '0' + day : day;
const getDate = year + '-' + month + '-' + dd
this.$parent.calendarCalbackFnc(getDate);
},
calendarCancel(){
this.$parent.openEndPicker= false
this.$parent.openStartPicker= false
}
},
};
</script>

View File

@@ -99,7 +99,6 @@ export default {
},
methods: {
alertModalOpen(props) {
console.log(props)
var dimmed = document.getElementsByClassName('alertCommon');
for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'block';

View File

@@ -86,12 +86,9 @@ export default {
try {
const response = await api.subsDetail(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
console.log(result.data);
}
} catch (error) {
alert("실패 하였습니다.");
}
},
// ID 검색 모달 오픈

View File

@@ -13,7 +13,7 @@ Vue.prototype.runModeType = "LIVE";
new Vue({
router,
store,
jglib,
jglib,
render: h => h(App)
}).$mount('#app')

View File

@@ -221,8 +221,6 @@ export default {
AdminNmPop,
},
created() {
console.log(this.$route.params.userSeq);
//this.$store.commit("login/isLogin", true);
this.getExcelHeader();
if(this.$route.params.userSeq != null){ //리스트에서 상세 호출
this.loginId = this.$route.params.loginId;
@@ -246,7 +244,6 @@ export default {
try {
const response = await channelMgtApi.channelDetail(this.row);
const result = response.data;
console.log(result);
var sndCntTotal = 0;
var sndCntSTotal = 0;
var sndCntLTotal = 0;
@@ -256,7 +253,6 @@ export default {
//데이터값이 널이면 오류처리
for (var i = 0; i < result.data.list.length; i++) {
console.log('[succCnt]:' + result.data.list[i].succCnt);
sndCntTotal = sndCntTotal + Number(result.data.list[i].sndCnt);
sndCntSTotal = sndCntSTotal + Number(result.data.list[i].sndCntS)
sndCntLTotal = sndCntLTotal + Number(result.data.list[i].sndCntL)
@@ -324,14 +320,13 @@ export default {
return false;
}
let today = moment().format('YYYYMMDDHHmmss');
const saveFileName = `유치고객발송건수_${today}.xlsx`;
const saveFileName = `유치고객발송건수_${today}.xls`;
const data = await this.getExcelDataDown();
let options = {
header: this.excelHeader,
dataOrder: 'header'
};
// console.log(data);
xlsx.export(data.list, saveFileName, options).then(() => {
});
},
@@ -364,7 +359,6 @@ export default {
this.$router.push({name: 'channelList'});
},
searchIDPopOpen: function () {
console.log('>>> serviceId:' + this.serviceId);
var params = {
"serviceId": this.serviceId,
"serviceSeq": this.row.userSeq,

View File

@@ -248,12 +248,10 @@ export default {
let page = 1;
// 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log('getCondition : ' + getCondition);
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false;
if (getCondition) {
console.log(getCondition.perPage);
this.grid.pagePerRows = getCondition.perPage;
this.grid.params = getCondition.params;
page = getCondition.page;
@@ -263,9 +261,6 @@ export default {
},
methods: {
search: function (isKeep) {
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
@@ -278,7 +273,6 @@ export default {
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
@@ -286,7 +280,6 @@ export default {
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log("getCondition : " + getCondition.perPage);
},
async getExcelDataDown() {
try {
@@ -326,13 +319,10 @@ export default {
const saveFileName = `유치채널현황_${today}.xls`;
const data = await this.getExcelDataDown();
console.log('-------------------------');
console.log(data);
let options = {
header: this.excelHeader,
dataOrder: 'header'
};
// console.log(data);
xlsx.export(data.list, saveFileName, options).then(() => {
});
},
@@ -343,7 +333,6 @@ export default {
});
},
channelDetail(props) {
console.log(props);
this.row.userId = props.loginId;
this.row.userSeq = props.userSeq;
this.$router.push({name: 'channelDetail', params: this.row});
@@ -379,8 +368,6 @@ export default {
if (this.startDate > this.endDate) {
this.startDate = this.endDate;
}
console.log(this.disabledSDate)
// this.grid.params.startDt = day
},
selectedEndDate(day) {
if (day != undefined && day != null) {
@@ -411,13 +398,11 @@ export default {
let setYear = Number(moment(new Date()).format('YYYY'));
let initStartDate = new Date(setYear, 0, 1);
this.startDate = initStartDate;
console.log(moment(this.startDate).format('YYYY-MM-DD'));
},
},
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,

View File

@@ -285,7 +285,6 @@ export default {
let page = 1;
// 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log('getCondition : ' + getCondition);
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false;
@@ -300,7 +299,6 @@ export default {
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,
@@ -311,54 +309,22 @@ export default {
},
methods: {
search: function (isKeep) {
console.log('>>>>>>> search Start >>>>>>');
this.$refs.table.search(this.grid.params, isKeep);
this.grid.params = {
startMonth: moment(this.startDate).format('YYYYMM'),
endMonth: moment(this.endDate).format('YYYYMM'),
custNm: this.grid.params.custNm,
bizrno: this.grid.params.bizrno
};
console.log('this.perPageCnt' + this.perPageCnt);
console.log(this.grid.params);
/*
var currentDate = new Date();
var currentMonth = moment(currentDate).format('YYYYMM');
console.log('[currentMonth]:'+currentMonth);
if(moment(this.grid.params.startMonth).isBefore(moment(currentMonth).subtract(0, 'months').format('YYYYMM')) ||
moment(this.grid.params.endMonth).isBefore(moment(currentMonth).subtract(0, 'months').format('YYYYMM'))){
this.row.title = '발송통계';
this.row.msg1 = '검색 기간은 전월만 선택 가능 합니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
return false
}
*/
// if (moment(this.grid.params.startMonth).isBefore(moment(this.grid.params.endMonth).subtract(2, 'months').format('YYYYMM'))) {
// //alert('검색 기간은 전월 최대 3개월까지 선택 가능 합니다.');
// this.row.title = '발송통계';
// this.row.msg1 = '검색 기간은 전월 최대 3개월까지 선택 가능 합니다.';
// this.$refs.commmonModal.alertModalOpen(this.row);
// return false
// }
};
this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData();
},
setPeriodDay(day) {
this.periodDay = day;
this.endDate = new Date();
// this.startDate = moment(this.endDate)
// .subtract(day, 'month')
// .toDate();
console.log(this.startDt)
this.endDate = new Date();
this.initSetStartDate();
this.initSetEndDate();
// this.disabledStDate(this.startDate)
// this.disabledEndDate(this.endDate)
this.closeDate('start');
this.closeDate('end');
},
@@ -369,9 +335,7 @@ export default {
}
if (this.startDate > this.endDate) {
this.startDate = this.endDate;
}
// console.log(this.disabledSDate)
// this.grid.params.startDt = day
}
},
selectedEndDate(day) {
if (day != undefined && day != null) {
@@ -402,7 +366,6 @@ export default {
}
},
customFormatter: function (date) {
// console.log(this.sDateDiv)
if (this.sDateDiv == 'month') {
return moment(date).format('YYYY-MM');
} else if (this.sDateDiv == 'year') {
@@ -417,7 +380,6 @@ export default {
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
// console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
@@ -425,7 +387,6 @@ export default {
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
// console.log("getCondition : " + getCondition.perPage);
},
gridParamSet() {
this.grid.params = {
@@ -435,7 +396,6 @@ export default {
bizrno: this.grid.params.bizrno
}
// console.log("gridParamSet()-startMonth : " + this.grid.params.startMonth);
},
getExcelHeader() {
// 헤더를 mockup으로 관리한다.
@@ -452,14 +412,13 @@ export default {
}
let today = moment().format('YYYYMMDDHHmmss');
const saveFileName = `정산이력_${today}.xlsx`;
const saveFileName = `정산이력_${today}.xls`;
const data = await this.getExcelDataDown();
let options = {
header: this.excelHeader,
dataOrder: 'header'
};
// console.log(data);
xlsx.export(data.list, saveFileName, options).then(() => {
});
},
@@ -483,13 +442,11 @@ export default {
let initStartDate = new Date();
initStartDate.setMonth(Number(moment(initStartDate).format('MM')) - 4);
this.startDate = initStartDate;
// console.log(moment(this.startDate).format('YYYY-MM-DD'));
},
initSetEndDate() {
let initEndDate = new Date();
initEndDate.setMonth(Number(moment(initEndDate).format('MM')) - 2);
this.endDate = initEndDate;
// console.log(moment(this.endDate).format('YYYY-MM-DD'));
},
}
}

View File

@@ -228,7 +228,6 @@ export default {
header: this.excelHeader,
dataOrder: 'header'
};
// console.log(data);
xlsx.export(data.list, saveFileName, options).then(() => {
});
},
@@ -253,7 +252,6 @@ export default {
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,

View File

@@ -81,12 +81,10 @@ export default {
var params = {
"adminId": this.madangId
}
console.log(this.madangId);
try {
const response = await custMgtApi.selectSearchMadangId(params);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.madangId = result.data.adminId;
this.userNm = result.data.adminNm;
@@ -95,10 +93,8 @@ export default {
// 마당ID조회 성공 팝업노출
this.searchIdPop();
//console.log(this.userNm);
this.idCheck = true;
//this.$refs._pwd1.focus();
}else if(result.retCode == '1004'){
//alert('마당ID 정보가 없습니다.');
@@ -147,13 +143,10 @@ export default {
"adminNm": this.userNm,
"serviceId": this.serviceId
}
console.log(params);
try {
const response = await custMgtApi.updateAdminInfo(params);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
console.log('adminNm modal close');
//alert('관리자정보 수정에 성공하였습니다.');
// adminNm modal close
var dimmed = document.getElementsByClassName('modal26');
@@ -197,7 +190,6 @@ export default {
},
// 모달 띄우기
ModalOpen(target){
console.log(target);
this.formReset();
var dimmed = document.getElementsByClassName('modal26');
for(var i = 0; i < dimmed.length; i++){
@@ -209,7 +201,6 @@ export default {
},
// 모달 끄기
ModalClose(){
console.log('adminNm modal close');
var dimmed = document.getElementsByClassName('modal26');
for(var i = 0; i < dimmed.length; i++){
dimmed[i].style.display = 'none';

View File

@@ -71,12 +71,10 @@ export default {
// 모달 띄우기
async carryOverListPopOpen(serviceId) {
console.log(serviceId);
this.row.serviceId = serviceId;
try {
const response = await custMgtApi.carryOverList(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.list = result.data.list;
this.totalCnt = result.data.list.length;
@@ -103,7 +101,6 @@ export default {
this.ModalClose();
},
excelDown() {
console.log(this.list.length)
if (this.list.length <= 0) {
this.row.title = '청약고객관리';
this.row.msg1 = '조회된 데이터가 없습니다.';
@@ -113,13 +110,12 @@ export default {
}
let today = moment().format('YYYYMMDDHHmmss');
const saveFileName = `이월금액_${today}.xlsx`;
const saveFileName = `이월금액_${today}.xls`;
let options = {
header: this.excelHeader,
dataOrder: 'header'
};
// console.log(data);
xlsx.export(this.list, saveFileName, options).then(() => {
});
},

View File

@@ -85,7 +85,6 @@ export default {
excelPopOpen(adminId, totalItems) {
this.adminId = adminId;
this.totalItems = totalItems;
console.log(totalItems);
var excelPop = document.getElementsByClassName('modal33');
for (var i = 0; i < excelPop.length; i++) {
excelPop[i].style.display = 'block';
@@ -139,8 +138,6 @@ export default {
header: this.excelHeader,
dataOrder: 'header',
};
console.log('============');
console.log(this.sampleList);
xlsx.export(this.sampleList, saveFileName, options).then(() => {
});
},
@@ -175,7 +172,6 @@ export default {
element.removeChild(element.firstChild);
}
}
console.log(file.name);
// 파일 이름 체크
var fileName = file.name;
var fileExpend = fileName .slice(fileName .indexOf(".") + 1).toLowerCase();
@@ -217,13 +213,11 @@ export default {
let workbook = XLSX.read(data, {type: 'binary'});
workbook.SheetNames.forEach((sheetName) => {
const rowObj = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName], {raw: true});
console.log(rowObj);
tmpResult = rowObj;
const limitCnt = 100;
this.totalCnt = Number(this.totalItems) + rowObj.length;
this.insertRowCnt = rowObj.length;
console.log('totalCnt : '+this.totalCnt +' limitCnt : '+limitCnt);
if (this.totalCnt > limitCnt) {
this.row.title = '청약고객관리';
this.row.msg1 = '100건이상은 등록되지 않습니다.';
@@ -268,10 +262,6 @@ export default {
}
}
});
console.log(vm.nData);
console.log(vm.nData.length);
console.log(vm.oData);
console.log(vm.oData.length);
};
reader.readAsBinaryString(file);
},
@@ -306,9 +296,7 @@ export default {
return {retVal: true, msg: '정상'};
},
delFile(event) {
const file = event.target.files[0];
console.log(file.name);
//this.$refs.file.reset();
const file = event.target.files[0];
this.$refs.file.value = null;
let element = document.getElementById('uploadFile');
while (element.firstChild) {
@@ -325,13 +313,9 @@ export default {
try {
const response = await custMgtApi.insertMassUser(this.row);
//console.log(response);
const result = response.data;
console.log(result);
if (result != null && result.retCode == '0000') {
//this.totalCnt = result.data.totalCnt;
this.successCnt = result.data.successCnt;
console.log(this.oData.length);
this.failCnt = Number(this.oData.length) + Number(result.data.failCnt);
if (result.data.failCnt > 0) {
@@ -350,20 +334,12 @@ export default {
}
}
} catch (error) {
console.log(error);
// 팝업으로 교체 예정
var title = '청약고객 관리\n';
var msg1 = '실패 하였습니다.';
// alert(title + msg1);
// this.row.title = '청약고객관리';
// this.row.msg1 = '실패 하였습니다.';
// this.$refs.validationConfirmPop.failFileuploadOpen(this.row);
}
// 오류건수.
console.log(this.oData.length);
}
},
failFileuploadOk(result) {
console.log(result)
if (result) {
this.excelPopClose();
this.$parent.memberDetail(this.adminId);

View File

@@ -66,7 +66,6 @@ export default {
},
created() {
console.log(this.$route.params.serviceId);
this.grid.params.searchText=this.$route.params.searchText;
},
mounted() {

View File

@@ -79,7 +79,7 @@ export default {
mixins: [utils_mixin, chkPattern2],
watch: {
stat() {
console.log('watch : ', this.stat)
}
},
components: {
@@ -88,13 +88,8 @@ export default {
commonModal,
},
model: {
//prop: 'sendData',
//event: 'event-data'
},
//props: ['sendData'],
created() {
// this.setAuthData();
// this.formReset();
},
data() {
return {
@@ -122,7 +117,6 @@ export default {
try {
const response = await custMgtApi.memberDetail(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.userId = result.data.userId;
this.userNm = result.data.userNm;
@@ -163,13 +157,8 @@ export default {
try {
const response = await custMgtApi.updateUser(this.row);
const result = response.data;
console.log(result);
this.row = {}
if (result != null && result.retCode == "0000") {
// this.row.title = '청약고객관리';
// this.row.msg1 = '수정 완료하였습니다.';
// this.$refs.commmonModal.alertModalOpen(this.row);
// this.memberUpdateModalClose();
this.toComplete();
} else {

View File

@@ -67,20 +67,14 @@ export default {
mixins: [utils_mixin, chkPattern2],
watch: {
stat() {
console.log('watch : ', this.stat)
}
},
components: {
validationConfirmModalPop,
// commonModal,
},
model: {
//prop: 'sendData',
//event: 'event-data'
},
//props: ['sendData'],
created() {
// this.setAuthData();
this.formReset();
},
data() {
@@ -129,7 +123,6 @@ export default {
try {
const response = await custMgtApi.insertUser(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.row.title = '청약고객관리';
this.row.msg1 = '사용자 생성 완료하였습니다.';
@@ -177,7 +170,6 @@ export default {
this.adminId = targetAdminId;
},
doValidate() {
console.log(this.userTotalCnt)
if (this.userTotalCnt >= 100) {
// 사용자등록제한_최대100개까지
this.$parent.$refs.validationConfirmPopModal.validationMaxlimitOpen();

View File

@@ -120,31 +120,13 @@ export default {
},
created(){
},
// mounted() {
// let pageMemo = 1;
// // 페이지 정보 및 검색 조건
// const getCondition_memo = this.$store.getters['searchcondition/getSearchCondition'];
// console.log('getCondition_memo : '+getCondition_memo);
//
// // store에 저장된 페이지 정보 및 검색 조건을 불러오기
// let isKeepMemo = false;
// if (getCondition_memo) {
// this.grid.pagePerRows = getCondition_memo.perPage;
// this.grid.params = getCondition_memo.params;
// pageMemo = getCondition_memo.page;
// isKeepMemo = true;
// }
//
// // this.search(isKeep);
// },
},
mounted() {
// 달력 세팅
let page = 1;
// 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log('getCondition : '+getCondition);
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false;
@@ -158,8 +140,6 @@ export default {
},
methods :{
search: function(isKeep) {
console.log('this.perPageCnt:'+this.perPageCnt);
console.log(this.grid.params);
this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData();
},
@@ -172,14 +152,12 @@ export default {
});
const getCondition_memo = this.$store.getters['searchcondition/getSearchCondition'];
console.log("getCondition_memo : "+ getCondition_memo.perPage);
},
//메모전체 모달 Open
async memoTotalModalOpen(props){
this.grid.params.userId = props.adminId;
this.userId = props.adminId;
console.log(props.adminId);
// 메모 모달팝업 오픈
var dimmed = document.getElementsByClassName('memoTotal');
@@ -190,7 +168,6 @@ export default {
let page = 1;
// 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log('momo getCondition : '+getCondition);
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false;
@@ -218,7 +195,6 @@ export default {
this.$parent.memberDetail(this.adminId);
},
deleteMemo: function(props) {
console.log(props);
this.seqNo=props.seqNo;
this.memorow = {}
this.memorow.title = '메모';
@@ -229,15 +205,12 @@ export default {
try {
const response = await custMgtApi.deleteMemo(target);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
// alert('삭제 성공');
// 그리드 reload
// 리스트 그리드 오픈
let page = 1;
// 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log('getCondition : '+getCondition);
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false;
@@ -254,14 +227,12 @@ export default {
this.$refs.commmonMemoModal.alertModalOpen(this.memorow);
}
} catch (error) {
console.log(error);
this.memorow.title = '메모 삭제';
this.memorow.msg1 = '실패 하였습니다.';
this.$refs.commmonMemoModal.alertModalOpen(this.memorow);
}
},
confirmCalbackFnc(props){
console.log(props)
if(props.result){
this.memorow = {}
this.memorow.seqNo = this.seqNo;

View File

@@ -45,9 +45,6 @@
</template>
<script>
import custMgtApi from "../service/custMgtApi.js";
export default {
data(){
return{
@@ -67,7 +64,6 @@ export default {
methods :{
// 모달 띄우기(성공모달)
searchIdModalOpen(target){
console.log("SearchIdModalOpen");
var dimmed = document.getElementsByClassName('dimmed modal28');
var wrap = document.getElementsByClassName('popup-wrap modal28');
var obj = document.getElementsByClassName(target);
@@ -94,7 +90,6 @@ export default {
},
// 모달 띄우기(실패모달)
searchIdFailModalOpen(target){
console.log("SearchIdFailModalOpen");
var dimmed = document.getElementsByClassName('dimmed modal27');
var wrap = document.getElementsByClassName('popup-wrap modal27');
var obj = document.getElementsByClassName(target);
@@ -117,15 +112,12 @@ export default {
this.code = params.code;
this.agencyNm = params.agencyNm;
//alert( userName + ': 조회 성공');
var dimmed = document.getElementsByClassName('modal28');
for(var i = 0; i < dimmed.length; i++){
dimmed[i].style.display = 'block';
}
//this.searchIdModalModalOpen('modal18');
},
searchIdFailPop(){
//alert( '조회 실패');
var dimmed = document.getElementsByClassName('modal27');
for(var i = 0; i < dimmed.length; i++){
dimmed[i].style.display = 'block';
@@ -133,10 +125,4 @@ export default {
},
}
}
// import '../../../assets/css/layout.css?ver=02';
// import '../../../assets/css/contents.css?ver=01';
// import '../../../assets/css/common.css?ver=02';
// import '../../../assets/css/style.css';
</script>

View File

@@ -58,19 +58,16 @@
</template>
<script>
import api from '@/service/api';
import custMgtApi from "../service/custMgtApi.js";
import { utils_mixin, chkPattern2 } from '../service/mixins';
import lodash from "lodash";
import commonModal from "@/components/modal/commonModal";
import ValidationConfirmPop from "@/modules/custMgt/components/ValidationConfirmPop";
export default {
name: "subsRegPop",
mixins: [utils_mixin, chkPattern2],
watch:{
stat(){
console.log('watch : ', this.stat)
}
},
data(){

View File

@@ -76,7 +76,6 @@ export default {
mixins: [utils_mixin, chkPattern2],
watch: {
stat() {
console.log('watch : ', this.stat)
}
},
data() {
@@ -244,7 +243,6 @@ export default {
},
async doInsert() {
if (this.doValidate()) {
console.log(this.row)
try {
const response = await custMgtApi.insertTestId(this.row);

View File

@@ -145,7 +145,6 @@ export default {
for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'none';
}
console.log("this.$parent.memberInsert() ~~~~~~")
this.$parent.memberInsert();
},
//사용자등록 - 최초등록 Close

View File

@@ -101,13 +101,11 @@ export default {
},
methods: {
alertModalOpen(props) {
console.log(props.msg1);
this.title = props.title;
this.msg1 = props.msg1;
this.msg2 = props.msg2;
this.msg3 = props.msg3;
this.msg4 = props.msg4;
console.log(props)
var dimmed = document.getElementsByClassName('alertModal');
for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'block';
@@ -130,7 +128,6 @@ export default {
},
// 모달 오픈
confirmModalOpen(props) {
console.log(props)
var dimmed = document.getElementsByClassName('confirm');
for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'block';

View File

@@ -208,7 +208,6 @@ export default {
mixins: [utils_mixin, chkPattern2],
watch: {
stat() {
console.log('watch : ', this.stat);
},
},
data() {
@@ -235,7 +234,7 @@ export default {
svcUserId: '',
ezSvcUserAuthKey: '',
homePageUrl: '',
isActive: true
isActive: true,
//applyTbStyle: 'cursor: default;',
};
},
@@ -254,13 +253,13 @@ export default {
ValidationConfirmPop,
},
created() {
if(this.$route.params.serviceId != null){
if (this.$route.params.serviceId != null) {
this.$store.commit('dataStore/updateUserId', this.$route.params.serviceId);
this.userId = this.$route.params.serviceId;
this.memberDetail(this.$route.params.serviceId);
}else{
var userId2 = this.$store.getters["dataStore/getUserId"];
this.userId = userId2;
this.userId = this.$route.params.serviceId;
this.memberDetail(this.$route.params.serviceId);
} else {
var userId2 = this.$store.getters['dataStore/getUserId'];
this.userId = userId2;
this.memberDetail(this.userId);
}
},
@@ -286,8 +285,6 @@ export default {
const selected = [];
if (value) {
this.list.forEach((com) => {
//var chkList = {userId :com.userId};
//console.log(chkList)
selected.push(com.userId);
});
}
@@ -297,14 +294,13 @@ export default {
},
},
methods: {
valAlert(props) {
//alert("호출됨!");
valAlert(props) {
this.$refs.commmonModal.alertModalOpen(props);
},
valConfirm(props) {
this.$refs.commmonModal.confirmModalOpen(props);
},
async memberDetail(serviceId) {
async memberDetail(serviceId) {
this.row.userId = serviceId;
try {
const response = await custMgtApi.memberAdminDetail(this.row);
@@ -330,13 +326,11 @@ export default {
this.email = result.data.email;
this.list = result.data.list;
this.userTotalCnt = result.data.list.length;
console.log('userTotalCnt:' + result.data.list.length);
this.totalItems = result.data.paging.totalCnt;
this.homePageUrl = result.data.homePageUrl;
this.ezSvcUserAuthKey = result.data.authKey;
this.ezSvcUserAuthKey = result.data.authKey;
}
} catch (error) {
console.log(error);
this.row.title = '청약고객관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
@@ -350,11 +344,8 @@ export default {
this.row.userStat = this.userStat;
this.row.memo = this.memo;
console.log(this.row);
try {
const response = await custMgtApi.updateAdminInfoTotal(this.row);
console.log(response);
const result = response.data;
if (result != null && result.retCode == '0000') {
this.row.title = '청약고객관리';
@@ -371,7 +362,6 @@ export default {
this.$refs.commmonModal.alertModalOpen(this.row);
}
} catch (error) {
console.log(error);
this.row.title = '청약고객관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
@@ -382,13 +372,11 @@ export default {
this.$router.push({ name: 'memberList', params: this.row });
},
excelPopOpen() {
console.log('memberInsertPopOpen >> ' + this.userTotalCnt);
if (this.userTotalCnt >= 100) {
// 사용자등록제한_최대100개까지
this.$refs.validationConfirmPopModal.validationMaxlimitOpen();
return false;
}
console.log(this.adminId);
this.$refs.memberBulkRegPop.excelPopOpen(this.adminId, this.totalItems);
},
memberUpdatePopOpen(target) {
@@ -397,7 +385,6 @@ export default {
this.$refs.memberModifyPop.memberUpdateModalOpen(this.row);
},
memberInsertPopOpen() {
console.log('memberInsertPopOpen >> ' + this.userTotalCnt);
if (this.userTotalCnt >= 100) {
// 사용자등록제한_최대100개까지
this.$refs.validationConfirmPopModal.validationMaxlimitOpen();
@@ -412,7 +399,6 @@ export default {
this.$refs.memoTatalListPop.memoTotalModalOpen(this.row);
},
deleteMember() {
console.log('delete count:' + this.selected.length);
if (this.selected.length === 0) {
this.row.title = '청약고객관리';
this.row.msg1 = '삭제대상을 체크해주세요.';
@@ -427,7 +413,6 @@ export default {
var serviceId = this.adminId;
this.row.list = this.selected.map((row) => ({ userId: row }));
this.row.adminId = this.adminId;
console.log(this.row);
try {
let response = await custMgtApi.deleteUser(this.row);
const result = response.data;
@@ -440,7 +425,6 @@ export default {
this.$refs.commmonModal.alertModalOpen(this.row);
}
} catch (error) {
console.log(error);
this.row = {};
this.row.title = '청약고객관리';
this.row.msg1 = '실패 하였습니다.';
@@ -462,7 +446,6 @@ export default {
this.$refs.form.submit();
},
confirmCalbackFnc(props) {
console.log(props);
if (props.result) {
this.memberDelete();
}

View File

@@ -1,295 +1,274 @@
<template>
<div class="contents">
<div class="contents_wrap">
<div class="top_wrap">
<h3 class="title">청약고객관리</h3>
<p class="breadcrumb">고객관리 &gt; 청약고객관리 &gt; 회원관리</p>
</div>
<div class="table table_form">
<form action=""
target="_blank"
method="post"
ref="form">
<input type="hidden" name="svcUserId" id="svcUserId" v-model="svcUserId"/>
<input type="hidden" name="ezSvcUserAuthKey" id="ezSvcUserAuthKey" v-model="ezSvcUserAuthKey"/>
</form>
<table>
<colgroup>
<col style="width:140px">
<col style="width:auto">
<col style="width:auto">
<col style="width:140px">
<col style="width:auto">
<col style="width:auto">
</colgroup>
<tbody>
<tr class="tr_input">
<th>이름</th>
<td colspan="2">
<input type="text" v-model="userNm" ref="_userNm">
</td>
</tr>
<tr>
<th>등록일</th>
<td colspan="2">{{regDt}}</td>
<th class="center">관리자 ID</th>
<td colspan="2">{{adminId}}</td>
</tr>
<tr>
<th>ID</th>
<td colspan="2">
{{userId}}
<button type="button" class="button grey btn-a" @click="homeLogin">로그인</button>
</td>
<th class="center">구분</th>
<td colspan="2">{{userType}}</td>
</tr>
<tr class="tr_input">
<th>휴대폰번호</th>
<td colspan="2">
<input type="text" v-model="mdn" ref="_phone">
</td>
<th class="center">이메일</th>
<td colspan="2">
<input type="text" v-model="email" ref="_email">
</td>
</tr>
<tr class="w30">
<th>잠금</th>
<td colspan="2">
<input type="radio" name="userStat" value="01" id="right_radio1" v-model="stat">
<label for="right_radio1">사용</label>
<input type="radio" name="userStat" value="02" id="right_radio2" v-model="stat">
<label for="right_radio2">정지</label>
</td>
<th class="center">최종접속일</th>
<td colspan="2">{{lastLoginDt}}</td>
</tr>
</tbody>
</table>
</div>
<div class="contents">
<div class="contents_wrap">
<div class="top_wrap">
<h3 class="title">청약고객관리</h3>
<p class="breadcrumb">고객관리 &gt; 청약고객관리 &gt; 회원관리</p>
</div>
<div class="pop-btn2">
<button class="btn-default" type="button" @click="toComplete();">취소</button>
<button class="btn-pcolor" type="button" @click="memberUpdate();">저장</button>
</div>
<div class="table table_form">
<form action="" target="_blank" method="post" ref="form">
<input type="hidden" name="svcUserId" id="svcUserId" v-model="svcUserId" />
<input type="hidden" name="ezSvcUserAuthKey" id="ezSvcUserAuthKey" v-model="ezSvcUserAuthKey" />
</form>
<table>
<colgroup>
<col style="width: 140px" />
<col style="width: auto" />
<col style="width: auto" />
<col style="width: 140px" />
<col style="width: auto" />
<col style="width: auto" />
</colgroup>
<tbody>
<tr class="tr_input">
<th>이름</th>
<td colspan="2">
<input type="text" v-model="userNm" ref="_userNm" />
</td>
</tr>
<tr>
<th>등록일</th>
<td colspan="2">{{ regDt }}</td>
<th class="center">관리자 ID</th>
<td colspan="2">{{ adminId }}</td>
</tr>
<tr>
<th>ID</th>
<td colspan="2">
{{ userId }}
<button type="button" class="button grey btn-a" @click="homeLogin">로그인</button>
</td>
<th class="center">구분</th>
<td colspan="2">{{ userType }}</td>
</tr>
<tr class="tr_input">
<th>휴대폰번호</th>
<td colspan="2">
<input type="text" v-model="mdn" ref="_phone" />
</td>
<th class="center">이메일</th>
<td colspan="2">
<input type="text" v-model="email" ref="_email" />
</td>
</tr>
<tr class="w30">
<th>잠금</th>
<td colspan="2">
<input type="radio" name="userStat" value="01" id="right_radio1" v-model="stat" />
<label for="right_radio1">사용</label>
<input type="radio" name="userStat" value="02" id="right_radio2" v-model="stat" />
<label for="right_radio2">정지</label>
</td>
<th class="center">최종접속일</th>
<td colspan="2">{{ lastLoginDt }}</td>
</tr>
</tbody>
</table>
</div>
<validation-confirm-pop ref="validationConfirmPopModal"> </validation-confirm-pop>
<div class="pop-btn2">
<button class="btn-default" type="button" @click="toComplete()">취소</button>
<button class="btn-pcolor" type="button" @click="memberUpdate()">저장</button>
</div>
<validation-confirm-pop ref="validationConfirmPopModal"> </validation-confirm-pop>
<common-modal ref="commmonModal"></common-modal>
</div>
</div>
</div>
</div>
</template>
<script>
import custMgtApi from "../service/custMgtApi.js";
import custMgtApi from '../service/custMgtApi.js';
import { utils_mixin, chkPattern2 } from '../service/mixins';
import ValidationConfirmPop from '../components/ValidationConfirmPop.vue';
import lodash from "lodash";
import commonModal from "@/components/modal/commonModal";
import lodash from 'lodash';
import commonModal from '@/components/modal/commonModal';
export default {
name: 'memberDetail',
mixins: [utils_mixin, chkPattern2],
watch:{
stat(){
console.log('watch : ', this.stat)
}
},
name: 'memberDetail',
mixins: [utils_mixin, chkPattern2],
watch: {
stat() {
},
},
data() {
return {
row:{},
userNm:'',
regDt: '',
userType: '',
userId: '',
adminId:'',
adminNm: '',
sendingLimit: '',
lineType: '',
userStat: '',
lastLoginDt: '',
userStat:'',
memo: '',
mdn : '',
email: '',
stat:'',
svcUserId:'',
ezSvcUserAuthKey:'',
homePageUrl: ''
}
},
return {
row: {},
userNm: '',
regDt: '',
userType: '',
userId: '',
adminId: '',
adminNm: '',
sendingLimit: '',
lineType: '',
userStat: '',
lastLoginDt: '',
userStat: '',
memo: '',
mdn: '',
email: '',
stat: '',
svcUserId: '',
ezSvcUserAuthKey: '',
homePageUrl: '',
};
},
props: {
serviceId: {
type: String,
default: "",
},
},
serviceId: {
type: String,
default: '',
},
},
components: {
commonModal,
ValidationConfirmPop,
},
created(){
if(this.$route.params.serviceId != null){
created() {
if (this.$route.params.serviceId != null) {
this.$store.commit('dataStore/updateUserId', this.$route.params.serviceId);
this.userId = this.$route.params.serviceId;
console.log('created : '+this.userId);
this.userId = this.$route.params.serviceId;
this.memberDetail(this.$route.params.serviceId);
}else{
var userId2 = this.$store.getters["dataStore/getUserId"];
this.userId = userId2;
console.log('created2 : '+this.userId);
} else {
var userId2 = this.$store.getters['dataStore/getUserId'];
this.userId = userId2;
this.memberDetail(this.userId);
}
},
},
destroyed() {
this.$store.commit('dataStore/updateUserId', '');
},
mounted() {
},
mounted() {},
methods: {
async memberDetail(serviceId){
this.svcUserId = serviceId;
this.row.userId = serviceId;
try {
const response = await custMgtApi.memberDetail(this.row);
const result = response.data;
console.log('>>>>>>>>>>>>');
console.log(result);
if (result != null && result.retCode == "0000") {
// isView
this.userNm = result.data.userNm;
this.userId = result.data.userId;
this.regDt = result.data.regDt;
this.userType = result.data.userType;
this.adminId = result.data.adminId;
this.adminNm = result.data.adminNm;
this.sendingLimit = result.data.sendingLimit;
this.lineType = result.data.lineType;
this.stat = result.data.userStat;
this.lastLoginDt = result.data.lastLoginDt;
this.memo = result.data.memo;
this.mdn = result.data.mdn;
this.email = result.data.email;
this.homePageUrl = result.data.homePageUrl;
this.ezSvcUserAuthKey = result.data.authKey;
}
} catch (error) {
console.log(error);
this.row.title = '청약고객관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
}
async memberDetail(serviceId) {
this.svcUserId = serviceId;
this.row.userId = serviceId;
try {
const response = await custMgtApi.memberDetail(this.row);
const result = response.data;
if (result != null && result.retCode == '0000') {
// isView
this.userNm = result.data.userNm;
this.userId = result.data.userId;
this.regDt = result.data.regDt;
this.userType = result.data.userType;
this.adminId = result.data.adminId;
this.adminNm = result.data.adminNm;
this.sendingLimit = result.data.sendingLimit;
this.lineType = result.data.lineType;
this.stat = result.data.userStat;
this.lastLoginDt = result.data.lastLoginDt;
this.memo = result.data.memo;
this.mdn = result.data.mdn;
this.email = result.data.email;
this.homePageUrl = result.data.homePageUrl;
this.ezSvcUserAuthKey = result.data.authKey;
}
} catch (error) {
this.row.title = '청약고객관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
}
},
async memberUpdate() {
if (!this.doValidate()) {
return false;
}
},
async memberUpdate(){
if(!this.doValidate()){
return false;
}
this.row.userId = this.userId;
this.row.userNm = this.userNm;
this.row.userEmail = this.email;
this.row.mdn = this.mdn;
this.row.userStat = this.stat;
try {
const response = await custMgtApi.updateUser(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.row.userId = this.userId;
this.row.userNm = this.userNm;
this.row.userEmail = this.email;
this.row.mdn = this.mdn;
this.row.userStat = this.stat;
try {
const response = await custMgtApi.updateUser(this.row);
const result = response.data;
if (result != null && result.retCode == '0000') {
this.row.title = '청약고객관리';
this.row.msg1 = '저장 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.toComplete();
} else {
} else {
this.row.title = '청약고객관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
}
} catch(err) {
}
} catch (err) {
this.row.title = '청약고객관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
}
}
},
// 저장 후 부모창 호출.
toComplete(){
this.$router.push({ name: 'memberList', params: this.row });
},
doValidate(){
if(this.isNull(this.userNm)){
this.row.title = '청약고객관리';
this.row.msg1 = '이름을 입력해 주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._userNm.focus();
return false;
}
if(this.isNull(this.email)){
this.row.title = '청약고객관리';
this.row.msg1 = '이메일을 입력해주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._email.focus();
return false;
}
const email = this.email;
if(!this.isNull(email) && !lodash.isEqual(email,'@') && !this.emailCheck(email)){
// 저장 후 부모창 호출.
toComplete() {
this.$router.push({ name: 'memberList', params: this.row });
},
doValidate() {
if (this.isNull(this.userNm)) {
this.row.title = '청약고객관리';
this.row.msg1 = '이름을 입력해 주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._userNm.focus();
return false;
}
if (this.isNull(this.email)) {
this.row.title = '청약고객관리';
this.row.msg1 = '이메일을 입력해주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._email.focus();
return false;
}
const email = this.email;
if (!this.isNull(email) && !lodash.isEqual(email, '@') && !this.emailCheck(email)) {
this.row.title = '청약고객관리';
this.row.msg1 = '이메일 형식이 잘못되었습니다. 확인해 주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._email.focus();
//this.$refs.validationConfirmPopModal.validationEmailOpen();
return false;
}
if(this.isNull(this.mdn)){
return false;
}
if (this.isNull(this.mdn)) {
this.row.title = '청약고객관리';
this.row.msg1 = '휴대폰번호를 입력해주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._phone.focus();
return false;
}
const hp = this.mdn;
if(!this.isNull(hp) && !this.isMobile(hp)){
this.$refs._phone.focus();
return false;
}
const hp = this.mdn;
if (!this.isNull(hp) && !this.isMobile(hp)) {
this.row.title = '청약고객관리';
this.row.msg1 = '휴대폰 번호 형식이 잘못되었습니다. 확인해 주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._phone.focus();
//this.$refs.validationConfirmPopModal.validationPhonenumberOpen();
return false;
}
if(this.isNull(this.stat)){
return false;
}
if (this.isNull(this.stat)) {
this.row.title = '청약고객관리';
this.row.msg1 = '상태를 선택 해주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
return false;
}
return false;
}
return true;
},
checkPhoneFocus(){
//this.mdn = '';
this.$refs._phone.focus();
return true;
},
checkEmailFocus(){
//this.email = '';
this.$refs._email.focus();
checkPhoneFocus() {
//this.mdn = '';
this.$refs._phone.focus();
},
homeLogin(){
this.$refs.form.action = this.homePageUrl;
this.svcUserId = this.userId
console.log('--------');
console.log(this.svcUserId);
checkEmailFocus() {
//this.email = '';
this.$refs._email.focus();
},
homeLogin() {
this.$refs.form.action = this.homePageUrl;
this.svcUserId = this.userId;
this.$refs.form.submit();
},
},

View File

@@ -241,7 +241,6 @@ export default {
let page = 1;
// 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log('getCondition : ' + getCondition);
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false;
@@ -256,7 +255,6 @@ export default {
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,
@@ -269,8 +267,6 @@ export default {
search: function (isKeep) {
this.grid.params.startDt = moment(this.startDate).format('YYYYMMDD');
this.grid.params.endDt = moment(this.endDate).format('YYYYMMDD');
console.log('this.perPageCnt' + this.perPageCnt);
console.log(this.grid.params);
this.grid.params.searchType1 = this.searchType1;
this.grid.params.searchType2 = this.searchType2;
this.grid.params.searchType3 = this.searchType3;
@@ -299,7 +295,6 @@ export default {
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
// console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
@@ -307,7 +302,6 @@ export default {
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
// console.log("getCondition : "+ getCondition.perPage);
},
setCodeData() {
@@ -323,9 +317,6 @@ export default {
setPeriodDay(day) {
this.periodDay = day;
this.endDate = new Date();
//this.startDate = moment(this.endDate)
// .subtract(day, 'day')
// .toDate();
this.initSetStartDate();
this.closeDate('start');
@@ -339,8 +330,6 @@ export default {
if (this.startDate > this.endDate) {
this.startDate = this.endDate;
}
console.log(this.disabledSDate)
// this.grid.params.startDt = day
},
selectedEndDate(day) {
if (day != undefined && day != null) {
@@ -371,7 +360,6 @@ export default {
let setYear = Number(moment(new Date()).format('YYYY'));
let initStartDate = new Date(setYear, 0, 1);
this.startDate = initStartDate;
console.log(moment(this.startDate).format('YYYY-MM-DD'));
},
},

View File

@@ -180,7 +180,7 @@ import custMgtApi from "../service/custMgtApi.js";
import CarryOverListPop from '../components/CarryOverListPop';
import ValidationConfirmPop from '../components/ValidationConfirmPop';
import AdminNmPop from '../components/AdminNmPop';
import commonModal from "@/components/modal/commonModal";
import commonModal from "../components/commonModal";
//import { mapGetters } from 'vuex';
export default {
@@ -228,15 +228,12 @@ export default {
},
components: {
CarryOverListPop,
//ConfirmPop,
//SearchIDPop,
ValidationConfirmPop,
AdminNmPop,
commonModal,
},
created() {
console.log(this.$route.params.serviceId);
this.$store.commit("login/isLogin", true);
if(this.$route.params.serviceId != null){ // 리스트에서 상세 호출시
@@ -245,7 +242,6 @@ export default {
this.setMenuActive();
}else{ // 상세 화면에서 새로고침 호출시
var serviceId = this.$store.getters["dataStore/getDataStore"];
console.log('serviceId : '+serviceId);
this.subsDetail(serviceId);
}
},
@@ -254,16 +250,10 @@ export default {
this.$store.commit('dataStore/updateDataStore', '');
},
methods: {
callAlert(props) {
//alert("호출됨!");
callAlert(props) {
this.$refs.commmonModal.alertModalOpen(props);
},
doValidate() {
// if(this.isNull(this.userId)){
// alert("아이디를 입력해 주세요.");
// this.$refs._userId.focus();
// return false;
// }
return true;
},
// 저장 후 부모창 호출.
@@ -283,7 +273,6 @@ export default {
try {
const response = await custMgtApi.subsDetail(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
//데이터값이 널이면 오류처리
this.custNm = result.data.custNm;
@@ -319,6 +308,10 @@ export default {
this.cprRegNo1 = this.cprRegNo.substr(0, 6);
this.cprRegNo2 = this.cprRegNo.substr(6);
}
}else{
this.row.title = '청약고객관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
}
} catch (error) {
this.row.title = '청약고객관리';
@@ -337,7 +330,6 @@ export default {
try {
const response = await custMgtApi.updateAdminInfo(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.row.title = '청약고객관리';
this.row.msg1 = '저장 하였습니다.';
@@ -365,14 +357,11 @@ export default {
},
confirmCalbackFnc: function (props) {
console.log(props);
if (props.result) {
// this.doInsert(props.result);
}
},
searchIDPopOpen: function () {
var params = {
// "serviceId": this.row.serviceId,
"serviceId": this.serviceId,
"serviceSeq": '',
"parentDiv": 'subsDetail'
@@ -380,7 +369,6 @@ export default {
this.$refs.adminNmPop.ModalOpen(params);
},
goMemberDetail: function (props) {
console.log(this.row);
this.$router.push({name: 'memberAdminDetail', params: {serviceId: this.row.serviceId}});
},
@@ -392,6 +380,11 @@ export default {
nowMenu[0].classList.add('is-current');
//menuList.classList.add('is-current');
},
// 조회후 모달창 닫기
checkFocus(){
this.$router.go(-1);
}
}
}

View File

@@ -1,6 +1,6 @@
<template>
<div class="contents">
<div class="contents">
<div class="contents_wrap">
<div class="top_wrap">
<h3 class="title">청약고객관리</h3>
@@ -248,7 +248,6 @@ export default {
let page = 1;
// 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log('getCondition : ' + getCondition);
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false;
@@ -263,7 +262,6 @@ export default {
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,
@@ -276,8 +274,6 @@ export default {
search: function (isKeep) {
this.grid.params.startDt = moment(this.startDate).format('YYYYMMDD');
this.grid.params.endDt = moment(this.endDate).format('YYYYMMDD');
console.log('this.perPageCnt' + this.perPageCnt);
console.log(this.grid.params);
this.grid.params.searchType1 = this.searchType1
this.grid.params.searchType2 = this.searchType2
@@ -290,7 +286,6 @@ export default {
this.$router.push({name: routeName, params: {page: 1, searchText: ''}});
},
custDetail(props) {
console.log(props);
this.row.serviceId = props.serviceId;
this.$router.push({name: 'subsDetail', params: this.row});
},
@@ -300,7 +295,6 @@ export default {
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
@@ -308,7 +302,6 @@ export default {
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log("getCondition : " + getCondition.perPage);
},
setCodeData() {
// 상태 옵션 셋팅.
@@ -360,7 +353,6 @@ export default {
header: this.excelHeader,
dataOrder: 'header'
};
// console.log(data);
xlsx.export(data.list, saveFileName, options).then(() => {
});
},
@@ -373,9 +365,6 @@ export default {
setPeriodDay(day) {
this.periodDay = day;
this.endDate = new Date();
// this.startDate = moment(this.endDate)
// .subtract(day, 'day')
// .toDate();
this.initSetStartDate();
this.closeDate('start');
@@ -389,8 +378,7 @@ export default {
if (this.startDate > this.endDate) {
this.startDate = this.endDate;
}
console.log(this.disabledSDate)
// this.grid.params.startDt = day
},
selectedEndDate(day) {
if (day != undefined && day != null) {
@@ -421,7 +409,6 @@ export default {
let setYear = Number(moment(new Date()).format('YYYY'));
let initStartDate = new Date(setYear, 0, 1);
this.startDate = initStartDate;
console.log(moment(this.startDate).format('YYYY-MM-DD'));
},
},
};

View File

@@ -90,7 +90,6 @@ export default {
this.msg3 = props.msg3;
this.msg4 = props.msg4;
this.callFnc = props.callFnc;
console.log(props)
},
alertModalClose(){
var dimmed = document.getElementsByClassName('modal01');

View File

@@ -2,6 +2,7 @@ import LoginMain from '../views/LoginMain'
import LoginAuth from '../views/LoginAuth'
import ResetPassword from '../views/ResetPassword'
import UpdatePassword from '../views/UpdatePassword'
// import Error404 from '@/views/ErrorPage404';
export default [
{
@@ -28,4 +29,10 @@ export default [
component: UpdatePassword,
meta: { public: true }
},
// {
// path: '/view/error/404',
// name: 'error404',
// component: Error404,
// meta: { public: true }
// },
]

View File

@@ -1,26 +1,11 @@
import httpClient from '@/common/http-client';
import axios from 'axios';
import { consts } from '@/common/config';
const login = (params) => {
return httpClient.post('/api/v1/bo/login/login', params, { headers: {"show-layer": "Yes"} },{ withCredentials: false });
};
const chgpwd = (params) => {
return httpClient.post('/api/oper/user/chgpwd', params);
};
const myphone = () => {
return httpClient.get('/api/oper/user/phone/self');
};
const phone = (params) => {
return httpClient.get('/api/public/auth/phone', { params: params });
};
// 삭제 예정
const reqnum = (params) => {
return httpClient.get('/api/public/auth/reqnum', { params: params });
};
const authNum = (params) => {
return httpClient.post('/api/v1/bo/login/authNum', params);
};
@@ -38,26 +23,31 @@ const updatePassword = (params) => {
return httpClient.post('/api/v1/bo/login/updatePassword', params);
};
const newpwd = (params) => {
return httpClient.post('/api/public/auth/newpwd', params);
};
const logout = () => {
//return httpClient.get('/api/auth/logout', {headers: {"show-layer": "Yes"}});
return httpClient.post('/api/v1/bo/login/logout', {headers: {"show-layer": "Yes"}});
};
const loginCheck = (params) => {
return httpClient.post('/api/v1/bo/login/loginCheck', params, { headers: {"show-layer": "Yes"} },{ withCredentials: false });
};
const setToken = (token) => {
consts.authToken = token;
}
const getToken = () => {
return consts.authToken;
}
export default {
login,
logout,
chgpwd,
myphone,
phone,
reqnum,
confirmNum,
newpwd,
authNum,
resetPassword,
updatePassword
updatePassword,
loginCheck,
setToken,
getToken
};

View File

@@ -6,7 +6,11 @@ const state = {
userId:null,
userNm:null,
pwd: null,
rootUrl: null
rootUrl: null,
menuUrls: [],
authToken: null,
beforeUrl: null,
isLoading: false,
};
const getters = {
@@ -17,28 +21,30 @@ const getters = {
userId: state => state.userId,
userNm: state => state.userNm,
getPwd: state => state.pwd,
getRootUrl: state => state.rootUrl
getRootUrl: state => state.rootUrl,
getMenuUrls: state => state.menuUrls,
getAuthToken: state => state.authToken,
getBeforeUrl: state => state.beforeUrl,
isLoading: state => state.isLoading,
};
const mutations = {
saveToken: (state, token) => {
console.log('saveToken:', token);
state.token = token;
},
removeToken: (state) => {
console.log('removeToken:');
state.token = null;
},
isLogin: (state, value) => {
console.log("isLogin mutation : " + value);
// console.log("isLogin mutation : " + value);
state.isLogin = value;
},
isErrorPage: (state, value) => {
console.log("isErrorPage mutation : " + value);
// console.log("isErrorPage mutation : " + value);
state.isErrorPage = value;
},
isAuthChk: (state, value) => {
console.log("isAuthChk mutation : "+ value);
// console.log("isAuthChk mutation : "+ value);
state.isAuthChk = value;
},
savePwd: (state, value) => {
@@ -52,6 +58,18 @@ const mutations = {
},
rootUrl: (state, value) => {
state.rootUrl = value;
},
setMenuUrls: (state, value) => {
state.menuUrls = value;
},
saveAuthToken: (state, token) => {
state.authToken = token;
},
saveBeforeUrl: (state, value) => {
state.beforeUrl = value;
},
isLoading: (state, value) => {
state.isLoading = value;
}
};

View File

@@ -45,12 +45,14 @@ import { mapGetters } from 'vuex';
import api from '../service/api';
import { utils_mixin, chkPattern2 } from '../service/mixins';
import commonModal from "../components/commonModal";
import tokenSvc from '@/common/token-service';
import axios from 'axios';
export default {
name: 'Params',
mixins: [utils_mixin, chkPattern2],
props: {
userId: {
userIds: {
type: String,
default : ''
}
@@ -72,26 +74,29 @@ export default {
timer: null,
timeCounter: 180,
timerStr: "03:00",
tempList: []
tempList: [],
accessToken: '',
};
},
components: {
commonModal
},
created() {
if(!this.getLogin){
this.$router.push({ path: '/login' });
}
// if(!this.getLogin){
// this.$router.push({ path: '/login' });
// }
},
mounted() {
if (localStorage.hubwebUserId) {
this.oprtrId = localStorage.hubwebUserId;
}
// if (localStorage.hubwebUserId) {
// this.oprtrId = localStorage.hubwebUserId;
// }
this.$store.commit("login/isLogin", false);
this.isLogin = this.getLogin;
this.pwd = this.getPwd;
this.accessToken = this.getToken;
this.oprtrId = this.userId;
this.ajaxlogin();
},
computed: {
@@ -99,7 +104,9 @@ export default {
getLogin: 'login/isLogin',
getErrorPage: 'login/isErrorPage',
getAuthChk: 'login/isAuthChk',
getPwd: 'login/getPwd'
getPwd: 'login/getPwd',
getToken: 'login/getToken',
userId: 'login/userId',
}),
},
watch: {
@@ -121,47 +128,63 @@ export default {
} else {
this.isAuth = false;
}
}
},
getToken(data){
if (data != null && data != '') {
this.accessToken = data;
} else {
this.accessToken = '';
}
},
// userId(data){
// if (data != null && data != '') {
// this.oprtrId = data;
// } else {
// this.oprtrId = '';
// }
// }
},
destroyed() {
let cont = document.querySelector(".wrap");
cont.classList.remove("bg-wrap");
},
methods: {
// 1차 인증
async ajaxlogin() {
methods: {
async ajaxlogin() {
var vm = this;
vm.errors = null;
if (!this.oprtrId){
this.$router.push({ path: '/login' });
}
if (!this.pwd){
this.$router.push({ path: '/login' });
}
var params = {
"oprtrId": this.oprtrId,
"oprtrPw": this.pwd,
"accessToken": this.accessToken
}
try {
const response = await api.login(params);
const rsp = response.data;
const response = await api.loginCheck(params);
const rsp = response.data;
if(rsp.retCode == '0000'){
vm.$store.commit("login/isLogin", true);
} else {
var accessToken = rsp.data.accessToken;
if(vm.accessToken == accessToken){
vm.$store.commit("login/isLogin", true);
vm.$store.commit("login/removeToken", true);
}else{
vm.$store.commit("login/isLogin", false);
this.$router.push({ path: '/login' });
}
} else {
vm.$store.commit("login/isLogin", false);
this.$router.push({ path: '/login' });
}
} catch(err) {
vm.$store.commit("login/isLogin", false);
this.$router.push({ path: '/login' });
}
},
// 2차 인증번호 요청
async authNum(){
var vm = this;
let userId = vm.$route.params.userId;
//let userId = vm.$route.params.userId;
let userId = this.oprtrId;
this.row = {}
if(!this.isLogin){
@@ -240,8 +263,9 @@ export default {
// 2차 인증 확인
async ajaxAuth(){
var vm = this;
let userId = vm.$route.params.userId;
var vm = this;
let userId = this.oprtrId
this.row = {}
if(!this.mdn){
this.row.title = '휴대폰번호 확인';
@@ -278,18 +302,32 @@ export default {
"isLogin": this.isLogin,
"oprtrPw": this.pwd
}
//인증번호 확인
try {
const response = await api.confirmNum(params)
//const response = await axios.post('/api/v1/bo/login/confirmNum', params);
const rsp = response.data;
if(rsp.retCode == '0000'){
vm.$store.commit("login/isLogin", true);
vm.$store.commit("login/isAuthChk", true);
vm.$store.commit("login/userId", rsp.data.userId)
vm.$store.commit("login/userNm", rsp.data.userNm)
vm.$store.commit("login/userId", rsp.data.userId);
vm.$store.commit("login/userNm", rsp.data.userNm);
var rootUrl = rsp.data.nextUrl;
vm.$store.commit("login/rootUrl", rsp.data.nextUrl);
vm.$store.commit("login/rootUrl", rsp.data.nextUrl);
var menuUrls = rsp.data.menuUrls;
menuUrls.push('/');
menuUrls.push('/login');
menuUrls.push('/view/login/auth');
menuUrls.push('/view/login/updatePassword');
menuUrls.push('/view/login/resetPassword');
menuUrls.push('/view/error/404');
menuUrls.push('/view/error/500');
vm.$store.commit("login/setMenuUrls", menuUrls);
vm.$store.commit("login/saveAuthToken", rsp.data.authToken);
//localStorage.authToken = rsp.data.authToken;
sessionStorage.setItem('authToken', rsp.data.authToken);
//api.setToken(rsp.data.authToken);
vm.$router.push({ path: rootUrl});
}else if (rsp.retCode == '4008'){
this.row.title = '휴대폰번호 확인';
@@ -316,7 +354,6 @@ export default {
vm.$router.push({ path: '/'});
}
} catch(err) {
//alert("실패 하였습니다.");
this.row.title = '인증번호';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);

View File

@@ -43,17 +43,18 @@ export default {
userPwd: ''
};
},
created() {
created() {
// 로그인 페이지 진입시
if(tokenSvc.getToken()){
this.$store.commit("login/isLogin", true);
this.$store.commit("login/isAuthChk", true);
this.$router.push({ path: '/' });
}else{
// if(!tokenSvc.getToken()){
// this.$store.commit("login/isLogin", true);
// this.$store.commit("login/isAuthChk", true);
// //this.$router.push({ path: '/' });
// }else{
this.$store.commit("login/isLogin", false);
this.$store.commit("login/isAuthChk", false);
this.$store.commit("login/isErrorPage", false);
}
//delete sessionStorage.authToken;
// }
},
mounted() {
this.$refs.chkSaveId.checked = true;
@@ -61,6 +62,7 @@ export default {
if (localStorage.hubwebUserId) {
this.userId = localStorage.hubwebUserId;
}
//localStorage.authToken = '';
},
destroyed() {
let cont = document.querySelector(".wrap");
@@ -113,12 +115,20 @@ export default {
const response = await api.login(params)
const rsp = response.data;
if(rsp.retCode == '0000'){
if(rsp.retCode == '0000'){
vm.chgChkUserId();
//vm.$store.commit("login/savePwd", oprtrPw);
if(rsp.data == null){
vm.$store.commit("login/isLogin", false);
return;
}
vm.$store.commit("login/isLogin", true);
vm.$store.commit("login/savePwd", oprtrPw);
vm.$router.push({ name: 'loginAuth',params: {userId : oprtrId}});
var rspToken = rsp.data.accessToken;
vm.$store.commit("login/saveToken", rspToken);
vm.$store.commit("login/userId", this.userId);
vm.$store.commit("login/savePwd", this.userPwd);
vm.$router.push({ path: rsp.data.nextUrl, params: {accessToken : rspToken}});
} else if(rsp.retCode == '1001'){ // 비밀번호 변경
vm.chgChkUserId();
this.$store.commit("login/isLogin", true);
@@ -127,13 +137,14 @@ export default {
this.row.title = '로그인 실패';
this.row.msg1 = '아이디, 비밀번호를 확인해 주세요.';
this.$refs.commonModal.alertModalOpen(this.row);
this.$store.commit("login/isLogin", false);
} else if(rsp.retCode == '4004') { // ID/PWD 불일치
//this.row.title = '비밀번호 오류';
//this.row.msg1 = '비밀번호를 확인해주세요.';
this.row.title = '로그인 실패';
this.row.msg1 = '아이디, 비밀번호를 확인해 주세요.';
this.$refs.commonModal.alertModalOpen(this.row);
this.$store.commit("login/isLogin", false);
} else if(rsp.retCode == '4005') { // ID/PWD 불일치 횟수초과로 계정 잠김 4005
this.$store.commit("login/isLogin", false);
this.row.title = '로그인 실패';
this.row.msg1 = '로그인 5회 실패하였습니다.';
this.row.msg2 = '비밀번호 초기화 후 비밀번호를 변경해 주세요.';
@@ -147,7 +158,9 @@ export default {
this.row.msg3 = '이용 부탁드립니다.';
this.row.callFnc = 'updatePassword'
this.$refs.commonModal.alertModalOpen(this.row);
this.$store.commit("login/isLogin", false);
} else if(rsp.retCode == '4007') {
this.$store.commit("login/isLogin", false);
this.row.title = '로그인 실패';
this.row.msg1 = '아이디 상태를 확인해 주세요.';
this.row.msg2 = '(사용중인 상태만 로그인 가능합니다.)';
@@ -160,6 +173,7 @@ export default {
this.row.title = '로그인';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$store.commit("login/isLogin", false);
}
},

View File

@@ -64,7 +64,6 @@ export default {
try {
const response = await api.resetPassword(params)
const rsp = response.data;
console.log("RESULT_CODE : "+rsp.retCode);
if(rsp.retCode == '0000'){
this.row.title = '비밀번호 초기화';
@@ -74,7 +73,6 @@ export default {
vm.$store.commit("login/isLogin", false);
vm.$store.commit("login/isAuthChk", false);
this.$refs.commonModal.alertModalOpen(this.row);
// console.log(this.row)
} else if(rsp.retCode == '4003') {
this.row.title = '비밀번호 초기화';
@@ -83,7 +81,6 @@ export default {
this.$refs.commonModal.alertModalOpen(this.row);
}
} catch(err) {
console.log(err)
this.row.title = '비밀번호 초기화';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commonModal.alertModalOpen(this.row);

View File

@@ -39,12 +39,9 @@ export default {
}
},
created() {
console.log('>>>>'+this.getLogin);
if(!this.getLogin){
this.$router.push({ path: '/login' });
}
// this.$store.commit("login/isLogin", true);
// this.$store.commit("login/isAuthChk", false);
},
computed: {
...mapGetters({
@@ -64,7 +61,6 @@ export default {
commonModal,
},
mounted() {
// this.$refs.chkSaveId.checked = true;
if (localStorage.hubwebUserId) {
this.userId = localStorage.hubwebUserId;
@@ -88,8 +84,6 @@ export default {
},
doPwdValidate(){
console.log(this.userId)
//debugger;
if(lodash.isNull(this.newPw)){
this.row.title = '비밀번호 변경';
this.row.msg1 = '비밀번호 확인을 입력해 주세요.';
@@ -140,7 +134,6 @@ export default {
try {
const response = await api.updatePassword(params)
const rsp = response.data;
console.log("RESULT_CODE : "+rsp.retCode);
if(rsp.retCode == '0000') {
this.row.title = '비밀번호 변경';
this.row.msg1 = '비밀번호가 정상적으로 변경되었습니다.';
@@ -164,8 +157,6 @@ export default {
}
} catch(err) {
//alert("실패 하였습니다.");
console.log(err)
this.row.title = '비밀번호 초기화';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commonModal.alertModalOpen(this.row);
@@ -193,7 +184,6 @@ export default {
this.$refs.oldPw.focus(target);
},
alertCalbackFnc(callFnc){
console.log(callFnc);
if(callFnc === 'login'){
this.$router.push({ name: 'login',params: {}});
}

View File

@@ -80,8 +80,6 @@ export default {
},
methods :{
alertModalOpen(props){
console.log('>>>>>>>>>> alertModalOpen');
console.log(props.msg1);
this.title = props.title;
this.msg1 = props.msg1;
this.msg2 = props.msg2;

View File

@@ -242,11 +242,9 @@ export default {
},
methods: {
async getLiveSendSttus(){
console.log('getLiveSendSttus Start');
try {
const response = await mntrngApi.liveSendSttus();
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.startTimeM = result.data.startTimeM;
@@ -294,15 +292,12 @@ export default {
this.succesCntAlmtD = result.data.succesCntAlmtD;
this.succesRtAlmtD = result.data.succesRtAlmtD;
} else {
alert("조회정보가 없습니다.");
}
} catch(err) {
alert("실패 하였습니다.");
}
},
switchSelect: function(event) {
this.selectedKey = event.target.value;
console.log('>>>>>>>>>>>> [selectedKey]:'+this.selectedKey)
this.changeAutoUpdate();
},
cancelAutoUpdate () {
@@ -311,7 +306,6 @@ export default {
changeAutoUpdate () {
clearInterval(this.timer)
this.timer = setInterval(this.getLiveSendSttus, this.selectedKey * 1000 * 60)
console.log('>>>>>>>>>>>> [changeAutoUpdate()_selectTime]:'+this.selectedKey * 1000 * 60)
}
},

View File

@@ -223,7 +223,6 @@ export default {
let page = 1;
// 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log('getCondition : ' + getCondition);
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false;
@@ -238,7 +237,6 @@ export default {
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,
@@ -259,7 +257,6 @@ export default {
this.grid.params.phone = this.grid.params.searchText1;
this.grid.params.callbackNumber = this.grid.params.searchText2;
this.grid.params.custNm = this.grid.params.searchText3;
console.log(this.grid.params);
}
}
this.$refs.table.search(this.grid.params, isKeep);
@@ -283,8 +280,7 @@ export default {
if (this.startDate > this.endDate) {
this.startDate = this.endDate;
}
// console.log(this.disabledSDate)
// this.grid.params.startDt = day
},
selectedEndDate(day) {
if (day != undefined && day != null) {
@@ -317,7 +313,6 @@ export default {
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
@@ -325,7 +320,6 @@ export default {
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log("getCondition : " + getCondition.perPage);
},
doValidate() {
// 발송일자 필수입력체크

View File

@@ -136,7 +136,6 @@ export default {
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);
@@ -153,7 +152,6 @@ export default {
}
this.toComplete();
} catch (err) {
console.log(err);
this.row.title = '발신번호 차단';
this.row.msg1 = '실패 하였습니다.';
this.$parent.alertInsert(this.row);
@@ -222,7 +220,6 @@ export default {
const character = characters[i]
const decimal = character.charCodeAt(0)
const byte = this.getByteLength(decimal) // 글자 한 개가 몇 바이트 길이인지 구해주기
// console.log(byte)
// 현재까지의 바이트 길이와 더해 최대 바이트 길이를 넘지 않으면
if (totalByte + byte <= maxByte) {
totalByte += byte // 바이트 길이 값을 더해 현재까지의 총 바이트 길이 값을 구함

View File

@@ -140,8 +140,6 @@ export default {
this.row.memo = this.memo;
this.row.blckYn = this.blckYn;
this.row.list = this.msgBlckwordList
console.log(this.row)
// return false;
try {
const response = await riskMgtApi.msgInsertIntrcp(this.row);
const result = response.data;
@@ -226,7 +224,6 @@ export default {
const character = characters[i]
const decimal = character.charCodeAt(0)
const byte = this.getByteLength(decimal) // 글자 한 개가 몇 바이트 길이인지 구해주기
// console.log(byte)
// 현재까지의 바이트 길이와 더해 최대 바이트 길이를 넘지 않으면
if (totalByte + byte <= maxByte) {
totalByte += byte // 바이트 길이 값을 더해 현재까지의 총 바이트 길이 값을 구함

View File

@@ -106,7 +106,6 @@ export default {
try {
const response = await riskMgtApi.intrcpDetail(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.blckSndrno = result.data.blcksndrno;
this.sndblckTpCd = result.data.sndblckTpCd;
@@ -117,7 +116,6 @@ export default {
this.meno = result.data.meno;
}
} catch(err) {
alert("실패 하였습니다.");
}
var dimmed = document.getElementsByClassName('modal53');
for(var i = 0; i < dimmed.length; i++){
@@ -144,7 +142,6 @@ export default {
//삭제버튼
async IntrcpDeleteModal(){
this.setCodeDate();
// if(window.confirm('삭제 하시겠습니까?')){
try {
const response = await riskMgtApi.deleteIntrcp(this.row);
const result = response.data;
@@ -152,22 +149,16 @@ export default {
this.row.title = '발신번호 차단';
this.row.msg1 = '삭제하였습니다.';
this.$parent.alertInsert(this.row);
// grid.reloadData();
// this.$refs.table.reloadData();
this.toComplete();
}
} catch(err) {
alert("실패 하였습니다.");
}
// }
},
//수정버튼
async IntrcpUpdateModal(){
// if(this.doValidate() && window.confirm('수정 하시겠습니까?')){
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 = '수정 하였습니다.';
@@ -175,7 +166,6 @@ export default {
this.toComplete();
}
} catch(err) {
alert("실패 하였습니다.");
}
// }
},
@@ -216,11 +206,7 @@ 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

View File

@@ -140,29 +140,21 @@ export default {
},
async IntrcpMsgDetailModalOpen(props) {
this.setCodeDate();
// console.log(props);
this.row.seqNo = props.seqNo;
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;
this.blckRsnCd = result.data.blckRsnCd;
this.memo = result.data.memo;
this.blckYn = result.data.blckYn;
this.msgBlckwordList = result.data.list;
// this.row.chgDt = result.data.chgDt;
// this.row.regId = result.data.regId;
// this.row.list = result.data.msgBlckwordList
}
} catch (err) {
// alert("실패 하였습니다.");
}
console.log(this.blckContCd);
console.log('-----------')
console.log(this.row)
var dimmed = document.getElementsByClassName('modal58');
for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'block';
@@ -314,7 +306,6 @@ export default {
const character = characters[i]
const decimal = character.charCodeAt(0)
const byte = this.getByteLength(decimal) // 글자 한 개가 몇 바이트 길이인지 구해주기
// console.log(byte)
// 현재까지의 바이트 길이와 더해 최대 바이트 길이를 넘지 않으면
if (totalByte + byte <= maxByte) {
totalByte += byte // 바이트 길이 값을 더해 현재까지의 총 바이트 길이 값을 구함

View File

@@ -248,7 +248,6 @@ export default {
},
methods: {
search: function (isKeep) {
console.log(this.grid.params);
this.grid.params.blckDt = moment(this.startDate).format('YYYYMMDD');
this.grid.params.blckTpCd = this.blckTpCd
this.grid.params.blckRsnCd = this.blckRsnCd
@@ -258,7 +257,6 @@ export default {
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
@@ -266,7 +264,6 @@ export default {
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
//console.log("getCondition : "+ getCondition.perPage);
},
setPeriodDay(day) {
this.periodDay = day;
@@ -281,7 +278,6 @@ export default {
if (day != undefined && day != null) {
this.periodDay = day;
}
console.log(this.startDate);
},
selectedEndDate(day) {
if (day != undefined && day != null) {
@@ -292,7 +288,6 @@ export default {
if (type != undefined && type != null) {
}
console.log(this.startDate);
},
customFormatter: function (date) {
if (this.sDateDiv == 'month') {
@@ -305,10 +300,6 @@ export default {
},
//회원 상세페이지로 이동
custDetail(props) {
//this.row.custNm = props.serviceId;
console.log('=-==-=-=-=');
console.log(props);
this.row.serviceId = props.serviceId;
this.$router.push({name: 'subsDetail', params: this.row});
},
@@ -350,7 +341,6 @@ export default {
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,

View File

@@ -115,7 +115,6 @@ class CustomATagRenderer {
addEvent(selEl) {
selEl.addEventListener("click", () => {
const {callback} = this.props["cgrido" + this.props.colName].options;
console.log(this.props);
callback(this.props);
});
}
@@ -214,11 +213,9 @@ export default {
},
methods: {
search: function (isKeep) {
console.log(this.grid.params);
this.grid.params.blckRsnCd = this.blckRsnCd
this.grid.params.blckYn = this.blckYn
this.grid.params.sndblckTpCd = this.sndblckTpCd
//this.grid.pagePerRows = this.perPageCnt
this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData();
@@ -229,7 +226,6 @@ export default {
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
@@ -237,7 +233,6 @@ export default {
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log("getCondition : " + getCondition.perPage);
},
setCodeData() {
// 상태 옵션 셋팅.
@@ -257,34 +252,22 @@ export default {
this.$refs.insertIntrcpPop.ModalOpen();
},
inDetailPop(props) {
console.log('======');
console.log(props);
this.$refs.intrcpDetailPopup.IntrcpDetailModalOpen(props);
},
// formReset(){
// var type= this.insertType;
// Object.assign(this.$data, this.$options.data());
// this.insertType = type;
// },
alertInsert(props) {
console.log(props);
this.$refs.commonModal.alertModalOpen(props);
},
confirmInsert(props) {
this.$refs.commonModal.confirmModalOpen(props);
},
confirmCalbackFnc: function (props) {
// if(props.result){
// // this.doInsert(props.result);
// }
},
},
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,

View File

@@ -185,7 +185,6 @@ export default {
},
methods: {
search: function (isKeep) {
console.log(this.grid.params);
this.grid.params.blckRsnCd = this.blckRsnCd;
this.grid.pagePerRows = this.perPageCnt
@@ -198,7 +197,6 @@ export default {
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
@@ -206,13 +204,11 @@ export default {
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
//console.log("getCondition : "+ getCondition.perPage);
},
ModalOpen: function (target) {
this.$refs.InsertMsgPop.ModalOpen(target);
},
msgDetailPop(props) {
// console.log(props);
this.$refs.IntrcpMsgDetail.IntrcpMsgDetailModalOpen(props);
},
msgAlertModalOpen(props) {
@@ -223,7 +219,6 @@ export default {
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,

View File

@@ -193,8 +193,6 @@ export default {
},
methods: {
search: function (isKeep) {
console.log('this.perPageCnt' + this.perPageCnt);
//console.log(this.grid.params);
this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData();
},
@@ -203,7 +201,6 @@ export default {
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
@@ -211,11 +208,9 @@ export default {
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
//console.log("getCondition : "+ getCondition.perPage);
},
//회원 상세페이지로 이동
memberDetail(props) {
console.log(props);
this.row.serviceId = props.userId;
this.$router.push({name: 'subsDetail', params: this.row});
}
@@ -223,7 +218,6 @@ export default {
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,

View File

@@ -59,10 +59,6 @@ export default {
},
setAdminInfo: function(props){
console.log(props);
// console.log('childData', this.$parent.childData)
// this.getParent('numberRegPop').setAdminInfo(props);
// this.$emit('event-data', changeData)
this.$emit('event-data', props)
this.adminNmPopClose();
},
@@ -76,7 +72,6 @@ export default {
},
// 모달 끄기
adminNmPopClose(){
console.log('adminNm modal close');
var dimmed = document.getElementsByClassName('modal44');
for(var i = 0; i < dimmed.length; i++){
dimmed[i].style.display = 'none';
@@ -88,15 +83,11 @@ export default {
this.row.searchText1 = this.searchText1
const response = await sendNumMgtApi.adminList(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.list = result.data.list
}
} catch (error) {
// this.row.title = '청약고객관리';
// this.row.msg1 = '실패 하였습니다.';
// this.$refs.commmonModal.alertModalOpen(this.row);
alert(error);
} catch (error) {
}
},
formReset(){

View File

@@ -106,10 +106,8 @@ import commonModal from "@/components/modal/commonModal";
export default {
name: "numberRegPop",
// mixins: [utils_mixin, chkPattern2],
watch:{
nmineeDivCd(){
console.log('watch : ', this.nmineeDivCd)
}
},
data(){
@@ -164,19 +162,14 @@ export default {
},
async apprDetail(props){
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.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
@@ -190,7 +183,6 @@ export default {
this.memo = result.data.memo
this.cmpltDt = result.data.cmpltDt
console.log(this.reqNo)
var apprCnt=0;
var rejtCnt=0;
this.numList.forEach(function(value, index) {
@@ -223,7 +215,6 @@ export default {
},
allApprSttus(event) {
var data = event.target.value;
console.log(data);
this.numList.forEach(function(value, index) {
value.sttusCd = data
});
@@ -236,7 +227,6 @@ export default {
var apprCnt=0;
var rejtCnt=0;
this.numList.forEach(function(value, index) {
// value.sttusCd = data
if(value.sttusCd == '01' || value.sttusCd == '02' ){
apprCnt = apprCnt + 1;
}else if(value.sttusCd == '03'){
@@ -250,7 +240,6 @@ export default {
}
},
updateSttus(){
// 컨펌??
this.doSave()
},
async doSave(){
@@ -259,11 +248,9 @@ export default {
this.row.adminId = this.adminId
this.row.list = this.numList
console.log(this.row)
try{
const response = await sendNumMgtApi.updateAppr(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.apprDetailPopClose()
this.$parent.search()

View File

@@ -101,7 +101,7 @@ export default {
// mixins: [utils_mixin, chkPattern2],
watch:{
nmineeDivCd(){
console.log('watch : ', this.nmineeDivCd)
// console.log('watch : ', this.nmineeDivCd)
}
},
data(){
@@ -149,7 +149,6 @@ export default {
numberDetailPopOpen(props){
// this.formReset();
console.log(props)
var dimmed = document.getElementsByClassName('dimmed');
dimmed[0].style.display = 'block';
var wrap = document.getElementsByClassName('popup-wrap');
@@ -162,13 +161,11 @@ export default {
},
async numberDetail(props){
try {
console.log(props)
this.row.regReqNo = props.regReqNo
this.row.sndrno = props.sndrno
this.row.seqNo = props.seqNo
const response = await sendNumMgtApi.numberDetail(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.adminId = result.data.adminId

View File

@@ -200,7 +200,6 @@ export default {
mixins: [utils_mixin, chkPattern2],
watch: {
nmineeDivCd() {
console.log('watch : ', this.nmineeDivCd)
}
},
data() {
@@ -266,7 +265,6 @@ export default {
this.$refs.admnListPop.adminNmPopOpen();
},
setChildData(data) {
console.log(data)
this.adminId = data.adminId
this.custNm = data.custNm
this.bRegNo = data.bregNo
@@ -284,7 +282,6 @@ export default {
},
changeNmineDiv(event) {
var data = event.target.value;
console.log(data)
if (data === '01') {
this.fileType = 1
}
@@ -833,10 +830,7 @@ export default {
} else {
const response = await sendNumMgtApi.insertNumber(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") {
//alert(562);
console.log('---------');
console.log(result);
if (result != null && result.retCode == "0000") {
if(result.data.list != null && result.data.list.length > 0){
this.row.title = '발신번호 등록';
var failMsg = "";

View File

@@ -79,8 +79,6 @@ export default {
},
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';

View File

@@ -34,7 +34,6 @@ const insertNumber = (adminId, custNm, bRegNo, nmineeDivCd, numberInputs, bizrAu
row.bizrAuthYn = bizrAuthYn
row.custSeq = custSeq
console.log(row)
formData.append('key', new Blob([ JSON.stringify(row) ], {type : "application/json"}));
let url = "/api/v1/bo/sendNumMgt/insertNumber";
@@ -64,7 +63,6 @@ const insertNumber1 = (communicationFile, tenureFile ,businessFile, identificati
row.bizrAuthYn = bizrAuthYn
row.custSeq = custSeq
console.log(row)
formData.append('key', new Blob([ JSON.stringify(row) ], {type : "application/json"}));
let url = "/api/v1/bo/sendNumMgt/insertNumber";
@@ -99,8 +97,6 @@ const insertNumber2 = (communicationFile, delegationFile, attorneyFile, otherBus
row.bizrAuthYn = bizrAuthYn
row.custSeq = custSeq
console.log(row)
formData.append('key', new Blob([ JSON.stringify(row) ], {type : "application/json"}));
let url = "/api/v1/bo/sendNumMgt/insertNumber";
@@ -117,7 +113,6 @@ const updateAppr = (params) => {
}
const fileDownload = (params) => {
console.log(params)
axios({
method: 'POST',
url: '/api/v1/bo/sendNumMgt/filedownload',
@@ -132,7 +127,6 @@ const fileDownload = (params) => {
if (!data) {
return
}
console.log(response)
const url = window.URL.createObjectURL(new Blob([data]))
const a = document.createElement('a')
a.style.display = 'none'
@@ -144,8 +138,6 @@ const fileDownload = (params) => {
window.URL.revokeObjectURL(url)
})
.catch(response => {
console.log(response)
alert(error);
})
}

View File

@@ -184,7 +184,6 @@ export default {
},
methods: {
search: function (isKeep) {
console.log(this.grid.params);
this.grid.params.searchType1 = this.searchType1
this.grid.params.searchType2 = this.searchType2
this.grid.perPage = this.perPageCnt
@@ -193,7 +192,6 @@ export default {
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
@@ -205,10 +203,8 @@ export default {
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
//console.log("getCondition : "+ getCondition.perPage);
},
apprDetail(props) {
console.log(props)
this.$refs.apprDetailPop.apprDetailPopOpen(props)
},
changePerPage: function () { // 페이지당 조회할 개수
@@ -218,7 +214,6 @@ export default {
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,

View File

@@ -77,6 +77,7 @@
:noDataStr="grid.noDataStr"
:addCls="grid.addCls"
:header="grid.headder"
:pageRange="grid.pageRange"
></custom-grid>
</div>
@@ -141,6 +142,7 @@ export default {
isCheckbox: true,
initialRequest: false,
addCls: 'box_OFvis',
pageRange: 1,
header: [
[
{header: 'NO', childNames: []},
@@ -218,7 +220,6 @@ export default {
let page = 1;
// 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log('getCondition : ' + getCondition);
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false;
@@ -232,12 +233,10 @@ export default {
},
methods: {
search: function (isKeep) {
console.log(this.grid.params);
this.grid.params.searchType1 = this.searchType1
this.grid.params.searchType2 = this.searchType2
this.grid.params.searchType3 = this.searchType3
this.grid.params.searchType4 = this.searchType4
console.log(this.$data)
if(this.isFirst){
this.grid.pagePerRows = 50
}
@@ -247,20 +246,17 @@ export default {
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
params: this.grid.params
});
// const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
},
numberRegPopOpen: function () {
this.$refs.numberRegPop.numberRegPopopen();
},
numberDetail(props) {
console.log(props)
this.$refs.numberDetailPop.numberDetailPopOpen(props);
},
commonModalOpen(row) {
@@ -294,7 +290,6 @@ export default {
},
doValidate() { //로우데이터 삭제하도록 수정
console.log("totalItems >> " + this.totalItems);
if (this.totalItems == 0) {
this.row.title = '문자발신번호 관리';
this.row.msg1 = '검색 결과가 없습니다.';
@@ -310,13 +305,10 @@ export default {
}
//const param = chkList.map((row)=>({regReqNo:row.regReqNo} ));
const param = chkList.map((row) => ({seqNo: row.seqNo}));
console.log(param)
this.row.list = param;
console.log(this.row);
return true;
},
confirmCalbackFnc(props) {
console.log(props)
if (props.result) {
this.numberDelete();
}
@@ -328,7 +320,6 @@ export default {
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,

View File

@@ -143,7 +143,6 @@ export default {
let page = 1;
// 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log('getCondition : ' + getCondition);
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false;
@@ -164,7 +163,6 @@ export default {
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
@@ -172,7 +170,6 @@ export default {
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log("getCondition : " + getCondition.perPage);
},
changePerPage: function () { // 페이지당 조회할 개수
this.grid.pagePerRows = this.perPageCnt;
@@ -182,7 +179,6 @@ export default {
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,

View File

@@ -164,7 +164,6 @@ export default {
},
methods: {
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);
@@ -172,7 +171,6 @@ export default {
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
@@ -183,8 +181,6 @@ export default {
}
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
//console.log("getCondition : "+ getCondition.perPage);
},
changePerPage: function () { // 페이지당 조회할 개수
this.grid.pagePerRows = this.perPageCnt;
@@ -195,7 +191,6 @@ export default {
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,

View File

@@ -259,7 +259,6 @@ export default {
let page = 1;
// 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log('getCondition : ' + getCondition);
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false;
@@ -274,7 +273,6 @@ export default {
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,
@@ -285,18 +283,14 @@ export default {
},
methods: {
search: function (isKeep) {
console.log('>>>>>>> search Start >>>>>>');
this.grid.params = {
startDay: moment(this.startDate).format('YYYYMMDD'),
endDay: moment(this.endDate).format('YYYYMMDD'),
custNm: this.grid.params.custNm,
bizrno: this.grid.params.bizrno
};
console.log('this.perPageCnt' + this.perPageCnt);
console.log(this.grid.params);
if (moment(this.grid.params.startDay).isBefore(moment(this.grid.params.endDay).subtract(1, 'months').format('YYYYMMDD'))) {
//alert('검색 기간은 최대 1개월까지 선택 가능 합니다.');
this.row.title = '발송통계';
this.row.msg1 = '검색 기간은 최대 1개월까지 선택 가능 합니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
@@ -312,9 +306,6 @@ export default {
setPeriodDay(day) {
this.periodDay = day;
this.endDate = new Date();
// this.startDate = moment(this.endDate)
// .subtract(day, 'day')
// .toDate();
this.initSetStartDate();
this.closeDate('start');
@@ -327,8 +318,7 @@ export default {
if (this.startDate > this.endDate) {
this.startDate = this.endDate;
}
// console.log(this.disabledSDate)
// this.grid.params.startDt = day
},
selectedEndDate(day) {
if (day != undefined && day != null) {
@@ -361,7 +351,6 @@ export default {
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
@@ -369,13 +358,11 @@ export default {
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log("getCondition : " + getCondition.perPage);
},
initSetStartDate() {
let initStartDate = new Date();
initStartDate.setMonth(Number(moment(initStartDate).format('MM')) - 2);
this.startDate = initStartDate;
console.log(moment(this.startDate).format('YYYY-MM-DD'));
},
async getExcelDataDown() {
try {
@@ -409,7 +396,6 @@ export default {
header: this.excelHeader,
dataOrder: 'header'
};
// console.log(data);
xlsx.export(data.list, saveFileName, options).then(() => {
});
},

View File

@@ -264,7 +264,6 @@ export default {
let page = 1;
// 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log('getCondition : ' + getCondition);
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false;
@@ -279,7 +278,6 @@ export default {
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,
@@ -290,18 +288,14 @@ export default {
},
methods: {
search: function (isKeep) {
console.log('>>>>>>> search Start >>>>>>');
this.grid.params = {
startMon: moment(this.startDate).format('YYYYMM'),
endMon: moment(this.endDate).format('YYYYMM'),
custNm: this.grid.params.custNm,
bizrno: this.grid.params.bizrno
};
console.log('this.perPageCnt' + this.perPageCnt);
console.log(this.grid.params);
if (moment(this.grid.params.startMon).isBefore(moment(this.grid.params.endMon).subtract(2, 'months').format('YYYYMM'))) {
//alert('검색 기간은 최대 3개월까지 선택 가능 합니다.');
this.row.title = '발송통계';
this.row.msg1 = '검색 기간은 최대 3개월까지 선택 가능 합니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
@@ -317,9 +311,7 @@ export default {
setPeriodDay(day) {
this.periodDay = day;
this.endDate = new Date();
// this.startDate = moment(this.endDate)
// .subtract(day, 'day')
// .toDate();
this.initSetStartDate();
this.closeDate('start');
@@ -332,8 +324,7 @@ export default {
if (this.startDate > this.endDate) {
this.startDate = this.endDate;
}
// console.log(this.disabledSDate)
// this.grid.params.startDt = day
},
selectedEndDate(day) {
if (day != undefined && day != null) {
@@ -366,7 +357,6 @@ export default {
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP._currentPage);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
@@ -374,13 +364,11 @@ export default {
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log("getCondition : " + getCondition.perPage);
},
initSetStartDate() {
let initStartDate = new Date();
initStartDate.setMonth(Number(moment(initStartDate).format('MM')) - 3);
this.startDate = initStartDate;
console.log(moment(this.startDate).format('YYYY-MM-DD'));
},
getExcelHeader() {
// 헤더를 mockup으로 관리한다.
@@ -395,7 +383,6 @@ export default {
response = await statsApi.bsnmMonthListExcel(this.grid.params);
const result = response.data;
console.log(result)
if (result != null && result.retCode == "0000") {
return result.data;
} else {
@@ -421,7 +408,6 @@ export default {
header: this.excelHeader,
dataOrder: 'header'
};
console.log(data);
xlsx.export(data.list, saveFileName, options).then(() => {
});
},

View File

@@ -153,13 +153,9 @@ export default {
},
methods: {
async getDayList() {
console.log('getDayList Start');
this.row.startDay = moment(this.startDate).format('YYYYMMDD');
this.row.endDay = moment(this.endDate).format('YYYYMMDD');
console.log('검색_시작일시(변환후):' + this.row.startDay);
console.log('검색_종료일시(변환후):' + this.row.endDay);
if (moment(this.row.startDay).isBefore(moment(this.row.endDay).subtract(1, 'months').format('YYYYMMDD'))) {
//alert('검색 기간은 최대 1개월까지 선택 가능 합니다.');
this.row.title = '발송통계';
this.row.msg1 = '검색 기간은 최대 1개월까지 선택 가능 합니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
@@ -169,61 +165,26 @@ export default {
try {
const response = await statsApi.dayList(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
if (result.data.list.length > 0) {
this.list = result.data.list;
}
this.totalCnt = result.data.list.length;
} else {
alert("조회정보가 없습니다.");
}
} catch (err) {
alert("실패 하였습니다.");
}
},
toMove(routeName) {
this.$router.push({name: routeName, params: {page: 1, searchText: ''}});
},
search: function () {
console.log('검색_시작일시:' + this.startDt);
console.log('검색_종료일시:' + this.endDt);
this.getDayList();
},
// calendarCalbackFnc(year, month, day){
// if(this.openStartPicker){
// this.startDate= year +''+ month +''+ day
// if(Number(this.endDate) < Number(this.startDate) && this.endDate !== 0){
// this.row.title = '발송통계';
// this.row.msg1 = '조회 시작일이 종료일보다 큽니다.';
// this.$refs.commmonModal.alertModalOpen(this.row);
// this.openStartPicker = false
// return false
// }
// this.startDt = year + '-' + month + '-' + day
// this.openStartPicker = false
// }
// if(this.openEndPicker){
// this.endDate=year +''+ month +''+ day
// if(Number(this.endDate) < Number(this.startDate) && this.startDate !== 0){
// this.row.title = '발송통계';
// this.row.msg1 = '조회 종료일이 시작일보다 작습니다.';
// this.$refs.commmonModal.alertModalOpen(this.row);
// this.openEndPicker = false
// return false
// }
// this.endDt = year + '-' + month + '-' + day
// this.openEndPicker = false
// }
// },
},
setPeriodDay(day) {
this.periodDay = day;
this.endDate = new Date();
// this.startDate = moment(this.endDate)
// .subtract(day, 'day')
// .toDate();
this.initSetStartDate();
this.closeDate('start');
@@ -236,8 +197,6 @@ export default {
if (this.startDate > this.endDate) {
this.startDate = this.endDate;
}
console.log(this.disabledSDate)
// this.grid.params.startDt = day
},
selectedEndDate(day) {
if (day != undefined && day != null) {
@@ -268,7 +227,6 @@ export default {
let initStartDate = new Date();
initStartDate.setMonth(Number(moment(initStartDate).format('MM')) - 2);
this.startDate = initStartDate;
console.log(moment(this.startDate).format('YYYY-MM-DD'));
},
excelDown() {
@@ -287,7 +245,6 @@ export default {
header: this.excelHeader,
dataOrder: 'header'
};
// console.log(data);
xlsx.export(this.list, saveFileName, options).then(() => {
});
},

View File

@@ -155,15 +155,10 @@ export default {
},
methods: {
async getMonthList() {
console.log('getMonthList Start');
this.row.startMon = moment(this.startDate).format('YYYYMM');
this.row.endMon = moment(this.endDate).format('YYYYMM');
console.log('검색_시작년월:' + this.row.startMon);
console.log('검색_종료년월:' + this.row.endMon);
if (moment(this.row.startMon).isBefore(moment(this.row.endMon).subtract(2, 'months').format('YYYYMM'))) {
//alert('검색 기간은 최대 3개월까지 선택 가능 합니다.');
this.row.title = '발송통계';
this.row.msg1 = '검색 기간은 최대 3개월까지 선택 가능 합니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
@@ -173,30 +168,22 @@ export default {
try {
const response = await statsApi.monthList(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.list = result.data.list;
this.totalCnt = result.data.list.length;
} else {
alert("조회정보가 없습니다.");
}
}
} catch (err) {
alert("실패 하였습니다.");
}
},
search: function () {
this.getMonthList();
},
toMove(routeName) {
//this.$router.push({ name: routeName, params: { page: 1, searchText: '' } });
this.$router.push({name: routeName, params: {}});
},
setPeriodDay(day) {
this.periodDay = day;
this.endDate = new Date();
// this.startDate = moment(this.endDate)
// .subtract(day, 'day')
// .toDate();
this.initSetStartDate();
this.closeDate('start');
@@ -209,8 +196,6 @@ export default {
if (this.startDate > this.endDate) {
this.startDate = this.endDate;
}
console.log(this.disabledSDate)
// this.grid.params.startDt = day
},
selectedEndDate(day) {
if (day != undefined && day != null) {
@@ -241,7 +226,6 @@ export default {
let initStartDate = new Date();
initStartDate.setMonth(Number(moment(initStartDate).format('MM')) - 3);
this.startDate = initStartDate;
console.log(moment(this.startDate).format('YYYY-MM-DD'));
},
excelDown() {
if (this.list.length <= 0) {
@@ -290,7 +274,6 @@ export default {
dataOrder: 'header'
};
// console.log(data);
xlsx.export(this.list, saveFileName, options).then(() => {
});
},

View File

@@ -89,7 +89,6 @@ export default {
mixins: [utils_mixin, chkPattern2],
watch: {
stat() {
console.log('watch : ', this.stat)
}
},
data() {
@@ -131,7 +130,6 @@ export default {
try {
const response = await sysMgtApi.resetPassword(params)
const rsp = response.data;
console.log("RESULT_CODE : " + rsp.retCode);
if(rsp.retCode == '0000'){
this.row.title = '비밀번호 초기화';
@@ -140,7 +138,6 @@ export default {
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
}
} catch(err){
console.log(err)
this.row.title = '비밀번호 초기화';
this.row.msg1 = '실패 하였습니다.';
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
@@ -151,7 +148,6 @@ export default {
doPwdValidate() {
if (this.isNull(this.userPwd2)) {
// alert("비밀번호 확인을 입력해 주세요.");
this.row.title = '관리자/유치채널 관리';
this.row.msg1 = '비밀번호를 입력해 주세요.';
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
@@ -216,7 +212,6 @@ export default {
try {
const response = await sysMgtApi.adminDetail(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.madangId = result.data.adminId;
this.auth = result.data.auth;
@@ -226,7 +221,6 @@ export default {
this.stat = result.data.stat;
}
} catch (err) {
// alert("실패 하였습니다.");
this.row.title = '관리자/유치채널 관리';
this.row.msg1 = '실패 하였습니다.';
this.$parent.$refs.commmonModal.alertModalOpen(this.row);
@@ -238,7 +232,6 @@ export default {
},
// 모달 끄기
adminDetailModalClose() {
//this.formReset();
var dimmed = document.getElementsByClassName('modal21');
for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'none';
@@ -255,11 +248,9 @@ export default {
const response = await sysMgtApi.updateAdmin(this.row);
const result = response.data;
if (result != null && result.retCode == "0000") {
// alert('저장 하였습니다.');
this.toComplete();
}
} catch (err) {
alert("실패 하였습니다.");
this.row.title = '관리자/유치채널 관리';
this.row.msg1 = '실패 하였습니다.';
this.$parent.$refs.commmonModal.alertModalOpen(this.row);

View File

@@ -96,7 +96,6 @@ export default {
mixins: [utils_mixin, chkPattern2],
watch: {
stat() {
console.log('watch : ', this.stat)
}
},
data() {
@@ -258,12 +257,10 @@ export default {
var params = {
"madangId": this.madangId
}
console.log(this.madangId);
try {
const response = await sysMgtApi.selectSearchMadangId(params);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.madangId = result.data.madangId;
this.userNm = result.data.name;
@@ -272,7 +269,6 @@ export default {
this.code = result.data.code;
// 마당ID조회 성공 팝업노출
this.searchIdPop();
//console.log(this.userNm);
this.idCheck = true;
this.$refs._pwd1.focus();
@@ -325,7 +321,6 @@ export default {
ModalOpen(insertType) {
this.formReset();
this.insertType = insertType;
console.log(insertType)
if (insertType === 2) {
this.auth = '1002';
}

View File

@@ -42,29 +42,7 @@
</div>
</div>
<!-- 시스템관리 팝업 -->
<!-- <div class="dimmed alertSysModal1" @click="alertSysModalCancel();"></div>-->
<!-- <div class="popup-wrap alertSysModal1">-->
<!-- &lt;!&ndash; 로그인실패: 확인 &ndash;&gt;-->
<!-- <div class="popup alertSysModal1">-->
<!-- <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="alertSysModalClose();">확인</button>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
</div>
<!-- e: 팝업 -->
</div>
</template>
@@ -95,7 +73,6 @@ export default {
methods: {
// 모달 띄우기(성공모달)
searchIdModalOpen(target) {
console.log("SearchIdModalOpen");
var dimmed = document.getElementsByClassName('dimmed modal18');
var wrap = document.getElementsByClassName('popup-wrap modal18');
var obj = document.getElementsByClassName(target);
@@ -120,7 +97,6 @@ export default {
},
// 모달 띄우기(실패모달)
searchIdFailModalOpen(target) {
console.log("SearchIdFailModalOpen");
var dimmed = document.getElementsByClassName('dimmed modal17');
var wrap = document.getElementsByClassName('popup-wrap modal17');
var obj = document.getElementsByClassName(target);
@@ -143,47 +119,17 @@ export default {
this.email = params.email;
this.mdn = params.mdn;
this.code = params.code
//alert( userName + ': 조회 성공');
var dimmed = document.getElementsByClassName('modal18');
for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'block';
}
//this.searchIdModalModalOpen('modal18');
},
searchIdFailPop() {
//alert( '조회 실패');
var dimmed = document.getElementsByClassName('modal17');
for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'block';
}
},
// alertSysModalOpen(props) {
// console.log(props);
// this.title = props.title;
// this.msg1 = props.msg1;
// this.msg2 = props.msg2;
// this.msg3 = props.msg3;
// this.msg4 = props.msg4;
//
// var dimmed = document.getElementsByClassName('alertSysModal1');
// for (var i = 0; i < dimmed.length; i++) {
// dimmed[i].style.display = 'block';
// }
// },
// alertSysModalClose() {
// var dimmed = document.getElementsByClassName('alertSysModal1');
// for (var i = 0; i < dimmed.length; i++) {
// dimmed[i].style.display = 'none';
// }
// this.$parent.checkFocus();
// },
// alertSysModalCancel() {
// var dimmed = document.getElementsByClassName('alertSysModal1');
// for (var i = 0; i < dimmed.length; i++) {
// dimmed[i].style.display = 'none';
// }
// this.$parent.checkFocus();
// },
},
}
}
</script>

View File

@@ -80,7 +80,6 @@ export default {
},
methods: {
alertSysModalOpen(props) {
console.log(props.msg1);
this.title = props.title;
this.msg1 = props.msg1;
this.msg2 = props.msg2;

View File

@@ -163,8 +163,6 @@ export default {
let page = 1;
// 페이지 정보 및 검색 조건
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
console.log('getCondition : ' + getCondition);
console.log(getCondition)
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
let isKeep = false;
if (getCondition) {
@@ -177,32 +175,26 @@ export default {
},
methods: {
search: function (isKeep) {
console.log(isKeep)
console.log('this.perPageCnt' + this.perPageCnt);
//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();
},
detailPop(props) {
// this.getMainSlot().popupView(4);
// this.setDtlPpPrm(props);
this.$refs.adminDetailModal.adminDetailModalOpen(props);
},
ModalOpen: function (target) {
//this.$refs.systemModal.ModalOpen(target);
},
adminRegPopOpen: function () {
this.$refs.adminRegModal.ModalOpen(1);
},
adminReg2PopOpen: function () {
this.$refs.adminRegModal.ModalOpen(2);
//this.$refs.adminReg2Modal.adminReg2ModalOpen();//
},
doValidate() { //로우데이터 삭제하도록 수정
console.log("totalItems >> " + this.totalItems);
if (this.totalItems == 0) {
this.row.title = '관리자/유치채널 관리';
this.row.msg1 = '검색 결과가 없습니다.';
@@ -216,18 +208,13 @@ export default {
this.$refs.commmonModal.alertModalOpen(this.row);
return false;
}
// for(var i = 0; i < chkList.length; i++){
// alert(chkList[i].adminId);
// }
const param = chkList.map((row) => ({adminId: row.adminId}));
console.log(param)
this.row.list = param;
console.log(this.row);
return true;
},
sendStoreData: function () {
const getP = this.$refs.table.getPagination();
console.log("==========getP : " + getP);
this.$store.commit('searchcondition/updateSearchCondition', {
page: getP._currentPage,
perPage: this.perPageCnt,
@@ -235,7 +222,6 @@ export default {
});
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
//console.log("getCondition : "+ getCondition.perPage);
},
setCodeData() {
@@ -272,7 +258,6 @@ export default {
}
},
confirmCalbackFnc(props) {
console.log(props)
if (props.result) {
this.deleteRow();
}
@@ -282,7 +267,6 @@ export default {
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,

View File

@@ -222,7 +222,6 @@ export default {
this.row.title = '시스템관리';
this.row.msg1 = '권한명을 입력해 주세요.';
this.row.focusTaget = '1';
console.log(this.row)
this.$refs.commmonModal.alertSysModalOpen(this.row);
return false;
}
@@ -296,7 +295,6 @@ export default {
this.row.stat = this.stat;
this.row.list = listArr;
console.log(this.row);
try {
let response = await sysMgtApi.insertAuth(this.row);

View File

@@ -80,12 +80,9 @@ export default {
},
methods: {
async getAuthList() {
console.log('getAuthList Start');
//this.row.serviceId = serviceId;
try {
const response = await sysMgtApi.authList(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.list = result.data.list;
this.totalCnt = result.data.list.length;
@@ -101,11 +98,9 @@ export default {
}
},
insertAuth() {
//console.log("권한추가 페이지 이동");
this.$router.push({name: 'authAdd'});
},
updateAuth(target) {
//console.log("수정페이지로 이동:"+target);
this.$router.push({name: 'authModify', params: {targetAuthCd: target}});
},
authDelete(target) {
@@ -115,8 +110,6 @@ export default {
this.$refs.commmonModal.confirmModalOpen2(this.row);
},
async deleteAuth() {
//console.log("삭제처리:"+target);
//this.row.authCd = target;
try {
let response = await sysMgtApi.deleteAuth(this.row);
const result = response.data;
@@ -142,7 +135,6 @@ export default {
}
},
confirmCalbackFnc(props) {
console.log(props)
if (props.result) {
this.deleteAuth();
}

View File

@@ -273,13 +273,11 @@ export default {
},
async authDetail() {
//console.log(this.$route.params.targetAuthCd);
this.row.authCd = this.$route.params.targetAuthCd;
try {
const response = await sysMgtApi.authDetail(this.row);
const result = response.data;
console.log(result);
if (result != null && result.retCode == "0000") {
this.authCd = result.data.authCd;
this.authNm = result.data.authNm;
@@ -301,7 +299,6 @@ export default {
}
} else {
//alert("실패 하였습니다.");
this.row.title = '시스템관리';
this.row.msg1 = '실패 하였습니다.';
this.row.focusTaget = '0';
@@ -309,7 +306,6 @@ export default {
return false;
}
} catch (err) {
//alert("처리 실패 하였습니다.");
this.row.title = '시스템관리';
this.row.msg1 = '실패 하였습니다.';
this.row.focusTaget = '0';
@@ -348,17 +344,13 @@ export default {
this.row.stat = this.stat;
this.row.list = listArr;
console.log(this.row);
try {
let response = await sysMgtApi.updateAuth(this.row);
const result = response.data;
if (result != null && result.retCode == "0000") {
//alert('저장 하였습니다.');
// 권한리스트 페이지 이동
this.$router.push({name: 'authList'});
} else {
//alert("실패 하였습니다.");
this.row.title = '시스템관리';
this.row.msg1 = '실패 하였습니다.';
this.row.focusTaget = '0';
@@ -381,6 +373,8 @@ export default {
this.$refs._authNm.focus();
} else if (this.row.focusTaget === '2') {
this.$refs._authCd.focus();
}else if(this.row.focusTaget === '0'){
this.$router.push({name: 'authList'});
}
},
confirmCalbackFnc(props) {
@@ -396,7 +390,6 @@ export default {
return this.defaultAuthMenu.length === this.checkedAuthMenu.length;
},
set: function (e) {
//this.checkedAuthMenu = e ? this.defaultAuthMenu : [];
if (e) {
this.checkedAuthMenu = this.defaultAuthMenu;
if (this.channelAuth === '') {

View File

@@ -1,7 +1,6 @@
import Vue from 'vue';
import Router from 'vue-router';
import store from './store'
//import login from '@/modules/login/store/index'
import tokenSvc from '@/common/token-service';
import HubwebLayout from './views/HubwebLayout.vue';
@@ -20,8 +19,6 @@ import profileRoutes from './modules/sendNumMgt/router';
import mntrngRoutes from './modules/mntrng/router';
import riskmgtRoutes from './modules/riskMgt/router';
import monthRoutes from './modules/stats/router';
// import channelList from './modules/attractMgt/views/ChannelList';
Vue.use(Router)
@@ -33,18 +30,14 @@ const router = new Router({
path: '/',
component: HubwebLayout,
children: [
{
path: '',
component: subsList
},
// {
// path: '/attractMgt/views',
// component: channelList
// },
{
path: '',
component: subsList
},
{
path: '/view/error/404',
component: () => import('./views/ErrorPage404.vue'),
meta: { public: true }
meta: { public: false }
},
{
path: '/view/error/500',
@@ -62,46 +55,120 @@ const router = new Router({
...mntrngRoutes,
...riskmgtRoutes,
...monthRoutes,
//{path: '*', name: 'error404'}
]
},
{path: '*', redirect: '/view/error/404'}
//{path: '*', redirect: '/view/error/404'}
]
});
router.beforeEach((to, from, next) => {
const isPublic = to.matched.some(record => record.meta.public);
const loggedIn = !!tokenSvc.getToken();
if (!isPublic && !loggedIn) {
return next('/login');
}else{
var nextUrl = to.fullPath;
var fromUrl = from.fullPath;
if(nextUrl == '/'){
console.log(store.getters);
const rootUrl = store.getters['login/getRootUrl'];
if(rootUrl == null){
return next('/login');
}
return next(rootUrl);
}else if(nextUrl == '/view/login/auth'){
if(fromUrl != '/login'){
return next('/login');
}
}
}
var fromUrl = from.fullPath;
var menuUrls = store.getters['login/getMenuUrls'];
if(menuUrls.length > 0){
var moveFlag = false;
for(var i=0; i<menuUrls.length; i++){
var targetUrl = menuUrls[i];
if(nextUrl == targetUrl){
moveFlag = true;
}
}
if((nextUrl == '/custMgt/memberList') || (nextUrl == '/custMgt/memberDetail')
|| (nextUrl == '/custMgt/subsDetail') || (nextUrl == '/custMgt/memberAdminDetail')){
for(var i=0; i<menuUrls.length; i++){
if(menuUrls[i] == '/custMgt/subsList'){
moveFlag = true;
}
}
}
// url Check 유치채널
if((nextUrl == '/attractMgt/channelDetail')){
for(var i=0; i<menuUrls.length; i++){
if(menuUrls[i] == '/attractMgt/channelList'){
moveFlag = true;
}
}
}
// url Check 날짜별 통계
if((nextUrl == '/stats/dayList')){
for(var i=0; i<menuUrls.length; i++){
if(menuUrls[i] == '/stats/monthList'){
moveFlag = true;
}
}
}
// url Check 사업자별 통계
if((nextUrl == '/stats/bsnmDayList')){
for(var i=0; i<menuUrls.length; i++){
if(menuUrls[i] == '/stats/bsnmMonthList'){
moveFlag = true;
}
}
}
// url Check 권한 관리
if((nextUrl == '/sysMgt/authAdd') || (nextUrl == '/sysMgt/authModify')){
for(var i=0; i<menuUrls.length; i++){
if(menuUrls[i] == '/sysMgt/authList'){
moveFlag = true;
}
}
}
if(!moveFlag){
if((fromUrl == '/login') || (fromUrl == '/view/login/auth') || (fromUrl == '/view/login/resetPassword')
|| (fromUrl == '/view/login/updatePassword')){
return next('/login');
}
store.commit("login/saveBeforeUrl", fromUrl);
return next('/view/error/404');
}
if((nextUrl == '/view/login/auth') || (nextUrl == '/view/login/resetPassword')
|| (nextUrl == '/view/login/updatePassword')
){
if(fromUrl != '/login'){
return next('/login');
}
}
if(nextUrl == '/'){
console.log(store.getters);
const rootUrl = store.getters['login/getRootUrl'];
console.log('rootUrl ',rootUrl);
if(rootUrl == null){
return next('/login');
}
return next(rootUrl);
}
if(nextUrl == '/login' && loggedIn){
const rootUrl = store.getters['login/getRootUrl'];
if(rootUrl == null){
return next('/login');
}
return next(rootUrl);
}
}
}
to.matched.some(record => {
if (record.meta.usingSearchCondition) {
const shareList = record.meta.shareList;
if (from.name && shareList && shareList.includes(from.name)) {
// shareList에 포함되어 있는 라우터에서 온 경우 검색 조건을 유지한다.
// console.log("패밀리");
} else {
// 그 외의 경우 검색 조건 초기화
store.commit("searchcondition/updateSearchCondition", null);
// console.log("낫패밀리");
}
}
next();

View File

@@ -10,14 +10,15 @@
</span>
<p class="error-btns">
<a href="#" @click="backGo()">이전 페이지로</a><a href="#" @click="goMain()">메인으로</a>
<a href="javascript:void(0);" @click="backGo()">이전 페이지로</a><a href="javascript:void(0);" @click="goMain()">메인으로</a>
</p>
</div>
</template>
<script>
export default {
name: 'error404',
data: function() {
return {
@@ -27,7 +28,6 @@
this.$store.commit("login/isErrorPage", true);
},
mounted() {
},
destroyed() {
this.$store.commit("login/isErrorPage", false);
@@ -35,13 +35,17 @@
methods: {
// 이전 페이지
backGo() {
const beforeUrl = this.$store.getters['login/getBeforeUrl'];
this.$store.commit("login/isErrorPage", false);
this.$router.go(-1);
this.$router.push({ path: beforeUrl }).catch(()=>{
});
},
// 메인 페이지
goMain(){
const rootUrl = this.$store.getters['login/getRootUrl'];
this.$store.commit("login/isErrorPage", false);
this.$router.push({ path: '/' });
this.$router.push({ path: rootUrl }).catch(()=>{
});;
}
}
};

View File

@@ -1,15 +1,20 @@
<template>
<body>
<div v-if="!isErrPage" class="wrap" v-bind:class="{'main_wrap': (isAuthChk), 'login-wrap': (!isLogin && !isAuthChk), 'bg-wrap': (isLogin && !isAuthChk) }" >
<hub-web-header v-if="isAuthChk == true"></hub-web-header>
<nav-bar v-if="isAuthChk == true"></nav-bar>
<body>
<div v-bind:class="{'wrap main_wrap': (isAuthChk), 'wrap login-wrap': (!isLogin && !isAuthChk), 'wrap bg-wrap': (isLogin && !isAuthChk), 'error-wrap': (isErrPage) }" >
<hub-web-header v-if="isAuthChk == true && !isErrPage"></hub-web-header>
<nav-bar v-if="isAuthChk == true && !isErrPage"></nav-bar>
<router-view :key="$route.fullPath"></router-view>
<hub-web-footer v-if="isAuthChk == false"></hub-web-footer>
<hub-web-footer v-if="isAuthChk == false && !isErrPage"></hub-web-footer>
</div>
<div v-else class="error-wrap">
<!-- <div v-else class="error-wrap">
<router-view :key="$route.fullPath"></router-view>
</div>
</div> -->
<div class="loadingDimmed" style="display: none"></div>
<div class="sp-3balls" style="display: none"></div>
</body>
</template>
<script>
@@ -26,7 +31,6 @@ import "../assets/css/common.css";
import "../assets/css/style.css";
import "../assets/css/error.css";
import { mapGetters } from 'vuex';
import tokenSvc from '@/common/token-service';
export default {
name: "hubwebLayout",
@@ -34,7 +38,7 @@ export default {
NavBar,
HubWebHeader,
HubWebFooter,
},
},
data(){
return{
isLogin: false,
@@ -79,7 +83,7 @@ export default {
} else {
this.isAuthChk = false;
}
},
},
}
};
</script>
</script>

View File

@@ -143,9 +143,10 @@ public class LoginController {
if (authNumDto.getOprtrId().contains(authenticationWithoutId.get(i).trim())) {
loginSuccessHandler.process(request, response, authentication);
// access 토큰 생성
jwtSvc.generatePrivateToken(response, authentication);
// Auth 토큰 생성
String authToken = jwtSvc.generatePrivateToken(response, authentication);
// jwtSvc.generatePrivateToken(response, authentication);
String nextUrl = getReturnUrl(request, response);
logger.debug("login SUCCESS - nextUrl = [{}]", nextUrl);
AuthUser authUser = loginService.getUser(authentication.getName());
@@ -157,10 +158,27 @@ public class LoginController {
Menu rootMenu = menu.get(0);
String rootUrl = rootMenu.getChildren().get(0).getMenuUrl();
ArrayList<String> menuUrls = new ArrayList<String>();
for(int j=0; j< menu.size(); j++) {
Menu parentMenu = menu.get(j);
if(parentMenu.getChildren().size() > 0) {
ArrayList<Menu> childrenMenu = (ArrayList<Menu>)parentMenu.getChildren();
for(int k=0; k< childrenMenu.size(); k++) {
Menu childMenu = childrenMenu.get(k);
String menuUrl = childMenu.getMenuUrl();
menuUrls.add(menuUrl);
}
}
//String menuUrl = rootMenu.getChildren().get(j).getMenuUrl();
// menuUrls.add(menuUrl);
}
LoginRes loginRes = new LoginRes(rootUrl);
loginRes.setUserId(authUser.getOprtrId());
loginRes.setUserNm(authUser.getOprtrNm());
loginRes.setMenuUrls(menuUrls);
loginRes.setAuthToken(authToken);
ChkAuthNumResDto result = new ChkAuthNumResDto(ApiResponseCode.SUCCESS, loginRes);
return result;
}
@@ -172,10 +190,11 @@ public class LoginController {
// 2차인증후 시큐리티 성공핸들러
rCode = loginSuccessHandler.process(request, response, authentication);
// access 토큰 생성
jwtSvc.generatePrivateToken(response, authentication);
// loginToken
String authToken = jwtSvc.generatePrivateToken(response, authentication);
// jwtSvc.generatePrivateToken(response, authentication);
String nextUrl = getReturnUrl(request, response);
logger.debug("login SUCCESS - nextUrl = [{}]", nextUrl);
AuthUser authUser = loginService.getUser(authentication.getName());
@@ -187,11 +206,26 @@ public class LoginController {
Menu rootMenu = menu.get(0);
String rootUrl = rootMenu.getChildren().get(0).getMenuUrl();
// 메뉴 url data 생성
ArrayList<String> menuUrls = new ArrayList<String>();
for(int j=0; j< menu.size(); j++) {
Menu parentMenu = menu.get(j);
if(parentMenu.getChildren().size() > 0) {
ArrayList<Menu> childrenMenu = (ArrayList<Menu>)parentMenu.getChildren();
for(int k=0; k< childrenMenu.size(); k++) {
Menu childMenu = childrenMenu.get(k);
String menuUrl = childMenu.getMenuUrl();
menuUrls.add(menuUrl);
}
}
}
LoginRes loginRes = new LoginRes(rootUrl);
//LoginRes loginRes = new LoginRes(SecurityConfig.LOGIN_SUCC_URL);
loginRes.setUserId(authUser.getOprtrId());
loginRes.setUserNm(authUser.getOprtrNm());
loginRes.setAuthToken(authToken);
loginRes.setMenuUrls(menuUrls);
ChkAuthNumResDto result = new ChkAuthNumResDto(rCode, loginRes);
return result;
}else {
@@ -255,8 +289,24 @@ public class LoginController {
if (auth != null){
new SecurityContextLogoutHandler().logout(request, response, auth);
}
jwtSvc.destroyPrivateToken(request, response);
// jwtSvc.destroyPrivateToken(request, response);
return new LogoutResDto();
}
/**
* date : 2022. 8. 17.
* auth : ckr
* desc : 2차 인증 페이지 진입시 accessToken 체크
* @param loginCheckDto
* @param request
* @param response
* @return LoginResDto
*/
@PostMapping("loginCheck")
@ResponseBody
public LoginResDto loginCheck(@RequestBody LoginReqDto loginCheckDto, HttpServletRequest request, HttpServletResponse response) {
return loginService.loginCheck(loginCheckDto);
}
}

View File

@@ -1,12 +1,9 @@
package kr.co.uplus.ez.api.login;
import kr.co.uplus.ez.api.login.dto.*;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.Const;
import kr.co.uplus.ez.common.utils.DateUtils;
import kr.co.uplus.ez.common.utils.EncryptionUtil;
import kr.co.uplus.ez.common.utils.TextUtils;
import kr.co.uplus.ez.config.SecurityConfig;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.commons.codec.binary.StringUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.mybatis.spring.SqlSessionTemplate;
@@ -17,8 +14,27 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import io.jsonwebtoken.Claims;
import kr.co.uplus.ez.api.login.dto.AuthNum;
import kr.co.uplus.ez.api.login.dto.AuthNumReqDto;
import kr.co.uplus.ez.api.login.dto.AuthNumResDto;
import kr.co.uplus.ez.api.login.dto.AuthUser;
import kr.co.uplus.ez.api.login.dto.ChkAuthNumReqDto;
import kr.co.uplus.ez.api.login.dto.LoginReqDto;
import kr.co.uplus.ez.api.login.dto.LoginRes;
import kr.co.uplus.ez.api.login.dto.LoginResDto;
import kr.co.uplus.ez.api.login.dto.ResetPasswordReqDto;
import kr.co.uplus.ez.api.login.dto.ResetPasswordResDto;
import kr.co.uplus.ez.api.login.dto.SendMsgDto;
import kr.co.uplus.ez.api.login.dto.UpdatePasswordReqDto;
import kr.co.uplus.ez.api.login.dto.UpdatePasswordResDto;
import kr.co.uplus.ez.common.data.ApiResponseCode;
import kr.co.uplus.ez.common.data.Const;
import kr.co.uplus.ez.common.jwt.JwtService;
import kr.co.uplus.ez.common.utils.DateUtils;
import kr.co.uplus.ez.common.utils.EncryptionUtil;
import kr.co.uplus.ez.common.utils.TextUtils;
import kr.co.uplus.ez.config.SecurityConfig;
@Service
public class LoginService {
@@ -49,6 +65,9 @@ public class LoginService {
@Value("${authentication.cntLimit: 10}")
private int cntLimit;
@Autowired
private JwtService jwtSvc;
/**
* 1차 로그인 인증
*
@@ -105,7 +124,13 @@ public class LoginService {
return new LoginResDto(ApiResponseCode.LOGIN_UPDATE_PWD, new LoginRes(SecurityConfig.LOGIN_UPDATE_PWD_URL));
}
return new LoginResDto(ApiResponseCode.SUCCESS, new LoginRes(SecurityConfig.LOGIN_SUCC_URL));
// access 토큰 생성
LoginRes loginRes = new LoginRes();
String accessToken = jwtSvc.accessToken(user);
loginRes.setAccessToken(accessToken);
loginRes.setNextUrl(SecurityConfig.VUE_URL_ARRY[0].toString());
return new LoginResDto(ApiResponseCode.SUCCESS, loginRes);
}
/**
@@ -433,5 +458,74 @@ public class LoginService {
dbUserParam.setOprtrId(userId);
return authUserMapper.getUser(dbUserParam);
}
/**
* access 토큰 확인
*
* @param loginCheckDto
* @return LoginResDto
*/
@SuppressWarnings("unchecked")
public LoginResDto loginCheck(LoginReqDto loginCheckDto){
String accessTokenStr = "";
try {
accessTokenStr = loginCheckDto.getAccessToken();
// validate check
if(accessTokenStr == null || accessTokenStr.equals("")) {
// 에러 코드 처리
return new LoginResDto(ApiResponseCode.CE_AUTH_ERROR);
}
String oprtrId = loginCheckDto.getOprtrId();
if(oprtrId == null || oprtrId.equals("")) {
// 에러 코드 처리
return new LoginResDto(ApiResponseCode.CE_AUTH_ERROR);
}
Claims claims = jwtSvc.parseToken(accessTokenStr);
String tokenId = claims.get("jti").toString();
if(!oprtrId.equals(tokenId)) {
// 에러 코드 처리
return new LoginResDto(ApiResponseCode.CE_AUTH_ERROR);
}
// 토큰 파싱
Map<String, Object> principal = (Map<String, Object>) claims.get("principal");
String parsingOprtrId = principal.get("oprtrId").toString();
String parsingOprtrPwd = principal.get("pwd").toString();
if(!parsingOprtrId.equals(tokenId)) {
// 에러 코드 처리
return new LoginResDto(ApiResponseCode.CE_AUTH_ERROR);
}
// get user info
LoginMapper loginMapper = sqlSessionMaster.getMapper(LoginMapper.class);
String userId = parsingOprtrId;
AuthUser dbUserParam = new AuthUser();
dbUserParam.setOprtrId(userId);
AuthUser user = loginMapper.getUser(dbUserParam);
if(user == null) {
// 사용자 조회 결과 없음
return new LoginResDto(ApiResponseCode.CE_AUTH_ERROR);
}
if(!parsingOprtrPwd.equals(user.getPwd())) {
// 에러 코드 처리
return new LoginResDto(ApiResponseCode.CE_AUTH_ERROR);
}
}catch(Exception e) {
logger.info(e.getMessage());
return null;
}
LoginRes loginRes = new LoginRes();
loginRes.setAccessToken(accessTokenStr);
return new LoginResDto(ApiResponseCode.SUCCESS, loginRes);
}
}

View File

@@ -13,4 +13,7 @@ public class LoginReqDto implements Serializable {
private String oprtrId;
@ApiModelProperty(example = "어드민 사용자 Pw", name = "어드민 사용자 Pw", dataType = "String")
private String oprtrPw;
@ApiModelProperty(hidden = true)
private String accessToken;
}

View File

@@ -1,10 +1,11 @@
package kr.co.uplus.ez.api.login.dto;
import java.io.Serializable;
import java.util.ArrayList;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial")
@Data
public class LoginRes implements Serializable {
@@ -18,7 +19,13 @@ public class LoginRes implements Serializable {
@ApiModelProperty(name = "사용자명", example = "사용자명", dataType = "String")
private String userNm;
/** 접근 토큰*/
private String accessToken;
/** 권한 토큰*/
private String authToken;
/** 메뉴 url*/
private ArrayList<String> menuUrls;
public LoginRes(String nextUrl) {
super();
this.nextUrl = nextUrl;

View File

@@ -65,6 +65,9 @@ public enum ApiResponseCode {
,CE_SENDMGT_DUPLICATE_SENDNUM("4021", "이미 등록된 발신번호로 저장 불가.")
/** 인증번호 발송 요청 임계값 초과 분당 10회 */
,CE_AUTHNUM_STAT_LOCK("4022", "인증요청 제한")
/** 토큰 인증 에러*/
,CE_AUTH_ERROR("4023", "토큰 인증 에러")
// 시스템
/** 알 수 없는 에러. */
,SE_UNKNOWN("9999", "알 수 없는 에러");

View File

@@ -1,58 +1,67 @@
package kr.co.uplus.ez.common.jwt;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.JwtException;
public class JwtAuthCookieFilter extends JwtAuthFilter {
@Autowired
private JwtService jwtSvc;
public JwtAuthCookieFilter(JwtProperties jwtProps) {
super(jwtProps);
}
@Override
public String getToken(HttpServletRequest request) {
String payload = null, signature = null;
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
// 1. 쿠키에서 jwt 토큰 header.paload 부분 읽기
if (jwtProps.getPart1().equals(cookie.getName())) {
payload = cookie.getValue();
}
// 2. 쿠키에서 jwt 토큰 signature 부분 읽기
else if (jwtProps.getPart2().equals(cookie.getName())) {
signature = cookie.getValue();
}
}
}
if (cookies == null || payload == null || signature == null) {
return null;
}
String token = payload + "." + signature;
return token;
}
@Override
public void onValidateSuccess(HttpServletRequest request, HttpServletResponse response, Claims claims) {
// 토큰 업데이트 - Sliding Sessions
jwtSvc.updatePrivateToken(response, claims);
}
@Override
public void onValidateException(HttpServletRequest request, HttpServletResponse response, JwtException exception) {
if (exception instanceof ExpiredJwtException) {
jwtSvc.destroyPrivateToken(request, response);
}
}
}
//package kr.co.uplus.ez.common.jwt;
//
//import javax.servlet.http.Cookie;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
//import org.springframework.beans.factory.annotation.Autowired;
//
//import io.jsonwebtoken.Claims;
//import io.jsonwebtoken.ExpiredJwtException;
//import io.jsonwebtoken.JwtException;
//
//public class JwtAuthCookieFilter extends JwtAuthFilter {
// @Autowired
// private JwtService jwtSvc;
//
//
// public JwtAuthCookieFilter(JwtProperties jwtProps) {
// super(jwtProps);
// }
//
// @Override
// public String getToken(HttpServletRequest request) {
//// String payload = null, signature = null;
//// Cookie[] cookies = request.getCookies();
//// if (cookies != null) {
//// for (Cookie cookie : cookies) {
//// // 1. 쿠키에서 jwt 토큰 header.paload 부분 읽기
//// if (jwtProps.getPart1().equals(cookie.getName())) {
//// payload = cookie.getValue();
//// }
//// // 2. 쿠키에서 jwt 토큰 signature 부분 읽기
//// else if (jwtProps.getPart2().equals(cookie.getName())) {
//// signature = cookie.getValue();
//// }
//// }
//// }
//// if (cookies == null || payload == null || signature == null) {
//// return null;
//// }
//// String token = payload + "." + signature;
//// return token;
// // 1. get jwtToken
// String header = request.getHeader(jwtProps.getHeader().toLowerCase());
// // 2. 헤더 값 검사
// if(header == null || !header.startsWith(jwtProps.getPrefix())) {
// return null;
// }
//
// // 3. Authorization 헤더에서 토큰 추출
// return header.replace(jwtProps.getPrefix(), "");
// }
//
// @Override
// public void onValidateSuccess(HttpServletRequest request, HttpServletResponse response, Claims claims) {
// // 토큰 업데이트 - Sliding Sessions
// jwtSvc.updatePrivateToken(response, claims);
// }
//
// @Override
// public void onValidateException(HttpServletRequest request, HttpServletResponse response, JwtException exception) {
// if (exception instanceof ExpiredJwtException) {
// jwtSvc.destroyPrivateToken(request, response);
// }
// }
//
//}

View File

@@ -1,13 +1,23 @@
package kr.co.uplus.ez.common.jwt;
import java.util.Enumeration;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.JwtException;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class JwtAuthHeaderFilter extends JwtAuthFilter {
@Autowired
private JwtService jwtSvc;
public JwtAuthHeaderFilter(JwtProperties jwtProps) {
super(jwtProps);
}
@@ -15,9 +25,22 @@ public class JwtAuthHeaderFilter extends JwtAuthFilter {
@Override
public String getToken(HttpServletRequest request) {
log.info("uri : {}", request.getRequestURI().toString());
// 1. 공통 헤더 체크
HashMap<String, String> headerMap = new HashMap<String, String>();
Enumeration<String> enumeration = request.getHeaderNames();
if (enumeration != null) {
while (enumeration.hasMoreElements()) {
String name = enumeration.nextElement();
headerMap.put(name.toLowerCase(), request.getHeader(name));
}
}
log.info("headerMap : {}",headerMap.toString());
// 1. access token이 저장된 헤더 읽기
String header = request.getHeader(jwtProps.getHeader());
String header = request.getHeader(jwtProps.getHeader().toLowerCase());
log.info("header authToken: {}" , header);
// 2. 헤더 값 검사
if(header == null || !header.startsWith(jwtProps.getPrefix())) {
return null;
@@ -29,10 +52,16 @@ public class JwtAuthHeaderFilter extends JwtAuthFilter {
@Override
public void onValidateSuccess(HttpServletRequest request, HttpServletResponse response, Claims claims) {
// jwtSvc.updatePrivateToken(response, claims);
}
@Override
public void onValidateException(HttpServletRequest request, HttpServletResponse response, JwtException exception) {
if (exception instanceof ExpiredJwtException) {
//jwtSvc.destroyPrivateToken(request, response);
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
}
}
}

View File

@@ -35,7 +35,7 @@ public class JwtService {
@Qualifier("sqlSessionTemplateDb2")
private SqlSessionTemplate sqlSessionSlave;
public void generatePrivateToken(HttpServletResponse response, Authentication auth) {
public String generatePrivateToken(HttpServletResponse response, Authentication auth) {
Claims claims = coreClaims(auth, jwtProps.getPrivateTokenExpiration());
// 필요하면 다른 정보 추가
@@ -45,7 +45,8 @@ public class JwtService {
String token = generateToken(claims);
// 쿠키에 토큰 추가 - 보안 강화
setTokenToCookie(response, token);
//setTokenToCookie(response, token);
return token;
}
private Claims coreClaims(Authentication auth, int expire) {
@@ -161,13 +162,29 @@ public class JwtService {
return generateToken(claims);
}
public String accessToken(AuthUser authUser) {
String setId = authUser.getOprtrId();
DateTime now = DateTime.now();
Date expiration = now.plusSeconds(jwtProps.getAccessTokenExpiration()).toDate();
Claims claims = Jwts.claims()
.setId(setId)
.setIssuedAt(now.toDate())
.setExpiration(expiration);
JwtUser jwtUser = JwtUser.createJwtUser(authUser);
claims.put("principal", jwtUser);
return generateToken(claims);
}
private String refreshToken(Authentication auth) {
Claims claims = coreClaims(auth, jwtProps.getRefreshTokenExpiration());
return generateToken(claims);
}
private Claims parseToken(String token) {
public Claims parseToken(String token) {
try {
Claims claims = Jwts.parser()
.setSigningKey(TextCodec.BASE64.decode(jwtProps.getKeyString()))

View File

@@ -24,6 +24,7 @@ public class JwtUser extends AuthUser {
u.setOprtrNm(user.getUsername());
u.setHpNo(user.getHpNo());
u.setAuthorities(user.getAuthorities());
u.setPwd(user.getPassword());
return u;
}

View File

@@ -20,7 +20,7 @@ import org.springframework.web.cors.CorsUtils;
import kr.co.uplus.ez.api.login.LoginFailureHandler;
import kr.co.uplus.ez.api.login.LoginSuccessHandler;
import kr.co.uplus.ez.common.jwt.JwtAuthCookieFilter;
//import kr.co.uplus.ez.common.jwt.JwtAuthCookieFilter;
import kr.co.uplus.ez.common.jwt.JwtAuthHeaderFilter;
import kr.co.uplus.ez.common.jwt.JwtExceptionFilter;
import kr.co.uplus.ez.common.jwt.JwtProperties;
@@ -31,7 +31,7 @@ import kr.co.uplus.ez.config.filter.VueStaticFilter;
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private static final String LOGIN_FORM_URL = "/login";
public static final String LOGIN_API_URL = "/api/v1/bo/login";
public static final String LOGIN_API_URL = "/api/v1/bo/login/**";
public static final String LOGIN_FAIL_URL = "/login?error=true";
public static final String LOGIN_SUCC_URL = "/";
public static final String LOGIN_UPDATE_PWD_URL = "/view/login/updatePassword";
@@ -40,6 +40,15 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
public static final String PUBLIC_API_URL = "/api/v1/bo/**"; // 내부에서 인증없이 호출하는 API
public static final String[] REST_API_URLS = {API_URL, TEST_PERMIT_URL};
public static final String[] VUE_URL_ARRY = {
"/view/login/auth"
,"/custMgt/subsList"
,"/custMgt/memberList"
,"/custMgt/subsDetail"
,"/custMgt/memberDetail"
,"/custMgt/memberAdminDetail"
};
private static final String[] PERMIT_URL_ARRAY = {
"/login",
"/api/v1/bo/login/**",
@@ -47,7 +56,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
"/swagger-resources/**",
"/v3/api-docs",
"/v3/api-docs/**",
"/"
"/",
"/socket/**"
};
private static final String[] AUTH_URL_ARRAY = {
@@ -59,7 +69,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
"/api/v1/bo/sendNumMgt/**",
"/api/v1/bo/mntrng/**",
"/api/v1/bo/riskMgt/sendNum/**",
"/api/v1/bo/stats/**"
"/api/v1/bo/stats/**",
"/view/error/**"
};
@@ -78,17 +89,17 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers("/static/**", "/assets/**");
}
@Bean
public Filter jwtAuthFilter() {
return new JwtAuthCookieFilter(jwtProps);
}
// @Bean
// public Filter jwtAuthFilter() {
// return new JwtAuthCookieFilter(jwtProps);
// }
@Override
public void configure(HttpSecurity http) throws Exception {
http
.addFilterBefore(new VueStaticFilter(), UsernamePasswordAuthenticationFilter.class) // Vue에서 호출시 화면관련 URL은 / forward
.addFilterBefore(new JwtExceptionFilter(), UsernamePasswordAuthenticationFilter.class)
.addFilterBefore(jwtAuthFilter(), UsernamePasswordAuthenticationFilter.class)
// .addFilterBefore(jwtAuthFilter(), UsernamePasswordAuthenticationFilter.class)
.addFilterBefore(new JwtAuthHeaderFilter(jwtProps), UsernamePasswordAuthenticationFilter.class);
http