TC 수정건

This commit is contained in:
kimre
2022-07-18 20:33:48 +09:00
parent a6c6db6f22
commit 2069d87f49
12 changed files with 789 additions and 752 deletions

View File

@@ -1,9 +1,9 @@
<template> <template>
<!-- <div class="wrap bg-wrap"> --> <!-- <div class="wrap bg-wrap"> -->
<div> <div>
<div class="dimmed modal29" @click="ModalClose();"></div> <div class="dimmed modal29" @click="ModalClose();"></div>
<div class="popup-wrap modal29"> <div class="popup-wrap modal29">
<!-- 테스트 ID 생성 --> <!-- 테스트 ID 생성 -->
<div class="popup modal29 popup_form"> <div class="popup modal29 popup_form">
<div class="pop-head"> <div class="pop-head">
<h3 class="pop-tit">테스트 ID 생성</h3> <h3 class="pop-tit">테스트 ID 생성</h3>
@@ -11,39 +11,45 @@
<form autocomplete="off"> <form autocomplete="off">
<table> <table>
<tbody> <tbody>
<tr> <tr>
<th>ID</th> <th>ID</th>
<td><input type="text" placeholder="아이디 입력" v-model.trim="userId" ref="_userId" @keypress="onlyId" @input="onlyId" minlength="6" maxlength="16"/></td> <td><input type="text" placeholder="아이디 입력" v-model.trim="userId" ref="_userId" @keypress="onlyId"
</tr> @input="onlyId" minlength="6" maxlength="16"/></td>
<tr> </tr>
<th>비밀번호</th> <tr>
<td><input type="password" @keypress="onlyPassword" @input="onlyPassword" required minlength="8" maxlength="16" ref="_pwd1" v-model.trim="userPwd1"></td> <th>비밀번호</th>
</tr> <td><input type="password" @keypress="onlyPassword" @input="onlyPassword" required minlength="8"
<tr> maxlength="16" ref="_pwd1" v-model.trim="userPwd1"></td>
<th>비밀번호 확인</th> </tr>
<td><input type="password" @keypress="onlyPassword" @input="onlyPassword" required minlength="8" maxlength="16" ref="_pwd2" v-model.trim="userPwd2"></td> <tr>
</tr> <th>비밀번호 확인</th>
<tr> <td><input type="password" @keypress="onlyPassword" @input="onlyPassword" required minlength="8"
<th>이름</th> maxlength="16" ref="_pwd2" v-model.trim="userPwd2"></td>
<td><input type="text" @keypress="onlyText" @input="onlyText" v-model.trim="userNm" ref="_userNm" required maxlength="40"></td> </tr>
</tr> <tr>
<tr> <th>이름</th>
<th>휴대폰번호</th> <td><input type="text" @keypress="onlyText" @input="onlyText" v-model.trim="userNm" ref="_userNm" required
<td><input type="text" placeholder="- 자 제외 숫자만 입력" v-model.trim="mdn" @keypress="onlyNum" @input="onlyNum" minlength="10" maxlength="11" ref="_phone"></td> maxlength="40"></td>
</tr> </tr>
<tr> <tr>
<th>이메일</th> <th>휴대폰번호</th>
<td><input type="email" v-model.trim="email" @keypress="onlyEmail" @input="onlyEmail" maxlength="100" ref="_email"></td> <td><input type="text" placeholder="- 자 제외 숫자만 입력" v-model.trim="mdn" @keypress="onlyNum" @input="onlyNum"
</tr> minlength="10" maxlength="11" ref="_phone"></td>
<tr> </tr>
<th class="center">상태</th> <tr>
<td> <th>이메일</th>
<input type="radio" name="state" value="01" id="popup_radio1" v-model="userStat"> <td><input type="email" v-model.trim="email" @keypress="onlyEmail" @input="onlyEmail" maxlength="100"
<label for="popup_radio1">사용</label> ref="_email"></td>
<input type="radio" name="state" value="02" id="popup_radio2" v-model="userStat"> </tr>
<label for="popup_radio2">정지</label> <tr>
</td> <th class="center">상태</th>
</tr> <td>
<input type="radio" name="state" value="01" id="popup_radio1" v-model="userStat">
<label for="popup_radio1">사용</label>
<input type="radio" name="state" value="02" id="popup_radio2" v-model="userStat">
<label for="popup_radio2">정지</label>
</td>
</tr>
</tbody> </tbody>
</table> </table>
</form> </form>
@@ -52,216 +58,221 @@
<button class="btn-default" @click="ModalClose();">취소</button> <button class="btn-default" @click="ModalClose();">취소</button>
</div> </div>
</div> </div>
<common-modal ref="commmonModal"></common-modal> <common-modal ref="commmonModal"></common-modal>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import api from '@/service/api'; 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 {utils_mixin, chkPattern2} from '../service/mixins';
import lodash from "lodash"; import lodash from "lodash";
import commonModal from "../components/commonModal"; import commonModal from "../components/commonModal";
import ValidationConfirmPop from "@/modules/custMgt/components/ValidationConfirmPop"; import ValidationConfirmPop from "@/modules/custMgt/components/ValidationConfirmPop";
export default { export default {
name: "subsRegPop", name: "subsRegPop",
mixins: [utils_mixin, chkPattern2], mixins: [utils_mixin, chkPattern2],
watch:{ watch: {
stat(){ stat() {
console.log('watch : ', this.stat) console.log('watch : ', this.stat)
}
},
data(){
return{
row: {},
userId:'',
name:'',
mdn:'',
email:'',
userStat: '01',
userNm:"",
userPwd1:"",
userPwd2:"",
code:"",
} }
}, },
model: { data() {
prop: 'sendData', return {
event: 'event-data' row: {},
}, userId: '',
props: ['sendData'], name: '',
mdn: '',
email: '',
userStat: '01',
userNm: "",
userPwd1: "",
userPwd2: "",
code: "",
}
},
model: {
prop: 'sendData',
event: 'event-data'
},
props: ['sendData'],
components: { components: {
commonModal, commonModal,
}, },
created(){ created() {
this.formReset(); this.formReset();
}, },
methods :{ methods: {
doPwdValidate(){ doPwdValidate() {
if(this.isNull(this.userPwd1)){ if (this.isNull(this.userPwd1)) {
this.row.title = '청약고객관리'; this.row.title = '청약고객관리';
this.row.msg1 = '비밀번호를 입력해 주세요.'; this.row.msg1 = '비밀번호를 입력해 주세요.';
this.$refs.commmonModal.alertModalOpen(this.row); this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._pwd1.focus(); this.$refs._pwd1.focus();
return false; return false;
} }
if(this.isNull(this.userPwd2)){ if (this.isNull(this.userPwd2)) {
this.row.title = '청약고객관리'; this.row.title = '청약고객관리';
this.row.msg1 = '비밀번호 확인을 입력해 주세요.'; this.row.msg1 = '비밀번호 확인을 입력해 주세요.';
this.$refs.commmonModal.alertModalOpen(this.row); this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._pwd2.focus(); this.$refs._pwd2.focus();
return false; return false;
} }
if(!lodash.isEqual(this.userPwd1, this.userPwd2)){ if (!lodash.isEqual(this.userPwd1, this.userPwd2)) {
this.row.title = '청약고객관리'; this.row.title = '청약고객관리';
this.row.msg1 = '비밀번호가 일치하지 않습니다.'; this.row.msg1 = '비밀번호가 일치하지 않습니다.';
this.$refs.commmonModal.alertModalOpen(this.row); this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._pwd2.focus(); this.$refs._pwd2.focus();
return false; return false;
} }
const pwdLen = this.bytes(this.userPwd1); const pwdLen = this.bytes(this.userPwd1);
if(!(pwdLen >= 8 && pwdLen <= 16)){ if (!(pwdLen >= 8 && pwdLen <= 16)) {
this.row.title = '청약고객관리'; this.row.title = '청약고객관리';
this.row.msg1 = '비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.'; this.row.msg1 = '비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.';
this.$refs.commmonModal.alertModalOpen(this.row); this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._pwd1.focus(); this.$refs._pwd1.focus();
return false; return false;
} }
const pEng = /[A-Za-z]/g; // 영문자 const pEng = /[A-Za-z]/g; // 영문자
const pNum = /[0-9]/g; // 숫자 const pNum = /[0-9]/g; // 숫자
const pSpc = /[!@$%^&*]/g; // 특수문자 const pSpc = /[!@$%^&*]/g; // 특수문자
if(!(pEng.test(this.userPwd1) && pNum.test(this.userPwd1) && pSpc.test(this.userPwd1))) { if (!(pEng.test(this.userPwd1) && pNum.test(this.userPwd1) && pSpc.test(this.userPwd1))) {
this.row.title = '청약고객관리'; this.row.title = '청약고객관리';
this.row.msg1 = '비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.'; this.row.msg1 = '비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.';
this.$refs.commmonModal.alertModalOpen(this.row); this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._pwd1.focus(); this.$refs._pwd1.focus();
return; return;
} }
this.row.userPw=this.userPwd1; this.row.userPw = this.userPwd1;
return true; return true;
},
doValidate(){
if(this.isNull(this.userId)){
this.row.title = '청약고객관리';
this.row.msg1 = '아이디를 입력해 주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._userId.focus();
return false;
}
// 청약 ID 길이 체크 6~16
var userIdlength = this.userId.length;
if (userIdlength < 6 || userIdlength > 16) {
this.row.title = '청약고객관리';
this.row.msg1 = 'ID 형식에 맞지 않습니다.';
this.row.msg2 = '확인하여 다시 등록 부탁 드립니다.';
this.row.focusTaget = '1';
this.$refs.commmonModal.alertModalOpen(this.row);
return false;
}
if(!this.doPwdValidate()){
return false;
}
if(this.isNull(this.userNm)){
this.row.title = '청약고객관리';
this.row.msg1 = '이름을 입력해 주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._userNm.focus();
return false;
}
if(this.isNull(this.mdn)){
this.row.title = '청약고객관리';
this.row.msg1 = '휴대폰번호를 입력해주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._phone.focus();
return false;
}
const hp = this.mdn;
if(!this.isNull(hp) && !this.isMobile(hp)){
this.row.title = '청약고객관리';
this.row.msg1 = '휴대폰 번호 형식이 잘못되었습니다. 확인해 주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._phone.focus();
return false;
}
if(this.isNull(this.email)){
this.row.title = '청약고객관리';
this.row.msg1 = '이메일을 입력해주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._email.focus();
return false;
}
const email = this.email;
if(!this.isNull(email) && !lodash.isEqual(email,'@') && !this.emailCheck(email)){
this.row.title = '청약고객관리';
this.row.msg1 = '이메일 형식이 잘못되었습니다. 확인해 주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._email.focus();
return false;
}
if(this.isNull(this.userStat)){
this.row.title = '청약고객관리';
this.row.msg1 = '상태를 선택 해주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
// this.$refs._auth.focus();
return false;
}
this.row.userId=this.userId;
this.row.userNm=this.userNm;
this.row.mdn=hp;
this.row.userEmail=email;
this.row.userStat=this.userStat;
return true;
},
// 모달 띄우기
ModalOpen(){
// 모달 오픈
var dimmed = document.getElementsByClassName('modal29');
for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'block';
}
this.formReset();
},
// 모달 끄기
ModalClose(){
var dimmed = document.getElementsByClassName('modal29');
for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'none';
}
},
// 저장 후 부모창 호출.
toComplete(){
this.getParent('memberList').$refs.table.reloadData();
this.ModalClose();
},
async doInsert(){
if(this.doValidate()){
console.log(this.row)
try {
const response = await custMgtApi.insertTestId(this.row);
const result = response.data;
if (result != null && result.retCode == "0000") {
this.toComplete();
}else if(result != null && result.retCode == "1009"){
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);
}
}
}, },
formReset(){ doValidate() {
if (this.isNull(this.userId)) {
this.row.title = '청약고객관리';
this.row.msg1 = '아이디를 입력해 주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._userId.focus();
return false;
}
// 청약 ID 길이 체크 6~16
var userIdlength = this.userId.length;
if (userIdlength < 6 || userIdlength > 16) {
this.row.title = '청약고객관리';
this.row.msg1 = 'ID 형식에 맞지 않습니다.';
this.row.msg2 = '확인하여 다시 등록 부탁 드립니다.';
this.row.focusTaget = '1';
this.$refs.commmonModal.alertModalOpen(this.row);
return false;
}
if (!this.doPwdValidate()) {
return false;
}
if (this.isNull(this.userNm)) {
this.row.title = '청약고객관리';
this.row.msg1 = '이름을 입력해 주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._userNm.focus();
return false;
}
if (this.isNull(this.mdn)) {
this.row.title = '청약고객관리';
this.row.msg1 = '휴대폰번호를 입력해주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._phone.focus();
return false;
}
const hp = this.mdn;
if (!this.isNull(hp) && !this.isMobile(hp)) {
this.row.title = '청약고객관리';
this.row.msg1 = '휴대폰 번호 형식이 잘못되었습니다. 확인해 주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._phone.focus();
return false;
}
if (this.isNull(this.email)) {
this.row.title = '청약고객관리';
this.row.msg1 = '이메일을 입력해주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._email.focus();
return false;
}
const email = this.email;
if (!this.isNull(email) && !lodash.isEqual(email, '@') && !this.emailCheck(email)) {
this.row.title = '청약고객관리';
this.row.msg1 = '이메일 형식이 잘못되었습니다. 확인해 주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._email.focus();
return false;
}
if (this.isNull(this.userStat)) {
this.row.title = '청약고객관리';
this.row.msg1 = '상태를 선택 해주세요.';
this.$refs.commmonModal.alertModalOpen(this.row);
// this.$refs._auth.focus();
return false;
}
this.row.userId = this.userId;
this.row.userNm = this.userNm;
this.row.mdn = hp;
this.row.userEmail = email;
this.row.userStat = this.userStat;
return true;
},
// 모달 띄우기
ModalOpen() {
// 모달 오픈
var dimmed = document.getElementsByClassName('modal29');
for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'block';
}
this.formReset();
},
// 모달 끄기
ModalClose() {
var dimmed = document.getElementsByClassName('modal29');
for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'none';
}
},
// 저장 후 부모창 호출.
toComplete() {
this.getParent('memberList').$refs.table.reloadData();
this.ModalClose();
},
async doInsert() {
if (this.doValidate()) {
console.log(this.row)
try {
const response = await custMgtApi.insertTestId(this.row);
const result = response.data;
if (result != null && result.retCode == "0000") {
this.toComplete();
} else if (result != null && result.retCode == "1009") {
this.row.title = '청약고객관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
} else if (result != null && result.retCode == "4018") {
this.row.title = '청약고객관리';
this.row.msg1 = '중복된 아이디 입니다.';
this.row.msg2 = '아이디를 다시 확인하여 등록 부탁드립니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
}
} catch (err) {
this.row.title = '청약고객관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
}
}
},
formReset() {
// this.$refs.adminRegForm.reset(); // this.$refs.adminRegForm.reset();
Object.assign(this.$data, this.$options.data()); Object.assign(this.$data, this.$options.data());
}, },
} }
} }
</script> </script>

