diff --git a/frontend/src/assets/css/error.css b/frontend/src/assets/css/error.css
new file mode 100644
index 0000000..2c7b241
--- /dev/null
+++ b/frontend/src/assets/css/error.css
@@ -0,0 +1,72 @@
+@charset "utf-8";
+/* CSS Document */
+
+@font-face {
+ font-family: 'SpoqaHanSansNeo';
+ src: url('../font/SpoqaHanSansNeo-Thin.woff2') format('woff2');
+ font-weight: 100;
+ font-style: normal;
+}
+@font-face {
+ font-family: 'SpoqaHanSansNeo';
+ src: url('../font/SpoqaHanSansNeo-Light.woff2') format('woff2');
+ font-weight: 300;
+ font-style: normal;
+}
+@font-face {
+ font-family: 'SpoqaHanSansNeo';
+ src: url('../font/SpoqaHanSansNeo-Regular.woff2') format('woff2');
+ font-weight: 400;
+ font-style: normal;
+}
+@font-face {
+ font-family: 'SpoqaHanSansNeo';
+ src: url('../font/SpoqaHanSansNeo-Medium.woff2') format('woff2');
+ font-weight: 500;
+ font-style: normal;
+}
+@font-face {
+ font-family: 'SpoqaHanSansNeo';
+ src: url('../font/SpoqaHanSansNeo-Bold.woff2') format('woff2');
+ font-weight: 700;
+ font-style: normal;
+}
+
+
+.error-wrap {background: #fff; text-align: center; padding:0; margin: 0 auto; font-family: 'SpoqaHanSansNeo';
+ width:90vw; height:90vh; position: relative; }
+.error-body { width:450px; max-width: 98%; margin: 0 auto; text-align: center; position: absolute; top:50%;transform: translate(0, -50%); left:calc(50% - 225px); }
+.error-body > .header { font-weight: 700; font-size: 2.5em; margin: 30px 0 20px 0;}
+.error-body > .message { font-weight: 400; font-size:1em; line-height: 150%;}
+.error-body > .error-btns { width:100%; display: flex;text-align: center; margin-top: 3em; }
+.error-body > .error-btns a:nth-child(1) {background: #eb008b; border:1px solid #eb008b; font-weight: 400; font-size:1em; line-height: 150%; border-radius: 5px; color:#fff; text-decoration:none;padding: 10px 0; width: 50%; }
+.error-body > .error-btns a:nth-child(2) { display: inline-block; background: #fff; border:1px solid #282828; font-weight: 400; font-size:1em; line-height: 150%; border-radius: 5px; color:#000; text-decoration:none; padding: 10px 0; width: 50%; margin-left: 10px; }
+
+
+
+@media only screen and (max-width: 550px) {
+ .error-body { max-width: 98%; margin: 0 auto; text-align: center; position: relative; top:3em; left:auto; transform: none;}
+}
+
+
+
+@media only screen and (max-width: 414px) {
+ .error-body > img { width:6em;}
+ .error-body > .header {font-size: 1.6em; letter-spacing: -0.05em; margin: 20px 0 10px 0;}
+ .error-body > .message {font-size:0.9em; letter-spacing: -0.05em;}
+}
+
+
+@media only screen and (max-width: 280px) {
+ .error-body > img { width:6em;}
+ .error-body > .header {font-size: 1.35em; letter-spacing: -0.05em; margin: 20px 0 10px 0;}
+ .error-body > .message {font-size:0.9em; letter-spacing: -0.05em; line-height: 140%;}
+ .error-body > .error-btns { margin-top: 2em; }
+}
+
+
+
+
+
+
+
diff --git a/frontend/src/assets/css/style.css b/frontend/src/assets/css/style.css
index f87ebc2..8b02c2f 100644
--- a/frontend/src/assets/css/style.css
+++ b/frontend/src/assets/css/style.css
@@ -539,95 +539,62 @@ header .user_wrap .user_info .logout {
}
/* input cal + search-box*/
-/*.w35{width:35%;}*/
-/*.contents .table.table_form.m50{margin-bottom: 50px;}*/
+.w35{width:35%;}
+.contents .table.table_form.m50{margin-bottom: 50px;}
-/*.contents .input_box.cal{*/
-/* display: inline-block;*/
-/* width: 27.34%;*/
-/*}*/
-
-/*.contents .input_box.cal label {*/
-/* display: block;*/
-/*}*/
-
-/*.contents .input_box.cal .txt{*/
-/* display: inline-block;*/
-/*}*/
-
-/*.contents .input_box.cal p{*/
-/* display: inline-flex;*/
-/* margin-left: 10px;*/
-/*}*/
-
-/*.contents .input_box.cal input {*/
-/* display: inline-block;*/
-/* width: 48%;*/
-/* float: left;*/
-/* background: #fff url(../images/icon-calender.png) no-repeat right 6% center;*/
-/*}*/
-
-/*.contents .input_box.cal input {*/
-/* display: inline-block;*/
-/* width: 48%;*/
-/* float: left;*/
-/* background: #fff url(../images/icon-calender.png) no-repeat right 6% center;*/
-/*}*/
-
-/*.contents .input_box.cal span {*/
-/* display: inline-block;*/
-/* width: 48%;*/
-/* float: left;*/
-/* background: #fff url(../images/icon-calender.png) no-repeat right 6% center;*/
-/*}*/
-
-.custom_input.icon_date input[type="text"] {
- width: 52%;
- float: left;
- background: #fff url(../images/icon-calender.png) no-repeat right 6% center;
-}
-.custom_input.icon_date input[type="text"]:focus {
- border-color: #cccccc;
- background-color: #f6f6f6;
- color: #898989;
+.contents .input_box.cal{
+ display: inline-block;
+ width: 27.34%;
}
-.contents .input_box.cal span + input{
+.contents .input_box.cal label {
+ display: block;
+}
+
+.contents .input_box.cal .txt{
+ display: inline-block;
+}
+
+.contents .input_box.cal p{
+ display: inline-flex;
+ margin-left: 10px;
+}
+
+.contents .input_box.cal input {
+ display: inline-block;
+ width: 48%;
+ float: left;
+ background: #fff url(../images/icon-calender.png) no-repeat right 6% center;
+}
+.contents .input_box.cal input + input{
margin-left: 5%;
}
-
-.vdp-datepicker__calendar header {
- display: block;
- line-height: 40px;
- height: 40px;
+.contents .input_box.cal.one{
+ width: 13.67%;
}
-/*.contents .input_box.cal input + input{*/
-/* margin-left: 5%;*/
-/*}*/
+.contents .input_box.cal.one input{
+ width: 100%;
+}
-/*.contents .input_box.cal.one{*/
-/* width: 13.67%;*/
-/*}*/
+.contents .input_box.cal.one + .btn-a{
+ margin-right: 10px;
+}
-/*.contents .input_box.cal.one input{*/
-/* width: 100%;*/
-/*}*/
+.contents .input_box.cal .term{
+ display: flex;
+ justify-content: space-around;
+ align-items: center;
+}
-/*.contents .input_box.cal.one + .btn-a{*/
-/* margin-right: 10px;*/
-/*}*/
+.contents .input_box.cal .term input:nth-child(1){
+ margin-right: 4%;
+}
-/*.contents .input_box.cal .term{*/
-/* display: flex;*/
-/* justify-content: space-around;*/
-/* align-items: center;*/
-/*}*/
+.vdp-datepicker__calendar div {margin-top:80px;}
-/*.contents .input_box.cal .term input:nth-child(1){*/
-/* margin-right: 4%;*/
-/*}*/
+/*.vdp-datepicker__calendar div*/
.contents .input_box .search-box {
background: #fff url(../images/icon-search.png) no-repeat 6% center/14px auto;
@@ -904,6 +871,8 @@ header .user_wrap .user_info .logout {
/*contents table 추가*/
+/* arrow_box 반려사유 삭제 */
+/*
.contents .table table .arrow_box {
display: none;
background-color: #fff;
@@ -946,6 +915,7 @@ header .user_wrap .user_info .logout {
width: 0;
z-index: 1;
}
+*/
.contents .table.calculate table td, .contents .table.calculate table th{
border-left: 1px solid #dadae6;
@@ -976,10 +946,6 @@ header .user_wrap .user_info .logout {
.contents .table table td span {cursor: pointer;}
-.contents .table table td .linkstyle {cursor: pointer; text-decoration: underline;}
-.contents .table table td .linkstyle:hover {color:#eb008b;}
-
-
.contents .table table td span:hover + p.arrow_box {
display: block;
}
@@ -1593,10 +1559,10 @@ 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%;*/
-/* padding-top: 5px;*/
-/*}*/
+.popup.popup_form.register .input_add div:nth-child(2){
+ width: 89%;
+ padding-top: 5px;
+}
.popup .button.white{
background-color: #fff;
diff --git a/frontend/src/assets/images/error_message_page.png b/frontend/src/assets/images/error_message_page.png
new file mode 100644
index 0000000..ecb87a1
Binary files /dev/null and b/frontend/src/assets/images/error_message_page.png differ
diff --git a/frontend/src/assets/images/error_message_system.png b/frontend/src/assets/images/error_message_system.png
new file mode 100644
index 0000000..6a4c74f
Binary files /dev/null and b/frontend/src/assets/images/error_message_system.png differ
diff --git a/frontend/src/components/HubWebHeader.vue b/frontend/src/components/HubWebHeader.vue
index 6f668d1..88d769c 100644
--- a/frontend/src/components/HubWebHeader.vue
+++ b/frontend/src/components/HubWebHeader.vue
@@ -1,4 +1,4 @@
-
+
+
diff --git a/frontend/src/modules/riskMgt/components/InsertMsgPop.vue b/frontend/src/modules/riskMgt/components/InsertMsgPop.vue
index 40b757f..8f56a6d 100644
--- a/frontend/src/modules/riskMgt/components/InsertMsgPop.vue
+++ b/frontend/src/modules/riskMgt/components/InsertMsgPop.vue
@@ -61,10 +61,11 @@
+
@@ -74,6 +75,7 @@ import api from '@/service/api';
import riskMgtApi from '../service/riskMgtApi';
import lodash from "lodash";
import { utils_mixin, chkPattern2 } from '../service/mixins';
+import ValidationConfirmPopup from './ValidationConfirmPopup.vue';
export default {
mixins: [utils_mixin, chkPattern2],
data(){
@@ -84,7 +86,6 @@ export default {
// word:'',
// },
msgBlckwordList: [
- { seqNo: '' , word : '도박'},
// { word : '스팸'},
],
rsnType: [],
@@ -106,6 +107,9 @@ export default {
created(){
this.formReset();
},
+ components: {
+ ValidationConfirmPopup
+ },
methods :{
ModalOpen(){
@@ -141,22 +145,29 @@ export default {
},
async doInsert(){
- if(this.doValidate() && window.confirm('등록 하시겠습니까?')){
+ // if(this.doValidate() && window.confirm('등록 하시겠습니까?')){
try {
const response = await riskMgtApi.msgIntrcpList(this.row);
const result = response.data;
if (result != null && result.retCode == "0000") {
- alert('저장 하였습니다.');
+ this.row.title = '메세지 차단';
+ this.row.msg1 = '저장하였습니다.';
+ this.$parent.msgAlertModalOpen(this.row);
}
this.toComplete();
} catch(err) {
- alert("실패 하였습니다.");
+ this.row.title = '메세지 차단';
+ this.row.msg1 = '실패하였습니다.';
+ this.$parent.msgAlertModalOpen(this.row);
}
- }
+ // }
},
doValidate(){
- if(this.isNull(this.word)){
+ if(this.isNull(this.msgBlckwordList)){
+ this.row.title = '메세지 차단';
+ this.row.msg1 = '문구를 입력해주세요.';
+ this.$parent.msgAlertModalOpen(this.row);
this.$refs._word.focus();
return false;
}
@@ -176,6 +187,13 @@ export default {
},
//신규등록 팝업에서 문구 추가 버튼
doAdd: function() {
+ if(this.isNull(this.word)){
+ this.row.title = '메세지 차단';
+ this.row.msg1 = '문구를 입력해주세요.';
+ this.$parent.msgAlertModalOpen(this.row);
+ this.$refs._word.focus();
+ return false;
+ }
if(this.msgBlckwordList.length < 10){
this.msgBlckwordList.push({
//seqNo: '',
@@ -194,11 +212,11 @@ export default {
Object.assign(this.$data, this.$options.data());
this.insertType = type;
},
-
-
-
-
-
+ regisConfirm(){
+ if(this.doValidate()){
+ this.$refs.ValidationConfirmPopup.msgConfirmInsertOpen();
+ }
+ },
},
diff --git a/frontend/src/modules/riskMgt/components/IntrcpDetailPopup.vue b/frontend/src/modules/riskMgt/components/IntrcpDetailPopup.vue
index 6745476..3709e54 100644
--- a/frontend/src/modules/riskMgt/components/IntrcpDetailPopup.vue
+++ b/frontend/src/modules/riskMgt/components/IntrcpDetailPopup.vue
@@ -58,12 +58,12 @@
-
+
차단사유
-
@@ -81,6 +82,7 @@
diff --git a/frontend/src/modules/riskMgt/views/IntrcpList.vue b/frontend/src/modules/riskMgt/views/IntrcpList.vue
index 05e320d..119e5d2 100644
--- a/frontend/src/modules/riskMgt/views/IntrcpList.vue
+++ b/frontend/src/modules/riskMgt/views/IntrcpList.vue
@@ -82,7 +82,7 @@
-
+
@@ -241,6 +241,20 @@ export default {
// Object.assign(this.$data, this.$options.data());
// this.insertType = type;
// },
+
+ alertInsert(props){
+ console.log(props);
+ this.$refs.commonModal.alertModalOpen(props);
+ },
+ confirmInsert(props){
+ this.$refs.commonModal.confirmModalOpen(props);
+ },
+ confirmCalbackFnc: function(props){
+ console.log('dsfsd');
+ // if(props.result){
+ // // this.doInsert(props.result);
+ // }
+ },
},
beforeRouteLeave(to, from, next) {
diff --git a/frontend/src/modules/riskMgt/views/Msg.vue b/frontend/src/modules/riskMgt/views/Msg.vue
index 1955866..0c3611d 100644
--- a/frontend/src/modules/riskMgt/views/Msg.vue
+++ b/frontend/src/modules/riskMgt/views/Msg.vue
@@ -61,7 +61,7 @@
-
+
@@ -202,7 +202,10 @@ export default {
msgDetailPop(props) {
// console.log(props);
this.$refs.IntrcpMsgDetail.IntrcpMsgDetailModalOpen(props);
- }
+ },
+ msgAlertModalOpen(props){
+ this.$refs.commonModal.alertModalOpen(props);
+ }
},
beforeRouteLeave(to, from, next) {
diff --git a/frontend/src/modules/riskMgt/views/ZezNum.vue b/frontend/src/modules/riskMgt/views/ZezNum.vue
index 5a7a48b..9d8a29f 100644
--- a/frontend/src/modules/riskMgt/views/ZezNum.vue
+++ b/frontend/src/modules/riskMgt/views/ZezNum.vue
@@ -185,7 +185,8 @@ export default {
},
//회원 상세페이지로 이동
memberDetail(props) {
- this.row.custNm = props.serviceId;
+ console.log(props);
+ this.row.serviceId = props.userId;
this.$router.push({ name: 'subsDetail', params: this.row});
}
},
diff --git a/frontend/src/modules/stats/router/index.js b/frontend/src/modules/stats/router/index.js
index 8242544..bc2b477 100644
--- a/frontend/src/modules/stats/router/index.js
+++ b/frontend/src/modules/stats/router/index.js
@@ -1,5 +1,7 @@
import MonthList from '../views/MonthList'
import BsnmMonthList from '../views/BsnmMonthList'
+import DayList from '../views/DayList'
+import BsnmDayList from '../views/BsnmDayList'
export default [
{
@@ -14,6 +16,18 @@ export default [
name: 'bsnmMonthList',
meta: { public: true }
},
+ {
+ path: '/stats/dayList',
+ component: DayList,
+ name: 'dayList',
+ meta: { public: true }
+ },
+ {
+ path: '/stats/bsnmDayList',
+ component: BsnmDayList,
+ name: 'bsnmDayList',
+ meta: { public: true }
+ },
]
diff --git a/frontend/src/modules/stats/service/statsApi.js b/frontend/src/modules/stats/service/statsApi.js
new file mode 100644
index 0000000..1206c5e
--- /dev/null
+++ b/frontend/src/modules/stats/service/statsApi.js
@@ -0,0 +1,29 @@
+import httpClient from '@/common/http-client';
+
+// HUBEZ_BO_API - 일별 통계 목록 조회.
+const dayList = (params) => {
+ return httpClient.post('/api/v1/bo/stats/dayList', params, { withCredentials: false });
+}
+
+// HUBEZ_BO_API - 월별 통계 목록 조회.
+const monthList = (params) => {
+ return httpClient.post('/api/v1/bo/stats/monthList', params, { withCredentials: false });
+}
+
+// HUBEZ_BO_API - [사업자별] 일별 통계 목록 조회.
+const bsnmDayList = (params) => {
+ return httpClient.post('/api/v1/bo/stats/bsnmDayList', params, { withCredentials: false });
+}
+
+// HUBEZ_BO_API - [사업자별] 월별 통계 목록 조회.
+const bsnmMonthList = (params) => {
+ return httpClient.post('/api/v1/bo/stats/bsnmMonthList', params, { withCredentials: false });
+}
+
+export default {
+ dayList,
+ monthList,
+ bsnmDayList,
+ bsnmMonthList,
+
+}
\ No newline at end of file
diff --git a/frontend/src/modules/stats/views/BsnmDayList.vue b/frontend/src/modules/stats/views/BsnmDayList.vue
new file mode 100644
index 0000000..4ff5c5a
--- /dev/null
+++ b/frontend/src/modules/stats/views/BsnmDayList.vue
@@ -0,0 +1,366 @@
+
+
+
+
+
+
사업자별 통계
+
발송통계 > 사업자별 통계
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/modules/stats/views/BsnmMonthList.vue b/frontend/src/modules/stats/views/BsnmMonthList.vue
index a92a64f..1a321dc 100644
--- a/frontend/src/modules/stats/views/BsnmMonthList.vue
+++ b/frontend/src/modules/stats/views/BsnmMonthList.vue
@@ -8,7 +8,8 @@
@@ -18,20 +19,49 @@
날짜
최대 3개월까지 조회 가능합니다.
고객사명
-
+
사업자등록번호
-
+
- 조회
+ 조회
@@ -42,215 +72,298 @@
+
\ No newline at end of file
diff --git a/frontend/src/modules/stats/views/MonthList.vue b/frontend/src/modules/stats/views/MonthList.vue
index d9e428e..dddcb86 100644
--- a/frontend/src/modules/stats/views/MonthList.vue
+++ b/frontend/src/modules/stats/views/MonthList.vue
@@ -1,234 +1,285 @@
+
+
+
+
날짜별 통계
+
발송통계 > 날짜별 통계
+
+
+
+
+
+
+
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/frontend/src/views/ErrorPage404.vue b/frontend/src/views/ErrorPage404.vue
index 8e3d41d..0e28904 100644
--- a/frontend/src/views/ErrorPage404.vue
+++ b/frontend/src/views/ErrorPage404.vue
@@ -1,6 +1,6 @@
-
+
죄송합니다. 요청하신 페이지를 찾을 수 없습니다. (404 Error) 존재하지 않는 주소를 입력하셨거나 기술적인 문제로 일시적으로 접속되지 않았습니다. 잠시 후 다시 이용 부탁드리며 이용에 불편을 드려 사과드립니다.
diff --git a/frontend/src/views/HubwebLayout.vue b/frontend/src/views/HubwebLayout.vue
index 0c5868b..f24c171 100644
--- a/frontend/src/views/HubwebLayout.vue
+++ b/frontend/src/views/HubwebLayout.vue
@@ -3,8 +3,8 @@
-
-
+
+