로그인 / 고객관리 / 시스템관리 ... 디자인 및 기능 수정 적용

This commit is contained in:
kimre
2022-07-12 22:22:17 +09:00
parent 3d7032432c
commit c64cf89919
32 changed files with 787 additions and 636 deletions

View File

@@ -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>

View File

@@ -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();

View File

@@ -170,6 +170,7 @@ export default {
this.adminId = targetAdminId;
},
doValidate(){
console.log(this.userTotalCnt)
if(this.userTotalCnt >= 100){
// 사용자등록제한_최대100개까지
this.$refs.validationConfirmPopModal.validationMaxlimitOpen();

View File

@@ -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

View File

@@ -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

View File

@@ -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);