diff --git a/frontend/src/assets/css/style.css b/frontend/src/assets/css/style.css
index 1c63609..db7c081 100644
--- a/frontend/src/assets/css/style.css
+++ b/frontend/src/assets/css/style.css
@@ -560,8 +560,6 @@ header .user_wrap .user_info .logout {
margin-left: 10px;
}
-/*******************20220715 퍼블 수정*******************/
-
.contents .input_box.cal input {
display: inline-block;
width: 100%;
@@ -570,22 +568,19 @@ header .user_wrap .user_info .logout {
background-color:#fff;
}
-.contents .input_box.cal .term span:nth-of-type(1){
+/*******************20220718 퍼블 수정*******************/
+
+.contents .input_box.cal .term .icon_date:first-of-type{
margin-right: 4%;
}
-.contents .input_box.cal .term span:nth-of-type(2){
+.contents .input_box.cal .term .icon_date:nth-of-type(2){
margin-left: 4%;
}
/*******************************************/
-/***** 20220715 퍼블 삭제
-.contents .input_box.cal input + input{
- margin-left: 5%;
-} **/
-
.contents .input_box.cal.one{
width: 13.67%;
}
@@ -604,11 +599,6 @@ header .user_wrap .user_info .logout {
align-items: center;
}
-/** 20220715 퍼블 삭제
-.contents .input_box.cal .term input:nth-child(1){
- margin-right: 4%;
-} ***********/
-
.contents .input_box .search-box {
background: #fff url(../images/icon-search.png) no-repeat 6% center/14px auto;
padding-left: 43px;
@@ -1582,11 +1572,25 @@ header .user_wrap .user_info .logout {
background: url(../images/icon-add-b.png) no-repeat center center;
}
-.popup.popup_form.register .input_add div:nth-child(2){
- width: 89%;
+/********** 20220718 퍼블 수정 ************/
+
+.popup.popup_form.register .input_add div+div{
+ width: 89%;
padding-top: 5px;
}
+/********** 20220718 퍼블 추가 ************/
+
+.popup.popup_inside{
+ max-height: 60vh;
+}
+
+.popup.popup_inside .pop-head{
+ left: 0px;
+}
+
+/****************************************/
+
.popup .button.white{
background-color: #fff;
border-radius: 6px;
@@ -1744,11 +1748,15 @@ header .user_wrap .user_info .logout {
align-items: flex-start;
}
-.essential span{
- /*color:#eb008b;*/
+/*******************20220718 퍼블 수정*******************/
+
+.essential label span{
+ color:#eb008b;
padding-right: 3px;
}
+/**************************************/
+
textarea{
resize: none;
min-height: 100px;
@@ -1784,7 +1792,7 @@ textarea:focus{
.datepicker .datepicker-calender tr td:first-child a{color:#ff2e76;}
.datepicker .datepicker-head .datepicker-btn span{position: relative;}
.datepicker .datepicker-head .datepicker-prev span::after{position: absolute; left: 70px; top: 10px; content: ''; width: 10px; height: 10px; border-top: 2px solid #5f5f5f; border-right: 2px solid #5f5f5f; transform: rotate(225deg);}
-.datepicker .datepicker-head .datepicker-next span::after{position: absolute; left: 70px; top: 10px; content: ''; width: 10px; height: 10px; border-top: 2px solid #5f5f5f; border-right: 2px solid #5f5f5f; transform: rotate(45deg);}
+.datepicker .datepicker-head .datepicker-next span::after{position: absolute; left: 185px; top: 10px; content: ''; width: 10px; height: 10px; border-top: 2px solid #5f5f5f; border-right: 2px solid #5f5f5f; transform: rotate(45deg);}
.datepicker .datepicker-calender td:hover:not(.disabled){background-color: #efefef; border-radius: 50%;}
.datepicker .datepicker-calender td:hover a{color:#000;}
.datepicker .datepicker-calender .today{background-color: #7c7c7c; border-radius: 50%;}
diff --git a/frontend/src/components/modal/commonModal.vue b/frontend/src/components/modal/commonModal.vue
index efc7722..de2550a 100644
--- a/frontend/src/components/modal/commonModal.vue
+++ b/frontend/src/components/modal/commonModal.vue
@@ -1,13 +1,13 @@
-
-
@@ -49,6 +50,7 @@ import {utils_mixin, chkPattern2} from '../service/mixins';
import xlsx from '@/common/excel';
import moment from 'moment';
import XLSX from 'xlsx';
+import commonModal from "../components/commonModal";
// import ValidationConfirmPop from "./ValidationConfirmPop";
export default {
@@ -65,10 +67,14 @@ export default {
nData: [],
oData: [],
totalItems: 0,
+ totalCnt: 0,
+ failCnt: 0,
+ insertRowCnt: 0
};
},
components: {
// ValidationConfirmPop,
+ commonModal
},
created() {
this.getExcelHeader();
@@ -102,7 +108,7 @@ export default {
this.row.serviceId = this.adminId;
// 팝업으로 교체 예정
// if (confirm('정상 업로드 되었습니다.')) {
- this.excelPopClose();
+ this.excelPopClose();
this.$parent.memberDetail(this.adminId);
// }
},
@@ -115,7 +121,7 @@ export default {
this.row.title = '청약고객관리';
this.row.msg1 = '저장 하였습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
- this.toComplete();
+ this.toComplete();
}
} catch (err) {
this.row.title = '청약고객관리';
@@ -145,8 +151,32 @@ export default {
this.nData = [];
this.oData = [];
+
+
+
+
const file = event.target.files[0];
+
+ // 파일 개수 제한
+ if(file != null){
+ let element = document.getElementById('uploadFile');
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }
+ }
console.log(file.name);
+ // 파일 이름 체크
+ var fileName = file.name;
+ var fileExpend = fileName .slice(fileName .indexOf(".") + 1).toLowerCase();
+ if(fileExpend != "xlsx"){
+ //alert("파일은 (xlsx) 형식만 등록 가능합니다.");
+ this.row.title = '파일 업로드';
+ this.row.msg1 = '샘플과 동일한 확장자가 아닙니다.';
+ this.row.msg1 = '다시 업로드 해주세요.';
+ this.$refs.commmonModal.alertModalOpen(this.row);
+ return false;
+ }
+
// inner Html.
const button = document.createElement('button');
@@ -176,18 +206,20 @@ export default {
let workbook = XLSX.read(data, {type: 'binary'});
workbook.SheetNames.forEach((sheetName) => {
const rowObj = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName], {raw: true});
+ console.log(rowObj);
tmpResult = rowObj;
const limitCnt = 100;
- const totalCnt = Number(this.totalItems) + rowObj.length;
-
- if (totalCnt > limitCnt) {
+ this.totalCnt = Number(this.totalItems) + rowObj.length;
+ this.insertRowCnt = rowObj.length;
+ console.log('totalCnt : '+this.totalCnt +' limitCnt : '+limitCnt);
+ if (this.totalCnt > limitCnt) {
this.row.title = '청약고객관리';
this.row.msg1 = '100건이상은 등록되지 않습니다.';
this.$refs.commmonModal.alertModalOpen(this.row);
return false;
}
-
+
for (const [idx, r] of rowObj.entries()) {
if (idx > limitCnt - 1) {
break;
@@ -286,12 +318,12 @@ export default {
const result = response.data;
console.log(result);
if (result != null && result.retCode == '0000') {
- this.totalCnt = result.data.totalCnt;
+ //this.totalCnt = result.data.totalCnt;
this.successCnt = result.data.successCnt;
- this.failCnt = result.data.failCnt;
+ this.failCnt = Number(this.failCnt) + Number(result.data.failCnt);
if (result.data.failCnt > 0) {
- this.row.totalCnt = this.totalCnt
+ this.row.totalCnt = this.insertRowCnt
this.row.successCnt = this.successCnt
this.row.failCnt = this.failCnt
this.$parent.$refs.validationConfirmPopModal.failFileuploadOpen(this.row);
@@ -319,6 +351,14 @@ export default {
this.$parent.memberDetail(this.adminId);
}
},
+
+ checkFocus() {
+ this.$refs.file.value = null;
+ let element = document.getElementById('uploadFile');
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }
+ }
},
};
\ No newline at end of file
diff --git a/frontend/src/modules/custMgt/components/ValidationConfirmPop.vue b/frontend/src/modules/custMgt/components/ValidationConfirmPop.vue
index f6075d6..c65bc94 100644
--- a/frontend/src/modules/custMgt/components/ValidationConfirmPop.vue
+++ b/frontend/src/modules/custMgt/components/ValidationConfirmPop.vue
@@ -338,8 +338,8 @@ export default {
for (var i = 0; i < dimmed.length; i++) {
dimmed[i].style.display = 'none';
}
- // 목록페이지 이동
- this.$parent.toComplete();
+ // 화면 리로드
+ this.$parent.successFileuploadOk();
},
// 정상완료 후 목록페이지 이동
toComplete() {
diff --git a/frontend/src/modules/custMgt/views/MemberAdminDetail.vue b/frontend/src/modules/custMgt/views/MemberAdminDetail.vue
index 62458fd..f7429a5 100644
--- a/frontend/src/modules/custMgt/views/MemberAdminDetail.vue
+++ b/frontend/src/modules/custMgt/views/MemberAdminDetail.vue
@@ -439,6 +439,20 @@ export default {
this.memberDelete();
}
},
+
+ // 대량 등록후 확인 처리
+ failFileuploadOk(){
+ // 대량등록 팝업 닫기
+ this.$refs.memberBulkRegPop.excelPopClose();
+ // reroad
+ this.memberDetail(this.$route.params.serviceId);
+ }
+ ,successFileuploadOk(){
+ // 대량등록 팝업 닫기
+ this.$refs.memberBulkRegPop.excelPopClose();
+ // reroad
+ this.memberDetail(this.$route.params.serviceId);
+ }
},
};
diff --git a/frontend/src/modules/custMgt/views/SubsList.vue b/frontend/src/modules/custMgt/views/SubsList.vue
index 1948f17..4f26278 100644
--- a/frontend/src/modules/custMgt/views/SubsList.vue
+++ b/frontend/src/modules/custMgt/views/SubsList.vue
@@ -73,7 +73,7 @@
-
diff --git a/frontend/src/modules/login/views/LoginMain.vue b/frontend/src/modules/login/views/LoginMain.vue
index 1d6a44a..92af810 100644
--- a/frontend/src/modules/login/views/LoginMain.vue
+++ b/frontend/src/modules/login/views/LoginMain.vue
@@ -123,11 +123,17 @@ export default {
if(rsp.retCode == '0000'){
var path = rsp.data.nextUrl;
console.log(path);
+ console.log(rsp.data);
vm.chgChkUserId();
vm.$store.commit("login/isLogin", true);
vm.$store.commit("login/savePwd", oprtrPw);
vm.$router.push({ name: 'loginAuth',params: {userId : oprtrId}});
- } else if(rsp.retCode == '4003') { // ID 조회 없음.
+ } else if(rsp.retCode == '1001'){ // 비밀번호 변경
+ console.log('=-==-=-=-');
+ console.log(this.userId);
+ vm.chgChkUserId();
+ this.$router.push({ name: 'updatePassword',params: {userId : this.userId}});
+ }else if(rsp.retCode == '4003') { // ID 조회 없음.
this.row.title = '로그인 실패';
this.row.msg1 = '등록되지 않은 아이디입니다.';
this.row.msg2 = '아이디를 다시 확인하세요';
diff --git a/frontend/src/modules/login/views/UpdatePassword.vue b/frontend/src/modules/login/views/UpdatePassword.vue
index 58a0228..b74a50f 100644
--- a/frontend/src/modules/login/views/UpdatePassword.vue
+++ b/frontend/src/modules/login/views/UpdatePassword.vue
@@ -128,7 +128,7 @@ export default {
this.row.title = '비밀번호 변경';
this.row.msg1 = '비밀번호가 정상적으로 변경되었습니다.';
this.row.msg2 = '변경된 비밀번호로 다시 로그인 해주세요.';
- this.callFnc = 'login'
+ this.row.callFnc = 'login'
this.$refs.commonModal.alertModalOpen(this.row);
} else if(rsp.retCode == '4016') {
this.row.title = '비밀번호 변경';
@@ -176,7 +176,8 @@ export default {
this.$refs.oldPw.focus(target);
},
alertCalbackFnc(callFnc){
- if(callFnc === 'login'){
+ console.log(callFnc);
+ if(callFnc === 'login'){
this.$router.push({ name: 'login',params: {}});
}
},
diff --git a/frontend/src/modules/riskMgt/components/IntrcpMsgDetail.vue b/frontend/src/modules/riskMgt/components/IntrcpMsgDetail.vue
index c251d6b..82aea1a 100644
--- a/frontend/src/modules/riskMgt/components/IntrcpMsgDetail.vue
+++ b/frontend/src/modules/riskMgt/components/IntrcpMsgDetail.vue
@@ -14,7 +14,7 @@
| 차단문구 |
-
+
|
@@ -292,7 +292,40 @@ export default {
this.$refs.ValidationConfirmPopup.msgConfirmDeleteOpen();
}
},
+ // 바이트길이 구하기
+ getByteLength: function (decimal) {
+ return (decimal >> 7) || (this.LINE_FEED === decimal) ? 2 : 1
+ },
+ getByte: function (str) {
+ return str
+ .split('')
+ .map((s) => s.charCodeAt(0))
+ .reduce((prev, unicodeDecimalValue) => prev + this.getByteLength(unicodeDecimalValue), 0)
+ },
+ getLimitedByteText: function (inputText, maxByte) {
+ const characters = inputText.split('')
+ let validText = ''
+ let totalByte = 0
+
+ for (let i = 0; i < characters.length; i += 1) {
+ const character = characters[i]
+ const decimal = character.charCodeAt(0)
+ const byte = this.getByteLength(decimal) // 글자 한 개가 몇 바이트 길이인지 구해주기
+ // console.log(byte)
+ // 현재까지의 바이트 길이와 더해 최대 바이트 길이를 넘지 않으면
+ if (totalByte + byte <= maxByte) {
+ totalByte += byte // 바이트 길이 값을 더해 현재까지의 총 바이트 길이 값을 구함
+ validText += character // 글자를 더해 현재까지의 총 문자열 값을 구함
+ } else { // 최대 바이트 길이를 넘으면
+ break // for 루프 종료
+ }
+ }
+ return validText
+ },
+ msgLimitByte(){
+ this.word = this.getLimitedByteText(this.word, 10);
+ }
},
diff --git a/frontend/src/modules/sendNumMgt/components/AdminListPop.vue b/frontend/src/modules/sendNumMgt/components/AdminListPop.vue
index 88e582e..d2ac4fe 100644
--- a/frontend/src/modules/sendNumMgt/components/AdminListPop.vue
+++ b/frontend/src/modules/sendNumMgt/components/AdminListPop.vue
@@ -1,7 +1,7 @@
-
@@ -133,7 +132,6 @@