mirror of
http://git.mhez-qa.uplus.co.kr/hubez/hubez-admin.git
synced 2025-12-06 18:13:18 +09:00
로그인 / 고객관리 / 시스템관리 ... 디자인 및 기능 수정 적용
This commit is contained in:
@@ -1428,7 +1428,7 @@ header .user_wrap .user_info .logout {
|
||||
padding: 5px 0 5px 10px;
|
||||
}
|
||||
|
||||
.popup.b-popup tr:nth-child(1) .memo:nth-child(1){
|
||||
.popup.b-popup tr:nth-child(n) .memo:nth-child(n){
|
||||
height: 100px;
|
||||
display: block;
|
||||
overflow: auto;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<template>
|
||||
<div>
|
||||
<header>
|
||||
<h1 class="logo"><a href="javascript:void(0)">uplus 메시지허브이지<span>BACKOFFICE</span></a></h1>
|
||||
<div class="user_wrap">
|
||||
@@ -12,12 +13,15 @@
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<logout-modal ref="logoutModal"></logout-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
//import tokenSvc from '@/common/token-service';
|
||||
import { mapGetters } from 'vuex';
|
||||
import loginApi from '@/modules/login/service/api';
|
||||
import logoutModal from "./logoutModal";
|
||||
|
||||
export default {
|
||||
name: "hubWebHeader",
|
||||
@@ -27,6 +31,7 @@ export default {
|
||||
isLogin: false,
|
||||
isErrPage: false,
|
||||
navActive: false,
|
||||
|
||||
}
|
||||
},
|
||||
created() {
|
||||
@@ -59,6 +64,9 @@ export default {
|
||||
}
|
||||
},
|
||||
},
|
||||
components: {
|
||||
logoutModal,
|
||||
},
|
||||
methods: {
|
||||
userInfoToggle(){
|
||||
var click = "clicked";
|
||||
@@ -71,19 +79,22 @@ export default {
|
||||
}
|
||||
},
|
||||
logout(){
|
||||
let result = confirm("로그아웃 하시겠습니까?");
|
||||
if (result) {
|
||||
loginApi.logout().then(response => {
|
||||
if(response.data.retCode == '0000'){
|
||||
|
||||
// tokenSvc.removeToken();
|
||||
//commonModal
|
||||
this.$refs.logoutModal.logoutModalOpen();
|
||||
|
||||
this.$router.push({
|
||||
path: "/login"
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
// let result = confirm("로그아웃 하시겠습니까?");
|
||||
// if (result) {
|
||||
// loginApi.logout().then(response => {
|
||||
// if(response.data.retCode == '0000'){
|
||||
//
|
||||
// // tokenSvc.removeToken();
|
||||
//
|
||||
// this.$router.push({
|
||||
// path: "/login"
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
81
frontend/src/components/logoutModal.vue
Normal file
81
frontend/src/components/logoutModal.vue
Normal file
@@ -0,0 +1,81 @@
|
||||
<template>
|
||||
<div class="wrap bg-wrap">
|
||||
<div class="dimmed logoutConfirm" @click="logoutModalCancel();"></div>
|
||||
<div class="popup-wrap logoutConfirm">
|
||||
<!-- 수정 확인 -->
|
||||
<div class="popup logoutConfirm">
|
||||
<div class="pop-head">
|
||||
<h3 class="pop-tit">로그아웃</h3>
|
||||
</div>
|
||||
<div class="pop-cont">
|
||||
<p>로그아웃 하시겠습니까?</p>
|
||||
</div>
|
||||
<div class="popup-btn2">
|
||||
<button class="btn-pcolor" @click="logoutModalClose();">확인</button>
|
||||
<button class="btn-default" @click="logoutModalCancel();">취소</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import loginApi from "@/modules/login/service/api";
|
||||
|
||||
export default {
|
||||
name: "confirm",
|
||||
data(){
|
||||
return{
|
||||
row:{},
|
||||
}
|
||||
},
|
||||
methods : {
|
||||
// 모달 오픈
|
||||
logoutModalOpen() {
|
||||
var dimmed = document.getElementsByClassName('logoutConfirm');
|
||||
for (var i = 0; i < dimmed.length; i++) {
|
||||
dimmed[i].style.display = 'block';
|
||||
}
|
||||
},
|
||||
// 모달 끄기(ok)
|
||||
logoutModalClose() {
|
||||
var dimmed = document.getElementsByClassName('logoutConfirm');
|
||||
for (var i = 0; i < dimmed.length; i++) {
|
||||
dimmed[i].style.display = 'none';
|
||||
}
|
||||
loginApi.logout().then(response => {
|
||||
if(response.data.retCode == '0000'){
|
||||
this.$store.commit("login/isLogin", false);
|
||||
this.$store.commit("login/isAuthChk", false);
|
||||
this.$router.push({
|
||||
path: "/login"
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 모달 끄기(취소)
|
||||
logoutModalCancel() {
|
||||
var dimmed = document.getElementsByClassName('logoutConfirm');
|
||||
for (var i = 0; i < dimmed.length; i++) {
|
||||
dimmed[i].style.display = 'none';
|
||||
}
|
||||
var click = "clicked";
|
||||
var userBtn = document.querySelector('.user_wrap .user');
|
||||
if(userBtn.classList.contains(click)){
|
||||
userBtn.classList.remove(click);
|
||||
}
|
||||
else{
|
||||
userBtn.classList.add(click);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.dimmed {z-index:1;}
|
||||
.popup-btn-wrap {width: 500px; margin: auto; padding: 100px 0; z-index:10;}
|
||||
.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 {z-index:10;}
|
||||
</style>
|
||||
@@ -1,300 +1,316 @@
|
||||
<template>
|
||||
<!-- <div class="wrap bg-wrap"> -->
|
||||
<div>
|
||||
<div class="dimmed modal33" @click="excelPopClose();"></div>
|
||||
<div class="popup-wrap modal33">
|
||||
<!-- <div class="wrap bg-wrap"> -->
|
||||
<div>
|
||||
<div class="dimmed modal33" @click="excelPopClose()"></div>
|
||||
<div class="popup-wrap modal33">
|
||||
<div class="popup modal33 popup_form">
|
||||
<div class="pop-head">
|
||||
<h3 class="pop-tit">사용자 ID 대량 생성</h3>
|
||||
</div>
|
||||
<table>
|
||||
<tbody>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>관리자 ID</th>
|
||||
<td>{{adminId}}</td>
|
||||
<td>{{ adminId }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>사용자 ID 업로드</th>
|
||||
<td>
|
||||
<div class="popup-btn2 bulk">
|
||||
<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="btn-default" @click="sampleDown">샘플 다운로드</button>
|
||||
<button class="button btn-p2color" @click="$refs.file.click()">파일 업로드</button>
|
||||
</div>
|
||||
<p class="file" id="uploadFile"></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="popup-btn2">
|
||||
<button class="btn-pcolor" @click="saveExcel">저장</button>
|
||||
<button class="btn-default" @click="excelPopClose">취소</button>
|
||||
</div>
|
||||
</div>
|
||||
<common-modal ref="commmonModal"></common-modal>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import api from '@/service/api';
|
||||
import custMgtApi from "../service/custMgtApi.js";
|
||||
import custMgtApi from '../service/custMgtApi.js';
|
||||
import { utils_mixin, chkPattern2 } from '../service/mixins';
|
||||
import xlsx from '@/common/excel';
|
||||
import moment from 'moment';
|
||||
import XLSX from 'xlsx';
|
||||
import commonModal from "@/components/modal/commonModal";
|
||||
import commonModal from './commonModal';
|
||||
|
||||
export default {
|
||||
name: "memberBulkRegPop",
|
||||
mixins: [utils_mixin, chkPattern2],
|
||||
data(){
|
||||
return{
|
||||
row: {},
|
||||
excelHeader: [],
|
||||
pageType: 'SAMPLE',
|
||||
adminId:'',
|
||||
varList : ["이름","휴대폰번호","기타1","기타2","기타3","기타4"],
|
||||
varList2 : ["이름","기타1","기타2","기타3","기타4"],
|
||||
nData : [],
|
||||
oData : [],
|
||||
totalItems: 0,
|
||||
}
|
||||
},
|
||||
name: 'memberBulkRegPop',
|
||||
mixins: [utils_mixin, chkPattern2],
|
||||
data() {
|
||||
return {
|
||||
row: {},
|
||||
excelHeader: [],
|
||||
pageType: 'SAMPLE',
|
||||
adminId: '',
|
||||
varList: ['이름', '휴대폰번호', '기타1', '기타2', '기타3', '기타4'],
|
||||
varList2: ['이름', '기타1', '기타2', '기타3', '기타4'],
|
||||
nData: [],
|
||||
oData: [],
|
||||
totalItems: 0,
|
||||
};
|
||||
},
|
||||
components: {
|
||||
commonModal,
|
||||
},
|
||||
created(){
|
||||
this.getExcelHeader();
|
||||
created() {
|
||||
this.getExcelHeader();
|
||||
},
|
||||
methods: {
|
||||
// 모달 띄우기
|
||||
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';
|
||||
}
|
||||
},
|
||||
methods :{
|
||||
// 모달 띄우기
|
||||
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';
|
||||
}
|
||||
},
|
||||
// 모달 끄기
|
||||
excelPopClose(){
|
||||
//this.formReset();
|
||||
var excelPop = document.getElementsByClassName('modal33');
|
||||
for(var i = 0; i < excelPop.length; i++){
|
||||
excelPop[i].style.display = 'none';
|
||||
}
|
||||
|
||||
},
|
||||
// 저장 후 부모창 호출.
|
||||
toComplete(){
|
||||
this.getParent('custList').$refs.table.reloadData();
|
||||
this.excelPopClose();
|
||||
},
|
||||
async doInsert(){
|
||||
if(this.doValidate() && window.confirm('등록 하시겠습니까?')){
|
||||
try {
|
||||
const response = await custMgtApi.insertTestId(this.row);
|
||||
const result = response.data;
|
||||
if (result != null && result.retCode == "0000") {
|
||||
// 모달 끄기
|
||||
excelPopClose() {
|
||||
//this.formReset();
|
||||
var excelPop = document.getElementsByClassName('modal33');
|
||||
for (var i = 0; i < excelPop.length; i++) {
|
||||
excelPop[i].style.display = 'none';
|
||||
}
|
||||
// this.$refs.file.reset()
|
||||
let element = document.getElementById('uploadFile');
|
||||
while (element.firstChild) {
|
||||
element.removeChild(element.firstChild);
|
||||
}
|
||||
},
|
||||
// 저장 후 부모창 호출.
|
||||
toComplete() {
|
||||
this.row.serviceId = this.adminId;
|
||||
// 팝업으로 교체 예정
|
||||
if (confirm('정상 업로드 되었습니다.')){
|
||||
this.excelPopClose();
|
||||
this.$parent.memberDetail(this.adminId);
|
||||
}
|
||||
},
|
||||
async doInsert() {
|
||||
if (this.doValidate() && window.confirm('등록 하시겠습니까?')) {
|
||||
try {
|
||||
const response = await custMgtApi.insertTestId(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();
|
||||
}
|
||||
} catch(err) {
|
||||
this.row.title = '청약고객관리';
|
||||
this.row.msg1 = '실패 하였습니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
}
|
||||
}
|
||||
},
|
||||
async sampleDown(){
|
||||
let today = moment().format('YYYYMMDDHHmmss');
|
||||
const saveFileName = `어드민_사용자ID 대량생성_${today}.xlsx`;
|
||||
this.toComplete();
|
||||
}
|
||||
} catch (err) {
|
||||
this.row.title = '청약고객관리';
|
||||
this.row.msg1 = '실패 하였습니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
}
|
||||
}
|
||||
},
|
||||
async sampleDown() {
|
||||
let today = moment().format('YYYYMMDDHHmmss');
|
||||
const saveFileName = `어드민_사용자ID 대량생성_${today}.xlsx`;
|
||||
|
||||
let options = {
|
||||
header: this.excelHeader,
|
||||
dataOrder: 'header'
|
||||
};
|
||||
xlsx.export([], saveFileName, options).then(() => {});
|
||||
},
|
||||
getExcelHeader() {
|
||||
// 헤더를 mockup으로 관리한다.
|
||||
custMgtApi.getExcelHeader(this.pageType).then(res => {
|
||||
this.excelHeader = res;
|
||||
});
|
||||
},
|
||||
readFile(event) {
|
||||
let options = {
|
||||
header: this.excelHeader,
|
||||
dataOrder: 'header',
|
||||
};
|
||||
xlsx.export([], saveFileName, options).then(() => {});
|
||||
},
|
||||
getExcelHeader() {
|
||||
// 헤더를 mockup으로 관리한다.
|
||||
custMgtApi.getExcelHeader(this.pageType).then((res) => {
|
||||
this.excelHeader = res;
|
||||
});
|
||||
},
|
||||
readFile(event) {
|
||||
this.nData = [];
|
||||
this.oData = [];
|
||||
|
||||
this.nData = []
|
||||
this.oData = []
|
||||
const file = event.target.files[0];
|
||||
console.log(file.name);
|
||||
|
||||
const file = event.target.files[0];
|
||||
console.log(file.name);
|
||||
// inner Html.
|
||||
const button = document.createElement('button');
|
||||
const text = document.createElement('p');
|
||||
text.innerText = file.name;
|
||||
button.addEventListener('click', () => {
|
||||
this.delFile(event);
|
||||
});
|
||||
button.innerText = 'X';
|
||||
const root = document.getElementById('uploadFile');
|
||||
root.appendChild(text);
|
||||
root.appendChild(button);
|
||||
|
||||
// inner Html.
|
||||
const button = document.createElement('button');
|
||||
const text = document.createElement('p');
|
||||
text.innerText = file.name;
|
||||
button.addEventListener('click', () => {
|
||||
this.delFile(event);
|
||||
})
|
||||
const root = document.getElementById('uploadFile');
|
||||
root.appendChild(text);
|
||||
root.appendChild(button);
|
||||
|
||||
|
||||
|
||||
let reader = new FileReader();
|
||||
let tmpResult = {};
|
||||
const vm = this;
|
||||
reader.onerror = (e) => {
|
||||
let reader = new FileReader();
|
||||
let tmpResult = {};
|
||||
const vm = this;
|
||||
reader.onerror = (e) => {
|
||||
this.row.title = '청약고객관리';
|
||||
this.row.msg1 = '파일을 읽는 동안 에러가 발생 했습니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
}
|
||||
reader.onloadend = (e) => {
|
||||
}
|
||||
};
|
||||
reader.onloadend = (e) => {};
|
||||
|
||||
reader.onload = (e) => {
|
||||
let data = reader.result;
|
||||
let workbook = XLSX.read(data, { type: 'binary' });
|
||||
workbook.SheetNames.forEach((sheetName) => {
|
||||
const rowObj = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName], { raw: true });
|
||||
tmpResult = rowObj;
|
||||
const limitCnt = 100;
|
||||
|
||||
reader.onload = (e) => {
|
||||
let data = reader.result;
|
||||
let workbook = XLSX.read(data, {type: 'binary'});
|
||||
workbook.SheetNames.forEach(sheetName => {
|
||||
const totalCnt = Number(this.totalItems) + rowObj.length;
|
||||
|
||||
const rowObj = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName],{raw:true});
|
||||
tmpResult = rowObj;
|
||||
const limitCnt = 100;
|
||||
|
||||
const totalCnt = Number(this.totalItems) + rowObj.length;
|
||||
|
||||
if(totalCnt > limitCnt){
|
||||
if (totalCnt > limitCnt) {
|
||||
this.row.title = '청약고객관리';
|
||||
this.row.msg1 = '100건이상은 등록되지 않습니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
for (const [idx,r] of rowObj.entries()) {
|
||||
if(idx > limitCnt-1 ) {
|
||||
break;
|
||||
}
|
||||
let {ID,이름,휴대폰번호,이메일,ID잠금} = r;
|
||||
ID = ''+(vm.isNull(ID)?'':ID);
|
||||
이름 = ''+(vm.isNull(이름)?'':이름);
|
||||
휴대폰번호 = ''+(vm.isNull(휴대폰번호)?'':휴대폰번호);
|
||||
이메일 = ''+(vm.isNull(이메일)?'':이메일);
|
||||
ID잠금 = ''+(vm.isNull(ID잠금)?'':ID잠금);
|
||||
|
||||
// 휴대폰번호=''+휴대폰번호;
|
||||
if(!vm.isMobile(휴대폰번호)){
|
||||
if(vm.isMobile2(휴대폰번호)){
|
||||
휴대폰번호='0'+휴대폰번호;
|
||||
}
|
||||
}
|
||||
|
||||
let {retVal,msg } = vm.validXlxs({ID,이름,휴대폰번호,이메일,ID잠금});
|
||||
if(retVal){
|
||||
const pVal = [{ name:'이름',val:이름, len:20,},
|
||||
{ name:'ID잠금',val:ID잠금, len:4,},];
|
||||
|
||||
const rVal = vm.isTitle(pVal);
|
||||
|
||||
if(rVal.retVal){
|
||||
vm.nData.push({userId:ID,userNm:이름,mdn:휴대폰번호,email:이메일,stat:ID잠금,msg});
|
||||
}else{
|
||||
vm.oData.push({ID,이름,휴대폰번호,이메일,ID잠금,오류내용:rVal.msg});
|
||||
}
|
||||
|
||||
}else{
|
||||
vm.oData.push({ID,이름,휴대폰번호,이메일,ID잠금,오류내용:msg});
|
||||
}
|
||||
}
|
||||
});
|
||||
console.log(vm.nData);
|
||||
console.log(vm.nData.length);
|
||||
console.log(vm.oData);
|
||||
console.log(vm.oData.length);
|
||||
};
|
||||
reader.readAsBinaryString(file);
|
||||
},
|
||||
validXlxs({이름,휴대폰번호,이메일}){
|
||||
if(this.isNull(이름)){
|
||||
return {retVal:false,msg:'이름 누락'};
|
||||
for (const [idx, r] of rowObj.entries()) {
|
||||
if (idx > limitCnt - 1) {
|
||||
break;
|
||||
}
|
||||
if(this.isNull(휴대폰번호)){
|
||||
return {retVal:false,msg:'휴대폰번호 누락'};
|
||||
let { ID, 이름, 휴대폰번호, 이메일, ID잠금 } = r;
|
||||
ID = '' + (vm.isNull(ID) ? '' : ID);
|
||||
이름 = '' + (vm.isNull(이름) ? '' : 이름);
|
||||
휴대폰번호 = '' + (vm.isNull(휴대폰번호) ? '' : 휴대폰번호);
|
||||
이메일 = '' + (vm.isNull(이메일) ? '' : 이메일);
|
||||
ID잠금 = '' + (vm.isNull(ID잠금) ? '' : ID잠금);
|
||||
|
||||
// 휴대폰번호=''+휴대폰번호;
|
||||
if (!vm.isMobile(휴대폰번호)) {
|
||||
if (vm.isMobile2(휴대폰번호)) {
|
||||
휴대폰번호 = '0' + 휴대폰번호;
|
||||
}
|
||||
}
|
||||
if(!this.isMobile(휴대폰번호)){
|
||||
if(!this.isMobile2(휴대폰번호)){
|
||||
return {retVal:false,msg:'휴대폰번호 형식 오류'};
|
||||
}
|
||||
|
||||
let { retVal, msg } = vm.validXlxs({ ID, 이름, 휴대폰번호, 이메일, ID잠금 });
|
||||
if (retVal) {
|
||||
const pVal = [
|
||||
{ name: '이름', val: 이름, len: 20 },
|
||||
{ name: 'ID잠금', val: ID잠금, len: 4 },
|
||||
];
|
||||
|
||||
const rVal = vm.isTitle(pVal);
|
||||
|
||||
if (rVal.retVal) {
|
||||
vm.nData.push({ userId: ID, userNm: 이름, mdn: 휴대폰번호, email: 이메일, stat: ID잠금, msg });
|
||||
} else {
|
||||
vm.oData.push({ ID, 이름, 휴대폰번호, 이메일, ID잠금, 오류내용: rVal.msg });
|
||||
}
|
||||
} else {
|
||||
vm.oData.push({ ID, 이름, 휴대폰번호, 이메일, ID잠금, 오류내용: msg });
|
||||
}
|
||||
if(!this.emailCheck(이메일)){
|
||||
return {retVal:false,msg:'이메일 형식 오류'};
|
||||
}
|
||||
return {retVal:true,msg:'정상'};
|
||||
},
|
||||
isTitle(pVal) {
|
||||
for (const o of pVal) {
|
||||
if (this.bytes(o.val) > o.len) {
|
||||
return {retVal:false,msg:`${o.name} 컬럼: 문자열 길이 오류(${o.len}자)`};
|
||||
}
|
||||
const strRegExp = '^[ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9]*$';
|
||||
const regExp_g = new RegExp(strRegExp,'g');
|
||||
if(!(regExp_g.test(o.val))){
|
||||
return {retVal:false,msg:`${o.name} 컬럼: 특수 문자 오류`};
|
||||
}
|
||||
}
|
||||
return {retVal:true,msg:'정상'};
|
||||
},
|
||||
delFile(event){
|
||||
console.log("del~~~~");
|
||||
const file = event.target.files[0];
|
||||
console.log(file.name);
|
||||
//this.$refs.file.reset();
|
||||
this.$refs.file.value=null;
|
||||
let element = document.getElementById("uploadFile");
|
||||
while (element.firstChild) {
|
||||
element.removeChild(element.firstChild);
|
||||
}
|
||||
// uploadFile
|
||||
},
|
||||
async saveExcel(){
|
||||
//
|
||||
this.row.adminId = this.adminId;
|
||||
this.row.list = this.nData;
|
||||
}
|
||||
});
|
||||
console.log(vm.nData);
|
||||
console.log(vm.nData.length);
|
||||
console.log(vm.oData);
|
||||
console.log(vm.oData.length);
|
||||
};
|
||||
reader.readAsBinaryString(file);
|
||||
},
|
||||
validXlxs({ 이름, 휴대폰번호, 이메일 }) {
|
||||
if (this.isNull(이름)) {
|
||||
return { retVal: false, msg: '이름 누락' };
|
||||
}
|
||||
if (this.isNull(휴대폰번호)) {
|
||||
return { retVal: false, msg: '휴대폰번호 누락' };
|
||||
}
|
||||
if (!this.isMobile(휴대폰번호)) {
|
||||
if (!this.isMobile2(휴대폰번호)) {
|
||||
return { retVal: false, msg: '휴대폰번호 형식 오류' };
|
||||
}
|
||||
}
|
||||
if (!this.emailCheck(이메일)) {
|
||||
return { retVal: false, msg: '이메일 형식 오류' };
|
||||
}
|
||||
return { retVal: true, msg: '정상' };
|
||||
},
|
||||
isTitle(pVal) {
|
||||
for (const o of pVal) {
|
||||
if (this.bytes(o.val) > o.len) {
|
||||
return { retVal: false, msg: `${o.name} 컬럼: 문자열 길이 오류(${o.len}자)` };
|
||||
}
|
||||
const strRegExp = '^[ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9]*$';
|
||||
const regExp_g = new RegExp(strRegExp, 'g');
|
||||
if (!regExp_g.test(o.val)) {
|
||||
return { retVal: false, msg: `${o.name} 컬럼: 특수 문자 오류` };
|
||||
}
|
||||
}
|
||||
return { retVal: true, msg: '정상' };
|
||||
},
|
||||
delFile(event) {
|
||||
const file = event.target.files[0];
|
||||
console.log(file.name);
|
||||
//this.$refs.file.reset();
|
||||
this.$refs.file.value = null;
|
||||
let element = document.getElementById('uploadFile');
|
||||
while (element.firstChild) {
|
||||
element.removeChild(element.firstChild);
|
||||
}
|
||||
// uploadFile
|
||||
},
|
||||
async saveExcel() {
|
||||
//
|
||||
this.row.adminId = this.adminId;
|
||||
this.row.list = this.nData;
|
||||
|
||||
try {
|
||||
const response = await custMgtApi.insertMassUser(this.row);
|
||||
const result = response.data;
|
||||
console.log(result);
|
||||
if (result != null && result.retCode == "0000") {
|
||||
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;
|
||||
this.failCnt = result.data.failCnt;
|
||||
|
||||
// this.totalCnt = result.data.totalCnt;
|
||||
// this.successCnt = result.data.successCnt;
|
||||
// this.failCnt = result.data.failCnt;
|
||||
// this.toComplete();/
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
this.row.title = '청약고객관리';
|
||||
this.row.msg1 = '실패 하였습니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
}
|
||||
if(result.data.failCnt > 0){
|
||||
// 팝업으로 교체 예정
|
||||
var resultMsg = '파일 업로드 중 오류가 발생하여 정상건만 업로드 완료하였습니다.\n\n 총 '+result.data.totalCnt+'건, 정상 '+ result.data.successCnt+'건, 오류 '+result.data.failCnt+'건\n\n오류건은 확인 후 재등록 부탁 드립니다.';
|
||||
alert(resultMsg);
|
||||
this.excelPopClose();
|
||||
this.$parent.memberDetail(this.adminId);
|
||||
}else{
|
||||
this.toComplete();
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
// 팝업으로 교체 예정
|
||||
var title ='청약고객 관리\n';
|
||||
var msg1 = '실패 하였습니다.';
|
||||
alert(title + msg1);
|
||||
|
||||
// 오류건수.
|
||||
console.log(this.oData.length);
|
||||
},
|
||||
// this.row.title = '청약고객관리';
|
||||
// this.row.msg1 = '실패 하였습니다.';
|
||||
// this.$refs.commmonModal.alertModalOpen(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>
|
||||
// 오류건수.
|
||||
console.log(this.oData.length);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
@@ -3,59 +3,6 @@
|
||||
<div>
|
||||
<div class="dimmed memberUpdate" @click="memberUpdateModalClose();"></div>
|
||||
<div class="popup-wrap memberUpdate">
|
||||
<!-- 수정 확인 -->
|
||||
<!-- <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">
|
||||
<h3 class="pop-tit">사용자 ID 수정</h3>
|
||||
@@ -212,9 +159,9 @@ export default {
|
||||
console.log(result);
|
||||
this.row = {}
|
||||
if (result != null && result.retCode == "0000") {
|
||||
this.row.title = '청약고객관리';
|
||||
this.row.msg1 = '수정 완료하였습니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
// this.row.title = '청약고객관리';
|
||||
// this.row.msg1 = '수정 완료하였습니다.';
|
||||
// this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
// this.memberUpdateModalClose();
|
||||
this.toComplete();
|
||||
|
||||
|
||||
@@ -170,6 +170,7 @@ export default {
|
||||
this.adminId = targetAdminId;
|
||||
},
|
||||
doValidate(){
|
||||
console.log(this.userTotalCnt)
|
||||
if(this.userTotalCnt >= 100){
|
||||
// 사용자등록제한_최대100개까지
|
||||
this.$refs.validationConfirmPopModal.validationMaxlimitOpen();
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
<div class="popup memoTotal popup_form b-popup">
|
||||
<div class="pop-head">
|
||||
<h3 class="pop-tit">전체 메모보기</h3>
|
||||
총 <span>{{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }}</span>건
|
||||
</div>
|
||||
<table class="table-c">
|
||||
<custom-grid
|
||||
@@ -79,13 +80,13 @@ export default {
|
||||
memorow: {},
|
||||
totalItems: 0,
|
||||
// 테이블 리스트 데이터
|
||||
perPageCnt: 10,
|
||||
perPageCnt: 5,
|
||||
userId: '',
|
||||
seqNo:'',
|
||||
|
||||
grid: {
|
||||
url: '/api/v1/bo/custMgt/allMemoList',
|
||||
pagePerRows: 10,
|
||||
pagePerRows: 5,
|
||||
pagination: true,
|
||||
isCheckbox: false, // true:첫번째 컬럼 앞에 체크박스 생성 / false:체크박스 제거
|
||||
initialRequest: false,
|
||||
@@ -119,27 +120,45 @@ export default {
|
||||
created(){
|
||||
|
||||
},
|
||||
mounted() {
|
||||
let pageMemo = 1;
|
||||
// 페이지 정보 및 검색 조건
|
||||
const getCondition_memo = this.$store.getters['searchcondition/getSearchCondition'];
|
||||
console.log('getCondition_memo : '+getCondition_memo);
|
||||
// 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() {
|
||||
// 달력 세팅
|
||||
|
||||
// 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);
|
||||
let page = 1;
|
||||
// 페이지 정보 및 검색 조건
|
||||
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
|
||||
console.log('getCondition : '+getCondition);
|
||||
|
||||
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
|
||||
let isKeep = false;
|
||||
if (getCondition) {
|
||||
this.grid.pagePerRows = getCondition.perPage;
|
||||
this.grid.params = getCondition.params;
|
||||
page = getCondition.page;
|
||||
isKeep = true;
|
||||
}
|
||||
this.search(isKeep);
|
||||
},
|
||||
methods :{
|
||||
methods :{
|
||||
search: function(isKeep) {
|
||||
console.log('this.perPageCnt:'+this.perPageCnt);
|
||||
console.log(this.grid.params);
|
||||
console.log(this.grid.params);
|
||||
this.$refs.table.search(this.grid.params, isKeep);
|
||||
this.sendStoreData();
|
||||
},
|
||||
@@ -148,9 +167,7 @@ export default {
|
||||
this.$store.commit('searchcondition/updateSearchCondition', {
|
||||
page: getP_memo._currentPage,
|
||||
perPage: this.perPageCnt,
|
||||
params: {
|
||||
userId : this.userId,
|
||||
}
|
||||
params: this.grid.params
|
||||
});
|
||||
|
||||
const getCondition_memo = this.$store.getters['searchcondition/getSearchCondition'];
|
||||
@@ -161,29 +178,28 @@ export default {
|
||||
this.grid.params.userId = props.adminId;
|
||||
this.userId = props.adminId;
|
||||
|
||||
console.log(props.adminId);
|
||||
console.log(props.adminId);
|
||||
|
||||
// 메모 모달팝업 오픈
|
||||
var dimmed = document.getElementsByClassName('memoTotal');
|
||||
for(var i = 0; i < dimmed.length; i++){
|
||||
dimmed[i].style.display = 'block';
|
||||
}
|
||||
|
||||
// 리스트 그리드 오픈
|
||||
let page = 1;
|
||||
// 페이지 정보 및 검색 조건
|
||||
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
|
||||
console.log('getCondition : '+getCondition);
|
||||
|
||||
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
|
||||
let isKeep = false;
|
||||
if (getCondition) {
|
||||
this.grid.pagePerRows = getCondition.perPage;
|
||||
this.grid.params = getCondition.params;
|
||||
page = getCondition.page;
|
||||
isKeep = true;
|
||||
}
|
||||
this.search(isKeep);
|
||||
|
||||
let page = 1;
|
||||
// 페이지 정보 및 검색 조건
|
||||
const getCondition = this.$store.getters['searchcondition/getSearchCondition'];
|
||||
console.log('momo getCondition : '+getCondition);
|
||||
|
||||
// store에 저장된 페이지 정보 및 검색 조건을 불러오기
|
||||
let isKeep = false;
|
||||
if (getCondition) {
|
||||
this.grid.pagePerRows = getCondition.perPage;
|
||||
this.grid.params = getCondition.params;
|
||||
page = getCondition.page;
|
||||
isKeep = true;
|
||||
}
|
||||
this.search(isKeep);
|
||||
|
||||
},
|
||||
//메모전체 모달 Close
|
||||
|
||||
@@ -73,19 +73,19 @@
|
||||
</div>
|
||||
|
||||
<!-- 사용자 등록 - 최대 등록 제한 -->
|
||||
<div class="dimmed valication-maxlimit" @click="validationMaxlimitClose();"></div>
|
||||
<div class="popup-wrap validation-maxlimit">
|
||||
<div class="popup validation-maxlimit">
|
||||
<div class="pop-head">
|
||||
<h3 class="pop-tit">사용자 등록</h3>
|
||||
</div>
|
||||
<div class="pop-cont">
|
||||
<p>사용자는 최대 100개까지 등록 가능합니다.</p>
|
||||
</div>
|
||||
<div class="pop-btn1">
|
||||
<button class="btn-pcolor" @click="validationMaxlimitClose();">확인</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dimmed validation-maxlimit" @click="validationMaxlimitClose();"></div>
|
||||
<div class="popup-wrap validation-maxlimit">
|
||||
<div class="popup validation-maxlimit">
|
||||
<div class="pop-head">
|
||||
<h3 class="pop-tit">사용자 등록</h3>
|
||||
</div>
|
||||
<div class="pop-cont">
|
||||
<p>사용자는 최대 100개까지 등록 가능합니다.</p>
|
||||
</div>
|
||||
<div class="popup-btn1">
|
||||
<button class="btn-pcolor" @click="validationMaxlimitClose();">확인</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 사용자 등록 - 휴대폰번호 형식 체크 -->
|
||||
@@ -139,21 +139,21 @@
|
||||
</div>
|
||||
|
||||
<!-- 사용자 수정(청약고객:sub) 확인 -->
|
||||
<div class="dimmed confirm-update-sub" @click="confirmUpdateSubClose();"></div>
|
||||
<div class="popup-wrap confirm-update-sub">
|
||||
<div class="popup confirm-update-sub">
|
||||
<div class="pop-head">
|
||||
<h3 class="pop-tit">사용자(청약고객) 수정 확인</h3>
|
||||
</div>
|
||||
<div class="pop-cont">
|
||||
<p>변경된 내용을 저장하시겠습니까?</p>
|
||||
</div>
|
||||
<div class="pop-btn2">
|
||||
<button class="btn-pcolor" @click="confirmUpdateSub();">확인</button>
|
||||
<button class="btn-default" @click="confirmUpdateSubClose();">취소</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dimmed confirm-update-sub" @click="confirmUpdateSubClose();"></div>
|
||||
<div class="popup-wrap confirm-update-sub">
|
||||
<div class="popup confirm-update-sub">
|
||||
<div class="pop-head">
|
||||
<h3 class="pop-tit">사용자(청약고객) 수정 확인</h3>
|
||||
</div>
|
||||
<div class="pop-cont">
|
||||
<p>변경된 내용을 저장하시겠습니까?</p>
|
||||
</div>
|
||||
<div class="popup-btn2">
|
||||
<button class="btn-pcolor" @click="confirmUpdateSub();">확인</button>
|
||||
<button class="btn-default" @click="confirmUpdateSubClose();">취소</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 사용자 ID 생성 파일 업로드 - 성공 -->
|
||||
<div class="dimmed success-fileupload" @click="successFileuploadClose();"></div>
|
||||
@@ -326,13 +326,13 @@ export default {
|
||||
|
||||
},
|
||||
// 최대 등록 제한 Open
|
||||
validationMaxlimitOpen(){
|
||||
var dimmed = document.getElementsByClassName('validation-maxlimit');
|
||||
for(var i = 0; i < dimmed.length; i++){
|
||||
dimmed[i].style.display = 'block';
|
||||
}
|
||||
|
||||
},
|
||||
validationMaxlimitOpen(){
|
||||
console.log("1231232323")
|
||||
var dimmed = document.getElementsByClassName('validation-maxlimit');
|
||||
for(var i = 0; i < dimmed.length; i++){
|
||||
dimmed[i].style.display = 'block';
|
||||
}
|
||||
},
|
||||
// 최대 등록 제한 Close
|
||||
validationMaxlimitClose(){
|
||||
var dimmed = document.getElementsByClassName('validation-maxlimit');
|
||||
@@ -340,7 +340,7 @@ export default {
|
||||
dimmed[i].style.display = 'none';
|
||||
}
|
||||
|
||||
this.$parent.toComplete();
|
||||
// this.$parent.toComplete();
|
||||
|
||||
},
|
||||
// 휴대폰번호 형식 체크 Open
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
<div class="count">사용자ID 정보
|
||||
<p>( 최대 100개까지 등록 가능 )</p>
|
||||
</div>
|
||||
<div class="button_group">
|
||||
<div class="button_group" v-show="isActive">
|
||||
<button type="button" class="button blue add" @click="memberInsertPopOpen();">사용자 ID 생성</button>
|
||||
<button type="button" class="button blue add" @click="excelPopOpen();">사용자 ID 대량생성</button>
|
||||
<button type="button" class="button white del" @click="deleteMember();">삭제</button>
|
||||
@@ -105,14 +105,14 @@
|
||||
<div class="table">
|
||||
<table>
|
||||
<colgroup>
|
||||
<col width="10%">
|
||||
<col width="15%">
|
||||
<col width="15%">
|
||||
<col width="15%">
|
||||
<col width="15%">
|
||||
<col width="15%">
|
||||
<col width="10%">
|
||||
<col width="15%">
|
||||
<col width="15%">
|
||||
<col width="15%">
|
||||
<col width="15%">
|
||||
<col width="15%">
|
||||
<col width="15%">
|
||||
</colgroup>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><input type="checkbox" id="admin_check1" v-model="selectAll"><label for="admin_check1"></label></th>
|
||||
@@ -135,7 +135,8 @@
|
||||
<input type="checkbox" id="user_id_status01" name="user_id_status" v-model="option.userStat" true-value='정상' false-value='사용중지' disabled/>
|
||||
<label class="toggle_switch" for="user_id_status01"></label>
|
||||
</td>
|
||||
<td><button type="button" class="button white btn-a" @click="memberUpdatePopOpen(option.userId);">수정</button></td>
|
||||
<td v-if="isActive"><button type="button" class="button white btn-a" @click="memberUpdatePopOpen(option.userId);">수정</button></td>
|
||||
<td v-else></td>
|
||||
</tr>
|
||||
<tr v-if="list.length === 0">
|
||||
<td colspan="7">등록된 사용자 정보가 없습니다.</td>
|
||||
@@ -155,7 +156,7 @@
|
||||
<member-modify-pop ref="memberModifyPop"> </member-modify-pop>
|
||||
<memo-total-pop ref="memoTatalListPop"> </memo-total-pop>
|
||||
<common-modal ref="commmonModal"></common-modal>
|
||||
|
||||
<validation-confirm-pop ref="validationConfirmPopModal"> </validation-confirm-pop>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -167,6 +168,7 @@ import MemberRegPop from '../components/MemberRegPop';
|
||||
import MemberModifyPop from '../components/MemberModifyPop';
|
||||
import MemoTotalPop from '../components/MemoTotalPop';
|
||||
import commonModal from "@/components/modal/commonModal";
|
||||
import ValidationConfirmPop from "@/modules/custMgt/components/ValidationConfirmPop";
|
||||
|
||||
export default {
|
||||
name: 'memberAdminDetail',
|
||||
@@ -197,7 +199,8 @@ export default {
|
||||
userTotalCnt:0,
|
||||
selected: [],
|
||||
svcUserId:'',
|
||||
ezSvcUserAuthKey:''
|
||||
ezSvcUserAuthKey:'',
|
||||
isActive:true,
|
||||
}
|
||||
},
|
||||
props: {
|
||||
@@ -212,6 +215,7 @@ export default {
|
||||
MemberModifyPop,
|
||||
MemoTotalPop,
|
||||
commonModal,
|
||||
ValidationConfirmPop,
|
||||
},
|
||||
created(){
|
||||
this.memberDetail(this.$route.params.serviceId);
|
||||
@@ -257,7 +261,7 @@ export default {
|
||||
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);
|
||||
@@ -273,6 +277,9 @@ export default {
|
||||
this.sendingLimit = result.data.sendingLimit.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
||||
this.lineType = result.data.lineType;
|
||||
this.userStat = result.data.userStat;
|
||||
if(this.userStat === '02'){
|
||||
this.isActive = false;
|
||||
}
|
||||
this.lastLoginDt = result.data.lastLoginDt;
|
||||
this.memo = result.data.memo;
|
||||
this.mdn = result.data.mdn;
|
||||
@@ -291,7 +298,7 @@ export default {
|
||||
|
||||
},
|
||||
async updateAdminInfoTotal(){
|
||||
|
||||
this.row = {}
|
||||
this.row.userId = this.adminId;
|
||||
this.row.sendingLimit = this.sendingLimit;
|
||||
this.row.lineType = this.lineType;
|
||||
@@ -302,13 +309,14 @@ export default {
|
||||
|
||||
try {
|
||||
const response = await custMgtApi.updateAdminInfoTotal(this.row);
|
||||
console.log(response)
|
||||
const result = response.data;
|
||||
if (result != null && result.retCode == "0000") {
|
||||
|
||||
this.row.title = '청약고객관리';
|
||||
this.row.msg1 = '저장 하였습니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
|
||||
this.memberDetail(this.row.userId);
|
||||
}else if(result != null && result.retCode == "4019"){
|
||||
this.row.title = '청약고객관리';
|
||||
this.row.msg1 = '발송한도금액이 정액한도금액보다 작습니다.';
|
||||
@@ -331,6 +339,12 @@ 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);
|
||||
},
|
||||
@@ -340,6 +354,12 @@ export default {
|
||||
this.$refs.memberModifyPop.memberUpdateModalOpen(this.row);
|
||||
},
|
||||
memberInsertPopOpen() {
|
||||
console.log("memberInsertPopOpen >> " + this.userTotalCnt)
|
||||
if(this.userTotalCnt >= 100){
|
||||
// 사용자등록제한_최대100개까지
|
||||
this.$refs.validationConfirmPopModal.validationMaxlimitOpen();
|
||||
return false;
|
||||
}
|
||||
this.row.adminId = this.adminId;
|
||||
this.row.userTotalCnt = this.userTotalCnt;
|
||||
this.$refs.memberRegPop.memberInsertModalOpen(this.row);
|
||||
|
||||
@@ -125,26 +125,21 @@ export default {
|
||||
const rsp = response.data;
|
||||
console.log("RESULT_CODE : "+rsp.retCode);
|
||||
if(rsp.retCode == '0000') {
|
||||
// vm.chgChkUserId();
|
||||
this.row.title = '비밀번호 변경';
|
||||
this.row.msg1 = '비밀번호가 정상적으로 변경되었습니다.';
|
||||
this.row.msg2 = '변경된 비밀번호로 다시 로그인 해주세요.';
|
||||
this.callFnc = 'login'
|
||||
this.$refs.commonModal.alertModalOpen(this.row);
|
||||
// if(vm.ModalOpen('modal16')){
|
||||
|
||||
// }
|
||||
} else if(rsp.retCode == '4016') {
|
||||
this.row.title = '비밀번호 변경';
|
||||
this.row.msg1 = '비밀번호를 확인해주세요.';
|
||||
this.$refs.commonModal.alertModalOpen(this.row);
|
||||
// vm.ModalOpen('modal14')
|
||||
} else if(rsp.retCode == '4017') {
|
||||
this.row.title = '비밀번호 오류';
|
||||
this.row.msg1 = '비밀번호를 사용할 수 없습니다.';
|
||||
this.row.msg2 = '비밀번호는 영문/숫자/특수기호를 혼합하여';
|
||||
this.row.msg3 = '8~16자리로 설정해주세요.';
|
||||
this.$refs.commonModal.alertModalOpen(this.row);
|
||||
// vm.ModalOpen('modal15')
|
||||
} else if(rsp.retCode == '4003') {
|
||||
this.row.title = '아이디 오류';
|
||||
this.row.msg1 = '등록되지 않은 아이디입니다.';
|
||||
@@ -159,39 +154,6 @@ export default {
|
||||
this.$refs.commonModal.alertModalOpen(this.row);
|
||||
return false;
|
||||
}
|
||||
// api.updatePassword(params).then(function(response) {
|
||||
// var rsp = response.data;
|
||||
// // var pofo = document.getElementById('oldPw');
|
||||
//
|
||||
// if(rsp.retCode == '0000') {
|
||||
// // vm.chgChkUserId();
|
||||
// this.row.title = '비밀번호 변경';
|
||||
// this.row.msg1 = '비밀번호가 정상적으로 변경되었습니다.';
|
||||
// this.row.msg2 = '변경된 비밀번호로 다시 로그인 해주세요.';
|
||||
// this.$refs.commonModal.alertModalOpen(this.row);
|
||||
// // if(vm.ModalOpen('modal16')){
|
||||
// vm.$router.push({ path: '/login' });
|
||||
// // }
|
||||
// } else if(rsp.retCode == '4016') {
|
||||
// this.row.title = '비밀번호 변경';
|
||||
// this.row.msg1 = '비밀번호를 확인해주세요.';
|
||||
// this.$refs.commonModal.alertModalOpen(this.row);
|
||||
// // vm.ModalOpen('modal14')
|
||||
// } else if(rsp.retCode == '4017') {
|
||||
// this.row.title = '비밀번호 오류';
|
||||
// this.row.msg1 = '비밀번호를 사용할 수 없습니다.';
|
||||
// this.row.msg2 = '비밀번호는 영문/숫자/특수기호를 혼합하여';
|
||||
// this.row.msg3 = '8~16자리로 설정해주세요.';
|
||||
// this.$refs.commonModal.alertModalOpen(this.row);
|
||||
// // vm.ModalOpen('modal15')
|
||||
// } else if(rsp.retCode == '4003') {
|
||||
// this.row.title = '아이디 오류';
|
||||
// this.row.msg1 = '등록되지 않은 아이디입니다.';
|
||||
// this.row.msg1 = '아이디를 다시 확인하세요';
|
||||
// this.$refs.commonModal.alertModalOpen(this.row);
|
||||
//
|
||||
// }
|
||||
// });
|
||||
|
||||
}
|
||||
},
|
||||
@@ -213,7 +175,11 @@ export default {
|
||||
this.$refs.LoginPopup.ModalOpen(target);
|
||||
this.$refs.oldPw.focus(target);
|
||||
},
|
||||
|
||||
alertCalbackFnc(callFnc){
|
||||
if(callFnc === 'login'){
|
||||
this.$router.push({ name: 'login',params: {}});
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
</div>
|
||||
</form>
|
||||
<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">
|
||||
<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>
|
||||
|
||||
@@ -120,6 +120,9 @@ export default {
|
||||
props: ['sendData'],
|
||||
created(){
|
||||
// this.formReset();
|
||||
},
|
||||
destroyed() {
|
||||
|
||||
},
|
||||
methods :{
|
||||
// 모달 띄우기
|
||||
@@ -142,6 +145,7 @@ export default {
|
||||
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);
|
||||
@@ -176,6 +180,8 @@ export default {
|
||||
wrap[0].style.display = 'none';
|
||||
var popup = document.getElementsByClassName('modal53');
|
||||
popup[0].style.display = 'none';
|
||||
|
||||
this.formReset();
|
||||
|
||||
},
|
||||
formReset(){
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
</div>
|
||||
</form>
|
||||
<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">
|
||||
<select name="" id="" v-model="perPageCnt" @keyup.enter="search">
|
||||
<option value="20">20</option>
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
</div>
|
||||
</form>
|
||||
<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">
|
||||
<select name="" id="perPage" v-model="perPageCnt" @keyup.enter="search">
|
||||
<option value="20">20</option>
|
||||
@@ -69,7 +69,7 @@
|
||||
</div>
|
||||
<div class="button_group">
|
||||
<button type="button" class="button blue add" @click="numberRegPopOpen();">등록</button>
|
||||
<button type="button" class="button white del" @click="numberDelete">삭제</button>
|
||||
<button type="button" class="button white del" @click="deleteNumber()">삭제</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table">
|
||||
@@ -272,27 +272,31 @@ export default {
|
||||
commonModalOpen(row){
|
||||
this.$refs.commmonModal.alertModalOpen(row);
|
||||
},
|
||||
deleteNumber(){
|
||||
if(this.doValidate()){
|
||||
this.row.title ='문자발신번호 관리';
|
||||
this.row.msg1 ='삭제 하시겠습니까?'
|
||||
this.$refs.commmonModal.confirmModalOpen2(this.row);
|
||||
}
|
||||
},
|
||||
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);
|
||||
} else {
|
||||
this.row.title = '문자발신번호 관리';
|
||||
this.row.msg1 = '실패 하였습니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
}
|
||||
} catch(err) {
|
||||
this.row.title = '문자발신번호 관리';
|
||||
this.row.msg1 = '실패 하였습니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
doValidate(){ //로우데이터 삭제하도록 수정
|
||||
|
||||
@@ -310,15 +314,19 @@ 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)=>({regReqNo:row.regReqNo} ));
|
||||
//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();
|
||||
}
|
||||
},
|
||||
},
|
||||
// beforeRouteLeave(to, from, next) {
|
||||
//
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
</div>
|
||||
</form>
|
||||
<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">
|
||||
<select name="" id="perpage" v-model="grid.pagePerRows" @keyup.enter="search">
|
||||
<option value="20">20</option>
|
||||
@@ -142,7 +142,7 @@ export default {
|
||||
destroyed() {
|
||||
this.$store.commit('searchcondition/updateSearchCondition', {
|
||||
page: 1,
|
||||
perPage: 20,
|
||||
perPage: 50,
|
||||
params: {
|
||||
searchType1: '',
|
||||
searchType2: '',
|
||||
|
||||
@@ -240,7 +240,7 @@ export default {
|
||||
},
|
||||
created(){
|
||||
this.setPeriodDay(0);
|
||||
|
||||
this.getExcelHeader();
|
||||
},
|
||||
destroyed() {
|
||||
this.grid.params.custNm='';
|
||||
@@ -406,8 +406,8 @@ export default {
|
||||
},
|
||||
getExcelHeader() {
|
||||
// 헤더를 mockup으로 관리한다.
|
||||
custMgtApi.getExcelHeader(this.pageType).then(res => {
|
||||
this.excelHeader = res;
|
||||
statsApi.getExcelHeader(this.pageType).then(res => {
|
||||
this.excelHeader = res;
|
||||
});
|
||||
},
|
||||
}
|
||||
|
||||
@@ -380,8 +380,8 @@ export default {
|
||||
},
|
||||
getExcelHeader() {
|
||||
// 헤더를 mockup으로 관리한다.
|
||||
custMgtApi.getExcelHeader(this.pageType).then(res => {
|
||||
this.excelHeader = res;
|
||||
statsApi.getExcelHeader(this.pageType).then(res => {
|
||||
this.excelHeader = res;
|
||||
});
|
||||
},
|
||||
async getExcelDataDown() {
|
||||
@@ -417,7 +417,7 @@ export default {
|
||||
header: this.excelHeader,
|
||||
dataOrder: 'header'
|
||||
};
|
||||
console.log(data);
|
||||
console.log(data);
|
||||
xlsx.export(data.list, saveFileName, options).then(() => {});
|
||||
},
|
||||
}
|
||||
|
||||
@@ -143,7 +143,8 @@ export default {
|
||||
endMonth:'',
|
||||
row: {},
|
||||
list:[],
|
||||
totalCnt: '',
|
||||
totalCnt: '',
|
||||
pageType:'MONTH'
|
||||
};
|
||||
},
|
||||
components: {
|
||||
@@ -153,6 +154,7 @@ export default {
|
||||
created(){
|
||||
this.setPeriodDay(0);
|
||||
this.getMonthList();
|
||||
this.getExcelHeader();
|
||||
},
|
||||
destroyed() {
|
||||
},
|
||||
@@ -264,6 +266,7 @@ export default {
|
||||
header: this.excelHeader,
|
||||
dataOrder: 'header'
|
||||
};
|
||||
|
||||
// console.log(data);
|
||||
xlsx.export(this.list, saveFileName, options).then(() => {});
|
||||
},
|
||||
|
||||
@@ -4,73 +4,75 @@
|
||||
<div class="dimmed modal21" @click="adminDetailModalClose();"></div>
|
||||
<div class="popup-wrap modal21">
|
||||
<!-- 관리자/유치채널 상세정보 -->
|
||||
<div class="popup modal21 popup_form">
|
||||
<div class="pop-head">
|
||||
<h3 class="pop-tit" v-if="code === null || code === ''">관리자 상세정보</h3>
|
||||
<h3 class="pop-tit" v-else>유치채널 상세정보</h3>
|
||||
</div>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<td><input type="text" disabled v-model.trim="madangId" ref="_madangId2"></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" disabled v-model.trim="userNm" ref="_userNm"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>휴대폰번호</th>
|
||||
<td><input type="number" disabled v-model.trim="mdn" ref="_phone"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>이메일</th>
|
||||
<td><input type="email" disabled v-model.trim="email" ref="_email"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>권한</th>
|
||||
<td v-if="code === null || code === ''">
|
||||
<div v:class="select_box">
|
||||
<select name="" id="right" v-model="auth" ref="_auth">
|
||||
<option value="">선택</option>
|
||||
<option
|
||||
v-for="(option, i) in authType"
|
||||
v-bind:value="option.autCd"
|
||||
v-bind:key="i"
|
||||
:selected="auth === option.autCd">
|
||||
{{ option.autNm }}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<td v-else><input type="text" disabled value="대리점"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="center">상태</th>
|
||||
<td>
|
||||
<input type="radio" name="state" value="01" id="detail_popup_radio1" v-model="stat">
|
||||
<label for="detail_popup_radio1">사용</label>
|
||||
<input type="radio" name="state" value="02" id="detail_popup_radio2" v-model="stat">
|
||||
<label for="detail_popup_radio2">정지</label>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="pop-btn2">
|
||||
<button class="btn-default" @click="adminDetailModalClose();">취소</button>
|
||||
<button class="btn-pcolor" @click="doInsert">저장</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="popup modal21 popup_form">
|
||||
<div class="pop-head">
|
||||
<h3 class="pop-tit">관리자 상세정보</h3>
|
||||
</div>
|
||||
<form autocomplete="off">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<td><input type="text" disabled v-model.trim="madangId" ref="_madangId2"></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" disabled v-model.trim="userNm" ref="_userNm"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>휴대폰번호</th>
|
||||
<td><input type="number" disabled v-model.trim="mdn" ref="_phone"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>이메일</th>
|
||||
<td><input type="email" disabled v-model.trim="email" ref="_email"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>권한</th>
|
||||
<td v-if="auth === '1001'">
|
||||
<div v:class="select_box">
|
||||
<select name="" id="right" v-model="auth" ref="_auth">
|
||||
<option value="">선택</option>
|
||||
<option
|
||||
v-for="(option, i) in authType"
|
||||
v-bind:value="option.autCd"
|
||||
v-bind:key="i"
|
||||
:selected="auth === option.autCd">
|
||||
{{ option.autNm }}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</td>
|
||||
<td v-else><input type="text" disabled value="대리점"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="center">상태</th>
|
||||
<td>
|
||||
<input type="radio" name="state" value="01" id="detail_popup_radio1" v-model="stat">
|
||||
<label for="detail_popup_radio1">사용</label>
|
||||
<input type="radio" name="state" value="02" id="detail_popup_radio2" v-model="stat">
|
||||
<label for="detail_popup_radio2">정지</label>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
<div class="popup-btn2">
|
||||
<button class="btn-pcolor" @click="doInsert">저장</button>
|
||||
<button class="btn-default" @click="adminDetailModalClose();">취소</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 관리자 상세정보 팝업 끝-->
|
||||
</div>
|
||||
<common-modal ref="commmonModal"></common-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -80,6 +82,8 @@ import api from '@/service/api';
|
||||
import sysMgtApi from "../service/sysMgtApi.js";
|
||||
import { utils_mixin, chkPattern2 } from '../service/mixins';
|
||||
import lodash from "lodash";
|
||||
import commonModal from "../components/commonModal";
|
||||
import SearchIdPopup from "@/modules/sysMgt/components/SearchIdPopup";
|
||||
|
||||
export default {
|
||||
name: "adminDetailPop",
|
||||
@@ -90,7 +94,7 @@ export default {
|
||||
}
|
||||
},
|
||||
data(){
|
||||
return{
|
||||
return{
|
||||
row: {},
|
||||
authType: [],
|
||||
|
||||
@@ -101,8 +105,8 @@ export default {
|
||||
auth:'',
|
||||
stat: "",
|
||||
userNm:"",
|
||||
userPwd1:"",
|
||||
userPwd2:"",
|
||||
userPwd1:"",
|
||||
userPwd2:"",
|
||||
code:"",
|
||||
}
|
||||
},
|
||||
@@ -115,22 +119,34 @@ export default {
|
||||
//this.formReset();
|
||||
this.setAuthData();
|
||||
this.formReset();
|
||||
},
|
||||
},
|
||||
components: {
|
||||
commonModal,
|
||||
},
|
||||
methods :{
|
||||
doPwdValidate(){
|
||||
if(this.isNull(this.userPwd2)){
|
||||
alert("비밀번호 확인을 입력해 주세요.");
|
||||
// alert("비밀번호 확인을 입력해 주세요.");
|
||||
this.row.title = '관리자/유치채널 관리';
|
||||
this.row.msg1 = '비밀번호를 입력해 주세요.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
this.$refs._pwd2.focus();
|
||||
return false;
|
||||
}
|
||||
if(!lodash.isEqual(this.userPwd1, this.userPwd2)){
|
||||
alert("비밀번호가 일치하지 않습니다.");
|
||||
// alert("비밀번호가 일치하지 않습니다.");
|
||||
this.row.title = '관리자/유치채널 관리';
|
||||
this.row.msg1 = '비밀번호가 일치하지 않습니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
this.$refs._pwd2.focus();
|
||||
return false;
|
||||
}
|
||||
const pwdLen = this.bytes(this.userPwd1);
|
||||
if(!(pwdLen >= 8 && pwdLen <= 16)){
|
||||
alert("비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.");
|
||||
// alert("비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.");
|
||||
this.row.title = '관리자/유치채널 관리';
|
||||
this.row.msg1 = '비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
this.$refs._pwd1.focus();
|
||||
return false;
|
||||
}
|
||||
@@ -138,9 +154,12 @@ export default {
|
||||
const pNum = /[0-9]/g; // 숫자
|
||||
const pSpc = /[!@$%^&*]/g; // 특수문자
|
||||
if(!(pEng.test(this.userPwd1) && pNum.test(this.userPwd1) && pSpc.test(this.userPwd1))) {
|
||||
alert("비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.");
|
||||
// alert("비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.");
|
||||
this.row.title = '관리자/유치채널 관리';
|
||||
this.row.msg1 = '비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
this.$refs._pwd1.focus();
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
this.row.adminPw=this.userPwd1;
|
||||
return true;
|
||||
@@ -166,6 +185,8 @@ export default {
|
||||
},
|
||||
// 모달 띄우기
|
||||
async adminDetailModalOpen(props){
|
||||
this.formReset();
|
||||
this.setAuthData();
|
||||
this.row.adminId = props.adminId;
|
||||
try {
|
||||
const response = await sysMgtApi.adminDetail(this.row);
|
||||
@@ -180,7 +201,10 @@ export default {
|
||||
this.stat = result.data.stat;
|
||||
}
|
||||
} catch(err) {
|
||||
alert("실패 하였습니다.");
|
||||
// alert("실패 하였습니다.");
|
||||
this.row.title = '관리자/유치채널 관리';
|
||||
this.row.msg1 = '실패 하였습니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
}
|
||||
var dimmed = document.getElementsByClassName('modal21');
|
||||
for(var i = 0; i < dimmed.length; i++){
|
||||
@@ -200,20 +224,23 @@ export default {
|
||||
this.adminDetailModalClose();
|
||||
},
|
||||
async doInsert(){
|
||||
if(this.doValidate() && window.confirm('등록 하시겠습니까?')){
|
||||
try {
|
||||
if(this.doValidate() && window.confirm('등록 하시겠습니까?')){
|
||||
try {
|
||||
const response = await sysMgtApi.updateAdmin(this.row);
|
||||
const result = response.data;
|
||||
if (result != null && result.retCode == "0000") {
|
||||
alert('저장 하였습니다.');
|
||||
// alert('저장 하였습니다.');
|
||||
this.toComplete();
|
||||
}
|
||||
} catch(err) {
|
||||
alert("실패 하였습니다.");
|
||||
}
|
||||
}
|
||||
},
|
||||
setAuthData() {
|
||||
} catch(err) {
|
||||
alert("실패 하였습니다.");
|
||||
this.row.title = '관리자/유치채널 관리';
|
||||
this.row.msg1 = '실패 하였습니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
}
|
||||
}
|
||||
},
|
||||
setAuthData() {
|
||||
// 권한 옵션.
|
||||
api.commAuth().then(response => {
|
||||
this.authType = response.data.data.list;
|
||||
@@ -226,9 +253,4 @@ export default {
|
||||
},
|
||||
}
|
||||
}
|
||||
</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>
|
||||
</script>
|
||||
@@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<!-- <div class="wrap bg-wrap"> -->
|
||||
<div>
|
||||
<div class="dimmed" @click="ModalClose();"></div>
|
||||
<div class="popup-wrap">
|
||||
<div class="dimmed modal20" @click="ModalClose();"></div>
|
||||
<div class="popup-wrap modal20">
|
||||
<!-- 관리자/유치채널 등록 -->
|
||||
<div class="popup modal20 popup_form">
|
||||
<div class="pop-head">
|
||||
@@ -254,9 +254,10 @@ export default {
|
||||
async searchMadangId(){
|
||||
|
||||
if(!this.madangId){
|
||||
this.row.title = '관리자/유치채널 관리';
|
||||
this.row.msg1 = '마당ID를 입력해주세요.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
// this.row.title = '관리자/유치채널 관리';
|
||||
// this.row.msg1 = '마당ID를 입력해주세요.';
|
||||
// this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
// this.$refs.searchIdPopModal.searchIdModalOpen();
|
||||
this.$refs.madangId.focus();
|
||||
return false;
|
||||
}
|
||||
@@ -281,32 +282,32 @@ export default {
|
||||
|
||||
this.idCheck = true;
|
||||
this.$refs._pwd1.focus();
|
||||
|
||||
return false;
|
||||
}else if(result.retCode == '1004'){
|
||||
//alert('마당ID 정보가 없습니다.');
|
||||
this.row.title = '관리자/유치채널 관리';
|
||||
this.row.msg1 = '마당ID 정보가 없습니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
// this.searchIdFailPop();
|
||||
// this.row.title = '관리자/유치채널 관리';
|
||||
// this.row.msg1 = '마당ID 정보가 없습니다.';
|
||||
// this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
this.searchIdFailPop();
|
||||
this.idCheck = false;
|
||||
this.$refs.madangId.focus();
|
||||
return false;
|
||||
}else {
|
||||
//alert('마당ID 조회에 실패하였습니다.');
|
||||
this.row.title = '관리자/유치채널 관리';
|
||||
this.row.msg1 = '마당ID 정보가 없습니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
// this.searchIdFailPop();
|
||||
// this.row.title = '관리자/유치채널 관리';
|
||||
// this.row.msg1 = '마당ID 정보가 없습니다.';
|
||||
// this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
this.searchIdFailPop();
|
||||
this.idCheck = false;
|
||||
this.$refs.madangId.focus();
|
||||
return false;
|
||||
}
|
||||
} catch(err) {
|
||||
//alert("실패 하였습니다.");
|
||||
this.row.title = '관리자/유치채널 관리';
|
||||
this.row.msg1 = '마당ID 정보가 없습니다.';
|
||||
this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
// this.searchIdFailPop();
|
||||
// this.row.title = '관리자/유치채널 관리';
|
||||
// this.row.msg1 = '마당ID 정보가 없습니다.';
|
||||
// this.$refs.commmonModal.alertModalOpen(this.row);
|
||||
this.searchIdFailPop();
|
||||
this.idCheck = false;
|
||||
this.$refs.madangId.focus();
|
||||
return false;
|
||||
@@ -337,22 +338,18 @@ export default {
|
||||
ModalOpen(insertType){
|
||||
this.formReset();
|
||||
this.insertType=insertType;
|
||||
var dimmed = document.getElementsByClassName('dimmed');
|
||||
dimmed[0].style.display = 'block';
|
||||
var wrap = document.getElementsByClassName('popup-wrap');
|
||||
wrap[0].style.display = 'block';
|
||||
var obj = document.getElementsByClassName('modal20');
|
||||
obj[0].style.display = 'block';
|
||||
var dimmed = document.getElementsByClassName('modal20');
|
||||
for(var i = 0; i < dimmed.length; i++){
|
||||
dimmed[i].style.display = 'block';
|
||||
}
|
||||
this.setAuthData();
|
||||
},
|
||||
// 모달 끄기
|
||||
ModalClose(){
|
||||
var dimmed = document.getElementsByClassName('dimmed');
|
||||
dimmed[0].style.display = 'none';
|
||||
var wrap = document.getElementsByClassName('popup-wrap');
|
||||
wrap[0].style.display = 'none';
|
||||
var popup = document.getElementsByClassName('modal20');
|
||||
popup[0].style.display = 'none';
|
||||
var dimmed = document.getElementsByClassName('modal20');
|
||||
for(var i = 0; i < dimmed.length; i++){
|
||||
dimmed[i].style.display = 'none';
|
||||
}
|
||||
|
||||
},
|
||||
// 저장 후 부모창 호출.
|
||||
|
||||
@@ -7,17 +7,17 @@
|
||||
<!-- 시스템관리 팝업 -->
|
||||
|
||||
<!-- ID 조회 -->
|
||||
<div class="popup modal17">
|
||||
<div class="pop-head">
|
||||
<h3 class="pop-tit">ID 조회</h3>
|
||||
</div>
|
||||
<div class="pop-cont">
|
||||
<p>입력하신 마당ID를 조회할 수 없습니다</p>
|
||||
</div>
|
||||
<div class="pop-btn1">
|
||||
<button class="btn-pcolor" @click="searchIdFailModalClose();">확인</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="popup modal17">
|
||||
<div class="pop-head">
|
||||
<h3 class="pop-tit">ID 조회</h3>
|
||||
</div>
|
||||
<div class="pop-cont">
|
||||
<p>입력하신 마당ID를 조회할 수 없습니다.</p>
|
||||
</div>
|
||||
<div class="popup-btn1">
|
||||
<button class="btn-pcolor" @click="searchIdFailModalClose();">확인</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dimmed modal18" @click="searchIdModalCancelClose();"></div>
|
||||
|
||||
@@ -31,13 +31,13 @@
|
||||
</div>
|
||||
<div class="input_box">
|
||||
<label for="name" class="label">이름(대리점명)</label>
|
||||
<input type="text" id="name" placeholder="검색어 입력" v-model="grid.params.searchText2" @keyup.enter="search"/>
|
||||
<input type="text" id="name" placeholder="검색어 입력" v-model="grid.params.searchText2" @keyup.enter="search"/>
|
||||
</div>
|
||||
<button type="button" class="button grey" @click="search">조회</button>
|
||||
</div>
|
||||
</form>
|
||||
<div class="info">
|
||||
<div class="count">총 <span>{{ totalItems }}</span>건</div>
|
||||
<div class="count">총 <span>{{ totalItems.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') }}</span>건</div>
|
||||
<div class="button_group">
|
||||
<button type="button" class="button blue admin add" @click="adminRegPopOpen();">관리자 등록</button>
|
||||
<button type="button" class="button blue channel add" @click="adminReg2PopOpen();">유치채널 등록</button>
|
||||
|
||||
@@ -34,6 +34,8 @@ public interface CustMgtMapper {
|
||||
int selectMemberDetailListTotalCnt(MemberAdminDetailReqDto memberDetailListReqDto);
|
||||
/** 사용자 아이디 목록 조회.*/
|
||||
List<MemberDetail> selectMemberDetailList(MemberAdminDetailReqDto memberDetailListReqDto);
|
||||
|
||||
int selectMemoListTotalCnt(AllMemoListReqDto allMemoListReqDto);
|
||||
/** 사용자 메모 목록 조회.*/
|
||||
List<AllMemoList> selectMemoList(AllMemoListReqDto allMemoListReqDto);
|
||||
/** 사용자 유무 확인.*/
|
||||
|
||||
@@ -5,6 +5,7 @@ import kr.co.uplus.ez.common.components.HubeasyApiComponents;
|
||||
import kr.co.uplus.ez.common.data.*;
|
||||
import kr.co.uplus.ez.common.utils.EncryptionUtil;
|
||||
import org.apache.commons.lang3.RandomStringUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.mybatis.spring.SqlSessionTemplate;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -452,14 +453,38 @@ public class CustMgtService {
|
||||
|
||||
CustMgtMapper custMgtMapper = sqlSessionSlave.getMapper(CustMgtMapper.class);
|
||||
|
||||
List<AllMemoList> allMemoLists = custMgtMapper.selectMemoList(allMemoListReqDto);
|
||||
String nowPage = String.valueOf(allMemoListReqDto.getPage());
|
||||
int totalCnt = custMgtMapper.selectMemoListTotalCnt(allMemoListReqDto);
|
||||
|
||||
// 조회 결과 없음.
|
||||
if (allMemoLists == null) {
|
||||
return new AllMemoListResDto(ApiResponseCode.CM_NOT_FOUND);
|
||||
if (totalCnt == 0) {
|
||||
|
||||
AllMemoListRes allMemoListRes = new AllMemoListRes();
|
||||
allMemoListRes.setList(new ArrayList<>());
|
||||
|
||||
Paging paging = new Paging();
|
||||
paging.setPage(nowPage);
|
||||
paging.setTotalCnt(String.valueOf(totalCnt));
|
||||
allMemoListRes.setPaging(paging);
|
||||
|
||||
return new AllMemoListResDto(ApiResponseCode.CM_NOT_FOUND, allMemoListRes);
|
||||
}
|
||||
|
||||
return new AllMemoListResDto(new AllMemoListRes(allMemoLists));
|
||||
int page = allMemoListReqDto.getPage();
|
||||
int pagePerRows = allMemoListReqDto.getPagePerRows();
|
||||
page = (page - 1) * pagePerRows;
|
||||
allMemoListReqDto.setPage(page);
|
||||
|
||||
List<AllMemoList> allMemoLists = custMgtMapper.selectMemoList(allMemoListReqDto);
|
||||
|
||||
AllMemoListRes allMemoListRes = new AllMemoListRes();
|
||||
allMemoListRes.setList(allMemoLists);
|
||||
|
||||
Paging paging = new Paging();
|
||||
paging.setPage(nowPage);
|
||||
paging.setTotalCnt(String.valueOf(totalCnt));
|
||||
allMemoListRes.setPaging(paging);
|
||||
|
||||
return new AllMemoListResDto(ApiResponseCode.SUCCESS, allMemoListRes);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -788,7 +813,7 @@ public class CustMgtService {
|
||||
|
||||
// 3. 발송 한도 update
|
||||
if(updateAdminInfoTotalReqDto.getSendingLimit() != null) {
|
||||
BigDecimal sendingLimitAmt = new BigDecimal(updateAdminInfoTotalReqDto.getSendingLimit());
|
||||
BigDecimal sendingLimitAmt = new BigDecimal(StringUtils.remove(updateAdminInfoTotalReqDto.getSendingLimit(), ","));
|
||||
|
||||
paramMap.put("userId", updateAdminInfoTotalReqDto.getUserId());
|
||||
// 3-1. 기존 정액한도금액 조회
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package kr.co.uplus.ez.api.custMgt.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
@Data
|
||||
public class AllMemoListReqDto implements Serializable {
|
||||
@@ -15,4 +14,11 @@ public class AllMemoListReqDto implements Serializable {
|
||||
@ApiModelProperty(example = "사용자 ID", name = "사용자 ID", dataType = "String")
|
||||
private String userId;
|
||||
|
||||
@NotNull
|
||||
@ApiModelProperty(example = "페이지당 조회할 목록 수",notes = "페이지당 조회할 목록 수", name = "페이지당 조회할 목록 수", dataType = "int")
|
||||
private int pagePerRows;
|
||||
|
||||
@NotNull
|
||||
@ApiModelProperty(example = "현재 페이지", name = "현재 페이지", dataType = "int")
|
||||
private int page;
|
||||
}
|
||||
@@ -1,16 +1,22 @@
|
||||
package kr.co.uplus.ez.api.custMgt.dto;
|
||||
|
||||
import kr.co.uplus.ez.common.data.Paging;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
@Data
|
||||
public class AllMemoListRes implements Serializable{
|
||||
|
||||
private Paging paging;
|
||||
private List<AllMemoList> list;
|
||||
|
||||
public AllMemoListRes(){
|
||||
super();
|
||||
}
|
||||
|
||||
public AllMemoListRes(List<AllMemoList> list) {
|
||||
super();
|
||||
this.list = list;
|
||||
|
||||
@@ -244,6 +244,7 @@ public class LoginService {
|
||||
authUser.setTmpPwdYn(Const.COMM_YES);
|
||||
authUser.setPwd(EncryptionUtil.getCustomSHA512(resetPasswordReqDto.getUserId(), randomPw));
|
||||
authUser.setPwdChgDt(Const.COMM_YES);
|
||||
authUser.setAuthchrFailCnt(0);
|
||||
|
||||
int reslut = loginMapper.updateAdmUser(authUser);
|
||||
|
||||
@@ -294,6 +295,7 @@ public class LoginService {
|
||||
authUser.setOprtrId(updatePasswordReqDto.getUserId());
|
||||
authUser.setPwd(newPw);
|
||||
authUser.setPwdChgDt(Const.COMM_YES);
|
||||
authUser.setAuthchrFailCnt(0);
|
||||
|
||||
int reslut = loginMapper.updateAdmUser(authUser);
|
||||
|
||||
|
||||
@@ -9,7 +9,9 @@ import java.io.Serializable;
|
||||
@Data
|
||||
public class DeleteNumber implements Serializable{
|
||||
|
||||
@ApiModelProperty(example = "등록번호", name = "등록번호", dataType = "String")
|
||||
private String regReqNo;
|
||||
// @ApiModelProperty(example = "등록번호", name = "등록번호", dataType = "String")
|
||||
// private String regReqNo;
|
||||
@ApiModelProperty(example = "발신일련번호", name = "발신일련번호", dataType = "String")
|
||||
private String seqNo;
|
||||
|
||||
}
|
||||
|
||||
@@ -15,4 +15,7 @@ public class DetailNumberReqDto implements Serializable{
|
||||
@ApiModelProperty(example = "발신번호", name = "발신번호", dataType = "String")
|
||||
private String sndrno;
|
||||
|
||||
@ApiModelProperty(example = "발신일련번호", name = "발신일련번호", dataType = "String")
|
||||
private String seqNo;
|
||||
|
||||
}
|
||||
|
||||
@@ -33,5 +33,7 @@ public class SendNumberInfo implements Serializable{
|
||||
private String regDt;
|
||||
@ApiModelProperty(example = "발신번호등록번호", name = "발신번호등록번호", dataType = "String")
|
||||
private String regReqNo;
|
||||
@ApiModelProperty(example = "발신일련번호", name = "발신일련번호", dataType = "String")
|
||||
private String seqNo;
|
||||
|
||||
}
|
||||
|
||||
@@ -114,10 +114,10 @@
|
||||
</select>
|
||||
<sql id="subsListCondition">
|
||||
<if test="startDt != null and startDt != ''">
|
||||
AND esi.SUBS_DT <![CDATA[ >= ]]> STR_TO_DATE(REPLACE( #{startDt}, '-', '' ), '%Y%m%d')
|
||||
AND esi.SUBS_DT <![CDATA[ >= ]]> STR_TO_DATE(concat(REPLACE(#{startDt}, '-', '' ),'000000') , '%Y%m%d%H%i%s')
|
||||
</if>
|
||||
<if test="endDt != null and endDt != ''">
|
||||
AND esi.SUBS_DT <![CDATA[ <= ]]> STR_TO_DATE(REPLACE( #{endDt}, '-', '' ), '%Y%m%d')
|
||||
AND esi.SUBS_DT <![CDATA[ <= ]]> STR_TO_DATE(concat(REPLACE(#{endDt}, '-', '' ),'235959'), '%Y%m%d%H%i%s')
|
||||
</if>
|
||||
<if test="searchType1 != null and searchType1 != ''">
|
||||
AND esu.USER_STTUS_CD = #{searchType1}
|
||||
@@ -432,10 +432,10 @@
|
||||
|
||||
<sql id="svcUserListCondition">
|
||||
<if test="startDt != null and startDt != ''">
|
||||
AND esu.REG_DT <![CDATA[ >= ]]> STR_TO_DATE(REPLACE( #{startDt}, '-', '' ), '%Y%m%d')
|
||||
AND esu.REG_DT <![CDATA[ >= ]]> STR_TO_DATE(concat(REPLACE(#{startDt}, '-', '' ),'000000') , '%Y%m%d%H%i%s')
|
||||
</if>
|
||||
<if test="endDt != null and endDt != ''">
|
||||
AND esu.REG_DT <![CDATA[ <= ]]> STR_TO_DATE(REPLACE( #{endDt}, '-', '' ), '%Y%m%d')
|
||||
AND esu.REG_DT <![CDATA[ <= ]]> STR_TO_DATE(concat(REPLACE(#{endDt}, '-', '' ),'235959'), '%Y%m%d%H%i%s')
|
||||
</if>
|
||||
<if test="searchType1 != null and searchType1 != ''">
|
||||
AND esu.USER_STTUS_CD = #{searchType1}
|
||||
@@ -539,6 +539,18 @@
|
||||
( SELECT @ROWNUM := 0 ) AS R
|
||||
</select>
|
||||
|
||||
<select id="selectMemoListTotalCnt" parameterType="kr.co.uplus.ez.api.custMgt.dto.AllMemoListReqDto" resultType="int">
|
||||
/* custMgt-mapper.xml(selectMemoList) */
|
||||
SELECT
|
||||
COUNT(*)
|
||||
FROM
|
||||
hubez_common.EZ_USER_MEMO EUM
|
||||
INNER JOIN hubez_common.EZ_SVC_USER ESU
|
||||
ON EUM.USER_SEQ = ESU.USER_SEQ
|
||||
WHERE
|
||||
ESU.USER_ID = #{userId}
|
||||
</select>
|
||||
|
||||
<select id="selectMemoList" parameterType="kr.co.uplus.ez.api.custMgt.dto.AllMemoListReqDto" resultType="kr.co.uplus.ez.api.custMgt.dto.AllMemoList">
|
||||
/* custMgt-mapper.xml(selectMemoList) */
|
||||
SELECT
|
||||
@@ -553,6 +565,7 @@
|
||||
WHERE
|
||||
ESU.USER_ID = #{userId}
|
||||
ORDER BY EUM.REG_DT DESC
|
||||
LIMIT #{page}, #{pagePerRows}
|
||||
</select>
|
||||
|
||||
<select id="selectCustInfoCount" parameterType="String" resultType="int">
|
||||
|
||||
@@ -100,6 +100,9 @@
|
||||
INNER JOIN hubez_common.EZ_SNDRNO_REG esr
|
||||
ON
|
||||
esr.USER_SEQ = esu.USER_SEQ
|
||||
INNER JOIN hubez_common.EZ_SVC_SNDRNO ess
|
||||
ON
|
||||
esr.REG_REQ_NO = ess.REG_REQ_NO
|
||||
WHERE 1=1
|
||||
<include refid="numberListCondition"></include>
|
||||
</select>
|
||||
@@ -118,30 +121,29 @@
|
||||
(SELECT esu2.USER_ID FROM hubez_common.EZ_SVC_USER esu2 WHERE esu2.USER_SEQ = esu.PRNTS_USER_SEQ)AS ADMIN_ID,
|
||||
esr.REG_ID AS register,
|
||||
eci.BIZRNO AS bRegNo,
|
||||
(SELECT (
|
||||
SELECT
|
||||
(SELECT
|
||||
ecd.DTL_CD_NM
|
||||
FROM
|
||||
hubez_common.EZ_CD_DTL ecd
|
||||
WHERE
|
||||
ecd.GRP_CD = 'NMINEE_DIV_CD'
|
||||
AND ecd.DTL_CD = ess.NMINEE_DIV_CD) FROM hubez_common.EZ_SVC_SNDRNO ess WHERE ess.REG_REQ_NO = esr.REG_REQ_NO LIMIT 1) AS NMINEE_DIV_CD,
|
||||
(SELECT (SELECT
|
||||
AND ecd.DTL_CD = ess.NMINEE_DIV_CD) AS NMINEE_DIV_CD,
|
||||
(SELECT
|
||||
ecd.DTL_CD_NM
|
||||
FROM
|
||||
hubez_common.EZ_CD_DTL ecd
|
||||
WHERE
|
||||
ecd.GRP_CD = 'INCH_DIV_CD'
|
||||
AND ecd.DTL_CD = ess.INCH_DIV_CD) FROM hubez_common.EZ_SVC_SNDRNO ess WHERE ess.REG_REQ_NO = esr.REG_REQ_NO LIMIT 1) AS INCH_DIV_CD,
|
||||
(
|
||||
SELECT
|
||||
AND ecd.DTL_CD = ess.INCH_DIV_CD) AS INCH_DIV_CD,
|
||||
(SELECT
|
||||
ecd.DTL_CD_NM
|
||||
FROM
|
||||
hubez_common.EZ_CD_DTL ecd
|
||||
WHERE
|
||||
ecd.GRP_CD = 'SNDRNO_REQ_STTUS_CD'
|
||||
AND ecd.DTL_CD = esr.REQ_STTUS_CD) AS sttusCd,
|
||||
(SELECT ess.SNDRNO FROM hubez_common.EZ_SVC_SNDRNO ess WHERE ess.REG_REQ_NO = esr.REG_REQ_NO LIMIT 1) AS SNDRNO,
|
||||
ess.SNDRNO AS SNDRNO,
|
||||
ess.SEQ_NO,
|
||||
DATE_FORMAT(esr.REG_DT, '%Y-%m-%d') AS REG_DT
|
||||
FROM
|
||||
hubez_common.EZ_CUST_INFO eci
|
||||
@@ -151,6 +153,9 @@
|
||||
INNER JOIN hubez_common.EZ_SNDRNO_REG esr
|
||||
ON
|
||||
esr.USER_SEQ = esu.USER_SEQ
|
||||
INNER JOIN hubez_common.EZ_SVC_SNDRNO ess
|
||||
ON
|
||||
esr.REG_REQ_NO = ess.REG_REQ_NO
|
||||
WHERE 1=1
|
||||
<include refid="numberListCondition"></include>
|
||||
ORDER BY eci.BIZRNO
|
||||
@@ -228,20 +233,12 @@
|
||||
/* sendNumMgt-mapper.xml(deleteNumber) */
|
||||
DELETE
|
||||
FROM
|
||||
esr
|
||||
, esd
|
||||
USING hubez_common.EZ_SNDRNO_REG AS esr
|
||||
INNER JOIN hubez_common.EZ_SNDRNO_DOC AS esd
|
||||
ON
|
||||
esr.REG_REQ_NO = esd.REG_REQ_NO
|
||||
INNER JOIN hubez_common.EZ_SVC_SNDRNO AS ess
|
||||
ON
|
||||
esr.REG_REQ_NO = ess.REG_REQ_NO
|
||||
hubez_common.EZ_SVC_SNDRNO
|
||||
<where>
|
||||
esr.REG_REQ_NO IN
|
||||
SEQ_NO IN
|
||||
<foreach collection="list" item="item" index="i" open="("
|
||||
separator="," close=")">
|
||||
#{item.regReqNo}
|
||||
#{item.seqNo}
|
||||
</foreach>
|
||||
</where>
|
||||
</delete>
|
||||
@@ -451,10 +448,9 @@
|
||||
esu.USER_SEQ = esr.USER_SEQ
|
||||
INNER JOIN hubez_common.EZ_SVC_SNDRNO ess
|
||||
ON
|
||||
eci.CUST_SEQ = ess.CUST_SEQ
|
||||
esr.REG_REQ_NO = ess.REG_REQ_NO
|
||||
WHERE 1 = 1
|
||||
AND ess.SNDRNO = #{sndrno}
|
||||
AND esr.REG_REQ_NO = #{regReqNo}
|
||||
AND ess.SEQ_NO = #{seqNo}
|
||||
</select>
|
||||
|
||||
<select id="selectAuthFileList" parameterType="kr.co.uplus.ez.api.sendNumMgt.dto.DetailNumberReqDto" resultType="kr.co.uplus.ez.api.sendNumMgt.dto.AuthFileInfo">
|
||||
|
||||
Reference in New Issue
Block a user