어드민 수정건 수정

This commit is contained in:
USER
2022-07-11 11:43:43 +09:00
parent fb40f49f09
commit 74511fb587
47 changed files with 887 additions and 384 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<projectDescription> <projectDescription>
<name>hubeasy-admin</name> <name>hubez-admin</name>
<comment></comment> <comment></comment>
<projects> <projects>
</projects> </projects>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0"> <project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="hubeasy-admin"> <wb-module deploy-name="hubez-admin">
<property name="context-root" value="hubeasy-admin"/> <property name="context-root" value="hubez-admin"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
</wb-module> </wb-module>

View File

@@ -107,6 +107,8 @@ dependencies {
implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1' implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
// LOCAL용.
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16' /* Log4JDBC */
} }
bootJar { bootJar {

View File

@@ -0,0 +1,141 @@
<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,
);
console.log(this.lastMonthStart)
},
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

@@ -63,8 +63,8 @@
<div class="group"> <div class="group">
<div class="select_box"> <div class="select_box">
<label for="right" class="label">상세검색</label> <label for="right" class="label">상세검색</label>
<select name="" id="" v-model="grid.params.searchType" @keyup.enter="search"> <select name="searchType" id="searchType" v-model="searchType" @keyup.enter="search">
<option value="01" selected>고객사명</option> <option value="01">고객사명</option>
<option value="02">이름</option> <option value="02">이름</option>
<option value="03">사업자등록번호(생년월일)</option> <option value="03">사업자등록번호(생년월일)</option>
</select> </select>
@@ -169,6 +169,7 @@ export default {
{ text: '50', value: 50}, { text: '50', value: 50},
{ text: '100', value: 100} { text: '100', value: 100}
], ],
searchType:'01',
totalItems: 0, totalItems: 0,
grid: { grid: {
url: '/api/v1/bo/attractMgt/channelList', url: '/api/v1/bo/attractMgt/channelList',
@@ -202,14 +203,15 @@ export default {
{ name: 'custTyCd', header: '구분', align: 'center', width: '10%'}, { name: 'custTyCd', header: '구분', align: 'center', width: '10%'},
{ name: 'sndCnt', header: '전체발송건수', align: 'center', width: '11%', { name: 'sndCnt', header: '전체발송건수', align: 'center', width: '11%',
formatter: props =>{ formatter: props =>{
let result = props.sndCnt.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); let result = props.sndCnt;
//.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
return result; return result;
} }
} }
], ],
noDataStr: '검색 결과가 없습니다.', noDataStr: '검색 결과가 없습니다.',
params: { params: {
searchType: '', searchType: '01',
searchType1: '', searchType1: '',
searchText: '', searchText: '',
subsStDt: '', subsStDt: '',
@@ -234,7 +236,9 @@ export default {
this.getExcelHeader(); this.getExcelHeader();
this.setPeriodDay(0); this.setPeriodDay(0);
this.grid.params.subsSttusCd = ''; // this.grid.params.subsSttusCd = '';
// this.grid.params.searchType = '01';
// this.$refs.searchType_.
}, },
destroyed() { destroyed() {
this.grid.params.subsSttusCd = ''; this.grid.params.subsSttusCd = '';
@@ -260,7 +264,8 @@ export default {
search: function(isKeep) { search: function(isKeep) {
console.log('this.perPageCnt'+this.perPageCnt); console.log('this.perPageCnt'+this.perPageCnt);
//console.log(this.grid.params); console.log(this.grid.params);
this.grid.params.searchType1 = this.searchType
this.$refs.table.search(this.grid.params, isKeep); this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData(); this.sendStoreData();
}, },
@@ -335,7 +340,6 @@ export default {
}, },
channelDetail(props){ channelDetail(props){
console.log(props); console.log(props);
//TODO 전달값 셋팅 필요.
this.row.userId = props.loginId; this.row.userId = props.loginId;
this.row.userSeq = props.userSeq; this.row.userSeq = props.userSeq;
this.$router.push({ name: 'channelDetail', params: this.row }); this.$router.push({ name: 'channelDetail', params: this.row });
@@ -343,11 +347,14 @@ export default {
setCodeData() { setCodeData() {
// 상태 옵션 셋팅. // 상태 옵션 셋팅.
api.commCode({'grpCd' : 'SUBS_STTUS_CD'}).then(response => { api.commCode({'grpCd' : 'SUBS_STTUS_CD'}).then(response => {
// grid.params.subsSttusCd
this.subsSttusCdList = response.data.data.list; this.subsSttusCdList = response.data.data.list;
this.grid.params.subsSttusCd = '';
}); });
api.commCode({'grpCd' : 'CUST_TY_CD'}).then(response => { api.commCode({'grpCd' : 'CUST_TY_CD'}).then(response => {
this.custTyCdList = response.data.data.list; this.custTyCdList = response.data.data.list;
this.grid.params.custTyCd = '';
}); });
}, },
setPeriodDay(day) { setPeriodDay(day) {

View File

@@ -327,10 +327,12 @@ export default {
}, },
setPeriodDay(day) { setPeriodDay(day) {
this.periodDay = day; this.periodDay = day;
this.endDate = new Date(); // this.endDate = new Date();
this.startDate = moment(this.endDate) // this.startDate = moment(this.endDate)
.subtract(day, 'day') // .subtract(day, 'day')
.toDate(); // .toDate();
this.initSetStartDate();
this.initSetEndDate();
this.closeDate('start'); this.closeDate('start');
this.closeDate('end'); this.closeDate('end');
@@ -426,18 +428,6 @@ export default {
async getExcelDataDown() { async getExcelDataDown() {
try { try {
let response; let response;
// params: {
// startMonth: '',
// endMonth: '',
// },
// const params = {
// startDt: this.grid.params.startDt,
// endDt: this.grid.params.endDt,
// searchType1: this.grid.params.searchType1,
// searchType2: this.grid.params.searchType2,
// searchType3: this.grid.params.searchType3,
// searchText1: this.grid.params.searchText1
// };
response = await calcMgtApi.calcListExcel(this.grid.params); response = await calcMgtApi.calcListExcel(this.grid.params);
@@ -451,6 +441,18 @@ export default {
return false; return false;
} }
}, },
initSetStartDate(){
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'));
},
} }
}; };
</script> </script>

View File

@@ -10,7 +10,7 @@
<div class="search_wrap"> <div class="search_wrap">
<div class="select_box"> <div class="select_box">
<label for="stat" class="label">상태</label> <label for="stat" class="label">상태</label>
<select name="" id="stat" v-model="grid.params.searchType1" @keyup.enter="search"> <select name="" id="stat" v-model="searchType1" @keyup.enter="search">
<option value="">전체</option> <option value="">전체</option>
<option value="Y">사용</option> <option value="Y">사용</option>
<option value="N">폐기</option> <option value="N">폐기</option>
@@ -18,7 +18,7 @@
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="searchType" class="label">상세검색</label> <label for="searchType" class="label">상세검색</label>
<select name="" id="searchType" v-model="grid.params.searchType2" @keyup.enter="search"> <select name="" id="searchType" v-model="searchType2" @keyup.enter="search">
<option value="custNm" selected="selected">고객사명</option> <option value="custNm" selected="selected">고객사명</option>
<option value="bizNo">사업자번호</option> <option value="bizNo">사업자번호</option>
<option value="tmpltNm">템플릿명</option> <option value="tmpltNm">템플릿명</option>
@@ -32,7 +32,7 @@
</div> </div>
</form> </form>
<div class="info"> <div class="info">
<div class="count"> <span>{{ totalItems }}</span> <div class="count"> <span>{{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }}</span>
<div class="select_box NumberSe"> <div class="select_box NumberSe">
<select name="" id="perPage" v-model="grid.pagePerRows" @keyup.enter="search"> <select name="" id="perPage" v-model="grid.pagePerRows" @keyup.enter="search">
<option value="20">20</option> <option value="20">20</option>
@@ -172,6 +172,8 @@ export default {
cate2Code: "", cate2Code: "",
totalItems: 0, totalItems: 0,
pageType: 'CHANN', pageType: 'CHANN',
searchType1:'',
searchType2:'custNm',
// 테이블 리스트 데이터 // 테이블 리스트 데이터
perPageCnt: 50, perPageCnt: 50,
@@ -199,15 +201,15 @@ export default {
], ],
columns: [ columns: [
{ name: 'no', header: 'NO', align: 'center', width: 40 }, { name: 'no', header: 'NO', align: 'center', width: '4%' },
{ name: 'custNm', header: '고객사명', align: 'left', width: 120 }, { name: 'custNm', header: '고객사명', align: 'center', width: '12%' },
{ name: 'bregNo', header: '사업자번호', align: 'center', width: 120,renderer: {type: customBRegNo}}, { name: 'bregNo', header: '사업자번호', align: 'center', width: '12%',renderer: {type: customBRegNo}},
{ name: 'tmpltCd', header: '템플릿코드', align: 'center', width: 120}, { name: 'tmpltCd', header: '템플릿코드', align: 'center', width: '12%'},
{ name: 'tmpltNm', header: '템플릿명', align: 'center', width: 120}, { name: 'tmpltNm', header: '템플릿명', align: 'center', width: '12%'},
{ name: 'tmpltType', header: '템플릿 유형', align: 'center', width: 120,renderer: {type: customTmpltType}}, { name: 'tmpltType', header: '템플릿 유형', align: 'center', width: '12%',renderer: {type: customTmpltType}},
{ name: 'stat', header: '상태(반려사유)', align: 'center', width: 120,renderer: {type: customStat}}, { name: 'stat', header: '상태(반려사유)', align: 'center', width: '12%',renderer: {type: customStat}},
{ name: 'sendProfile', header: '발신프로필', align: 'center', width: 120}, { name: 'sendProfile', header: '발신프로필', align: 'center', width: '125'},
{ name: 'lastChgDt', header: '최종수정일', width: 120, cls: 'td_line' } { name: 'lastChgDt', header: '최종수정일', width: '12%', cls: 'td_line' }
], ],
noDataStr: '검색 결과가 없습니다.', noDataStr: '검색 결과가 없습니다.',
params: { params: {
@@ -258,6 +260,9 @@ export default {
methods: { methods: {
search: function(isKeep) { search: function(isKeep) {
console.log(this.grid.params); 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.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData(); this.sendStoreData();
}, },

View File

@@ -3,7 +3,6 @@
<div> <div>
<div class="dimmed modal33" @click="excelPopClose();"></div> <div class="dimmed modal33" @click="excelPopClose();"></div>
<div class="popup-wrap modal33"> <div class="popup-wrap modal33">
<!-- 사용자 ID 대량 생성 -->
<div class="popup modal33 popup_form"> <div class="popup modal33 popup_form">
<div class="pop-head"> <div class="pop-head">
<h3 class="pop-tit">사용자 ID 대량 생성</h3> <h3 class="pop-tit">사용자 ID 대량 생성</h3>
@@ -17,18 +16,17 @@
<tr> <tr>
<th>사용자 ID 업로드</th> <th>사용자 ID 업로드</th>
<td> <td>
<div class="pop-btn2 bulk"> <div class="popup-btn2 bulk">
<button class="btn-default" @click="sampleDown">샘플 다운로드</button>
<input type="file" ref="file" style="display: none" @change="readFile" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/> <input type="file" ref="file" style="display: none" @change="readFile" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>
<button class="button grey" @click="$refs.file.click()">파일 로드</button> <button class="btn-default" @click="sampleDown">샘플 다운로드</button>
<button class="button btn-p2color" @click="$refs.file.click()">파일 업로드</button>
</div> </div>
<p class="file" id="uploadFile"> <p class="file" id="uploadFile"></p>
</p>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<div class="pop-btn2"> <div class="popup-btn2">
<button class="btn-pcolor" @click="saveExcel">저장</button> <button class="btn-pcolor" @click="saveExcel">저장</button>
<button class="btn-default" @click="excelPopClose">취소</button> <button class="btn-default" @click="excelPopClose">취소</button>
</div> </div>

View File

@@ -4,11 +4,62 @@
<div class="dimmed memberUpdate" @click="memberUpdateModalClose();"></div> <div class="dimmed memberUpdate" @click="memberUpdateModalClose();"></div>
<div class="popup-wrap memberUpdate"> <div class="popup-wrap memberUpdate">
<!-- 수정 확인 --> <!-- 수정 확인 -->
<div class="popup memberUpdate popup_form"> <!-- <div class="popup memberUpdate popup_form">-->
<!-- <div class="pop-head">-->
<!-- <h3 class="pop-tit">사용자 ID 수정</h3>-->
<!-- </div>-->
<!-- <form autocomplete="off">-->
<!-- <table>-->
<!-- <tbody>-->
<!-- <tr>-->
<!-- <th>관리자 ID</th>-->
<!-- <td>{{adminId}}</td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <th>ID</th>-->
<!-- <td>{{userId}}</td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <th>비밀번호</th>-->
<!-- <td><input type="password" @keypress="onlyPassword" @input="onlyPassword" required minlength="8" maxlength="16" ref="_pwd1" v-model.trim="userPwd1"></td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <th>비밀번호 확인</th>-->
<!-- <td><input type="password" @keypress="onlyPassword" @input="onlyPassword" required minlength="8" maxlength="16" ref="_pwd2" v-model.trim="userPwd2"></td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <th>이름</th>-->
<!-- <td><input type="text" v-model.trim="userNm" ref="_userNm"></td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <th>휴대폰번호</th>-->
<!-- <td><input type="text" v-model.trim="mdn" ref="_phone"></td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <th>이메일</th>-->
<!-- <td><input type="email" v-model.trim="email" ref="_email"></td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <th class="center">상태</th>-->
<!-- <td>-->
<!-- <input type="radio" name="userStateUpdate" value="01" id="user_popup_update_radio1" v-model="userStat">-->
<!-- <label for="user_popup_update_radio1">사용</label>-->
<!-- <input type="radio" name="userStateUpdate" value="02" id="user_popup_update_radio2" v-model="userStat">-->
<!-- <label for="user_popup_update_radio2">정지</label>-->
<!-- </td>-->
<!-- </tr>-->
<!-- </tbody>-->
<!-- </table>-->
<!-- </form>-->
<!-- <div class="pop-btn2">-->
<!-- <button class="btn-pcolor" @click="memberUpdateConfirm();">저장</button>-->
<!-- <button class="btn-default" @click="memberUpdateModalClose();">취소</button>-->
<!-- </div>-->
<!-- </div>-->
<div class="popup modal32 popup_form memberUpdate">
<div class="pop-head"> <div class="pop-head">
<h3 class="pop-tit">사용자 ID 수정</h3> <h3 class="pop-tit">사용자 ID 수정</h3>
</div> </div>
<form autocomplete="off">
<table> <table>
<tbody> <tbody>
<tr> <tr>
@@ -50,13 +101,11 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
</form> <div class="popup-btn2">
<div class="pop-btn2">
<button class="btn-pcolor" @click="memberUpdateConfirm();">저장</button> <button class="btn-pcolor" @click="memberUpdateConfirm();">저장</button>
<button class="btn-default" @click="memberUpdateModalClose();">취소</button> <button class="btn-default" @click="memberUpdateModalClose();">취소</button>
</div> </div>
</div> </div>
<validation-confirm-pop ref="validationConfirmPopModal"> </validation-confirm-pop> <validation-confirm-pop ref="validationConfirmPopModal"> </validation-confirm-pop>
<common-modal ref="commmonModal"></common-modal> <common-modal ref="commmonModal"></common-modal>
@@ -70,7 +119,6 @@ import custMgtApi from "../service/custMgtApi.js";
import { utils_mixin, chkPattern2 } from '../service/mixins'; import { utils_mixin, chkPattern2 } from '../service/mixins';
import ValidationConfirmPop from '../components/ValidationConfirmPop.vue'; import ValidationConfirmPop from '../components/ValidationConfirmPop.vue';
import lodash from "lodash"; import lodash from "lodash";
//import commonModal from "@/components/modal/commonModal";
import commonModal from "../components/commonModal"; import commonModal from "../components/commonModal";
export default { export default {

View File

@@ -1,14 +1,11 @@
<template> <template>
<!-- <div class="wrap bg-wrap"> -->
<div> <div>
<div class="dimmed memberInsert" @click="memberInsertModalClose();"></div> <div class="dimmed memberInsert" @click="memberInsertModalClose();"></div>
<div class="popup-wrap memberInsert"> <div class="popup-wrap memberInsert">
<!-- 수정 확인 --> <div class="popup modal31 popup_form memberInsert">
<div class="popup memberInsert popup_form">
<div class="pop-head"> <div class="pop-head">
<h3 class="pop-tit">사용자 ID 생성</h3> <h3 class="pop-tit">사용자 ID 생성</h3>
</div> </div>
<form autocomplete="off">
<table> <table>
<tbody> <tbody>
<tr> <tr>
@@ -25,14 +22,14 @@
</tr> </tr>
<tr> <tr>
<th>휴대폰번호</th> <th>휴대폰번호</th>
<td><input type="text" v-model.trim="mdn" ref="_phone"></td> <td><input type="text" placeholder="- 자 제외 숫자만 입력" v-model.trim="mdn" ref="_phone"></td>
</tr> </tr>
<tr> <tr>
<th>이메일</th> <th>이메일</th>
<td><input type="email" v-model.trim="email" ref="_email"></td> <td><input type="email" v-model.trim="email" ref="_email"></td>
</tr> </tr>
<tr> <tr>
<th class="center">상태</th> <th class="center">ID 잠금</th>
<td> <td>
<input type="radio" name="userStateInsert" value="01" id="user_popup_insert_radio1" v-model="stat"> <input type="radio" name="userStateInsert" value="01" id="user_popup_insert_radio1" v-model="stat">
<label for="user_popup_insert_radio1">사용</label> <label for="user_popup_insert_radio1">사용</label>
@@ -42,17 +39,15 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
</form> <div class="popup-btn2">
<div class="pop-btn2">
<button class="btn-pcolor" @click="memberInsertConfirm();">저장</button> <button class="btn-pcolor" @click="memberInsertConfirm();">저장</button>
<button class="btn-default" @click="memberInsertModalClose();">취소</button> <button class="btn-default" @click="memberInsertModalClose();">취소</button>
</div> </div>
</div> </div>
</div>
<validation-confirm-pop ref="validationConfirmPopModal"> </validation-confirm-pop> <validation-confirm-pop ref="validationConfirmPopModal"> </validation-confirm-pop>
<common-modal ref="commmonModal"></common-modal> <common-modal ref="commmonModal"></common-modal>
</div> </div>
</div>
</template> </template>
<script> <script>
@@ -61,7 +56,6 @@ import custMgtApi from "../service/custMgtApi.js";
import { utils_mixin, chkPattern2 } from '../service/mixins'; import { utils_mixin, chkPattern2 } from '../service/mixins';
import ValidationConfirmPop from '../components/ValidationConfirmPop.vue'; import ValidationConfirmPop from '../components/ValidationConfirmPop.vue';
import lodash from "lodash"; import lodash from "lodash";
//import commonModal from "@/components/modal/commonModal";
import commonModal from "../components/commonModal"; import commonModal from "../components/commonModal";
export default { export default {

View File

@@ -9,29 +9,6 @@
<h3 class="pop-tit">전체 메모보기</h3> <h3 class="pop-tit">전체 메모보기</h3>
</div> </div>
<table class="table-c"> <table class="table-c">
<!--
<thead>
<tr>
<th>내용</th>
<th>작성자</th>
<th>작성일</th>
<th>삭제</th>
</tr>
</thead>
<tbody>
<tr>
<td class="memo">작성한 메모 내용이 노출됩니다. <br/>
해당영역은 최대 5줄까지 노출되며 이후 우측 스크롤이 생성됩니다.<br/>
작성한 메모 내용이 노출됩니다. <br/>
해당영역은 최대 5줄까지 노출되며 이후 우측 스크롤이 생성됩니다.<br/>
작성한 메모 내용이 노출됩니다.</td>
<td>관리자</td>
<td>2022-03-10</td>
<td><button type="button" class="button white btn-a">삭제</button></td>
</tr>
</tbody>
-->
<custom-grid <custom-grid
ref="table" ref="table"
:totalItems="'totalItems'" :totalItems="'totalItems'"
@@ -47,8 +24,7 @@
></custom-grid> ></custom-grid>
</table> </table>
<div class="pop-btn2"> <div class="popup-btn2">
<button class="btn-default" @click="memoTotalModalClose();">닫기</button> <button class="btn-default" @click="memoTotalModalClose();">닫기</button>
</div> </div>

View File

@@ -137,6 +137,9 @@
</td> </td>
<td><button type="button" class="button white btn-a" @click="memberUpdatePopOpen(option.userId);">수정</button></td> <td><button type="button" class="button white btn-a" @click="memberUpdatePopOpen(option.userId);">수정</button></td>
</tr> </tr>
<tr v-if="list.length === 0">
<td colspan="7">등록된 사용자 정보가 없습니다.</td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>

View File

@@ -42,7 +42,7 @@
</div> </div>
<div class="select_box id"> <div class="select_box id">
<label for="right" class="label">상태</label> <label for="right" class="label">상태</label>
<select name="" id="" v-model="grid.params.searchType1"> <select name="" id="" v-model="searchType1">
<option value="" selected>전체</option> <option value="" selected>전체</option>
<option v-for="(option, i) in statType" v-bind:value="option.code" v-bind:key="i"> <option v-for="(option, i) in statType" v-bind:value="option.code" v-bind:key="i">
{{ option.codeNm }} {{ option.codeNm }}
@@ -51,7 +51,7 @@
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="right" class="label">구분</label> <label for="right" class="label">구분</label>
<select name="" id="" v-model="grid.params.searchType2"> <select name="" id="" v-model="searchType2">
<option value="" selected>전체</option> <option value="" selected>전체</option>
<option value="01" >관리자</option> <option value="01" >관리자</option>
<option value="02" >사용자</option> <option value="02" >사용자</option>
@@ -62,7 +62,7 @@
<div class="group"> <div class="group">
<div class="select_box"> <div class="select_box">
<label for="right" class="label">상세검색</label> <label for="right" class="label">상세검색</label>
<select name="" id="" v-model="grid.params.searchType3"> <select name="" id="" v-model="searchType3">
<option value="" selected>전체</option> <option value="" selected>전체</option>
<option value="01" selected>ID</option> <option value="01" selected>ID</option>
<option value="02">이름</option> <option value="02">이름</option>
@@ -156,7 +156,9 @@ export default {
statType: [], statType: [],
userType: [], userType: [],
searchType1:'',
searchType2:'',
searchType3:'',
row:{}, row:{},
// 테이블 리스트 데이터 // 테이블 리스트 데이터
@@ -265,6 +267,9 @@ export default {
this.grid.params.endDt = moment(this.endDate).format('YYYYMMDD'); this.grid.params.endDt = moment(this.endDate).format('YYYYMMDD');
console.log('this.perPageCnt'+this.perPageCnt); console.log('this.perPageCnt'+this.perPageCnt);
console.log(this.grid.params); console.log(this.grid.params);
this.grid.params.searchType1 = this.searchType1;
this.grid.params.searchType2 = this.searchType2;
this.grid.params.searchType3 = this.searchType3;
this.$refs.table.search(this.grid.params, isKeep); this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData(); this.sendStoreData();
}, },

View File

@@ -42,25 +42,21 @@
</div> </div>
<div class="select_box id"> <div class="select_box id">
<label for="right" class="label">상태</label> <label for="right" class="label">상태</label>
<select name="" id="" v-model="grid.params.searchType1" @keyup.enter="search"> <select name="" id="" v-model="searchType1" @keyup.enter="search">
<option value="" selected>전체</option> <option value="" selected>전체</option>
<option value="" >사용</option> <option v-for="(option, i) in statType" v-bind:value="option.code" v-bind:key="i">
<option value="" >미납중지</option>
<option value="" >사용중지</option>
<option value="" >해지</option>
<!-- <option v-for="(option, i) in statType" v-bind:value="option.code" v-bind:key="i">
{{ option.codeNm }} {{ option.codeNm }}
</option> --> </option>
</select> </select>
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="right" class="label">유치채널</label> <label for="right" class="label">유치채널</label>
<select name="" id="" v-model="grid.params.searchType2" @keyup.enter="search"> <select name="" id="" v-model="searchType2" @keyup.enter="search">
<option value="" selected>전체</option> <option value="" selected>전체</option>
<option value="" >고객셀프가입</option> <option value="01" >고객셀프가입</option>
<option value="" >대리점</option> <option value="02" >대리점</option>
<option value="" >고객센터</option> <option value="03" >고객센터</option>
<option value="" >직접영업</option> <option value="04" >직접영업</option>
<!-- <option v-for="(option, i) in userType" v-bind:value="option.code" v-bind:key="i"> <!-- <option v-for="(option, i) in userType" v-bind:value="option.code" v-bind:key="i">
{{ option.codeNm }} {{ option.codeNm }}
</option> --> </option> -->
@@ -70,7 +66,7 @@
<div class="group"> <div class="group">
<div class="select_box"> <div class="select_box">
<label for="right" class="label">상세검색</label> <label for="right" class="label">상세검색</label>
<select name="" id="" v-model="grid.params.searchType3" @keyup.enter="search"> <select name="" id="" v-model="searchType3" @keyup.enter="search">
<option value="">전체</option> <option value="">전체</option>
<option value="01">고객사명</option> <option value="01">고객사명</option>
<option value="02">가입번호</option> <option value="02">가입번호</option>
@@ -166,7 +162,9 @@ export default {
row:{}, row:{},
pageType: 'SUBS', pageType: 'SUBS',
searchType1:'',
searchType2:'',
searchType3:'',
// 테이블 리스트 데이터 // 테이블 리스트 데이터
perPageCnt: 50, perPageCnt: 50,
options: [ options: [
@@ -276,6 +274,11 @@ export default {
this.grid.params.endDt = moment(this.endDate).format('YYYYMMDD'); this.grid.params.endDt = moment(this.endDate).format('YYYYMMDD');
console.log('this.perPageCnt'+this.perPageCnt); console.log('this.perPageCnt'+this.perPageCnt);
console.log(this.grid.params); console.log(this.grid.params);
this.grid.params.searchType1 = this.searchType1
this.grid.params.searchType2 = this.searchType2
this.grid.params.searchType3 = this.searchType3
this.$refs.table.search(this.grid.params, isKeep); this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData(); this.sendStoreData();
}, },

View File

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

View File

@@ -92,7 +92,8 @@ import customGrid from '@/components/CustomGrid';
import { utils_mixin, chkPattern2 } from '../service/mixins'; import { utils_mixin, chkPattern2 } from '../service/mixins';
import moment from 'moment'; import moment from 'moment';
import xlsx from '@/common/excel'; import xlsx from '@/common/excel';
import commonModal from "@/components/modal/commonModal"; //import commonModal from "@/components/modal/commonModal";
import commonModal from "../components/commonModal";
class CustomATagRenderer { class CustomATagRenderer {
constructor(props) { constructor(props) {
@@ -203,13 +204,17 @@ export default {
// this.setCodeData(); // this.setCodeData();
// this.getExcelHeader(); // this.getExcelHeader();
this.setPeriodDay(0); this.setPeriodDay(0);
this.grid.params.searchType1 = 'ALL'; this.grid.params.searchType1 = '';
}, },
destroyed() { destroyed() {
this.grid.params.searchType1 = '';
this.grid.params.searchText1 = '';
this.grid.params.searchText2 = '';
this.grid.params.searchText3 = '';
}, },
mounted() { mounted() {
this.grid.params.searchType1 = 'ALL'; this.grid.params.searchType1 = '';
let page = 1; let page = 1;
// 페이지 정보 및 검색 조건 // 페이지 정보 및 검색 조건
@@ -240,7 +245,7 @@ export default {
}, },
methods: { methods: {
search: function(isKeep) { search: function(isKeep) {
this.doValidate(); if(this.doValidate()){
this.grid.params.sentDate = moment(this.startDate).format('YYYYMMDD'); this.grid.params.sentDate = moment(this.startDate).format('YYYYMMDD');
this.grid.params.reqChennel = this.grid.params.searchType1; this.grid.params.reqChennel = this.grid.params.searchType1;
this.grid.params.phone = this.grid.params.searchText1; this.grid.params.phone = this.grid.params.searchText1;
@@ -249,6 +254,7 @@ export default {
console.log(this.grid.params); console.log(this.grid.params);
this.$refs.table.search(this.grid.params, isKeep); this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData(); this.sendStoreData();
}
}, },
setPeriodDay(day) { setPeriodDay(day) {
this.periodDay = day; this.periodDay = day;
@@ -324,20 +330,29 @@ export default {
if(this.isNull(this.grid.params.searchText1)) { if(this.isNull(this.grid.params.searchText1)) {
this.row.title = '발송내역'; this.row.title = '발송내역';
this.row.msg1 = '수신번호를 입력해 주세요.'; this.row.msg1 = '수신번호를 입력해 주세요.';
this.row.focusTaget = '1';
this.$refs.commmonModal.alertModalOpen(this.row); this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._searchText1.focus();
return false; return false;
} }
// 발신번호 필수입력체크 // 발신번호 필수입력체크
if(this.isNull(this.grid.params.searchText2)) { if(this.isNull(this.grid.params.searchText2)) {
this.row.title = '발송내역'; this.row.title = '발송내역';
this.row.msg1 = '신번호를 입력해 주세요.'; this.row.msg1 = '신번호를 입력해 주세요.';
this.row.focusTaget = '2';
this.$refs.commmonModal.alertModalOpen(this.row); this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._searchText2.focus();
return false; return false;
} }
return true;
},
checkFocus(){
if(this.row.focusTaget === '1'){
this.$refs._searchText1.focus();
} else if(this.row.focusTaget === '2'){
this.$refs._searchText2.focus();
}
}, },
} }
}; };

View File

@@ -14,6 +14,7 @@ export default [
path: '/riskMgt/sendNum/zezNum', path: '/riskMgt/sendNum/zezNum',
component: ZezNum, component: ZezNum,
name: 'zezNum', name: 'zezNum',
props: true,
meta: { public: true } meta: { public: true }
}, },
{ {
@@ -26,6 +27,7 @@ export default [
path: '/riskMgt/sendNum/all', path: '/riskMgt/sendNum/all',
component: All, component: All,
name: 'all', name: 'all',
props: true,
meta: { public: true } meta: { public: true }
}, },

View File

@@ -29,23 +29,23 @@
<button type="button" class="button grey btn-a" @click="todayDate">오늘</button> <button type="button" class="button grey btn-a" @click="todayDate">오늘</button>
<div class="select_box id"> <div class="select_box id">
<label for="right" class="label">차단사유</label> <label for="right" class="label">차단사유</label>
<select name="" id="" v-model="grid.params.blckRsnCd"> <select name="" id="" v-model="blckRsnCd">
<option value="" selected>전체</option> <option value="" selected>전체</option>
<option value="">일반</option> <option value="01">일반</option>
<option value="">대출</option> <option value="02">대출</option>
<option value="">의약품</option> <option value="03">의약품</option>
<option value="">도박</option> <option value="04">도박</option>
<option value="">스미싱</option> <option value="05">스미싱</option>
<option value="">기타</option> <option value="06">기타</option>
</select> </select>
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="right" class="label">차단구분</label> <label for="right" class="label">차단구분</label>
<select name="" id="" v-model="grid.params.blckTpCd"> <select name="" id="" v-model="blckTpCd">
<option value="" selected>전체</option> <option value="" selected>전체</option>
<option value="">발신번호차단</option> <option value="01">발신번호차단</option>
<option value="">메시지차단</option> <option value="02">메시지차단</option>
<option value="">080수신번호차단</option> <option value="03">080수신번호차단</option>
</select> </select>
</div> </div>
</div> </div>
@@ -60,10 +60,10 @@
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="right" class="label">상세검색</label> <label for="right" class="label">상세검색</label>
<select name="" id="" v-model="grid.params.searchType1"> <select name="" id="" v-model="searchType1">
<option value="" selected>고객사명</option> <option value="01" selected>고객사명</option>
<option value="">사업자번호</option> <option value="02">사업자번호</option>
<option value="">발송ID</option> <option value="03">발송ID</option>
</select> </select>
</div> </div>
<div class="input_box"> <div class="input_box">
@@ -74,7 +74,7 @@
</div> </div>
</form> </form>
<div class="info"> <div class="info">
<div class="count"> <span>{{ totalItems }}</span> <div class="count"> <span>{{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }}</span>
<div class="select_box NumberSe"> <div class="select_box NumberSe">
<select name="" id="" v-model="perPageCnt" @change="changePerPage()"> <select name="" id="" v-model="perPageCnt" @change="changePerPage()">
<option v-for="option in options" v-bind:value="option.value" v-bind:key="option.value">{{ option.text }}</option> <option v-for="option in options" v-bind:value="option.value" v-bind:key="option.value">{{ option.text }}</option>
@@ -150,6 +150,9 @@ export default {
], ],
statType: [], statType: [],
userType: [], userType: [],
blckRsnCd:'',
blckTpCd:'',
searchType1:'01',
row:{}, row:{},
grid: { grid: {
url: '/api/v1/bo/riskMgt/web/intrcpList', url: '/api/v1/bo/riskMgt/web/intrcpList',
@@ -224,6 +227,7 @@ export default {
searchText1: '' searchText1: ''
} }
}); });
this.startDate = '';
}, },
created(){ created(){
const getCondition = this.$store.getters['searchcondition/getSearchCondition']; const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
@@ -246,10 +250,9 @@ export default {
search: function(isKeep) { search: function(isKeep) {
console.log(this.grid.params); console.log(this.grid.params);
this.grid.params.blckDt = moment(this.startDate).format('YYYYMMDD'); this.grid.params.blckDt = moment(this.startDate).format('YYYYMMDD');
this.grid.params.blckRsnCd = this.grid.params.searchType1; this.grid.params.blckTpCd = this.blckTpCd
this.grid.params.blckTpCd = this.grid.params.searchText1; this.grid.params.blckRsnCd = this.blckRsnCd
this.grid.params.sndrno = this.grid.params.searchText2; this.grid.params.searchType1 = this.searchType1
this.grid.params.custNm = this.grid.params.searchText3;
this.$refs.table.search(this.grid.params, isKeep); this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData(); this.sendStoreData();
}, },
@@ -302,7 +305,8 @@ export default {
}, },
//회원 상세페이지로 이동 //회원 상세페이지로 이동
custDetail(props) { custDetail(props) {
this.row.custNm = props.serviceId; //this.row.custNm = props.serviceId;
this.row.serviceId = props.serviceId;
this.$router.push({ name: 'subsDetail', params: this.row }); this.$router.push({ name: 'subsDetail', params: this.row });
}, },
calendarCalbackFnc(year, month, day){ calendarCalbackFnc(year, month, day){

View File

@@ -15,7 +15,7 @@
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="blckRsnCd" class="label">차단사유</label> <label for="blckRsnCd" class="label">차단사유</label>
<select name="" id="blckRsnCd" v-model="grid.params.blckRsnCd" @keyup="search"> <select name="" id="blckRsnCd" v-model="blckRsnCd" @keyup="search">
<option value="" selected>전체</option> <option value="" selected>전체</option>
<option value="01">일반</option> <option value="01">일반</option>
<option value="02">대출</option> <option value="02">대출</option>
@@ -29,7 +29,7 @@
<div class="group"> <div class="group">
<div class="select_box"> <div class="select_box">
<label for="right" class="label">차단여부</label> <label for="right" class="label">차단여부</label>
<select name="" id="" v-model="grid.params.blckYn"> <select name="" id="" v-model="blckYn">
<option value="" selected>전체</option> <option value="" selected>전체</option>
<option value="Y">차단</option> <option value="Y">차단</option>
<option value="N">해제</option> <option value="N">해제</option>
@@ -37,7 +37,7 @@
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="right" class="label">발송타입</label> <label for="right" class="label">발송타입</label>
<select name="" id="" v-model="grid.params.sndblckTpCd"> <select name="" id="" v-model="sndblckTpCd">
<option value="" selected>전체</option> <option value="" selected>전체</option>
<option value="01">공용</option> <option value="01">공용</option>
<option value="02">문자</option> <option value="02">문자</option>
@@ -126,6 +126,9 @@ export default {
return { return {
totalItems: 0, totalItems: 0,
perPageCnt: 50, perPageCnt: 50,
blckRsnCd:'',
blckYn:'',
sndblckTpCd:'',
options: [ options: [
{ text: '20', value: 20}, { text: '20', value: 20},
{ text: '50', value: 50}, { text: '50', value: 50},
@@ -133,8 +136,8 @@ export default {
], ],
grid: { grid: {
url: '/api/v1/bo/riskMgt/sendNum/intrcpList', url: '/api/v1/bo/riskMgt/sendNum/intrcpList',
pagePerRows: 20, pagePerRows: 50,
perPage: 20, perPage: 50,
pagination: true, pagination: true,
isCheckbox: false, isCheckbox: false,
initialRequest: false, initialRequest: false,
@@ -206,6 +209,11 @@ export default {
methods: { methods: {
search: function(isKeep) { search: function(isKeep) {
console.log(this.grid.params); 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.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData(); this.sendStoreData();
}, },

View File

@@ -14,14 +14,14 @@
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="blckRsnCd" class="label">차단사유</label> <label for="blckRsnCd" class="label">차단사유</label>
<select name="" id="blckRsnCd" v-model="grid.params.blckRsnCd" @keyup="search"> <select name="" id="blckRsnCd" v-model="blckRsnCd" @keyup="search">
<option value="" selected>전체</option> <option value="" selected>전체</option>
<option value="">일반</option> <option value="01">일반</option>
<option value="">대출</option> <option value="02">대출</option>
<option value="">의약품</option> <option value="03">의약품</option>
<option value="">도박</option> <option value="04">도박</option>
<option value="">스미싱</option> <option value="05">스미싱</option>
<option value="">기타</option> <option value="06">기타</option>
</select> </select>
</div> </div>
<div class="input_box"> <div class="input_box">
@@ -32,7 +32,7 @@
</div> </div>
</form> </form>
<div class="info"> <div class="info">
<div class="count"> <span> {{ totalItems}} </span> <div class="count"> <span> {{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')}} </span>
<div class="select_box NumberSe"> <div class="select_box NumberSe">
<select name="" id="" v-model="perPageCnt" @change="changePerPage()"> <select name="" id="" v-model="perPageCnt" @change="changePerPage()">
<option v-for="option in options" v-bind:value="option.value" v-bind:key="option.value">{{ option.text }}</option> <option v-for="option in options" v-bind:value="option.value" v-bind:key="option.value">{{ option.text }}</option>
@@ -106,6 +106,7 @@ export default {
{ text: '50', value: 50}, { text: '50', value: 50},
{ text: '100', value: 100} { text: '100', value: 100}
], ],
blckRsnCd:'',
grid: { grid: {
url: '/api/v1/bo/riskMgt/msg/intrcpList', url: '/api/v1/bo/riskMgt/msg/intrcpList',
perPageRows: 20, perPageRows: 20,
@@ -177,6 +178,9 @@ export default {
methods: { methods: {
search: function(isKeep) { search: function(isKeep) {
console.log(this.grid.params); console.log(this.grid.params);
this.grid.params.blckRsnCd = this.blckRsnCd;
this.grid.pagePerRows = this.perPageCnt
this.$refs.table.search(this.grid.params, isKeep); this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData(); this.sendStoreData();
}, },

View File

@@ -7,7 +7,8 @@
<h3 class="title">080 수신번호 차단</h3> <h3 class="title">080 수신번호 차단</h3>
<p class="breadcrumb">리스크관리 &gt; 080 수신번호 차단</p> <p class="breadcrumb">리스크관리 &gt; 080 수신번호 차단</p>
</div> </div>
<form autocomplete="off" class="search_form"> <!-- <form autocomplete="off" class="search_form"> -->
<div class="search_form">
<div class="search_wrap"> <div class="search_wrap">
<div class="input_box"> <div class="input_box">
<label for="search" class="label">고객사</label> <label for="search" class="label">고객사</label>
@@ -23,7 +24,8 @@
</div> </div>
<button type="button" class="button grey" @click="search">조회</button> <button type="button" class="button grey" @click="search">조회</button>
</div> </div>
</form> </div>
<!-- </form> -->
<div class="info"> <div class="info">
<div class="count"> <span> {{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }} </span> <div class="count"> <span> {{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }} </span>
<div class="select_box NumberSe"> <div class="select_box NumberSe">
@@ -58,7 +60,7 @@
import customGrid from '@/components/CustomGrid'; import customGrid from '@/components/CustomGrid';
import commonModal from "@/components/modal/commonModal"; import commonModal from "@/components/modal/commonModal";
import { utils_mixin, chkPattern2 } from '../service/mixins'; import { utils_mixin, chkPattern2 } from '../service/mixins';
//import api from '../service/api';
class CustomATagRenderer { class CustomATagRenderer {
constructor(props) { constructor(props) {
this.props = props; this.props = props;
@@ -75,11 +77,13 @@ class CustomATagRenderer {
addEvent(selEl) { addEvent(selEl) {
selEl.addEventListener("click", () => { selEl.addEventListener("click", () => {
console.log(this.props)
const { callback } = this.props["cgrido" + this.props.colName].options; const { callback } = this.props["cgrido" + this.props.colName].options;
callback(this.props); callback(this.props);
}); });
} }
} }
class customBRegNo { class customBRegNo {
constructor(props) { constructor(props) {
this.props = props; this.props = props;
@@ -139,7 +143,8 @@ export default {
, options: { , options: {
callback: this.memberDetail, callback: this.memberDetail,
} }
} }, }
},
{ name: 'bizrno', header: '사업자번호', align: 'center', width: '15%', renderer: {type: customBRegNo}}, { name: 'bizrno', header: '사업자번호', align: 'center', width: '15%', renderer: {type: customBRegNo}},
{ name: 'authcd080', header: '인증코드', align: 'center', width: '15%'}, { name: 'authcd080', header: '인증코드', align: 'center', width: '15%'},
{ name: 'rcvblckno', header: '수신번호', align: 'center', width: '15%'}, { name: 'rcvblckno', header: '수신번호', align: 'center', width: '15%'},
@@ -164,7 +169,7 @@ export default {
}, },
created(){ created(){
const getCondition = this.$store.getters['searchcondition/getSearchCondition']; // const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
}, },
mounted() { mounted() {
let page = 1; let page = 1;

View File

@@ -17,6 +17,10 @@ const apprDetail = (params) => {
return httpClient.post('/api/v1/bo/sendNumMgt/apprDetail', params, {withCredentials: false}); return httpClient.post('/api/v1/bo/sendNumMgt/apprDetail', params, {withCredentials: false});
} }
const deleteNumber = (params) => {
return httpClient.post('/api/v1/bo/sendNumMgt/deleteNumber', params, {withCredentials: false});
}
// 사업자가 등록 요청. // 사업자가 등록 요청.
const insertNumber = (adminId, custNm, bRegNo, nmineeDivCd, numberInputs, bizrAuthYn, custSeq) => { const insertNumber = (adminId, custNm, bRegNo, nmineeDivCd, numberInputs, bizrAuthYn, custSeq) => {
let formData = new FormData(); let formData = new FormData();
@@ -113,4 +117,5 @@ export default {
insertNumber2, insertNumber2,
apprDetail, apprDetail,
updateAppr, updateAppr,
deleteNumber,
} }

View File

@@ -11,8 +11,8 @@
<div class="group"> <div class="group">
<div class="select_box"> <div class="select_box">
<label for="right" class="label">상태</label> <label for="right" class="label">상태</label>
<select name="" id="" v-model="grid.params.searchType1" @keyup.enter="search"> <select name="" id="" v-model="searchType1" @keyup.enter="search">
<option value="" selected>전체</option> <option value="">전체</option>
<option value="01">승인대기</option> <option value="01">승인대기</option>
<option value="02">처리완료</option> <option value="02">처리완료</option>
</select> </select>
@@ -23,8 +23,8 @@
</div> </div>
<div class="select_box id"> <div class="select_box id">
<label for="right" class="label">명의자 구분</label> <label for="right" class="label">명의자 구분</label>
<select name="" id="" v-model="grid.params.searchType2" @keyup.enter="search"> <select name="" id="" v-model="searchType2" @keyup.enter="search">
<option value="" selected>전체</option> <option value="">전체</option>
<option value="01">사업자</option> <option value="01">사업자</option>
<option value="02">타사업자</option> <option value="02">타사업자</option>
</select> </select>
@@ -41,7 +41,7 @@
<div class="info"> <div class="info">
<div class="count"> <span>{{ totalItems }}</span> <div class="count"> <span>{{ totalItems }}</span>
<div class="select_box NumberSe"> <div class="select_box NumberSe">
<select name="" id="" v-model="grid.pagePerRows" @keyup.enter="search"> <select name="" id="" v-model="perPageCnt" @keyup.enter="search">
<option value="20">20</option> <option value="20">20</option>
<option value="50" selected>50</option> <option value="50" selected>50</option>
<option value="100">100</option> <option value="100">100</option>
@@ -128,6 +128,8 @@ export default {
totalItems: 0, totalItems: 0,
// 테이블 리스트 데이터 // 테이블 리스트 데이터
perPageCnt: 50, perPageCnt: 50,
searchType1:'',
searchType2:'',
grid: { grid: {
url: '/api/v1/bo/sendNumMgt/apprList', url: '/api/v1/bo/sendNumMgt/apprList',
perPage: 50, perPage: 50,
@@ -200,6 +202,9 @@ export default {
methods: { methods: {
search: function(isKeep) { search: function(isKeep) {
console.log(this.grid.params); console.log(this.grid.params);
this.grid.params.searchType1 = this.searchType1
this.grid.params.searchType2 = this.searchType2
this.grid.perPage = this.perPageCnt
this.$refs.table.search(this.grid.params, isKeep); this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData(); this.sendStoreData();
}, },

View File

@@ -11,7 +11,7 @@
<div class="group"> <div class="group">
<div class="select_box"> <div class="select_box">
<label for="right" class="label">등록방법</label> <label for="right" class="label">등록방법</label>
<select name="" id="sttusCd" v-model="grid.params.searchType5" @keyup.enter="search"> <select name="" id="sttusCd" v-model="searchType5" @keyup.enter="search">
<option value="">전체</option> <option value="">전체</option>
<option value="01">서류심사</option> <option value="01">서류심사</option>
<option value="02">본인인증</option> <option value="02">본인인증</option>
@@ -19,7 +19,7 @@
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="right" class="label">승인상태</label> <label for="right" class="label">승인상태</label>
<select name="" id="sttusCd" v-model="grid.params.searchType1" @keyup.enter="search"> <select name="" id="sttusCd" v-model="searchType1" @keyup.enter="search">
<option value="">전체</option> <option value="">전체</option>
<option value="01">승인대기</option> <option value="01">승인대기</option>
<option value="02">승인완료</option> <option value="02">승인완료</option>
@@ -28,7 +28,7 @@
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="right" class="label">명의자 구분</label> <label for="right" class="label">명의자 구분</label>
<select name="" id="nmineeDivCd" v-model="grid.params.searchType2" @keyup.enter="search"> <select name="" id="nmineeDivCd" v-model="searchType2" @keyup.enter="search">
<option value="">전체</option> <option value="">전체</option>
<option value="01">사업자</option> <option value="01">사업자</option>
<option value="02">타사업자</option> <option value="02">타사업자</option>
@@ -36,7 +36,7 @@
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="right" class="label">인입채널</label> <label for="right" class="label">인입채널</label>
<select name="" id="inchDivCd" v-model="grid.params.searchType3" @keyup.enter="search"> <select name="" id="inchDivCd" v-model="searchType3" @keyup.enter="search">
<option value="">전체</option> <option value="">전체</option>
<option value="01">홈페이지</option> <option value="01">홈페이지</option>
<option value="02">어드민</option> <option value="02">어드민</option>
@@ -44,9 +44,9 @@
</div> </div>
<div class="select_box id"> <div class="select_box id">
<label for="right" class="label">상세검색</label> <label for="right" class="label">상세검색</label>
<select name="" id="category" v-model="grid.params.searchType4" @keyup.enter="search"> <select name="" id="category" v-model="searchType4" @keyup.enter="search">
<option value="regNo">발신번호</option>
<option value="bregNo">사업자번호</option> <option value="bregNo">사업자번호</option>
<option selected value="regNo">발신번호</option>
<option value="custNm">고객사명</option> <option value="custNm">고객사명</option>
</select> </select>
</div> </div>
@@ -60,9 +60,9 @@
<div class="info"> <div class="info">
<div class="count"> <span>{{ totalItems }}</span> <div class="count"> <span>{{ totalItems }}</span>
<div class="select_box NumberSe"> <div class="select_box NumberSe">
<select name="" id="perPage" v-model="grid.pagePerRows" @keyup.enter="search"> <select name="" id="perPage" v-model="perPageCnt" @keyup.enter="search">
<option value="20" selected>20</option> <option value="20">20</option>
<option value="50" >50</option> <option value="50">50</option>
<option value="100">100</option> <option value="100">100</option>
</select> </select>
</div> </div>
@@ -101,6 +101,9 @@ import customGrid from '@/components/CustomGrid';
import commonModal from "@/components/modal/commonModal"; import commonModal from "@/components/modal/commonModal";
import NumberRegPop from '../components/NumberRegPop'; import NumberRegPop from '../components/NumberRegPop';
import NumberDetailPop from "@/modules/sendNumMgt/components/NumberDetailPop"; import NumberDetailPop from "@/modules/sendNumMgt/components/NumberDetailPop";
// import sendNumMgtApi from "@/modules/sysMgt/service/sendNumMgtApi";
import sendNumMgtApi from '../service/sendNumMgtApi';
class CustomATagRenderer { class CustomATagRenderer {
constructor(props) { constructor(props) {
@@ -133,6 +136,12 @@ export default {
statType: [], statType: [],
cate2Code: "", cate2Code: "",
totalItems: 0, totalItems: 0,
searchType5:'',
searchType4:'regNo',
searchType3:'',
searchType2:'',
searchType1:'',
// 테이블 리스트 데이터 // 테이블 리스트 데이터
perPageCnt: 50, perPageCnt: 50,
grid: { grid: {
@@ -233,6 +242,12 @@ export default {
methods: { methods: {
search: function(isKeep) { search: function(isKeep) {
console.log(this.grid.params); 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
this.grid.params.searchType5 = this.searchType5
this.grid.pagePerRows = this.perPageCnt
this.$refs.table.search(this.grid.params, isKeep); this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData(); this.sendStoreData();
}, },
@@ -265,9 +280,53 @@ export default {
commonModalOpen(row){ commonModalOpen(row){
this.$refs.commmonModal.alertModalOpen(row); this.$refs.commmonModal.alertModalOpen(row);
}, },
numberDelete(){ async numberDelete(){
if(this.doValidate() && window.confirm('삭제 하시겠습니까?')){
try {
let response = await sendNumMgtApi.deleteNumber(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.$refs.table.reloadData();
return;
} }
this.row.title = '문자발신번호 관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
} catch(err) {
this.row.title = '문자발신번호 관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
}
}
},
doValidate(){ //로우데이터 삭제하도록 수정
console.log("totalItems >> " + this.totalItems);
if(this.totalItems == 0){
this.row.title = '문자발신번호 관리';
this.row.msg1 = '검색 결과가 없습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
return false;
}
var chkList = this.$refs.table.checkedElementDatas();
if(chkList.length == 0){
this.row.title = '문자발신번호 관리';
this.row.msg1 = '삭제대상을 체크를 해주세요.';
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)=>({regReqNo:row.regReqNo} ));
console.log(param)
this.row.list = param;
console.log(this.row);
return true;
},
}, },
// beforeRouteLeave(to, from, next) { // beforeRouteLeave(to, from, next) {
// //

View File

@@ -10,8 +10,8 @@
<div class="search_wrap"> <div class="search_wrap">
<div class="select_box"> <div class="select_box">
<label for="stat" class="label">상태</label> <label for="stat" class="label">상태</label>
<select name="" id="stat" v-model="grid.params.searchType1" @keyup="search"> <select name="" id="stat" v-model="searchType1" @keyup="search">
<option value="전체">전체</option> <option value="">전체</option>
<option value="A">사용</option> <option value="A">사용</option>
<option value="N">미사용</option> <option value="N">미사용</option>
<option value="H">휴면</option> <option value="H">휴면</option>
@@ -20,7 +20,7 @@
</div> </div>
<div class="select_box id"> <div class="select_box id">
<label for="searchType" class="label">상세검색</label> <label for="searchType" class="label">상세검색</label>
<select name="" id="searchType" v-model="grid.params.searchType2" @keyup="search"> <select name="" id="searchType" v-model="searchType2" @keyup="search">
<option value="custNm">고객사명</option> <option value="custNm">고객사명</option>
<option value="bregNo">사업자번호</option> <option value="bregNo">사업자번호</option>
<option value="sendProfile">발신프로필</option> <option value="sendProfile">발신프로필</option>
@@ -94,6 +94,8 @@ export default {
statType: [], statType: [],
cate2Code: "", cate2Code: "",
totalItems: 0, totalItems: 0,
searchType1:'',
searchType2:'custNm',
// 테이블 리스트 데이터 // 테이블 리스트 데이터
perPageCnt: 20, perPageCnt: 20,
grid: { grid: {
@@ -168,6 +170,8 @@ export default {
methods: { methods: {
search: function(isKeep) { search: function(isKeep) {
console.log(this.grid.params); 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.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData(); this.sendStoreData();
}, },

View File

@@ -9,7 +9,7 @@
<div class="search_wrap"> <div class="search_wrap">
<div class="select_box"> <div class="select_box">
<label for="stat" class="label">사용상태</label> <label for="stat" class="label">사용상태</label>
<select name="" id="stat" v-model="grid.params.searchType1" @keyup.enter="search"> <select name="" id="stat" v-model="searchType1" @keyup.enter="search">
<option value="">전체</option> <option value="">전체</option>
<option value="Y">사용</option> <option value="Y">사용</option>
<option value="N">폐기</option> <option value="N">폐기</option>
@@ -17,7 +17,7 @@
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="searchType" class="label">고객사명</label> <label for="searchType" class="label">고객사명</label>
<select name="" id="searchType" v-model="grid.params.searchType2" @keyup.enter="search"> <select name="" id="searchType" v-model="searchType2" @keyup.enter="search">
<option value="custNm">고객사명</option> <option value="custNm">고객사명</option>
<option value="bizNo">사업자번호</option> <option value="bizNo">사업자번호</option>
<option value="authCd">인증코드</option> <option value="authCd">인증코드</option>
@@ -98,6 +98,8 @@ export default {
statType: [], statType: [],
cate2Code: "", cate2Code: "",
totalItems: 0, totalItems: 0,
searchType1:'',
searchType2:'custNm',
// 테이블 리스트 데이터 // 테이블 리스트 데이터
perPageCnt: 50, perPageCnt: 50,
options: [ options: [
@@ -181,6 +183,8 @@ export default {
methods: { methods: {
search: function(isKeep) { search: function(isKeep) {
console.log(this.grid.params); 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.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData(); this.sendStoreData();
}, },

View File

@@ -304,9 +304,10 @@ export default {
setPeriodDay(day) { setPeriodDay(day) {
this.periodDay = day; this.periodDay = day;
this.endDate = new Date(); this.endDate = new Date();
this.startDate = moment(this.endDate) // this.startDate = moment(this.endDate)
.subtract(day, 'day') // .subtract(day, 'day')
.toDate(); // .toDate();
this.initSetStartDate();
this.closeDate('start'); this.closeDate('start');
this.closeDate('end'); this.closeDate('end');

View File

@@ -9,7 +9,6 @@
<h3 class="pop-tit" v-if="code === null || code === ''">관리자 상세정보</h3> <h3 class="pop-tit" v-if="code === null || code === ''">관리자 상세정보</h3>
<h3 class="pop-tit" v-else>유치채널 상세정보</h3> <h3 class="pop-tit" v-else>유치채널 상세정보</h3>
</div> </div>
<form autocomplete="off" ref="adminDetailForm">
<table> <table>
<tbody> <tbody>
<tr> <tr>
@@ -65,7 +64,6 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
</form>
<div class="pop-btn2"> <div class="pop-btn2">
<button class="btn-default" @click="adminDetailModalClose();">취소</button> <button class="btn-default" @click="adminDetailModalClose();">취소</button>
<button class="btn-pcolor" @click="doInsert">저장</button> <button class="btn-pcolor" @click="doInsert">저장</button>

View File

@@ -88,7 +88,7 @@ import sysMgtApi from "../service/sysMgtApi.js";
import { utils_mixin, chkPattern2 } from '../service/mixins'; import { utils_mixin, chkPattern2 } from '../service/mixins';
import SearchIdPopup from '../components/SearchIdPopup.vue'; import SearchIdPopup from '../components/SearchIdPopup.vue';
import lodash from "lodash"; import lodash from "lodash";
import commonModal from "@/components/modal/commonModal"; import commonModal from "../components/commonModal";
export default { export default {
name: "adminRegPop", name: "adminRegPop",
@@ -343,6 +343,7 @@ export default {
wrap[0].style.display = 'block'; wrap[0].style.display = 'block';
var obj = document.getElementsByClassName('modal20'); var obj = document.getElementsByClassName('modal20');
obj[0].style.display = 'block'; obj[0].style.display = 'block';
this.setAuthData();
}, },
// 모달 끄기 // 모달 끄기
ModalClose(){ ModalClose(){

View File

@@ -38,7 +38,6 @@
<li>이메일 : {{email}}</li> <li>이메일 : {{email}}</li>
</ul> </ul>
<div class="pop-btn2"> <div class="pop-btn2">
<!-- this.ModalOpen('modal20'); -->
<button class="btn-default" @click="searchIdModalCancelClose();">취소</button> <button class="btn-default" @click="searchIdModalCancelClose();">취소</button>
<button class="btn-pcolor" @click="searchIdModalOkClose();">확인</button> <button class="btn-pcolor" @click="searchIdModalOkClose();">확인</button>
</div> </div>
@@ -157,8 +156,8 @@ export default {
} }
</script> </script>
<style> <!--<style>-->
.popup-btn-wrap {width: 500px; margin: auto; padding: 100px 0;} <!-- .popup-btn-wrap {width: 500px; margin: auto; padding: 100px 0;}-->
.popup-btn-wrap button {width: 100%; margin-bottom: 10px; height: 50px; border-radius: 5px; box-shadow: none; border: 1px solid #000; } <!-- .popup-btn-wrap button {width: 100%; margin-bottom: 10px; height: 50px; border-radius: 5px; box-shadow: none; border: 1px solid #000; }-->
.popup-btn-wrap button:hover {background: #000; color: #fff;} <!-- .popup-btn-wrap button:hover {background: #000; color: #fff;}-->
</style> <!-- </style>-->

View File

@@ -180,9 +180,3 @@ export default {
} }
} }
</script> </script>
<!--
<style>
.popup-btn-wrap {width: 500px; margin: auto; padding: 100px 0;}
.popup-btn-wrap button {width: 100%; margin-bottom: 10px; height: 50px; border-radius: 5px; box-shadow: none; border: 1px solid #000; }
.popup-btn-wrap button:hover {background: #000; color: #fff;}
</style> -->

View File

@@ -9,7 +9,7 @@
<div class="search_wrap"> <div class="search_wrap">
<div class="select_box"> <div class="select_box">
<label for="right" class="label">권한</label> <label for="right" class="label">권한</label>
<select name="" id="right" v-model="grid.params.searchType1" @keyup.enter="search"> <select name="" id="right" v-model="searchType1" @keyup.enter="search">
<option value="">전체</option> <option value="">전체</option>
<option v-for="(option, i) in authType" v-bind:value="option.autCd" v-bind:key="i"> <option v-for="(option, i) in authType" v-bind:value="option.autCd" v-bind:key="i">
{{ option.autNm }} {{ option.autNm }}
@@ -18,7 +18,7 @@
</div> </div>
<div class="select_box"> <div class="select_box">
<label for="right" class="label">상태</label> <label for="right" class="label">상태</label>
<select name="" id="" v-model="grid.params.searchType2" @keyup.enter="search"> <select name="" id="" v-model="searchType2" @keyup.enter="search">
<option value="" selected>전체</option> <option value="" selected>전체</option>
<option v-for="(option, i) in statType" v-bind:value="option.code" v-bind:key="i"> <option v-for="(option, i) in statType" v-bind:value="option.code" v-bind:key="i">
{{ option.codeNm }} {{ option.codeNm }}
@@ -109,6 +109,8 @@ export default {
totalItems: 0, totalItems: 0,
// 테이블 리스트 데이터 // 테이블 리스트 데이터
perPageCnt: 20, perPageCnt: 20,
searchType1:'',
searchType2:'',
grid: { grid: {
url: '/api/v1/bo/sysMgt/adminList', url: '/api/v1/bo/sysMgt/adminList',
pagePerRows: 20, pagePerRows: 20,
@@ -177,6 +179,9 @@ export default {
search: function(isKeep) { search: function(isKeep) {
console.log('this.perPageCnt'+this.perPageCnt); console.log('this.perPageCnt'+this.perPageCnt);
//console.log(this.grid.params); //console.log(this.grid.params);
this.grid.params.searchType1 = this.searchType1
this.grid.params.searchType2 = this.searchType2
this.grid.pagePerRows = this.perPageCnt
this.$refs.table.search(this.grid.params, isKeep); this.$refs.table.search(this.grid.params, isKeep);
this.sendStoreData(); this.sendStoreData();
}, },

View File

@@ -1,14 +1,15 @@
package kr.co.uplus.ez; package kr.co.uplus.ez;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Component @Component
public class Scheduler { public class Scheduler {
private static final Logger log = LoggerFactory.getLogger(Scheduler.class);
/** /**
* 스케줄러 트리거는 해당영역에 선언 / 서비스영역은 별도 * 스케줄러 트리거는 해당영역에 선언 / 서비스영역은 별도
*/ */

View File

@@ -795,7 +795,7 @@ public class CustMgtService {
paramMap.put("userId", updateAdminInfoTotalReqDto.getUserId()); paramMap.put("userId", updateAdminInfoTotalReqDto.getUserId());
// 3-1. 기존 정액한도금액 조회 // 3-1. 기존 정액한도금액 조회
rstAmtMap = custMgtMapper.selectAdminSendingLimt(paramMap); rstAmtMap = custMgtMapper.selectAdminSendingLimt(paramMap);
if(rstAmtMap.get("fxLmtAmt") != null) { if(rstAmtMap != null) {
String stFxLmtAmt = rstAmtMap.get("fxLmtAmt").toString(); String stFxLmtAmt = rstAmtMap.get("fxLmtAmt").toString();
BigDecimal fxLmtAmt = new BigDecimal(stFxLmtAmt); BigDecimal fxLmtAmt = new BigDecimal(stFxLmtAmt);

View File

@@ -36,6 +36,9 @@ public class LoginService {
@Value("#{'${authentication.without.id}'.split(',')}") @Value("#{'${authentication.without.id}'.split(',')}")
private List<String> authenticationWithoutId; private List<String> authenticationWithoutId;
@Value("${sendMsg.tableNm}")
private String sendMsgTableName;
/** /**
* 1차 로그인 인증 * 1차 로그인 인증
* *
@@ -154,7 +157,7 @@ public class LoginService {
sendMsgDto.setClientKey(clientKey); sendMsgDto.setClientKey(clientKey);
sendMsgDto.setMsg("인증 번호는 [" + authNum + "] 입니다."); sendMsgDto.setMsg("인증 번호는 [" + authNum + "] 입니다.");
sendMsgDto.setPhone(user.getHpNo()); sendMsgDto.setPhone(user.getHpNo());
sendMsgDto.setTableName(sendMsgTableName);
loginMapper.insertSendMsg(sendMsgDto); loginMapper.insertSendMsg(sendMsgDto);
return new AuthNumResDto(); return new AuthNumResDto();
@@ -254,7 +257,7 @@ public class LoginService {
sendMsgDto.setClientKey(clientKey); sendMsgDto.setClientKey(clientKey);
sendMsgDto.setMsg("[U+메시지허브이지] \n임시 비밀번호 안내 : " + randomPw + "\n로그인 후, 비밀번호 변경해주세요.\n"); sendMsgDto.setMsg("[U+메시지허브이지] \n임시 비밀번호 안내 : " + randomPw + "\n로그인 후, 비밀번호 변경해주세요.\n");
sendMsgDto.setPhone(user.getHpNo()); sendMsgDto.setPhone(user.getHpNo());
sendMsgDto.setTableName(sendMsgTableName);
loginMapper.insertSendMsg(sendMsgDto); loginMapper.insertSendMsg(sendMsgDto);
return new ResetPasswordResDto(); return new ResetPasswordResDto();

View File

@@ -9,4 +9,5 @@ public class SendMsgDto {
private String clientKey; // 클라이언트키 private String clientKey; // 클라이언트키
private String msg; // 발송 메시지 private String msg; // 발송 메시지
private String phone; // 수신번호 private String phone; // 수신번호
private String tableName;
} }

View File

@@ -22,7 +22,6 @@ public class SendListReqDto implements Serializable {
@ApiModelProperty(example = "발송일", name = "발송일",dataType = "String") @ApiModelProperty(example = "발송일", name = "발송일",dataType = "String")
private String sentDate; private String sentDate;
@NotNull
@ApiModelProperty(example = "요청채널", name = "요청채널", dataType = "String") @ApiModelProperty(example = "요청채널", name = "요청채널", dataType = "String")
private String reqChennel; private String reqChennel;

View File

@@ -15,12 +15,16 @@ public class SendNumIntrcpList implements Serializable {
private String blcksndrno; private String blcksndrno;
@ApiModelProperty(example = "발송타입", name = "발송타입", dataType = "String") @ApiModelProperty(example = "발송타입", name = "발송타입", dataType = "String")
private String sndblckTpCd; private String sndblckTpCd;
@ApiModelProperty(example = "발송타입명", name = "발송타입명", dataType = "String")
private String sndblckTpNm;
@ApiModelProperty(example = "차단여부", name = "차단여부", dataType = "String") @ApiModelProperty(example = "차단여부", name = "차단여부", dataType = "String")
private String blckYn; private String blckYn;
@ApiModelProperty(example = "마지막 수정일", name = "마지막 수정일", dataType = "String") @ApiModelProperty(example = "마지막 수정일", name = "마지막 수정일", dataType = "String")
private String lastChgDt; private String lastChgDt;
@ApiModelProperty(example = "차단사유", name = "차단사유", dataType = "String") @ApiModelProperty(example = "차단사유타입", name = "차단사유타입", dataType = "String")
private String blckRsnCd; private String blckRsnCd;
@ApiModelProperty(example = "차단사유명", name = "차단사유명", dataType = "String")
private String blckRsnNm;
@ApiModelProperty(example = "등록자", name = "등록자", dataType = "String") @ApiModelProperty(example = "등록자", name = "등록자", dataType = "String")
private String regId; private String regId;
} }

View File

@@ -24,7 +24,8 @@ public class WebInsertIntrcpReqDto implements Serializable {
private String searchType1; private String searchType1;
@ApiModelProperty(example = "검색어 (입력항목)", name = "검색어 (입력항목)", dataType = "String") @ApiModelProperty(example = "검색어 (입력항목)", name = "검색어 (입력항목)", dataType = "String")
private String searchText1; private String searchText1;
@ApiModelProperty(example = "검색어 (입력항목)", name = "검색어 (입력항목)", dataType = "String")
private String searchType3;
@NotNull @NotNull
@ApiModelProperty(example = "페이지당 조회할 목록 수", name = "페이지당 조회할 목록 수", dataType = "String") @ApiModelProperty(example = "페이지당 조회할 목록 수", name = "페이지당 조회할 목록 수", dataType = "String")
private int pagePerRows; private int pagePerRows;

View File

@@ -27,4 +27,6 @@ public class WebIntrcpList implements Serializable {
private String blckRsnCd; private String blckRsnCd;
@ApiModelProperty(example = "발송일자", name = "발송일자", dataType = "String") @ApiModelProperty(example = "발송일자", name = "발송일자", dataType = "String")
private String blckDt; private String blckDt;
@ApiModelProperty(example = "서비스ID", name = "서비스ID", dataType = "String")
private String serviceId;
} }

View File

@@ -10,7 +10,7 @@ import java.io.Serializable;
public class ZezNumIntrcpList implements Serializable { public class ZezNumIntrcpList implements Serializable {
@ApiModelProperty(example = "리스트 번호", name = "리스트 번호", dataType = "String") @ApiModelProperty(example = "리스트 번호", name = "리스트 번호", dataType = "String")
private String no; private int no;
@ApiModelProperty(example = "고객사", name = "고객사", dataType = "String") @ApiModelProperty(example = "고객사", name = "고객사", dataType = "String")
private String custNm; private String custNm;
@ApiModelProperty(example = "사업자번호", name = "사업자번호", dataType = "String") @ApiModelProperty(example = "사업자번호", name = "사업자번호", dataType = "String")

View File

@@ -1,17 +1,15 @@
package kr.co.uplus.ez.api.sendNumMgt.dto; package kr.co.uplus.ez.api.sendNumMgt.dto;
import java.io.Serializable;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
@SuppressWarnings("serial") @SuppressWarnings("serial")
@Data @Data
public class DeleteNumber implements Serializable{ public class DeleteNumber implements Serializable{
@ApiModelProperty(example = "등록번호", name = "등록번호", dataType = "String") @ApiModelProperty(example = "등록번호", name = "등록번호", dataType = "String")
private String regNo; private String regReqNo;
@ApiModelProperty(example = "관리자 ID", name = "관리자 ID", dataType = "String")
private String adminId;
} }

View File

@@ -1,16 +1,14 @@
package kr.co.uplus.ez.api.sendNumMgt.dto; package kr.co.uplus.ez.api.sendNumMgt.dto;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@SuppressWarnings("serial") @SuppressWarnings("serial")
@Data @Data
public class DeleteNumberReqDto implements Serializable{ public class DeleteNumberReqDto implements Serializable{
@ApiModelProperty(example = "등록번호 리스트", name = "등록번호 리스트", dataType = "String")
private List<DeleteNumber> list; private List<DeleteNumber> list;
} }

View File

@@ -37,7 +37,6 @@ authentication:
without: without:
id: superadminuser,jambler01,jambler02,jambler03,jambler04,jambler05,jambler06 id: superadminuser,jambler01,jambler02,jambler03,jambler04,jambler05,jambler06
mail: mail:
from: msghubez@lguplus.co.kr from: msghubez@lguplus.co.kr
templeteCode: E0005 templeteCode: E0005
@@ -65,3 +64,6 @@ file-resource:
info: info:
sendNumber: sendNumber:
path: /efs/admin/sendNumber/ path: /efs/admin/sendNumber/
sendMsg:
tableNm: EZ_MSG_NORMAL

View File

@@ -35,15 +35,15 @@ schedule:
# 2차인증 제외 ID목록. # 2차인증 제외 ID목록.
authentication: authentication:
without: without:
id: jambler01,jambler02,jambler03,jambler04,jambler05,jambler06 id: jambler01,jambler02,jambler03,jambler04,jambler05,jambler06,superadminuser
mail: mail:
from: msghubez@lguplus.co.kr from: msghubez@lguplus.co.kr
templeteCode: E0005 templeteCode: E0005
msghubez: msghubez:
homepage-url: https://mhez-dev.uplus.co.kr hmoepage-url: https://mhez-dev.uplus.co.kr
api-url: https://localhost:7071 api-url: https://api-int.mhez-dev.uplus.co.kr
applicationId: EZ_ADMIN applicationId: EZ_ADMIN
uri: uri:
sendTemplateMail: /api/v1/fo/sendTemplateMail sendTemplateMail: /api/v1/fo/sendTemplateMail
@@ -64,3 +64,6 @@ file-resource:
info: info:
sendNumber: sendNumber:
path: /efs/admin/sendNumber/ path: /efs/admin/sendNumber/
sendMsg:
tableNm: EZ_MSG_NORMAL

View File

@@ -64,3 +64,6 @@ file-resource:
info: info:
sendNumber: sendNumber:
path: /efs/admin/sendNumber/ path: /efs/admin/sendNumber/
sendMsg:
tableNm: EZ_MSG_NORMAL

View File

@@ -64,3 +64,6 @@ file-resource:
info: info:
sendNumber: sendNumber:
path: /efs/admin/sendNumber/ path: /efs/admin/sendNumber/
sendMsg:
tableNm: EZ_MSG_NORMAL