View File

@@ -1,225 +1,249 @@
<template> <template>
<div class="contents"> <div class="contents">
<div class="contents_wrap"> <div class="contents_wrap">
<div class="top_wrap"> <div class="top_wrap">
<h3 class="title">청약고객관리</h3> <h3 class="title">청약고객관리</h3>
<p class="breadcrumb">고객관리 &gt; 청약고객관리 &gt; 회원관리</p> <p class="breadcrumb">고객관리 &gt; 청약고객관리 &gt; 회원관리</p>
</div> </div>
<div class="table table_form"> <div class="table table_form">
<form action="" <form action="" target="_blank" method="post" ref="form">
target="_blank" <input type="hidden" name="svcUserId" id="svcUserId" v-model="svcUserId" />
method="post" <input type="hidden" name="ezSvcUserAuthKey" id="ezSvcUserAuthKey" v-model="ezSvcUserAuthKey" />
ref="form">
<input type="hidden" name="svcUserId" id="svcUserId" v-model="svcUserId"/>
<input type="hidden" name="ezSvcUserAuthKey" id="ezSvcUserAuthKey" v-model="ezSvcUserAuthKey"/>
</form> </form>
<table> <table>
<colgroup> <colgroup>
<col style="width:140px"> <col style="width: 140px" />
<col style="width:auto"> <col style="width: auto" />
<col style="width:auto"> <col style="width: auto" />
<col style="width:140px"> <col style="width: 140px" />
<col style="width:auto"> <col style="width: auto" />
<col style="width:auto"> <col style="width: auto" />
</colgroup> </colgroup>
<tbody> <tbody>
<tr> <tr>
<th>이름</th> <th>이름</th>
<td colspan="2">{{userNm}}</td> <td colspan="2">{{ userNm }}</td>
</tr> </tr>
<tr> <tr>
<th>등록일</th> <th>등록일</th>
<td colspan="2">{{regDt}}</td> <td colspan="2">{{ regDt }}</td>
<th class="center">구분</th> <th class="center">구분</th>
<td colspan="2">{{userType}}</td> <td colspan="2">{{ userType }}</td>
</tr> </tr>
<tr> <tr>
<th>ID</th> <th>ID</th>
<td colspan="2"> <td colspan="2">
{{userId}} {{ userId }}
<button type="button" class="button grey btn-a" @click="homeLogin">로그인</button> <button type="button" class="button grey btn-a" @click="homeLogin">로그인</button>
</td> </td>
<th class="center">관리자명</th> <th class="center">관리자명</th>
<td colspan="2">{{adminId}} / {{adminNm}}</td> <td colspan="2">{{ adminId }} / {{ adminNm }}</td>
</tr> </tr>
<tr class="tr_input w30"> <tr class="tr_input w30">
<th>발송한도 설정</th> <th>발송한도 설정</th>
<td colspan="2" v-if="sendingLimit=='0'"> <td colspan="2" v-if="sendingLimit == '0'">
<input type="text" v-model="sendingLimit" ref="_sendingLimit" disabled> <input type="text" v-model="sendingLimit" ref="_sendingLimit" disabled />
</td> </td>
<td colspan="2" v-if="sendingLimit!='0'"> <td colspan="2" v-if="sendingLimit != '0'">
<input type="text" v-model.trim="sendingLimit" ref="_sendingLimit" @keypress="onlyNum" @input="onlyNum" maxlength="20"> <input
</td> type="text"
<th class="center">라인타입</th> v-model.trim="sendingLimit"
<td colspan="2"> ref="_sendingLimit"
<select name="" id="" v-model="lineType"> @keypress="onlyNum"
<option value="NORMAL">일반</option> @input="onlyNum"
<option value="BATCH">배치</option> maxlength="20"
<option value="REAL">실시간</option> />
</select> </td>
</td> <th class="center">라인타입</th>
</tr> <td colspan="2">
<tr class="w30"> <select name="" id="" v-model="lineType">
<th>ID 잠금</th> <option value="NORMAL">일반</option>
<td colspan="2"> <option value="BATCH">배치</option>
<input type="radio" name="userStat" value="01" id="right_radio1" v-model="userStat"> <option value="REAL">실시간</option>
<label for="right_radio1">사용</label> </select>
<input type="radio" name="userStat" value="02" id="right_radio2" v-model="userStat"> </td>
<label for="right_radio2">정지</label> </tr>
</td> <tr class="w30">
<th class="center">마지막 접속일</th> <th>ID 잠금</th>
<td colspan="2">{{lastLoginDt}}</td> <td colspan="2">
</tr> <input type="radio" name="userStat" value="01" id="right_radio1" v-model="userStat" />
<tr> <label for="right_radio1">사용</label>
<th>메모</th> <input type="radio" name="userStat" value="02" id="right_radio2" v-model="userStat" />
<td colspan="5"> <label for="right_radio2">정지</label>
<div class="input-memo"> </td>
<textarea class="memo_text" placeholder="메모 입력란입니다. 작성글은 저장 버튼으로 저장되고 마지막 저장 내용은 남아 있습니다" v-model="memo"></textarea> <th class="center">마지막 접속일</th>
<!-- <td colspan="2">{{ lastLoginDt }}</td>
</tr>
<tr>
<th>메모</th>
<td colspan="5">
<div class="input-memo">
<textarea
class="memo_text"
placeholder="메모 입력란입니다. 작성글은 저장 버튼으로 저장되고 마지막 저장 내용은 남아 있습니다"
v-model="memo"
></textarea>
<!--
<textarea class="memo_text" cols="160" rows="10" placeholder="메모 입력란입니다. 작성글은 저장 버튼으로 저장되고 마지막 저장 내용은 남아 있습니다" v-model="memo"></textarea> <textarea class="memo_text" cols="160" rows="10" placeholder="메모 입력란입니다. 작성글은 저장 버튼으로 저장되고 마지막 저장 내용은 남아 있습니다" v-model="memo"></textarea>
--> -->
<!-- <!--
textarea 구글 검색하셔서 태그 옵션 확인해보면 좋아요 textarea 구글 검색하셔서 태그 옵션 확인해보면 좋아요
<textarea name="" id="" cols="30" rows="10" placeholder="메모 입력란입니다. 작성글은 저장 버튼으로 저장되고 마지막 저장 내용은 남아 있습니다"></textarea> <textarea name="" id="" cols="30" rows="10" placeholder="메모 입력란입니다. 작성글은 저장 버튼으로 저장되고 마지막 저장 내용은 남아 있습니다"></textarea>
--> -->
<button type="button" class="button grey btn-a" @click="memoTotalPopOpen();">전체 메모보기</button> <button type="button" class="button grey btn-a" @click="memoTotalPopOpen()">전체 메모보기</button>
</div> </div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div>
</div> <div>
<div class="info">
<div> <div class="count">
<div class="info"> 사용자ID 정보
<div class="count">사용자ID 정보 <p>( 최대 100개까지 등록 가능 )</p>
<p>( 최대 100개까지 등록 가능 )</p> </div>
</div> <div class="button_group" v-show="isActive">
<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="memberInsertPopOpen();">사용자 ID 생성</button> <button type="button" class="button blue add" @click="excelPopOpen()">사용자 ID 대량생성</button>
<button type="button" class="button blue add" @click="excelPopOpen();">사용자 ID 대량생성</button> <button type="button" class="button white del" @click="deleteMember()">삭제</button>
<button type="button" class="button white del" @click="deleteMember();">삭제</button> </div>
</div> </div>
<div class="table">
</div> <table>
<div class="table"> <colgroup>
<table> <col width="10%" />
<colgroup> <col width="15%" />
<col width="10%"> <col width="15%" />
<col width="15%"> <col width="15%" />
<col width="15%"> <col width="15%" />
<col width="15%"> <col width="15%" />
<col width="15%"> <col width="15%" />
<col width="15%">
<col width="15%">
</colgroup> </colgroup>
<thead> <thead>
<tr> <tr>
<th><input type="checkbox" id="admin_check1" v-model="selectAll"><label for="admin_check1"></label></th> <th>
<th>NO</th> <input type="checkbox" id="admin_check1" v-model="selectAll" /><label for="admin_check1"></label>
<th>ID</th> </th>
<th>이름</th> <th>NO</th>
<th>휴대폰번호</th> <th>ID</th>
<th>상태</th> <th>이름</th>
<th>수정</th> <th>휴대폰번호</th>
</tr> <th>상태</th>
</thead> <th>수정</th>
<tbody> </tr>
<tr v-for="(option, i) in list" v-bind:key="i"> </thead>
<td><input type="checkbox" :id="'chk'+option.userId" v-model="selected" :value="option.userId"><label :for="'chk'+option.userId"></label></td> <tbody>
<td>{{ option.no }}</td> <tr v-for="(option, i) in list" v-bind:key="i">
<td>{{ option.userId }}</td> <td>
<td>{{ option.userNm }}</td> <input type="checkbox" :id="'chk' + option.userId" v-model="selected" :value="option.userId" /><label
<td>{{ option.mdn }}</td> :for="'chk' + option.userId"
<td> ></label>
<!-- <input type="checkbox" id="user_id_status01" name="user_id_status" v-model="option.userStat" true-value='정상' false-value='사용중지' :style="{cursor: 'default'}" disabled/> --> </td>
<input type="checkbox" id="user_id_status01" name="user_id_status" v-model="option.userStat" true-value='정상' false-value='사용중지' disabled/> <td>{{ option.no }}</td>
<label class="toggle_switch" for="user_id_status01"></label> <td>{{ option.userId }}</td>
</td> <td>{{ option.userNm }}</td>
<td v-if="isActive"><button type="button" class="button white btn-a" @click="memberUpdatePopOpen(option.userId);">수정</button></td> <td>{{ option.mdn }}</td>
<td>
<!-- <input type="checkbox" id="user_id_status01" name="user_id_status" v-model="option.userStat" true-value='정상' false-value='사용중지' :style="{cursor: 'default'}" disabled/> -->
<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 v-if="isActive">
<button type="button" class="button white btn-a" @click="memberUpdatePopOpen(option.userId)">
수정
</button>
</td>
<td v-else></td> <td v-else></td>
</tr> </tr>
<tr v-if="list.length === 0"> <tr v-if="list.length === 0">
<td colspan="7">등록된 사용자 정보가 없습니다.</td> <td colspan="7">등록된 사용자 정보가 없습니다.</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
<div class="pop-btn2"> <div class="pop-btn2">
<button class="btn-default" type="button" @click="toComplete();">취소</button> <button class="btn-default" type="button" @click="toComplete()">취소</button>
<button class="btn-pcolor" type="button" @click="updateAdminInfoTotal();">저장</button> <button class="btn-pcolor" type="button" @click="updateAdminInfoTotal()">저장</button>
</div> </div>
<member-bulk-reg-pop ref="memberBulkRegPop"> </member-bulk-reg-pop>
<member-bulk-reg-pop ref="memberBulkRegPop"> </member-bulk-reg-pop> <member-reg-pop ref="memberRegPop"> </member-reg-pop>
<member-reg-pop ref="memberRegPop"> </member-reg-pop> <member-modify-pop ref="memberModifyPop"> </member-modify-pop>
<member-modify-pop ref="memberModifyPop"> </member-modify-pop> <memo-total-pop ref="memoTatalListPop"> </memo-total-pop>
<memo-total-pop ref="memoTatalListPop"> </memo-total-pop>
<common-modal ref="commmonModal"></common-modal> <common-modal ref="commmonModal"></common-modal>
<validation-confirm-pop ref="validationConfirmPopModal"> </validation-confirm-pop> <validation-confirm-pop ref="validationConfirmPopModal"> </validation-confirm-pop>
</div> </div>
</div> </div>
</template> </template>
<style> <style>
.defaultCursor{ .defaultCursor {
cursor : default; cursor: default;
} }
</style> </style>
<script> <script>
import custMgtApi from "../service/custMgtApi.js"; import custMgtApi from '../service/custMgtApi.js';
import { utils_mixin, chkPattern2 } from '../service/mixins'; import { utils_mixin, chkPattern2 } from '../service/mixins';
import MemberBulkRegPop from '../components/MemberBulkRegPop'; import MemberBulkRegPop from '../components/MemberBulkRegPop';
import MemberRegPop from '../components/MemberRegPop'; import MemberRegPop from '../components/MemberRegPop';
import MemberModifyPop from '../components/MemberModifyPop'; import MemberModifyPop from '../components/MemberModifyPop';
import MemoTotalPop from '../components/MemoTotalPop'; import MemoTotalPop from '../components/MemoTotalPop';
import commonModal from "@/components/modal/commonModal"; import commonModal from '@/components/modal/commonModal';
import ValidationConfirmPop from "@/modules/custMgt/components/ValidationConfirmPop"; import ValidationConfirmPop from '@/modules/custMgt/components/ValidationConfirmPop';
export default { export default {
name: 'memberAdminDetail', name: 'memberAdminDetail',
mixins: [utils_mixin, chkPattern2], mixins: [utils_mixin, chkPattern2],
watch:{ watch: {
stat(){ stat() {
console.log('watch : ', this.stat) console.log('watch : ', this.stat);
} },
}, },
data() { data() {
return { return {
row:{}, row: {},
list:[], list: [],
totalItems: 0, totalItems: 0,
isView: 1, isView: 1,
userNm:'', userNm: '',
regDt: '', regDt: '',
userType: '', userType: '',
userId: '', userId: '',
adminId:'', adminId: '',
adminNm: '', adminNm: '',
sendingLimit: '', sendingLimit: '',
lineType: '', lineType: '',
userStat: '', userStat: '',
lastLoginDt: '', lastLoginDt: '',
memo: '', memo: '',
mdn : '', mdn: '',
email: '', email: '',
userTotalCnt:0, userTotalCnt: 0,
selected: [], selected: [],
svcUserId:'', svcUserId: '',
ezSvcUserAuthKey:'', ezSvcUserAuthKey: '',
isActive:true, isActive: true,
//applyTbStyle: 'cursor: default;', //applyTbStyle: 'cursor: default;',
} };
}, },
props: { props: {
serviceId: { serviceId: {
type: String, type: String,
default: "", default: '',
}, },
}, },
components: { components: {
MemberBulkRegPop, MemberBulkRegPop,
MemberRegPop, MemberRegPop,
@@ -228,27 +252,25 @@ export default {
commonModal, commonModal,
ValidationConfirmPop, ValidationConfirmPop,
}, },
created(){ created() {
this.memberDetail(this.$route.params.serviceId); this.memberDetail(this.$route.params.serviceId);
}, },
destroyed() { destroyed() {
this.$store.commit('searchcondition/updateSearchCondition', { this.$store.commit('searchcondition/updateSearchCondition', {
page: 1, page: 1,
perPage: 50, perPage: 50,
params: { params: {
searchType1: '', searchType1: '',
searchType2: '', searchType2: '',
searchText1: ''} searchText1: '',
}); },
});
}, },
mounted() { mounted() {},
computed: {
}, selectAll: {
computed:{
selectAll: {
get() { get() {
return this.list ? (this.selected ? (this.selected.length === this.list.length) : false) : false; return this.list ? (this.selected ? this.selected.length === this.list.length : false) : false;
}, },
set(value) { set(value) {
const selected = []; const selected = [];
@@ -265,19 +287,19 @@ export default {
}, },
}, },
methods: { methods: {
valAlert(props){ valAlert(props) {
//alert("호출됨!"); //alert("호출됨!");
this.$refs.commmonModal.alertModalOpen(props); this.$refs.commmonModal.alertModalOpen(props);
}, },
valConfirm(props){ valConfirm(props) {
this.$refs.commmonModal.confirmModalOpen(props); this.$refs.commmonModal.confirmModalOpen(props);
}, },
async memberDetail(serviceId){ async memberDetail(serviceId) {
this.row.userId = serviceId; this.row.userId = serviceId;
try { try {
const response = await custMgtApi.memberAdminDetail(this.row); const response = await custMgtApi.memberAdminDetail(this.row);
const result = response.data; const result = response.data;
if (result != null && result.retCode == "0000") { if (result != null && result.retCode == '0000') {
this.formReset(); this.formReset();
this.userNm = result.data.userNm; this.userNm = result.data.userNm;
this.userId = result.data.userId; this.userId = result.data.userId;
@@ -289,7 +311,7 @@ export default {
this.sendingLimit = result.data.sendingLimit; this.sendingLimit = result.data.sendingLimit;
this.lineType = result.data.lineType; this.lineType = result.data.lineType;
this.userStat = result.data.userStat; this.userStat = result.data.userStat;
if(this.userStat === '02'){ if (this.userStat === '02') {
this.isActive = false; this.isActive = false;
} }
this.lastLoginDt = result.data.lastLoginDt; this.lastLoginDt = result.data.lastLoginDt;
@@ -298,7 +320,7 @@ export default {
this.email = result.data.email; this.email = result.data.email;
this.list = result.data.list; this.list = result.data.list;
this.userTotalCnt = result.data.list.length; this.userTotalCnt = result.data.list.length;
console.log('userTotalCnt:'+result.data.list.length); console.log('userTotalCnt:' + result.data.list.length);
this.totalItems = result.data.paging.totalCnt; this.totalItems = result.data.paging.totalCnt;
} }
} catch (error) { } catch (error) {
@@ -307,10 +329,9 @@ export default {
this.row.msg1 = '실패 하였습니다.'; this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row); this.$refs.commmonModal.alertModalOpen(this.row);
} }
}, },
async updateAdminInfoTotal(){ async updateAdminInfoTotal() {
this.row = {} this.row = {};
this.row.userId = this.adminId; this.row.userId = this.adminId;
this.row.sendingLimit = this.sendingLimit; this.row.sendingLimit = this.sendingLimit;
this.row.lineType = this.lineType; this.row.lineType = this.lineType;
@@ -321,19 +342,18 @@ export default {
try { try {
const response = await custMgtApi.updateAdminInfoTotal(this.row); const response = await custMgtApi.updateAdminInfoTotal(this.row);
console.log(response) console.log(response);
const result = response.data; const result = response.data;
if (result != null && result.retCode == "0000") { if (result != null && result.retCode == '0000') {
this.row.title = '청약고객관리'; this.row.title = '청약고객관리';
this.row.msg1 = '저장 하였습니다.'; this.row.msg1 = '저장 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row); this.$refs.commmonModal.alertModalOpen(this.row);
this.memberDetail(this.row.userId); this.memberDetail(this.row.userId);
}else if(result != null && result.retCode == "4019"){ } else if (result != null && result.retCode == '4019') {
this.row.title = '청약고객관리'; this.row.title = '청약고객관리';
this.row.msg1 = '발송한도금액이 정액한도금액보다 작습니다.'; this.row.msg1 = '발송한도금액이 정액한도금액보다 작습니다.';
this.$refs.commmonModal.alertModalOpen(this.row); this.$refs.commmonModal.alertModalOpen(this.row);
}else { } else {
this.row.title = '청약고객관리'; this.row.title = '청약고객관리';
this.row.msg1 = '실패 하였습니다.'; this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row); this.$refs.commmonModal.alertModalOpen(this.row);
@@ -344,30 +364,29 @@ export default {
this.row.msg1 = '실패 하였습니다.'; this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row); this.$refs.commmonModal.alertModalOpen(this.row);
} }
}, },
// 저장 후 부모창 호출. // 저장 후 부모창 호출.
toComplete(){ toComplete() {
this.$router.push({ name: 'memberList', params: this.row }); this.$router.push({ name: 'memberList', params: this.row });
}, },
excelPopOpen() { excelPopOpen() {
console.log("memberInsertPopOpen >> " + this.userTotalCnt) console.log('memberInsertPopOpen >> ' + this.userTotalCnt);
if(this.userTotalCnt >= 100){ if (this.userTotalCnt >= 100) {
// 사용자등록제한_최대100개까지 // 사용자등록제한_최대100개까지
this.$refs.validationConfirmPopModal.validationMaxlimitOpen(); this.$refs.validationConfirmPopModal.validationMaxlimitOpen();
return false; return false;
} }
console.log(this.adminId); console.log(this.adminId);
this.$refs.memberBulkRegPop.excelPopOpen(this.adminId, this.totalItems); this.$refs.memberBulkRegPop.excelPopOpen(this.adminId, this.totalItems);
}, },
memberUpdatePopOpen(target) { memberUpdatePopOpen(target) {
this.row.userId = target; this.row.userId = target;
this.row.adminId = this.adminId; this.row.adminId = this.adminId;
this.$refs.memberModifyPop.memberUpdateModalOpen(this.row); this.$refs.memberModifyPop.memberUpdateModalOpen(this.row);
}, },
memberInsertPopOpen() { memberInsertPopOpen() {
console.log("memberInsertPopOpen >> " + this.userTotalCnt) console.log('memberInsertPopOpen >> ' + this.userTotalCnt);
if(this.userTotalCnt >= 100){ if (this.userTotalCnt >= 100) {
// 사용자등록제한_최대100개까지 // 사용자등록제한_최대100개까지
this.$refs.validationConfirmPopModal.validationMaxlimitOpen(); this.$refs.validationConfirmPopModal.validationMaxlimitOpen();
return false; return false;
@@ -376,87 +395,85 @@ export default {
this.row.userTotalCnt = this.userTotalCnt; this.row.userTotalCnt = this.userTotalCnt;
this.$refs.memberRegPop.memberInsertModalOpen(this.row); this.$refs.memberRegPop.memberInsertModalOpen(this.row);
}, },
memoTotalPopOpen(){ memoTotalPopOpen() {
this.row.adminId = this.adminId; this.row.adminId = this.adminId;
this.$refs.memoTatalListPop.memoTotalModalOpen(this.row); this.$refs.memoTatalListPop.memoTotalModalOpen(this.row);
}, },
deleteMember() { deleteMember() {
console.log('delete count:'+this.selected.length); console.log('delete count:' + this.selected.length);
if(this.selected.length === 0){ if (this.selected.length === 0) {
this.row.title = '청약고객관리'; this.row.title = '청약고객관리';
this.row.msg1 = '삭제대상을 체크해주세요.'; this.row.msg1 = '삭제대상을 체크해주세요.';
this.$refs.commmonModal.alertModalOpen(this.row); this.$refs.commmonModal.alertModalOpen(this.row);
return false; return false;
} }
this.row.title ='청약고객관리'; this.row.title = '청약고객관리';
this.row.msg1 ='삭제 하시겠습니까?' this.row.msg1 = '삭제 하시겠습니까?';
this.$refs.commmonModal.confirmModalOpen2(this.row); this.$refs.commmonModal.confirmModalOpen2(this.row);
}, },
async memberDelete(){ async memberDelete() {
var serviceId = this.adminId; var serviceId = this.adminId;
this.row.list = this.selected.map((row)=>({userId:row})); this.row.list = this.selected.map((row) => ({ userId: row }));
this.row.adminId = this.adminId; this.row.adminId = this.adminId;
console.log(this.row); console.log(this.row);
try { try {
let response = await custMgtApi.deleteUser(this.row); let response = await custMgtApi.deleteUser(this.row);
const result = response.data; const result = response.data;
if (result != null && result.retCode == "0000") { if (result != null && result.retCode == '0000') {
this.memberDetail(serviceId); this.memberDetail(serviceId);
}else{ } else {
this.row={} this.row = {};
this.row.title = '청약고객관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
}
} catch (error) {
console.log(error);
this.row={}
this.row.title = '청약고객관리'; this.row.title = '청약고객관리';
this.row.msg1 = '실패 하였습니다.'; this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row); this.$refs.commmonModal.alertModalOpen(this.row);
} }
} catch (error) {
console.log(error);
this.row = {};
this.row.title = '청약고객관리';
this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
}
}, },
setAuthData() { setAuthData() {
// 권한 옵션. // 권한 옵션.
api.commAuth().then(response => { api.commAuth().then((response) => {
this.authType = response.data.data.list; this.authType = response.data.data.list;
}); });
}, },
formReset(){ formReset() {
Object.assign(this.$data, this.$options.data()); Object.assign(this.$data, this.$options.data());
}, },
homeLogin(){ homeLogin() {
console.log(process.env.VUE_APP_HOME_PAGE_URL) console.log(process.env.VUE_APP_HOME_PAGE_URL);
console.log(process.env.VUE_APP_AUTHKEY) console.log(process.env.VUE_APP_AUTHKEY);
this.$refs.form.action = process.env.VUE_APP_HOME_PAGE_URL this.$refs.form.action = process.env.VUE_APP_HOME_PAGE_URL;
this.svcUserId = this.userId this.svcUserId = this.userId;
this.ezSvcUserAuthKey = process.env.VUE_APP_AUTHKEY this.ezSvcUserAuthKey = process.env.VUE_APP_AUTHKEY;
this.$refs.form.submit() this.$refs.form.submit();
}, },
confirmCalbackFnc(props){ confirmCalbackFnc(props) {
console.log(props) console.log(props);
if(props.result){ if (props.result) {
this.memberDelete(); this.memberDelete();
} }
}, },
// 대량 등록후 확인 처리 // 대량 등록후 확인 처리
failFileuploadOk(){ failFileuploadOk() {
// 대량등록 팝업 닫기 // 대량등록 팝업 닫기
this.$refs.memberBulkRegPop.excelPopClose(); this.$refs.memberBulkRegPop.excelPopClose();
// reroad // reroad
this.memberDetail(this.$route.params.serviceId); this.memberDetail(this.$route.params.serviceId);
} },
,successFileuploadOk(){ successFileuploadOk() {
// 대량등록 팝업 닫기 // 대량등록 팝업 닫기
this.$refs.memberBulkRegPop.excelPopClose(); this.$refs.memberBulkRegPop.excelPopClose();
// reroad // reroad
this.memberDetail(this.$route.params.serviceId); this.memberDetail(this.$route.params.serviceId);
} },
}, },
}; };
import '../../../assets/css/checktoggle.css'; import '../../../assets/css/checktoggle.css';
</script> </script>

View File

@@ -54,7 +54,8 @@
</tr> </tr>
<tr> <tr>
<th>메모</th> <th>메모</th>
<td class="sender"><textarea class="memo_text" v-model.trim="memo" ref="memo"></textarea></td> <td class="sender"><textarea class="memo_text" v-model.trim="memo" ref="memo" maxlength="2000"
@input="memoLimitByte()"></textarea></td>
</tr> </tr>
<tr> <tr>
<th>차단여부</th> <th>차단여부</th>
@@ -106,6 +107,7 @@ export default {
memo: '', // 메모 memo: '', // 메모
seqNo: '', seqNo: '',
props: {}, props: {},
maxByte: 2000,
} }
}, },
created() { created() {
@@ -323,6 +325,9 @@ export default {
} }
return validText return validText
}, },
memoLimitByte() {
this.memo = this.getLimitedByteText(this.memo, this.maxByte);
},
msgLimitByte(){ msgLimitByte(){
this.word = this.getLimitedByteText(this.word, 10); this.word = this.getLimitedByteText(this.word, 10);
} }

View File

@@ -338,7 +338,11 @@ export default {
}, },
todayDate() { todayDate() {
this.startDate = new Date(+new Date() + 3240 * 10000).toISOString().split("T")[0]; this.startDate = new Date(+new Date() + 3240 * 10000).toISOString().split("T")[0];
} },
changePerPage: function () { // 페이지당 조회할 개수
this.grid.pagePerRows = this.perPageCnt;
// this.search(true);
},
}, },
beforeRouteLeave(to, from, next) { beforeRouteLeave(to, from, next) {

View File

@@ -200,7 +200,6 @@ export default {
}, },
changePerPage: function () { // 페이지당 조회할 개수 changePerPage: function () { // 페이지당 조회할 개수
this.grid.pagePerRows = this.perPageCnt; this.grid.pagePerRows = this.perPageCnt;
this.search(true);
}, },
sendStoreData: function () { sendStoreData: function () {
const getP = this.$refs.table.getPagination(); const getP = this.$refs.table.getPagination();

View File

@@ -254,7 +254,6 @@ export default {
// 위임-수임 // 위임-수임
readTrustFile(event) { readTrustFile(event) {
const file = event.target.files[0]; const file = event.target.files[0];
console.log(file.name);
if(this.fileExtCheck(file)) { if(this.fileExtCheck(file)) {
if (file != null) { if (file != null) {
@@ -492,9 +491,10 @@ export default {
// 사업자 // 사업자
const response = await sendNumMgtApi.insertNumber1(this.tenureFile, this.businessFile, this.communicationFile, this.adminId, this.custNm, this.bRegNo, this.nmineeDivCd, this.saveSendNums, this.bizrAuthYn, this.custSeq, this.bRegNo) const response = await sendNumMgtApi.insertNumber1(this.tenureFile, this.businessFile, this.communicationFile, this.adminId, this.custNm, this.bRegNo, this.nmineeDivCd, this.saveSendNums, this.bizrAuthYn, this.custSeq, this.bRegNo)
const result = response.data; const result = response.data;
console.log(result)
if (result != null && result.retCode == "0000") { if (result != null && result.retCode == "0000") {
if(result.data.list.length > 0){ alert(499);
if(result.data.list != null && result.data.list.length > 0){
this.row.title = '발신번호 등록'; this.row.title = '발신번호 등록';
var failMsg = ""; var failMsg = "";
for(var i=0; i<result.data.list.length; i++){ for(var i=0; i<result.data.list.length; i++){
@@ -505,7 +505,7 @@ export default {
} }
this.toComplete() this.toComplete()
}else if(result != null && result.retCode == "4021") { }else if(result != null && result.retCode == "4021") {
if(result.data.list.length > 0){ if(result.data.list != null && result.data.list.length > 0){
this.row.title = '발신번호 등록'; this.row.title = '발신번호 등록';
var failMsg = ""; var failMsg = "";
for(var i=0; i<result.data.list.length; i++){ for(var i=0; i<result.data.list.length; i++){
@@ -518,29 +518,33 @@ export default {
} }
} else if (this.nmineeDivCd === '02') { } else if (this.nmineeDivCd === '02') {
const response = await sendNumMgtApi.insertNumber2(this.trustFile, this.warrantFile, this.deputyFile, this.tenureFile, this.otherBusinessFile, this.businessFile, this.adminId, this.custNm, this.bRegNo, this.nmineeDivCd, this.saveSendNums, this.bizrAuthYn, this.custSeq, this.bRegNo) const response = await sendNumMgtApi.insertNumber2(this.trustFile, this.communicationFile, this.warrantFile, this.deputyFile, this.tenureFile, this.otherBusinessFile, this.businessFile, this.adminId, this.custNm, this.bRegNo, this.nmineeDivCd, this.saveSendNums, this.bizrAuthYn, this.custSeq, this.bRegNo)
const result = response.data; const result = response.data;
console.log(result)
if (result != null && result.retCode == "0000") { if (result != null && result.retCode == "0000") {
if(result.data.list.length > 0){ if(result.data.list != null){
this.row.title = '발신번호 등록'; if(result.data.list.length > 0){
var failMsg = ""; this.row.title = '발신번호 등록';
for(var i=0; i<result.data.list.length; i++){ var failMsg = "";
failMsg += "[" + (i+1) + "] " + result.data.list[i].sendNum + "<br>" for(var i=0; i<result.data.list.length; i++){
failMsg += "[" + (i+1) + "] " + result.data.list[i].sendNum + "<br>"
}
this.row.failMsg = failMsg
this.$parent.$refs.commmonModal.sendNumFailMsgOpen(this.row);
} }
this.row.failMsg = failMsg
this.$parent.$refs.commmonModal.sendNumFailMsgOpen(this.row);
} }
this.toComplete() this.toComplete()
}else if(result != null && result.retCode == "4021") { }else if(result != null && result.retCode == "4021") {
if(result.data.list.length > 0){ if(result.data.list != null){
this.row.title = '발신번호 등록'; if(result.data.list.length > 0){
var failMsg = ""; this.row.title = '발신번호 등록';
for(var i=0; i<result.data.list.length; i++){ var failMsg = "";
failMsg += "[" + (i+1) + "] " + result.data.list[i].sendNum + "<br>" for(var i=0; i<result.data.list.length; i++){
failMsg += "[" + (i+1) + "] " + result.data.list[i].sendNum + "<br>"
}
this.row.failMsg = failMsg
this.$parent.$refs.commmonModal.sendNumFailMsgOpen(this.row);
} }
this.row.failMsg = failMsg
this.$parent.$refs.commmonModal.sendNumFailMsgOpen(this.row);
} }
return false; return false;
} }
@@ -549,9 +553,9 @@ export default {
} else { } else {
const response = await sendNumMgtApi.insertNumber(this.adminId, this.custNm, this.bRegNo, this.nmineeDivCd, this.saveSendNums, this.bizrAuthYn, this.custSeq, this.bRegNo) const response = await sendNumMgtApi.insertNumber(this.adminId, this.custNm, this.bRegNo, this.nmineeDivCd, this.saveSendNums, this.bizrAuthYn, this.custSeq, this.bRegNo)
const result = response.data; const result = response.data;
console.log(result)
if (result != null && result.retCode == "0000") { if (result != null && result.retCode == "0000") {
if(result.data.list.length > 0){ alert(562);
if(result.data.list != null && result.data.list.length > 0){
this.row.title = '발신번호 등록'; this.row.title = '발신번호 등록';
var failMsg = ""; var failMsg = "";
for(var i=0; i<result.data.list.length; i++){ for(var i=0; i<result.data.list.length; i++){

View File

@@ -74,7 +74,7 @@ const insertNumber1 = (tenureFile, businessFile, communicationFile, adminId, cus
}; };
// 타사업자가 등록 요청. // 타사업자가 등록 요청.
const insertNumber2 = (trustFile, warrantFile, deputyFile, tenureFile, otherBusinessFile, businessFile, adminId, custNm, bRegNo, nmineeDivCd, numberInputs, bizrAuthYn, custSeq) => { const insertNumber2 = (trustFile, warrantFile, communicationFile, deputyFile, tenureFile, otherBusinessFile, businessFile, adminId, custNm, bRegNo, nmineeDivCd, numberInputs, bizrAuthYn, custSeq) => {
let formData = new FormData(); let formData = new FormData();
formData.append("trustFile", trustFile); formData.append("trustFile", trustFile);
formData.append("warrantFile", warrantFile); formData.append("warrantFile", warrantFile);
@@ -82,6 +82,7 @@ const insertNumber2 = (trustFile, warrantFile, deputyFile, tenureFile, otherBusi
formData.append("tenureFile", tenureFile); formData.append("tenureFile", tenureFile);
formData.append("businessFile", businessFile); formData.append("businessFile", businessFile);
formData.append("otherBusinessFile", otherBusinessFile); formData.append("otherBusinessFile", otherBusinessFile);
formData.append("communicationFile", communicationFile);
const row = {} const row = {}
row.adminId = adminId row.adminId = adminId

View File

@@ -28,7 +28,7 @@
<div class="input_box id"> <div class="input_box id">
<label for="search" class="label">검색어</label> <label for="search" class="label">검색어</label>
<input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model.trim="grid.params.searchText1" <input class="search-box" type="text" id="search" placeholder="검색어 입력" v-model.trim="grid.params.searchText1"
maxlength="100" @keyup="search"/> maxlength="100" @keyup.enter="search"/>
</div> </div>
<button type="button" class="button grey" @click="search">조회</button> <button type="button" class="button grey" @click="search">조회</button>
</div> </div>

View File

@@ -1,9 +1,9 @@
<template> <template>
<div> <div>
<div class="dimmed modal21" @click="adminDetailModalClose();"></div> <div class="dimmed modal21" @click="adminDetailModalClose();"></div>
<div class="popup-wrap modal21"> <div class="popup-wrap modal21">
<!-- 관리자/유치채널 상세정보 --> <!-- 관리자/유치채널 상세정보 -->
<div class="popup modal21 popup_form"> <div class="popup modal21 popup_form">
<div class="pop-head"> <div class="pop-head">
<h3 class="pop-tit">관리자 상세정보</h3> <h3 class="pop-tit">관리자 상세정보</h3>
@@ -11,56 +11,58 @@
<form autocomplete="off"> <form autocomplete="off">
<table> <table>
<tbody> <tbody>
<tr> <tr>
<th>ID</th> <th>ID</th>
<td><input type="text" disabled v-model.trim="madangId" ref="_madangId2"></td> <td><input type="text" disabled v-model.trim="madangId" ref="_madangId2"></td>
</tr> </tr>
<tr> <tr>
<th>비밀번호</th> <th>비밀번호</th>
<td><input type="password" @keypress="onlyPassword" @input="onlyPassword" required minlength="8" maxlength="16" ref="_pwd1" v-model.trim="userPwd1"></td> <td><input type="password" @keypress="onlyPassword" @input="onlyPassword" required minlength="8"
</tr> maxlength="16" ref="_pwd1" v-model.trim="userPwd1"></td>
<tr> </tr>
<th>비밀번호 확인</th> <tr>
<td><input type="password" @keypress="onlyPassword" @input="onlyPassword" required minlength="8" maxlength="16" ref="_pwd2" v-model.trim="userPwd2"></td> <th>비밀번호 확인</th>
</tr> <td><input type="password" @keypress="onlyPassword" @input="onlyPassword" required minlength="8"
<tr> maxlength="16" ref="_pwd2" v-model.trim="userPwd2"></td>
<th>이름</th> </tr>
<td><input type="text" disabled v-model.trim="userNm" ref="_userNm"></td> <tr>
</tr> <th>이름</th>
<tr> <td><input type="text" disabled v-model.trim="userNm" ref="_userNm"></td>
<th>휴대폰번호</th> </tr>
<td><input type="number" disabled v-model.trim="mdn" ref="_phone"></td> <tr>
</tr> <th>휴대폰번호</th>
<tr> <td><input type="number" disabled v-model.trim="mdn" ref="_phone"></td>
<th>이메일</th> </tr>
<td><input type="email" disabled v-model.trim="email" ref="_email"></td> <tr>
</tr> <th>이메일</th>
<tr> <td><input type="email" disabled v-model.trim="email" ref="_email"></td>
<th>권한</th> </tr>
<td> <tr>
<div v:class="select_box"> <th>권한</th>
<select name="" id="right" v-model="auth" ref="_auth"> <td>
<option value="">선택</option> <div v:class="select_box">
<option <select name="" id="right" v-model="auth" ref="_auth">
<option value="">선택</option>
<option
v-for="(option, i) in authType" v-for="(option, i) in authType"
v-bind:value="option.autCd" v-bind:value="option.autCd"
v-bind:key="i" v-bind:key="i"
:selected="auth === option.autCd"> :selected="auth === option.autCd">
{{ option.autNm }} {{ option.autNm }}
</option> </option>
</select> </select>
</div> </div>
</td> </td>
</tr> </tr>
<tr> <tr>
<th class="center">상태</th> <th class="center">상태</th>
<td> <td>
<input type="radio" name="state" value="01" id="detail_popup_radio1" v-model="stat"> <input type="radio" name="state" value="01" id="detail_popup_radio1" v-model="stat">
<label for="detail_popup_radio1">사용</label> <label for="detail_popup_radio1">사용</label>
<input type="radio" name="state" value="02" id="detail_popup_radio2" v-model="stat"> <input type="radio" name="state" value="02" id="detail_popup_radio2" v-model="stat">
<label for="detail_popup_radio2">정지</label> <label for="detail_popup_radio2">정지</label>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</form> </form>
@@ -69,187 +71,188 @@
<button class="btn-default" @click="adminDetailModalClose();">취소</button> <button class="btn-default" @click="adminDetailModalClose();">취소</button>
</div> </div>
</div> </div>
<!-- 관리자 상세정보 팝업 --> <!-- 관리자 상세정보 팝업 -->
</div> </div>
<!-- <common-modal ref="commmonModal"></common-modal>--> <!-- <common-modal ref="commmonModal"></common-modal>-->
</div> </div>
</template> </template>
<script> <script>
import api from '@/service/api'; import api from '@/service/api';
import sysMgtApi from "../service/sysMgtApi.js"; import sysMgtApi from "../service/sysMgtApi.js";
import { utils_mixin, chkPattern2 } from '../service/mixins'; import {utils_mixin, chkPattern2} from '../service/mixins';
import lodash from "lodash"; import lodash from "lodash";
// import commonModal from "../components/commonModal"; // import commonModal from "../components/commonModal";
import SearchIdPopup from "@/modules/sysMgt/components/SearchIdPopup"; import SearchIdPopup from "@/modules/sysMgt/components/SearchIdPopup";
export default { export default {
name: "adminDetailPop", name: "adminDetailPop",
mixins: [utils_mixin, chkPattern2], mixins: [utils_mixin, chkPattern2],
watch:{ watch: {
stat(){ stat() {
console.log('watch : ', this.stat) console.log('watch : ', this.stat)
} }
}, },
data(){ data() {
return{ return {
row: {}, row: {},
authType: [], authType: [],
madangId:'', madangId: '',
name:'', name: '',
mdn:'', mdn: '',
email:'', email: '',
auth:'', auth: '',
stat: "", stat: "",
userNm:"", userNm: "",
userPwd1:"", userPwd1: "",
userPwd2:"", userPwd2: "",
code:"", code: "",
} }
}, },
model: { model: {
prop: 'sendData', prop: 'sendData',
event: 'event-data' event: 'event-data'
}, },
props: ['sendData'], props: ['sendData'],
created(){ created() {
//this.formReset(); //this.formReset();
this.setAuthData(); this.setAuthData();
this.formReset(); this.formReset();
}, },
components: { components: {
// commonModal, // commonModal,
}, },
methods :{ methods: {
doPwdValidate(){ doPwdValidate() {
if(this.isNull(this.userPwd2)){ if (this.isNull(this.userPwd2)) {
// alert("비밀번호 확인을 입력해 주세요."); // alert("비밀번호 확인을 입력해 주세요.");
this.row.title = '관리자/유치채널 관리'; this.row.title = '관리자/유치채널 관리';
this.row.msg1 = '비밀번호를 입력해 주세요.'; this.row.msg1 = '비밀번호를 입력해 주세요.';
this.$parent.$refs.commmonModal.alertModalOpen(this.row); this.$parent.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._pwd2.focus(); this.$refs._pwd2.focus();
return false; return false;
} }
if(!lodash.isEqual(this.userPwd1, this.userPwd2)){ if (!lodash.isEqual(this.userPwd1, this.userPwd2)) {
// alert("비밀번호가 일치하지 않습니다."); // alert("비밀번호가 일치하지 않습니다.");
this.row.title = '관리자/유치채널 관리'; this.row.title = '관리자/유치채널 관리';
this.row.msg1 = '비밀번호가 일치하지 않습니다.'; this.row.msg1 = '비밀번호가 일치하지 않습니다.';
this.$parent.$refs.commmonModal.alertModalOpen(this.row); this.$parent.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._pwd2.focus(); this.$refs._pwd2.focus();
return false; return false;
} }
const pwdLen = this.bytes(this.userPwd1); const pwdLen = this.bytes(this.userPwd1);
if(!(pwdLen >= 8 && pwdLen <= 16)){ if (!(pwdLen >= 8 && pwdLen <= 16)) {
// alert("비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다."); // alert("비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.");
this.row.title = '관리자/유치채널 관리'; this.row.title = '관리자/유치채널 관리';
this.row.msg1 = '비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.'; this.row.msg1 = '비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.';
this.$parent.$refs.commmonModal.alertModalOpen(this.row); this.$parent.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._pwd1.focus(); this.$refs._pwd1.focus();
return false; return false;
} }
const pEng = /[A-Za-z]/g; // 영문자 const pEng = /[A-Za-z]/g; // 영문자
const pNum = /[0-9]/g; // 숫자 const pNum = /[0-9]/g; // 숫자
const pSpc = /[!@$%^&*]/g; // 특수문자 const pSpc = /[!@$%^&*]/g; // 특수문자
if(!(pEng.test(this.userPwd1) && pNum.test(this.userPwd1) && pSpc.test(this.userPwd1))) { if (!(pEng.test(this.userPwd1) && pNum.test(this.userPwd1) && pSpc.test(this.userPwd1))) {
// alert("비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다."); // alert("비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.");
this.row.title = '관리자/유치채널 관리'; this.row.title = '관리자/유치채널 관리';
this.row.msg1 = '비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.'; this.row.msg1 = '비밀번호는 8~16자의 영문, 숫자, 특수문자(!,@, $, %, ^, &, *) 조합이 필요합니다.';
this.$parent.$refs.commmonModal.alertModalOpen(this.row); this.$parent.$refs.commmonModal.alertModalOpen(this.row);
this.$refs._pwd1.focus(); this.$refs._pwd1.focus();
return false; return false;
} }
this.row.adminPw=this.userPwd1; this.row.adminPw = this.userPwd1;
return true; return true;
}, },
doValidate(){ doValidate() {
if(!this.isNull(this.userPwd1)){ if (!this.isNull(this.userPwd1)) {
if(!this.doPwdValidate()){ if (!this.doPwdValidate()) {
return false; return false;
} }
} }
if(!this.isNull(this.auth)){ if (!this.isNull(this.auth)) {
if(this.code == ''){ if (this.code == '') {
this.row.auth = this.auth; this.row.auth = this.auth;
}else{ } else {
this.row.auth=this.auth; this.row.auth = this.auth;
} }
} }
if(!this.isNull(this.stat)){ if (!this.isNull(this.stat)) {
this.row.stat=this.stat; this.row.stat = this.stat;
} }
this.row.adminId=this.madangId; this.row.adminId = this.madangId;
return true; return true;
}, },
// 모달 띄우기 // 모달 띄우기
async adminDetailModalOpen(props){ async adminDetailModalOpen(props) {
this.formReset(); this.formReset();
this.setAuthData(); this.setAuthData();
this.row.adminId = props.adminId; this.row.adminId = props.adminId;
try { try {
const response = await sysMgtApi.adminDetail(this.row); const response = await sysMgtApi.adminDetail(this.row);
const result = response.data; const result = response.data;
console.log(result); console.log(result);
if (result != null && result.retCode == "0000") { if (result != null && result.retCode == "0000") {
this.madangId = result.data.adminId; this.madangId = result.data.adminId;
this.auth = result.data.auth; this.auth = result.data.auth;
this.userNm = result.data.name; this.userNm = result.data.name;
this.email = result.data.email; this.email = result.data.email;
this.mdn = result.data.mdn; this.mdn = result.data.mdn;
this.stat = result.data.stat; this.stat = result.data.stat;
} }
} catch(err) { } catch (err) {
// alert("실패 하였습니다."); // alert("실패 하였습니다.");
this.row.title = '관리자/유치채널 관리'; this.row.title = '관리자/유치채널 관리';
this.row.msg1 = '실패 하였습니다.'; this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row); this.$parent.$refs.commmonModal.alertModalOpen(this.row);
} }
var dimmed = document.getElementsByClassName('modal21'); var dimmed = document.getElementsByClassName('modal21');
for(var i = 0; i < dimmed.length; i++){ for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'block'; dimmed[i].style.display = 'block';
} }
}, },
// 모달 끄기 // 모달 끄기
adminDetailModalClose(){ adminDetailModalClose() {
//this.formReset(); //this.formReset();
var dimmed = document.getElementsByClassName('modal21'); var dimmed = document.getElementsByClassName('modal21');
for(var i = 0; i < dimmed.length; i++){ for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'none'; dimmed[i].style.display = 'none';
} }
}, },
toComplete(){ toComplete() {
this.getParent('adminList').$refs.table.reloadData(); this.getParent('adminList').$refs.table.reloadData();
this.adminDetailModalClose(); this.adminDetailModalClose();
}, },
async doInsert(){ async doInsert() {
if(this.doValidate() && window.confirm('등록 하시겠습니까?')){
if (this.doValidate()) {
try { try {
const response = await sysMgtApi.updateAdmin(this.row); const response = await sysMgtApi.updateAdmin(this.row);
const result = response.data; const result = response.data;
if (result != null && result.retCode == "0000") { if (result != null && result.retCode == "0000") {
// alert('저장 하였습니다.'); // alert('저장 하였습니다.');
this.toComplete(); this.toComplete();
} }
} catch(err) { } catch (err) {
alert("실패 하였습니다."); alert("실패 하였습니다.");
this.row.title = '관리자/유치채널 관리'; this.row.title = '관리자/유치채널 관리';
this.row.msg1 = '실패 하였습니다.'; this.row.msg1 = '실패 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row); this.$parent.$refs.commmonModal.alertModalOpen(this.row);
} }
} }
}, },
setAuthData() { setAuthData() {
// 권한 옵션. // 권한 옵션.
api.commAuth().then(response => { api.commAuth().then(response => {
this.authType = response.data.data.list; this.authType = response.data.data.list;
}); });
}, },
formReset(){ formReset() {
var type= this.insertType; var type = this.insertType;
Object.assign(this.$data, this.$options.data()); Object.assign(this.$data, this.$options.data());
this.insertType = type; this.insertType = type;
}, },
} }
} }
</script> </script>

View File

@@ -813,14 +813,14 @@ public class CustMgtService {
logger.debug("[Email Send Request - templeteCode : {}]", mailReqMap.get("templeteCode")); logger.debug("[Email Send Request - templeteCode : {}]", mailReqMap.get("templeteCode"));
logger.debug("[Email Send Request - homeUrl : {}]", mailReqMap.get("homeUrl")); logger.debug("[Email Send Request - homeUrl : {}]", mailReqMap.get("homeUrl"));
// mailResultMap = hubeasyApi.sendTemplateMailApi(mailReqMap); mailResultMap = hubeasyApi.sendTemplateMailApi(mailReqMap);
//
// if (mailResultMap != null) { if (mailResultMap != null) {
// logger.debug("[Email Send API RESULT : {}]", mailResultMap.get("API_RSLT")); logger.debug("[Email Send API RESULT : {}]", mailResultMap.get("API_RSLT"));
// if ("F".equals(mailResultMap.get("API_RSLT"))) { if ("F".equals(mailResultMap.get("API_RSLT"))) {
// logger.debug("[Email Send API ERROR : {}]", mailResultMap.get("API_RSLT_MSG")); logger.debug("[Email Send API ERROR : {}]", mailResultMap.get("API_RSLT_MSG"));
// } }
// } }
logger.debug("############## [Email Send End] ###############"); logger.debug("############## [Email Send End] ###############");
} catch (Exception e) { } catch (Exception e) {

View File

@@ -440,6 +440,10 @@ public class SendNumMgtService {
SendNumMgtMapper sendNumMgtMapper = sqlSessionMaster.getMapper(SendNumMgtMapper.class); SendNumMgtMapper sendNumMgtMapper = sqlSessionMaster.getMapper(SendNumMgtMapper.class);
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
UserDetails userDetails = (UserDetails) principal;
String regId = userDetails.getUsername();
// 발신번호 메모 업데이트. upddateSndrnoReg // 발신번호 메모 업데이트. upddateSndrnoReg
int totalCnt = updateApprReqDto.getList().size(); int totalCnt = updateApprReqDto.getList().size();
int apvCnt = 0; int apvCnt = 0;
@@ -450,7 +454,7 @@ public class SendNumMgtService {
}else if(StringUtils.equals(Const.SNDRNO_STTUS_CD_REJECT, updateApprSendNumber.getSttusCd())){ }else if(StringUtils.equals(Const.SNDRNO_STTUS_CD_REJECT, updateApprSendNumber.getSttusCd())){
rejtCnt++; rejtCnt++;
} }
updateApprSendNumber.setAdminId(updateApprReqDto.getAdminId()); updateApprSendNumber.setAdminId(regId);
sendNumMgtMapper.updateSndrno(updateApprSendNumber); sendNumMgtMapper.updateSndrno(updateApprSendNumber);
} }
@@ -466,17 +470,6 @@ public class SendNumMgtService {
int result = sendNumMgtMapper.upddateSndrnoReg(updateApprReqDto); int result = sendNumMgtMapper.upddateSndrnoReg(updateApprReqDto);
if(result > 0){
}
// 발신번호 상태 변경. updateSndrno
//result = sendNumMgtMapper.updateSndrno(updateApprReqDto);
if(result > 0){
}
// 승인건이 1건이상이면 사업자 인증 'Y' // 승인건이 1건이상이면 사업자 인증 'Y'
if(apvCnt > 0){ if(apvCnt > 0){
sendNumMgtMapper.updateSvcUser(updateApprReqDto); sendNumMgtMapper.updateSvcUser(updateApprReqDto);

View File

@@ -388,7 +388,7 @@
SELECT SELECT
@ROWNUM := @ROWNUM + 1 AS NO @ROWNUM := @ROWNUM + 1 AS NO
, A.SEQ_NO , A.SEQ_NO
, A.BLCK_TP_CD ,(SELECT ecd.DTL_CD_NM FROM hubez_common.EZ_CD_DTL ecd WHERE ecd.GRP_CD = 'WEBBLCK_TP_CD' AND DTL_CD = A.BLCK_TP_CD) AS BLCK_TP_CD
, A.CUST_SEQ , A.CUST_SEQ
, A.USER_SEQ , A.USER_SEQ
, A.USER_ID , A.USER_ID